{"version":3,"file":"cuby-ui-core.mjs","sources":["../../../projects/core/components/accordion/accordion.component.ts","../../../projects/core/components/accordion/accordion.template.html","../../../projects/core/components/accordion/accordion.directive.ts","../../../projects/core/components/button/button.options.ts","../../../projects/core/components/svg/svg.component.ts","../../../projects/core/components/svg/svg.template.html","../../../projects/core/components/button/button.component.ts","../../../projects/core/components/button/button.template.html","../../../projects/core/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/core/components/accordion/accordion-item/accordion-item.template.html","../../../projects/core/components/svg/svg.module.ts","../../../projects/core/components/button/button.module.ts","../../../projects/core/components/accordion/accordion.module.ts","../../../projects/core/components/notification/notification.options.ts","../../../projects/core/components/notification/notification.component.ts","../../../projects/core/components/notification/notification.template.html","../../../projects/core/components/notification/notification.module.ts","../../../projects/core/components/alert/alert.tokens.ts","../../../projects/core/components/alert/alert.component.ts","../../../projects/core/components/alert/alert.template.html","../../../projects/core/components/alert/alerts.component.ts","../../../projects/core/components/alert/alerts.template.html","../../../projects/core/components/alert/alert.module.ts","../../../projects/core/components/alert/alert.service.ts","../../../projects/core/directives/text-field-controller/text-field.controller.ts","../../../projects/core/directives/text-field-controller/text-field-icon-left.directive.ts","../../../projects/core/directives/text-field-controller/text-field-id.directive.ts","../../../projects/core/directives/text-field-controller/text-field-is-error.directive.ts","../../../projects/core/directives/text-field-controller/text-field-placeholder.directive.ts","../../../projects/core/directives/text-field-controller/text-field-size.directive.ts","../../../projects/core/directives/text-field-controller/text-field-controller.module.ts","../../../projects/core/directives/text-field-controller/text-field-controller.provider.ts","../../../projects/core/animations/animations.ts","../../../projects/core/classes/accessors.ts","../../../projects/core/classes/vehicle.ts","../../../projects/core/classes/driver.ts","../../../projects/core/services/position.service.ts","../../../projects/core/services/theme.options.ts","../../../projects/core/services/theme.service.ts","../../../projects/core/services/loader.options.ts","../../../projects/core/services/loader.service.ts","../../../projects/core/services/visual-viewport.service.ts","../../../projects/core/services/token.service.ts","../../../projects/core/services/auth.service.ts","../../../projects/core/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/viewport.ts","../../../projects/core/tokens/error-notification-service.ts","../../../projects/core/tokens/error-translation-prefix.ts","../../../projects/core/tokens/should-handle-error.ts","../../../projects/core/services/error-resolver-factory.service.ts","../../../projects/core/services/global-handler-error.service.ts","../../../projects/core/services/hybrid-storage.service.ts","../../../projects/core/utils/format/remove-spaces.ts","../../../projects/core/utils/format/replace.ts","../../../projects/core/utils/miscellaneous/is-obscured.ts","../../../projects/core/utils/miscellaneous/override-options.ts","../../../projects/core/utils/miscellaneous/to-animation-options.ts","../../../projects/core/utils/default-validators/extra-spaces.options.ts","../../../projects/core/utils/default-validators/extra-spaces.validators.ts","../../../projects/core/utils/default-validators/create-default-validators.ts","../../../projects/core/utils/check-fixed-position.ts","../../../projects/core/directives/tooltip/tooltip.providers.ts","../../../projects/core/directives/tooltip/tooltip.service.ts","../../../projects/core/directives/tooltip/tooltip-driver.directive.ts","../../../projects/core/directives/tooltip/tooltip-options.directive.ts","../../../projects/core/directives/tooltip/tooltip-hover.directive.ts","../../../projects/core/directives/tooltip/tooltip-position.directive.ts","../../../projects/core/directives/tooltip/tooltip.directive.ts","../../../projects/core/directives/tooltip/tooltip-pointer.directive.ts","../../../projects/core/directives/tooltip/tooltip-unstyled.component.ts","../../../projects/core/directives/tooltip/tooltip.component.ts","../../../projects/core/directives/tooltip/tooltip-describe.directive.ts","../../../projects/core/directives/tooltip/tooltip-host.directive.ts","../../../projects/core/directives/tooltip/tooltip-manual.directive.ts","../../../projects/core/directives/tooltip/tooltip-overflow.directive.ts","../../../projects/core/directives/tooltip/tooltip.ts","../../../projects/core/directives/tooltip/tooltips.component.ts","../../../projects/core/directives/tooltip/tooltips.template.html","../../../projects/core/directives/skeleton/constants/fade.const.ts","../../../projects/core/directives/skeleton/constants/max-placeholder-length-limiter.const.ts","../../../projects/core/directives/skeleton/constants/min-placeholder-length-limiter.const.ts","../../../projects/core/directives/skeleton/skeleton.directive.ts","../../../projects/core/components/alert-hint/alert-hint.component.ts","../../../projects/core/components/alert-hint/alert-hint.component.html","../../../projects/core/components/badge/badge.options.ts","../../../projects/core/components/badge/badge.component.ts","../../../projects/core/components/badge/badge.template.html","../../../projects/core/components/badge/badge.module.ts","../../../projects/core/components/banner/banner.options.ts","../../../projects/core/components/banner/banner.component.ts","../../../projects/core/components/banner/banner.template.html","../../../projects/core/components/banner/banner.module.ts","../../../projects/core/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/core/components/breadcrumbs/breadcrumbs.template.html","../../../projects/core/components/breadcrumbs/breadcrumb/breadcrumb.component.ts","../../../projects/core/components/breadcrumbs/breadcrumb/breadcrumb.template.html","../../../projects/core/components/breadcrumbs/breadcrumbs.module.ts","../../../projects/core/components/button-group/button-group.component.ts","../../../projects/core/components/button-group/button-group.template.html","../../../projects/core/components/button-group/button-group.module.ts","../../../projects/core/components/checkbox/checkbox.component.ts","../../../projects/core/components/checkbox/checkbox.module.ts","../../../projects/core/components/content-header/content-header.component.ts","../../../projects/core/components/content-header/content-header.component.html","../../../projects/core/components/date-range-calendar/date-range-calendar.component.ts","../../../projects/core/components/date-range-calendar/date-range-calendar.template.html","../../../projects/core/components/date-range-calendar/date-range-calendar.module.ts","../../../projects/core/components/root/root.options.ts","../../../projects/core/components/dialog/dialog.tokens.ts","../../../projects/core/components/dialog/dialogs.component.ts","../../../projects/core/components/dialog/dialogs.template.html","../../../projects/core/components/root/root.component.ts","../../../projects/core/components/root/root.template.html","../../../projects/core/components/dialog/dialog.component.ts","../../../projects/core/components/dialog/dialog.template.html","../../../projects/core/components/dialog/dialog-actions/dialog-actions.component.ts","../../../projects/core/components/dialog/dialog-actions/dialog-actions.template.html","../../../projects/core/components/dialog/dialog-header/dialog-header.component.ts","../../../projects/core/components/dialog/dialog-header/dialog-header.template.html","../../../projects/core/components/dialog/dialog.module.ts","../../../projects/core/components/dialog/dialog.service.ts","../../../projects/core/components/root/root.module.ts","../../../projects/core/components/context-menu/context-menu.component.ts","../../../projects/core/components/context-menu/context-menu.component.html","../../../projects/core/components/context-menu/context-menu.module.ts","../../../projects/core/components/dropdown/dropdown.directive.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.html","../../../projects/core/components/form-field/form-field.component.ts","../../../projects/core/components/form-field/form-field.template.html","../../../projects/core/components/form-field/form-field.module.ts","../../../projects/core/components/hint/hint.component.ts","../../../projects/core/components/hint/hint.template.html","../../../projects/core/components/hint/hint.module.ts","../../../projects/core/components/icon-button/icon-button.component.ts","../../../projects/core/components/icon-button/icon-button.template.html","../../../projects/core/components/icon-button/icon-button.module.ts","../../../projects/core/components/input-number/input-number.component.ts","../../../projects/core/components/input-number/input-number.template.html","../../../projects/core/components/input-number/input-number.module.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.html","../../../projects/core/components/ghost-input/ghost-input.component.ts","../../../projects/core/components/input-password/input-password.component.ts","../../../projects/core/components/input-password/input-password.template.html","../../../projects/core/components/input-password/input-password.module.ts","../../../projects/core/components/input-text/input-text.component.ts","../../../projects/core/components/input-text/input-text.template.html","../../../projects/core/components/input-text/input-text.module.ts","../../../projects/core/components/input-time/input-time.options.ts","../../../projects/core/components/input-time/input-time.component.ts","../../../projects/core/components/input-time/input-time.template.html","../../../projects/core/components/input-time/input-time.module.ts","../../../projects/core/components/label/label.component.ts","../../../projects/core/components/label/label.template.html","../../../projects/core/components/label/label.module.ts","../../../projects/core/components/letter-box/letter-box.component.ts","../../../projects/core/components/letter-box/letter-box.component.html","../../../projects/core/components/render-dynamic-components/render-dynamic-components.service.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.html","../../../projects/core/widgets/ui/inserted/inserted.component.ts","../../../projects/core/widgets/ui/inserted/inserted.component.html","../../../projects/core/widgets/ui/modal-header/modal-header.component.ts","../../../projects/core/widgets/ui/modal-header/modal-header.component.html","../../../projects/core/components/options-button/options-button.component.ts","../../../projects/core/components/options-button/options-button.component.html","../../../projects/core/components/radio/radio.component.ts","../../../projects/core/components/radio/radio.module.ts","../../../projects/core/components/select/select.component.ts","../../../projects/core/components/select/select.template.html","../../../projects/core/components/select/select.module.ts","../../../projects/core/components/empty-state/empty-state.component.ts","../../../projects/core/components/empty-state/empty-state.component.html","../../../projects/core/components/sidebar/sidebar.options.ts","../../../projects/core/components/sidebar/sidebar.service.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.html","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.ts","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.html","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.ts","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.html","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.html","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.html","../../../projects/core/components/card-wrapper/card-wrapper.component.ts","../../../projects/core/components/card-wrapper/card-wrapper.component.html","../../../projects/core/components/layout/layout.component.ts","../../../projects/core/components/layout/layout.component.html","../../../projects/core/components/tabs/tabs.options.ts","../../../projects/core/components/tab/tab.component.ts","../../../projects/core/components/tabs/components/abstract-tabs/abstract-tabs.component.ts","../../../projects/core/components/tabs/components/abstract-tabs/abstract-tabs.component.html","../../../projects/core/components/tabs/services/tabs.service.ts","../../../projects/core/components/tabs/tabs.provider.ts","../../../projects/core/components/tabs/tabs.component.ts","../../../projects/core/components/tabs/tabs.component.html","../../../projects/core/components/textarea/textarea.component.ts","../../../projects/core/components/textarea/textarea.module.ts","../../../projects/core/components/toggle/toggle.component.ts","../../../projects/core/components/toggle/toggle.module.ts","../../../projects/core/components/file-icon/file-icon.options.ts","../../../projects/core/components/file-icon/file-icon.component.ts","../../../projects/core/components/file-icon/file-icon.component.html","../../../projects/core/components/filter-bar/components/filter-remove-button/filter-remove-button.component.ts","../../../projects/core/components/filter-bar/components/filter-remove-button/filter-remove-button.template.html","../../../projects/core/components/filter-bar/components/string-filter/string-filter.component.ts","../../../projects/core/components/filter-bar/components/string-filter/string-filter.template.html","../../../projects/core/components/filter-bar/components/range-filter/range-filter.component.ts","../../../projects/core/components/filter-bar/components/range-filter/range-filter.template.html","../../../projects/core/components/filter-bar/components/select-filter/select-filter.component.ts","../../../projects/core/components/filter-bar/components/select-filter/select-filter.template.html","../../../projects/core/components/filter-bar/components/multiselect-filter/multiselect-filter.component.ts","../../../projects/core/components/filter-bar/components/multiselect-filter/multiselect-filter.template.html","../../../projects/core/components/filter-bar/components/add-filter-button/add-filter-button.component.ts","../../../projects/core/components/filter-bar/components/add-filter-button/add-filter-button.template.html","../../../projects/core/components/filter-bar/components/date-filter/date-filter.component.ts","../../../projects/core/components/filter-bar/components/date-filter/date-filter.template.html","../../../projects/core/components/filter-bar/filter-bar.interfaces.ts","../../../projects/core/components/filter-bar/filter-bar.utils.ts","../../../projects/core/components/filter-bar/filter-bar.component.ts","../../../projects/core/components/filter-bar/filter-bar.template.html","../../../projects/core/components/filter-bar/filter-bar.module.ts","../../../projects/core/editor/constants/editor.constants.ts","../../../projects/core/editor/tools/header.tool.ts","../../../projects/core/editor/tools/list.tool.ts","../../../projects/core/editor/tools/selection-base.tool.ts","../../../projects/core/editor/tools/bold.tool.ts","../../../projects/core/editor/tools/italic.tool.ts","../../../projects/core/editor/utils/url.validator.ts","../../../projects/core/editor/services/editor-service.options.ts","../../../projects/core/editor/utils/generate-id.ts","../../../projects/core/editor/services/editor.service.ts","../../../projects/core/editor/services/markers.service.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.html","../../../projects/core/editor/components/marker-select/marker-select.component.ts","../../../projects/core/editor/components/marker-select/marker-select.component.html","../../../projects/core/editor/components/marker-select/marker-select.options.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.html","../../../projects/core/editor/components/marker-modal/marker-modal.options.ts","../../../projects/core/editor/utils/create-link-modal.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.html","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.options.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.html","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.options.ts","../../../projects/core/editor/pipes/file-size.pipe.ts","../../../projects/core/editor/components/editor-tool/editor-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.html","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.options.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.html","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.options.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.html","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.options.ts","../../../projects/core/editor/utils/create-tool-modal.ts","../../../projects/core/editor/utils/open-file-in-browser.ts","../../../projects/core/editor/utils/file-uploader.ts","../../../projects/core/editor/utils/set-loading.ts","../../../projects/core/editor/utils/create-tools-data.ts","../../../projects/core/editor/utils/remove-element-tag-wrapper.ts","../../../projects/core/editor/utils/copy-text-to-clipboard.ts","../../../projects/core/editor/utils/create-tooltip.ts","../../../projects/core/editor/utils/merge-small-chunks.ts","../../../projects/core/editor/utils/recalculate-indexes.ts","../../../projects/core/editor/utils/split-html.ts","../../../projects/core/providers/auth.options.ts","../../../projects/core/services/browser-auth.service.ts","../../../projects/core/services/mobile-auth.service.ts","../../../projects/core/providers/auth.provider.ts","../../../projects/core/providers/error-handler.provider.ts","../../../projects/core/editor/utils/preset-config-token.ts","../../../projects/core/editor/tools/image.tool.ts","../../../projects/core/editor/tools/video.tool.ts","../../../projects/core/editor/tools/attaches.tool.ts","../../../projects/core/editor/tools/marker.tool.ts","../../../projects/core/editor/tools/link-marker.tool.ts","../../../projects/core/editor/tools/custom-marker.tool.ts","../../../projects/core/editor/tools/role-marker.tool.ts","../../../projects/core/editor/tools/tool-marker.tool.ts","../../../projects/core/editor/tools/combined-text-block.tool.ts","../../../projects/core/editor/config/editor.config.ts","../../../projects/core/editor/events/editor-drag.event.ts","../../../projects/core/editor/events/editor-keyboard.event.ts","../../../projects/core/editor/events/editor-modal.event.ts","../../../projects/core/editor/events/editor-tooltip.event.ts","../../../projects/core/editor/events/set-editor-events.ts","../../../projects/core/editor/editor.component.ts","../../../projects/core/editor/editor.component.html","../../../projects/core/editor/widgets/editor-readonly/editor-resize-observer.directive.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.html","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.ts","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.html","../../../projects/core/editor/widgets/editor-block/editor-block.component.ts","../../../projects/core/editor/widgets/editor-block/editor-block.component.html","../../../projects/core/editor/config/custom-elements.ts","../../../projects/core/editor/providers/editor.provider.ts","../../../projects/core/interceptors/x-ndjson.interceptor.ts","../../../projects/core/interceptors/loader.interceptor.ts","../../../projects/core/interceptors/error-handler.interceptor.ts","../../../projects/core/interceptors/auth.interceptor.ts","../../../projects/core/interceptors/sse-stream-reader.interceptor.ts","../../../projects/core/widgets/ui/loader/components/circle-loader/circle-loader.component.ts","../../../projects/core/widgets/ui/loader/components/circle-loader/circle-loader.component.html","../../../projects/core/widgets/ui/loader/components/linear-loader/linear-loader.component.ts","../../../projects/core/widgets/ui/loader/components/linear-loader/linear-loader.component.html","../../../projects/core/widgets/ui/loader/components/pulse-loader/pulse-loader.component.ts","../../../projects/core/widgets/ui/loader/components/pulse-loader/pulse-loader.component.html","../../../projects/core/widgets/ui/loader/components/stated-loader/stated-loader.component.ts","../../../projects/core/widgets/ui/loader/components/stated-loader/stated-loader.component.html","../../../projects/core/widgets/ui/loader/loader.component.ts","../../../projects/core/widgets/ui/loader/loader.component.html","../../../projects/core/widgets/ui/delete-modal/delete-modal.component.ts","../../../projects/core/widgets/ui/delete-modal/delete-modal.component.html","../../../projects/core/widgets/ui/categories/services/selected-category.service.ts","../../../projects/core/widgets/ui/general-control-error-hint/general-control-error-hint.component.ts","../../../projects/core/widgets/ui/general-control-error-hint/general-control-error-hint.component.html","../../../projects/core/widgets/ui/categories/components/category-form/category-form.component.ts","../../../projects/core/widgets/ui/categories/components/category-form/category-form.component.html","../../../projects/core/widgets/ui/categories/components/create-category-item/create-category-item.component.ts","../../../projects/core/widgets/ui/categories/components/create-category-item/create-category-item.component.html","../../../projects/core/widgets/ui/categories/components/category-item/category-item.component.ts","../../../projects/core/widgets/ui/categories/components/category-item/category-item.component.html","../../../projects/core/widgets/ui/categories/components/categories-list/categories-list.component.ts","../../../projects/core/widgets/ui/categories/components/categories-list/categories-list.component.html","../../../projects/core/widgets/ui/categories/categories.component.ts","../../../projects/core/widgets/ui/categories/categories.component.html","../../../projects/core/widgets/ui/checklist-block/services/checklist-block.service.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.html","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.html","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.html","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.html","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.html","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.html","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.html","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list/checklist-block-list.component.ts","../../../projects/core/widgets/ui/checklist-block/components/checklist-block-list/checklist-block-list.component.html","../../../projects/core/widgets/ui/checklist-block/checklist-block.component.ts","../../../projects/core/widgets/ui/checklist-block/checklist-block.component.html","../../../projects/core/widgets/ui/framer-preview/framer-preview.component.ts","../../../projects/core/widgets/ui/framer-preview/framer-preview.component.html","../../../projects/core/widgets/ui/utility-thumbnail/utility-thumbnail.component.ts","../../../projects/core/widgets/ui/utility-thumbnail/utility-thumbnail.component.html","../../../projects/core/widgets/ui/criterion-info-form/criterion-info-form.component.ts","../../../projects/core/widgets/ui/criterion-info-form/criterion-info-form.component.html","../../../projects/core/widgets/ui/utility-modal/utility-modal.options.ts","../../../projects/core/widgets/ui/utility-modal/components/utility-modal-create/utility-modal-create.component.ts","../../../projects/core/widgets/ui/utility-modal/components/utility-modal-create/utility-modal-create.component.html","../../../projects/core/widgets/ui/utility-modal/components/criterion-modal-create/criterion-modal-create.component.ts","../../../projects/core/widgets/ui/utility-modal/components/criterion-modal-create/criterion-modal-create.component.html","../../../projects/core/widgets/ui/instruction-info-form/instruction-info-form.component.ts","../../../projects/core/widgets/ui/instruction-info-form/instruction-info-form.component.html","../../../projects/core/widgets/ui/instruction-info/instruction-info.component.ts","../../../projects/core/widgets/ui/instruction-info/instruction-info.component.html","../../../projects/core/widgets/ui/utility-modal/components/instruction-modal-create/instruction-modal-create.component.ts","../../../projects/core/widgets/ui/utility-modal/components/instruction-modal-create/instruction-modal-create.component.html","../../../projects/core/widgets/ui/utility-readonly-thumbnail/utility-readonly-thumbnail.component.ts","../../../projects/core/widgets/ui/utility-readonly-thumbnail/utility-readonly-thumbnail.component.html","../../../projects/core/widgets/ui/criterion-readonly-info/criterion-readonly-info.component.ts","../../../projects/core/widgets/ui/criterion-readonly-info/criterion-readonly-info.component.html","../../../projects/core/widgets/ui/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.ts","../../../projects/core/widgets/ui/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.html","../../../projects/core/widgets/ui/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.ts","../../../projects/core/widgets/ui/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.html","../../../projects/core/widgets/ui/instruction-readonly-info/instruction-readonly-info.component.ts","../../../projects/core/widgets/ui/instruction-readonly-info/instruction-readonly-info.component.html","../../../projects/core/widgets/ui/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.ts","../../../projects/core/widgets/ui/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.html","../../../projects/core/widgets/ui/utility-modal/utility-modal.component.ts","../../../projects/core/widgets/ui/utility-modal/utility-modal.component.html","../../../projects/core/widgets/ui/criterion-info/criterion-info.component.ts","../../../projects/core/widgets/ui/criterion-info/criterion-info.component.html","../../../projects/core/widgets/ui/select-modal/components/select-modal-folder/select-modal-folder.component.ts","../../../projects/core/widgets/ui/select-modal/components/select-modal-folder/select-modal-folder.component.html","../../../projects/core/widgets/ui/select-modal/components/select-modal-search/select-modal-search.component.ts","../../../projects/core/widgets/ui/select-modal/components/select-modal-search/select-modal-search.component.html","../../../projects/core/widgets/ui/select-modal/select-modal.component.ts","../../../projects/core/widgets/ui/select-modal/select-modal.component.html","../../../projects/core/widgets/ui/select-modal/select-modal.service.ts","../../../projects/core/widgets/ui/storage-list/storage-list.options.ts","../../../projects/core/widgets/ui/storage-list/components/storage-list-item/storage-list-item.component.ts","../../../projects/core/widgets/ui/storage-list/components/storage-list-item/storage-list-item.component.html","../../../projects/core/widgets/ui/storage-list/storage-list.component.ts","../../../projects/core/widgets/ui/storage-list/storage-list.component.html","../../../projects/core/widgets/ui/user-action-context-menu/services/activity-base.service.ts","../../../projects/core/widgets/ui/user-action-context-menu/services/activity.service.ts","../../../projects/core/widgets/ui/user-action-context-menu/user-action-context.option.ts","../../../projects/core/widgets/ui/user-action-context-menu/activity-item/activity-item.component.ts","../../../projects/core/widgets/ui/user-action-context-menu/activity-item/activity-item.component.html","../../../projects/core/widgets/ui/user-action-context-menu/company-item/company-item.component.ts","../../../projects/core/widgets/ui/user-action-context-menu/company-item/company-item.component.html","../../../projects/core/widgets/ui/button-change-theme/button-change-theme.component.ts","../../../projects/core/widgets/ui/button-change-theme/button-change-theme.component.html","../../../projects/core/widgets/ui/user-action-context-menu/user-action-context-menu.component.ts","../../../projects/core/widgets/ui/user-action-context-menu/user-action-context-menu.component.html","../../../projects/core/widgets/ui/assignee-role-item/assignee-role-item.component.ts","../../../projects/core/widgets/ui/assignee-role-item/assignee-role-item.component.html","../../../projects/core/widgets/ui/assignee-roles-tabs/assignee-roles-tabs.component.ts","../../../projects/core/widgets/ui/assignee-roles-tabs/assignee-roles-tabs.component.html","../../../projects/core/widgets/ui/utility-info-readonly/utility-info-readonly.component.ts","../../../projects/core/widgets/ui/utility-info-readonly/utility-info-readonly.component.html","../../../projects/core/widgets/ui/modal-divided-section/modal-divided-section.component.ts","../../../projects/core/widgets/ui/modal-divided-section/modal-divided-section.component.html","../../../projects/core/widgets/ui/modal-header-inserted-buttons/modal-header-inserted-buttons.component.ts","../../../projects/core/widgets/ui/modal-header-inserted-buttons/modal-header-inserted-buttons.component.html","../../../projects/core/widgets/ui/modal-info-tab/modal-info-tab.component.ts","../../../projects/core/widgets/ui/modal-info-tab/modal-info-tab.component.html","../../../projects/core/widgets/model/resource-state-service.token.ts","../../../projects/core/widgets/model/subject-modal-service.token.ts","../../../projects/core/widgets/model/used-elements-service.token.ts","../../../projects/core/widgets/model/utility-service.token.ts","../../../projects/core/widgets/ui/toolbox-form/components/tool-form-readonly/tool-form-readonly.component.ts","../../../projects/core/widgets/ui/toolbox-form/components/tool-form-readonly/tool-form-readonly.component.html","../../../projects/core/widgets/ui/consumable-form/components/consumable-form-item-readonly/consumable-form-item-readonly.component.ts","../../../projects/core/widgets/ui/consumable-form/components/consumable-form-item-readonly/consumable-form-item-readonly.component.html","../../../projects/core/widgets/ui/consumable-form/components/consumable-form-item/default-control-delay.ts","../../../projects/core/widgets/ui/consumable-form/components/consumable-form-item/consumable-form-item.component.ts","../../../projects/core/widgets/ui/consumable-form/components/consumable-form-item/consumable-form-item.component.html","../../../projects/core/widgets/ui/toolbox-form/tool-form.component.ts","../../../projects/core/widgets/ui/toolbox-form/tool-form.component.html","../../../projects/core/widgets/ui/resources-block/components/resources-block-part/resources-block-part.component.ts","../../../projects/core/widgets/ui/resources-block/components/resources-block-part/resources-block-part.component.html","../../../projects/core/widgets/ui/consumable-form/consumable-form.component.ts","../../../projects/core/widgets/ui/consumable-form/consumable-form.component.html","../../../projects/core/widgets/ui/resources-block/components/resources-block-consumables/resources-block-consumables.component.ts","../../../projects/core/widgets/ui/resources-block/components/resources-block-consumables/resources-block-consumables.component.html","../../../projects/core/widgets/ui/resources-block/components/resources-block-toolbox/resources-block-toolbox.component.ts","../../../projects/core/widgets/ui/resources-block/components/resources-block-toolbox/resources-block-toolbox.component.html","../../../projects/core/widgets/ui/resources-block/components/resources-block-tabs/resources-block-tabs.options.ts","../../../projects/core/widgets/ui/resources-block/components/resources-block-content/resources-block-content.component.ts","../../../projects/core/widgets/ui/resources-block/components/resources-block-content/resources-block-content.component.html","../../../projects/core/widgets/ui/resources-block/components/resources-block-tabs/resources-block-tabs.component.ts","../../../projects/core/widgets/ui/resources-block/components/resources-block-tabs/resources-block-tabs.component.html","../../../projects/core/widgets/ui/resources-block/components/resources-options/resources-options.component.ts","../../../projects/core/widgets/ui/resources-block/components/resources-options/resources-options.component.html","../../../projects/core/widgets/ui/resources-block/resources-block.component.ts","../../../projects/core/widgets/ui/resources-block/resources-block.component.html","../../../projects/core/widgets/ui/resources-block-tabs/resources-block-tabs.options.ts","../../../projects/core/widgets/ui/resources-block-tabs/resources-block-tabs.component.ts","../../../projects/core/widgets/ui/resources-block-tabs/resources-block-tabs.component.html","../../../projects/core/widgets/ui/modal-resources-tab/modal-resources-tab.component.ts","../../../projects/core/widgets/ui/modal-resources-tab/modal-resources-tab.component.html","../../../projects/core/widgets/ui/modal-instructions-tab/modal-instructions-tab.component.ts","../../../projects/core/widgets/ui/modal-instructions-tab/modal-instructions-tab.component.html","../../../projects/core/widgets/ui/modal-header-tabs/modal-header-tabs.component.ts","../../../projects/core/widgets/ui/modal-header-tabs/modal-header-tabs.component.html","../../../projects/core/widgets/ui/modal-criteria-tab/modal-criteria-tab.component.ts","../../../projects/core/widgets/ui/modal-criteria-tab/modal-criteria-tab.component.html","../../../projects/core/widgets/ui/modal-operation-part/modal-operation-part.component.ts","../../../projects/core/widgets/ui/modal-operation-part/modal-operation-part.component.html","../../../projects/core/widgets/ui/render-dynamic-modal/render-dynamic-modal.component.ts","../../../projects/core/widgets/ui/render-dynamic-modal/render-dynamic-modal.component.html","../../../projects/core/widgets/service/utility-base.service.ts","../../../projects/core/widgets/service/subject-modal-base.service.ts","../../../projects/core/widgets/service/used-elements-base.service.ts","../../../projects/core/widgets/service/resource-state-base.service.ts","../../../projects/core/widgets/assets/constants/translations.ts","../../../projects/core/operators/handle-error.ts","../../../projects/core/pipes/time.pipe.ts","../../../projects/core/i18n/index.ts","../../../projects/core/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-accordion',\r\n    templateUrl: './accordion.template.html',\r\n    styleUrls: ['./accordion.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionComponent {}\r\n","<ng-content select=\"cui-accordion-item\"></ng-content>\r\n","import { Directive, effect, inject, input, model, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[cuiAccordion]',\r\n    standalone: true,\r\n    host: {\r\n        '(click)': 'onToggle($event)'\r\n    }\r\n})\r\nexport class CuiAccordionDirective {\r\n    private readonly renderer = inject(Renderer2);\r\n\r\n    private wrapper!: HTMLElement;\r\n\r\n    public readonly content = input.required<HTMLElement>();\r\n    public readonly isOpen = model(true);\r\n\r\n    constructor() {\r\n        this.initWrapperEffect();\r\n        this.initOpenChangesEffect();\r\n    }\r\n\r\n    protected onToggle(event: Event): void {\r\n        if (event.defaultPrevented) {\r\n            return;\r\n        }\r\n\r\n        this.isOpen.update((prev) => !prev);\r\n    }\r\n\r\n    private initWrapperEffect(): void {\r\n        const effectRef = effect(() => {\r\n            const content = this.content();\r\n\r\n            this.wrapper = this.renderer.createElement('div');\r\n\r\n            content.after(this.wrapper);\r\n            this.renderer.appendChild(this.wrapper, content);\r\n\r\n            effectRef.destroy();\r\n        });\r\n    }\r\n\r\n    private initOpenChangesEffect(): void {\r\n        effect(() => {\r\n            const isOpen = this.isOpen();\r\n            const doAction = isOpen ? this.close : this.open;\r\n\r\n            doAction.call(this, this.wrapper);\r\n        });\r\n    }\r\n\r\n    private open(wrapper: HTMLElement): void {\r\n        this.renderer.setStyle(wrapper, 'visibility', 'hidden');\r\n        this.renderer.setStyle(wrapper, 'height', '0');\r\n        this.renderer.setStyle(wrapper, 'overflow', 'hidden');\r\n    }\r\n\r\n    private close(wrapper: HTMLElement): void {\r\n        this.renderer.setStyle(wrapper, 'visibility', 'visible');\r\n        this.renderer.setStyle(wrapper, 'height', '');\r\n        this.renderer.setStyle(wrapper, 'overflow', '');\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type {\r\n    CuiAppearanceAction,\r\n    CuiAppearanceActionCyan,\r\n    CuiAppearanceActionViolet,\r\n    CuiAppearanceDestructive,\r\n    CuiAppearanceFlat,\r\n    CuiAppearanceGhost,\r\n    CuiAppearanceLink,\r\n    CuiAppearanceOutlined,\r\n    CuiAppearanceOutlinedGray,\r\n    CuiAppearanceSecondary,\r\n    CuiAppearanceVividSuccess,\r\n    CuiButtonThemeCyan,\r\n    CuiButtonThemeDefault,\r\n    CuiButtonThemeSuccess,\r\n    CuiButtonThemeViolet,\r\n    CuiButtonThemeVividSuccess,\r\n    CuiShapeRounded,\r\n    CuiSizeLg,\r\n    CuiSizeMd,\r\n    CuiSizeSm,\r\n    CuiSizeXs,\r\n    CuiSizeXxs,\r\n    CuiSizeXxxs\r\n} from '../../types';\r\n\r\nexport interface CuiButtonOptions {\r\n    readonly appearance: CuiButtonAppearance;\r\n    readonly shape: CuiButtonShape;\r\n    readonly size: CuiButtonSize;\r\n    readonly theme: CuiButtonTheme;\r\n}\r\n\r\nexport type CuiButtonAppearance =\r\n    | CuiAppearanceAction\r\n    | CuiAppearanceSecondary\r\n    | CuiAppearanceOutlined\r\n    | CuiAppearanceOutlinedGray\r\n    | CuiAppearanceGhost\r\n    | CuiAppearanceFlat\r\n    | CuiAppearanceVividSuccess\r\n    | CuiAppearanceDestructive\r\n    | CuiAppearanceLink\r\n    | CuiAppearanceActionViolet\r\n    | CuiAppearanceActionCyan;\r\nexport type CuiButtonTheme =\r\n    | CuiButtonThemeDefault\r\n    | CuiButtonThemeViolet\r\n    | CuiButtonThemeCyan\r\n    | CuiButtonThemeSuccess\r\n    | CuiButtonThemeVividSuccess;\r\nexport type CuiButtonSize = CuiSizeXxxs | CuiSizeXxs | CuiSizeXs | CuiSizeSm | CuiSizeMd | CuiSizeLg;\r\nexport type CuiButtonShape = CuiShapeRounded | null;\r\n\r\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\r\n    appearance: 'action',\r\n    shape: null,\r\n    size: 'sm',\r\n    theme: 'default'\r\n};\r\n\r\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\r\n    factory: () => CUI_BUTTON_DEFAULT_OPTIONS\r\n});\r\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CUI_ICONS, cuiIsIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n    selector: 'cui-svg[icon]',\r\n    templateUrl: './svg.template.html',\r\n    styleUrls: ['./svg.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSvgComponent {\r\n    private readonly domSanitizer = inject(DomSanitizer);\r\n\r\n    protected safeSvgContent!: SafeHtml;\r\n\r\n    @Input()\r\n    public width?: number;\r\n\r\n    @Input()\r\n    public height?: number;\r\n\r\n    @Input()\r\n    @HostBinding('style.--stroke-width')\r\n    public strokeWidth?: number;\r\n\r\n    @Input()\r\n    @HostBinding('style.--color')\r\n    public color?: string;\r\n\r\n    @Input()\r\n    public set icon(icon: CuiIcon) {\r\n        // TODO: В данном случае подключаются все иконки (вероятно, можно как-то оптимизировано их подключать)\r\n        this.safeSvgContent = this.domSanitizer.bypassSecurityTrustHtml(cuiIsIcon(icon) ? CUI_ICONS[icon] : icon);\r\n    }\r\n\r\n    @HostBinding('class._with-stroke-width')\r\n    public get isWithStrokeWidth(): boolean {\r\n        return !!this.strokeWidth;\r\n    }\r\n\r\n    @HostBinding('class._with-color')\r\n    public get isWithColor(): boolean {\r\n        return !!this.color;\r\n    }\r\n}\r\n","<span\r\n    [innerHTML]=\"safeSvgContent\"\r\n    [style.width.px]=\"width\"\r\n    [style.height.px]=\"height\"\r\n></span>\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    HostBinding,\r\n    inject,\r\n    Input,\r\n    OnInit,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport {\r\n    CUI_BUTTON_OPTIONS,\r\n    CuiButtonAppearance,\r\n    CuiButtonOptions,\r\n    CuiButtonSize,\r\n    CuiButtonTheme\r\n} from './button.options';\r\n\r\n@Component({\r\n    selector: 'button[cuiButton], a[cuiButton]',\r\n    templateUrl: './button.template.html',\r\n    styleUrls: ['./styles/index.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\r\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n    private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\r\n\r\n    private readonly ICON_XS_SIZES = ['xxs', 'xxxs'];\r\n    protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\r\n    protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonAppearance[] = [\r\n        'secondary',\r\n        'outlined',\r\n        'outlined-gray',\r\n        'ghost'\r\n    ];\r\n\r\n    protected _theme = this.cuiButtonOptions.theme;\r\n    protected _appearance = this.cuiButtonOptions.appearance;\r\n    protected _size = this.cuiButtonOptions.size;\r\n\r\n    protected iconColor = this.getIconColor(this._appearance);\r\n    protected iconDimensions = {\r\n        width: 20,\r\n        height: 20\r\n    };\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-shape')\r\n    public shape = this.cuiButtonOptions.shape;\r\n\r\n    @Input()\r\n    @HostBinding('class._disabled')\r\n    public disabled = false;\r\n\r\n    @Input()\r\n    @HostBinding('class._loading')\r\n    public isLoaderShown = false;\r\n\r\n    @Input()\r\n    public icon?: CuiIcon;\r\n\r\n    @Input()\r\n    public iconRight?: CuiIcon;\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-appearance')\r\n    public get appearance(): CuiButtonAppearance {\r\n        return this._appearance;\r\n    }\r\n\r\n    public set appearance(appearance: CuiButtonAppearance) {\r\n        this._appearance = appearance;\r\n\r\n        this.changeIconColor();\r\n    }\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-theme')\r\n    public get theme(): CuiButtonTheme {\r\n        return this._theme;\r\n    }\r\n\r\n    public set theme(theme: CuiButtonTheme) {\r\n        this._theme = theme;\r\n\r\n        this.changeIconColor();\r\n    }\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-size')\r\n    public get size(): CuiButtonSize {\r\n        return this._size;\r\n    }\r\n\r\n    public set size(size: CuiButtonSize) {\r\n        this._size = size;\r\n\r\n        if (this.ICON_XS_SIZES.includes(size)) {\r\n            this.iconDimensions = {\r\n                width: 16,\r\n                height: 16\r\n            };\r\n\r\n            return;\r\n        }\r\n\r\n        this.iconDimensions = {\r\n            width: 20,\r\n            height: 20\r\n        };\r\n    }\r\n\r\n    @HostBinding('class._only-icon')\r\n    protected containsOnlyIcon = false;\r\n\r\n    @HostBinding('disabled')\r\n    protected get isDisabled(): boolean {\r\n        return this.disabled || this.isLoaderShown;\r\n    }\r\n\r\n    @ViewChild('content')\r\n    protected content!: ElementRef<HTMLSpanElement>;\r\n\r\n    public ngOnInit(): void {\r\n        this.initIconColor();\r\n    }\r\n\r\n    private initIconColor(): void {\r\n        this.changeIconColor();\r\n    }\r\n\r\n    private changeIconColor(): void {\r\n        Promise.resolve().then(() => {\r\n            this.iconColor = this.getIconColor(this._appearance);\r\n\r\n            this.changeDetectorRef.markForCheck();\r\n        });\r\n    }\r\n\r\n    private getIconColor(appearance: CuiButtonOptions['appearance']): string {\r\n        if (this.BUTTON_ICONS_COLOR_BASE_500.includes(appearance)) {\r\n            return this.COLOR_BASE_500;\r\n        }\r\n\r\n        return 'currentColor';\r\n    }\r\n}\r\n","<span\r\n    class=\"c-wrapper\"\r\n    [class.c-wrapper_invisible]=\"isLoaderShown\"\r\n>\r\n    <cui-svg\r\n        *ngIf=\"icon\"\r\n        [icon]=\"icon\"\r\n        [width]=\"iconDimensions.width\"\r\n        [height]=\"iconDimensions.height\"\r\n        [color]=\"iconColor\"\r\n    ></cui-svg>\r\n    <span\r\n        #content\r\n        class=\"c-content\"\r\n    >\r\n        <ng-content></ng-content>\r\n    </span>\r\n    <cui-svg\r\n        *ngIf=\"iconRight\"\r\n        [icon]=\"iconRight\"\r\n        [width]=\"iconDimensions.width\"\r\n        [height]=\"iconDimensions.height\"\r\n        [color]=\"iconColor\"\r\n    ></cui-svg>\r\n</span>\r\n<cui-svg\r\n    *ngIf=\"isLoaderShown\"\r\n    icon=\"cuiIconLoading\"\r\n    [color]=\"iconColor\"\r\n    class=\"c-loader\"\r\n></cui-svg>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CuiAccordionAppearance } from './accordion-item.options';\r\n\r\n@Component({\r\n    selector: 'cui-accordion-item',\r\n    templateUrl: './accordion-item.template.html',\r\n    styleUrls: ['./accordion-item.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionItemComponent {\r\n    @Input()\r\n    public isOpen = true;\r\n\r\n    @Input()\r\n    public appearance: CuiAccordionAppearance = 'default';\r\n\r\n    @Output()\r\n    public readonly isOpenChange = new EventEmitter<boolean>();\r\n\r\n    protected get buttonIcon(): CuiIcon {\r\n        return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';\r\n    }\r\n\r\n    @HostBinding('attr.appearance')\r\n    public get _appearance(): string {\r\n        return this.appearance;\r\n    }\r\n\r\n    protected onRowToggle(): void {\r\n        this.isOpen = !this.isOpen;\r\n\r\n        this.isOpenChange.emit(this.isOpen);\r\n    }\r\n}\r\n","<header class=\"c-header\">\r\n    <button\r\n        cuiButton\r\n        appearance=\"ghost\"\r\n        size=\"xxs\"\r\n        [icon]=\"buttonIcon\"\r\n        (click)=\"onRowToggle()\"\r\n    ></button>\r\n    <div class=\"c-header__wrapper\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</header>\r\n<div\r\n    *ngIf=\"isOpen\"\r\n    class=\"c-content\"\r\n>\r\n    <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSvgComponent } from './svg.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule],\r\n    declarations: [CuiSvgComponent],\r\n    exports: [CuiSvgComponent]\r\n})\r\nexport class CuiSvgModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiButtonComponent } from './button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiSvgModule],\r\n    declarations: [CuiButtonComponent],\r\n    exports: [CuiButtonComponent]\r\n})\r\nexport class CuiButtonModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiAccordionComponent } from './accordion.component';\r\nimport { CuiAccordionItemComponent } from './accordion-item/accordion-item.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiSvgModule, CuiButtonModule],\r\n    declarations: [CuiAccordionComponent, CuiAccordionItemComponent],\r\n    exports: [CuiAccordionComponent, CuiAccordionItemComponent]\r\n})\r\nexport class CuiAccordionModule {}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport type { CuiStatus } from '../../types';\r\n\r\nexport type CuiNotificationIcons = Record<CuiStatus, { icon: CuiIcon }>;\r\n\r\nexport type CuiNotificationIconOptions = Record<CuiStatus, { color: string }>;\r\n\r\nexport interface CuiNotificationOptions {\r\n    readonly status: CuiStatus;\r\n    readonly mode: 'default' | 'light';\r\n}\r\n\r\nexport const CUI_NOTIFICATION_DEFAULT_OPTIONS: CuiNotificationOptions = {\r\n    status: 'info',\r\n    mode: 'default'\r\n};\r\n\r\nexport const CUI_NOTIFICATION_OPTIONS = cuiCreateToken(CUI_NOTIFICATION_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_NOTIFICATION_ICONS: CuiNotificationIcons = {\r\n    info: {\r\n        icon: 'cuiIconInfo'\r\n    },\r\n    success: {\r\n        icon: 'cuiIconCheckCircle'\r\n    },\r\n    alert: {\r\n        icon: 'cuiIconAlertTriangle'\r\n    },\r\n    error: {\r\n        icon: 'cuiIconXCircle'\r\n    }\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE: CuiNotificationIconOptions = {\r\n    info: {\r\n        color: 'var(--c-info-icon-color)'\r\n    },\r\n    success: {\r\n        color: 'var(--cui-green-500)'\r\n    },\r\n    alert: {\r\n        color: 'var(--cui-yellow-400)'\r\n    },\r\n    error: {\r\n        color: 'var(--cui-danger)'\r\n    }\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE: CuiNotificationIconOptions = {\r\n    info: {\r\n        color: 'var(--cui-info)'\r\n    },\r\n    success: {\r\n        color: 'var(--cui-green-700)'\r\n    },\r\n    alert: {\r\n        color: 'var(--cui-yellow-400)'\r\n    },\r\n    error: {\r\n        color: 'var(--cui-danger)'\r\n    }\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS: Record<CuiNotificationOptions['mode'], CuiNotificationIconOptions> = {\r\n    default: CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE,\r\n    light: CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE\r\n};\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    HostBinding,\r\n    inject,\r\n    Input,\r\n    OnInit,\r\n    Output\r\n} from '@angular/core';\r\nimport {\r\n    CUI_NOTIFICATION_ICON_OPTIONS,\r\n    CuiNotificationIconOptions,\r\n    CuiNotificationOptions\r\n} from './notification.options';\r\nimport { CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS } from './notification.options';\r\n\r\n@Component({\r\n    selector: 'cui-notification',\r\n    templateUrl: './notification.template.html',\r\n    styleUrls: ['./notification.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiNotificationComponent implements CuiNotificationOptions, OnInit {\r\n    private readonly cuiNotificationOptions = inject(CUI_NOTIFICATION_OPTIONS);\r\n\r\n    protected readonly ICONS = CUI_NOTIFICATION_ICONS;\r\n    protected readonly ICON_OPTIONS = CUI_NOTIFICATION_ICON_OPTIONS;\r\n\r\n    protected iconOptions!: CuiNotificationIconOptions;\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-status')\r\n    public status = this.cuiNotificationOptions.status;\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-mode')\r\n    public mode = this.cuiNotificationOptions.mode;\r\n\r\n    @Input()\r\n    public isCloseable = false;\r\n\r\n    @Output()\r\n    public readonly closed = new EventEmitter<void>();\r\n\r\n    public ngOnInit(): void {\r\n        this.initIconOptions();\r\n    }\r\n\r\n    protected onClose(): void {\r\n        this.closed.next();\r\n    }\r\n\r\n    private initIconOptions(): void {\r\n        this.iconOptions = this.ICON_OPTIONS[this.mode];\r\n    }\r\n}\r\n","<cui-svg\r\n    class=\"c-icon\"\r\n    [icon]=\"ICONS[status].icon\"\r\n    [color]=\"iconOptions[status].color\"\r\n></cui-svg>\r\n<div class=\"c-content\">\r\n    <ng-content></ng-content>\r\n</div>\r\n<button\r\n    *ngIf=\"isCloseable\"\r\n    class=\"c-button\"\r\n    (click)=\"onClose()\"\r\n>\r\n    <cui-svg\r\n        icon=\"cuiIconX\"\r\n        color=\"var(--cui-gray-0)\"\r\n    />\r\n</button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiNotificationComponent } from './notification.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiSvgModule],\r\n    declarations: [CuiNotificationComponent],\r\n    exports: [CuiNotificationComponent]\r\n})\r\nexport class CuiNotificationModule {}\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory, CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\nimport { CUI_NOTIFICATION_OPTIONS } from '../notification';\r\n\r\nexport const CUI_ALERTS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([]));\r\n\r\nexport const CUI_ALERT_DEFAULT_OPTIONS: Omit<CuiAlertOptions, 'status'> = {\r\n    label: '',\r\n    needAutoClose: true,\r\n    isCloseable: true,\r\n    mode: 'default',\r\n    position: 'right',\r\n    resizing: 'fixed'\r\n};\r\n\r\nexport const CUI_ALERT_OPTIONS = cuiCreateTokenFromFactory(() => ({\r\n    ...CUI_ALERT_DEFAULT_OPTIONS,\r\n    ...inject(CUI_NOTIFICATION_OPTIONS)\r\n}));\r\n\r\nexport const CUI_ALERT_CONTEXT = new InjectionToken<CuiPopover<CuiAlertOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, HostBinding } from '@angular/core';\r\n\r\nimport { CUI_ALERT_CONTEXT } from './alert.tokens';\r\nimport type { CuiAlertResizing } from './alert.types';\r\n\r\n@Component({\r\n    selector: 'cui-alert',\r\n    templateUrl: './alert.template.html',\r\n    styleUrls: ['./alert.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAlertComponent implements OnInit {\r\n    protected readonly context = inject(CUI_ALERT_CONTEXT);\r\n\r\n    protected readonly AUTO_CLOSE_DURATION_IN_MILLISECONDS = 3000;\r\n\r\n    @HostBinding('attr.data-resizing')\r\n    protected get resizing(): CuiAlertResizing {\r\n        return this.context.resizing;\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initAutoClose();\r\n    }\r\n\r\n    protected onClosed(): void {\r\n        this.context.$implicit.complete();\r\n    }\r\n\r\n    private initAutoClose(): void {\r\n        if (!this.context.needAutoClose) {\r\n            return;\r\n        }\r\n\r\n        setTimeout(this.onClosed.bind(this), this.AUTO_CLOSE_DURATION_IN_MILLISECONDS);\r\n    }\r\n}\r\n","<cui-notification\r\n    [status]=\"context.status\"\r\n    [mode]=\"context.mode\"\r\n    [isCloseable]=\"context.isCloseable\"\r\n    (closed)=\"onClosed()\"\r\n>\r\n    <h2\r\n        *ngIf=\"context.label\"\r\n        class=\"c-heading\"\r\n    >\r\n        {{ context.label }}\r\n    </h2>\r\n    {{ context.content }}\r\n</cui-notification>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_ALERT_CONTEXT, CUI_ALERTS } from './alert.tokens';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-alerts',\r\n    templateUrl: './alerts.template.html',\r\n    styleUrls: ['./alerts.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CuiDestroyService]\r\n})\r\nexport class CuiAlertsComponent implements OnInit {\r\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n    protected readonly alerts$: Observable<ReadonlyArray<CuiPopover<CuiAlertOptions>>> = inject(CUI_ALERTS);\r\n    protected alertInjectors!: ReadonlyArray<Injector>;\r\n\r\n    public ngOnInit(): void {\r\n        this.initAlertInjectorsSubscription();\r\n    }\r\n\r\n    protected trackByFn(_: number, alert: CuiPopover<CuiAlertOptions>): string {\r\n        return alert.id;\r\n    }\r\n\r\n    protected alertsMatcher(alert: CuiPopover<CuiAlertOptions>, position: string): boolean {\r\n        return alert.position === position;\r\n    }\r\n\r\n    protected initAlertInjectorsSubscription(): void {\r\n        this.alerts$.pipe(takeUntil(this.destroy$)).subscribe(\r\n            (dialogs) =>\r\n                (this.alertInjectors = dialogs.map((useValue) =>\r\n                    Injector.create({\r\n                        providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\r\n                    })\r\n                ))\r\n        );\r\n    }\r\n}\r\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\r\n    <div class=\"c-wrapper c-wrapper_position_center\">\r\n        <ng-container\r\n            *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'center'; let i = index; trackBy: trackByFn\"\r\n        >\r\n            <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n        </ng-container>\r\n    </div>\r\n    <div class=\"c-wrapper c-wrapper_position_right\">\r\n        <ng-container\r\n            *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'right'; let i = index; trackBy: trackByFn\"\r\n        >\r\n            <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n        </ng-container>\r\n    </div>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiFilterPipe, CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport { CuiAlertsComponent } from './alerts.component';\r\nimport { CuiNotificationModule } from '../notification';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiFilterPipe, CuiNotificationModule, CuiLetDirective],\r\n    declarations: [CuiAlertComponent, CuiAlertsComponent],\r\n    exports: [CuiAlertComponent, CuiAlertComponent, CuiAlertsComponent]\r\n})\r\nexport class CuiAlertModule {}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_ALERT_OPTIONS, CUI_ALERTS } from './alert.tokens';\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n    useFactory: () => new CuiAlertService(CUI_ALERTS, CuiAlertComponent, inject(CUI_ALERT_OPTIONS))\r\n})\r\nexport class CuiAlertService extends CuiPopoverService<CuiAlertOptions> {}\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport class CuiTextFieldController {\r\n    constructor(\r\n        private readonly iconLeftDirective: CuiTextFieldIconLeftDirective,\r\n        private readonly idDirective: CuiTextFieldIdDirective,\r\n        private readonly isErrorDirective: CuiTextFieldIsErrorDirective,\r\n        private readonly placeholderDirective: CuiTextFieldPlaceholderDirective,\r\n        private readonly sizeDirective: CuiTextFieldSizeDirective\r\n    ) {}\r\n\r\n    public get iconLeft(): CuiIcon | undefined {\r\n        return this.iconLeftDirective.iconLeft;\r\n    }\r\n\r\n    public get id(): string | undefined {\r\n        return this.idDirective.id;\r\n    }\r\n\r\n    public get isError(): boolean {\r\n        return this.isErrorDirective.isError;\r\n    }\r\n\r\n    public get placeholder(): string | undefined {\r\n        return this.placeholderDirective.placeholder;\r\n    }\r\n\r\n    public get size(): CuiSizeSm | CuiSizeMd {\r\n        return this.sizeDirective.size;\r\n    }\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport const CUI_TEXT_FIELD_ICON_LEFT = new InjectionToken<CuiTextFieldIconLeftDirective>('', {\r\n    factory: () => new CuiTextFieldIconLeftDirective()\r\n});\r\n\r\n@Directive({\r\n    selector: '[cuiTextFieldIconLeft]',\r\n    providers: [cuiProvide(CUI_TEXT_FIELD_ICON_LEFT, CuiTextFieldIconLeftDirective)]\r\n})\r\nexport class CuiTextFieldIconLeftDirective {\r\n    @Input('cuiTextFieldIconLeft')\r\n    public iconLeft?: CuiIcon;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_ID = new InjectionToken<CuiTextFieldIdDirective>('', {\r\n    factory: () => new CuiTextFieldIdDirective()\r\n});\r\n\r\n@Directive({\r\n    selector: '[cuiTextFieldId]',\r\n    providers: [cuiProvide(CUI_TEXT_FIELD_ID, CuiTextFieldIdDirective)]\r\n})\r\nexport class CuiTextFieldIdDirective {\r\n    @Input('cuiTextFieldId')\r\n    public id?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_IS_ERROR = new InjectionToken<CuiTextFieldIsErrorDirective>('', {\r\n    factory: () => new CuiTextFieldIsErrorDirective()\r\n});\r\n\r\n@Directive({\r\n    selector: '[cuiTextFieldIsError]',\r\n    providers: [cuiProvide(CUI_TEXT_FIELD_IS_ERROR, CuiTextFieldIsErrorDirective)]\r\n})\r\nexport class CuiTextFieldIsErrorDirective {\r\n    @Input('cuiTextFieldIsError')\r\n    public isError = false;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_PLACEHOLDER = new InjectionToken<CuiTextFieldPlaceholderDirective>('', {\r\n    factory: () => new CuiTextFieldPlaceholderDirective()\r\n});\r\n\r\n@Directive({\r\n    selector: '[cuiTextFieldPlaceholder]',\r\n    providers: [cuiProvide(CUI_TEXT_FIELD_PLACEHOLDER, CuiTextFieldPlaceholderDirective)]\r\n})\r\nexport class CuiTextFieldPlaceholderDirective {\r\n    @Input('cuiTextFieldPlaceholder')\r\n    public placeholder?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport const CUI_TEXT_FIELD_SIZE = new InjectionToken<CuiTextFieldSizeDirective>('', {\r\n    factory: () => new CuiTextFieldSizeDirective()\r\n});\r\n\r\n@Directive({\r\n    selector: '[cuiTextFieldSize]',\r\n    providers: [cuiProvide(CUI_TEXT_FIELD_SIZE, CuiTextFieldSizeDirective)]\r\n})\r\nexport class CuiTextFieldSizeDirective {\r\n    @Input('cuiTextFieldSize')\r\n    public size: CuiSizeSm | CuiSizeMd = 'sm';\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CuiTextFieldIconLeftDirective,\r\n        CuiTextFieldIdDirective,\r\n        CuiTextFieldPlaceholderDirective,\r\n        CuiTextFieldIsErrorDirective,\r\n        CuiTextFieldSizeDirective\r\n    ],\r\n    exports: [\r\n        CuiTextFieldIconLeftDirective,\r\n        CuiTextFieldIdDirective,\r\n        CuiTextFieldPlaceholderDirective,\r\n        CuiTextFieldIsErrorDirective,\r\n        CuiTextFieldSizeDirective\r\n    ]\r\n})\r\nexport class CuiTextFieldControllerModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nimport { CuiTextFieldController } from './text-field.controller';\r\n\r\nimport { CUI_TEXT_FIELD_SIZE } from './text-field-size.directive';\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport { CUI_TEXT_FIELD_ID } from './text-field-id.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CUI_TEXT_FIELD_IS_ERROR } from './text-field-is-error.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CUI_TEXT_FIELD_PLACEHOLDER } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CUI_TEXT_FIELD_ICON_LEFT } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\n\r\nexport const CUI_TEXT_FIELD_CONTROLLER = new InjectionToken<CuiTextFieldController>('');\r\n\r\nexport const CUI_TEXT_FILED_CONTROLLER_PROVIDER: Provider = [\r\n    {\r\n        provide: CUI_TEXT_FIELD_CONTROLLER,\r\n        useFactory: (\r\n            ...controllers: [\r\n                CuiTextFieldIconLeftDirective,\r\n                CuiTextFieldIdDirective,\r\n                CuiTextFieldIsErrorDirective,\r\n                CuiTextFieldPlaceholderDirective,\r\n                CuiTextFieldSizeDirective\r\n            ]\r\n        ) => {\r\n            return new CuiTextFieldController(...controllers);\r\n        },\r\n        deps: [\r\n            CUI_TEXT_FIELD_ICON_LEFT,\r\n            CUI_TEXT_FIELD_ID,\r\n            CUI_TEXT_FIELD_IS_ERROR,\r\n            CUI_TEXT_FIELD_PLACEHOLDER,\r\n            CUI_TEXT_FIELD_SIZE\r\n        ]\r\n    }\r\n];\r\n","import { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations';\r\n\r\nconst TRANSITION = '{{duration}}ms ease-in-out';\r\nconst DURATION = { params: { duration: 300 } };\r\nconst STAGGER = 300;\r\n\r\nexport interface CuiDurationOptions {\r\n    params: { duration: number };\r\n    value: string;\r\n}\r\n\r\n/**\r\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\r\n */\r\nexport const cuiParentAnimation = trigger('cuiParentAnimation', [\r\n    transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\r\n]);\r\n\r\n/**\r\n * Add on parent to stop initial :enter animation for children\r\n */\r\nexport const cuiParentStop = trigger('cuiParentStop', [transition(':enter', [])]);\r\n\r\nexport const cuiHost = trigger('cuiHost', [\r\n    transition(':enter', [style({ overflow: 'clip' }), query(':scope > *', [animateChild()], { optional: true })]),\r\n    transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\r\n]);\r\n\r\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\r\n    transition(':enter', [style({ height: 0 }), animate(TRANSITION, style({ height: '*' }))], DURATION),\r\n    transition(':leave', [style({ height: '*' }), animate(TRANSITION, style({ height: 0 }))], DURATION)\r\n]);\r\n\r\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(':enter', [style({ height: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ height: '*' }))])], {\r\n                optional: true\r\n            }),\r\n            query(':leave', [style({ height: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ height: 0 }))])], {\r\n                optional: true\r\n            })\r\n        ],\r\n        DURATION\r\n    )\r\n]);\r\n\r\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\r\n    transition(':enter', [style({ width: 0 }), animate(TRANSITION, style({ width: '*' }))], DURATION),\r\n    transition(':leave', [style({ width: '*' }), animate(TRANSITION, style({ width: 0 }))], DURATION)\r\n]);\r\n\r\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(':enter', [style({ width: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ width: '*' }))])], {\r\n                optional: true\r\n            }),\r\n            query(':leave', [style({ width: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ width: 0 }))])], {\r\n                optional: true\r\n            })\r\n        ],\r\n        DURATION\r\n    )\r\n]);\r\n\r\nexport const cuiFadeIn = trigger('cuiFadeIn', [\r\n    transition(':enter', [style({ opacity: 0 }), animate(TRANSITION, style({ opacity: 1 }))], DURATION),\r\n    transition(':leave', [style({ opacity: 1 }), animate(TRANSITION, style({ opacity: 0 }))], DURATION)\r\n]);\r\n\r\nexport const cuiFadeInList = trigger('cuiFadeInList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(':enter', [style({ opacity: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 1 }))])], {\r\n                optional: true\r\n            }),\r\n            query(':leave', [style({ opacity: 1 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 0 }))])], {\r\n                optional: true\r\n            })\r\n        ],\r\n        DURATION\r\n    )\r\n]);\r\n\r\nexport const cuiFadeInTop = trigger('cuiFadeInTop', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\r\n            animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\r\n        ],\r\n        { params: { end: 0, start: 10, duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'translateY({{end}})', opacity: 1 }),\r\n            animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\r\n        ],\r\n        { params: { end: 0, start: 10, duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiFadeInBottom = trigger('cuiFadeInBottom', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'translateY({{start}}px)', opacity: 0 }),\r\n            animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\r\n        ],\r\n        { params: { end: 0, start: 10, duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'translateY({{end}})', opacity: 1 }),\r\n            animate(TRANSITION, style({ transform: 'translateY({{start}}px)', opacity: 0 }))\r\n        ],\r\n        { params: { end: 0, start: 10, duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiDropdownAnimation = trigger('cuiDropdownAnimation', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\r\n            animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\r\n        ],\r\n        { params: { end: 0, start: 10, duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'translateY({{end}})', opacity: 1 }),\r\n            animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\r\n        ],\r\n        { params: { end: 0, start: 10, duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiScaleIn = trigger('cuiScaleIn', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'scale({{start}})' }),\r\n            animate('{{duration}}ms {{easing}}', style({ transform: 'scale({{end}})' }))\r\n        ],\r\n        { params: { end: 1, start: 0, duration: 300, easing: 'ease-in-out' } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [style({ transform: 'scale({{end}})' }), animate(TRANSITION, style({ transform: 'scale({{start}})' }))],\r\n        { params: { end: 1, start: 0, duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiPop = trigger('cuiPop', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'scale({{start}})' }),\r\n            animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\r\n            animate(TRANSITION, style({ transform: 'scale({{end}})' }))\r\n        ],\r\n        { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'scale({{end}})' }),\r\n            animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\r\n            animate(TRANSITION, style({ transform: 'scale({{start}})' }))\r\n        ],\r\n        { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiScaleInList = trigger('cuiScaleInList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(\r\n                ':enter',\r\n                [\r\n                    style({ transform: 'scale({{start}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{end}})' }))])\r\n                ],\r\n                { optional: true }\r\n            ),\r\n            query(\r\n                ':leave',\r\n                [\r\n                    style({ transform: 'scale({{end}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{start}})' }))])\r\n                ],\r\n                { optional: true }\r\n            )\r\n        ],\r\n        { params: { end: 1, start: 0, duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideIn = trigger('cuiSlideIn', [\r\n    transition(\r\n        '* => left',\r\n        [\r\n            style({ transform: 'translateX(-{{start}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    ),\r\n    transition(\r\n        'left => *',\r\n        [\r\n            style({ transform: 'translateX({{end}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    ),\r\n    transition(\r\n        '* => right',\r\n        [\r\n            style({ transform: 'translateX({{start}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    ),\r\n    transition(\r\n        'right => *',\r\n        [\r\n            style({ transform: 'translateX({{end}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInLeft = trigger('cuiSlideInLeft', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'translateX(-{{start}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'translateX({{end}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInLeftList = trigger('cuiSlideInLeftList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(\r\n                ':enter',\r\n                [\r\n                    style({ transform: 'translateX(-{{start}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\r\n                ],\r\n                { optional: true }\r\n            ),\r\n            query(\r\n                ':leave',\r\n                [\r\n                    style({ transform: 'translateX({{end}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))])\r\n                ],\r\n                { optional: true }\r\n            )\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInRight = trigger('cuiSlideInRight', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'translateX({{start}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'translateX({{end}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInRightList = trigger('cuiSlideInRightList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(\r\n                ':enter',\r\n                [\r\n                    style({ transform: 'translateX({{start}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\r\n                ],\r\n                { optional: true }\r\n            ),\r\n            query(\r\n                ':leave',\r\n                [\r\n                    style({ transform: 'translateX({{end}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{start}})' }))])\r\n                ],\r\n                { optional: true }\r\n            )\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInTop = trigger('cuiSlideInTop', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'translate3d(0,{{start}},0)', pointerEvents: 'none' }),\r\n            animate(TRANSITION, style({ transform: 'translate3d(0,{{end}},0)' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'translate3d(0,{{end}},0)' }),\r\n            animate(TRANSITION, style({ transform: 'translate3d(0,{{start}},0)' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInTopList = trigger('cuiSlideInTopList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(\r\n                ':enter',\r\n                [\r\n                    style({ transform: 'translateY({{start}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\r\n                ],\r\n                { optional: true }\r\n            ),\r\n            query(\r\n                ':leave',\r\n                [\r\n                    style({ transform: 'translateY({{end}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{start}})' }))])\r\n                ],\r\n                { optional: true }\r\n            )\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInBottom = trigger('cuiSlideInBottom', [\r\n    transition(\r\n        ':enter',\r\n        [\r\n            style({ transform: 'translateY(-{{start}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateY({{end}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    ),\r\n    transition(\r\n        ':leave',\r\n        [\r\n            style({ transform: 'translateY({{end}})' }),\r\n            animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n\r\nexport const cuiSlideInBottomList = trigger('cuiSlideInBottomList', [\r\n    transition(\r\n        '* => *',\r\n        [\r\n            query(\r\n                ':enter',\r\n                [\r\n                    style({ transform: 'translateY(-{{start}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\r\n                ],\r\n                { optional: true }\r\n            ),\r\n            query(\r\n                ':leave',\r\n                [\r\n                    style({ transform: 'translateY({{end}})' }),\r\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))])\r\n                ],\r\n                { optional: true }\r\n            )\r\n        ],\r\n        { params: { end: 0, start: '100%', duration: 300 } }\r\n    )\r\n]);\r\n","import type { AbstractType, ExistingProvider, FactoryProvider, Type } from '@angular/core';\r\nimport { Optional, SkipSelf } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiPoint } from '../types';\r\n\r\nexport abstract class CuiAccessor {\r\n    public abstract readonly type: string;\r\n}\r\n\r\nexport abstract class CuiPositionAccessor extends CuiAccessor {\r\n    /*\r\n     * TODO @deprecated switching from DOMRect to HTMLElement in v5\r\n     */\r\n    public abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint;\r\n}\r\n\r\nexport abstract class CuiRectAccessor extends CuiAccessor {\r\n    public abstract getClientRect(): DOMRect;\r\n}\r\n\r\nexport function cuiProvideAccessor<T extends CuiAccessor>(\r\n    provide: AbstractType<T>,\r\n    type: string,\r\n    fallback: Type<T>\r\n): FactoryProvider {\r\n    return {\r\n        provide,\r\n        deps: [[new SkipSelf(), new Optional(), provide], fallback],\r\n        useFactory: cuiFallbackAccessor<T>(type)\r\n    };\r\n}\r\n\r\nexport function cuiFallbackAccessor<T extends CuiAccessor>(\r\n    type: string\r\n): (accessors: readonly T[] | null, fallback: T) => T {\r\n    return (accessors, fallback) =>\r\n        accessors?.find?.((accessor) => accessor !== fallback && accessor.type === type) || fallback;\r\n}\r\n\r\nexport function cuiPositionAccessorFor(type: string, fallback: Type<CuiPositionAccessor>): FactoryProvider {\r\n    return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiRectAccessorFor(type: string, fallback: Type<CuiRectAccessor>): FactoryProvider {\r\n    return cuiProvideAccessor(CuiRectAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiAsPositionAccessor(accessor: Type<CuiPositionAccessor>): ExistingProvider {\r\n    return cuiProvide(CuiPositionAccessor, accessor, true);\r\n}\r\n\r\nexport function cuiAsRectAccessor(accessor: Type<CuiRectAccessor>): ExistingProvider {\r\n    return cuiProvide(CuiRectAccessor, accessor, true);\r\n}\r\n","import type { ExistingProvider, Type } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport abstract class CuiVehicle {\r\n    public abstract readonly type: string;\r\n    public abstract toggle(value: boolean): void;\r\n}\r\n\r\nexport function cuiAsVehicle(vehicle: Type<CuiVehicle>): ExistingProvider {\r\n    return cuiProvide(CuiVehicle, vehicle, true);\r\n}\r\n","import type { AfterViewInit, ExistingProvider, Type } from '@angular/core';\r\nimport { DestroyRef, Directive, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport { distinctUntilChanged, merge, Observable } from 'rxjs';\r\n\r\nimport { CuiVehicle } from './vehicle';\r\n\r\nexport abstract class CuiDriver extends Observable<boolean> {\r\n    public abstract readonly type: string;\r\n}\r\n\r\nexport function cuiAsDriver(driver: Type<CuiDriver>): ExistingProvider {\r\n    return cuiProvide(CuiDriver, driver, true);\r\n}\r\n\r\n@Directive()\r\nexport abstract class CuiDriverDirective implements AfterViewInit {\r\n    public abstract type: string;\r\n\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly drivers: readonly CuiDriver[] = inject<any>(CuiDriver, { self: true, optional: true }) || [];\r\n\r\n    private readonly vehicles: readonly CuiVehicle[] = inject<any>(CuiVehicle, {\r\n        self: true,\r\n        optional: true\r\n    });\r\n\r\n    public ngAfterViewInit(): void {\r\n        const vehicle = this.vehicles?.find(({ type }) => type === this.type);\r\n\r\n        merge(...this.drivers.filter(({ type }) => type === this.type))\r\n            .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((value) => {\r\n                vehicle?.toggle(value);\r\n            });\r\n    }\r\n}\r\n","import { inject, Injectable, NgZone } from '@angular/core';\r\nimport { CUI_ANIMATION_FRAME } from '@cuby-ui/cdk';\r\nimport { EMPTY_CLIENT_RECT, cuiInjectElement, cuiZonefree } from '@cuby-ui/cdk';\r\nimport { CuiPositionAccessor } from '../classes';\r\nimport type { CuiPoint } from '../types';\r\nimport { finalize, map, Observable, startWith } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CuiPositionService extends Observable<CuiPoint> {\r\n    private readonly el = cuiInjectElement();\r\n    private readonly accessor = inject(CuiPositionAccessor);\r\n\r\n    constructor() {\r\n        const animationFrame$ = inject(CUI_ANIMATION_FRAME);\r\n        const zone = inject(NgZone);\r\n\r\n        super((subscriber) =>\r\n            animationFrame$\r\n                .pipe(\r\n                    startWith(null),\r\n                    map(() => this.accessor.getPosition(this.el.getBoundingClientRect(), this.el)),\r\n                    cuiZonefree(zone),\r\n                    finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT))\r\n                )\r\n                .subscribe(subscriber)\r\n        );\r\n    }\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nexport type CuiTheme = 'light' | 'dark';\r\n\r\nexport const CUI_THEME_STORAGE_DEFAULT_KEY = 'cuiTheme';\r\n\r\nexport const CUI_DEFAULT_THEME: CuiTheme = 'light';\r\n\r\nexport const CUI_THEME_STORAGE_KEY = cuiCreateToken(CUI_THEME_STORAGE_DEFAULT_KEY);\r\n\r\nexport const CUI_THEME = cuiCreateToken<CuiTheme>(CUI_DEFAULT_THEME);\r\n","import { inject, Injectable } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiTheme } from './theme.options';\r\nimport { CUI_THEME, CUI_THEME_STORAGE_KEY } from './theme.options';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiThemeService extends BehaviorSubject<CuiTheme> {\r\n    private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n    private readonly key = inject(CUI_THEME_STORAGE_KEY);\r\n\r\n    constructor() {\r\n        super(\r\n            (inject(CUI_LOCAL_STORAGE).getItem(inject(CUI_THEME_STORAGE_KEY)) as CuiNullable<CuiTheme>) ??\r\n                inject(CUI_THEME)\r\n        );\r\n    }\r\n\r\n    public override next(theme: CuiTheme): void {\r\n        this.localStorage.setItem(this.key, theme);\r\n        super.next(theme);\r\n    }\r\n\r\n    // При работе только двух тем\r\n    public switch(): void {\r\n        this.next(this.value === 'light' ? 'dark' : 'light');\r\n    }\r\n}\r\n","import type { CuiValueOf } from '@cuby-ui/cdk';\r\n\r\nexport const CuiLoadingState = {\r\n    LOADING: 'loading',\r\n    COMPLETED: 'completed',\r\n    INITIAL: 'initial'\r\n} as const;\r\n\r\nexport type CuiLoadingState = CuiValueOf<typeof CuiLoadingState>;\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nimport { CuiLoadingState } from './loader.options';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiLoaderService {\r\n    private readonly RESET_TO_INITIAL_TIME = 1000;\r\n\r\n    private readonly loaderStateSignal = signal<CuiLoadingState>(CuiLoadingState.INITIAL);\r\n\r\n    private requestCount = 0;\r\n    private resetLoadingStateTimerId?: ReturnType<typeof setTimeout>;\r\n\r\n    public readonly loaderState = this.loaderStateSignal.asReadonly();\r\n\r\n    constructor() {\r\n        AngularOutsideLoaderService.setInstance(this);\r\n    }\r\n\r\n    public setLoading(): void {\r\n        this.requestCount++;\r\n        // need to use without queueMicrotask (error)\r\n        queueMicrotask(() => this.loaderStateSignal.set(CuiLoadingState.LOADING));\r\n    }\r\n\r\n    public setCompleted(): void {\r\n        this.requestCount = this.requestCount && this.requestCount - 1;\r\n\r\n        if (this.requestCount) {\r\n            return;\r\n        }\r\n\r\n        return this.loaderStateSignal.set(CuiLoadingState.COMPLETED);\r\n    }\r\n\r\n    public handleCompletedRequest(): void {\r\n        this.setCompleted();\r\n        clearTimeout(this.resetLoadingStateTimerId);\r\n\r\n        this.resetLoadingStateTimerId = setTimeout(() => {\r\n            if (this.requestCount) {\r\n                return;\r\n            }\r\n\r\n            this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n        }, this.RESET_TO_INITIAL_TIME);\r\n    }\r\n\r\n    public reset(): void {\r\n        this.requestCount = 0;\r\n        this.resetLoadingStateTimerId = undefined;\r\n        this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n    }\r\n}\r\n\r\n// NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT\r\nexport class AngularOutsideLoaderService {\r\n    private static instance: CuiLoaderService;\r\n\r\n    public static getInstance(): CuiLoaderService {\r\n        if (!this.instance) {\r\n            throw new Error(\"The instance hasn't been initialized yet\");\r\n        }\r\n\r\n        return this.instance;\r\n    }\r\n\r\n    public static setInstance(instance: CuiLoaderService): void {\r\n        this.instance = instance;\r\n    }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport { CUI_IS_WEBKIT } from '@cuby-ui/cdk';\r\nimport type { CuiPoint } from '../types';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiVisualViewportService {\r\n    private readonly isWebkit = inject(CUI_IS_WEBKIT);\r\n    private readonly win = inject(CUI_WINDOW);\r\n\r\n    // https://bugs.webkit.org/show_bug.cgi?id=207089\r\n    public correct(point: CuiPoint): CuiPoint {\r\n        return this.isWebkit\r\n            ? [\r\n                  point[0] + (this.win.visualViewport?.offsetTop ?? 0),\r\n                  point[1] + (this.win.visualViewport?.offsetLeft ?? 0)\r\n              ]\r\n            : point;\r\n    }\r\n}\r\n","import { inject, signal } from '@angular/core';\r\nimport type { CuiTokenExchangeRequestBody, CuiTokenResponse } from '@cuby-ui/api';\r\nimport { CuiExchangeContextApiService } from '@cuby-ui/api';\r\nimport type { TokenResponse } from 'angular-oauth2-oidc';\r\nimport { OAuthErrorEvent, OAuthService, OAuthSuccessEvent } from 'angular-oauth2-oidc';\r\nimport type { Observable } from 'rxjs';\r\nimport { catchError, from, map, of, switchMap, tap, throwError } from 'rxjs';\r\n\r\nimport type { CuiTokenData } from './token.options';\r\n\r\nabstract class CuiToken extends OAuthService {\r\n    private readonly tokenData = signal<{ [key: string]: CuiTokenData }>({});\r\n\r\n    private readonly CONVERT_TO_SECONDS_CONSTANT = 1000;\r\n\r\n    public getRefreshTokenExpiration(): number {\r\n        const refreshTokenExpiration = this.getTokenDataFromStore(this.getRefreshToken());\r\n\r\n        return refreshTokenExpiration.exp;\r\n    }\r\n\r\n    public getAccessTokenData<T extends CuiTokenData = CuiTokenData>(): T {\r\n        const token = this.getAccessToken();\r\n\r\n        if (!token) {\r\n            throw new Error('No access token found');\r\n        }\r\n\r\n        return this.getTokenDataFromStore(token) as T;\r\n    }\r\n\r\n    public checkIsTokenExpired(): boolean {\r\n        const token = this.getAccessToken();\r\n\r\n        if (!token) {\r\n            return true;\r\n        }\r\n\r\n        return this.checkTokenExpired(this.getAccessTokenExpiration() / this.CONVERT_TO_SECONDS_CONSTANT);\r\n    }\r\n\r\n    public checkIsRefreshTokenExpired(): boolean {\r\n        const token = this.getRefreshToken();\r\n\r\n        if (!token) {\r\n            return true;\r\n        }\r\n\r\n        return this.checkTokenExpired(this.getRefreshTokenExpiration());\r\n    }\r\n\r\n    protected getTokenDataFromStore(token: string): CuiTokenData {\r\n        const tokenData = this.tokenData()[token];\r\n\r\n        if (tokenData) {\r\n            return tokenData;\r\n        }\r\n\r\n        const currentTokenData = this.parseToken(token);\r\n\r\n        this.tokenData.update((prev) => ({ ...prev, [token]: currentTokenData }));\r\n\r\n        return currentTokenData;\r\n    }\r\n\r\n    private parseToken(token: string): CuiTokenData {\r\n        try {\r\n            const base64Url = token.split('.')[1];\r\n            const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n            const jsonPayload = decodeURIComponent(\r\n                window\r\n                    .atob(base64)\r\n                    .split('')\r\n                    .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\r\n                    .join('')\r\n            );\r\n\r\n            return JSON.parse(jsonPayload);\r\n        } catch {\r\n            throw new Error('Invalid token');\r\n        }\r\n    }\r\n\r\n    private checkTokenExpired(expiredTimeInSeconds: number): boolean {\r\n        const currentTime = Date.now() / this.CONVERT_TO_SECONDS_CONSTANT;\r\n\r\n        return currentTime >= expiredTimeInSeconds;\r\n    }\r\n}\r\n\r\nexport class CuiTokenBase extends CuiToken {\r\n    private readonly exchangeContextApiService = inject(CuiExchangeContextApiService);\r\n    private readonly EXCHANGE_TOKEN_VALUE = 'token-exchange';\r\n\r\n    // TODO: override refreshToken with custom refresh token request to the backend\r\n    public override refreshToken(): Promise<TokenResponse> {\r\n        try {\r\n            const tokenData = this.getTokenDataFromStore(this.getRefreshToken());\r\n\r\n            if (tokenData.azp.includes(this.EXCHANGE_TOKEN_VALUE)) {\r\n                return this.refreshExchangedToken();\r\n            }\r\n        } catch (error) {\r\n            this.logger.error('Error refreshing token', error);\r\n        }\r\n\r\n        return super.refreshToken();\r\n    }\r\n\r\n    public refreshExchangedToken(): Promise<CuiTokenResponse> {\r\n        return new Promise((resolve, reject) =>\r\n            this.exchangeContextApiService\r\n                .refresh(this.getRefreshToken())\r\n                .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))\r\n                .subscribe({\r\n                    next: (tokenResponse) => {\r\n                        this.setTokenResponse(tokenResponse);\r\n\r\n                        resolve(tokenResponse);\r\n                    },\r\n                    error: (error) => {\r\n                        this.logger.error('Error refreshing token', error);\r\n                        this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\r\n\r\n                        reject(error);\r\n                    }\r\n                })\r\n        );\r\n    }\r\n\r\n    public exchangeToken(params: CuiTokenExchangeRequestBody): Observable<CuiTokenResponse> {\r\n        return this.exchangeContextApiService.exchange(params).pipe(\r\n            switchMap((tokenResponse) => this.setIdToken(tokenResponse)),\r\n            tap((tokenResponse) => this.setTokenResponse(tokenResponse)),\r\n            catchError((error) => {\r\n                this.logger.error('Error exchanging token', error);\r\n                this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\r\n\r\n                return throwError(() => error);\r\n            })\r\n        );\r\n    }\r\n\r\n    private setTokenResponse(tokenResponse: CuiTokenResponse): void {\r\n        const expiresIn = tokenResponse.expires_in || this.fallbackAccessTokenExpirationTimeInSec!;\r\n\r\n        this.debug('tokenResponse', tokenResponse);\r\n        this.storeAccessTokenResponse(\r\n            tokenResponse.access_token,\r\n            tokenResponse.refresh_token,\r\n            expiresIn,\r\n            tokenResponse.scope\r\n        );\r\n\r\n        this.eventsSubject.next(new OAuthSuccessEvent('token_received'));\r\n        this.eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));\r\n    }\r\n\r\n    private setIdToken(tokenResponse: CuiTokenResponse): Observable<CuiTokenResponse> {\r\n        if (!this.oidc || !tokenResponse.id_token) {\r\n            return of(tokenResponse);\r\n        }\r\n\r\n        return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(\r\n            tap((result) => this.storeIdToken(result)),\r\n            map(() => tokenResponse)\r\n        );\r\n    }\r\n}\r\n","import type { AuthConfig, TokenResponse } from 'angular-oauth2-oidc';\r\nimport { OAuthInfoEvent } from 'angular-oauth2-oidc';\r\nimport { filter } from 'rxjs';\r\n\r\nimport { CuiTokenBase } from './token.service';\r\n\r\nexport abstract class CuiAuthBase extends CuiTokenBase {\r\n    public abstract initAuth(authConfig: AuthConfig): Promise<void>;\r\n\r\n    public override createLoginUrl(\r\n        state?: string,\r\n        loginHint?: string,\r\n        customRedirectUri?: string,\r\n        noPrompt?: boolean,\r\n        params?: object\r\n    ): Promise<string> {\r\n        return super.createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params);\r\n    }\r\n\r\n    public async useCheckTokenFlow(loginCallback: () => void): Promise<TokenResponse | void> {\r\n        const isAccessTokenExpired = this.checkIsTokenExpired();\r\n        const isRefreshTokenExpired = this.checkIsRefreshTokenExpired();\r\n\r\n        if (isRefreshTokenExpired) {\r\n            return loginCallback();\r\n        }\r\n\r\n        if (!isAccessTokenExpired) {\r\n            return;\r\n        }\r\n\r\n        return await this.refreshToken();\r\n    }\r\n\r\n    public initAuthRefreshEvents(loginCallback: () => void): void {\r\n        this.events.pipe(filter((event) => event instanceof OAuthInfoEvent)).subscribe((event) => {\r\n            if (event.type !== 'token_expires' || event.info !== 'access_token') {\r\n                return;\r\n            }\r\n\r\n            if (!this.hasValidAccessToken() || !this.getRefreshToken()) {\r\n                return loginCallback();\r\n            }\r\n\r\n            this.refreshToken();\r\n        });\r\n    }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { inject } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_REDUCED_MOTION = cuiCreateTokenFromFactory(\r\n    () => inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false\r\n);\r\n","import { inject } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_REDUCED_MOTION } from './reduced-motion';\r\n\r\n/**\r\n * Speed of all Taiga UI animations. 1 equals 300ms.\r\n */\r\nexport const CUI_ANIMATIONS_SPEED = cuiCreateTokenFromFactory<number>(() => (inject(CUI_REDUCED_MOTION) ? 0 : 1));\r\n","import type { Provider, Type } from '@angular/core';\r\nimport { inject } from '@angular/core';\r\nimport { CUI_WINDOW, cuiCreateTokenFromFactory, cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiRectAccessor } from '../classes';\r\n\r\n/**\r\n * Viewport accessor\r\n */\r\nexport const CUI_VIEWPORT = cuiCreateTokenFromFactory<CuiRectAccessor>(() => {\r\n    const win = inject(CUI_WINDOW);\r\n\r\n    return {\r\n        type: 'viewport',\r\n        getClientRect() {\r\n            const rect = {\r\n                top: 0,\r\n                left: 0,\r\n                right: win.innerWidth,\r\n                bottom: win.innerHeight,\r\n                width: win.innerWidth,\r\n                height: win.innerHeight,\r\n                x: 0,\r\n                y: 0\r\n            };\r\n\r\n            return {\r\n                ...rect,\r\n                toJSON: () => JSON.stringify(rect)\r\n            };\r\n        }\r\n    };\r\n});\r\n\r\nexport function cuiAsViewport(accessor: Type<CuiRectAccessor>): Provider {\r\n    return cuiProvide(CUI_VIEWPORT, accessor);\r\n}\r\n","import { InjectionToken, inject } from '@angular/core';\r\n\r\nimport type { CuiErrorNotificationService } from '../interfaces/error-notification-service';\r\nimport { CuiAlertService } from '../components';\r\n\r\nclass DefaultErrorNotificationService implements CuiErrorNotificationService {\r\n    private readonly alertService = inject(CuiAlertService);\r\n\r\n    public showError(message: string, options?: Record<string, unknown>): void {\r\n        this.alertService.open(message, { status: 'error', ...options }).subscribe();\r\n    }\r\n}\r\n\r\nexport const CUI_ERROR_NOTIFICATION_SERVICE = new InjectionToken<CuiErrorNotificationService>(\r\n    'CUI_ERROR_NOTIFICATION_SERVICE',\r\n    {\r\n        providedIn: 'root',\r\n        factory: () => new DefaultErrorNotificationService()\r\n    }\r\n);\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const CUI_ERROR_TRANSLATION_PREFIX = new InjectionToken<string>('CUI_ERROR_TRANSLATION_PREFIX', {\r\n    providedIn: 'root',\r\n    factory: () => 'BACKEND.'\r\n});\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type { ShouldHandleErrorPredicate } from '../types';\r\n\r\nexport const CUI_SHOULD_HANDLE_ERROR = new InjectionToken<ShouldHandleErrorPredicate>(\r\n    'CUI_SHOULD_HANDLE_ERROR'\r\n);\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\nimport type { ErrorStrategy } from '../interfaces';\r\nimport { CUI_ERROR_TRANSLATION_PREFIX } from '../tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CuiErrorResolverFactory {\r\n    private readonly nullErrorStrategy = inject(NullErrorStrategy);\r\n    private readonly httpErrorStrategy = inject(HttpErrorStrategy);\r\n    private readonly defaultErrorStrategy = inject(DefaultErrorStrategy);\r\n\r\n    public getErrorStrategy(error: unknown): ErrorStrategy {\r\n        if (error instanceof HttpErrorResponse) {\r\n            return this.httpErrorStrategy;\r\n        }\r\n\r\n        if (error instanceof Error) {\r\n            return this.defaultErrorStrategy;\r\n        }\r\n\r\n        return this.nullErrorStrategy;\r\n    }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nclass NullErrorStrategy implements ErrorStrategy {\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly translatePrefix = inject(CUI_ERROR_TRANSLATION_PREFIX);\r\n\r\n    public getMessage(): string {\r\n        return this.translocoService.translate(`${this.translatePrefix}UNKNOWN_ERROR`);\r\n    }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nclass HttpErrorStrategy implements ErrorStrategy {\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly translatePrefix = inject(CUI_ERROR_TRANSLATION_PREFIX);\r\n\r\n    public getMessage(error: HttpErrorResponse): string {\r\n        if (error.error?.code) {\r\n            return this.translocoService.translate(`${this.translatePrefix}${error.error.code}`);\r\n        }\r\n\r\n        if (error.error?.message) {\r\n            return error.error.message;\r\n        }\r\n\r\n        return error.message;\r\n    }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nclass DefaultErrorStrategy implements ErrorStrategy {\r\n    public getMessage(error: Error): string {\r\n        return error.message;\r\n    }\r\n}\r\n","import type { ErrorHandler } from '@angular/core';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { CuiErrorResolverFactory } from './error-resolver-factory.service';\r\nimport { CUI_ERROR_NOTIFICATION_SERVICE, CUI_SHOULD_HANDLE_ERROR } from '../tokens';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiGlobalErrorHandler implements ErrorHandler {\r\n    private readonly errorNotificationService = inject(CUI_ERROR_NOTIFICATION_SERVICE);\r\n    private readonly cuiErrorResolverFactory = inject(CuiErrorResolverFactory);\r\n    private readonly shouldHandleError = inject(CUI_SHOULD_HANDLE_ERROR, { optional: true });\r\n\r\n    public handleError(error: unknown): void {\r\n        if (this.shouldHandleError && !this.shouldHandleError(error)) {\r\n            console.error(error);\r\n\r\n            return;\r\n        }\r\n\r\n        console.error(error);\r\n\r\n        this.errorNotificationService.showError(this.getErrorMessage(error));\r\n    }\r\n\r\n    private getErrorMessage(error: unknown): string {\r\n        return this.cuiErrorResolverFactory.getErrorStrategy(error).getMessage(error);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiHybridStorageService implements Storage {\r\n    private readonly sessionKeys = new Set(['nonce', 'PKCE_verifier']);\r\n\r\n    public get length(): number {\r\n        return this.getAllKeys().length;\r\n    }\r\n\r\n    public clear(): void {\r\n        localStorage.clear();\r\n        sessionStorage.clear();\r\n    }\r\n\r\n    public getItem(key: string): string | null {\r\n        return this.getStorageForKey(key).getItem(key);\r\n    }\r\n\r\n    public key(index: number): string | null {\r\n        return this.getAllKeys()[index] ?? null;\r\n    }\r\n\r\n    public removeItem(key: string): void {\r\n        this.getStorageForKey(key).removeItem(key);\r\n    }\r\n\r\n    public setItem(key: string, value: string): void {\r\n        this.getStorageForKey(key).setItem(key, value);\r\n    }\r\n\r\n    private getStorageForKey(key: string): Storage {\r\n        return this.sessionKeys.has(key) ? sessionStorage : localStorage;\r\n    }\r\n\r\n    private getAllKeys(): string[] {\r\n        const allKeys = new Set<string>();\r\n\r\n        for (let i = 0; i < localStorage.length; i++) {\r\n            const key = localStorage.key(i);\r\n\r\n            if (key) {\r\n                allKeys.add(key);\r\n            }\r\n        }\r\n\r\n        for (let i = 0; i < sessionStorage.length; i++) {\r\n            const key = sessionStorage.key(i);\r\n\r\n            if (key) {\r\n                allKeys.add(key);\r\n            }\r\n        }\r\n\r\n        return Array.from(allKeys);\r\n    }\r\n}\r\n","export function cuiRemoveSpaces(value: string): string {\r\n    return value.replace(/\\s+/g, '');\r\n}\r\n","export function cuiReplace(value: string, search: string, replace: string): string {\r\n    const regex = new RegExp(search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\r\n\r\n    return value.replace(regex, replace);\r\n}\r\n","import { cuiGetElementObscures } from '@cuby-ui/cdk';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function cuiIsObscured(el: HTMLElement, exceptSelector = 'cui-hints'): boolean {\r\n    return !!cuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\r\n}\r\n","export function cuiOverrideOptions<T>(\r\n    override: Partial<T>,\r\n    fallback: T\r\n): (directive: T | null, options: T | null) => T {\r\n    return (directive, options) => {\r\n        const result: T = directive || { ...(options || fallback) };\r\n\r\n        Object.keys(override).forEach((key) => {\r\n            // Update directive props with new defaults before inputs are processed\r\n            (result as Record<string, unknown>)[key] = override[key as keyof T];\r\n        });\r\n\r\n        return result;\r\n    };\r\n}\r\n","import type { AnimationOptions } from '@angular/animations';\r\n\r\nexport const CUI_ANIMATIONS_DEFAULT_DURATION = 300;\r\n\r\nexport function cuiToAnimationOptions(speed: number, easing?: string): AnimationOptions {\r\n    return {\r\n        value: '',\r\n        params: {\r\n            duration: cuiGetDuration(speed),\r\n            easing\r\n        }\r\n    } as unknown as AnimationOptions;\r\n}\r\n\r\nexport function cuiGetDuration(speed: number): number {\r\n    return speed && CUI_ANIMATIONS_DEFAULT_DURATION / speed;\r\n}\r\n","import type { ValidationErrors } from '@angular/forms';\r\n\r\nconst LEADING_TRAILING_SPACES_REGEX = /^\\s|\\s$/;\r\nconst MULTIPLE_SPACES_REGEX = /\\s{2,}/;\r\n\r\nexport function hasExtraSpaces(value: string): ValidationErrors | null {\r\n    const hasLeadingOrTrailingSpaces = LEADING_TRAILING_SPACES_REGEX.test(value);\r\n    const hasMultipleSpaces = MULTIPLE_SPACES_REGEX.test(value);\r\n\r\n    if (hasLeadingOrTrailingSpaces || hasMultipleSpaces) {\r\n        return { extraSpaces: true };\r\n    }\r\n\r\n    return null;\r\n}\r\n","import type { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport type { Observable } from 'rxjs';\r\nimport { map, timer } from 'rxjs';\r\n\r\nimport { hasExtraSpaces } from './extra-spaces.options';\r\n\r\nexport function asyncExtraSpacesValidators(delay: number): AsyncValidatorFn {\r\n    return ({ value }: AbstractControl): Observable<ValidationErrors | null> => {\r\n        return timer(delay).pipe(map(() => hasExtraSpaces(value)));\r\n    };\r\n}\r\n\r\nexport function syncExtraSpacesValidator(): ValidatorFn {\r\n    return ({ value }: AbstractControl): ValidationErrors | null => hasExtraSpaces(value);\r\n}\r\n","import { Validators } from '@angular/forms';\r\nimport { CuiDefaultValidatorsOptions } from './create-default-validators.options';\r\nimport { asyncExtraSpacesValidators, syncExtraSpacesValidator } from './extra-spaces.validators';\r\n\r\nexport function cuiCreateDefaultValidators({ maxLength = 100, asyncDelay = 700 } = {}): CuiDefaultValidatorsOptions {\r\n    // Need to offset because this delay must be before changing value\r\n    const OFFSET = 1;\r\n\r\n    const adjustedAsyncDelay = asyncDelay - OFFSET;\r\n    const validators: CuiDefaultValidatorsOptions = {\r\n        validators: [Validators.required, Validators.maxLength(maxLength)],\r\n        asyncValidators: []\r\n    };\r\n\r\n    if (asyncDelay) {\r\n        validators.asyncValidators.push(asyncExtraSpacesValidators(adjustedAsyncDelay));\r\n    } else {\r\n        validators.validators.push(syncExtraSpacesValidator());\r\n    }\r\n\r\n    return validators;\r\n}\r\n","export function cuiCheckFixedPosition(element?: HTMLElement | null): boolean {\r\n    return !!element && (isFixed(element) || cuiCheckFixedPosition(element.parentElement));\r\n}\r\n\r\nfunction isFixed(element: HTMLElement): boolean {\r\n    return element.ownerDocument.defaultView?.getComputedStyle(element).getPropertyValue('position') === 'fixed';\r\n}\r\n","import type { Type } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\r\n\r\nimport { CuiTooltipComponent } from './tooltip.component';\r\n\r\n/**\r\n * A component to display a tooltip\r\n */\r\nexport const CUI_TOOLTIP_COMPONENT = cuiCreateTokenFromFactory<Type<unknown>>(() => CuiTooltipComponent);\r\n","import { Injectable } from '@angular/core';\r\nimport type { CuiPortalItem } from '../../types';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * Service for displaying hints/tooltips\r\n */\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiTooltipService extends BehaviorSubject<readonly CuiPortalItem[]> {\r\n    constructor() {\r\n        super([]);\r\n    }\r\n\r\n    public add(directive: CuiPortalItem): void {\r\n        this.next(this.value.concat(directive));\r\n    }\r\n\r\n    public remove(directive: CuiPortalItem): void {\r\n        if (this.value.includes(directive)) {\r\n            this.next(this.value.filter((hint) => hint !== directive));\r\n        }\r\n    }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { CuiDriverDirective } from '../../classes';\r\n\r\n@Directive({\r\n    standalone: true\r\n})\r\nexport class CuiTooltipDriver extends CuiDriverDirective {\r\n    public readonly type = 'hint';\r\n}\r\n","import type { FactoryProvider, OnChanges } from '@angular/core';\r\nimport { Directive, inject, Input, Optional, Self, SkipSelf } from '@angular/core';\r\nimport { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';\r\nimport { cuiOverrideOptions } from '../../utils';\r\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type CuiTooltipDirection =\r\n    | 'bottom-left'\r\n    | 'bottom-right'\r\n    | 'bottom'\r\n    | 'left-bottom'\r\n    | 'left-top'\r\n    | 'left'\r\n    | 'right-bottom'\r\n    | 'right-top'\r\n    | 'right'\r\n    | 'top-left'\r\n    | 'top-right'\r\n    | 'top';\r\n\r\nexport const CUI_TOOLTIP_DIRECTIONS: readonly CuiTooltipDirection[] = [\r\n    'top',\r\n    'top-left',\r\n    'top-right',\r\n    'bottom',\r\n    'bottom-left',\r\n    'bottom-right',\r\n    'left-top',\r\n    'left',\r\n    'left-bottom',\r\n    'right-top',\r\n    'right',\r\n    'right-bottom'\r\n];\r\n\r\nexport interface CuiTooltipOptions {\r\n    readonly appearance: string;\r\n    readonly direction: CuiTooltipDirection | CuiTooltipDirection[];\r\n    readonly hideDelay: number;\r\n    readonly icon: string;\r\n    readonly showDelay: number;\r\n}\r\n\r\n/** Default values for tooltip options */\r\nexport const CUI_TOOLTIP_DEFAULT_OPTIONS: CuiTooltipOptions = {\r\n    direction: 'top',\r\n    showDelay: 500,\r\n    hideDelay: 200,\r\n    appearance: '',\r\n    /** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/\r\n    icon: '@cui.circle-help'\r\n};\r\n\r\n/**\r\n * Default parameters for tooltip directive\r\n */\r\nexport const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);\r\n\r\nexport const cuiTooltipOptionsProvider: (options: Partial<CuiTooltipOptions>) => FactoryProvider = (\r\n    override: Partial<CuiTooltipOptions>\r\n) => ({\r\n    provide: CUI_TOOLTIP_OPTIONS,\r\n    deps: [\r\n        [new Optional(), new Self(), CuiTooltipOptionsDirective],\r\n        [new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS]\r\n    ],\r\n    useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS)\r\n});\r\n\r\n/**\r\n * @deprecated: drop in 5.0\r\n */\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiTooltipContent]',\r\n    providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)]\r\n})\r\nexport class CuiTooltipOptionsDirective implements CuiTooltipOptions, OnChanges {\r\n    private readonly options = inject(CUI_TOOLTIP_OPTIONS, { skipSelf: true });\r\n\r\n    @Input('cuiTooltipContent')\r\n    public content: PolymorpheusContent;\r\n\r\n    @Input('cuiTooltipDirection')\r\n    public direction = this.options.direction;\r\n\r\n    @Input('cuiTooltipAppearance')\r\n    public appearance = this.options.appearance;\r\n\r\n    @Input('cuiTooltipShowDelay')\r\n    public showDelay = this.options.showDelay;\r\n\r\n    @Input('cuiTooltipHideDelay')\r\n    public hideDelay = this.options.hideDelay;\r\n\r\n    public icon = this.options.icon;\r\n\r\n    public readonly change$ = new Subject<void>();\r\n\r\n    public ngOnChanges(): void {\r\n        this.change$.next();\r\n    }\r\n}\r\n","import { Directive, inject, Input } from '@angular/core';\r\nimport { CuiHoveredService, CUI_IS_MOBILE, cuiInjectElement } from '@cuby-ui/cdk';\r\nimport { cuiAsDriver, CuiDriver } from '../../classes';\r\nimport { cuiIsObscured } from '../../utils';\r\nimport { delay, filter, map, merge, of, repeat, Subject, switchMap, takeUntil, tap } from 'rxjs';\r\n\r\nimport type { CuiTooltipOptions } from './tooltip-options.directive';\r\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    providers: [cuiAsDriver(CuiTooltipHover), CuiHoveredService],\r\n    exportAs: 'cuiTooltipHover'\r\n})\r\nexport class CuiTooltipHover extends CuiDriver {\r\n    private readonly isMobile = inject(CUI_IS_MOBILE);\r\n    private readonly el = cuiInjectElement();\r\n    private readonly hovered$ = inject(CuiHoveredService);\r\n    private readonly options = inject(CUI_TOOLTIP_OPTIONS);\r\n    private visible = false;\r\n    private readonly toggle$ = new Subject<boolean>();\r\n    private readonly stream$ = merge(\r\n        this.toggle$.pipe(\r\n            switchMap((visible) =>\r\n                this.isMobile ? of(visible) : of(visible).pipe(delay(visible ? 0 : this.cuiTooltipHideDelay))\r\n            ),\r\n            takeUntil(this.hovered$),\r\n            repeat()\r\n        ),\r\n        this.hovered$.pipe(\r\n            switchMap((visible) =>\r\n                this.isMobile\r\n                    ? of(visible)\r\n                    : of(visible).pipe(delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay))\r\n            ),\r\n            takeUntil(this.toggle$),\r\n            repeat()\r\n        )\r\n    ).pipe(\r\n        filter(() => this.enabled),\r\n        map((value) => value && (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el))),\r\n        tap((visible) => {\r\n            this.visible = visible;\r\n        })\r\n    );\r\n\r\n    private readonly parent = inject(CuiTooltipHover, {\r\n        optional: true,\r\n        skipSelf: true\r\n    });\r\n\r\n    @Input()\r\n    public cuiTooltipShowDelay: CuiTooltipOptions['showDelay'] = this.options.showDelay;\r\n\r\n    @Input()\r\n    public cuiTooltipHideDelay: CuiTooltipOptions['hideDelay'] = this.options.hideDelay;\r\n\r\n    public readonly type = 'hint';\r\n\r\n    public enabled = true;\r\n\r\n    constructor() {\r\n        super((subscriber) => this.stream$.subscribe(subscriber));\r\n    }\r\n\r\n    public toggle(visible = !this.visible): void {\r\n        this.toggle$.next(visible);\r\n        this.parent?.toggle(visible);\r\n    }\r\n}\r\n","import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';\r\nimport { cuiFallbackAccessor, CuiPositionAccessor, CuiRectAccessor } from '../../classes';\r\nimport { CUI_VIEWPORT } from '../../tokens';\r\nimport type { CuiPoint } from '../../types';\r\n\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\nimport type { CuiTooltipDirection, CuiTooltipOptions } from './tooltip-options.directive';\r\nimport { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\r\n\r\nconst GAP = 8;\r\nconst ARROW_OFFSET = 24;\r\nconst TOP = 0;\r\nconst LEFT = 1;\r\n\r\n@Directive({\r\n    standalone: true\r\n})\r\nexport class CuiTooltipPosition extends CuiPositionAccessor {\r\n    private readonly offset = inject(CUI_IS_MOBILE) ? 16 : 5;\r\n    private readonly viewport = inject(CUI_VIEWPORT);\r\n    private readonly accessor = cuiFallbackAccessor<CuiRectAccessor>('hint')(\r\n        inject<any>(CuiRectAccessor),\r\n        inject(CuiTooltipDirective)\r\n    );\r\n\r\n    private readonly points: Record<CuiTooltipDirection, [number, number]> = CUI_TOOLTIP_DIRECTIONS.reduce(\r\n        (acc, direction) => ({ ...acc, [direction]: [0, 0] }),\r\n        {} as Record<CuiTooltipDirection, [number, number]>\r\n    );\r\n\r\n    @Input('cuiTooltipDirection')\r\n    public direction: CuiTooltipOptions['direction'] = inject(CUI_TOOLTIP_OPTIONS).direction;\r\n\r\n    @Output('cuiTooltipDirectionChange')\r\n    public readonly directionChange = new EventEmitter<CuiTooltipDirection>();\r\n\r\n    public readonly type = 'hint';\r\n\r\n    @cuiPure\r\n    public emitDirection(direction: CuiTooltipDirection): void {\r\n        this.directionChange.emit(direction);\r\n    }\r\n\r\n    public getPosition(rect: DOMRect, el?: HTMLElement): CuiPoint {\r\n        const width = el?.clientWidth ?? rect.width;\r\n        const height = el?.clientHeight ?? rect.height;\r\n        const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;\r\n        const leftCenter = hostRect.left + hostRect.width / 2;\r\n        const topCenter = hostRect.top + hostRect.height / 2;\r\n\r\n        this.points['top-left'][TOP] = hostRect.top - height - this.offset;\r\n        this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\r\n        this.points.top[TOP] = this.points['top-left'][TOP];\r\n        this.points.top[LEFT] = leftCenter - width / 2;\r\n        this.points['top-right'][TOP] = this.points['top-left'][TOP];\r\n        this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\r\n\r\n        this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\r\n        this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\r\n        this.points.bottom[TOP] = this.points['bottom-left'][TOP];\r\n        this.points.bottom[LEFT] = this.points.top[LEFT];\r\n        this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\r\n        this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\r\n\r\n        this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\r\n        this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\r\n        this.points.left[TOP] = topCenter - height / 2;\r\n        this.points.left[LEFT] = this.points['left-top'][LEFT];\r\n        this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\r\n        this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\r\n\r\n        this.points['right-top'][TOP] = this.points['left-top'][TOP];\r\n        this.points['right-top'][LEFT] = hostRect.right + this.offset;\r\n        this.points.right[TOP] = this.points.left[TOP];\r\n        this.points.right[LEFT] = this.points['right-top'][LEFT];\r\n        this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\r\n        this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\r\n\r\n        const priorityDirections = Array.isArray(this.direction) ? this.direction : [this.direction];\r\n        const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);\r\n\r\n        const direction = sortedDirections.find((direction) =>\r\n            this.checkPosition(this.points[direction], width, height)\r\n        );\r\n\r\n        this.emitDirection(direction || this.fallback);\r\n\r\n        return this.points[direction || this.fallback];\r\n    }\r\n\r\n    private get fallback(): CuiTooltipDirection {\r\n        return this.points.top[TOP] > this.viewport.getClientRect().bottom - this.points.bottom[TOP] ? 'top' : 'bottom';\r\n    }\r\n\r\n    private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\r\n        const viewport = this.viewport.getClientRect();\r\n\r\n        return top > GAP && left > GAP && top + height < viewport.bottom - GAP && left + width < viewport.right - GAP;\r\n    }\r\n}\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { Directive, inject, INJECTOR, Input, signal } from '@angular/core';\r\nimport { cuiInjectElement, CuiActiveZone } from '@cuby-ui/cdk';\r\nimport type { CuiRectAccessor, CuiVehicle } from '../../classes';\r\nimport { cuiAsRectAccessor, cuiAsVehicle } from '../../classes';\r\nimport type { CuiPortalItem } from '../../types';\r\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\r\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\r\n\r\nimport { CUI_TOOLTIP_COMPONENT } from './tooltip.providers';\r\nimport { CuiTooltipService } from './tooltip.service';\r\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\r\nimport { CuiTooltipHover } from './tooltip-hover.directive';\r\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\r\nimport { CuiTooltipPosition } from './tooltip-position.directive';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiTooltip]:not(ng-container):not(ng-template)',\r\n    providers: [\r\n        cuiAsRectAccessor(CuiTooltipDirective),\r\n        cuiAsVehicle(CuiTooltipDirective),\r\n        {\r\n            provide: PolymorpheusComponent,\r\n            deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],\r\n            useClass: PolymorpheusComponent\r\n        }\r\n    ],\r\n    hostDirectives: [\r\n        CuiTooltipDriver,\r\n        {\r\n            directive: CuiTooltipHover,\r\n            inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay']\r\n        },\r\n        {\r\n            directive: CuiTooltipPosition,\r\n            inputs: ['cuiTooltipDirection'],\r\n            outputs: ['cuiTooltipDirectionChange']\r\n        }\r\n    ]\r\n})\r\nexport class CuiTooltipDirective<C> implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle {\r\n    private readonly service = inject(CuiTooltipService);\r\n\r\n    @Input('cuiTooltipContext')\r\n    public context?: C;\r\n\r\n    @Input('cuiTooltipAppearance')\r\n    public appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;\r\n\r\n    public content = signal<PolymorpheusContent<C>>(null);\r\n    public component = inject(PolymorpheusComponent<unknown>);\r\n    public readonly el = cuiInjectElement();\r\n    public readonly activeZone? = inject(CuiActiveZone, { optional: true });\r\n    public readonly type = 'hint';\r\n\r\n    @Input()\r\n    public set cuiTooltip(content: PolymorpheusContent<C>) {\r\n        this.content.set(content);\r\n\r\n        if (!content) {\r\n            this.toggle(false);\r\n        }\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.toggle(false);\r\n    }\r\n\r\n    public getClientRect(): DOMRect {\r\n        return this.el.getBoundingClientRect();\r\n    }\r\n\r\n    public toggle(show: boolean): void {\r\n        if (show && this.content()) {\r\n            this.service.add(this);\r\n        } else {\r\n            this.service.remove(this);\r\n        }\r\n    }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { EMPTY_CLIENT_RECT, cuiPointToClientRect } from '@cuby-ui/cdk';\r\nimport type { CuiRectAccessor } from '../../classes';\r\nimport { cuiAsDriver, cuiAsRectAccessor } from '../../classes';\r\n\r\nimport { CuiTooltipHover } from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiTooltip][cuiTooltipPointer]',\r\n    providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],\r\n    host: {\r\n        '(mousemove.silent)': 'onMove($event)'\r\n    }\r\n})\r\nexport class CuiTooltipPointer extends CuiTooltipHover implements CuiRectAccessor {\r\n    private currentRect = EMPTY_CLIENT_RECT;\r\n\r\n    public getClientRect(): DOMRect {\r\n        return this.currentRect;\r\n    }\r\n\r\n    protected onMove({ clientX, clientY }: MouseEvent): void {\r\n        this.currentRect = cuiPointToClientRect(clientX, clientY);\r\n    }\r\n}\r\n","import type { WritableSignal } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, Directive, inject, TemplateRef } from '@angular/core';\r\nimport type { CuiContext } from '@cuby-ui/cdk';\r\nimport { cuiParentAnimation } from '../../animations';\r\nimport type { CuiPortalItem } from '../../types';\r\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\r\nimport { injectContext, PolymorpheusComponent, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\r\n\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [PolymorpheusOutlet],\r\n    template: '<ng-container *polymorpheusOutlet=\"context.$implicit.content()\" />',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    animations: [cuiParentAnimation],\r\n    host: { '[@cuiParentAnimation]': '' }\r\n})\r\nexport class CuiTooltipUnstyledComponent {\r\n    protected readonly context =\r\n        injectContext<CuiContext<CuiPortalItem & { content: WritableSignal<PolymorpheusContent> }>>();\r\n}\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: 'ng-template[cuiTooltip]'\r\n})\r\nexport class CuiTooltipUnstyled<C> {\r\n    constructor() {\r\n        const hint = inject(CuiTooltipDirective<C>);\r\n\r\n        hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);\r\n        hint.content.set(inject(TemplateRef<C>));\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { EMPTY_CLIENT_RECT, CuiHoveredService, CuiContext } from '@cuby-ui/cdk';\r\nimport { cuiFadeIn, cuiScaleIn } from '../../animations';\r\nimport { cuiPositionAccessorFor, CuiRectAccessor, cuiRectAccessorFor } from '../../classes';\r\nimport { CuiPositionService, CuiVisualViewportService } from '../../services';\r\nimport { CUI_ANIMATIONS_SPEED, CUI_VIEWPORT } from '../../tokens';\r\nimport { cuiIsObscured, cuiToAnimationOptions } from '../../utils';\r\nimport { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\r\nimport { map, takeWhile } from 'rxjs';\r\n\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\nimport { CuiTooltipHover } from './tooltip-hover.directive';\r\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\r\nimport { CuiTooltipPosition } from './tooltip-position.directive';\r\nimport { CuiTooltipUnstyledComponent } from './tooltip-unstyled.component';\r\nimport { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';\r\n\r\nconst GAP = 8;\r\n\r\nexport const CUI_TOOLTIP_PROVIDERS = [\r\n    CuiPositionService,\r\n    CuiHoveredService,\r\n    cuiPositionAccessorFor('hint', CuiTooltipPosition),\r\n    cuiRectAccessorFor(\r\n        'hint',\r\n        forwardRef(() => CuiTooltipDirective)\r\n    )\r\n];\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'cui-tooltip',\r\n    imports: [PolymorpheusOutlet],\r\n    template: `\r\n        <ng-content />\r\n        <span\r\n            *polymorpheusOutlet=\"content() as text; context: hint.context\"\r\n            [innerHTML]=\"text\"\r\n        ></span>\r\n    `,\r\n    styleUrls: ['./tooltip.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: CUI_TOOLTIP_PROVIDERS,\r\n    animations: [cuiFadeIn, cuiScaleIn],\r\n    host: {\r\n        '[@cuiScaleIn]': 'isMobile ? options : desktop',\r\n        '[@cuiFadeIn]': 'options',\r\n        '[class._untouchable]': 'pointer',\r\n        '[class._mobile]': 'isMobile',\r\n        '[attr.data-appearance]': 'appearance',\r\n        '[attr.cuiTheme]': 'appearance',\r\n        '(document:click)': 'onClick($event.target)'\r\n    }\r\n})\r\nexport class CuiTooltipComponent<C = any> {\r\n    private readonly el = cuiInjectElement();\r\n    private readonly hover = inject(CuiTooltipHover);\r\n    private readonly vvs = inject(CuiVisualViewportService);\r\n    private readonly viewport = inject(CUI_VIEWPORT);\r\n\r\n    protected readonly desktop = { value: '', params: { end: 1, start: 1 } };\r\n    protected readonly options = cuiToAnimationOptions(\r\n        inject(CUI_ANIMATIONS_SPEED),\r\n        'cubic-bezier(0.35, 1.3, 0.25, 1)'\r\n    );\r\n\r\n    protected readonly pointer = inject(CuiTooltipPointer, { optional: true });\r\n    protected readonly accessor = inject(CuiRectAccessor);\r\n    protected readonly hint = injectContext<CuiContext<CuiTooltipDirective<C>>>().$implicit;\r\n    protected readonly isMobile = inject(CUI_IS_MOBILE);\r\n\r\n    protected readonly content =\r\n        this.hint.component.component === CuiTooltipUnstyledComponent ? signal('') : this.hint.content;\r\n\r\n    protected readonly appearance =\r\n        this.hint.appearance || this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');\r\n\r\n    constructor() {\r\n        inject(CuiPositionService)\r\n            .pipe(\r\n                takeWhile(() => this.hint.el.isConnected),\r\n                map((point) => this.vvs.correct(point)),\r\n                takeUntilDestroyed()\r\n            )\r\n            .subscribe({\r\n                next: ([top, left]) => this.update(top, left),\r\n                complete: () => this.hover.toggle(false)\r\n            });\r\n\r\n        inject(CuiHoveredService)\r\n            .pipe(takeUntilDestroyed())\r\n            .subscribe((hover) => this.hover.toggle(hover));\r\n    }\r\n\r\n    protected onClick(target: HTMLElement): void {\r\n        if ((!target.closest('cui-hint') && !this.hint.el.contains(target)) || cuiIsObscured(this.hint.el)) {\r\n            this.hover.toggle(false);\r\n        }\r\n    }\r\n\r\n    @cuiPure\r\n    private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\r\n        this.el.style.top = top;\r\n        this.el.style.left = left;\r\n        this.el.style.setProperty('--top', `${beakTop}%`);\r\n        this.el.style.setProperty('--left', `${beakLeft}%`);\r\n        this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');\r\n    }\r\n\r\n    private update(top: number, left: number): void {\r\n        const { clientHeight, clientWidth } = this.el;\r\n        const rect = this.accessor.getClientRect();\r\n        const viewport = this.viewport.getClientRect();\r\n\r\n        if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\r\n            return;\r\n        }\r\n\r\n        const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);\r\n        const [beakTop, beakLeft] = this.vvs.correct([\r\n            rect.top + rect.height / 2 - top,\r\n            rect.left + rect.width / 2 - safeLeft\r\n        ]);\r\n\r\n        this.apply(\r\n            cuiPx(Math.round(top)),\r\n            cuiPx(Math.round(safeLeft)),\r\n            Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\r\n            Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100)\r\n        );\r\n    }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Directive, inject, Input, NgZone } from '@angular/core';\r\nimport {\r\n    cuiIfMap,\r\n    cuiTypedFromEvent,\r\n    cuiZonefreeScheduler,\r\n    cuiZoneOptimized,\r\n    cuiInjectElement,\r\n    cuiIsPresent,\r\n    cuiPure,\r\n    cuiIsNativeFocused\r\n} from '@cuby-ui/cdk';\r\nimport { cuiAsDriver, CuiDriver } from '../../classes';\r\nimport {\r\n    BehaviorSubject,\r\n    debounce,\r\n    distinctUntilChanged,\r\n    fromEvent,\r\n    map,\r\n    merge,\r\n    of,\r\n    skip,\r\n    startWith,\r\n    switchMap,\r\n    timer\r\n} from 'rxjs';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiTooltipDescribe]',\r\n    providers: [cuiAsDriver(CuiTooltipDescribe)]\r\n})\r\nexport class CuiTooltipDescribe extends CuiDriver {\r\n    private readonly doc = inject(DOCUMENT);\r\n    private readonly el = cuiInjectElement();\r\n    private readonly zone = inject(NgZone);\r\n    private readonly id$ = new BehaviorSubject('');\r\n    private readonly stream$ = this.id$.pipe(\r\n        distinctUntilChanged(),\r\n        cuiIfMap(() => fromEvent(this.doc, 'keydown', { capture: true }), cuiIsPresent),\r\n        switchMap(() =>\r\n            this.focused\r\n                ? of(false)\r\n                : merge(cuiTypedFromEvent(this.doc, 'keyup'), cuiTypedFromEvent(this.element, 'blur')).pipe(\r\n                      map(() => this.focused)\r\n                  )\r\n        ),\r\n        debounce((visible) => (visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null))),\r\n        startWith(false),\r\n        distinctUntilChanged(),\r\n        skip(1),\r\n        cuiZoneOptimized()\r\n    );\r\n\r\n    public readonly type = 'hint';\r\n\r\n    constructor() {\r\n        super((subscriber) => this.stream$.subscribe(subscriber));\r\n    }\r\n\r\n    @Input()\r\n    public set cuiTooltipDescribe(id: string | null | undefined) {\r\n        this.id$.next(id || '');\r\n    }\r\n\r\n    @cuiPure\r\n    private get element(): HTMLElement {\r\n        return this.doc.getElementById(this.id$.value || '') || this.el;\r\n    }\r\n\r\n    private get focused(): boolean {\r\n        return cuiIsNativeFocused(this.element);\r\n    }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { EMPTY_CLIENT_RECT } from '@cuby-ui/cdk';\r\nimport { cuiAsRectAccessor, CuiRectAccessor } from '../../classes';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiTooltip][cuiTooltipHost]',\r\n    providers: [cuiAsRectAccessor(CuiTooltipHost)]\r\n})\r\nexport class CuiTooltipHost extends CuiRectAccessor {\r\n    @Input()\r\n    public cuiTooltipHost?: HTMLElement;\r\n\r\n    public readonly type = 'hint';\r\n\r\n    public getClientRect(): DOMRect {\r\n        return this.cuiTooltipHost?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\r\n    }\r\n}\r\n","import type { OnChanges } from '@angular/core';\r\nimport { Directive, inject, Input } from '@angular/core';\r\nimport { cuiAsDriver, CuiDriver } from '../../classes';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { CuiTooltipHover } from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiTooltip][cuiTooltipManual]',\r\n    providers: [cuiAsDriver(CuiTooltipManual)]\r\n})\r\nexport class CuiTooltipManual extends CuiDriver implements OnChanges {\r\n    private readonly hover = inject(CuiTooltipHover);\r\n    private readonly stream$ = new BehaviorSubject(false);\r\n\r\n    @Input()\r\n    public cuiTooltipManual = false;\r\n\r\n    public readonly type = 'hint';\r\n\r\n    constructor() {\r\n        super((subscriber) => this.stream$.subscribe(subscriber));\r\n        this.hover.enabled = false;\r\n    }\r\n\r\n    public ngOnChanges(): void {\r\n        this.stream$.next(this.cuiTooltipManual);\r\n    }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\n\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiTooltipOverflow]',\r\n    hostDirectives: [\r\n        {\r\n            directive: CuiTooltipDirective,\r\n            inputs: ['cuiTooltipAppearance']\r\n        }\r\n    ],\r\n    host: {\r\n        '(mouseenter)': 'onMouseEnter($event.currentTarget)'\r\n    }\r\n})\r\nexport class CuiTooltipOverflow {\r\n    private readonly hint = inject(CuiTooltipDirective);\r\n\r\n    protected onMouseEnter({ scrollWidth, clientWidth, textContent }: Element): void {\r\n        this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';\r\n    }\r\n}\r\n","import { CuiTooltipComponent } from './tooltip.component';\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\nimport { CuiTooltipDescribe } from './tooltip-describe.directive';\r\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\r\nimport { CuiTooltipHost } from './tooltip-host.directive';\r\nimport { CuiTooltipHover } from './tooltip-hover.directive';\r\nimport { CuiTooltipManual } from './tooltip-manual.directive';\r\nimport { CuiTooltipOptionsDirective } from './tooltip-options.directive';\r\nimport { CuiTooltipOverflow } from './tooltip-overflow.directive';\r\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\r\nimport { CuiTooltipPosition } from './tooltip-position.directive';\r\nimport { CuiTooltipUnstyled } from './tooltip-unstyled.component';\r\n\r\nexport const CuiTooltip = [\r\n    CuiTooltipComponent,\r\n    CuiTooltipDirective,\r\n    CuiTooltipOptionsDirective,\r\n    CuiTooltipUnstyled,\r\n    CuiTooltipDriver,\r\n    CuiTooltipPosition,\r\n    CuiTooltipHover,\r\n    CuiTooltipOverflow,\r\n    CuiTooltipDescribe,\r\n    CuiTooltipHost,\r\n    CuiTooltipManual,\r\n    CuiTooltipPointer\r\n] as const;\r\n","import { NgForOf } from '@angular/common';\r\nimport type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CuiActiveZone } from '@cuby-ui/cdk';\r\nimport { cuiParentAnimation } from '../../animations';\r\nimport type { CuiPortalItem } from '../../types';\r\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\r\n\r\nimport { CuiTooltipService } from './tooltip.service';\r\n\r\n@Component({\r\n    standalone: true,\r\n    selector: 'cui-tooltips',\r\n    imports: [NgForOf, PolymorpheusTemplate, CuiActiveZone, PolymorpheusOutlet],\r\n    templateUrl: './tooltips.template.html',\r\n    styleUrls: ['./tooltips.style.scss'],\r\n    // So that we do not force OnPush on custom hints\r\n    // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\r\n    changeDetection: ChangeDetectionStrategy.Default,\r\n    animations: [cuiParentAnimation],\r\n    host: {\r\n        'aria-live': 'polite'\r\n    }\r\n})\r\nexport class CuiTooltips implements OnInit {\r\n    private readonly hints$ = inject(CuiTooltipService);\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n    protected hints: readonly CuiPortalItem[] = [];\r\n\r\n    public ngOnInit(): void {\r\n        // Due to this view being parallel to app content, `markForCheck` from `async` pipe\r\n        // can happen after view was checked, so calling `detectChanges` instead\r\n        this.hints$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hints) => {\r\n            this.hints = hints;\r\n            this.cdr.detectChanges();\r\n        });\r\n    }\r\n}\r\n","<div\r\n    *ngFor=\"let hint of hints\"\r\n    role=\"tooltip\"\r\n    @cuiParentAnimation\r\n    [cuiActiveZoneParent]=\"hint.activeZone || null\"\r\n>\r\n    <ng-container *polymorpheusOutlet=\"hint.component; context: { $implicit: hint }\" />\r\n</div>\r\n","export const FADE = [{ opacity: 0.06 }, { opacity: 1 }];\r\n","export const MAX_PLACEHOLDER_LENGTH_LIMITER = 11;\r\n","export const MIN_PLACEHOLDER_LENGTH_LIMITER = 5;\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    Directive,\r\n    inject,\r\n    Input,\r\n    computed,\r\n    signal,\r\n    ViewEncapsulation\r\n} from '@angular/core';\r\nimport { cuiInjectElement, cuiWithStyles, CHAR_NO_BREAK_SPACE } from '@cuby-ui/cdk';\r\nimport { CUI_ANIMATIONS_SPEED } from '../../tokens';\r\nimport { cuiGetDuration } from '../../utils';\r\nimport { FADE, MAX_PLACEHOLDER_LENGTH_LIMITER, MIN_PLACEHOLDER_LENGTH_LIMITER } from './constants';\r\n\r\n@Component({\r\n    standalone: true,\r\n    template: '',\r\n    styleUrls: ['./skeleton.style.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        class: 'cui-skeleton-styles'\r\n    }\r\n})\r\nclass CuiSkeletonStyles {}\r\n\r\n@Directive({\r\n    standalone: true,\r\n    selector: '[cuiSkeleton]',\r\n    host: {\r\n        cuiSkeleton: '',\r\n        '[class._skeleton]': 'skeleton()',\r\n        '[attr.data-cui-skeleton]': 'placeholder()'\r\n    }\r\n})\r\nexport class CuiSkeleton {\r\n    private animation?: Animation;\r\n    private readonly el = cuiInjectElement();\r\n    private readonly duration = cuiGetDuration(inject(CUI_ANIMATIONS_SPEED)) * 2;\r\n\r\n    protected readonly nothing = cuiWithStyles(CuiSkeletonStyles);\r\n\r\n    private readonly _skeleton = signal<boolean | number | string>(false);\r\n\r\n    protected readonly placeholder = computed(() => {\r\n        const value = this._skeleton();\r\n\r\n        switch (typeof value) {\r\n            case 'number':\r\n                return Array.from({ length: value })\r\n                    .map(() => CHAR_NO_BREAK_SPACE.repeat(this.getLength()))\r\n                    .join(' ');\r\n            case 'string':\r\n                return value;\r\n            default:\r\n                return null;\r\n        }\r\n    });\r\n    protected readonly skeleton = computed(() => !!this._skeleton());\r\n\r\n    @Input()\r\n    set cuiSkeleton(value: boolean | number | string) {\r\n        this._skeleton.set(value);\r\n\r\n        this.animation?.cancel();\r\n        if (!value) {\r\n            this.animation = this.el.animate?.(FADE, this.duration);\r\n        }\r\n    }\r\n\r\n    private getLength(): number {\r\n        return Math.floor(Math.random() * MAX_PLACEHOLDER_LENGTH_LIMITER) + MIN_PLACEHOLDER_LENGTH_LIMITER;\r\n    }\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { ErrorStatus } from './error-status';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTooltipDirective } from '../../directives';\r\n\r\n@Component({\r\n    selector: 'cui-alert-hint',\r\n    standalone: true,\r\n    imports: [CuiSvgModule, CuiTooltipDirective],\r\n    templateUrl: './alert-hint.component.html',\r\n    styleUrl: './alert-hint.component.scss'\r\n})\r\nexport class AlertHintComponent {\r\n    private readonly DEFAULT_TOOLTIP_TEXT = 'In development';\r\n\r\n    protected readonly IconColor: Record<ErrorStatus, string> = {\r\n        warning: 'var(--cui-warning)',\r\n        error: 'var(--cui-danger)'\r\n    };\r\n\r\n    protected readonly iconColor = computed(() => this.IconColor[this.status()]);\r\n\r\n    public readonly status = input<ErrorStatus>('error');\r\n    public readonly tooltipText = input(this.DEFAULT_TOOLTIP_TEXT, {\r\n        transform: (value: string | string[]) => {\r\n            return typeof value === 'string' ? value : value.join('<br />');\r\n        }\r\n    });\r\n}\r\n","<cui-svg\r\n    [cuiTooltip]=\"tooltipText()\"\r\n    icon=\"cuiIconAlertTriangle\"\r\n    [color]=\"iconColor()\"\r\n    class=\"icon\"\r\n/>\r\n","import { cuiCreateToken, CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport type CuiBadgeVisualStyle = 'light' | 'fill' | 'outline' | 'emphasis' | 'soft';\r\n\r\nexport interface CuiBadgeOptions {\r\n    readonly color: CuiBadgeColor;\r\n    readonly size: CuiSizeSm | CuiSizeMd;\r\n    readonly variant?: CuiNullable<CuiBadgeVisualStyle>;\r\n}\r\n\r\nexport type CuiBadgeColor = CuiBadgeColorSolid | CuiBadgeColorLight | CuiDeprecationColors | CuiBadgeSemanticColor;\r\n\r\nexport type CuiBadgeSemanticColor = 'blue' | 'light-green' | 'lavender' | 'magenta';\r\n\r\nexport type CuiBadgeColorSolid =\r\n    | 'violet-solid'\r\n    | 'yellow-solid'\r\n    | 'orange-solid'\r\n    | 'lavender-solid'\r\n    | 'magenta-solid'\r\n    | 'green-solid'\r\n    | 'black-solid'\r\n    | 'red-solid'\r\n    | 'blue-solid'\r\n    | 'success-solid';\r\n\r\nexport type CuiBadgeColorLight =\r\n    | 'gray'\r\n    | 'dark-gray'\r\n    | 'blue-light'\r\n    | 'yellow-light'\r\n    | 'green-light'\r\n    | 'red-light'\r\n    | 'lavender-light'\r\n    | 'magenta-light'\r\n    | 'violet-light'\r\n    | 'orange-light';\r\n\r\nexport type CuiDeprecationColors = 'light-blue' | 'yellow' | 'green' | 'red' | 'violet' | 'orange';\r\n\r\nexport const CUI_BADGE_DEFAULT_OPTIONS: CuiBadgeOptions = {\r\n    color: 'light-blue',\r\n    size: 'sm',\r\n    variant: 'light'\r\n};\r\n\r\nexport const CUI_BADGE_OPTIONS = cuiCreateToken(CUI_BADGE_DEFAULT_OPTIONS);\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\n\r\nimport type { CuiBadgeOptions, CuiBadgeVisualStyle } from './badge.options';\r\nimport { CUI_BADGE_OPTIONS } from './badge.options';\r\n\r\n@Component({\r\n    selector: 'cui-badge',\r\n    templateUrl: './badge.template.html',\r\n    styleUrls: ['./badge.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBadgeComponent implements CuiBadgeOptions {\r\n    private readonly options = inject(CUI_BADGE_OPTIONS);\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-color')\r\n    public color = this.options.color;\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-size')\r\n    public size = this.options.size;\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-variant')\r\n    public variant: CuiNullable<CuiBadgeVisualStyle> = this.options.variant;\r\n}\r\n","<span class=\"c-badge__icon\"><ng-content select=\"[cuiBadgeIcon]\" /></span>\r\n<span class=\"c-badge__body\">\r\n    <ng-content />\r\n</span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule],\r\n    declarations: [CuiBadgeComponent],\r\n    exports: [CuiBadgeComponent]\r\n})\r\nexport class CuiBadgeModule {}\r\n","import type { CuiStatus } from '../../types';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type CuiBannerIconOptions = {\r\n    [k in CuiStatus]: {\r\n        icon: CuiIcon;\r\n        color: string;\r\n    };\r\n};\r\n\r\nexport interface CuiBannerOptions {\r\n    readonly status: CuiStatus;\r\n}\r\n\r\nexport const CUI_BANNER_DEFAULT_OPTIONS: CuiBannerOptions = {\r\n    status: 'info'\r\n};\r\n\r\nexport const CUI_BANNER_OPTIONS = cuiCreateToken(CUI_BANNER_DEFAULT_OPTIONS);\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\r\n\r\nimport type { CuiBannerIconOptions, CuiBannerOptions } from './banner.options';\r\nimport { CUI_BANNER_OPTIONS } from './banner.options';\r\nimport type { CuiTheme } from '../../services';\r\nimport { CuiThemeService } from '../../services';\r\nimport { map } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'cui-banner',\r\n    templateUrl: './banner.template.html',\r\n    styleUrls: ['./banner.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBannerComponent implements CuiBannerOptions {\r\n    private readonly options = inject(CUI_BANNER_OPTIONS);\r\n    protected readonly theme$ = inject(CuiThemeService);\r\n\r\n    protected readonly ICON_OPTIONS: CuiBannerIconOptions = {\r\n        info: {\r\n            icon: 'cuiIconInfo',\r\n            color: 'var(--c-info-icon-color)'\r\n        },\r\n        success: {\r\n            icon: 'cuiIconCheckCircle',\r\n            color: 'var(--cui-success)'\r\n        },\r\n        alert: {\r\n            icon: 'cuiIconAlertTriangle',\r\n            color: 'var(--c-alert-icon-color)'\r\n        },\r\n        error: {\r\n            icon: 'cuiIconAlertCircle',\r\n            color: 'var(--cui-danger)'\r\n        }\r\n    };\r\n    protected readonly THEME_CLOSE_BUTTON_ICON_COLORS: Record<CuiTheme, string> = {\r\n        light: 'var(--cui-gray-500)',\r\n        dark: 'var(--cui-gray-0)'\r\n    };\r\n\r\n    @Input()\r\n    @HostBinding('attr.data-status')\r\n    public status = this.options.status;\r\n\r\n    @Input()\r\n    public isCloseable = true;\r\n\r\n    @Input()\r\n    public label?: string;\r\n\r\n    @Input()\r\n    public actionButtonText?: string;\r\n\r\n    @Output()\r\n    public actionButtonClicked = new EventEmitter<void>();\r\n\r\n    @Output()\r\n    public closed = new EventEmitter<void>();\r\n\r\n    protected onAction(): void {\r\n        this.actionButtonClicked.emit();\r\n    }\r\n\r\n    protected onClose(): void {\r\n        this.closed.emit();\r\n    }\r\n}\r\n","<cui-svg\r\n    *cuiLet=\"ICON_OPTIONS[status] as iconOption\"\r\n    [icon]=\"iconOption.icon\"\r\n    [color]=\"iconOption.color\"\r\n    class=\"c-icon\"\r\n></cui-svg>\r\n<div class=\"c-wrapper\">\r\n    <h2\r\n        *ngIf=\"label\"\r\n        class=\"c-heading\"\r\n    >\r\n        {{ label }}\r\n    </h2>\r\n    <ng-content></ng-content>\r\n    <button\r\n        cuiButton\r\n        *ngIf=\"actionButtonText\"\r\n        appearance=\"link\"\r\n        class=\"c-action\"\r\n        (click)=\"onAction()\"\r\n    >\r\n        {{ actionButtonText }}\r\n    </button>\r\n</div>\r\n<button\r\n    *ngIf=\"isCloseable\"\r\n    class=\"c-button\"\r\n    (click)=\"onClose()\"\r\n>\r\n    @if (theme$ | async; as theme) {\r\n        <cui-svg\r\n            icon=\"cuiIconX\"\r\n            [color]=\"THEME_CLOSE_BUTTON_ICON_COLORS[theme]\"\r\n        />\r\n    }\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiBannerComponent } from './banner.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiLetDirective, CuiSvgModule, CuiButtonModule],\r\n    declarations: [CuiBannerComponent],\r\n    exports: [CuiBannerComponent]\r\n})\r\nexport class CuiBannerModule {}\r\n","import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\r\n\r\nimport { CuiItemDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n    selector: 'cui-breadcrumbs',\r\n    templateUrl: './breadcrumbs.template.html',\r\n    styleUrls: ['./breadcrumbs.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbsComponent {\r\n    @ContentChildren(CuiItemDirective, { read: TemplateRef })\r\n    protected readonly breadcrumbs!: QueryList<TemplateRef<unknown>>;\r\n}\r\n","<ng-container *ngIf=\"breadcrumbs.changes | async\" />\r\n<ng-container *ngFor=\"let breadcrumb of breadcrumbs; let isLast = last\">\r\n    <ng-container *ngTemplateOutlet=\"breadcrumb\" />\r\n    <cui-svg\r\n        *ngIf=\"!isLast\"\r\n        icon=\"cuiIconSlashDivider\"\r\n        color=\"var(--cui-base-500)\"\r\n    />\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: '[cuiBreadcrumb]',\r\n    templateUrl: './breadcrumb.template.html',\r\n    styleUrls: ['./breadcrumb.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbComponent {\r\n    @Input()\r\n    public isLast = false;\r\n}\r\n","<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBreadcrumbsComponent } from './breadcrumbs.component';\r\nimport { CuiBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiSvgModule],\r\n    declarations: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent],\r\n    exports: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent]\r\n})\r\nexport class CuiBreadcrumbsModule {}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-button-group',\r\n    templateUrl: './button-group.template.html',\r\n    styleUrls: ['./button-group.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonGroupComponent {}\r\n","<ng-content select=\"button[cuiButton], a[cuiButton]\"></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiButtonGroupComponent } from './button-group.component';\r\n\r\n@NgModule({\r\n    declarations: [CuiButtonGroupComponent],\r\n    exports: [CuiButtonGroupComponent]\r\n})\r\nexport class CuiButtonGroupModule {}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'input[type=\"checkbox\"][cuiCheckbox]',\r\n    template: '',\r\n    styleUrls: ['./checkbox.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckboxComponent {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiCheckboxComponent } from './checkbox.component';\r\n\r\n@NgModule({\r\n    declarations: [CuiCheckboxComponent],\r\n    exports: [CuiCheckboxComponent]\r\n})\r\nexport class CuiCheckboxModule {}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiTooltipDirective } from '../../directives';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@Component({\r\n    selector: 'header[cuiContentHeader]',\r\n    imports: [CuiSvgModule, CuiTooltipDirective],\r\n    templateUrl: './content-header.component.html',\r\n    styleUrl: './content-header.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ContentHeaderComponent {\r\n    public readonly heading = input.required<string>();\r\n    public readonly subheading = input<string>();\r\n    public readonly tooltip = input<string>();\r\n}\r\n","<div class=\"wrapper\">\r\n    <span class=\"heading\">\r\n        {{ heading() }}\r\n\r\n        @if (tooltip(); as tooltip) {\r\n            <cui-svg\r\n                icon=\"cuiIconQuestionCircleBold\"\r\n                [cuiTooltip]=\"tooltip\"\r\n            />\r\n        }\r\n    </span>\r\n\r\n    @if (subheading(); as subheading) {\r\n        <h2 class=\"subheading\">{{ subheading }}</h2>\r\n    }\r\n</div>\r\n\r\n<ng-content />\r\n","import { ChangeDetectionStrategy, Component, computed, effect, input, output, signal } from '@angular/core';\r\n\r\nimport { CuiButtonModule } from '../button';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\nimport type { CuiDateRangeCalendarMode } from './date-range-calendar.interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-date-range-calendar',\r\n    standalone: true,\r\n    imports: [CuiButtonModule, CuiSvgModule],\r\n    templateUrl: './date-range-calendar.template.html',\r\n    styleUrls: ['./date-range-calendar.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDateRangeCalendarComponent {\r\n    /** Selection mode: 'range' for date range, 'single' for single date */\r\n    public readonly mode = input<CuiDateRangeCalendarMode>('range');\r\n\r\n    /** Start date of the range */\r\n    public readonly startDate = input<Date | null>(null);\r\n\r\n    /** End date of the range */\r\n    public readonly endDate = input<Date | null>(null);\r\n\r\n    /** Selected date (for single mode) */\r\n    public readonly selectedDate = input<Date | null>(null);\r\n\r\n    /** Emitted when a date range is applied */\r\n    public readonly rangeSelected = output<{ start: Date; end: Date }>();\r\n\r\n    /** Emitted when a single date is applied */\r\n    public readonly dateSelected = output<Date>();\r\n\r\n    /** Emitted when the user cancels */\r\n    public readonly cancelled = output<void>();\r\n\r\n    /** Currently displayed month */\r\n    protected readonly currentMonth = signal(new Date());\r\n\r\n    /** Temporary start date (during range selection) */\r\n    protected readonly tmpStartDate = signal<Date | null>(null);\r\n\r\n    /** Temporary end date (during range selection) */\r\n    protected readonly tmpEndDate = signal<Date | null>(null);\r\n\r\n    /** Temporary selected date (for single mode) */\r\n    protected readonly tmpSelectedDate = signal<Date | null>(null);\r\n\r\n    /** Week day labels */\r\n    protected readonly weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\r\n\r\n    /** Current month display name */\r\n    protected readonly currentMonthName = computed(() => {\r\n        const date = this.currentMonth();\r\n\r\n        return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\r\n    });\r\n\r\n    /** Calendar days grid */\r\n    protected readonly calendarDays = computed(() => {\r\n        const date = this.currentMonth();\r\n        const year = date.getFullYear();\r\n        const month = date.getMonth();\r\n\r\n        const firstDay = new Date(year, month, 1);\r\n        const lastDay = new Date(year, month + 1, 0);\r\n\r\n        // Get the day of the week for the first day (0 = Sunday, convert so Monday = 0)\r\n        let startDayOfWeek = firstDay.getDay() - 1;\r\n\r\n        if (startDayOfWeek < 0) {\r\n            startDayOfWeek = 6;\r\n        }\r\n\r\n        const days: { date: Date; isCurrentMonth: boolean }[] = [];\r\n\r\n        // Add previous month's trailing days\r\n        const prevMonthLastDay = new Date(year, month, 0).getDate();\r\n\r\n        for (let i = startDayOfWeek - 1; i >= 0; i--) {\r\n            days.push({\r\n                date: new Date(year, month - 1, prevMonthLastDay - i),\r\n                isCurrentMonth: false\r\n            });\r\n        }\r\n\r\n        // Add current month's days\r\n        for (let i = 1; i <= lastDay.getDate(); i++) {\r\n            days.push({\r\n                date: new Date(year, month, i),\r\n                isCurrentMonth: true\r\n            });\r\n        }\r\n\r\n        // Add next month's leading days to fill the grid (6 rows x 7 days = 42)\r\n        const remainingDays = 42 - days.length;\r\n\r\n        for (let i = 1; i <= remainingDays; i++) {\r\n            days.push({\r\n                date: new Date(year, month + 1, i),\r\n                isCurrentMonth: false\r\n            });\r\n        }\r\n\r\n        return days;\r\n    });\r\n\r\n    constructor() {\r\n        // Initialize temporary values from inputs via effect (signal inputs are not resolved in constructor)\r\n        effect(() => {\r\n            if (this.mode() === 'range') {\r\n                const start = this.startDate();\r\n                const end = this.endDate();\r\n\r\n                if (start) {\r\n                    this.tmpStartDate.set(start);\r\n                    this.currentMonth.set(new Date(start.getFullYear(), start.getMonth(), 1));\r\n                }\r\n\r\n                if (end) {\r\n                    this.tmpEndDate.set(end);\r\n                }\r\n            } else {\r\n                const selected = this.selectedDate();\r\n\r\n                if (selected) {\r\n                    this.tmpSelectedDate.set(selected);\r\n                    this.currentMonth.set(new Date(selected.getFullYear(), selected.getMonth(), 1));\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    protected goToPrevMonth(): void {\r\n        const current = this.currentMonth();\r\n        this.currentMonth.set(new Date(current.getFullYear(), current.getMonth() - 1, 1));\r\n    }\r\n\r\n    protected goToNextMonth(): void {\r\n        const current = this.currentMonth();\r\n        this.currentMonth.set(new Date(current.getFullYear(), current.getMonth() + 1, 1));\r\n    }\r\n\r\n    protected selectDate(date: Date): void {\r\n        if (this.mode() !== 'range') {\r\n            // Single date mode - just select the date\r\n            this.tmpSelectedDate.set(date);\r\n\r\n            return;\r\n        }\r\n\r\n        // Range mode\r\n        const start = this.tmpStartDate();\r\n        const end = this.tmpEndDate();\r\n\r\n        if (!start || (start && end)) {\r\n            // Start a new selection\r\n            this.tmpStartDate.set(date);\r\n            this.tmpEndDate.set(null);\r\n        } else {\r\n            // Complete the selection\r\n            if (date < start) {\r\n                // If selected date is before start, swap them\r\n                this.tmpEndDate.set(start);\r\n                this.tmpStartDate.set(date);\r\n            } else {\r\n                this.tmpEndDate.set(date);\r\n            }\r\n        }\r\n    }\r\n\r\n    protected isSelected(date: Date): boolean {\r\n        if (this.mode() !== 'range') {\r\n            // Single date mode\r\n            const selected = this.tmpSelectedDate();\r\n\r\n            return selected !== null && this.isSameDay(date, selected);\r\n        }\r\n\r\n        // Range mode\r\n        const start = this.tmpStartDate();\r\n        const end = this.tmpEndDate();\r\n\r\n        if (start && this.isSameDay(date, start)) {\r\n            return true;\r\n        }\r\n\r\n        if (end && this.isSameDay(date, end)) {\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    protected isInRange(date: Date): boolean {\r\n        const start = this.tmpStartDate();\r\n        const end = this.tmpEndDate();\r\n\r\n        if (!start || !end) {\r\n            return false;\r\n        }\r\n\r\n        return date > start && date < end;\r\n    }\r\n\r\n    protected isRangeStart(date: Date): boolean {\r\n        const start = this.tmpStartDate();\r\n\r\n        return start !== null && this.isSameDay(date, start);\r\n    }\r\n\r\n    protected isRangeEnd(date: Date): boolean {\r\n        const end = this.tmpEndDate();\r\n\r\n        return end !== null && this.isSameDay(date, end);\r\n    }\r\n\r\n    protected isToday(date: Date): boolean {\r\n        return this.isSameDay(date, new Date());\r\n    }\r\n\r\n    protected apply(): void {\r\n        if (this.mode() !== 'range') {\r\n            // Single date mode\r\n            const selected = this.tmpSelectedDate();\r\n\r\n            if (selected) {\r\n                this.dateSelected.emit(selected);\r\n            }\r\n        } else {\r\n            // Range mode\r\n            const start = this.tmpStartDate();\r\n            const end = this.tmpEndDate();\r\n\r\n            if (start && end) {\r\n                this.rangeSelected.emit({ start, end });\r\n            }\r\n        }\r\n    }\r\n\r\n    protected cancel(): void {\r\n        this.cancelled.emit();\r\n    }\r\n\r\n    protected hasSelection(): boolean {\r\n        if (this.mode() !== 'range') {\r\n            return this.tmpSelectedDate() !== null;\r\n        }\r\n\r\n        return this.tmpStartDate() !== null;\r\n    }\r\n\r\n    private isSameDay(date1: Date, date2: Date): boolean {\r\n        return (\r\n            date1.getFullYear() === date2.getFullYear() &&\r\n            date1.getMonth() === date2.getMonth() &&\r\n            date1.getDate() === date2.getDate()\r\n        );\r\n    }\r\n}\r\n","<div class=\"cui-calendar\">\r\n    <div class=\"cui-calendar__header\">\r\n        <button\r\n            type=\"button\"\r\n            class=\"cui-calendar__nav-btn\"\r\n            (click)=\"goToPrevMonth()\"\r\n        >\r\n            <cui-svg icon=\"cuiIconChevronLeft\" />\r\n        </button>\r\n        <span class=\"cui-calendar__month-name\">{{ currentMonthName() }}</span>\r\n        <button\r\n            type=\"button\"\r\n            class=\"cui-calendar__nav-btn\"\r\n            (click)=\"goToNextMonth()\"\r\n        >\r\n            <cui-svg icon=\"cuiIconChevronRight\" />\r\n        </button>\r\n    </div>\r\n\r\n    <div class=\"cui-calendar__weekdays\">\r\n        @for (day of weekDays; track day) {\r\n            <div class=\"cui-calendar__weekday\">{{ day }}</div>\r\n        }\r\n    </div>\r\n\r\n    <div class=\"cui-calendar__days\">\r\n        @for (day of calendarDays(); track day.date.getTime()) {\r\n            <button\r\n                type=\"button\"\r\n                class=\"cui-calendar__day\"\r\n                [class.cui-calendar__day--other-month]=\"!day.isCurrentMonth\"\r\n                [class.cui-calendar__day--selected]=\"isSelected(day.date)\"\r\n                [class.cui-calendar__day--in-range]=\"isInRange(day.date)\"\r\n                [class.cui-calendar__day--range-start]=\"isRangeStart(day.date)\"\r\n                [class.cui-calendar__day--range-end]=\"isRangeEnd(day.date)\"\r\n                [class.cui-calendar__day--today]=\"isToday(day.date)\"\r\n                (click)=\"selectDate(day.date)\"\r\n            >\r\n                {{ day.date.getDate() }}\r\n            </button>\r\n        }\r\n    </div>\r\n\r\n    <div class=\"cui-calendar__footer\">\r\n        <button\r\n            type=\"button\"\r\n            cuiButton\r\n            appearance=\"secondary\"\r\n            (click)=\"cancel()\"\r\n        >\r\n            Cancel\r\n        </button>\r\n        <button\r\n            type=\"button\"\r\n            cuiButton\r\n            appearance=\"action\"\r\n            [disabled]=\"!hasSelection()\"\r\n            (click)=\"apply()\"\r\n        >\r\n            Apply\r\n        </button>\r\n    </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CuiDateRangeCalendarComponent } from './date-range-calendar.component';\r\n\r\n@NgModule({\r\n    imports: [CuiDateRangeCalendarComponent],\r\n    exports: [CuiDateRangeCalendarComponent]\r\n})\r\nexport class CuiDateRangeCalendarModule {}","export const CUI_ROOT_SELECTOR = 'cui-root';\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\nexport const CUI_DIALOGS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([]));\r\n\r\nexport const CUI_DIALOG_DEFAULT_OPTIONS: CuiDialogOptions = {\r\n    size: 'auto',\r\n    data: undefined,\r\n    dismissible: true\r\n};\r\n\r\nexport const CUI_DIALOG_OPTIONS = cuiCreateToken(CUI_DIALOG_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_DIALOG_CONTEXT = new InjectionToken<CuiPopover<CuiDialogOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CUI_DIALOGS } from './dialog.tokens';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-dialogs',\r\n    templateUrl: './dialogs.template.html',\r\n    styleUrls: ['./dialogs.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CuiDestroyService]\r\n})\r\nexport class CuiDialogsComponent implements OnInit {\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n    protected readonly dialogs$: Observable<ReadonlyArray<CuiPopover<CuiDialogOptions>>> = inject(CUI_DIALOGS);\r\n    protected dialogInjectorCache = new Map<string, Injector>();\r\n    protected dialogInjectors!: ReadonlyArray<Injector>;\r\n\r\n    public ngOnInit(): void {\r\n        this.initDialogsSubscription();\r\n    }\r\n\r\n    protected trackByFn(_: number, dialog: CuiPopover<CuiDialogOptions>): string {\r\n        return dialog.id;\r\n    }\r\n\r\n    protected initDialogsSubscription(): void {\r\n        this.dialogs$.pipe(takeUntil(this.destroy$)).subscribe((dialogs) => {\r\n            this.document.body.style.overflow = dialogs.length ? 'hidden' : '';\r\n            this.dialogInjectors = dialogs.map((dialog) => {\r\n                if (!this.dialogInjectorCache.has(dialog.id)) {\r\n                    this.dialogInjectorCache.set(\r\n                        dialog.id,\r\n                        Injector.create({\r\n                            providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\r\n                            parent: dialog.injector\r\n                        })\r\n                    );\r\n                }\r\n\r\n                return this.dialogInjectorCache.get(dialog.id)!;\r\n            });\r\n\r\n            this.dialogInjectorCache.forEach((_, dialogId) => {\r\n                if (dialogs.find((dialog) => dialog.id === dialogId)) {\r\n                    return;\r\n                }\r\n\r\n                this.dialogInjectorCache.delete(dialogId);\r\n            });\r\n        });\r\n    }\r\n}\r\n","<ng-container *cuiLet=\"dialogs$ | async as dialogs\">\r\n    <ng-container *ngFor=\"let dialog of dialogs; let i = index; trackBy: trackByFn\">\r\n        <ng-container *ngComponentOutlet=\"dialog.component; injector: dialogInjectors[i]\"></ng-container>\r\n    </ng-container>\r\n    <div\r\n        *ngIf=\"dialogs!.length\"\r\n        class=\"c-overlay\"\r\n    ></div>\r\n</ng-container>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { CuiThemeService } from '../../services';\r\nimport { CUI_ROOT_SELECTOR } from './root.options';\r\n\r\n@Component({\r\n    selector: CUI_ROOT_SELECTOR,\r\n    templateUrl: './root.template.html',\r\n    styleUrls: ['./root.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRootComponent implements OnInit {\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly theme$ = inject(CuiThemeService);\r\n\r\n    public ngOnInit(): void {\r\n        this.initThemeSubscription();\r\n    }\r\n\r\n    private initThemeSubscription(): void {\r\n        this.theme$.subscribe((theme) => this.document.documentElement.setAttribute('cuiTheme', theme));\r\n    }\r\n}\r\n","<div class=\"c-content\">\r\n    <ng-content />\r\n</div>\r\n<cui-dialogs />\r\n<cui-alerts />\r\n<cui-tooltips />\r\n","import type { OnInit } from '@angular/core';\r\nimport { HostBinding, HostListener, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ElementRef } from '@angular/core';\r\nimport type { CuiValueOf } from '@cuby-ui/cdk';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiDialogSize } from './dialog.interfaces';\r\nimport { CUI_DIALOG_CONTEXT } from './dialog.tokens';\r\n\r\n// TODO: сделать структурную директиву\r\nconst ContentType = {\r\n    String: 'string',\r\n    Template: 'template',\r\n    Component: 'component'\r\n} as const;\r\n\r\ntype IContentType = CuiValueOf<typeof ContentType>;\r\n\r\n@Component({\r\n    selector: 'cui-dialog',\r\n    templateUrl: './dialog.template.html',\r\n    styleUrls: ['./dialog.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDialogComponent implements OnInit {\r\n    protected readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n    protected readonly context = inject(CUI_DIALOG_CONTEXT);\r\n\r\n    protected readonly LAST_OF_TYPE_SELECTOR = ':last-of-type';\r\n\r\n    protected readonly ContentType = ContentType;\r\n\r\n    protected contentType: IContentType = ContentType.Component;\r\n\r\n    @HostBinding('attr.data-size')\r\n    protected get size(): CuiDialogSize {\r\n        return this.context.size;\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initContentType();\r\n    }\r\n\r\n    protected get contentTemplateRef(): TemplateRef<unknown> {\r\n        return this.context.content as TemplateRef<unknown>;\r\n    }\r\n\r\n    protected get componentType(): Type<unknown> {\r\n        return this.context.content as Type<unknown>;\r\n    }\r\n\r\n    @HostListener('document:keydown.escape', ['$event'])\r\n    protected onEscape(): void {\r\n        if (!this.context.dismissible) {\r\n            return;\r\n        }\r\n\r\n        if (!this.element.matches(this.LAST_OF_TYPE_SELECTOR)) {\r\n            return;\r\n        }\r\n\r\n        this.context.completeWith();\r\n    }\r\n\r\n    private initContentType(): void {\r\n        const content = this.context.content;\r\n\r\n        switch (true) {\r\n            case typeof content === 'string':\r\n                this.contentType = ContentType.String;\r\n\r\n                return;\r\n\r\n            case content instanceof TemplateRef:\r\n                this.contentType = ContentType.Template;\r\n\r\n                return;\r\n        }\r\n    }\r\n}\r\n","<ng-container [ngSwitch]=\"contentType\">\r\n    <ng-container *ngSwitchCase=\"ContentType.String\">\r\n        {{ context.content }}\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"ContentType.Template\">\r\n        <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: context\"></ng-container>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"ContentType.Component\">\r\n        <div class=\"c-component-container\">\r\n            <ng-container *ngComponentOutlet=\"componentType\"></ng-container>\r\n        </div>\r\n    </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-dialog-actions',\r\n    templateUrl: './dialog-actions.template.html',\r\n    styleUrls: ['./dialog-actions.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogActionsComponent {}\r\n","<div class=\"c-divider\"></div>\r\n<div class=\"c-content\">\r\n    <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { PolymorpheusContent } from '@taiga-ui/polymorpheus';\r\nimport { PolymorpheusContext } from '@taiga-ui/polymorpheus/classes/context';\r\n\r\n@Component({\r\n    selector: 'header[cuiDialogHeader][heading]',\r\n    templateUrl: './dialog-header.template.html',\r\n    styleUrls: ['./dialog-header.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogHeaderComponent<T> {\r\n    @Input()\r\n    public heading!: PolymorpheusContent;\r\n\r\n    @Input()\r\n    public headingContext?: T;\r\n\r\n    @Input()\r\n    public subheading?: string;\r\n\r\n    @Output()\r\n    public readonly closed = new EventEmitter<MouseEvent>();\r\n\r\n    protected onClose(event: MouseEvent): void {\r\n        this.closed.emit(event);\r\n    }\r\n}\r\n","<div class=\"c-heading\">\r\n    <ng-container *polymorpheusOutlet=\"heading as heading; context: headingContext\">{{ heading }}</ng-container>\r\n</div>\r\n<button\r\n    cuiButton\r\n    type=\"button\"\r\n    appearance=\"ghost\"\r\n    icon=\"cuiIconClearSm\"\r\n    class=\"c-button\"\r\n    (click)=\"onClose($event)\"\r\n></button>\r\n<span *ngIf=\"subheading\">{{ subheading }}</span>\r\n<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule } from '../button';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport { CuiDialogsComponent } from './dialogs.component';\r\nimport { CuiDialogActionsComponent } from './dialog-actions/dialog-actions.component';\r\nimport { CuiDialogHeaderComponent } from './dialog-header/dialog-header.component';\r\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, PolymorpheusOutlet, CuiLetDirective, CuiButtonModule],\r\n    declarations: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent],\r\n    exports: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent]\r\n})\r\nexport class CuiDialogModule {}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_DIALOG_OPTIONS, CUI_DIALOGS } from './dialog.tokens';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n    useFactory: () => new CuiDialogService(CUI_DIALOGS, CuiDialogComponent, inject(CUI_DIALOG_OPTIONS))\r\n})\r\nexport class CuiDialogService extends CuiPopoverService<CuiDialogOptions> {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiRootComponent } from './root.component';\r\nimport { CuiDialogModule } from '../dialog';\r\nimport { CuiAlertModule } from '../alert';\r\nimport { CuiTooltips } from '../../directives/tooltip';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiDialogModule, CuiAlertModule, CuiTooltips],\r\n    declarations: [CuiRootComponent],\r\n    exports: [CuiRootComponent]\r\n})\r\nexport class CuiRootModule {}\r\n","import type { OnInit, AfterViewInit, TemplateRef, OnDestroy } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    HostListener,\r\n    inject,\r\n    Input,\r\n    ViewContainerRef,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n    CuiDestroyService,\r\n    CuiClickOutsideDirective,\r\n    CuiTargetDirective,\r\n    CUI_WINDOW,\r\n    cuiGetClosestFocusable\r\n} from '@cuby-ui/cdk';\r\nimport { fromEvent, take, takeUntil } from 'rxjs';\r\n\r\nimport type { CuiContextMenuItem } from '../../interfaces';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n    selector: 'cui-context-menu[items][target]',\r\n    templateUrl: './context-menu.component.html',\r\n    styleUrls: ['./context-menu.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CuiDestroyService],\r\n    hostDirectives: [\r\n        CuiClickOutsideDirective,\r\n        {\r\n            directive: CuiTargetDirective,\r\n            inputs: ['ccTarget: target']\r\n        }\r\n    ]\r\n})\r\nexport class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {\r\n    private readonly viewContainerRef = inject(ViewContainerRef);\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly documentElement = this.document.documentElement;\r\n    private readonly window = inject(CUI_WINDOW);\r\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n    private readonly cuiTargetDirective = inject(CuiTargetDirective, { self: true });\r\n\r\n    protected readonly EXTRA_OFFSET_LEFT = 0;\r\n    protected readonly EXTRA_OFFSET_TOP = 0;\r\n\r\n    protected isVisible = false;\r\n    protected node?: HTMLDivElement;\r\n\r\n    @Input()\r\n    public items!: CuiContextMenuItem[];\r\n\r\n    @Input()\r\n    public target!: HTMLElement;\r\n\r\n    @Input()\r\n    public width!: string;\r\n\r\n    @Input()\r\n    public withPaddings = true;\r\n\r\n    @ViewChild('list')\r\n    protected readonly list!: TemplateRef<any>;\r\n\r\n    @ViewChild('backdrop')\r\n    protected readonly backdrop!: TemplateRef<any>;\r\n\r\n    public ngOnInit(): void {\r\n        this.initClickOutsideSubscription();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.clearViewContainerRef();\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        this.initTargetElementListener();\r\n    }\r\n\r\n    protected onSelect(item: CuiContextMenuItem): void {\r\n        this.close();\r\n\r\n        item.command?.();\r\n    }\r\n\r\n    @HostListener('window:resize')\r\n    protected onClose(): void {\r\n        this.close();\r\n    }\r\n\r\n    @HostListener('click', ['$event'])\r\n    protected onStopClickPropagation(event: MouseEvent): void {\r\n        event.stopPropagation();\r\n    }\r\n\r\n    protected trackByFn(_: number, item: CuiContextMenuItem): string {\r\n        return item.label;\r\n    }\r\n\r\n    private initClickOutsideSubscription(): void {\r\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe((target) => {\r\n            if (this.target.contains(target)) {\r\n                return;\r\n            }\r\n\r\n            this.close();\r\n        });\r\n    }\r\n\r\n    private initTargetElementListener(): void {\r\n        this.cuiTargetDirective.clicked.pipe(takeUntil(this.destroy$)).subscribe(this.targetEventListener.bind(this));\r\n    }\r\n\r\n    private initHidingSubscription(): void {\r\n        this.initHidingFromWindowEvent('scroll');\r\n        this.initHidingFromWindowEvent('resize');\r\n    }\r\n\r\n    private initHidingFromWindowEvent(eventName: keyof WindowEventMap): void {\r\n        fromEvent(this.window, eventName)\r\n            .pipe(take(1))\r\n            .subscribe(() => this.close());\r\n    }\r\n\r\n    private targetEventListener(event: MouseEvent): void {\r\n        event.stopPropagation();\r\n        // TODO: нужен для перерисовки ngFor\r\n        this.document.body.click();\r\n\r\n        this.isVisible = !this.isVisible;\r\n\r\n        this.clearViewContainerRef();\r\n\r\n        if (!this.isVisible) {\r\n            return;\r\n        }\r\n\r\n        this.renderList();\r\n        this.changePosition(event.clientX, event.clientY);\r\n        this.initHidingSubscription();\r\n    }\r\n\r\n    private close(): void {\r\n        this.isVisible = false;\r\n\r\n        this.clearViewContainerRef();\r\n    }\r\n\r\n    private renderList(): void {\r\n        const root = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n        const backdropViewRef = this.viewContainerRef.createEmbeddedView(this.backdrop);\r\n        const listViewRef = this.viewContainerRef.createEmbeddedView(this.list);\r\n\r\n        this.node = listViewRef.rootNodes[0];\r\n\r\n        root.append(backdropViewRef.rootNodes[0], this.node!);\r\n    }\r\n\r\n    private changePosition(x: number, y: number): void {\r\n        this.node!.style.visibility = 'hidden';\r\n\r\n        setTimeout(() => {\r\n            const { clientWidth, clientHeight } = this.documentElement;\r\n            const width = this.node!.offsetWidth;\r\n            const height = this.node!.offsetHeight;\r\n            let left = x;\r\n            let top = y;\r\n\r\n            if (left + width > clientWidth) {\r\n                left -= width;\r\n            }\r\n\r\n            if (top + height > clientHeight) {\r\n                top -= height;\r\n            }\r\n\r\n            left = Math.max(left, this.EXTRA_OFFSET_LEFT);\r\n            top = Math.max(top, this.EXTRA_OFFSET_TOP);\r\n\r\n            this.node!.style.left = left + 'px';\r\n            this.node!.style.top = top + 'px';\r\n            this.node!.style.visibility = '';\r\n\r\n            cuiGetClosestFocusable({ initial: this.node!, root: this.node! })?.focus();\r\n        });\r\n    }\r\n\r\n    private clearViewContainerRef(): void {\r\n        this.viewContainerRef.clear();\r\n    }\r\n}\r\n","<ng-template #backdrop>\r\n    <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n\r\n<ng-template #list>\r\n    <div\r\n        class=\"c-container\"\r\n        [style.width]=\"width\"\r\n    >\r\n        <ul\r\n            class=\"c-ul\"\r\n            [class.c-ul_with-padding]=\"withPaddings\"\r\n        >\r\n            <li\r\n                *ngFor=\"let item of items; trackBy: trackByFn\"\r\n                [style.color]=\"item.color\"\r\n            >\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"c-button\"\r\n                    (click)=\"onSelect(item)\"\r\n                >\r\n                    <cui-svg\r\n                        *ngIf=\"item.icon\"\r\n                        [icon]=\"item.icon\"\r\n                        [color]=\"item.color\"\r\n                    ></cui-svg>\r\n                    <span>{{ item.label }}</span>\r\n                </button>\r\n            </li>\r\n        </ul>\r\n    </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiContextMenuComponent } from './context-menu.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiSvgModule],\r\n    declarations: [CuiContextMenuComponent],\r\n    exports: [CuiContextMenuComponent]\r\n})\r\nexport class CuiContextMenuModule {}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostListener,\r\n    inject,\r\n    Input,\r\n    Output,\r\n    signal,\r\n    ViewContainerRef\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nimport type { ChangePositionYParams, CuiDropdownOrientation } from './dropdown.interfaces';\r\nimport { cuiCheckFixedPosition } from '../../utils';\r\n\r\n@Directive({\r\n    selector: '[cuiDropdown]',\r\n    exportAs: 'cuiDropdown',\r\n    standalone: true\r\n})\r\nexport class CuiDropdownDirective implements OnInit, OnDestroy {\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly viewContainerRef = inject(ViewContainerRef);\r\n    private readonly target = inject(ElementRef).nativeElement;\r\n    private readonly window = inject(CUI_WINDOW);\r\n\r\n    private readonly SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n    private readonly CONTAINER_SELECTOR = 'cui-dropdowns';\r\n    private readonly DROPDOWN_SELECTOR = 'cui-dropdown';\r\n\r\n    private container!: Element;\r\n    private element!: HTMLElement;\r\n    private backdrop!: HTMLDivElement;\r\n\r\n    @Input({ required: true, alias: 'cuiDropdown' })\r\n    public content!: TemplateRef<unknown>;\r\n\r\n    @Input()\r\n    public orientation: CuiDropdownOrientation = 'left';\r\n\r\n    @Output()\r\n    public readonly isOpened = new EventEmitter<boolean>();\r\n\r\n    private readonly isOpen = signal(false);\r\n    private readonly targetToggleEventListener = (): void => {\r\n        if (!this.isOpen()) {\r\n            this.open();\r\n\r\n            return;\r\n        }\r\n\r\n        this.close();\r\n    };\r\n    private elementResizeObserver!: ResizeObserver;\r\n\r\n    constructor() {\r\n        this.initTargetElementListener();\r\n    }\r\n\r\n    @HostListener('window:resize')\r\n    protected onResize(): void {\r\n        this.close();\r\n    }\r\n\r\n    @HostListener('document:click', ['$event'])\r\n    protected onClick(event: MouseEvent): void {\r\n        if (!this.isOpen()) {\r\n            return;\r\n        }\r\n\r\n        const target = event.target as HTMLElement;\r\n        const elements = this.document.elementsFromPoint(event.clientX, event.clientY);\r\n        const doesExist = elements.some((element) => this.element.contains(element));\r\n\r\n        if (this.target.contains(target) || this.element.contains(target) || doesExist) {\r\n            return;\r\n        }\r\n\r\n        this.close();\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initContainer();\r\n        this.initDropdown();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.close();\r\n        this.destroyElementResizeObserver();\r\n    }\r\n\r\n    public open(): void {\r\n        this.element.style.position = cuiCheckFixedPosition(this.target) ? 'fixed' : 'absolute';\r\n        this.isOpen.set(true);\r\n        this.container.append(this.backdrop, this.element);\r\n        this.calculateDropdownPosition();\r\n        this.isOpened.emit(true);\r\n    }\r\n\r\n    public close(): void {\r\n        this.isOpen.set(false);\r\n        this.backdrop?.remove();\r\n        this.element?.remove();\r\n        this.isOpened.emit(false);\r\n    }\r\n\r\n    private initContainer(): void {\r\n        const root = this.document.querySelector('cui-dialogs');\r\n        const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);\r\n\r\n        if (container) {\r\n            this.container = container;\r\n\r\n            return;\r\n        }\r\n\r\n        this.container = this.document.createElement(this.CONTAINER_SELECTOR);\r\n\r\n        root?.after(this.container);\r\n    }\r\n\r\n    private initDropdown(): void {\r\n        const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;\r\n\r\n        this.backdrop = this.document.createElement('div');\r\n        this.element = this.document.createElement(this.DROPDOWN_SELECTOR);\r\n\r\n        this.backdrop.style.position = 'fixed';\r\n        this.backdrop.style.inset = '0';\r\n        this.element.style.top = '0';\r\n\r\n        this.element.style.pointerEvents = 'auto';\r\n        this.element.append(...content);\r\n\r\n        this.initResizeObserver();\r\n    }\r\n\r\n    private initTargetElementListener(): void {\r\n        fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);\r\n    }\r\n\r\n    private initResizeObserver(): void {\r\n        this.elementResizeObserver = new ResizeObserver(() => {\r\n            this.changeDropdownYCoordinateIfNeeded();\r\n        });\r\n\r\n        this.elementResizeObserver.observe(this.element);\r\n    }\r\n\r\n    private destroyElementResizeObserver(): void {\r\n        this.elementResizeObserver.disconnect();\r\n    }\r\n\r\n    private changeDropdownYCoordinateIfNeeded(): void {\r\n        const distanceToBottom =\r\n            this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;\r\n\r\n        if (distanceToBottom >= 0) {\r\n            return;\r\n        }\r\n\r\n        this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';\r\n    }\r\n\r\n    private calculateDropdownPosition(): void {\r\n        this.element.style.visibility = 'hidden';\r\n\r\n        setTimeout(() => {\r\n            const targetRect = this.target.getBoundingClientRect();\r\n            const container = this.findScrollableContainer(this.target);\r\n            const containerRect = container.getBoundingClientRect();\r\n            const { clientHeight, clientWidth } = this.document.documentElement;\r\n            const visibleTop = Math.max(targetRect.top, containerRect.top);\r\n            const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);\r\n            const dropdownHeight = this.element.offsetHeight;\r\n            const windowScrollY = !cuiCheckFixedPosition(this.target) ? this.window.scrollY : 0;\r\n\r\n            const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;\r\n            const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;\r\n            const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');\r\n\r\n            this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight, windowScrollY });\r\n            this.changePositionX(orientation, clientWidth, targetRect);\r\n\r\n            this.element.style.visibility = 'visible';\r\n        });\r\n    }\r\n\r\n    private changePositionX(orientation: string, clientWidth: number, targetRect: DOMRect): void {\r\n        switch (orientation) {\r\n            case 'right':\r\n                this.element.style.left = 'auto';\r\n                this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n                break;\r\n\r\n            case 'stretch':\r\n                this.element.style.left = `${targetRect.left}px`;\r\n                this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n                break;\r\n\r\n            default:\r\n                this.element.style.right = 'auto';\r\n                this.element.style.left = `${targetRect.left}px`;\r\n        }\r\n    }\r\n\r\n    private changePositionY({\r\n        shouldListOpenAbove,\r\n        visibleTop,\r\n        visibleBottom,\r\n        dropdownHeight,\r\n        windowScrollY\r\n    }: ChangePositionYParams): void {\r\n        const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;\r\n\r\n        if (shouldListOpenAbove) {\r\n            this.element.style.top = `${windowScrollY + visibleTop - dropdownHeight - offset}px`;\r\n\r\n            return;\r\n        }\r\n\r\n        this.element.style.top = `${windowScrollY + visibleBottom + offset}px`;\r\n    }\r\n\r\n    private findScrollableContainer(element: HTMLElement): HTMLElement {\r\n        let parent = element.parentElement;\r\n\r\n        while (parent) {\r\n            const { overflowY } = window.getComputedStyle(parent);\r\n\r\n            if (overflowY === 'auto' || overflowY === 'scroll') {\r\n                return parent;\r\n            }\r\n\r\n            parent = parent.parentElement;\r\n        }\r\n\r\n        return this.document.body;\r\n    }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n    selector: 'cui-dropdown-wrapper',\r\n    standalone: true,\r\n    imports: [NgIf],\r\n    templateUrl: './dropdown-wrapper.component.html',\r\n    styleUrls: ['./dropdown-wrapper.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDropdownWrapperComponent {\r\n    @Input()\r\n    public title?: string;\r\n\r\n    @Input()\r\n    public width?: string;\r\n\r\n    @Input()\r\n    public maxHeight: string = '350px';\r\n}\r\n","<div\r\n    [style.width]=\"width\"\r\n    [style.max-height]=\"maxHeight\"\r\n    class=\"dropdown\"\r\n>\r\n    <header\r\n        *ngIf=\"title\"\r\n        class=\"header\"\r\n    >\r\n        <h3 class=\"title\">{{ title }}</h3>\r\n        <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n    </header>\r\n\r\n    <div class=\"scrollable-content\">\r\n        <ng-content />\r\n    </div>\r\n    <footer class=\"footer\">\r\n        <ng-content select=\"[ccDropdownFooterContent]\" />\r\n    </footer>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-form-field',\r\n    templateUrl: './form-field.template.html',\r\n    styleUrls: ['./form-field.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFormFieldComponent {}\r\n","<ng-content select=\"label[cuiLabel]\" />\r\n<ng-content />\r\n<div class=\"c-hint-container\">\r\n    <ng-content select=\"cui-hint\" />\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n    declarations: [CuiFormFieldComponent],\r\n    exports: [CuiFormFieldComponent]\r\n})\r\nexport class CuiFormFieldModule {}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiHintType } from '../../types';\r\n\r\n@Component({\r\n    selector: 'cui-hint',\r\n    templateUrl: './hint.template.html',\r\n    styleUrls: ['./hint.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiHintComponent {\r\n    @Input()\r\n    @HostBinding('attr.data-hint-type')\r\n    public hintType: CuiHintType = 'info';\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiHintComponent } from './hint.component';\r\n\r\n@NgModule({\r\n    declarations: [CuiHintComponent],\r\n    exports: [CuiHintComponent]\r\n})\r\nexport class CuiHintModule {}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n    selector: 'button[cuiIconButton][icon], a[cuiIconButton][icon]',\r\n    templateUrl: './icon-button.template.html',\r\n    styleUrls: ['./icon-button.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiIconButtonComponent {\r\n    protected readonly ICON_WIDTH = 16;\r\n    protected readonly ICON_HEIGHT = 16;\r\n    protected readonly ICON_STROKE_WIDTH = 1.5;\r\n\r\n    @Input()\r\n    public icon!: CuiIcon;\r\n\r\n    @Input()\r\n    public color?: string;\r\n\r\n    @Input()\r\n    @HostBinding('style.--icon-hover-color')\r\n    public hoverColor?: string;\r\n\r\n    @HostBinding('class._with-hover-color')\r\n    protected get isWithHoverColor(): boolean {\r\n        return !!this.hoverColor;\r\n    }\r\n}\r\n","<cui-svg\r\n    [icon]=\"icon\"\r\n    [width]=\"ICON_WIDTH\"\r\n    [height]=\"ICON_HEIGHT\"\r\n    [color]=\"color\"\r\n    [strokeWidth]=\"ICON_STROKE_WIDTH\"\r\n    class=\"c-icon\"\r\n></cui-svg>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiIconButtonComponent } from './icon-button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiSvgModule],\r\n    declarations: [CuiIconButtonComponent],\r\n    exports: [CuiIconButtonComponent]\r\n})\r\nexport class CuiIconButtonModule {}\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    HostBinding,\r\n    HostListener,\r\n    inject,\r\n    Input,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';\r\nimport { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n    selector: 'cui-input-number',\r\n    templateUrl: './input-number.template.html',\r\n    styleUrls: ['./input-number.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)]\r\n})\r\nexport class CuiInputNumberComponent implements ControlValueAccessor {\r\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n    protected maskOptions = this.generateMask();\r\n    protected _precision = 0;\r\n    protected _min = Number.MIN_SAFE_INTEGER;\r\n    protected _max = Number.MAX_SAFE_INTEGER;\r\n    protected value!: CuiNullable<string>;\r\n    protected onChange!: CuiOnChange<CuiNullable<number>>;\r\n    protected onTouched!: CuiOnTouched;\r\n\r\n    @Input()\r\n    public set precision(value: number) {\r\n        this._precision = value;\r\n        this.maskOptions = this.generateMask();\r\n    }\r\n\r\n    @Input()\r\n    public set min(value: number) {\r\n        this._min = value;\r\n        this.maskOptions = this.generateMask();\r\n    }\r\n\r\n    @Input()\r\n    public set max(value: number) {\r\n        this._max = value;\r\n        this.maskOptions = this.generateMask();\r\n    }\r\n\r\n    @HostBinding('class._disabled')\r\n    protected isDisabled!: boolean;\r\n\r\n    @ViewChild('input')\r\n    protected input!: ElementRef<HTMLInputElement>;\r\n\r\n    protected get id(): string | undefined {\r\n        return this.cuiTextFieldController.id;\r\n    }\r\n\r\n    protected get placeholder(): string | undefined {\r\n        return this.cuiTextFieldController.placeholder;\r\n    }\r\n\r\n    protected get iconLeft(): CuiIcon | undefined {\r\n        return this.cuiTextFieldController.iconLeft;\r\n    }\r\n\r\n    @HostBinding('attr.data-size')\r\n    protected get size(): CuiSizeSm | CuiSizeMd {\r\n        return this.cuiTextFieldController.size;\r\n    }\r\n\r\n    @HostBinding('class._with-error')\r\n    protected get isError(): boolean {\r\n        return this.cuiTextFieldController.isError;\r\n    }\r\n\r\n    public writeValue(value: CuiNullable<number>): void {\r\n        this.value = value?.toString();\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    public registerOnChange(fn: CuiOnChange<CuiNullable<number>>): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: CuiOnTouched): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        this.isDisabled = isDisabled;\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    protected onInput({ target }: Event): void {\r\n        this.changeModel((target as HTMLInputElement).value);\r\n    }\r\n\r\n    @HostListener('click')\r\n    protected onFocus(): void {\r\n        this.input.nativeElement.focus();\r\n    }\r\n\r\n    private changeModel(value: string): void {\r\n        const parsedValue = maskitoParseNumber(value);\r\n\r\n        this.value = value;\r\n\r\n        this.onChange(Number.isNaN(parsedValue) ? null : parsedValue);\r\n    }\r\n\r\n    private generateMask(): MaskitoOptions {\r\n        return maskitoNumberOptionsGenerator({\r\n            precision: this._precision,\r\n            min: this._min,\r\n            max: this._max\r\n        });\r\n    }\r\n}\r\n","<cui-svg\r\n    *ngIf=\"iconLeft\"\r\n    [icon]=\"iconLeft\"\r\n    color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n    #input\r\n    [ngModel]=\"value\"\r\n    [attr.id]=\"id\"\r\n    [attr.placeholder]=\"placeholder\"\r\n    type=\"text\"\r\n    [maskito]=\"maskOptions\"\r\n    [disabled]=\"isDisabled\"\r\n    class=\"c-input\"\r\n    (input)=\"onInput($event)\"\r\n    (focus)=\"onTouched()\"\r\n/>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputNumberComponent } from './input-number.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\r\n    declarations: [CuiInputNumberComponent],\r\n    exports: [CuiInputNumberComponent, CuiTextFieldControllerModule]\r\n})\r\nexport class CuiInputNumberModule {}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-content-wrapper, [cuiContentWrapper]',\r\n    standalone: true,\r\n    templateUrl: './content-wrapper.component.html',\r\n    styleUrl: './content-wrapper.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiContentWrapperComponent {\r\n    private readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-base-0)';\r\n    private readonly DEFAULT_GAP = 8;\r\n\r\n    public readonly backgroundColor = input(this.DEFAULT_BACKGROUND_COLOR);\r\n    public readonly gap = input(this.DEFAULT_GAP);\r\n\r\n    @HostBinding('style.background')\r\n    protected get _backgroundColor(): string {\r\n        return this.backgroundColor();\r\n    }\r\n\r\n    @HostBinding('style.gap.px')\r\n    protected get _gap(): number {\r\n        return this.gap();\r\n    }\r\n}\r\n","<ng-content />\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'input [cuiGhostInput]',\r\n    standalone: true,\r\n    template: '',\r\n    styleUrl: './ghost-input.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._with-error]': 'isError()'\r\n    }\r\n})\r\nexport class CuiGhostInputComponent {\r\n    public isError = input(false, { transform: booleanAttribute });\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject } from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiInputType, CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n    selector: 'cui-input-password',\r\n    templateUrl: './input-password.template.html',\r\n    styleUrls: ['./input-password.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)]\r\n})\r\nexport class CuiInputPasswordComponent implements ControlValueAccessor {\r\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n    protected isPasswordHidden = true;\r\n    protected value!: CuiNullable<string>;\r\n    protected onChange!: CuiOnChange<string>;\r\n    protected onTouched!: CuiOnTouched;\r\n\r\n    @HostBinding('class._disabled')\r\n    protected isDisabled!: boolean;\r\n\r\n    protected get id(): string | undefined {\r\n        return this.cuiTextFieldController.id;\r\n    }\r\n\r\n    protected get placeholder(): string | undefined {\r\n        return this.cuiTextFieldController.placeholder;\r\n    }\r\n\r\n    protected get iconLeft(): CuiIcon | undefined {\r\n        return this.cuiTextFieldController.iconLeft;\r\n    }\r\n\r\n    protected get isToggleButtonShown(): boolean {\r\n        return !this.isDisabled;\r\n    }\r\n\r\n    protected get icon(): CuiIcon {\r\n        return this.isPasswordHidden ? 'cuiIconEye' : 'cuiIconEyeOff';\r\n    }\r\n\r\n    protected get type(): CuiInputType {\r\n        return this.isPasswordHidden ? 'password' : 'text';\r\n    }\r\n\r\n    protected get buttonTitle(): string {\r\n        return this.isPasswordHidden ? 'Reveal password' : 'Hide password';\r\n    }\r\n\r\n    @HostBinding('attr.data-size')\r\n    protected get size(): CuiSizeSm | CuiSizeMd {\r\n        return this.cuiTextFieldController.size;\r\n    }\r\n\r\n    @HostBinding('class._with-error')\r\n    protected get isError(): boolean {\r\n        return this.cuiTextFieldController.isError;\r\n    }\r\n\r\n    public writeValue(value: CuiNullable<string>): void {\r\n        this.value = value;\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    public registerOnChange(fn: CuiOnChange<string>): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: CuiOnTouched): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        this.isDisabled = isDisabled;\r\n\r\n        if (this.isDisabled) {\r\n            this.isPasswordHidden = true;\r\n        }\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    protected onInput({ target }: Event): void {\r\n        const value = (target as HTMLInputElement).value;\r\n\r\n        this.value = value;\r\n\r\n        this.onChange(value);\r\n    }\r\n\r\n    protected onTogglePasswordVisibility(): void {\r\n        this.isPasswordHidden = !this.isPasswordHidden;\r\n    }\r\n}\r\n","<cui-svg\r\n    *ngIf=\"iconLeft\"\r\n    [icon]=\"iconLeft\"\r\n    color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n    [ngModel]=\"value\"\r\n    [attr.id]=\"id\"\r\n    [attr.placeholder]=\"placeholder\"\r\n    [type]=\"type\"\r\n    [disabled]=\"isDisabled\"\r\n    class=\"c-input\"\r\n    (input)=\"onInput($event)\"\r\n    (focus)=\"onTouched()\"\r\n/>\r\n<button\r\n    *ngIf=\"isToggleButtonShown\"\r\n    [title]=\"buttonTitle\"\r\n    class=\"c-button\"\r\n    (click)=\"onTogglePasswordVisibility()\"\r\n>\r\n    <cui-svg\r\n        [icon]=\"icon\"\r\n        [width]=\"16\"\r\n        [height]=\"16\"\r\n        color=\"var(--cui-base-500)\"\r\n    ></cui-svg>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiInputPasswordComponent } from './input-password.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, FormsModule, CuiSvgModule],\r\n    declarations: [CuiInputPasswordComponent],\r\n    exports: [CuiInputPasswordComponent, CuiTextFieldControllerModule]\r\n})\r\nexport class CuiInputPasswordModule {}\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    HostBinding,\r\n    HostListener,\r\n    inject,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n    selector: 'cui-input-text',\r\n    templateUrl: './input-text.template.html',\r\n    styleUrls: ['./input-text.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)]\r\n})\r\nexport class CuiInputTextComponent implements ControlValueAccessor {\r\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n    protected value!: CuiNullable<string>;\r\n    protected onChange: CuiOnChange<string> = () => {};\r\n    protected onTouched: CuiOnTouched = () => {};\r\n\r\n    @HostBinding('class._disabled')\r\n    protected isDisabled!: boolean;\r\n\r\n    @ViewChild('input')\r\n    protected input!: ElementRef<HTMLInputElement>;\r\n\r\n    protected get id(): string | undefined {\r\n        return this.cuiTextFieldController.id;\r\n    }\r\n\r\n    protected get placeholder(): string | undefined {\r\n        return this.cuiTextFieldController.placeholder;\r\n    }\r\n\r\n    protected get iconLeft(): CuiIcon | undefined {\r\n        return this.cuiTextFieldController.iconLeft;\r\n    }\r\n\r\n    protected get isClearButtonHidden(): boolean {\r\n        return !(this.value && !this.isDisabled);\r\n    }\r\n\r\n    @HostBinding('attr.data-size')\r\n    protected get size(): CuiSizeSm | CuiSizeMd {\r\n        return this.cuiTextFieldController.size;\r\n    }\r\n\r\n    @HostBinding('class._with-error')\r\n    protected get isError(): boolean {\r\n        return this.cuiTextFieldController.isError;\r\n    }\r\n\r\n    public writeValue(value: CuiNullable<string>): void {\r\n        this.value = value;\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    public registerOnChange(fn: CuiOnChange<string>): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: CuiOnTouched): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        this.isDisabled = isDisabled;\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    protected onInput({ target }: Event): void {\r\n        this.changeModel((target as HTMLInputElement).value);\r\n    }\r\n\r\n    protected onClear(): void {\r\n        this.changeModel('');\r\n    }\r\n\r\n    @HostListener('click')\r\n    protected onFocus(): void {\r\n        this.input.nativeElement.focus();\r\n    }\r\n\r\n    private changeModel(value: string): void {\r\n        this.value = value;\r\n\r\n        this.onChange(value);\r\n    }\r\n}\r\n","<cui-svg\r\n    *ngIf=\"iconLeft\"\r\n    [icon]=\"iconLeft\"\r\n    color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n    #input\r\n    [ngModel]=\"value\"\r\n    [attr.id]=\"id\"\r\n    [attr.placeholder]=\"placeholder\"\r\n    type=\"text\"\r\n    [disabled]=\"isDisabled\"\r\n    class=\"c-input\"\r\n    (input)=\"onInput($event)\"\r\n    (focus)=\"onTouched()\"\r\n/>\r\n<button\r\n    type=\"button\"\r\n    class=\"c-button\"\r\n    [class.c-button_hidden]=\"isClearButtonHidden\"\r\n    (click)=\"onClear()\"\r\n>\r\n    <cui-svg\r\n        icon=\"cuiIconClear\"\r\n        color=\"var(--cui-base-300)\"\r\n        class=\"c-close-icon\"\r\n    />\r\n</button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiInputTextComponent } from './input-text.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, FormsModule, CuiSvgModule],\r\n    declarations: [CuiInputTextComponent],\r\n    exports: [CuiInputTextComponent, CuiTextFieldControllerModule]\r\n})\r\nexport class CuiInputModule {}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { CuiTimeMode } from '@cuby-ui/cdk';\r\n\r\nexport interface CuiInputTimeOptions {\r\n    readonly mode: CuiTimeMode;\r\n}\r\n\r\nexport const CUI_INPUT_TIME_DEFAULT_OPTIONS: CuiInputTimeOptions = {\r\n    mode: 'HH:MM'\r\n};\r\n\r\nexport const CUI_INPUT_TIME_OPTIONS = new InjectionToken('', {\r\n    factory: () => CUI_INPUT_TIME_DEFAULT_OPTIONS\r\n});\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    HostBinding,\r\n    HostListener,\r\n    inject,\r\n    Input,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoTimeMode } from '@maskito/kit';\r\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiTime } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_INPUT_TIME_OPTIONS, CuiInputTimeOptions } from './input-time.options';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n    selector: 'cui-input-time',\r\n    templateUrl: './input-time.template.html',\r\n    styleUrls: ['./input-time.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)]\r\n})\r\nexport class CuiInputTimeComponent implements CuiInputTimeOptions, ControlValueAccessor {\r\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n    private readonly options = inject(CUI_INPUT_TIME_OPTIONS);\r\n\r\n    protected _mode = this.options.mode;\r\n    protected maskOptions = this.generateMask(this._mode);\r\n    protected defaultPlaceholder = this._mode.toLowerCase();\r\n    protected value!: CuiNullable<CuiTime>;\r\n    protected onChange!: CuiOnChange<CuiNullable<CuiTime>>;\r\n    protected onTouched!: CuiOnTouched;\r\n\r\n    @Input()\r\n    public set mode(value: CuiInputTimeOptions['mode']) {\r\n        this._mode = value;\r\n        this.maskOptions = this.generateMask(value);\r\n        this.defaultPlaceholder = value.toLowerCase();\r\n    }\r\n\r\n    @HostBinding('class._disabled')\r\n    protected isDisabled!: boolean;\r\n\r\n    @ViewChild('input')\r\n    protected input!: ElementRef<HTMLInputElement>;\r\n\r\n    protected get id(): string | undefined {\r\n        return this.cuiTextFieldController.id;\r\n    }\r\n\r\n    protected get placeholder(): string | undefined {\r\n        return this.cuiTextFieldController.placeholder ?? this.defaultPlaceholder;\r\n    }\r\n\r\n    public get computedValue(): string {\r\n        return this.value ? this.value.toString(this._mode) : '';\r\n    }\r\n\r\n    @HostBinding('attr.data-size')\r\n    protected get size(): CuiSizeSm | CuiSizeMd {\r\n        return this.cuiTextFieldController.size;\r\n    }\r\n\r\n    @HostBinding('class._with-error')\r\n    protected get isError(): boolean {\r\n        return this.cuiTextFieldController.isError;\r\n    }\r\n\r\n    public writeValue(value: CuiNullable<CuiTime>): void {\r\n        this.value = value;\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    public registerOnChange(fn: CuiOnChange<CuiNullable<CuiTime>>): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: CuiOnTouched): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        this.isDisabled = isDisabled;\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    protected onInput(event: Event): void {\r\n        const value = (event.target as HTMLInputElement).value;\r\n\r\n        if (value.length !== this._mode.length) {\r\n            this.onChange(null);\r\n\r\n            return;\r\n        }\r\n\r\n        const time = CuiTime.fromString(value);\r\n\r\n        this.onChange(time);\r\n    }\r\n\r\n    @HostListener('click')\r\n    protected onFocus(): void {\r\n        this.input.nativeElement.focus();\r\n    }\r\n\r\n    private generateMask(mode: MaskitoTimeMode): MaskitoOptions {\r\n        return maskitoTimeOptionsGenerator({ mode });\r\n    }\r\n}\r\n","<cui-svg\r\n    icon=\"cuiIconClock\"\r\n    color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n    #input\r\n    [ngModel]=\"computedValue\"\r\n    [attr.id]=\"id\"\r\n    [attr.placeholder]=\"placeholder\"\r\n    type=\"text\"\r\n    [maskito]=\"maskOptions\"\r\n    [disabled]=\"isDisabled\"\r\n    class=\"c-input\"\r\n    (input)=\"onInput($event)\"\r\n    (focus)=\"onTouched()\"\r\n/>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputTimeComponent } from './input-time.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\r\n    declarations: [CuiInputTimeComponent],\r\n    exports: [CuiInputTimeComponent, CuiTextFieldControllerModule]\r\n})\r\nexport class CuiInputTimeModule {}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'label[cuiLabel]',\r\n    templateUrl: './label.template.html',\r\n    styleUrls: ['./label.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLabelComponent {\r\n    @Input()\r\n    public isRequired = false;\r\n}\r\n","<span class=\"c-wrapper\">\r\n    <ng-content></ng-content>\r\n</span>\r\n<span\r\n    *ngIf=\"isRequired\"\r\n    class=\"c-star\"\r\n>\r\n    *\r\n</span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiLabelComponent } from './label.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule],\r\n    declarations: [CuiLabelComponent],\r\n    exports: [CuiLabelComponent]\r\n})\r\nexport class CuiLabelModule {}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiShape, CuiSize } from './letter-box.interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-letter-box',\r\n    standalone: true,\r\n    templateUrl: './letter-box.component.html',\r\n    styleUrls: ['./letter-box.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLetterBoxComponent {\r\n    protected readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-magenta-500)';\r\n\r\n    @Input({ required: true })\r\n    public letter!: string;\r\n\r\n    @Input()\r\n    public backgroundColor?: string;\r\n\r\n    @Input()\r\n    public size: CuiSize = 'sm';\r\n\r\n    @Input()\r\n    public shape: CuiShape = null;\r\n\r\n    @HostBinding('style.background-color')\r\n    protected get _backgroundColor(): string {\r\n        return this.backgroundColor ?? this.DEFAULT_BACKGROUND_COLOR;\r\n    }\r\n\r\n    @HostBinding('attr.data-size')\r\n    protected get _size(): CuiSize {\r\n        return this.size;\r\n    }\r\n\r\n    @HostBinding('attr.data-shape')\r\n    protected get _shape(): CuiShape {\r\n        return this.shape;\r\n    }\r\n}\r\n","{{ letter }}\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nimport type { CuiDynamicComponent } from './render-dynamic-components.options';\r\n\r\n@Injectable()\r\nexport class CuiRenderDynamicComponentsService {\r\n    private readonly dynamicComponentsSignal = signal<CuiDynamicComponent[]>([]);\r\n\r\n    public readonly dynamicComponents = this.dynamicComponentsSignal.asReadonly();\r\n\r\n    public open(dynamicComponent: CuiDynamicComponent): void {\r\n        this.dynamicComponentsSignal.update((prevDynamicComponents) => [...prevDynamicComponents, dynamicComponent]);\r\n    }\r\n\r\n    public closeLast(): void {\r\n        this.dynamicComponentsSignal.update((prevDynamicComponents) => prevDynamicComponents.slice(0, -1));\r\n    }\r\n\r\n    public closeAllExceptFirst(): void {\r\n        this.dynamicComponentsSignal.update((prevDynamicComponents) => {\r\n            const firstDynamicComponent = prevDynamicComponents[0];\r\n\r\n            return firstDynamicComponent ? [firstDynamicComponent] : [];\r\n        });\r\n    }\r\n\r\n    public closeAll(): void {\r\n        this.dynamicComponentsSignal.set([]);\r\n    }\r\n}\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\n\r\nimport { CuiRenderDynamicComponentsService } from './render-dynamic-components.service';\r\n\r\n@Component({\r\n    selector: 'cui-render-dynamic-components',\r\n    imports: [NgComponentOutlet],\r\n    standalone: true,\r\n    templateUrl: './render-dynamic-components.component.html',\r\n    styleUrl: './render-dynamic-components.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRenderDynamicComponentsComponent {\r\n    private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n    protected readonly dynamicComponents = this.renderDynamicComponentsService.dynamicComponents;\r\n}\r\n","@for (dynamicComponent of dynamicComponents(); let isLast = $last; track $index) {\r\n    <div\r\n        class=\"container\"\r\n        [class.container_hidden]=\"!isLast\"\r\n    >\r\n        <ng-container *ngComponentOutlet=\"dynamicComponent.component; inputs: dynamicComponent.inputs\" />\r\n    </div>\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { CuiBadgeModule } from '../../../components';\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\n\r\n@Component({\r\n    selector: 'cui-inserted',\r\n    imports: [CuiBadgeModule, CuiSvgModule, TranslocoModule],\r\n    templateUrl: './inserted.component.html',\r\n    styleUrl: './inserted.component.scss',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class InsertedComponent {}\r\n","<ng-container *transloco=\"let t\">\r\n    <cui-badge color=\"violet\">\r\n        <cui-svg\r\n            cuiBadgeIcon\r\n            class=\"icon\"\r\n            icon=\"cuiIconVariant\"\r\n        />\r\n        {{ t('INSERTED') }}\r\n    </cui-badge>\r\n</ng-container>\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport { CUI_DIALOG_CONTEXT, CuiDialogModule } from '../../../components/dialog';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiButtonModule } from '../../../components/button';\r\nimport { CuiRenderDynamicComponentsService } from '../../../components/render-dynamic-components';\r\nimport { InsertedComponent } from '../inserted/inserted.component';\r\n\r\n@Component({\r\n    selector: 'cui-modal-header',\r\n    standalone: true,\r\n    imports: [TranslocoDirective, CuiDialogModule, CuiButtonModule, InsertedComponent],\r\n    templateUrl: './modal-header.component.html',\r\n    styleUrl: './modal-header.component.scss'\r\n})\r\nexport class ModalHeaderComponent {\r\n    private readonly context = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n    protected readonly areDynamicComponentsMoreThanTwo = computed(\r\n        () => this.renderDynamicComponentsService.dynamicComponents().length > 1\r\n    );\r\n\r\n    public readonly heading = input.required<string>();\r\n    public readonly isInserted = input(false);\r\n\r\n    protected onClosed(): void {\r\n        this.context.completeWith({ canceled: true });\r\n    }\r\n\r\n    protected onGoBack(): void {\r\n        this.renderDynamicComponentsService.closeLast();\r\n    }\r\n}\r\n","<header\r\n    *transloco=\"let t\"\r\n    cuiDialogHeader\r\n    [heading]=\"headingTemplate\"\r\n    class=\"header\"\r\n    (closed)=\"onClosed()\"\r\n>\r\n    <ng-template #headingTemplate>\r\n        <div\r\n            [title]=\"heading()\"\r\n            class=\"heading\"\r\n        >\r\n            @if (areDynamicComponentsMoreThanTwo()) {\r\n                <button\r\n                    type=\"button\"\r\n                    cuiButton\r\n                    appearance=\"ghost\"\r\n                    icon=\"cuiIconChevronLeftSm\"\r\n                    (click)=\"onGoBack()\"\r\n                ></button>\r\n            }\r\n            <ng-content select=\"[cuiModalHeaderIcon]\" />\r\n            <div class=\"heading__container\">\r\n                <span class=\"heading__text\">{{ heading() }}</span>\r\n                <ng-content select=\"[cuiModalHeaderCrums]\" />\r\n            </div>\r\n            @if (isInserted()) {\r\n                <cui-inserted />\r\n            }\r\n        </div>\r\n    </ng-template>\r\n    <div class=\"header__content\">\r\n        <ng-content select=\"[cuiModalHeaderButtons]\" />\r\n    </div>\r\n</header>\r\n","import { Component, input } from '@angular/core';\r\nimport { CuiContextMenuItem } from '../../interfaces';\r\nimport { CuiContextMenuModule } from '../context-menu';\r\nimport { CuiButtonModule } from '../button';\r\nimport { CuiElementDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n    selector: 'cui-options-button',\r\n    standalone: true,\r\n    imports: [CuiContextMenuModule, CuiButtonModule, CuiElementDirective],\r\n    templateUrl: './options-button.component.html'\r\n})\r\nexport class OptionsButtonComponent {\r\n    public readonly options = input.required<CuiContextMenuItem[]>();\r\n    public readonly hoverBackgroundColor = input<string>();\r\n}\r\n","<button\r\n    #actionButton=\"elementRef\"\r\n    cuiButton\r\n    type=\"button\"\r\n    cuiElement\r\n    appearance=\"ghost\"\r\n    size=\"xxs\"\r\n    icon=\"cuiIconMoreVertical\"\r\n    [style.--cui-base-50]=\"hoverBackgroundColor()\"\r\n></button>\r\n<cui-context-menu\r\n    [items]=\"options()\"\r\n    [target]=\"actionButton.nativeElement\"\r\n/>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'input[type=\"radio\"][cuiRadio]',\r\n    template: '',\r\n    styleUrls: ['./radio.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRadioComponent {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiRadioComponent } from './radio.component';\r\n\r\n@NgModule({\r\n    declarations: [CuiRadioComponent],\r\n    exports: [CuiRadioComponent]\r\n})\r\nexport class CuiRadioModule {}\r\n","import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    inject,\r\n    Input,\r\n    ElementRef,\r\n    ViewChild,\r\n    HostBinding,\r\n    ViewContainerRef,\r\n    HostListener\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport type { CuiOption } from '../../interfaces';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n    selector: 'cui-select[options]',\r\n    templateUrl: './select.template.html',\r\n    styleUrls: ['./select.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n        cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),\r\n        CuiDestroyService\r\n    ],\r\n    hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class CuiSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n    private readonly element = inject(ElementRef).nativeElement;\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n    private readonly viewContainerRef = inject(ViewContainerRef);\r\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n\r\n    protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;\r\n\r\n    protected isOpened = false;\r\n    protected isOptionsListAbove = false;\r\n    protected value!: CuiNullable<unknown>;\r\n    protected onChange!: CuiOnChange<unknown>;\r\n    protected onTouched!: CuiOnTouched;\r\n    protected isDisabled!: boolean;\r\n    protected selectedOption?: CuiOption;\r\n\r\n    @Input()\r\n    public options!: CuiOption[];\r\n\r\n    @Input()\r\n    public defaultOptionText?: string;\r\n\r\n    @ViewChild('button')\r\n    protected readonly button!: ElementRef<HTMLButtonElement>;\r\n\r\n    @ViewChild('getOptionsListHeightContainer')\r\n    protected readonly getOptionsListHeightContainer!: ElementRef<HTMLUListElement>;\r\n\r\n    @ViewChild('backdrop')\r\n    protected readonly backdrop!: TemplateRef<unknown>;\r\n\r\n    @ViewChild('optionsWrapper')\r\n    protected readonly optionsWrapper!: TemplateRef<unknown>;\r\n\r\n    @HostBinding('style.--c-gap')\r\n    protected gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;\r\n\r\n    protected get id(): string | undefined {\r\n        return this.cuiTextFieldController.id;\r\n    }\r\n\r\n    protected get size(): CuiSizeSm | CuiSizeMd {\r\n        return this.cuiTextFieldController.size;\r\n    }\r\n\r\n    protected get placeholder(): string | undefined {\r\n        return this.cuiTextFieldController.placeholder;\r\n    }\r\n\r\n    protected get isError(): boolean {\r\n        return this.cuiTextFieldController.isError;\r\n    }\r\n\r\n    protected trackByFn(_: number, item: CuiOption): string {\r\n        return item.label;\r\n    }\r\n\r\n    public writeValue(value: unknown): void {\r\n        this.value = value;\r\n        // TODO: Непонятно, зачем нужно в construction вторая часть выражения\r\n        this.selectedOption = this.options.find((option) => option.value === value) ?? (value as CuiOption);\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: CuiOnTouched): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initClickOutsideSubscription();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.clearViewContainerRef();\r\n    }\r\n\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        this.isDisabled = isDisabled;\r\n\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    protected onSelect(event: Event, option: CuiOption): void {\r\n        event.stopPropagation();\r\n\r\n        if (option.isDisabled) {\r\n            return;\r\n        }\r\n\r\n        this.value = option.value;\r\n        this.selectedOption = option;\r\n\r\n        this.onChange(this.value);\r\n        this.onSwitch();\r\n        this.onTouched();\r\n        this.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    protected onSwitch(): void {\r\n        if (!this.options.length && !this.defaultOptionText) {\r\n            return;\r\n        }\r\n\r\n        if (!this.isOpened) {\r\n            this.open();\r\n\r\n            return;\r\n        }\r\n\r\n        this.close();\r\n    }\r\n\r\n    protected onClose(): void {\r\n        this.close();\r\n    }\r\n\r\n    @HostListener('window:resize')\r\n    protected onWindowResize(): void {\r\n        this.button.nativeElement.blur();\r\n        this.close();\r\n    }\r\n\r\n    private initClickOutsideSubscription(): void {\r\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n            if (this.isOpened) {\r\n                this.onTouched();\r\n            }\r\n\r\n            this.close();\r\n        });\r\n    }\r\n\r\n    private open(): void {\r\n        this.isOpened = true;\r\n\r\n        const rootElement = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n        const {\r\n            top: elementRectTop,\r\n            left: elementRectLeft,\r\n            bottom: elementRectBottom\r\n        } = this.element.getBoundingClientRect();\r\n        const distanceToBottom =\r\n            this.document.documentElement.clientHeight - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);\r\n        const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);\r\n        const node = embeddedViewRef.rootNodes[0];\r\n        const nodeStyles = node.style;\r\n\r\n        this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;\r\n\r\n        embeddedViewRef.detectChanges();\r\n\r\n        nodeStyles.width = this.element.offsetWidth + 'px';\r\n        nodeStyles.left = window.scrollX + elementRectLeft + 'px';\r\n\r\n        if (this.isOptionsListAbove) {\r\n            nodeStyles.top =\r\n                window.scrollY +\r\n                elementRectTop -\r\n                this.getOptionsListHeightContainer.nativeElement.offsetHeight -\r\n                this.SPACE_BETWEEN_BUTTON_AND_OPTIONS +\r\n                'px';\r\n        } else {\r\n            nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';\r\n        }\r\n\r\n        rootElement.appendChild(this.viewContainerRef.createEmbeddedView(this.backdrop).rootNodes[0]);\r\n        rootElement.appendChild(embeddedViewRef.rootNodes[0]);\r\n    }\r\n\r\n    private close(): void {\r\n        this.isOpened = false;\r\n\r\n        this.clearViewContainerRef();\r\n    }\r\n\r\n    private clearViewContainerRef(): void {\r\n        this.viewContainerRef.clear();\r\n    }\r\n}\r\n","<button\r\n    #button\r\n    type=\"button\"\r\n    [attr.id]=\"id\"\r\n    [attr.data-size]=\"size\"\r\n    [disabled]=\"isDisabled\"\r\n    class=\"c-button\"\r\n    [class.c-button_active]=\"isOpened\"\r\n    [class.c-button_with-error]=\"isError\"\r\n    (click)=\"onSwitch()\"\r\n>\r\n    <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\r\n        {{ selectedOption.label }}\r\n    </ng-container>\r\n    <ng-template #placeholderTemplate>\r\n        <span class=\"c-placeholder\">{{ placeholder }}</span>\r\n    </ng-template>\r\n    <cui-svg\r\n        icon=\"cuiIconChevronDown\"\r\n        color=\"var(--cui-base-500)\"\r\n    />\r\n</button>\r\n<ng-template #backdrop>\r\n    <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n<ng-template #optionsWrapper>\r\n    <div\r\n        cuiFocusTrap\r\n        class=\"c-options__wrapper\"\r\n        [class.c-options__wrapper_top]=\"isOptionsListAbove\"\r\n    >\r\n        <ng-container *ngTemplateOutlet=\"optionsList\" />\r\n    </div>\r\n</ng-template>\r\n<div\r\n    #getOptionsListHeightContainer\r\n    class=\"c-get-options-list-height-container\"\r\n>\r\n    <ng-container *ngTemplateOutlet=\"optionsList\" />\r\n</div>\r\n<ng-template #optionsList>\r\n    <ul\r\n        class=\"c-options\"\r\n        [class.c-options_top]=\"isOptionsListAbove\"\r\n    >\r\n        <ng-container *ngIf=\"options.length; else empty\">\r\n            <li *ngFor=\"let option of options; trackBy: trackByFn\">\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"c-option-button\"\r\n                    [class.c-option-button_selected]=\"selectedOption === option\"\r\n                    [disabled]=\"option.isDisabled\"\r\n                    (click)=\"onSelect($event, option)\"\r\n                >\r\n                    <span>{{ option.label }}</span>\r\n                    <cui-svg\r\n                        *ngIf=\"selectedOption === option\"\r\n                        icon=\"cuiIconCheckSm\"\r\n                        color=\"var(--cui-info)\"\r\n                        class=\"c-option-button__icon\"\r\n                    />\r\n                </button>\r\n            </li>\r\n        </ng-container>\r\n        <ng-template #empty>\r\n            <li *ngIf=\"defaultOptionText\">\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"c-option-button\"\r\n                    (click)=\"onClose()\"\r\n                >\r\n                    {{ defaultOptionText }}\r\n                </button>\r\n            </li>\r\n        </ng-template>\r\n    </ul>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSelectComponent } from './select.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@NgModule({\r\n    imports: [CommonModule, CuiSvgModule, CuiFocusTrapDirective],\r\n    declarations: [CuiSelectComponent],\r\n    exports: [CuiSelectComponent, CuiTextFieldControllerModule]\r\n})\r\nexport class CuiSelectModule {}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-empty-state, [cuiEmptyState]',\r\n    standalone: true,\r\n    templateUrl: './empty-state.component.html',\r\n    styleUrl: './empty-state.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._with-title]': '!!this.title()'\r\n    }\r\n})\r\nexport class CuiEmptyStateComponent {\r\n    public readonly title = input<string>();\r\n    public readonly subtitle = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n    <p class=\"title\">{{ title }}</p>\r\n}\r\n@if (subtitle(); as subtitle) {\r\n    <p class=\"subtitle\">{{ subtitle }}</p>\r\n}\r\n<ng-content />\r\n","export const IS_SIDEBAR_OPENED_STORAGE_KEY = 'is-sidebar-opened';\r\n\r\nexport interface CuiSidebarLink {\r\n    readonly text: string;\r\n}\r\n","import { inject, Injectable, signal } from '@angular/core';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\n\r\nimport { IS_SIDEBAR_OPENED_STORAGE_KEY } from './sidebar.options';\r\nimport { CuiRenderDynamicComponentsService } from '../render-dynamic-components';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiSidebarService extends CuiRenderDynamicComponentsService {\r\n    private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n\r\n    private readonly isOpenedSignal = signal(this.localStorage.getItem(IS_SIDEBAR_OPENED_STORAGE_KEY) === 'true');\r\n    private readonly isHiddenSignal = signal(false);\r\n    private readonly widthSignal = signal<number>(0);\r\n\r\n    public readonly isOpened = this.isOpenedSignal.asReadonly();\r\n    public readonly isHidden = this.isHiddenSignal.asReadonly();\r\n    public readonly width = this.widthSignal.asReadonly();\r\n\r\n    public hide(): void {\r\n        this.isHiddenSignal.set(true);\r\n    }\r\n\r\n    public show(): void {\r\n        this.isHiddenSignal.set(false);\r\n    }\r\n\r\n    public switch(): void {\r\n        this.isOpenedSignal.update((value) => !value);\r\n        this.localStorage.setItem(IS_SIDEBAR_OPENED_STORAGE_KEY, this.isOpenedSignal().toString());\r\n    }\r\n\r\n    public setWidth(value: number): void {\r\n        this.widthSignal.set(value);\r\n    }\r\n}\r\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n    selector: 'header[cuiSidebarHeader]',\r\n    imports: [CuiSvgModule, NgTemplateOutlet],\r\n    standalone: true,\r\n    templateUrl: 'sidebar-header.component.html',\r\n    styleUrl: 'sidebar-header.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarHeaderComponent {\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n    protected readonly isOpened = this.sidebarService.isOpened;\r\n    protected readonly buttonIcon = computed<CuiIcon>(() =>\r\n        this.isOpened() ? 'cuiIconChevronsLeft' : 'cuiIconChevronsRight'\r\n    );\r\n\r\n    public readonly headerSlot = input.required<TemplateRef<unknown>>();\r\n\r\n    protected onSwitch(event: MouseEvent): void {\r\n        event.stopPropagation();\r\n\r\n        this.document.body.click();\r\n        this.sidebarService.switch();\r\n    }\r\n}\r\n","<ng-container\r\n    [ngTemplateOutlet]=\"headerSlot()\"\r\n    [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\"\r\n/>\r\n<button\r\n    type=\"button\"\r\n    class=\"button\"\r\n    [class.button_opened]=\"isOpened()\"\r\n    (click)=\"onSwitch($event)\"\r\n>\r\n    <cui-svg\r\n        [icon]=\"buttonIcon()\"\r\n        color=\"var(--cui-base-500)\"\r\n    />\r\n</button>\r\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { CuiDimensionsObserverDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n    selector: 'cui-sidebar-container',\r\n    standalone: true,\r\n    templateUrl: 'sidebar-container.component.html',\r\n    styleUrl: 'sidebar-container.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    hostDirectives: [\r\n        {\r\n            directive: CuiDimensionsObserverDirective,\r\n            outputs: ['cuiResizeObserver']\r\n        }\r\n    ],\r\n    host: {\r\n        '(cuiResizeObserver)': 'onResize($event.width)',\r\n        '[class._opened]': 'isOpened()'\r\n    }\r\n})\r\nexport class CuiSidebarContainerComponent {\r\n    private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n    protected readonly isOpened = this.sidebarService.isOpened;\r\n    protected readonly isHidden = this.sidebarService.isHidden;\r\n\r\n    protected onResize(width: number): void {\r\n        this.sidebarService.setWidth(width);\r\n    }\r\n}\r\n","@if (!isHidden()) {\r\n    <ng-content />\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiSidebarLink } from '../sidebar.options';\r\n\r\n@Component({\r\n    selector: 'cui-sidebar-navigation',\r\n    imports: [NgTemplateOutlet],\r\n    standalone: true,\r\n    templateUrl: 'sidebar-navigation.component.html',\r\n    styleUrl: 'sidebar-navigation.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationComponent {\r\n    public readonly links = input.required<CuiSidebarLink[]>();\r\n    public readonly slot = input.required<TemplateRef<unknown>>();\r\n}\r\n","<nav class=\"nav\">\r\n    <ul class=\"list\">\r\n        @for (link of links(); track link.text; let isLast = $last) {\r\n            <ng-container\r\n                [ngTemplateOutlet]=\"slot()\"\r\n                [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\"\r\n            />\r\n        }\r\n    </ul>\r\n</nav>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\n\r\n@Component({\r\n    selector: '[cuiSidebarNavigationItem]',\r\n    imports: [CuiSvgModule],\r\n    standalone: true,\r\n    templateUrl: 'sidebar-navigation-item.component.html',\r\n    styleUrl: 'sidebar-navigation-item.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._active]': 'active()'\r\n    }\r\n})\r\nexport class CuiSidebarNavigationItemComponent {\r\n    public readonly text = input.required<string>();\r\n    public readonly icon = input<CuiIcon>();\r\n    public readonly active = input<boolean>();\r\n    public readonly isOpen = input<boolean>();\r\n}\r\n","@if (icon(); as icon) {\r\n    <cui-svg\r\n        [icon]=\"icon\"\r\n        color=\"var(--cui-base-500)\"\r\n    />\r\n}\r\n@if (isOpen()) {\r\n    {{ text() }}\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-sidebar-navigation-container',\r\n    imports: [NgTemplateOutlet],\r\n    standalone: true,\r\n    templateUrl: 'sidebar-navigation-container.component.html',\r\n    styleUrl: 'sidebar-navigation-container.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationContainerComponent {\r\n    public readonly slot = input.required<TemplateRef<unknown>>();\r\n    public readonly title = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n    <h3 class=\"title\">{{ title }}</h3>\r\n}\r\n\r\n<ng-container [ngTemplateOutlet]=\"slot()\" />\r\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-card-wrapper, [cuiCardWrapper]',\r\n    standalone: true,\r\n    templateUrl: 'card-wrapper.component.html',\r\n    styleUrl: 'card-wrapper.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._with-border]': 'withBorder()',\r\n        '[class._selected]': 'isSelected()'\r\n    }\r\n})\r\nexport class CuiCardWrapperComponent {\r\n    public readonly withBorder = input(true);\r\n    public readonly isSelected = input(false);\r\n}\r\n","<ng-content />\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'cui-layout',\r\n    standalone: true,\r\n    templateUrl: './layout.component.html',\r\n    styleUrl: './layout.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[style.marginLeft.px]': 'sidebarWidth()'\r\n    }\r\n})\r\nexport class CuiLayoutComponent {\r\n    public readonly sidebarWidth = input.required<number>();\r\n}\r\n","<div class=\"content\">\r\n    <ng-content />\r\n</div>\r\n","import { InjectionToken, Signal, type TemplateRef } from '@angular/core';\r\nimport { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TABS_SERVICE_TOKEN = new InjectionToken<CuiAbstractTabsService>('CUI_TABS_SERVICE');\r\n\r\nexport abstract class CuiAbstractTabsService implements CuiTabsService {\r\n    abstract readonly tabs: Signal<CuiTabOptions[]>;\r\n    abstract readonly activeTab: Signal<CuiNullable<CuiTabOptions>>;\r\n\r\n    abstract set(tab: CuiTabOptions): void;\r\n    abstract addTab(tab: CuiTabOptions): void;\r\n    abstract removeTab(tabId: string): void;\r\n}\r\n\r\nexport interface CuiTabsService {\r\n    set(tab: CuiTabOptions): void;\r\n    addTab(tab: CuiTabOptions): void;\r\n    removeTab(tabId: string): void;\r\n}\r\n\r\nexport interface CuiTabOptions {\r\n    readonly id: string;\r\n    readonly button: TemplateRef<unknown>;\r\n    readonly content: TemplateRef<unknown>;\r\n    readonly data?: unknown;\r\n}\r\n","import type { TemplateRef } from '@angular/core';\r\nimport { Directive, effect, inject, input, untracked } from '@angular/core';\r\nimport { CuiIdService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_TABS_SERVICE_TOKEN } from '../tabs/tabs.options';\r\n\r\n@Directive({\r\n    selector: 'cui-tab, [cuiTab]',\r\n    standalone: true\r\n})\r\nexport class CuiTabDirective {\r\n    private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\r\n    private readonly tabId = inject(CuiIdService).generate();\r\n\r\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly contentSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly data = input<unknown>();\r\n\r\n    constructor() {\r\n        this.initTabEffect();\r\n    }\r\n\r\n    private initTabEffect(): void {\r\n        effect(\r\n            (onCleanup) => {\r\n                this.addTab(this.buttonSlot(), this.contentSlot());\r\n\r\n                onCleanup(this.removeTab.bind(this));\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private addTab(button: TemplateRef<unknown>, content: TemplateRef<unknown>): void {\r\n        this.tabsService.addTab({ id: this.tabId, button, content, data: untracked(this.data) });\r\n    }\r\n\r\n    private removeTab(): void {\r\n        this.tabsService.removeTab(this.tabId);\r\n    }\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject, TemplateRef, input, effect } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { CUI_TABS_SERVICE_TOKEN, CuiTabOptions } from '../../tabs.options';\r\n\r\n@Component({\r\n    selector: 'cui-abstract-tabs',\r\n    imports: [NgTemplateOutlet],\r\n    standalone: true,\r\n    templateUrl: 'abstract-tabs.component.html',\r\n    styleUrl: 'abstract-tabs.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAbstractTabsComponent {\r\n    private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\r\n\r\n    protected readonly tabs = this.tabsService.tabs;\r\n    protected readonly activeTab = this.tabsService.activeTab;\r\n\r\n    public readonly headerSlot = input<TemplateRef<unknown>>();\r\n    public readonly selectedIndex = input<number>(0);\r\n\r\n    constructor() {\r\n        this.initSelectedTabEffect();\r\n    }\r\n\r\n    protected onSelectTab(event: Event, tab: CuiTabOptions): void {\r\n        if (event.defaultPrevented) {\r\n            return;\r\n        }\r\n\r\n        this.tabsService.set(tab);\r\n    }\r\n\r\n    private initSelectedTabEffect() {\r\n        effect(\r\n            () => {\r\n                const index = this.selectedIndex();\r\n                const length = this.tabs().length;\r\n\r\n                if (index === undefined || !length) {\r\n                    return;\r\n                }\r\n\r\n                if (index < 0 || index >= length) {\r\n                    throw new Error('Invalid tab index');\r\n                }\r\n\r\n                this.tabsService.set(this.tabs()[index]);\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n}\r\n","@if (headerSlot(); as header) {\r\n    <ng-container\r\n        [ngTemplateOutlet]=\"header\"\r\n        [ngTemplateOutletContext]=\"{ $implicit: buttons }\"\r\n    />\r\n} @else {\r\n    <header class=\"header\">\r\n        <ng-container [ngTemplateOutlet]=\"buttons\" />\r\n    </header>\r\n}\r\n\r\n<ng-template #buttons>\r\n    @for (tab of tabs(); track tab.id) {\r\n        <button\r\n            type=\"button\"\r\n            class=\"button\"\r\n            (click)=\"onSelectTab($event, tab)\"\r\n        >\r\n            <ng-container\r\n                [ngTemplateOutlet]=\"tab.button\"\r\n                [ngTemplateOutletContext]=\"{ $implicit: tab.data, isActive: tab.id === activeTab()?.id }\"\r\n            />\r\n        </button>\r\n    }\r\n</ng-template>\r\n\r\n@if (activeTab()?.content; as content) {\r\n    <ng-container\r\n        [ngTemplateOutlet]=\"content\"\r\n        [ngTemplateOutletContext]=\"{ $implicit: activeTab()?.data }\"\r\n    />\r\n}\r\n","import { computed, Injectable, signal, WritableSignal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport { CuiAbstractTabsService, CuiTabOptions } from '../tabs.options';\r\n\r\n@Injectable()\r\nexport class CuiTabsServiceImpl extends CuiAbstractTabsService {\r\n    private readonly tabsSignal = signal<CuiTabOptions[]>([]);\r\n    private readonly activeTabSignal = computed<WritableSignal<CuiNullable<CuiTabOptions>>>(() =>\r\n        signal(this.tabsSignal()[0])\r\n    );\r\n\r\n    public readonly tabs = this.tabsSignal.asReadonly();\r\n    public readonly activeTab = computed(() => this.activeTabSignal()());\r\n\r\n    public set(tab: CuiTabOptions): void {\r\n        this.activeTabSignal().set(tab);\r\n    }\r\n\r\n    public addTab(tab: CuiTabOptions): void {\r\n        this.tabsSignal.update((prev) => [...prev, tab]);\r\n    }\r\n\r\n    public removeTab(tabId: string): void {\r\n        this.tabsSignal.update((prev) => prev.filter((tab) => tab.id !== tabId));\r\n    }\r\n}\r\n","import { Provider, Type } from '@angular/core';\r\nimport { CuiTabsServiceImpl } from './services';\r\nimport { CUI_TABS_SERVICE_TOKEN, CuiAbstractTabsService } from './tabs.options';\r\n\r\nexport function provideCuiTabs(Implementation: Type<CuiAbstractTabsService> = CuiTabsServiceImpl): Provider {\r\n    return {\r\n        provide: CUI_TABS_SERVICE_TOKEN,\r\n        useClass: Implementation\r\n    };\r\n}\r\n","import { ChangeDetectionStrategy, Component, input, TemplateRef } from '@angular/core';\r\n\r\nimport { CuiAbstractTabsComponent } from './components';\r\nimport { provideCuiTabs } from './tabs.provider';\r\n\r\n@Component({\r\n    selector: 'cui-tabs',\r\n    imports: [CuiAbstractTabsComponent],\r\n    standalone: true,\r\n    templateUrl: 'tabs.component.html',\r\n    styleUrl: 'tabs.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [provideCuiTabs()]\r\n})\r\nexport class CuiTabsComponent {\r\n    public readonly headerSlot = input<TemplateRef<unknown>>();\r\n    public readonly selectedIndex = input<number>(0);\r\n}\r\n","<cui-abstract-tabs\r\n    [headerSlot]=\"headerSlot()\"\r\n    [selectedIndex]=\"selectedIndex()\"\r\n/>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { CuiAutoResizingDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n    selector: 'textarea[cuiTextarea]',\r\n    template: '',\r\n    styleUrls: ['./textarea.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER],\r\n    hostDirectives: [CuiAutoResizingDirective]\r\n})\r\nexport class CuiTextareaComponent {\r\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n    @Input()\r\n    @HostBinding('rows')\r\n    public rows = 4;\r\n\r\n    @Input()\r\n    @HostBinding('class._no-borders-and-paddings')\r\n    public noBordersAndPaddings = false;\r\n\r\n    @HostBinding('class._with-error')\r\n    protected get isError(): boolean {\r\n        return this.cuiTextFieldController.isError;\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n    declarations: [CuiTextareaComponent],\r\n    exports: [CuiTextareaComponent]\r\n})\r\nexport class CuiTextareaModule {}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'input[type=\"checkbox\"][cuiToggle]',\r\n    template: '',\r\n    styleUrls: ['./toggle.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiToggleComponent {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiToggleComponent } from './toggle.component';\r\n\r\n@NgModule({\r\n    declarations: [CuiToggleComponent],\r\n    exports: [CuiToggleComponent]\r\n})\r\nexport class CuiToggleModule {}\r\n","export const EXTENSION_GROUP_COLOR = {\r\n    model: 'var(--cui-light-green-500)',\r\n    doc: 'var(--cui-light-blue-500)',\r\n    image: 'var(--cui-yellow-400)',\r\n    sheet: 'var(--cui-green-600)',\r\n    presentations: 'var(--cui-green-600)',\r\n    video: 'var(--cui-light-green-500)',\r\n    audio: 'var(--cui-lavender-400)',\r\n    archive: 'var(--cui-orange-600)',\r\n    geo: 'var(--cui-magenta-400)'\r\n} as const;\r\n\r\nexport const EXTENSION_TO_GROUP: Record<string, keyof typeof EXTENSION_GROUP_COLOR> = {\r\n    // 3D Model formats - var(--cui-light-green-500)\r\n    dae: 'model',\r\n    fbx: 'model',\r\n    glb: 'model',\r\n    gltf: 'model',\r\n    mtl: 'model',\r\n    obj: 'model',\r\n    ply: 'model',\r\n    step: 'model',\r\n    stl: 'model',\r\n    usd: 'model',\r\n    usda: 'model',\r\n    usdc: 'model',\r\n    usdz: 'model',\r\n    dxf: 'model',\r\n\r\n    // Document formats - var(--cui-light-blue-500)\r\n    azw: 'doc',\r\n    doc: 'doc',\r\n    docx: 'doc',\r\n    epub: 'doc',\r\n    mobi: 'doc',\r\n    odt: 'doc',\r\n    pdf: 'doc',\r\n    ps: 'doc',\r\n    rtf: 'doc',\r\n    txt: 'doc',\r\n    w: 'doc',\r\n\r\n    // Spreadsheet formats - var(--cui-green-600)\r\n    ods: 'sheet',\r\n    x: 'sheet',\r\n    xls: 'sheet',\r\n    xlsx: 'sheet',\r\n\r\n    // Presentation formats - var(--cui-green-600)\r\n    odp: 'presentations',\r\n    p: 'presentations',\r\n    pt: 'presentations',\r\n    ppt: 'presentations',\r\n    pptx: 'presentations',\r\n    sldx: 'presentations',\r\n\r\n    // Video formats - var(--cui-light-green-500)\r\n    '3g2': 'video',\r\n    '3gp': 'video',\r\n    avi: 'video',\r\n    flv: 'video',\r\n    m4v: 'video',\r\n    mkv: 'video',\r\n    mov: 'video',\r\n    mp4: 'video',\r\n    mpg: 'video',\r\n    pr: 'video',\r\n    rm: 'video',\r\n    rmvb: 'video',\r\n    vob: 'video',\r\n    webm: 'video',\r\n    wmv: 'video',\r\n\r\n    // Audio formats - var(--cui-lavender-400)\r\n    aac: 'audio',\r\n    aif: 'audio',\r\n    aiff: 'audio',\r\n    alac: 'audio',\r\n    amr: 'audio',\r\n    au: 'audio',\r\n    dsd: 'audio',\r\n    flac: 'audio',\r\n    m4a: 'audio',\r\n    mp3: 'audio',\r\n    ogg: 'audio',\r\n    opus: 'audio',\r\n    pcm: 'audio',\r\n    wav: 'audio',\r\n    wma: 'audio',\r\n\r\n    // Archive formats - var(--cui-orange-600)\r\n    '7z': 'archive',\r\n    arj: 'archive',\r\n    gz: 'archive',\r\n    rar: 'archive',\r\n    sfx: 'archive',\r\n    tar: 'archive',\r\n    zip: 'archive',\r\n\r\n    // Geographic Data formats - var(--cui-magenta-400)\r\n    geojson: 'geo',\r\n    gpx: 'geo',\r\n    kml: 'geo',\r\n    kmz: 'geo',\r\n    shp: 'geo',\r\n\r\n    // Image formats - var(--cui-yellow-400)\r\n    arw: 'image',\r\n    bmp: 'image',\r\n    cr2: 'image',\r\n    dng: 'image',\r\n    gif: 'image',\r\n    ico: 'image',\r\n    jpeg: 'image',\r\n    jpg: 'image',\r\n    nef: 'image',\r\n    orf: 'image',\r\n    pef: 'image',\r\n    png: 'image',\r\n    raf: 'image',\r\n    raw: 'image',\r\n    svg: 'image',\r\n    tga: 'image',\r\n    tif: 'image',\r\n    tiff: 'image',\r\n    webp: 'image',\r\n    xcf: 'image'\r\n} as const;\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { EXTENSION_GROUP_COLOR, EXTENSION_TO_GROUP } from './file-icon.options';\r\n\r\n@Component({\r\n    selector: 'cui-file-icon',\r\n    imports: [CuiSvgModule],\r\n    standalone: true,\r\n    templateUrl: 'file-icon.component.html',\r\n    styleUrl: 'file-icon.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFileIconComponent {\r\n    protected readonly extensionColor = computed(() => this.color() ?? this.getColorByExtension(this.extension()));\r\n\r\n    public readonly extension = input.required<string>();\r\n    public readonly color = input<string>();\r\n\r\n    private getColorByExtension(extension: string): string {\r\n        return EXTENSION_GROUP_COLOR[EXTENSION_TO_GROUP[extension]];\r\n    }\r\n}\r\n","@if (extensionColor(); as color) {\r\n    <cui-svg\r\n        icon=\"cuiIconBoldFileDefaultSm\"\r\n        [color]=\"color\"\r\n        class=\"icon\"\r\n    ></cui-svg>\r\n\r\n    <span class=\"extension\">{{ extension() }}</span>\r\n}\r\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../../../../components/svg';\r\n\r\n@Component({\r\n    selector: 'cui-filter-remove-button',\r\n    standalone: true,\r\n    imports: [CuiSvgModule],\r\n    templateUrl: './filter-remove-button.template.html',\r\n    styleUrls: ['./filter-remove-button.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFilterRemoveButtonComponent {\r\n    public readonly label = input.required<string>();\r\n\r\n    public readonly removed = output<void>();\r\n\r\n    public onRemove(): void {\r\n        this.removed.emit();\r\n    }\r\n}\r\n","<button\r\n    type=\"button\"\r\n    class=\"filter-remove-button\"\r\n>\r\n    <cui-svg\r\n        icon=\"cuiIconVector\"\r\n        (click)=\"onRemove(); $event.stopPropagation()\"\r\n    />\r\n    <span class=\"filter-remove-button__label\">{{ label() }}:</span>\r\n</button>\r\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiButtonModule } from '../../../../components/button';\r\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\r\nimport { CuiInputModule } from '../../../../components/input-text';\r\nimport { CuiSvgModule } from '../../../../components/svg';\r\nimport { CuiTooltipDirective } from '../../../../directives';\r\nimport type { CuiActiveFilter, CuiFilterBarTranslations } from '../../filter-bar.interfaces';\r\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\r\n\r\n@Component({\r\n    selector: 'cui-string-filter',\r\n    standalone: true,\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiDropdownDirective,\r\n        CuiFilterRemoveButtonComponent,\r\n        CuiInputModule,\r\n        CuiSvgModule,\r\n        CuiTooltipDirective,\r\n        FormsModule\r\n    ],\r\n    templateUrl: './string-filter.template.html',\r\n    styleUrls: ['./string-filter.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiStringFilterComponent {\r\n    public readonly filter = input.required<CuiActiveFilter>();\r\n    public readonly translations = input.required<CuiFilterBarTranslations>();\r\n    public readonly removed = output<string>();\r\n    public readonly changed = output<CuiActiveFilter>();\r\n\r\n    protected readonly tmpValue = signal('');\r\n\r\n    protected readonly currentValue = computed(() => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'string' ? f.value.value : '';\r\n    });\r\n\r\n    protected readonly hasValue = computed(() => !!this.currentValue());\r\n\r\n    protected onRemove(): void {\r\n        this.removed.emit(this.filter().id);\r\n    }\r\n\r\n    protected onDropdownOpened(opened: boolean): void {\r\n        if (opened) {\r\n            this.tmpValue.set(this.currentValue());\r\n        }\r\n    }\r\n\r\n    protected onTmpValueChange(value: string): void {\r\n        this.tmpValue.set(value);\r\n    }\r\n\r\n    protected applyValue(dropdown: CuiDropdownDirective): void {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'string') {\r\n            return;\r\n        }\r\n\r\n        this.changed.emit({\r\n            ...f,\r\n            value: { ...f.value, value: this.tmpValue() }\r\n        });\r\n        dropdown.close();\r\n    }\r\n}","<cui-filter-remove-button\r\n    [label]=\"filter().field.label\"\r\n    (removed)=\"onRemove()\"\r\n/>\r\n\r\n<button\r\n    type=\"button\"\r\n    class=\"string-filter__trigger\"\r\n    [class.string-filter__trigger--active]=\"hasValue()\"\r\n    [cuiDropdown]=\"dropdownTpl\"\r\n    #dropdown=\"cuiDropdown\"\r\n    (isOpened)=\"onDropdownOpened($event)\"\r\n>\r\n    @if (hasValue()) {\r\n        <span\r\n            class=\"string-filter__value\"\r\n            [cuiTooltip]=\"currentValue()\"\r\n        >\r\n            {{ currentValue() }}\r\n        </span>\r\n    } @else {\r\n        <span class=\"string-filter__placeholder\">{{ translations().enterValue }}</span>\r\n    }\r\n    <cui-svg icon=\"cuiIconChevronDown\" />\r\n</button>\r\n\r\n<ng-template #dropdownTpl>\r\n    <div class=\"string-filter__dropdown\">\r\n        <div class=\"string-filter__label\">\r\n            {{ translations().filterBy }} {{ filter().field.label }}\r\n        </div>\r\n        <cui-input-text\r\n            [ngModel]=\"tmpValue()\"\r\n            (ngModelChange)=\"onTmpValueChange($event)\"\r\n            maxlength=\"25\"\r\n            [cuiTextFieldPlaceholder]=\"translations().enterValue\"\r\n        />\r\n        <div class=\"string-filter__footer\">\r\n            <button\r\n                type=\"button\"\r\n                cuiButton\r\n                size=\"xs\"\r\n                appearance=\"secondary\"\r\n                (click)=\"dropdown.close()\"\r\n            >\r\n                {{ translations().cancel }}\r\n            </button>\r\n            <button\r\n                type=\"button\"\r\n                cuiButton\r\n                size=\"xs\"\r\n                appearance=\"action-cyan\"\r\n                (click)=\"applyValue(dropdown)\"\r\n            >\r\n                {{ translations().apply }}\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiButtonModule } from '../../../../components/button';\r\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\r\nimport { CuiInputNumberModule } from '../../../../components/input-number';\r\nimport { CuiSvgModule } from '../../../../components/svg';\r\nimport { CuiTooltipDirective } from '../../../../directives';\r\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiFilterValue, CuiRangeFilterField } from '../../filter-bar.interfaces';\r\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\r\n\r\n@Component({\r\n    selector: 'cui-range-filter',\r\n    standalone: true,\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiDropdownDirective,\r\n        CuiFilterRemoveButtonComponent,\r\n        CuiInputNumberModule,\r\n        CuiSvgModule,\r\n        CuiTooltipDirective,\r\n        FormsModule\r\n    ],\r\n    templateUrl: './range-filter.template.html',\r\n    styleUrls: ['./range-filter.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRangeFilterComponent {\r\n    public readonly filter = input.required<CuiActiveFilter>();\r\n    public readonly translations = input.required<CuiFilterBarTranslations>();\r\n    public readonly removed = output<string>();\r\n    public readonly changed = output<CuiActiveFilter>();\r\n\r\n    protected readonly tmpMin = signal<number | null>(null);\r\n    protected readonly tmpMax = signal<number | null>(null);\r\n\r\n    protected readonly currentMin = computed(() => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'range' ? f.value.min : null;\r\n    });\r\n\r\n    protected readonly currentMax = computed(() => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'range' ? f.value.max : null;\r\n    });\r\n\r\n    protected readonly hasValue = computed(() => this.currentMin() !== null || this.currentMax() !== null);\r\n\r\n    protected readonly displayValue = computed(() => {\r\n        const min = this.currentMin();\r\n        const max = this.currentMax();\r\n\r\n        if (min !== null && max !== null) {\r\n            return `${min} – ${max}`;\r\n        }\r\n\r\n        if (min !== null) {\r\n            return `≥ ${min}`;\r\n        }\r\n\r\n        if (max !== null) {\r\n            return `≤ ${max}`;\r\n        }\r\n\r\n        return '';\r\n    });\r\n\r\n    protected readonly minPlaceholder = computed(() => {\r\n        const field = this.filter().field as CuiRangeFilterField;\r\n\r\n        return field.rangeConfig?.minPlaceholder ?? 'MIN';\r\n    });\r\n\r\n    protected readonly maxPlaceholder = computed(() => {\r\n        const field = this.filter().field as CuiRangeFilterField;\r\n\r\n        return field.rangeConfig?.maxPlaceholder ?? 'MAX';\r\n    });\r\n\r\n    protected onRemove(): void {\r\n        this.removed.emit(this.filter().id);\r\n    }\r\n\r\n    protected onDropdownOpened(isOpened: boolean): void {\r\n        if (isOpened) {\r\n            this.tmpMin.set(this.currentMin());\r\n            this.tmpMax.set(this.currentMax());\r\n        }\r\n    }\r\n\r\n    protected onTmpMinChange(value: number | null): void {\r\n        this.tmpMin.set(value);\r\n    }\r\n\r\n    protected onTmpMaxChange(value: number | null): void {\r\n        this.tmpMax.set(value);\r\n    }\r\n\r\n    protected applyValue(dropdown: CuiDropdownDirective): void {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'range') {\r\n            return;\r\n        }\r\n\r\n        const newValue: CuiFilterValue = {\r\n            type: 'range',\r\n            min: this.tmpMin(),\r\n            max: this.tmpMax()\r\n        };\r\n\r\n        this.changed.emit({ ...f, value: newValue });\r\n        dropdown.close();\r\n    }\r\n}","<cui-filter-remove-button\r\n    [label]=\"filter().field.label\"\r\n    (removed)=\"onRemove()\"\r\n/>\r\n\r\n<button\r\n    type=\"button\"\r\n    class=\"range-filter__trigger\"\r\n    [class.range-filter__trigger_active]=\"hasValue()\"\r\n    [cuiDropdown]=\"dropdownTpl\"\r\n    #dropdown=\"cuiDropdown\"\r\n    (isOpened)=\"onDropdownOpened($event)\"\r\n>\r\n    @if (hasValue()) {\r\n        <span\r\n            class=\"range-filter__value\"\r\n            [cuiTooltip]=\"displayValue()\"\r\n        >\r\n            {{ displayValue() }}\r\n        </span>\r\n    } @else {\r\n        <span class=\"range-filter__placeholder\">{{ translations().enterValue }}</span>\r\n    }\r\n    <cui-svg icon=\"cuiIconChevronDown\" />\r\n</button>\r\n\r\n<ng-template #dropdownTpl>\r\n    <div class=\"range-filter__dropdown\">\r\n        <div class=\"range-filter__label\">\r\n            {{ translations().filterBy }} {{ filter().field.label }}\r\n        </div>\r\n        <div class=\"range-filter__inputs\">\r\n            <cui-input-number\r\n                [ngModel]=\"tmpMin()\"\r\n                (ngModelChange)=\"onTmpMinChange($event)\"\r\n                [cuiTextFieldPlaceholder]=\"minPlaceholder()\"\r\n            />\r\n            <span class=\"range-filter__separator\">–</span>\r\n            <cui-input-number\r\n                [ngModel]=\"tmpMax()\"\r\n                (ngModelChange)=\"onTmpMaxChange($event)\"\r\n                [cuiTextFieldPlaceholder]=\"maxPlaceholder()\"\r\n            />\r\n        </div>\r\n        <div class=\"range-filter__footer\">\r\n            <button\r\n                type=\"button\"\r\n                cuiButton\r\n                size=\"xs\"\r\n                appearance=\"secondary\"\r\n                (click)=\"dropdown.close()\"\r\n            >\r\n                {{ translations().cancel }}\r\n            </button>\r\n            <button\r\n                type=\"button\"\r\n                cuiButton\r\n                size=\"xs\"\r\n                appearance=\"action-cyan\"\r\n                (click)=\"applyValue(dropdown)\"\r\n            >\r\n                {{ translations().apply }}\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\n\r\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\r\nimport { CuiSvgModule } from '../../../../components/svg';\r\nimport { CuiTooltipDirective } from '../../../../directives';\r\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiSelectFilterField } from '../../filter-bar.interfaces';\r\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\r\n\r\n@Component({\r\n    selector: 'cui-select-filter',\r\n    standalone: true,\r\n    imports: [\r\n        CuiDropdownDirective,\r\n        CuiFilterRemoveButtonComponent,\r\n        CuiSvgModule,\r\n        CuiTooltipDirective\r\n    ],\r\n    templateUrl: './select-filter.template.html',\r\n    styleUrls: ['./select-filter.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSelectFilterComponent {\r\n    public readonly filter = input.required<CuiActiveFilter>();\r\n    public readonly translations = input.required<CuiFilterBarTranslations>();\r\n    public readonly removed = output<string>();\r\n    public readonly changed = output<CuiActiveFilter>();\r\n\r\n    protected readonly currentValue = computed(() => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'select' ? f.value.value : null;\r\n    });\r\n\r\n    protected readonly currentLabel = computed(() => {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'select' || !f.value.value) {\r\n            return '';\r\n        }\r\n\r\n        const selectedValue = f.value.value;\r\n        const field = f.field as CuiSelectFilterField;\r\n\r\n        return field.selectOptions?.find((opt) => opt.value === selectedValue)?.label ?? selectedValue;\r\n    });\r\n\r\n    protected readonly hasValue = computed(() => !!this.currentValue());\r\n\r\n    protected readonly options = computed(() => {\r\n        const field = this.filter().field as CuiSelectFilterField;\r\n\r\n        return field.selectOptions ?? [];\r\n    });\r\n\r\n    protected onRemove(): void {\r\n        this.removed.emit(this.filter().id);\r\n    }\r\n\r\n    protected isOptionSelected(value: string): boolean {\r\n        return this.currentValue() === value;\r\n    }\r\n\r\n    protected selectOption(value: string, dropdown: CuiDropdownDirective): void {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'select') {\r\n            return;\r\n        }\r\n\r\n        this.changed.emit({\r\n            ...f,\r\n            value: { ...f.value, value: f.value.value === value ? null : value }\r\n        });\r\n        dropdown.close();\r\n    }\r\n}","<cui-filter-remove-button\r\n    [label]=\"filter().field.label\"\r\n    (removed)=\"onRemove()\"\r\n/>\r\n\r\n<button\r\n    type=\"button\"\r\n    class=\"select-filter__trigger\"\r\n    [class.select-filter__trigger--active]=\"hasValue()\"\r\n    [cuiDropdown]=\"dropdownTpl\"\r\n    #dropdown=\"cuiDropdown\"\r\n>\r\n    @if (hasValue()) {\r\n        <span\r\n            class=\"select-filter__value\"\r\n            [cuiTooltip]=\"currentLabel()\"\r\n        >\r\n            {{ currentLabel() }}\r\n        </span>\r\n    } @else {\r\n        <span class=\"select-filter__placeholder\">{{ translations().selectValue }}</span>\r\n    }\r\n    <cui-svg icon=\"cuiIconChevronDown\" />\r\n</button>\r\n\r\n<ng-template #dropdownTpl>\r\n    <div class=\"select-filter__dropdown\">\r\n        @for (opt of options(); track opt.value) {\r\n            <button\r\n                type=\"button\"\r\n                class=\"select-filter__option\"\r\n                [class.select-filter__option--selected]=\"isOptionSelected(opt.value)\"\r\n                (click)=\"selectOption(opt.value, dropdown)\"\r\n            >\r\n                {{ opt.label }}\r\n            </button>\r\n        }\r\n    </div>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\n\r\nimport { CuiCheckboxModule } from '../../../../components/checkbox';\r\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\r\nimport { CuiSvgModule } from '../../../../components/svg';\r\nimport { CuiTooltipDirective } from '../../../../directives';\r\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiMultiSelectFilterField } from '../../filter-bar.interfaces';\r\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\r\n\r\n@Component({\r\n    selector: 'cui-multiselect-filter',\r\n    standalone: true,\r\n    imports: [\r\n        CuiCheckboxModule,\r\n        CuiDropdownDirective,\r\n        CuiFilterRemoveButtonComponent,\r\n        CuiSvgModule,\r\n        CuiTooltipDirective\r\n    ],\r\n    templateUrl: './multiselect-filter.template.html',\r\n    styleUrls: ['./multiselect-filter.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiMultiSelectFilterComponent {\r\n    public readonly filter = input.required<CuiActiveFilter>();\r\n    public readonly translations = input.required<CuiFilterBarTranslations>();\r\n    public readonly removed = output<string>();\r\n    public readonly changed = output<CuiActiveFilter>();\r\n\r\n    protected readonly currentValues = computed(() => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'multiselect' ? f.value.values : [];\r\n    });\r\n\r\n    protected readonly currentLabels = computed(() => {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'multiselect') {\r\n            return '';\r\n        }\r\n\r\n        const field = f.field as CuiMultiSelectFilterField;\r\n\r\n        return f.value.values\r\n            .map((val) => field.multiSelectOptions?.find((opt) => opt.value === val)?.label ?? val)\r\n            .join(', ');\r\n    });\r\n\r\n    protected readonly hasValue = computed(() => this.currentValues().length > 0);\r\n\r\n    protected readonly options = computed(() => {\r\n        const field = this.filter().field as CuiMultiSelectFilterField;\r\n\r\n        return field.multiSelectOptions ?? [];\r\n    });\r\n\r\n    protected onRemove(): void {\r\n        this.removed.emit(this.filter().id);\r\n    }\r\n\r\n    protected isOptionSelected(value: string): boolean {\r\n        return this.currentValues().includes(value);\r\n    }\r\n\r\n    protected toggleOption(value: string): void {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'multiselect') {\r\n            return;\r\n        }\r\n\r\n        const currentValues = f.value.values;\r\n        const newValues = currentValues.includes(value)\r\n            ? currentValues.filter((v) => v !== value)\r\n            : [...currentValues, value];\r\n\r\n        this.changed.emit({\r\n            ...f,\r\n            value: { ...f.value, values: newValues }\r\n        });\r\n    }\r\n}","<cui-filter-remove-button\r\n    [label]=\"filter().field.label\"\r\n    (removed)=\"onRemove()\"\r\n/>\r\n\r\n<button\r\n    type=\"button\"\r\n    class=\"multiselect-filter__trigger\"\r\n    [class.multiselect-filter__trigger--active]=\"hasValue()\"\r\n    [cuiDropdown]=\"dropdownTpl\"\r\n>\r\n    @if (hasValue()) {\r\n        <span\r\n            class=\"multiselect-filter__value\"\r\n            [cuiTooltip]=\"currentLabels()\"\r\n        >\r\n            {{ currentLabels() }}\r\n        </span>\r\n    } @else {\r\n        <span class=\"multiselect-filter__placeholder\">{{ translations().selectValues }}</span>\r\n    }\r\n    <cui-svg icon=\"cuiIconChevronDown\" />\r\n</button>\r\n\r\n<ng-template #dropdownTpl>\r\n    <div class=\"multiselect-filter__dropdown\">\r\n        @for (opt of options(); track opt.value) {\r\n            <label class=\"multiselect-filter__option\">\r\n                <input\r\n                    type=\"checkbox\"\r\n                    cuiCheckbox\r\n                    [checked]=\"isOptionSelected(opt.value)\"\r\n                    (change)=\"toggleOption(opt.value)\"\r\n                />\r\n                <span>{{ opt.label }}</span>\r\n            </label>\r\n        }\r\n    </div>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\n\r\nimport { CuiButtonModule } from '../../../../components/button';\r\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\r\nimport { CuiSvgModule } from '../../../../components/svg';\r\nimport type { CuiFilterField } from '../../filter-bar.interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-add-filter-button',\r\n    standalone: true,\r\n    imports: [CuiButtonModule, CuiDropdownDirective, CuiSvgModule],\r\n    templateUrl: './add-filter-button.template.html',\r\n    styleUrls: ['./add-filter-button.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAddFilterButtonComponent {\r\n    public readonly availableFields = input.required<CuiFilterField[]>();\r\n    public readonly addFilterLabel = input<string>('Add filter');\r\n\r\n    public readonly fieldSelected = output<CuiFilterField>();\r\n\r\n    protected selectField(field: CuiFilterField, dropdown: CuiDropdownDirective): void {\r\n        this.fieldSelected.emit(field);\r\n        dropdown.close();\r\n    }\r\n}","<div class=\"cui-add-filter\">\r\n    <button\r\n        type=\"button\"\r\n        class=\"cui-add-filter__btn\"\r\n        cuiButton\r\n        size=\"xxs\"\r\n        appearance=\"outlined\"\r\n        [cuiDropdown]=\"dropdownTpl\"\r\n        #dropdown=\"cuiDropdown\"\r\n    >\r\n        <cui-svg\r\n            icon=\"cuiIconPlusSm\"\r\n            [width]=\"16\"\r\n            color=\"var(--cui-info)\"\r\n        />\r\n        {{ addFilterLabel() }}\r\n    </button>\r\n    <ng-template #dropdownTpl>\r\n        <div class=\"cui-add-filter__dropdown\">\r\n            @for (field of availableFields(); track field.id) {\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"cui-add-filter__dropdown-item\"\r\n                    (click)=\"selectField(field, dropdown)\"\r\n                >\r\n                    {{ field.label }}\r\n                </button>\r\n            }\r\n        </div>\r\n    </ng-template>\r\n</div>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\n\r\nimport { CuiButtonModule } from '../../../../components/button';\r\nimport { CuiDateRangeCalendarComponent } from '../../../date-range-calendar';\r\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\r\nimport { CuiSvgModule } from '../../../../components/svg';\r\nimport type { CuiActiveFilter, CuiDateFilterField, CuiDateOperator, CuiFilterBarTranslations } from '../../filter-bar.interfaces';\r\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\r\n\r\ninterface OperatorOption {\r\n    value: CuiDateOperator;\r\n    label: string;\r\n}\r\n\r\nconst DEFAULT_OPERATOR_LABELS: Record<CuiDateOperator, string> = {\r\n    on: 'On',\r\n    before: 'Before',\r\n    after: 'After',\r\n    between: 'Between'\r\n};\r\n\r\n@Component({\r\n    selector: 'cui-date-filter',\r\n    standalone: true,\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiDateRangeCalendarComponent,\r\n        CuiDropdownDirective,\r\n        CuiFilterRemoveButtonComponent,\r\n        CuiSvgModule\r\n    ],\r\n    templateUrl: './date-filter.template.html',\r\n    styleUrls: ['./date-filter.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDateFilterComponent {\r\n    public readonly filter = input.required<CuiActiveFilter>();\r\n    public readonly translations = input.required<CuiFilterBarTranslations>();\r\n    public readonly removed = output<string>();\r\n    public readonly changed = output<CuiActiveFilter>();\r\n\r\n    protected readonly operatorOptions = computed((): OperatorOption[] => {\r\n        const field = this.filter().field as CuiDateFilterField;\r\n        const operators: CuiDateOperator[] = field.dateOperators ?? ['on', 'before', 'after', 'between'];\r\n\r\n        return operators.map((op) => ({\r\n            value: op,\r\n            label: field.operatorLabels?.[op] ?? DEFAULT_OPERATOR_LABELS[op]\r\n        }));\r\n    });\r\n\r\n    protected readonly currentOperator = computed((): CuiDateOperator => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'date' ? f.value.operator : 'on';\r\n    });\r\n\r\n    protected readonly operatorLabel = computed(() => {\r\n        const options = this.operatorOptions();\r\n        const op = options.find((o) => o.value === this.currentOperator());\r\n\r\n        return op?.label ?? '';\r\n    });\r\n\r\n    protected readonly dateLabel = computed(() => {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'date') {\r\n            return '';\r\n        }\r\n\r\n        const dateValue = f.value;\r\n\r\n        if (dateValue.operator === 'between') {\r\n            if (dateValue.rangeStart && dateValue.rangeEnd) {\r\n                return `${this.formatDate(dateValue.rangeStart)} - ${this.formatDate(dateValue.rangeEnd)}`;\r\n            }\r\n\r\n            return '';\r\n        }\r\n\r\n        return dateValue.value ? this.formatDate(dateValue.value) : '';\r\n    });\r\n\r\n    protected readonly hasValue = computed(() => {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'date') {\r\n            return false;\r\n        }\r\n\r\n        if (f.value.operator === 'between') {\r\n            return !!f.value.rangeStart && !!f.value.rangeEnd;\r\n        }\r\n\r\n        return !!f.value.value;\r\n    });\r\n\r\n    protected readonly rangeStart = computed((): Date | null => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'date' && f.value.rangeStart ? new Date(f.value.rangeStart) : null;\r\n    });\r\n\r\n    protected readonly rangeEnd = computed((): Date | null => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'date' && f.value.rangeEnd ? new Date(f.value.rangeEnd) : null;\r\n    });\r\n\r\n    protected readonly selectedDate = computed((): Date | null => {\r\n        const f = this.filter();\r\n\r\n        return f.value.type === 'date' && f.value.value ? new Date(f.value.value) : null;\r\n    });\r\n\r\n    protected readonly calendarMode = computed((): 'single' | 'range' => (this.currentOperator() === 'between' ? 'range' : 'single'));\r\n\r\n    protected onRemove(): void {\r\n        this.removed.emit(this.filter().id);\r\n    }\r\n\r\n    protected selectOperator(operator: CuiDateOperator, dropdown: CuiDropdownDirective): void {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'date') {\r\n            return;\r\n        }\r\n\r\n        const isBetween = operator === 'between';\r\n\r\n        const updated: CuiActiveFilter = {\r\n            ...f,\r\n            value: {\r\n                type: 'date',\r\n                operator,\r\n                value: isBetween ? null : f.value.value,\r\n                rangeStart: isBetween ? f.value.rangeStart : null,\r\n                rangeEnd: isBetween ? f.value.rangeEnd : null\r\n            }\r\n        };\r\n\r\n        this.changed.emit(updated);\r\n        dropdown.close();\r\n    }\r\n\r\n    protected onRangeSelected(range: { start: Date; end: Date }, dropdown: CuiDropdownDirective): void {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'date') {\r\n            return;\r\n        }\r\n\r\n        this.changed.emit({\r\n            ...f,\r\n            value: {\r\n                type: 'date',\r\n                operator: 'between',\r\n                value: null,\r\n                rangeStart: range.start,\r\n                rangeEnd: range.end\r\n            }\r\n        });\r\n        dropdown.close();\r\n    }\r\n\r\n    protected onSingleDateSelected(date: Date, dropdown: CuiDropdownDirective): void {\r\n        const f = this.filter();\r\n\r\n        if (f.value.type !== 'date') {\r\n            return;\r\n        }\r\n\r\n        this.changed.emit({\r\n            ...f,\r\n            value: {\r\n                type: 'date',\r\n                operator: f.value.operator,\r\n                value: date,\r\n                rangeStart: null,\r\n                rangeEnd: null\r\n            }\r\n        });\r\n        dropdown.close();\r\n    }\r\n\r\n    private formatDate(date: Date): string {\r\n        return date.toLocaleDateString();\r\n    }\r\n}\r\n","<cui-filter-remove-button\r\n    [label]=\"filter().field.label\"\r\n    (removed)=\"onRemove()\"\r\n/>\r\n\r\n<button\r\n    type=\"button\"\r\n    class=\"date-filter__operator\"\r\n    [cuiDropdown]=\"operatorDropdownTpl\"\r\n    #operatorDropdown=\"cuiDropdown\"\r\n>\r\n    <span class=\"date-filter__operator-label\">{{ operatorLabel() }}</span>\r\n    <cui-svg icon=\"cuiIconChevronDown\" />\r\n</button>\r\n\r\n<button\r\n    type=\"button\"\r\n    class=\"date-filter__trigger\"\r\n    [class.date-filter__trigger--active]=\"hasValue()\"\r\n    [cuiDropdown]=\"calendarDropdownTpl\"\r\n    #calendarDropdown=\"cuiDropdown\"\r\n>\r\n    @if (dateLabel()) {\r\n        <span class=\"date-filter__value\">\r\n            {{ dateLabel() }}\r\n        </span>\r\n    } @else {\r\n        <span class=\"date-filter__placeholder\">Select date</span>\r\n    }\r\n    <cui-svg icon=\"cuiIconChevronDown\" />\r\n</button>\r\n\r\n<ng-template #operatorDropdownTpl>\r\n    <div class=\"date-filter__dropdown\">\r\n        @for (op of operatorOptions(); track op.value) {\r\n            <button\r\n                type=\"button\"\r\n                class=\"date-filter__option\"\r\n                [class.date-filter__option--selected]=\"currentOperator() === op.value\"\r\n                (click)=\"selectOperator(op.value, operatorDropdown)\"\r\n            >\r\n                {{ op.label }}\r\n            </button>\r\n        }\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #calendarDropdownTpl>\r\n    <div class=\"date-filter__calendar-dropdown\">\r\n        <cui-date-range-calendar\r\n            [mode]=\"calendarMode()\"\r\n            [startDate]=\"rangeStart()\"\r\n            [endDate]=\"rangeEnd()\"\r\n            [selectedDate]=\"selectedDate()\"\r\n            (rangeSelected)=\"onRangeSelected($event, calendarDropdown)\"\r\n            (dateSelected)=\"onSingleDateSelected($event, calendarDropdown)\"\r\n            (cancelled)=\"calendarDropdown.close()\"\r\n        />\r\n    </div>\r\n</ng-template>\r\n","// --- Public types (exported in public API) ---\r\n\r\nexport interface CuiBaseFilterField {\r\n    readonly id: string;\r\n    readonly label: string;\r\n    readonly operatorLabels?: Record<string, string>;\r\n}\r\n\r\nexport interface CuiStringFilterField extends CuiBaseFilterField {\r\n    readonly type: 'string';\r\n    readonly outputMapping: CuiStringOutputMapping;\r\n    readonly stringOperators?: CuiStringOperator[];\r\n}\r\n\r\nexport interface CuiSelectFilterField extends CuiBaseFilterField {\r\n    readonly type: 'select';\r\n    readonly outputMapping: CuiSelectOutputMapping;\r\n    readonly selectOptions: CuiFilterOption[];\r\n    readonly selectOperators?: CuiSelectOperator[];\r\n}\r\n\r\nexport interface CuiMultiSelectFilterField extends CuiBaseFilterField {\r\n    readonly type: 'multiselect';\r\n    readonly outputMapping: CuiMultiSelectOutputMapping;\r\n    readonly multiSelectOptions: CuiFilterOption[];\r\n    readonly multiSelectOperators?: CuiMultiSelectOperator[];\r\n}\r\n\r\nexport interface CuiDateFilterField extends CuiBaseFilterField {\r\n    readonly type: 'date';\r\n    readonly outputMapping: CuiDateOutputMapping;\r\n    readonly dateOperators?: CuiDateOperator[];\r\n}\r\n\r\nexport interface CuiRangeFilterField extends CuiBaseFilterField {\r\n    readonly type: 'range';\r\n    readonly outputMapping: CuiRangeOutputMapping;\r\n    readonly rangeConfig?: { readonly minPlaceholder?: string; readonly maxPlaceholder?: string };\r\n}\r\n\r\nexport type CuiFilterField =\r\n    | CuiStringFilterField\r\n    | CuiSelectFilterField\r\n    | CuiMultiSelectFilterField\r\n    | CuiDateFilterField\r\n    | CuiRangeFilterField;\r\n\r\nexport type CuiStringOutputMapping = { readonly value: string };\r\nexport type CuiSelectOutputMapping = { readonly value: string };\r\nexport type CuiMultiSelectOutputMapping = { readonly values: string };\r\nexport type CuiDateOutputMapping = { readonly start: string; readonly end: string };\r\nexport type CuiRangeOutputMapping = { readonly min: string; readonly max: string };\r\n\r\nexport interface CuiFilterOption {\r\n    readonly value: string;\r\n    readonly label: string;\r\n}\r\n\r\nexport type CuiStringOperator = 'contains' | 'equals' | 'startsWith' | 'endsWith';\r\nexport type CuiSelectOperator = 'equals' | 'notEquals';\r\nexport type CuiMultiSelectOperator = 'in' | 'notIn' | 'containsAll';\r\nexport type CuiDateOperator = 'between' | 'on' | 'after' | 'before';\r\n\r\nexport interface CuiFilterBarTranslations {\r\n    readonly addFilter: string;\r\n    readonly apply: string;\r\n    readonly cancel: string;\r\n    readonly enterValue: string;\r\n    readonly selectValue: string;\r\n    readonly selectValues: string;\r\n    readonly filterBy: string;\r\n}\r\n\r\nexport const CUI_FILTER_BAR_DEFAULT_TRANSLATIONS: CuiFilterBarTranslations = {\r\n    addFilter: 'Add filter',\r\n    apply: 'Apply',\r\n    cancel: 'Cancel',\r\n    enterValue: 'Enter value',\r\n    selectValue: 'Select value',\r\n    selectValues: 'Select values',\r\n    filterBy: 'Filter by'\r\n};\r\n\r\n// --- Internal types (NOT exported in public API) ---\r\n\r\nexport type CuiFilterValue =\r\n    | { readonly type: 'string'; readonly operator: CuiStringOperator; readonly value: string }\r\n    | { readonly type: 'select'; readonly operator: CuiSelectOperator; readonly value: string | null }\r\n    | { readonly type: 'multiselect'; readonly operator: CuiMultiSelectOperator; readonly values: string[] }\r\n    | { readonly type: 'date'; readonly operator: CuiDateOperator; readonly value: Date | null; readonly rangeStart: Date | null; readonly rangeEnd: Date | null }\r\n    | { readonly type: 'range'; readonly min: number | null; readonly max: number | null };\r\n\r\nexport interface CuiActiveFilter {\r\n    readonly id: string;\r\n    readonly field: CuiFilterField;\r\n    readonly value: CuiFilterValue;\r\n}\r\n","import type {\r\n    CuiActiveFilter,\r\n    CuiDateFilterField,\r\n    CuiDateOperator,\r\n    CuiFilterField,\r\n    CuiFilterValue,\r\n    CuiMultiSelectFilterField,\r\n    CuiRangeFilterField,\r\n    CuiSelectFilterField,\r\n    CuiStringFilterField\r\n} from './filter-bar.interfaces';\r\n\r\nexport function buildOutputObject(filters: CuiActiveFilter[]): Record<string, unknown> {\r\n    const result: Record<string, unknown> = {};\r\n\r\n    for (const filter of filters) {\r\n        const entries = extractEntries(filter.field, filter.value);\r\n\r\n        for (const [path, val] of entries) {\r\n            setByPath(result, path, val);\r\n        }\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction extractEntries(field: CuiFilterField, value: CuiFilterValue): [string, unknown][] {\r\n    switch (field.type) {\r\n        case 'string': {\r\n            const v = value as CuiFilterValue & { type: 'string' };\r\n            if (!v.value) return [];\r\n            return [[(field as CuiStringFilterField).outputMapping.value, v.value]];\r\n        }\r\n        case 'select': {\r\n            const v = value as CuiFilterValue & { type: 'select' };\r\n            if (v.value == null) return [];\r\n            return [[(field as CuiSelectFilterField).outputMapping.value, v.value]];\r\n        }\r\n        case 'multiselect': {\r\n            const v = value as CuiFilterValue & { type: 'multiselect' };\r\n            if (!v.values.length) return [];\r\n            return [[(field as CuiMultiSelectFilterField).outputMapping.values, v.values]];\r\n        }\r\n        case 'date': {\r\n            const v = value as CuiFilterValue & { type: 'date' };\r\n            const mapping = (field as CuiDateFilterField).outputMapping;\r\n            return buildDateEntries(v.operator, v.value, v.rangeStart, v.rangeEnd, mapping.start, mapping.end);\r\n        }\r\n        case 'range': {\r\n            const v = value as CuiFilterValue & { type: 'range' };\r\n            const mapping = (field as CuiRangeFilterField).outputMapping;\r\n            const entries: [string, unknown][] = [];\r\n            if (v.min != null) entries.push([mapping.min, v.min]);\r\n            if (v.max != null) entries.push([mapping.max, v.max]);\r\n            return entries;\r\n        }\r\n    }\r\n}\r\n\r\nfunction buildDateEntries(\r\n    operator: CuiDateOperator,\r\n    value: Date | null,\r\n    rangeStart: Date | null,\r\n    rangeEnd: Date | null,\r\n    startPath: string,\r\n    endPath: string\r\n): [string, unknown][] {\r\n    const entries: [string, unknown][] = [];\r\n\r\n    switch (operator) {\r\n        case 'on':\r\n            if (value) {\r\n                entries.push([startPath, formatDateStart(value)]);\r\n                entries.push([endPath, formatDateEnd(value)]);\r\n            }\r\n            break;\r\n        case 'before':\r\n            if (value) {\r\n                entries.push([endPath, formatDateEnd(value)]);\r\n            }\r\n            break;\r\n        case 'after':\r\n            if (value) {\r\n                entries.push([startPath, formatDateStart(value)]);\r\n            }\r\n            break;\r\n        case 'between':\r\n            if (rangeStart) entries.push([startPath, formatDateStart(rangeStart)]);\r\n            if (rangeEnd) entries.push([endPath, formatDateEnd(rangeEnd)]);\r\n            break;\r\n    }\r\n\r\n    return entries;\r\n}\r\n\r\nfunction formatDateStart(date: Date): string {\r\n    return formatDate(date) + 'T00:00:00';\r\n}\r\n\r\nfunction formatDateEnd(date: Date): string {\r\n    return formatDate(date) + 'T23:59:59';\r\n}\r\n\r\nfunction formatDate(date: Date): string {\r\n    const y = date.getFullYear();\r\n    const m = String(date.getMonth() + 1).padStart(2, '0');\r\n    const d = String(date.getDate()).padStart(2, '0');\r\n    return `${y}-${m}-${d}`;\r\n}\r\n\r\nfunction setByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\r\n    const keys = path.split('.');\r\n    let current: Record<string, unknown> = obj;\r\n\r\n    for (let i = 0; i < keys.length - 1; i++) {\r\n        const key = keys[i];\r\n        if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {\r\n            current[key] = {};\r\n        }\r\n        current = current[key] as Record<string, unknown>;\r\n    }\r\n\r\n    current[keys[keys.length - 1]] = value;\r\n}\r\n\r\nexport function buildDefaultValue(field: CuiFilterField): CuiFilterValue {\r\n    switch (field.type) {\r\n        case 'string':\r\n            return { type: 'string', operator: field.stringOperators?.[0] ?? 'contains', value: '' };\r\n        case 'select':\r\n            return { type: 'select', operator: field.selectOperators?.[0] ?? 'equals', value: null };\r\n        case 'multiselect':\r\n            return { type: 'multiselect', operator: field.multiSelectOperators?.[0] ?? 'in', values: [] };\r\n        case 'date':\r\n            return { type: 'date', operator: field.dateOperators?.[0] ?? 'on', value: null, rangeStart: null, rangeEnd: null };\r\n        case 'range':\r\n            return { type: 'range', min: null, max: null };\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\r\n\r\nimport {\r\n    CuiAddFilterButtonComponent,\r\n    CuiDateFilterComponent,\r\n    CuiFilterRemoveButtonComponent,\r\n    CuiMultiSelectFilterComponent,\r\n    CuiRangeFilterComponent,\r\n    CuiSelectFilterComponent,\r\n    CuiStringFilterComponent\r\n} from './components';\r\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiFilterField } from './filter-bar.interfaces';\r\nimport { CUI_FILTER_BAR_DEFAULT_TRANSLATIONS } from './filter-bar.interfaces';\r\nimport { buildDefaultValue, buildOutputObject } from './filter-bar.utils';\r\n\r\n@Component({\r\n    selector: 'cui-filter-bar',\r\n    standalone: true,\r\n    imports: [\r\n        CuiAddFilterButtonComponent,\r\n        CuiDateFilterComponent,\r\n        CuiFilterRemoveButtonComponent,\r\n        CuiMultiSelectFilterComponent,\r\n        CuiRangeFilterComponent,\r\n        CuiSelectFilterComponent,\r\n        CuiStringFilterComponent\r\n    ],\r\n    templateUrl: './filter-bar.template.html',\r\n    styleUrls: ['./filter-bar.style.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFilterBarComponent {\r\n    readonly fields = input.required<CuiFilterField[]>();\r\n    readonly translations = input<CuiFilterBarTranslations>(CUI_FILTER_BAR_DEFAULT_TRANSLATIONS);\r\n\r\n    readonly filterChange = output<Record<string, unknown>>();\r\n\r\n    readonly _filters = signal<CuiActiveFilter[]>([]);\r\n\r\n    readonly availableFields = computed(() => {\r\n        const usedFieldIds = new Set(this._filters().map(f => f.field.id));\r\n        return this.fields().filter(f => !usedFieldIds.has(f.id));\r\n    });\r\n\r\n    protected selectField(field: CuiFilterField): void {\r\n        const newFilter: CuiActiveFilter = {\r\n            id: crypto.randomUUID(),\r\n            field,\r\n            value: buildDefaultValue(field)\r\n        };\r\n\r\n        this._filters.set([...this._filters(), newFilter]);\r\n        this.emitFilterChange();\r\n    }\r\n\r\n    protected onFilterChanged(updated: CuiActiveFilter): void {\r\n        const next = this._filters().map(f => (f.id === updated.id ? updated : f));\r\n        this._filters.set(next);\r\n        this.emitFilterChange();\r\n    }\r\n\r\n    protected onFilterRemoved(id: string): void {\r\n        const next = this._filters().filter(f => f.id !== id);\r\n        this._filters.set(next);\r\n        this.emitFilterChange();\r\n    }\r\n\r\n    private emitFilterChange(): void {\r\n        this.filterChange.emit(buildOutputObject(this._filters()));\r\n    }\r\n}\r\n","<div class=\"cui-filter-bar\">\r\n    <div class=\"cui-filter-bar__list\">\r\n        @for (filter of _filters(); track filter.id) {\r\n            @switch (filter.field.type) {\r\n                @case ('string') {\r\n                    <cui-string-filter\r\n                        [filter]=\"filter\"\r\n                        [translations]=\"translations()\"\r\n                        (changed)=\"onFilterChanged($event)\"\r\n                        (removed)=\"onFilterRemoved($event)\"\r\n                    />\r\n                }\r\n                @case ('date') {\r\n                    <cui-date-filter\r\n                        [filter]=\"filter\"\r\n                        [translations]=\"translations()\"\r\n                        (changed)=\"onFilterChanged($event)\"\r\n                        (removed)=\"onFilterRemoved($event)\"\r\n                    />\r\n                }\r\n                @case ('range') {\r\n                    <cui-range-filter\r\n                        [filter]=\"filter\"\r\n                        [translations]=\"translations()\"\r\n                        (changed)=\"onFilterChanged($event)\"\r\n                        (removed)=\"onFilterRemoved($event)\"\r\n                    />\r\n                }\r\n                @case ('select') {\r\n                    <cui-select-filter\r\n                        [filter]=\"filter\"\r\n                        [translations]=\"translations()\"\r\n                        (changed)=\"onFilterChanged($event)\"\r\n                        (removed)=\"onFilterRemoved($event)\"\r\n                    />\r\n                }\r\n                @case ('multiselect') {\r\n                    <cui-multiselect-filter\r\n                        [filter]=\"filter\"\r\n                        [translations]=\"translations()\"\r\n                        (changed)=\"onFilterChanged($event)\"\r\n                        (removed)=\"onFilterRemoved($event)\"\r\n                    />\r\n                }\r\n            }\r\n        }\r\n\r\n        @if (availableFields().length > 0) {\r\n            <cui-add-filter-button\r\n                [availableFields]=\"availableFields()\"\r\n                [addFilterLabel]=\"translations().addFilter\"\r\n                (fieldSelected)=\"selectField($event)\"\r\n            />\r\n        }\r\n    </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiFilterBarComponent } from './filter-bar.component';\r\n\r\n@NgModule({\r\n    imports: [CuiFilterBarComponent],\r\n    exports: [CuiFilterBarComponent]\r\n})\r\nexport class CuiFilterBarModule {}\r\n","import { Translation } from '@jsverse/transloco';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\n\r\nexport const COMBINED_TEXT_BLOCK_PART = 'combined-text-block-part';\r\nexport const COMBINED_TEXT_BLOCK = 'combined-text-block';\r\nexport const COMBINED_TEXT_BLOCK_NAME = 'paragraph';\r\nexport const COMBINED_TEXT_BLOCK_ADDED = 'combinedTextBlockAdded';\r\nexport const COMBINED_TEXT_BLOCK_UPDATED = 'combinedTextBlockUpdated';\r\nexport const COMBINED_TEXT_BLOCK_REMOVED = 'combinedTextBlockRemoved';\r\n\r\nexport const SPLIT_MAX_LENGTH = 1000;\r\nexport const SPLIT_LENGTH = 500;\r\nexport const MERGE_MIN_LENGTH = 300;\r\n\r\nexport const EDITOR_SELECTOR = '[data-editor]';\r\nexport const DEFAULT_PLACEHOLDER = \"Type text or '/' for commands...\";\r\nexport const DEFAULT_READONLY_PLACEHOLDER = \"No 'Description' was provided\";\r\nexport const DEFAULT_CONFIG: CuiEditorConfig = {\r\n    tools: {},\r\n    readOnly: false,\r\n    autofocus: false\r\n};\r\n\r\nexport const CuiEditorTranslations: Record<string, Promise<Translation>> = {\r\n    en: import('../i18n/en.json')\r\n} as const;\r\n","import type { BlockToolData } from '@editorjs/editorjs';\r\nimport Header from '@editorjs/header';\r\n\r\nexport class CuiHeaderTool extends Header {\r\n    constructor(data: any) {\r\n        super(data);\r\n    }\r\n\r\n    public override validate(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public override render(): HTMLHeadingElement {\r\n        return super.render();\r\n    }\r\n\r\n    public override save(block: HTMLHeadingElement): BlockToolData {\r\n        return super.save(block);\r\n    }\r\n}\r\n","import List from '@editorjs/list';\r\n\r\nexport class CuiListTool extends List {\r\n    constructor(data: any) {\r\n        super(data);\r\n    }\r\n\r\n    public override render(): HTMLElement {\r\n        return super.render() as HTMLElement;\r\n    }\r\n}\r\n","import type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport type { CuiParent } from '../interfaces/parent';\r\n\r\nexport class CuiSelectionBase {\r\n    private readonly LIST_CLASS = 'cdx-list__item';\r\n    private readonly SELECTED_TEXT_CLASS = '_selected';\r\n\r\n    public TAG = 'B';\r\n    public COMMAND = 'bold';\r\n\r\n    protected readonly api!: API;\r\n    protected button!: HTMLButtonElement;\r\n    protected _state = false;\r\n\r\n    public static get isInline(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public get state(): boolean {\r\n        return this._state;\r\n    }\r\n\r\n    public set state(state: boolean) {\r\n        this._state = state;\r\n\r\n        this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n    }\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        this.api = data.api;\r\n    }\r\n\r\n    public wrap(range: Range): void {\r\n        const { startContainer, endContainer } = range;\r\n\r\n        this.addSelectionToDOM(range, startContainer, endContainer);\r\n    }\r\n\r\n    public unwrap(): void {\r\n        document.execCommand(this.COMMAND);\r\n    }\r\n\r\n    public checkState(): boolean {\r\n        this.state = document.queryCommandState(this.COMMAND);\r\n\r\n        return this.state;\r\n    }\r\n\r\n    public surround(range: Range): void {\r\n        if (this.state) {\r\n            this.unwrap();\r\n\r\n            return;\r\n        }\r\n\r\n        this.wrap(range);\r\n    }\r\n\r\n    public createElement(text = ''): HTMLElement {\r\n        const element = document.createElement(this.TAG);\r\n\r\n        element.textContent = text;\r\n\r\n        return element;\r\n    }\r\n\r\n    public addSelectionToDOM(range: Range, startBlock: Node, endBlock: Node): void {\r\n        const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n        const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n        const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n        if (!className || startParent === endParent) {\r\n            this.addSelectionForOnlyChild(range);\r\n\r\n            return;\r\n        }\r\n\r\n        this.addSelectionForChildren(startParent, endParent);\r\n    }\r\n\r\n    private addSelectionForOnlyChild(range: Range): void {\r\n        const selectedText = range.extractContents();\r\n        const selection = this.createElement();\r\n\r\n        selection.appendChild(selectedText);\r\n        range.insertNode(selection);\r\n    }\r\n\r\n    private addSelectionForChildren(startParent: Element, endParent: Element): void {\r\n        const nodes = this.getSelectedNodesFromDOM(startParent, endParent);\r\n\r\n        nodes.forEach((node) => (node as HTMLElement).classList.add(this.SELECTED_TEXT_CLASS));\r\n\r\n        document.execCommand(this.COMMAND);\r\n\r\n        nodes.forEach((node) => (node as HTMLElement).classList.remove(this.SELECTED_TEXT_CLASS));\r\n    }\r\n\r\n    private getSelectedNodesFromDOM(startParent: Element, endParent: Element): Element[] {\r\n        const nodes = [startParent];\r\n        let next = startParent.nextSibling;\r\n\r\n        while (next && next !== endParent) {\r\n            nodes.push(next as Element);\r\n\r\n            next = next?.nextSibling || null;\r\n        }\r\n\r\n        nodes.push(endParent);\r\n\r\n        return nodes;\r\n    }\r\n\r\n    private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n        const nodeParent = node.parentElement as Element;\r\n        let parent = nodeParent;\r\n        let resultClassName = '';\r\n\r\n        for (const className of classes) {\r\n            const parentWithClass = parent.closest('.' + className);\r\n\r\n            if (!parentWithClass) {\r\n                continue;\r\n            }\r\n\r\n            parent = parentWithClass;\r\n            resultClassName = className;\r\n            break;\r\n        }\r\n\r\n        return { className: resultClassName, parent };\r\n    }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiBoldInlineTool extends CuiSelectionBase implements InlineTool {\r\n    public override readonly COMMAND = 'bold';\r\n\r\n    public static title = 'Bold';\r\n\r\n    public static get sanitize(): SanitizerConfig {\r\n        return {\r\n            b: {}\r\n        };\r\n    }\r\n\r\n    private readonly CSS = {\r\n        button: 'ce-inline-tool',\r\n        buttonActive: 'ce-inline-tool--active',\r\n        buttonModifier: 'ce-inline-tool--bold'\r\n    };\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        super(data);\r\n    }\r\n\r\n    public render(): HTMLButtonElement {\r\n        this.button = document.createElement('button') as HTMLButtonElement;\r\n        this.button.type = 'button';\r\n        this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n        /* eslint-disable */\r\n        this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n            <path d=\"M7.5 10.0002V5.91683C7.5 5.8708 7.53731 5.8335 7.58333 5.8335H8.66667C9.58333 5.8335 11.6667 5.91683 11.6667 7.91683C11.6667 7.91683 11.6667 10.0002 9.16667 10.0002M7.5 10.0002V14.0002C7.5 14.0922 7.57462 14.1668 7.66667 14.1668H10.4167C11.6667 14.1668 12.5 13.3335 12.5 12.0835C12.5 9.754 9.16667 10.0002 9.16667 10.0002M7.5 10.0002H9.16667\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n        </svg>`;\r\n        /* eslint-enable */\r\n\r\n        return this.button;\r\n    }\r\n\r\n    public get shortcut(): string {\r\n        return 'CMD+B';\r\n    }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiItalicInlineTool extends CuiSelectionBase implements InlineTool {\r\n    public override readonly COMMAND = 'italic';\r\n\r\n    public override readonly TAG = 'I';\r\n    public static title = 'Italic';\r\n\r\n    public static get sanitize(): SanitizerConfig {\r\n        return {\r\n            i: {}\r\n        };\r\n    }\r\n\r\n    private readonly CSS = {\r\n        button: 'ce-inline-tool',\r\n        buttonActive: 'ce-inline-tool--active',\r\n        buttonModifier: 'ce-inline-tool--italic'\r\n    };\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        super(data);\r\n    }\r\n\r\n    public render(): HTMLButtonElement {\r\n        this.button = document.createElement('button') as HTMLButtonElement;\r\n        this.button.type = 'button';\r\n        this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n        /* eslint-disable */\r\n        this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n            <path d=\"M11.118 8.3335C10.3532 10.6116 9.16797 14.1668 9.16797 14.1668\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n            <path d=\"M11.8404 5.8335H11.832\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n        </svg>`;\r\n        /* eslint-enable */\r\n\r\n        return this.button;\r\n    }\r\n\r\n    public get shortcut(): string {\r\n        return 'CMD+I';\r\n    }\r\n}\r\n","import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n    return ({ value }: AbstractControl): ValidationErrors | null => {\r\n        try {\r\n            new URL(value);\r\n\r\n            return null;\r\n        } catch {\r\n            return { url: true };\r\n        }\r\n    };\r\n}\r\n","export const BlockConversionToCombined = {\r\n    paragraph: 'combinedTextBlock'\r\n};\r\n\r\nexport const enum EventActions {\r\n    add = 'block-added',\r\n    update = 'block-changed',\r\n    remove = 'block-removed'\r\n}\r\n","export function generateId(): string {\r\n    return '_' + Math.random().toString(36).substring(2, 9);\r\n}\r\n","import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type EditorJS from '@editorjs/editorjs';\r\nimport type { BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport type { Observable } from 'rxjs';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { CUI_JTEXT_API_SERVICE, CuiBlock } from '@cuby-ui/api';\r\n\r\nimport {\r\n    COMBINED_TEXT_BLOCK_ADDED,\r\n    COMBINED_TEXT_BLOCK_NAME,\r\n    COMBINED_TEXT_BLOCK_PART,\r\n    COMBINED_TEXT_BLOCK_REMOVED,\r\n    COMBINED_TEXT_BLOCK_UPDATED\r\n} from '../constants';\r\nimport type {\r\n    CuiCombinedBlockAddingEvent,\r\n    CuiCombinedBlockToolData,\r\n    CuiCombinedPartBlock,\r\n    CuiEventActionData,\r\n    CuiFullBlockData\r\n} from '../interfaces';\r\nimport { generateId } from '../utils/generate-id';\r\nimport { EventActions } from './editor-service.options';\r\n\r\n@Injectable()\r\nexport class CuiEditorService {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly jtextService = inject(CUI_JTEXT_API_SERVICE);\r\n\r\n    public sortEventsByTypes(events: BlockMutationEvent[]): CuiEventActionData {\r\n        const blocks: CuiEventActionData = {\r\n            'block-removed': [],\r\n            'block-added': [],\r\n            'block-changed': []\r\n        };\r\n\r\n        events.forEach((editorEvent) => {\r\n            if (editorEvent.detail.target.name === COMBINED_TEXT_BLOCK_NAME) {\r\n                return;\r\n            }\r\n\r\n            const eventType = editorEvent.type;\r\n\r\n            if (eventType === EventActions.update) {\r\n                const changedBlock = blocks[EventActions.add].find(\r\n                    (block) => block.detail.target.id === editorEvent.detail.target.id\r\n                );\r\n\r\n                if (changedBlock) {\r\n                    return;\r\n                }\r\n            }\r\n\r\n            if (eventType === EventActions.remove) {\r\n                const len = blocks[EventActions.add].length;\r\n\r\n                blocks[EventActions.add] = blocks[EventActions.add].filter(\r\n                    (block) => block.detail.target.id !== editorEvent.detail.target.id\r\n                );\r\n\r\n                if (len > blocks[EventActions.add].length) {\r\n                    return;\r\n                }\r\n            }\r\n\r\n            blocks[eventType as EventActions].push(editorEvent);\r\n        });\r\n\r\n        return blocks;\r\n    }\r\n\r\n    public collectAddedBlocksRequest(editorId: string, addedBlocks: CuiFullBlockData[]): Observable<string[]> {\r\n        const addBlocksBody = {\r\n            jtextContainerId: editorId,\r\n            position: addedBlocks[0]?.index,\r\n            block: addedBlocks.map((e) => e.block)\r\n        };\r\n        const addBlocks$ = addedBlocks.length ? this.jtextService.createBlocks(addBlocksBody) : of([]);\r\n\r\n        return addBlocks$;\r\n    }\r\n\r\n    public collectUpdatedBlocksRequest(\r\n        updatedBlocks: CuiBlock[],\r\n        blockIdsMap: Map<string, string>\r\n    ): Observable<CuiBlock[]> {\r\n        const updatedBlocksWithId = updatedBlocks.reduce((acc, block) => {\r\n            const blockWithId = {\r\n                ...block,\r\n                id: blockIdsMap.get(block.id!)\r\n            };\r\n\r\n            if (blockWithId.id) {\r\n                acc.push(blockWithId);\r\n            }\r\n\r\n            return acc;\r\n        }, [] as CuiBlock[]);\r\n\r\n        const updateBlocksArray = updatedBlocksWithId.map((block) => this.jtextService.updateBlock(block));\r\n        const updateBlocks$ = updatedBlocksWithId.length ? forkJoin(updateBlocksArray) : of([]);\r\n\r\n        return updateBlocks$;\r\n    }\r\n\r\n    public collectRemovedBlocksRequest(\r\n        editorId: string,\r\n        removedBlocksIds: string[],\r\n        blockIdsMap: Map<string, string>\r\n    ): Observable<void> {\r\n        const removedBlocks: string[] = removedBlocksIds.reduce((blockIds, blockId) => {\r\n            const backendID = blockIdsMap.get(blockId);\r\n\r\n            if (backendID) {\r\n                blockIds.push(backendID);\r\n            }\r\n\r\n            return blockIds;\r\n        }, [] as string[]);\r\n\r\n        const uniqueBackendIds = [...new Set(removedBlocks)];\r\n        const removeBlocks$ =\r\n            uniqueBackendIds.length ? this.jtextService.deleteBlocks(editorId, uniqueBackendIds) : of();\r\n\r\n        removedBlocks.forEach((removedBlock) => {\r\n            blockIdsMap.delete(removedBlock);\r\n        });\r\n\r\n        return removeBlocks$;\r\n    }\r\n\r\n    public getFullBlockData(event: BlockMutationEvent, editorData: OutputData): CuiFullBlockData {\r\n        const target = event.detail.target;\r\n        const index = Number(target.holder.dataset['index']);\r\n        const blockIndex = (event.detail as unknown as { index: number }).index;\r\n        const blockType = target.name;\r\n        const blockId = target.id;\r\n        const currentBlockByIndex = editorData.blocks[blockIndex];\r\n        const blockData = currentBlockByIndex?.id === blockId ? editorData.blocks[blockIndex].data : { text: '' };\r\n\r\n        return {\r\n            index,\r\n            id: blockId,\r\n            block: {\r\n                type: blockType,\r\n                data: blockData\r\n            }\r\n        };\r\n    }\r\n\r\n    public setListenersOnCustomBlockChanges(\r\n        editor: EditorJS,\r\n        data: {\r\n            removedCallback: (blockIds: string[]) => void;\r\n            updatedCallback: (updatedBlocks: CuiBlock[]) => void;\r\n            addedCallback: (data: CuiCombinedBlockAddingEvent) => void;\r\n        }\r\n    ): void {\r\n        editor.on(COMBINED_TEXT_BLOCK_ADDED, data.addedCallback);\r\n        editor.on(COMBINED_TEXT_BLOCK_UPDATED, data.updatedCallback);\r\n        editor.on(COMBINED_TEXT_BLOCK_REMOVED, data.removedCallback);\r\n    }\r\n\r\n    public setStartBlock(\r\n        editorId: string,\r\n        callback: (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => void\r\n    ): void {\r\n        const blockId = generateId();\r\n        const emptyBlock: CuiCombinedPartBlock = {\r\n            type: COMBINED_TEXT_BLOCK_PART,\r\n            data: {\r\n                text: '',\r\n                parentId: blockId,\r\n                parentType: COMBINED_TEXT_BLOCK_NAME\r\n            }\r\n        };\r\n        const body = {\r\n            position: 0,\r\n            block: emptyBlock,\r\n            jtextContainerId: editorId\r\n        };\r\n\r\n        this.jtextService\r\n            .createBlock(body)\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((id) => {\r\n                emptyBlock.id = id;\r\n\r\n                const block: CuiBlock<CuiCombinedBlockToolData> = {\r\n                    id: blockId,\r\n                    type: COMBINED_TEXT_BLOCK_NAME,\r\n                    data: {\r\n                        id: blockId,\r\n                        textBlocks: [emptyBlock]\r\n                    }\r\n                };\r\n\r\n                callback(block, id);\r\n            });\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { Tool } from '../components/editor-tool-modal';\r\n\r\nimport { MarkerType } from './markers-service.options';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiMarkersService {\r\n    protected roles: Tool[] = [];\r\n    protected tools: Tool[] = [\r\n        {\r\n            id: '0',\r\n            image: 'blob:https://www.figma.com/f985f4fc-abc6-4727-857e-80633836e2b2',\r\n            title: 'Шуруповерт',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '1',\r\n            image: 'blob:https://www.figma.com/92ad9b38-566c-4ff6-84ba-0b20b24fef39',\r\n            title: 'Молоток',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '2',\r\n            image: '/assets/image 545.png',\r\n            title: 'Лопата',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '3',\r\n            image: '/assets/image 545.png',\r\n            title: 'Лопата',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '4',\r\n            image: '/assets/image 545.png',\r\n            title: 'Лопата',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '5',\r\n            image: '/assets/image 545.png',\r\n            title: 'Лопата',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '6',\r\n            image: '/assets/image 545.png',\r\n            title: 'Лопата',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '7',\r\n            image: '/assets/image 545.png',\r\n            title: 'Лопата',\r\n            type: MarkerType.tool\r\n        },\r\n        {\r\n            id: '8',\r\n            image: '/assets/image 545.png',\r\n            title: 'Лопата',\r\n            type: MarkerType.tool\r\n        }\r\n    ];\r\n\r\n    public getMarkersByType(type: MarkerType): Tool[] {\r\n        return type === MarkerType.role ? this.roles : this.tools;\r\n    }\r\n\r\n    public getMarkerObjectByType(type: MarkerType, id: string): Tool | undefined {\r\n        const markersArray = this.getMarkersByType(type);\r\n\r\n        return markersArray.find((marker) => marker.id === id);\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\n\r\nimport type { Tool } from '../../../editor-tool-modal';\r\n\r\n@Component({\r\n    selector: 'cc-select-option',\r\n    standalone: true,\r\n    imports: [NgIf],\r\n    templateUrl: './select-option.component.html',\r\n    styleUrls: ['./select-option.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SelectOptionComponent {\r\n    @Input({ required: true })\r\n    public tool!: Tool;\r\n}\r\n","<ng-container *ngIf=\"tool\">\r\n    <img\r\n        *ngIf=\"tool.image\"\r\n        class=\"image\"\r\n        [src]=\"tool.image\"\r\n        alt=\"\"\r\n    />\r\n    <h3 class=\"title\">{{ tool.title }}</h3>\r\n</ng-container>\r\n","import { DOCUMENT, NgFor, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    forwardRef,\r\n    HostBinding,\r\n    inject,\r\n    Input,\r\n    signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';\r\n\r\nimport type { Tool } from '../editor-tool-modal/editor-tool-modal.options';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { MarkerType } from '../../services/markers-service.options';\r\nimport { CuiMarkersService } from '../../services/markers.service';\r\n\r\nimport { SelectOptionComponent } from './component/select-item/select-option.component';\r\n\r\n@Component({\r\n    selector: 'cc-marker-select',\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiContextMenuModule,\r\n        CuiInputModule,\r\n        CuiLabelModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        SelectOptionComponent,\r\n        NgIf,\r\n        NgFor\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './marker-select.component.html',\r\n    styleUrls: ['./marker-select.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    hostDirectives: [CuiClickOutsideDirective],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MarkerSelectComponent),\r\n            multi: true\r\n        }\r\n    ]\r\n})\r\nexport class MarkerSelectComponent implements OnInit, OnDestroy {\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n    private readonly element = inject(ElementRef).nativeElement;\r\n    private readonly markersService = inject(CuiMarkersService);\r\n\r\n    private SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n\r\n    @Input()\r\n    public target!: HTMLButtonElement;\r\n\r\n    @Input()\r\n    public set space(value: number) {\r\n        this.SPACE_BETWEEN_TARGET_AND_LIST = value;\r\n    }\r\n\r\n    protected isVisible = signal(false);\r\n    protected isHidden = signal(true);\r\n    protected editor!: HTMLElement;\r\n    protected value!: CuiNullable<Tool>;\r\n    // TODO: set current type\r\n    protected elements = this.markersService.getMarkersByType(MarkerType.tool);\r\n    protected onChange!: CuiOnChange<unknown>;\r\n    protected onTouched!: CuiOnTouched;\r\n    protected readonly targetToggleEventListener = (): void => {\r\n        this.isVisible.update((prev) => !prev);\r\n\r\n        if (!this.isVisible()) {\r\n            return;\r\n        }\r\n\r\n        this.calculateDropdownPosition();\r\n    };\r\n\r\n    @HostBinding('class._hidden')\r\n    protected get hide(): boolean {\r\n        return this.isHidden();\r\n    }\r\n\r\n    public writeValue(value: Tool): void {\r\n        this.value = value;\r\n    }\r\n\r\n    public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    public registerOnTouched(fn: CuiOnTouched): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    protected onScroll(): void {\r\n        this.isVisible.set(false);\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initTargetElementListener();\r\n        this.initClickOutsideSubscription();\r\n        this.initOnCloseWhenEditorScroll();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.destroyEventListeners();\r\n    }\r\n\r\n    protected onToolClick(tool: Tool): void {\r\n        this.value = tool;\r\n\r\n        this.onChange(this.value);\r\n        this.onTouched();\r\n\r\n        // this.isVisible.set(false);\r\n    }\r\n\r\n    private initTargetElementListener(): void {\r\n        this.target.addEventListener('click', this.targetToggleEventListener);\r\n    }\r\n\r\n    private initClickOutsideSubscription(): void {\r\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n            if (this.target.contains(target) || !this.isVisible()) {\r\n                return;\r\n            }\r\n\r\n            this.isVisible.set(false);\r\n        });\r\n    }\r\n\r\n    private initOnCloseWhenEditorScroll(): void {\r\n        this.editor = this.element.closest(EDITOR_SELECTOR);\r\n\r\n        this.editor?.addEventListener('scroll', this.onScroll.bind(this));\r\n    }\r\n\r\n    private destroyEventListeners(): void {\r\n        this.editor?.removeEventListener('scroll', this.onScroll.bind(this));\r\n        this.target?.addEventListener('click', this.targetToggleEventListener);\r\n    }\r\n\r\n    private calculateDropdownPosition(): void {\r\n        this.isHidden.set(true);\r\n\r\n        setTimeout(() => {\r\n            const target = this.target;\r\n            const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n            const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n                this.document.documentElement;\r\n            const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);\r\n            const distanceToRight = documentClientWidth - targetRectLeft;\r\n            const isListRight = distanceToRight < this.element.offsetWidth;\r\n            const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n            this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n            this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n            this.isHidden.set(false);\r\n        });\r\n    }\r\n\r\n    private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n        if (isListRight) {\r\n            this.element.style.right = 'auto';\r\n            this.element.style.left = left;\r\n\r\n            return;\r\n        }\r\n\r\n        this.element.style.right = left - this.element.offsetWidth + width;\r\n        this.element.style.left = 'auto';\r\n    }\r\n\r\n    private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n        if (isListAbove) {\r\n            this.element.style.top =\r\n                bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n\r\n            return;\r\n        }\r\n\r\n        this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n    }\r\n}\r\n","<ng-container *ngIf=\"isVisible()\">\r\n    <div\r\n        #dropdown\r\n        class=\"dropdown\"\r\n    >\r\n        <header class=\"header\">\r\n            <cui-input-text\r\n                class=\"header__input\"\r\n                cuiTextFieldId=\"estimated\"\r\n                cuiTextFieldPlaceholder=\"Search...\"\r\n            />\r\n            <button\r\n                cuiButton\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconFiltersLines\"\r\n            ></button>\r\n        </header>\r\n        <div class=\"scrollable-content\">\r\n            <cc-select-option\r\n                *ngFor=\"let element of elements\"\r\n                [class._selected]=\"element.id === value?.id\"\r\n                (click)=\"onToolClick(element)\"\r\n                [tool]=\"element\"\r\n            />\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n","export const MARKER_SELECT_SELECTOR = 'marker-select';\r\n","import { DOCUMENT, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    DestroyRef,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostBinding,\r\n    Input,\r\n    Output,\r\n    computed,\r\n    inject,\r\n    signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport {\r\n    CuiButtonModule,\r\n    CuiFormFieldModule,\r\n    CuiHintModule,\r\n    CuiInputModule,\r\n    CuiLabelModule,\r\n    CuiSvgModule\r\n} from '../../../components';\r\n\r\nimport { urlValidator } from '../../utils/url.validator';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { CuiMarkersService } from '../../services';\r\nimport type { Tool } from '../editor-tool-modal';\r\nimport { MarkerSelectComponent } from '../marker-select';\r\n\r\nimport type { MarkerData, MarkerDataControl } from './marker-modal.interfaces';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiElementDirective,\r\n        CuiFormFieldModule,\r\n        CuiHintModule,\r\n        CuiInputModule,\r\n        CuiLabelModule,\r\n        CuiSvgModule,\r\n        FormsModule,\r\n        MarkerSelectComponent,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective,\r\n        NgIf\r\n    ],\r\n    templateUrl: './marker-modal.component.html',\r\n    styleUrls: ['./marker-modal.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class MarkerModalComponent implements OnInit, OnDestroy {\r\n    private readonly element = inject(ElementRef).nativeElement;\r\n    private readonly document = inject(DOCUMENT);\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n    private readonly cuiIdService = inject(CuiIdService);\r\n    private readonly markersService = inject(CuiMarkersService);\r\n\r\n    protected readonly TITLE_MAX_LENGTH = 100;\r\n\r\n    protected readonly formTitle = signal('');\r\n    protected readonly isTitleEmpty = computed(() => !this.formTitle().length);\r\n    protected readonly isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);\r\n    protected readonly isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());\r\n    protected readonly titleId = this.cuiIdService.generate();\r\n    protected readonly dataId = this.cuiIdService.generate();\r\n\r\n    protected dynamicDataControl!: MarkerDataControl;\r\n    protected spaceBetweenTargetAndList = 5;\r\n    protected startTitle = '';\r\n\r\n    @Input()\r\n    public set title(value: string) {\r\n        this.startTitle = value;\r\n        this.formTitle.set(value);\r\n    }\r\n\r\n    @Input()\r\n    public set url(value: string) {\r\n        this.dynamicDataControl = new FormControl(value, {\r\n            nonNullable: true,\r\n            validators: [Validators.required, urlValidator()]\r\n        });\r\n    }\r\n\r\n    @Input()\r\n    public set tool(value: Tool) {\r\n        const tool = this.markersService.getMarkerObjectByType(value.type!, value.id);\r\n        this.dynamicDataControl = new FormControl(tool, {\r\n            nonNullable: true,\r\n            validators: [Validators.required]\r\n        });\r\n    }\r\n\r\n    @Input()\r\n    public isGlobal = false;\r\n\r\n    @Input()\r\n    public isTool = false;\r\n\r\n    @Input()\r\n    public target!: HTMLButtonElement;\r\n\r\n    @Input()\r\n    public set space(value: number) {\r\n        this.spaceBetweenTargetAndList = value;\r\n    }\r\n\r\n    @Output()\r\n    public saveClicked = new EventEmitter<MarkerData>();\r\n\r\n    @Output()\r\n    public cancelClicked = new EventEmitter();\r\n\r\n    protected isVisible = signal(false);\r\n    protected isHidden = signal(true);\r\n    protected editor!: HTMLElement;\r\n    protected currentTool?: Tool;\r\n    protected readonly targetToggleEventListener = (): void => {\r\n        this.isVisible.update((prev) => !prev);\r\n\r\n        if (!this.isVisible()) {\r\n            return;\r\n        }\r\n\r\n        this.calculateDropdownPosition();\r\n    };\r\n\r\n    protected get isFormInvalid(): boolean {\r\n        return this.dynamicDataControl.invalid || this.isTitleInvalid();\r\n    }\r\n\r\n    protected get isDynamicDataErrorShown(): boolean {\r\n        return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;\r\n    }\r\n\r\n    @HostBinding('class._hidden')\r\n    protected get hide(): boolean {\r\n        return this.isHidden();\r\n    }\r\n\r\n    @HostBinding('class._fixed')\r\n    protected get fixed(): boolean {\r\n        return this.isGlobal;\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initTargetElementListener();\r\n        this.initClickOutsideSubscription();\r\n        this.initOnCloseWhenEditorScroll();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.destroyEventListeners();\r\n    }\r\n\r\n    protected onTitleLabelClick(element: HTMLDivElement): void {\r\n        const range = document.createRange();\r\n        const selection = window.getSelection();\r\n\r\n        range.selectNodeContents(element);\r\n        range.collapse(false);\r\n        selection?.removeAllRanges();\r\n        selection?.addRange(range);\r\n    }\r\n\r\n    protected onSave(): void {\r\n        if (this.isFormInvalid) {\r\n            return;\r\n        }\r\n\r\n        this.isVisible.set(false);\r\n        this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });\r\n    }\r\n\r\n    protected onScroll(): void {\r\n        this.isVisible.set(false);\r\n    }\r\n\r\n    protected onCancel(): void {\r\n        this.isVisible.set(false);\r\n        this.cancelClicked.emit();\r\n    }\r\n\r\n    protected onClearTitle(titleElement: HTMLElement): void {\r\n        this.formTitle.set('');\r\n\r\n        titleElement.textContent = '';\r\n        titleElement.focus();\r\n    }\r\n\r\n    protected onTitleChange(event: KeyboardEvent): void {\r\n        if (event.key === 'Enter') {\r\n            event.preventDefault();\r\n\r\n            return;\r\n        }\r\n\r\n        const target = event.target as HTMLInputElement;\r\n        const value = target.textContent!;\r\n\r\n        this.formTitle.set(value);\r\n    }\r\n\r\n    protected onTitlePaste(event: ClipboardEvent): void {\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n\r\n        if (!this.document) {\r\n            return;\r\n        }\r\n\r\n        const value = event.clipboardData?.getData('text/plain');\r\n        const target = event.target as HTMLElement;\r\n\r\n        this.document.execCommand('insertText', false, value);\r\n        setTimeout(() => this.formTitle.set(target.textContent!));\r\n    }\r\n\r\n    private initTargetElementListener(): void {\r\n        this.target.addEventListener('click', this.targetToggleEventListener);\r\n    }\r\n\r\n    private initClickOutsideSubscription(): void {\r\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n            if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {\r\n                return;\r\n            }\r\n\r\n            this.isVisible.set(false);\r\n        });\r\n    }\r\n\r\n    private initOnCloseWhenEditorScroll(): void {\r\n        this.editor = this.document.querySelector(EDITOR_SELECTOR) as HTMLElement;\r\n\r\n        this.editor.addEventListener('scroll', this.onScroll.bind(this));\r\n    }\r\n\r\n    private destroyEventListeners(): void {\r\n        this.editor.removeEventListener('scroll', this.onScroll.bind(this));\r\n        this.target.addEventListener('click', this.targetToggleEventListener);\r\n    }\r\n\r\n    private calculateDropdownPosition(): void {\r\n        this.isHidden.set(true);\r\n\r\n        setTimeout(() => {\r\n            const target = this.target;\r\n            const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n            const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n                this.document.documentElement;\r\n            const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);\r\n            const distanceToRight = documentClientWidth - targetRectLeft;\r\n            const isListRight = distanceToRight < this.element.offsetWidth;\r\n            const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n            this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n            this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n\r\n            this.isHidden.set(false);\r\n        });\r\n    }\r\n\r\n    private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n        if (this.isGlobal) {\r\n            this.changeGlobalPositionX(isListRight, width, left);\r\n\r\n            return;\r\n        }\r\n\r\n        if (isListRight) {\r\n            this.element.style.right = '0';\r\n            this.element.style.left = 'auto';\r\n\r\n            return;\r\n        }\r\n\r\n        this.element.style.right = 'auto';\r\n        this.element.style.left = '0';\r\n    }\r\n\r\n    private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n        if (this.isGlobal) {\r\n            this.changeGlobalPositionY(isListAbove, height, bottom);\r\n\r\n            return;\r\n        }\r\n\r\n        if (isListAbove) {\r\n            this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';\r\n            this.element.style.top = 'auto';\r\n\r\n            return;\r\n        }\r\n\r\n        this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';\r\n        this.element.style.bottom = 'auto';\r\n    }\r\n\r\n    private changeGlobalPositionX(isListRight: boolean, width: number, left: number): void {\r\n        if (isListRight) {\r\n            this.element.style.left = left - this.element.offsetWidth + width + 'px';\r\n\r\n            return;\r\n        }\r\n\r\n        this.element.style.left = left + 'px';\r\n    }\r\n\r\n    private changeGlobalPositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n        if (isListAbove) {\r\n            this.element.style.top =\r\n                bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';\r\n\r\n            return;\r\n        }\r\n\r\n        this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <ng-container *ngIf=\"isVisible()\">\r\n        <form\r\n            autocomplete=\"off\"\r\n            class=\"wrapper\"\r\n        >\r\n            <cui-form-field>\r\n                <!-- eslint-disable-next-line -->\r\n                <label\r\n                    [for]=\"titleId\"\r\n                    cuiLabel\r\n                    [isRequired]=\"true\"\r\n                    (click)=\"onTitleLabelClick(titleElement)\"\r\n                >\r\n                    {{ t('TITLE') }}\r\n                </label>\r\n                <!-- TODO: если найдется варик сделать через форму -->\r\n                <div\r\n                    class=\"title\"\r\n                    [class.title_invalid]=\"isTitleInvalid()\"\r\n                >\r\n                    <div\r\n                        #titleElement\r\n                        class=\"title__text\"\r\n                        contenteditable\r\n                        attr.data-placeholder=\"{{ t('TITLE') }}...\"\r\n                        (paste)=\"onTitlePaste($event)\"\r\n                        (keyup)=\"onTitleChange($event)\"\r\n                        [innerHTML]=\"startTitle\"\r\n                    ></div>\r\n                    <button\r\n                        type=\"button\"\r\n                        class=\"title__clear\"\r\n                        (click)=\"onClearTitle(titleElement)\"\r\n                    >\r\n                        <cui-svg\r\n                            icon=\"cuiIconClear\"\r\n                            color=\"var(--cui-base-300)\"\r\n                            class=\"title__icon\"\r\n                        />\r\n                    </button>\r\n                </div>\r\n\r\n                <cui-hint\r\n                    *ngIf=\"isTitleInvalid()\"\r\n                    hintType=\"error\"\r\n                >\r\n                    <ng-container *ngIf=\"isTitleEmpty()\">\r\n                        {{ t('FIELD_IS_REQUIRED') }}\r\n                    </ng-container>\r\n                    <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\r\n                        {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: TITLE_MAX_LENGTH }) }}\r\n                    </ng-container>\r\n                </cui-hint>\r\n            </cui-form-field>\r\n            <cui-form-field>\r\n                <label\r\n                    [for]=\"dataId\"\r\n                    cuiLabel\r\n                    [isRequired]=\"true\"\r\n                >\r\n                    {{ isTool ? t('TOOL') : t('URL') }}\r\n                </label>\r\n                <ng-container *ngIf=\"dynamicDataControl\">\r\n                    <ng-container *ngIf=\"isTool; else input\">\r\n                        <div>\r\n                            <button\r\n                                #target=\"elementRef\"\r\n                                class=\"button tool-button\"\r\n                                cuiButton\r\n                                type=\"button\"\r\n                                cuiElement\r\n                                appearance=\"outlined-gray\"\r\n                                size=\"sm\"\r\n                            >\r\n                                {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\r\n                            </button>\r\n                        </div>\r\n                        <cc-marker-select\r\n                            [formControl]=\"dynamicDataControl\"\r\n                            [target]=\"target.nativeElement\"\r\n                        />\r\n                    </ng-container>\r\n                    <ng-template #input>\r\n                        <cui-input-text\r\n                            [cuiTextFieldId]=\"dataId\"\r\n                            [formControl]=\"dynamicDataControl\"\r\n                            autocomplete=\"off\"\r\n                            [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\r\n                            cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\r\n                        />\r\n                        <cui-hint\r\n                            *ngIf=\"isDynamicDataErrorShown\"\r\n                            hintType=\"error\"\r\n                        >\r\n                            <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\r\n                                {{ t('FIELD_IS_REQUIRED') }}\r\n                            </ng-container>\r\n                            <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\r\n                                {{ t('INVALID_URL') }}\r\n                            </ng-container>\r\n                        </cui-hint>\r\n                    </ng-template>\r\n                </ng-container>\r\n            </cui-form-field>\r\n            <div class=\"buttons\">\r\n                <button\r\n                    cuiButton\r\n                    type=\"button\"\r\n                    appearance=\"outlined-gray\"\r\n                    size=\"sm\"\r\n                    (click)=\"onCancel()\"\r\n                >\r\n                    {{ t('CANCEL') }}\r\n                </button>\r\n                <button\r\n                    cuiButton\r\n                    type=\"submit\"\r\n                    appearance=\"action\"\r\n                    size=\"sm\"\r\n                    [disabled]=\"isFormInvalid\"\r\n                    (click)=\"onSave()\"\r\n                >\r\n                    {{ t('SAVE') }}\r\n                </button>\r\n            </div>\r\n        </form>\r\n    </ng-container>\r\n</ng-container>\r\n","export const MARKER_MODAL_SELECTOR = 'cc-marker-modal';\r\n","import { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, MarkerModalComponent } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal';\r\n\r\nexport function createLinkModal(tooltip: HTMLElement, link: HTMLLinkElement): CuiAngularElement<MarkerModalComponent> {\r\n    const linkModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n    const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n    linkModal.url = link.href;\r\n    linkModal.title = link.innerText;\r\n    linkModal.target = button;\r\n    linkModal.space = 15;\r\n\r\n    linkModal.addEventListener('saveClicked', (event: Event) => {\r\n        const customEvent = event as CustomEvent<MarkerData>;\r\n\r\n        if (typeof customEvent.detail.data === 'string') {\r\n            link.setAttribute('href', customEvent.detail.data);\r\n        }\r\n\r\n        link.innerHTML = customEvent.detail.title;\r\n\r\n        tooltip.remove();\r\n    });\r\n\r\n    linkModal.addEventListener('cancelClicked', () => {\r\n        tooltip.remove();\r\n    });\r\n\r\n    return linkModal;\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostBinding,\r\n    Input,\r\n    Output,\r\n    inject,\r\n    signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { skip } from 'rxjs';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { Tool } from './editor-tool-modal.options';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [CuiButtonModule],\r\n    templateUrl: './editor-tool-modal.component.html',\r\n    styleUrls: ['./editor-tool-modal.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class EditorToolModalComponent {\r\n    private readonly element = inject(ElementRef).nativeElement;\r\n    private readonly window = inject(CUI_WINDOW);\r\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n\r\n    private readonly SPACE_BETWEEN_TARGET_AND_LIST = 10;\r\n\r\n    public isFullscreen = signal(false);\r\n    public isHidden = signal(true);\r\n\r\n    @Input({ required: true })\r\n    public tool!: Tool;\r\n\r\n    @Input()\r\n    public set marker(value: HTMLElement) {\r\n        this.calculateModalPosition(value);\r\n    }\r\n\r\n    @Output()\r\n    public closed = new EventEmitter<void>();\r\n\r\n    @HostBinding('class._hidden')\r\n    protected get _isHidden(): boolean {\r\n        return this.isHidden();\r\n    }\r\n\r\n    @HostBinding('class._fullscreen')\r\n    protected get _isFullscreen(): boolean {\r\n        return this.isFullscreen();\r\n    }\r\n\r\n    constructor() {\r\n        this.initClickOutsideSubscription();\r\n    }\r\n\r\n    protected onCloseModal(): void {\r\n        this.closed.emit();\r\n    }\r\n\r\n    protected onMaximizeModal(): void {\r\n        this.isFullscreen.update((prev) => !prev);\r\n    }\r\n\r\n    private initClickOutsideSubscription(): void {\r\n        this.cuiClickOutsideDirective.cuiClickOutside\r\n            .pipe(skip(1), takeUntilDestroyed())\r\n            .subscribe(() => this.onCloseModal());\r\n    }\r\n\r\n    private calculateModalPosition(marker: HTMLElement): void {\r\n        const { bottom, left } = marker.getBoundingClientRect();\r\n\r\n        setTimeout(() => {\r\n            const modalWidth = this.element.offsetWidth;\r\n\r\n            this.element.style.top = bottom + this.window.scrollY + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n            this.element.style.left = left + this.window.scrollX + marker.offsetWidth / 2 - modalWidth / 2 + 'px';\r\n\r\n            this.isHidden.set(false);\r\n        });\r\n    }\r\n}\r\n","<div class=\"triangle\"></div>\r\n<div class=\"wrapper\">\r\n    <header class=\"header\">\r\n        <h3 class=\"title\">{{ tool.title }}</h3>\r\n        <div class=\"header__buttons\">\r\n            <!-- TODO: replace icon with 'maximize' -->\r\n            <button\r\n                cuiButton\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconArrowSortSm\"\r\n                (click)=\"onMaximizeModal()\"\r\n            ></button>\r\n            <button\r\n                cuiButton\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconX\"\r\n                (click)=\"onCloseModal()\"\r\n            ></button>\r\n        </div>\r\n    </header>\r\n    <div class=\"content\">\r\n        <div class=\"info\">\r\n            <!-- TODO: будет картинка-->\r\n            <p class=\"info__item\">\r\n                <span class=\"info__field\">Тип:</span>\r\n                <span class=\"info__title\">{{ tool.title }}</span>\r\n            </p>\r\n            <p class=\"info__item\">\r\n                <span class=\"info__field\">Страна производитель:</span>\r\n                <span class=\"info__title\">{{ tool.title }}</span>\r\n            </p>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import type { MarkerType } from '../../services/markers-service.options';\r\n\r\nexport interface Tool {\r\n    id: string;\r\n    image?: string;\r\n    title?: string;\r\n    type?: MarkerType;\r\n}\r\n\r\nexport const EDITOR_TOOL_MODAL_SELECTOR = 'cc-editor-tool-modal';\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgFor } from '@angular/common';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { EditorTooltipButton, EditorTooltipOption, EditorTooltipOptions } from './editor-tooltip.options';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [CuiButtonModule, NgFor],\r\n    templateUrl: './editor-tooltip.component.html',\r\n    styleUrls: ['./editor-tooltip.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorTooltipComponent {\r\n    // TODO: Удалить класс\r\n    protected readonly BUTTONS_OPTIONS = new Map<EditorTooltipOption, EditorTooltipButton>([\r\n        ['copy', { icon: 'cuiIconCopy', handler: (event): void => this.copyClicked.emit(event) }],\r\n        ['edit', { icon: 'cuiIconEdit', handler: (event): void => this.editClicked.emit(event), class: 'edit' }],\r\n        ['delete', { icon: 'cuiIconTrash', handler: (event): void => this.deleteClicked.emit(event) }]\r\n    ]);\r\n\r\n    protected _options: EditorTooltipOptions = ['edit', 'delete'];\r\n    protected buttons = this.getButtonsFromOptions(this._options);\r\n\r\n    @Input({ required: true })\r\n    public title!: string;\r\n\r\n    @Input()\r\n    public set options(value: EditorTooltipOptions) {\r\n        this._options = value;\r\n        this.buttons = this.getButtonsFromOptions(value);\r\n    }\r\n\r\n    @Output()\r\n    public readonly copyClicked = new EventEmitter<MouseEvent>();\r\n\r\n    @Output()\r\n    public readonly editClicked = new EventEmitter<MouseEvent>();\r\n\r\n    @Output()\r\n    public readonly deleteClicked = new EventEmitter<MouseEvent>();\r\n\r\n    private getButtonsFromOptions(options: EditorTooltipOptions): EditorTooltipButton[] {\r\n        return options.map((option) => this.BUTTONS_OPTIONS.get(option)!);\r\n    }\r\n}\r\n","<h3 class=\"title\">{{ title }}</h3>\r\n<div class=\"buttons-container\">\r\n    <ng-container *ngFor=\"let button of buttons\">\r\n        <div class=\"divider\"></div>\r\n        <!--        TODO: class должен быть удалён в будущем-->\r\n        <button\r\n            class=\"button\"\r\n            cuiButton\r\n            type=\"button\"\r\n            appearance=\"ghost\"\r\n            size=\"xxs\"\r\n            [icon]=\"button.icon\"\r\n            [class]=\"button.class\"\r\n            (click)=\"button.handler($event)\"\r\n        ></button>\r\n    </ng-container>\r\n</div>\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type EditorTooltipOption = 'copy' | 'edit' | 'delete';\r\n\r\nexport type EditorTooltipOptions = EditorTooltipOption[];\r\n\r\n// TODO: class должен быть удалён в будущем\r\nexport interface EditorTooltipButton {\r\n    readonly icon: CuiIcon;\r\n    readonly handler: (event: MouseEvent) => void;\r\n    readonly class?: string;\r\n}\r\n\r\nexport const EDITOR_TOOLTIP_SELECTOR = 'cc-editor-tooltip';\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'fileSize',\r\n    standalone: true\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n    private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\r\n    private readonly BYTES_IN_KILOBYTE = 1024;\r\n\r\n    public transform(bytes: number): string {\r\n        if (isNaN(bytes) || bytes === 0) {\r\n            return '0 Bytes';\r\n        }\r\n\r\n        const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\r\n\r\n        return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\r\n    }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport type { API } from '@editorjs/editorjs';\r\n\r\n@Component({\r\n    template: '',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorToolComponent {\r\n    private readonly window = inject(CUI_WINDOW);\r\n    private readonly document = inject(DOCUMENT);\r\n\r\n    @Input({ required: true })\r\n    public api!: API;\r\n\r\n    @Input({ required: true })\r\n    public preview!: string;\r\n\r\n    @Input({ required: true })\r\n    public caption!: string;\r\n\r\n    @Input({ required: true })\r\n    public buttonContent!: string;\r\n\r\n    @Input()\r\n    public readOnly = false;\r\n\r\n    @Input()\r\n    public isLoading = false;\r\n\r\n    @Output()\r\n    public fileSelected = new EventEmitter<void>();\r\n\r\n    @Output()\r\n    public captionChanged = new EventEmitter<string>();\r\n\r\n    private previousValue = this.caption;\r\n\r\n    protected get isCaptionShown(): boolean {\r\n        return !this.readOnly || !!this.caption;\r\n    }\r\n\r\n    protected onSelectFile(): void {\r\n        this.fileSelected.emit();\r\n    }\r\n\r\n    protected onTitleChange(event: KeyboardEvent): void {\r\n        const target = event.currentTarget as HTMLElement;\r\n\r\n        if (target.innerHTML === '<br>') {\r\n            target.innerHTML = '';\r\n        }\r\n\r\n        const value = target.innerHTML!;\r\n\r\n        if (this.previousValue === value) {\r\n            return;\r\n        }\r\n\r\n        this.previousValue = value;\r\n        this.captionChanged.emit(value);\r\n    }\r\n\r\n    protected onTitlePaste(event: ClipboardEvent): void {\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n\r\n        if (!this.document) {\r\n            return;\r\n        }\r\n\r\n        const value = event.clipboardData?.getData('text/plain');\r\n        const target = event.target as HTMLElement;\r\n\r\n        this.document.execCommand('insertText', false, value);\r\n        setTimeout(() => this.captionChanged.emit(target.textContent!));\r\n    }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiFileIconComponent, CuiSvgModule } from '../../../components';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [FileSizePipe, FormsModule, NgIf, TranslocoDirective, CuiFileIconComponent, CuiSvgModule],\r\n    templateUrl: './editor-attaches-tool.component.html',\r\n    styleUrls: ['./editor-attaches-tool.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._hidden]': 'isShowLoadButton'\r\n    }\r\n})\r\nexport class EditorAttachesToolComponent extends EditorToolComponent {\r\n    private _file!: CuiFileData;\r\n    private _title!: string;\r\n\r\n    @Input({ required: true })\r\n    public get file(): CuiFileData | undefined {\r\n        return this._file;\r\n    }\r\n\r\n    public set file(value: CuiFileData) {\r\n        this._file = value;\r\n    }\r\n\r\n    @Input({ required: true })\r\n    public get title(): string {\r\n        return this._title;\r\n    }\r\n\r\n    public set title(value: string) {\r\n        this._title = value;\r\n    }\r\n\r\n    @Output()\r\n    public readonly fileClicked = new EventEmitter<CuiFileData>();\r\n\r\n    protected get isShowLoadButton(): boolean {\r\n        return !this.file && !this.isCaptionShown && !this.isLoading;\r\n    }\r\n\r\n    protected onFileClick(): void {\r\n        this.fileClicked.emit(this.file);\r\n    }\r\n\r\n    protected onPreventEnter(event: KeyboardEvent): void {\r\n        if (this.checkKey(event)) {\r\n            return;\r\n        }\r\n\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    private checkKey(event: KeyboardEvent): boolean {\r\n        return event.key !== 'Enter';\r\n    }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n    <ng-container *transloco=\"let t\">\r\n        <div\r\n            *ngIf=\"file; else buttonTemplate\"\r\n            class=\"file\"\r\n        >\r\n            <cui-file-icon\r\n                *ngIf=\"file.extension\"\r\n                [extension]=\"file.extension\"\r\n            ></cui-file-icon>\r\n\r\n            <div class=\"info\">\r\n                <div\r\n                    class=\"title\"\r\n                    attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n                    [innerHTML]=\"title\"\r\n                    [attr.contenteditable]=\"!readOnly\"\r\n                    (paste)=\"onTitlePaste($event)\"\r\n                    (keydown)=\"onPreventEnter($event)\"\r\n                    (keyup)=\"onTitleChange($event)\"\r\n                ></div>\r\n                <div\r\n                    *ngIf=\"file.size; let size\"\r\n                    class=\"size\"\r\n                >\r\n                    {{ size | fileSize }}\r\n                </div>\r\n            </div>\r\n            <a\r\n                class=\"download\"\r\n                (click)=\"onFileClick()\"\r\n            >\r\n                <cui-svg\r\n                    icon=\"cuiIconChevronRightSm\"\r\n                    color=\"var(--cui-base-500)\"\r\n                />\r\n            </a>\r\n        </div>\r\n        <ng-template #buttonTemplate>\r\n            <button\r\n                [class]=\"['select-btn', this.api.styles.button]\"\r\n                (click)=\"onSelectFile()\"\r\n                type=\"button\"\r\n            >\r\n                <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n                &nbsp;{{ buttonContent }}\r\n            </button>\r\n        </ng-template>\r\n    </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n    <div class=\"wrapper\">\r\n        <div class=\"preloader\"></div>\r\n    </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_ATTACHES_TOOL_SELECTOR = 'cc-editor-attaches-tool';\r\n\r\nexport interface CuiAttachesToolConfig extends CuiFileUploaderConfig {\r\n    readonly buttonContent: string;\r\n    readonly fileClicked: (file: CuiFileData) => void;\r\n}\r\n\r\nexport interface CuiAttachesToolOptions {\r\n    readonly api: API;\r\n    readonly config: CuiAttachesToolConfig;\r\n    readonly onSelectFile: () => void;\r\n    readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiAttachesToolData {\r\n    title: string;\r\n    file: CuiFileData;\r\n}\r\n","import { NgClass, NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\nimport type { CuiImageTunes } from './editor-image-tool.options';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [CuiSvgModule, FormsModule, NgClass, NgIf, TranslocoDirective],\r\n    templateUrl: './editor-image-tool.component.html',\r\n    styleUrls: ['./editor-image-tool.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._hidden]': 'isShowLoadButton'\r\n    }\r\n})\r\nexport class EditorImageToolComponent extends EditorToolComponent {\r\n    protected readonly isLoaded = signal(false);\r\n    protected readonly tunesSignal = signal<CuiImageTunes>({});\r\n\r\n    @Input({ required: true })\r\n    public image!: string;\r\n\r\n    @Input()\r\n    public set tunes(tunes: CuiImageTunes) {\r\n        this.tunesSignal.set(tunes);\r\n    }\r\n\r\n    protected get isShowLoadButton(): boolean {\r\n        return !this.image && !this.isCaptionShown && !this.isLoading;\r\n    }\r\n\r\n    protected onPreventEnter(event: KeyboardEvent): void {\r\n        if (this.checkKey(event)) {\r\n            return;\r\n        }\r\n\r\n        event.stopPropagation();\r\n    }\r\n\r\n    private checkKey(event: KeyboardEvent): boolean {\r\n        return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n    }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n    <ng-container *transloco=\"let t\">\r\n        <ng-container *ngIf=\"image; else buttonTemplate\">\r\n            <div\r\n                class=\"wrapper\"\r\n                [ngClass]=\"tunesSignal()\"\r\n                [class._loaded]=\"isLoaded()\"\r\n            >\r\n                <img\r\n                    class=\"image\"\r\n                    [src]=\"image\"\r\n                    alt=\"Image\"\r\n                />\r\n            </div>\r\n            <div\r\n                *ngIf=\"isCaptionShown\"\r\n                class=\"caption cdx-input\"\r\n                [attr.contenteditable]=\"!readOnly\"\r\n                attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n                (paste)=\"onTitlePaste($event)\"\r\n                (keydown)=\"onPreventEnter($event)\"\r\n                (keyup)=\"onTitleChange($event)\"\r\n                [innerHTML]=\"caption\"\r\n            ></div>\r\n        </ng-container>\r\n        <ng-template #buttonTemplate>\r\n            <button\r\n                #button\r\n                type=\"button\"\r\n                [class]=\"['select-btn', this.api.styles.button]\"\r\n                (click)=\"onSelectFile()\"\r\n            >\r\n                <svg\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    width=\"20\"\r\n                    height=\"20\"\r\n                    viewBox=\"0 0 20 20\"\r\n                    fill=\"none\"\r\n                >\r\n                    <path\r\n                        d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\"\r\n                        stroke=\"#121315\"\r\n                        stroke-width=\"1.66667\"\r\n                    />\r\n                    <path\r\n                        d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\"\r\n                        stroke=\"#121315\"\r\n                        stroke-width=\"1.66667\"\r\n                        stroke-linecap=\"round\"\r\n                        stroke-linejoin=\"round\"\r\n                    />\r\n                    <path\r\n                        d=\"M11.4805 7.77783H11.4879\"\r\n                        stroke=\"#121315\"\r\n                        stroke-width=\"1.66667\"\r\n                        stroke-linecap=\"round\"\r\n                        stroke-linejoin=\"round\"\r\n                    />\r\n                </svg>\r\n                &nbsp;{{ buttonContent }}\r\n            </button>\r\n        </ng-template>\r\n    </ng-container>\r\n</ng-container>\r\n<ng-template #preloader>\r\n    <div class=\"wrapper\">\r\n        <div class=\"preloader\">\r\n            <img\r\n                *ngIf=\"preview\"\r\n                class=\"preloader__image\"\r\n                [src]=\"preview\"\r\n                alt=\"Preloader\"\r\n            />\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_IMAGE_TOOL_SELECTOR = 'cc-editor-image-tool';\r\n\r\nexport type CuiImageKeysObject<V = string> = {\r\n    [key: string]: V;\r\n};\r\n\r\nexport interface CuiImageToolConfig extends CuiFileUploaderConfig {\r\n    readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiImageToolOptions {\r\n    readonly api: API;\r\n    readonly config: CuiImageToolConfig;\r\n    readonly onSelectFile: () => void;\r\n    readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiImageToolData {\r\n    caption: string;\r\n    file: CuiFileData;\r\n    tunes: CuiImageTunes;\r\n}\r\n\r\nexport interface CuiImageTunes {\r\n    stretched?: boolean;\r\n    left?: boolean;\r\n    right?: boolean;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgIf } from '@angular/common';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [CuiSvgModule, FormsModule, NgIf, TranslocoDirective],\r\n    templateUrl: './editor-video-tool.component.html',\r\n    styleUrls: ['./editor-video-tool.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._hidden]': 'isShowLoadButton'\r\n    }\r\n})\r\nexport class EditorVideoToolComponent extends EditorToolComponent {\r\n    protected isLoaded = signal(false);\r\n\r\n    @Input({ required: true })\r\n    public video!: string;\r\n\r\n    protected get isShowLoadButton(): boolean {\r\n        return !this.video && !this.isCaptionShown && !this.isLoading;\r\n    }\r\n\r\n    protected onPlay(): void {\r\n        this.isLoaded.set(true);\r\n    }\r\n\r\n    protected onPreventEnter(event: KeyboardEvent): void {\r\n        if (this.checkKey(event)) {\r\n            return;\r\n        }\r\n\r\n        event.stopPropagation();\r\n    }\r\n\r\n    private checkKey(event: KeyboardEvent): boolean {\r\n        return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <ng-container *ngIf=\"!isLoading; else preloader\">\r\n        <ng-container *ngIf=\"video; else buttonTemplate\">\r\n            <div\r\n                class=\"wrapper\"\r\n                [class._loaded]=\"isLoaded()\"\r\n            >\r\n                <video\r\n                    *ngIf=\"isLoaded(); else playButtonTemplate\"\r\n                    class=\"video\"\r\n                    [src]=\"video\"\r\n                    controls\r\n                    autoplay\r\n                    muted\r\n                    playsinline\r\n                ></video>\r\n\r\n                <ng-template #playButtonTemplate>\r\n                    <button\r\n                        type=\"button\"\r\n                        class=\"play\"\r\n                        (click)=\"onPlay()\"\r\n                    >\r\n                        <cui-svg\r\n                            class=\"play\"\r\n                            icon=\"cuiIconPlayCircleSm\"\r\n                            [height]=\"72\"\r\n                            [width]=\"72\"\r\n                            [strokeWidth]=\"0.5\"\r\n                        />\r\n                    </button>\r\n                </ng-template>\r\n            </div>\r\n\r\n            <div\r\n                *ngIf=\"isCaptionShown\"\r\n                class=\"caption cdx-input\"\r\n                [attr.contenteditable]=\"!readOnly\"\r\n                attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n                (paste)=\"onTitlePaste($event)\"\r\n                (keydown)=\"onPreventEnter($event)\"\r\n                (keyup)=\"onTitleChange($event)\"\r\n                [innerHTML]=\"caption\"\r\n            ></div>\r\n        </ng-container>\r\n\r\n        <ng-template #buttonTemplate>\r\n            <button\r\n                type=\"button\"\r\n                [class]=\"['select-btn', this.api.styles.button]\"\r\n                (click)=\"onSelectFile()\"\r\n            >\r\n                <cui-svg icon=\"cuiIconPlayCircle\" />\r\n                &nbsp;{{ buttonContent }}\r\n            </button>\r\n        </ng-template>\r\n    </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n    <div class=\"wrapper\">\r\n        <div class=\"preloader\">\r\n            <img\r\n                *ngIf=\"preview\"\r\n                class=\"preloader__image\"\r\n                [src]=\"preview\"\r\n                alt=\"Preloader\"\r\n            />\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_VIDEO_TOOL_SELECTOR = 'cc-editor-video-tool';\r\n\r\nexport type VideoKeysObject<V = string> = {\r\n    [key: string]: V;\r\n};\r\n\r\nexport interface CuiVideoToolConfig extends CuiFileUploaderConfig {\r\n    readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiVideoToolPlayer {\r\n    readonly pip: boolean;\r\n    readonly controls: boolean;\r\n    readonly light: boolean;\r\n    readonly playing: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolOptions {\r\n    readonly api: API;\r\n    readonly config: CuiVideoToolConfig;\r\n    readonly onSelectFile: () => void;\r\n    readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolData {\r\n    caption: string;\r\n    file: CuiFileData;\r\n}\r\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, Tool, MarkerSelectComponent, MarkerModalComponent } from '../components';\r\nimport { MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function createSelect(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerSelectComponent> {\r\n    const select = document.createElement(MARKER_SELECT_SELECTOR) as CuiAngularElement<MarkerSelectComponent>;\r\n    const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n    select.space = 8;\r\n    select.target = button;\r\n    select.addEventListener('toolClick', (event) => onToolClick(marker, tooltip, event));\r\n\r\n    return select;\r\n}\r\n\r\nexport function createToolModal(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerModalComponent> {\r\n    const toolModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n    const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n    const toolId = marker.dataset['id']!;\r\n    const toolType = marker.dataset['type'] as MarkerType;\r\n\r\n    toolModal.title = marker.innerText;\r\n    toolModal.target = button;\r\n    toolModal.isTool = true;\r\n    toolModal.tool = {\r\n        id: toolId,\r\n        type: toolType\r\n    };\r\n    toolModal.space = 8;\r\n\r\n    toolModal.addEventListener('saveClicked', (event: Event) => {\r\n        const customEvent = event as CustomEvent<MarkerData>;\r\n        const data = customEvent.detail.data;\r\n\r\n        if (data && typeof data !== 'string') {\r\n            marker.setAttribute('data-id', data.id);\r\n            marker.setAttribute('data-type', data.type!);\r\n        }\r\n\r\n        marker.innerHTML = customEvent.detail.title;\r\n\r\n        tooltip.remove();\r\n    });\r\n\r\n    toolModal.addEventListener('cancelClicked', () => {\r\n        tooltip.remove();\r\n    });\r\n\r\n    return toolModal;\r\n}\r\n\r\nfunction onToolClick(marker: HTMLElement, tooltip: HTMLElement, event: Event): void {\r\n    event.stopPropagation();\r\n\r\n    const customEvent = event as CustomEvent<Tool>;\r\n    const tool = customEvent.detail;\r\n\r\n    marker.dataset['id'] = tool.id;\r\n\r\n    tooltip.remove();\r\n}\r\n","import { CuiFileData } from '../interfaces';\r\n\r\nexport async function openFileInBrowser(file: CuiFileData): Promise<void> {\r\n    if (!file?.url) {\r\n        return;\r\n    }\r\n\r\n    const encodedUrl = encodeURIComponent(file.url);\r\n    const googleViewerUrl = `https://docs.google.com/viewer?url=${encodedUrl}&embedded=true`;\r\n\r\n    window.open(googleViewerUrl, '_blank');\r\n}\r\n","import type { CuiFileResponseData, CuiResourceFile } from '../interfaces';\r\n\r\nexport enum CuiFileUploaderStatus {\r\n    Loading = 'loading',\r\n    Completed = 'completed'\r\n}\r\n\r\nexport interface CuiFileUploaderConfig {\r\n    readonly endpoint: string;\r\n    readonly types: string;\r\n    readonly field: string;\r\n    readonly additionalRequestHeaders: HeadersInit;\r\n    readonly load: (status: CuiFileUploaderStatus) => void;\r\n}\r\n\r\nexport type OnUpload = (response: CuiResourceFile, file?: File) => void;\r\n\r\nexport class CuiFileUploader {\r\n    private readonly REQUEST_METHOD = 'POST';\r\n    private readonly config: CuiFileUploaderConfig;\r\n    private readonly onUpload: OnUpload;\r\n    private readonly onError: () => void;\r\n\r\n    constructor(config: CuiFileUploaderConfig, onUpload: OnUpload, onError: () => void) {\r\n        this.config = config;\r\n        this.onUpload = onUpload;\r\n        this.onError = onError;\r\n    }\r\n\r\n    public selectFile = ({ fileSelected }: { fileSelected: (file: File) => void }): void => {\r\n        const input = document.createElement('input');\r\n        const types = this.config?.types || '*';\r\n        input.type = 'file';\r\n        input.accept = types;\r\n\r\n        input.onchange = (): void => {\r\n            const files = input.files;\r\n\r\n            if (!files?.length) {\r\n                return;\r\n            }\r\n\r\n            this.getFile(files, fileSelected);\r\n        };\r\n\r\n        input.click();\r\n    };\r\n\r\n    public getFile(files: FileList, fileSelected: (file: File) => void): void {\r\n        const file = files.item(0);\r\n\r\n        if (!file) {\r\n            return;\r\n        }\r\n\r\n        fileSelected(file);\r\n    }\r\n\r\n    public uploadFile(file: File): void {\r\n        const formData = new FormData();\r\n        const formField = this.config.field || 'file';\r\n        formData.append(formField, file);\r\n\r\n        if (!this.config.endpoint) {\r\n            return;\r\n        }\r\n\r\n        this.config.load(CuiFileUploaderStatus.Loading);\r\n\r\n        const upload = fetch(this.config.endpoint, {\r\n            headers: this.config.additionalRequestHeaders,\r\n            method: this.REQUEST_METHOD,\r\n            body: formData\r\n        });\r\n\r\n        upload\r\n            .then((response) => response.json() as Promise<CuiFileResponseData>)\r\n            .then((response) => this.onUpload(this.convertToFileSuccessResponse(response), file))\r\n            .catch(() => this.onError())\r\n            .finally(() => this.config.load(CuiFileUploaderStatus.Completed));\r\n    }\r\n\r\n    public uploadByUrl(url: string): void {\r\n        this.onUpload({ id: crypto.randomUUID(), success: 1, file: { url } });\r\n    }\r\n\r\n    private convertToFileSuccessResponse(response: CuiFileResponseData): CuiResourceFile {\r\n        return { id: response.id, success: 1, file: { url: response.downloadUrl } };\r\n    }\r\n}\r\n","import { AngularOutsideLoaderService } from '../../services';\r\nimport { CuiFileUploaderStatus } from './file-uploader';\r\n\r\nexport function setLoading(status: CuiFileUploaderStatus): void {\r\n    const service = AngularOutsideLoaderService.getInstance();\r\n    const loadingActions: Record<CuiFileUploaderStatus, () => void> = {\r\n        [CuiFileUploaderStatus.Loading]: () => service.setLoading(),\r\n        [CuiFileUploaderStatus.Completed]: () => {\r\n            service.setCompleted();\r\n            service.handleCompletedRequest();\r\n        }\r\n    };\r\n\r\n    return loadingActions[status]();\r\n}\r\n","import type { CuiTools } from '../interfaces';\r\nimport { CuiAttachesTool, CuiHeaderTool, CuiImageTool, CuiListTool, CuiVideoTool } from '../tools';\r\nimport { openFileInBrowser } from './open-file-in-browser';\r\nimport { setLoading } from './set-loading';\r\n\r\nexport function createEditorTools(resourceUrl: string): CuiTools;\r\nexport function createEditorTools(config: Partial<CuiTools>, resourceUrl?: string): CuiTools;\r\nexport function createEditorTools(config: Partial<CuiTools> | string, resourceUrl?: string): CuiTools {\r\n    const endpoint = typeof config === 'string' ? config : resourceUrl;\r\n    const tools = typeof config !== 'string' ? config : {};\r\n\r\n    return {\r\n        header: {\r\n            class: CuiHeaderTool,\r\n            config: {\r\n                levels: [2, 3, 4],\r\n                defaultLevel: 2\r\n            },\r\n            ...(tools?.['header'] ?? {})\r\n        },\r\n        list: {\r\n            class: CuiListTool,\r\n            inlineToolbar: true,\r\n            config: {\r\n                defaultStyle: 'unordered'\r\n            },\r\n            ...(tools?.['list'] ?? {})\r\n        },\r\n        attaches: {\r\n            class: CuiAttachesTool,\r\n            config: {\r\n                endpoint,\r\n                field: 'resource',\r\n                types: '.pdf,.doc,.docx',\r\n                load: setLoading,\r\n                fileClicked: openFileInBrowser\r\n            },\r\n            ...(tools?.['attaches'] ?? {})\r\n        },\r\n        video: {\r\n            class: CuiVideoTool,\r\n            config: {\r\n                endpoint,\r\n                field: 'resource',\r\n                load: setLoading\r\n            },\r\n            ...(tools?.['video'] ?? {})\r\n        },\r\n        image: {\r\n            class: CuiImageTool,\r\n            config: {\r\n                endpoint,\r\n                field: 'resource',\r\n                load: setLoading\r\n            },\r\n            ...(tools?.['image'] ?? {})\r\n        },\r\n        ...(tools ?? {})\r\n    };\r\n}\r\n","export function removeElementTagWrapper(element: HTMLElement): void {\r\n    const parent = element.parentElement;\r\n    const innerElementNodes = element.childNodes;\r\n\r\n    let node: Node;\r\n\r\n    while (innerElementNodes.length) {\r\n        node = innerElementNodes.item(0);\r\n\r\n        parent?.insertBefore(node, element);\r\n    }\r\n\r\n    element.remove();\r\n}\r\n","export function copyTextToClipboard(text: string): void {\r\n    if (window?.navigator.clipboard && window.isSecureContext) {\r\n        window.navigator.clipboard.writeText(text);\r\n    }\r\n\r\n    copyTextToClipboardFallback(text);\r\n}\r\n\r\n// TODO: Remove when switch to https\r\nfunction copyTextToClipboardFallback(text: string): void {\r\n    const textarea = document.createElement('textarea');\r\n\r\n    textarea.value = text;\r\n    document.body.appendChild(textarea);\r\n    textarea.focus({ preventScroll: true });\r\n    textarea.select();\r\n\r\n    document.execCommand('copy');\r\n    document.body.removeChild(textarea);\r\n}\r\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { EditorTooltipComponent, EditorTooltipOptions } from '../components';\r\nimport { EDITOR_TOOLTIP_SELECTOR } from '../components';\r\n\r\nimport { createLinkModal } from './create-link-modal';\r\nimport { createToolModal } from './create-tool-modal';\r\nimport { removeElementTagWrapper } from './remove-element-tag-wrapper';\r\nimport { copyTextToClipboard } from './copy-text-to-clipboard';\r\nexport const tooltipMap = {\r\n    MARK: createMarkerTooltip,\r\n    A: createLinkTooltip\r\n};\r\n\r\nexport function createMarkerTooltip(marker: HTMLElement): HTMLElement {\r\n    const tooltip = createTooltip(marker, marker.innerText);\r\n\r\n    setTimeout(() => {\r\n        const select = createToolModal(marker, tooltip);\r\n\r\n        tooltip.append(select);\r\n    });\r\n\r\n    return tooltip;\r\n}\r\n\r\nexport function createLinkTooltip(link: HTMLElement): HTMLElement {\r\n    const linkElement = link as HTMLLinkElement;\r\n    const options: EditorTooltipOptions = ['copy', 'edit', 'delete'];\r\n    const linkUrl = linkElement.href;\r\n    const tooltip = createTooltip(linkElement, linkUrl, options);\r\n\r\n    tooltip.addEventListener('copyClicked', () => copyTextToClipboard(linkUrl));\r\n\r\n    setTimeout(() => {\r\n        const linkModal = createLinkModal(tooltip, linkElement);\r\n\r\n        tooltip.append(linkModal);\r\n    });\r\n\r\n    return tooltip;\r\n}\r\n\r\nexport function createTooltip(element: HTMLElement, title: string, options?: EditorTooltipOptions): HTMLElement {\r\n    const tooltip = document.createElement(EDITOR_TOOLTIP_SELECTOR) as CuiAngularElement<EditorTooltipComponent>;\r\n\r\n    tooltip.title = title;\r\n\r\n    if (options) {\r\n        tooltip.options = options;\r\n    }\r\n\r\n    tooltip.addEventListener('deleteClicked', (event: Event) => {\r\n        event.stopPropagation();\r\n\r\n        removeElementTagWrapper(element);\r\n\r\n        tooltip.remove();\r\n    });\r\n\r\n    return tooltip;\r\n}\r\n","import { MERGE_MIN_LENGTH, SPLIT_MAX_LENGTH } from '../constants';\r\nimport { ChunkDescriptor, ChunkDescriptorsMergeResult } from '../interfaces';\r\n\r\nexport function mergeSmallChunks(chunks: ChunkDescriptor[]): ChunkDescriptorsMergeResult {\r\n    if (chunks.length <= 1) {\r\n        return { chunks: [...chunks], removedIds: [] };\r\n    }\r\n\r\n    const result: ChunkDescriptor[] = [];\r\n    const removedIds: string[] = [];\r\n    let current = { id: chunks[0].id, content: chunks[0].content };\r\n\r\n    for (let i = 1; i < chunks.length; i++) {\r\n        const next = chunks[i];\r\n\r\n        if (checkIsAvailableToMerge(current, next)) {\r\n            current = { id: current.id, content: current.content + next.content };\r\n            removedIds.push(next.id);\r\n\r\n            continue;\r\n        }\r\n\r\n        result.push(current);\r\n        current = { id: next.id, content: next.content };\r\n    }\r\n\r\n    result.push(current);\r\n\r\n    return { chunks: result, removedIds };\r\n}\r\n\r\nfunction checkIsAvailableToMerge(current: ChunkDescriptor, next: ChunkDescriptor): boolean {\r\n    const combinedLength = current.content.length + next.content.length;\r\n\r\n    return (\r\n        combinedLength < SPLIT_MAX_LENGTH &&\r\n        (current.content.length < MERGE_MIN_LENGTH || next.content.length < MERGE_MIN_LENGTH)\r\n    );\r\n}\r\n","import type { Blocks } from '@editorjs/editorjs/types/api';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nexport function recalculateIndexes(blocksApi: Blocks): void {\r\n    if (!blocksApi) {\r\n        return;\r\n    }\r\n\r\n    const blocks = blocksApi.getBlocksCount();\r\n    let index = 0;\r\n\r\n    for (let i = 0; i < blocks; i++) {\r\n        const block = blocksApi.getBlockByIndex(i);\r\n\r\n        if (!block) {\r\n            continue;\r\n        }\r\n\r\n        const blockElement = block?.holder;\r\n        const subblocks = blockElement.querySelectorAll('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n        blockElement.setAttribute('data-index', String(index));\r\n\r\n        if (!subblocks.length) {\r\n            index++;\r\n\r\n            continue;\r\n        }\r\n\r\n        subblocks.forEach((subblock) => {\r\n            const subBlockIndex = subblock.getAttribute('data-index');\r\n            const indexAsNumber = subBlockIndex ? Number(subBlockIndex) : null;\r\n\r\n            if (indexAsNumber !== null && indexAsNumber === index) {\r\n                index++;\r\n\r\n                return;\r\n            }\r\n\r\n            subblock.setAttribute('data-index', String(index));\r\n            index++;\r\n        });\r\n    }\r\n}\r\n","import { SPLIT_LENGTH } from '../constants';\r\n\r\ninterface TagInfo {\r\n    tag: string;\r\n    tagName: string;\r\n    newIndex: number;\r\n}\r\n\r\nconst unsplittableTags: { [key: string]: boolean } = { mark: true, a: true };\r\nconst PART_LENGTH_MEASUREMENT_ERROR = 20;\r\nconst BR_TAG = '<br>';\r\n\r\nexport function splitHTML(input: string, maxLength: number = SPLIT_LENGTH): string[] {\r\n    const parts: string[] = [];\r\n    const tagNames: string[] = [];\r\n    const tags: string[] = [];\r\n    let currentPart = '';\r\n    let index = 0;\r\n    // remove specsymbols\r\n    input = input.replaceAll('&nbsp;', ' ');\r\n\r\n    while (input.length > index) {\r\n        while (currentPart.length < maxLength && input.length > index) {\r\n            if (checkIsBrTag(input, index)) {\r\n                // when br tag\r\n                if (currentPart.length + BR_TAG.length > maxLength) {\r\n                    parts.push(currentPart);\r\n                    currentPart = BR_TAG;\r\n                } else {\r\n                    currentPart += BR_TAG;\r\n                }\r\n\r\n                index += BR_TAG.length - 1;\r\n            } else if (checkIsEndOfTag(input, index)) {\r\n                // when tag ends\r\n                const tagName = getEndTag(tagNames.pop()!);\r\n\r\n                tags.pop();\r\n\r\n                if ((currentPart + tagName).length > maxLength) {\r\n                    parts.push(currentPart);\r\n                    currentPart = '';\r\n                } else {\r\n                    currentPart += tagName;\r\n                }\r\n\r\n                index += tagName.length - 1;\r\n            } else if (input[index] === '<') {\r\n                // when tag starts\r\n                const { tag, tagName, newIndex } = getTagAndTagName(input, index);\r\n\r\n                index = newIndex;\r\n\r\n                if (checkIsLengthEnough(currentPart, tag)) {\r\n                    currentPart = switchPartWhenUnclosedTagsExist(tagNames, tags, parts, currentPart);\r\n                }\r\n\r\n                currentPart += tag;\r\n\r\n                if (!unsplittableTags[tagName]) {\r\n                    tagNames.push(tagName);\r\n                    tags.push(tag);\r\n                }\r\n            } else {\r\n                // other symbols\r\n                currentPart += input[index];\r\n            }\r\n\r\n            index += 1;\r\n        }\r\n\r\n        currentPart = switchPartWhenUnclosedTagsExist(tagNames, tags, parts, currentPart);\r\n    }\r\n\r\n    return parts;\r\n}\r\n\r\nfunction switchPartWhenUnclosedTagsExist(\r\n    tagNames: string[],\r\n    tags: string[],\r\n    parts: string[],\r\n    currentPart: string\r\n): string {\r\n    if (!tagNames.length) {\r\n        parts.push(currentPart);\r\n\r\n        return '';\r\n    }\r\n\r\n    let closeAllTags = '';\r\n\r\n    for (let i = tagNames.length - 1; i >= 0; i -= 1) {\r\n        closeAllTags += getEndTag(tagNames[i]);\r\n    }\r\n\r\n    currentPart += closeAllTags;\r\n\r\n    parts.push(currentPart);\r\n\r\n    currentPart = tags.reduce((openTags, tag) => (openTags += tag), '');\r\n\r\n    return currentPart;\r\n}\r\n\r\nfunction getTagAndTagName(input: string, index: number): TagInfo {\r\n    let tag = '';\r\n    let tagName = '';\r\n\r\n    tag += input[index];\r\n    index += 1;\r\n\r\n    while (input[index] !== ' ' && input[index] !== '>') {\r\n        tag += input[index];\r\n        tagName += input[index];\r\n        index += 1;\r\n    }\r\n\r\n    while (input[index] !== '>') {\r\n        tag += input[index];\r\n        index += 1;\r\n    }\r\n\r\n    tag += input[index];\r\n    [tag, index] = getFullTag(input, index, tag, tagName);\r\n\r\n    return { tag, tagName, newIndex: index };\r\n}\r\n\r\nfunction getFullTag(input: string, index: number, tag: string, tagName: string): [string, number] {\r\n    if (!unsplittableTags[tagName]) {\r\n        return [tag, index];\r\n    }\r\n\r\n    let fullTag = tag;\r\n\r\n    index += 1;\r\n\r\n    while (!checkIsEndOfTag(input, index)) {\r\n        fullTag += input[index];\r\n        index += 1;\r\n    }\r\n\r\n    const endTag = getEndTag(tagName);\r\n\r\n    index += endTag.length - 1;\r\n\r\n    return [fullTag + endTag, index];\r\n}\r\n\r\nfunction checkIsLengthEnough(currentPart: string, tag: string): boolean {\r\n    return currentPart.length + tag.length + PART_LENGTH_MEASUREMENT_ERROR > SPLIT_LENGTH;\r\n}\r\n\r\nfunction getEndTag(tagName: string): string {\r\n    return '</' + tagName + '>';\r\n}\r\n\r\nfunction checkIsEndOfTag(input: string, index: number): boolean {\r\n    return input[index] === '<' && input[index + 1] === '/';\r\n}\r\n\r\nfunction checkIsBrTag(input: string, index: number): boolean {\r\n    let tag = '';\r\n\r\n    if (input[index] !== '<') {\r\n        return false;\r\n    }\r\n\r\n    while (input[index] && input[index] !== '>') {\r\n        tag += input[index];\r\n        index += 1;\r\n    }\r\n\r\n    return tag + '>' === BR_TAG;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { AuthConfig, OAuthModuleConfig } from 'angular-oauth2-oidc';\r\n\r\nimport type { CuiBrowserAuthService } from '../services/browser-auth.service';\r\nimport type { CuiMobileAuthService } from '../services/mobile-auth.service';\r\nimport { CuiAuthBase } from '../services/auth.service';\r\n\r\nexport type CuiAuthPlatform = 'mobile' | 'browser';\r\n\r\nexport interface CuiAuthConfig extends AuthConfig {\r\n    readonly tokenExpiredCallback?: (this: CuiAuthBase) => void;\r\n}\r\n\r\nexport interface CuiAuthProviderConfig {\r\n    readonly authConfig: CuiAuthConfig;\r\n    readonly moduleConfig?: OAuthModuleConfig;\r\n    readonly platform?: CuiAuthPlatform;\r\n}\r\n\r\nexport const CuiAuthService = new InjectionToken<CuiMobileAuthService | CuiBrowserAuthService>('CUI_AUTH_SERVICE');\r\n","import { Location } from '@angular/common';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { CuiAuthConfig } from '../providers';\r\nimport { CuiAuthBase } from './auth.service';\r\nimport { CuiHybridStorageService } from './hybrid-storage.service';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiBrowserAuthService extends CuiAuthBase {\r\n    private readonly router = inject(Router);\r\n    private readonly location = inject(Location);\r\n    private readonly oauthStorage = inject(CuiHybridStorageService);\r\n\r\n    public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\r\n        this.setStorage(this.oauthStorage);\r\n        this.configure(authConfig);\r\n\r\n        await this.loadDiscoveryDocument();\r\n\r\n        try {\r\n            await this.tryLogin();\r\n        } catch (error) {\r\n            if (!this.hasValidAccessToken()) {\r\n                throw error;\r\n            }\r\n        }\r\n\r\n        const tokenExpiredCallback = authConfig.tokenExpiredCallback?.bind(this) ?? this.initLoginFlow.bind(this);\r\n\r\n        this.initAuthRefreshEvents(tokenExpiredCallback);\r\n\r\n        await this.useCheckTokenFlow(tokenExpiredCallback);\r\n\r\n        this.router.navigateByUrl(this.location.path(false).split('?')[0]);\r\n    }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\n\r\nimport { CuiAuthConfig } from '../providers';\r\nimport { CuiAuthBase } from './auth.service';\r\nimport { CuiHybridStorageService } from './hybrid-storage.service';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiMobileAuthService extends CuiAuthBase {\r\n    private readonly oauthStorage = inject(CuiHybridStorageService);\r\n\r\n    public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\r\n        this.setStorage(this.oauthStorage);\r\n        this.configure(authConfig);\r\n\r\n        if (!authConfig.tokenExpiredCallback) {\r\n            return;\r\n        }\r\n\r\n        await this.loadDiscoveryDocument();\r\n        await this.tryLogin();\r\n\r\n        this.initAuthRefreshEvents(authConfig.tokenExpiredCallback.bind(this));\r\n\r\n        await this.useCheckTokenFlow(authConfig.tokenExpiredCallback.bind(this));\r\n    }\r\n}\r\n","import type { Provider } from '@angular/core';\r\nimport { APP_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';\r\nimport type { AuthConfig } from 'angular-oauth2-oidc';\r\nimport { provideOAuthClient } from 'angular-oauth2-oidc';\r\n\r\nimport { CuiBrowserAuthService } from '../services/browser-auth.service';\r\nimport { CuiMobileAuthService } from '../services/mobile-auth.service';\r\nimport type { CuiAuthConfig, CuiAuthProviderConfig } from './auth.options';\r\nimport { CuiAuthService } from './auth.options';\r\n\r\nexport function provideCuiAuth({ authConfig, moduleConfig, platform = 'browser' }: CuiAuthProviderConfig): Provider {\r\n    return [\r\n        provideOAuthClient(moduleConfig),\r\n        {\r\n            provide: CuiAuthService,\r\n            useFactory: (): CuiMobileAuthService | CuiBrowserAuthService => {\r\n                if (platform === 'mobile') {\r\n                    return inject(CuiMobileAuthService);\r\n                }\r\n\r\n                return inject(CuiBrowserAuthService);\r\n            }\r\n        },\r\n        makeEnvironmentProviders([\r\n            {\r\n                provide: APP_INITIALIZER,\r\n                useValue: (): Promise<void> => initAuth(authConfig),\r\n                multi: true\r\n            }\r\n        ])\r\n    ];\r\n}\r\n\r\nasync function initAuth(authConfig: CuiAuthConfig): Promise<void> {\r\n    const authService = inject(CuiAuthService);\r\n\r\n    return await authService.initAuth(authConfig);\r\n}\r\n","import { ErrorHandler, type Provider } from '@angular/core';\r\n\r\nimport { CuiGlobalErrorHandler } from '../services/global-handler-error.service';\r\nimport { CUI_ERROR_NOTIFICATION_SERVICE, CUI_ERROR_TRANSLATION_PREFIX, CUI_SHOULD_HANDLE_ERROR } from '../tokens';\r\nimport type { CuiErrorHandlerProviderConfig } from './error-handler.options';\r\n\r\nexport function provideCuiErrorHandler({\r\n    errorNotificationService,\r\n    shouldHandleError,\r\n    translationPrefix = 'BACKEND.'\r\n}: CuiErrorHandlerProviderConfig = {}): Provider[] {\r\n    const providers: Provider[] = [\r\n        {\r\n            provide: ErrorHandler,\r\n            useClass: CuiGlobalErrorHandler\r\n        },\r\n        {\r\n            provide: CUI_ERROR_TRANSLATION_PREFIX,\r\n            useValue: translationPrefix\r\n        }\r\n    ];\r\n\r\n    if (errorNotificationService) {\r\n        providers.push({\r\n            provide: CUI_ERROR_NOTIFICATION_SERVICE,\r\n            useClass: errorNotificationService\r\n        });\r\n    }\r\n\r\n    if (shouldHandleError) {\r\n        providers.push({\r\n            provide: CUI_SHOULD_HANDLE_ERROR,\r\n            useValue: shouldHandleError\r\n        });\r\n    }\r\n\r\n    return providers;\r\n}\r\n","import { inject } from '@angular/core';\r\n\r\nimport { CuiAuthService } from '../../providers';\r\nimport type { CuiTools } from '../interfaces';\r\nimport { CuiAttachesTool, CuiImageTool, CuiVideoTool } from '../tools';\r\nimport { openFileInBrowser } from './open-file-in-browser';\r\nimport { setLoading } from './set-loading';\r\n\r\nexport function presetConfigToken(): (resourceUrl: string) => Partial<CuiTools> {\r\n    const token = inject(CuiAuthService).getAccessToken();\r\n    const additionalRequestHeaders = {\r\n        Authorization: `Bearer ${token}`\r\n    };\r\n\r\n    return (resourceUrl: string) => ({\r\n        attaches: {\r\n            class: CuiAttachesTool,\r\n            config: {\r\n                endpoint: resourceUrl,\r\n                field: 'resource',\r\n                types: '.pdf,.doc,.docx',\r\n                load: setLoading,\r\n                fileClicked: openFileInBrowser,\r\n                additionalRequestHeaders\r\n            }\r\n        },\r\n        video: {\r\n            class: CuiVideoTool,\r\n            config: {\r\n                endpoint: resourceUrl,\r\n                field: 'resource',\r\n                load: setLoading,\r\n                additionalRequestHeaders\r\n            }\r\n        },\r\n        image: {\r\n            class: CuiImageTool,\r\n            config: {\r\n                endpoint: resourceUrl,\r\n                field: 'resource',\r\n                load: setLoading,\r\n                additionalRequestHeaders\r\n            }\r\n        }\r\n    });\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, PasteConfig, ToolboxConfig } from '@editorjs/editorjs';\r\nimport type { TunesMenuConfig } from '@editorjs/editorjs/types/tools';\r\n\r\nimport { CuiFileUploader } from '../utils';\r\nimport { EditorImageToolComponent, EDITOR_IMAGE_TOOL_SELECTOR } from '../components/editor-image-tool';\r\nimport type { CuiImageToolConfig, CuiImageToolData, CuiImageTunes } from '../components/editor-image-tool';\r\nimport type { CuiFileData, CuiTune, CuiAngularElement, CuiResourceFile } from '../interfaces';\r\n\r\nexport class CuiImageTool {\r\n    private selectedFile: CuiNullable<string | File> = null;\r\n    private get Tunes(): CuiTune[] {\r\n        return [\r\n            {\r\n                name: 'stretched',\r\n                title: 'Stretch image',\r\n                toggle: true\r\n            },\r\n            {\r\n                name: 'center',\r\n                title: 'Center image',\r\n                toggle: true\r\n            }\r\n        ];\r\n    }\r\n\r\n    public api: API;\r\n    public data: CuiImageToolData;\r\n    public config: CuiImageToolConfig;\r\n    public blockApi?: BlockAPI;\r\n    public readOnly: boolean;\r\n    public uploader: CuiFileUploader;\r\n    public imageTool!: CuiAngularElement<EditorImageToolComponent>;\r\n\r\n    public static get isReadOnlySupported(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public static get toolbox(): ToolboxConfig {\r\n        return {\r\n            /* eslint-disable */\r\n            icon: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                <path d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\" stroke=\"#121315\" stroke-width=\"1.66667\"/>\r\n                <path d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                <path d=\"M11.4805 7.77783H11.4879\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n            </svg>`,\r\n            /* eslint-enable */\r\n            title: 'Image'\r\n        };\r\n    }\r\n\r\n    public static get pasteConfig(): PasteConfig {\r\n        return {\r\n            tags: [\r\n                {\r\n                    img: { src: true }\r\n                }\r\n            ],\r\n            files: {\r\n                mimeTypes: ['image/*']\r\n            }\r\n        };\r\n    }\r\n\r\n    constructor(options: { api: API }) {\r\n        const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<\r\n            CuiImageToolData,\r\n            Partial<CuiImageToolConfig>\r\n        >;\r\n\r\n        this.blockApi = block;\r\n        this.api = api;\r\n        this.readOnly = readOnly;\r\n        this.config = {\r\n            load: config?.load ?? (() => {}),\r\n            field: config?.field ?? 'image',\r\n            types: config?.types ?? 'image/*',\r\n            endpoint: config?.endpoint ?? '',\r\n            buttonContent: config?.buttonContent ?? this.api.i18n.t('Select an Image'),\r\n            additionalRequestHeaders: config?.additionalRequestHeaders || {}\r\n        };\r\n\r\n        this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n        this.data = data;\r\n        this.data.tunes = this.data.tunes || {};\r\n    }\r\n\r\n    public onSelectFile = (): void => {\r\n        return this.uploader.selectFile({\r\n            fileSelected: (file) => {\r\n                const url = URL.createObjectURL(file);\r\n\r\n                this.imageTool.preview = url;\r\n                this.imageTool.isLoading = true;\r\n                this.selectedFile = file;\r\n\r\n                this.uploader.uploadFile(file);\r\n            }\r\n        });\r\n    };\r\n\r\n    public async onPaste(event: CustomEvent): Promise<void> {\r\n        const actions = {\r\n            tag: this.pasteByTag.bind(this),\r\n            file: this.pasteByFile.bind(this)\r\n        };\r\n        const key = event.type as keyof typeof actions;\r\n\r\n        this.imageTool.isLoading = true;\r\n        actions[key](event);\r\n    }\r\n\r\n    private pasteByFile(event: CustomEvent): void {\r\n        const file = event.detail.file;\r\n        this.selectedFile = file;\r\n        this.uploader.uploadFile(file);\r\n    }\r\n\r\n    private pasteByTag(event: CustomEvent): void {\r\n        const file = event.detail.data.src;\r\n\r\n        this.selectedFile = file;\r\n        this.uploader.uploadByUrl(file);\r\n    }\r\n\r\n    public appendCallback(): void {\r\n        this.onSelectFile();\r\n    }\r\n\r\n    public render(): HTMLElement {\r\n        this.imageTool = document.createElement(\r\n            EDITOR_IMAGE_TOOL_SELECTOR\r\n        ) as CuiAngularElement<EditorImageToolComponent>;\r\n\r\n        this.imageTool.api = this.api;\r\n        this.imageTool.image = this.data.file?.url || '';\r\n        this.imageTool.caption = this.data.caption || '';\r\n        this.imageTool.tunes = this.data.tunes;\r\n        this.imageTool.readOnly = this.readOnly;\r\n        this.imageTool.buttonContent = this.config.buttonContent;\r\n\r\n        this.imageTool.addEventListener('fileSelected', this.onSelectFile);\r\n        this.imageTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n        return this.imageTool;\r\n    }\r\n\r\n    public renderSettings(): TunesMenuConfig {\r\n        return this.Tunes.map((tune) => ({\r\n            icon: tune.icon,\r\n            label: this.api.i18n.t(tune.title),\r\n            name: tune.name,\r\n            toggle: tune.toggle,\r\n            isActive: this.data.tunes[tune.name as keyof CuiImageTunes],\r\n            onActivate: (): void => this.tuneToggled(tune.name as keyof CuiImageTunes)\r\n        }));\r\n    }\r\n\r\n    public save(): CuiImageToolData {\r\n        return this.data;\r\n    }\r\n\r\n    public removed(): void {\r\n        this.imageTool.removeEventListener('fileSelected', this.onSelectFile);\r\n        this.imageTool.removeEventListener('captionChanged', this.changeCaption);\r\n    }\r\n\r\n    public changeCaption(event: Event): void {\r\n        const customEvent = event as CustomEvent;\r\n        const value = customEvent.detail;\r\n        this.data.caption = value;\r\n\r\n        this.blockApi?.dispatchChange();\r\n    }\r\n\r\n    public set image(file: CuiFileData) {\r\n        this.data.file = file || {};\r\n\r\n        if (file && file.url) {\r\n            this.imageTool.image = file.url;\r\n        }\r\n    }\r\n\r\n    private onUpload(response: CuiResourceFile): void {\r\n        if (!response.success || !response.file || !this.selectedFile) {\r\n            this.uploadingFailed();\r\n\r\n            return;\r\n        }\r\n\r\n        const url =\r\n            this.selectedFile instanceof File ? window.URL.createObjectURL(this.selectedFile) : this.selectedFile;\r\n\r\n        this.data.file = response.file;\r\n        this.imageTool.image = url;\r\n        this.imageTool.isLoading = false;\r\n    }\r\n\r\n    private uploadingFailed(): void {\r\n        this.imageTool.image = '';\r\n        this.imageTool.isLoading = false;\r\n    }\r\n\r\n    private tuneToggled(tuneName: keyof CuiImageTunes): void {\r\n        const value = !(this.data.tunes[tuneName] || false);\r\n\r\n        this.data.tunes[tuneName] = value;\r\n        this.imageTool.tunes = { ...this.data.tunes };\r\n    }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_ICONS } from '@cuby-ui/icons';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, PasteConfig, ToolboxConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { CuiVideoToolConfig, CuiVideoToolData, EditorVideoToolComponent } from '../components/editor-video-tool';\r\nimport { EDITOR_VIDEO_TOOL_SELECTOR } from '../components/editor-video-tool/editor-video-tool.options';\r\nimport type { CuiFileData, CuiResourceFile } from '../interfaces/file-response-data';\r\nimport { CuiFileUploader } from '../utils/file-uploader';\r\n\r\nexport class CuiVideoTool {\r\n    private selectedFile: CuiNullable<string | File> = null;\r\n\r\n    public static get isReadOnlySupported(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public static get toolbox(): ToolboxConfig {\r\n        return {\r\n            icon: CUI_ICONS.cuiIconPlayCircle,\r\n            title: 'Video'\r\n        };\r\n    }\r\n\r\n    public static get pasteConfig(): PasteConfig {\r\n        return {\r\n            tags: ['video'],\r\n            patterns: {\r\n                video: /https?:\\/\\/\\S+\\.(mp4)$/i\r\n            },\r\n            files: {\r\n                mimeTypes: ['video/*']\r\n            }\r\n        };\r\n    }\r\n\r\n    public api: API;\r\n    public config: CuiVideoToolConfig;\r\n    public blockApi?: BlockAPI;\r\n    public readOnly: boolean;\r\n    public data: CuiVideoToolData;\r\n    public videoTool!: CuiAngularElement<EditorVideoToolComponent>;\r\n    public uploader: CuiFileUploader;\r\n\r\n    constructor(options: { api: API }) {\r\n        const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<\r\n            CuiVideoToolData,\r\n            CuiVideoToolConfig\r\n        >;\r\n\r\n        this.blockApi = block;\r\n        this.api = api;\r\n        this.readOnly = readOnly;\r\n        this.config = {\r\n            load: config?.load ?? (() => {}),\r\n            field: config?.field ?? 'video',\r\n            types: config?.types ?? 'video/*',\r\n            endpoint: config?.endpoint ?? '',\r\n            buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a Video'),\r\n            additionalRequestHeaders: config?.additionalRequestHeaders ?? {}\r\n        };\r\n\r\n        this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n        this.data = data;\r\n    }\r\n\r\n    public onSelectFile = (): void => {\r\n        return this.uploader.selectFile({\r\n            fileSelected: (file) => {\r\n                const url = URL.createObjectURL(file);\r\n\r\n                this.getCaptureFromVideo(url);\r\n                this.videoTool.isLoading = true;\r\n                this.selectedFile = file;\r\n\r\n                this.uploader.uploadFile(file);\r\n            }\r\n        });\r\n    };\r\n\r\n    public async onPaste(event: CustomEvent): Promise<void> {\r\n        if (event.type !== 'file') {\r\n            return;\r\n        }\r\n\r\n        const file = event.detail.file;\r\n\r\n        this.videoTool.isLoading = true;\r\n        this.selectedFile = file;\r\n        this.uploader.uploadFile(file);\r\n    }\r\n\r\n    public appendCallback(): void {\r\n        this.onSelectFile();\r\n    }\r\n\r\n    public render(): HTMLElement {\r\n        this.videoTool = document.createElement(\r\n            EDITOR_VIDEO_TOOL_SELECTOR\r\n        ) as CuiAngularElement<EditorVideoToolComponent>;\r\n\r\n        this.videoTool.api = this.api;\r\n        this.videoTool.video = this.data.file?.url || '';\r\n        this.videoTool.caption = this.data.caption || '';\r\n        this.videoTool.readOnly = this.readOnly;\r\n        this.videoTool.buttonContent = this.config.buttonContent;\r\n\r\n        this.videoTool.addEventListener('fileSelected', this.onSelectFile);\r\n        this.videoTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n        return this.videoTool;\r\n    }\r\n\r\n    public save(): CuiVideoToolData {\r\n        return this.data;\r\n    }\r\n\r\n    public removed(): void {\r\n        this.videoTool.removeEventListener('fileSelected', this.onSelectFile);\r\n        this.videoTool.removeEventListener('captionChanged', this.changeCaption);\r\n    }\r\n\r\n    public changeCaption(event: Event): void {\r\n        const customEvent = event as CustomEvent;\r\n        const value = customEvent.detail;\r\n        this.data.caption = value;\r\n\r\n        this.blockApi?.dispatchChange();\r\n    }\r\n\r\n    public set video(file: CuiFileData) {\r\n        this.data.file = file || {};\r\n\r\n        if (file && file.url) {\r\n            this.videoTool.video = file.url;\r\n        }\r\n    }\r\n\r\n    private onUpload(response: CuiResourceFile): void {\r\n        if (!response.success || !response.file || !this.selectedFile) {\r\n            this.uploadingFailed();\r\n\r\n            return;\r\n        }\r\n\r\n        const url =\r\n            this.selectedFile instanceof File ? window.URL.createObjectURL(this.selectedFile) : this.selectedFile;\r\n\r\n        this.data.file = response.file;\r\n        this.videoTool.video = url;\r\n        this.videoTool.isLoading = false;\r\n    }\r\n\r\n    private uploadingFailed(): void {\r\n        this.videoTool.video = '';\r\n        this.videoTool.isLoading = false;\r\n    }\r\n\r\n    private getCaptureFromVideo(url: string): void {\r\n        const canvas = document.createElement('canvas') as HTMLCanvasElement;\r\n        const video = document.createElement('video') as HTMLVideoElement;\r\n\r\n        video.src = url;\r\n        video.currentTime = 1;\r\n        canvas.width = 120;\r\n        canvas.height = 120;\r\n\r\n        video.onloadeddata = (): void => {\r\n            const context = canvas.getContext('2d');\r\n\r\n            if (!context) {\r\n                return;\r\n            }\r\n\r\n            context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n\r\n            canvas.toBlob((blob) => {\r\n                if (!blob) {\r\n                    return;\r\n                }\r\n\r\n                this.videoTool.preview = URL.createObjectURL(blob);\r\n            });\r\n        };\r\n\r\n        video.load();\r\n    }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_ICONS } from '@cuby-ui/icons';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, ToolboxConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement, CuiFileData, CuiResourceFile } from '../interfaces';\r\n\r\nimport type { EditorAttachesToolComponent } from '../components/editor-attaches-tool/editor-attaches-tool.component';\r\nimport type {\r\n    CuiAttachesToolConfig,\r\n    CuiAttachesToolData\r\n} from '../components/editor-attaches-tool/editor-attaches-tool.options';\r\nimport { EDITOR_ATTACHES_TOOL_SELECTOR } from '../components/editor-attaches-tool/editor-attaches-tool.options';\r\nimport { CuiFileUploader } from '../utils/file-uploader';\r\n\r\nexport class CuiAttachesTool {\r\n    private readonly abortController = new AbortController();\r\n    private readonly abortSignal = this.abortController.signal;\r\n\r\n    private attachesTool!: CuiAngularElement<EditorAttachesToolComponent>;\r\n    private selectedFile: CuiNullable<File> = null;\r\n\r\n    public api: API;\r\n    public config: CuiAttachesToolConfig;\r\n    public blockApi?: BlockAPI;\r\n    public readOnly: boolean;\r\n    public data: CuiAttachesToolData;\r\n    public uploader: CuiFileUploader;\r\n\r\n    public static get isReadOnlySupported(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public static get toolbox(): ToolboxConfig {\r\n        return {\r\n            icon: CUI_ICONS.cuiIconPaperclipSm,\r\n            title: 'File'\r\n        };\r\n    }\r\n\r\n    constructor(options: { api: API }) {\r\n        const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<\r\n            CuiAttachesToolData,\r\n            CuiAttachesToolConfig\r\n        >;\r\n\r\n        this.blockApi = block;\r\n        this.api = api;\r\n        this.readOnly = readOnly;\r\n        this.config = {\r\n            field: config?.field ?? 'file',\r\n            types: config?.types ?? '*',\r\n            endpoint: config?.endpoint ?? '',\r\n            buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a File'),\r\n            additionalRequestHeaders: config?.additionalRequestHeaders ?? {},\r\n            load: config?.load ?? (() => {}),\r\n            fileClicked: config?.fileClicked ?? (() => {})\r\n        };\r\n\r\n        this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n        this.data = data;\r\n    }\r\n\r\n    public appendCallback(): void {\r\n        this.selectFile();\r\n    }\r\n\r\n    public render(): HTMLElement {\r\n        this.attachesTool = document.createElement(\r\n            EDITOR_ATTACHES_TOOL_SELECTOR\r\n        ) as CuiAngularElement<EditorAttachesToolComponent>;\r\n\r\n        this.attachesTool.api = this.api;\r\n        this.attachesTool.file = this.data.file ?? '';\r\n        this.attachesTool.title = this.data.title ?? '';\r\n        this.attachesTool.readOnly = this.readOnly;\r\n        this.attachesTool.buttonContent = this.config.buttonContent;\r\n\r\n        this.attachesTool.addEventListener('fileSelected', this.selectFile, { signal: this.abortSignal });\r\n        this.attachesTool.addEventListener('fileClicked', this.clickFile, { signal: this.abortSignal });\r\n        this.attachesTool.addEventListener('captionChanged', this.changeCaption, { signal: this.abortSignal });\r\n\r\n        return this.attachesTool;\r\n    }\r\n\r\n    public save(): CuiAttachesToolData {\r\n        return this.data;\r\n    }\r\n\r\n    public removed(): void {\r\n        this.abortController.abort();\r\n    }\r\n\r\n    public changeCaption = (event: Event): void => {\r\n        const customEvent = event as CustomEvent;\r\n        const value = customEvent.detail;\r\n        this.data.title = value;\r\n\r\n        this.blockApi?.dispatchChange();\r\n    };\r\n\r\n    public selectFile = (): void => {\r\n        return this.uploader.selectFile({\r\n            fileSelected: (file) => {\r\n                this.attachesTool.isLoading = true;\r\n                this.selectedFile = file;\r\n\r\n                this.uploader.uploadFile(file);\r\n            }\r\n        });\r\n    };\r\n\r\n    public clickFile = (): void => {\r\n        this.config.fileClicked(this.data.file);\r\n    };\r\n\r\n    public set file(file: CuiFileData) {\r\n        this.data.title = file.name!;\r\n        this.data.file = {\r\n            name: file.name,\r\n            extension: file.name?.split('.').pop(),\r\n            size: file.size,\r\n            url: file.url\r\n        };\r\n        this.attachesTool.file = { ...this.data.file };\r\n        this.attachesTool.title = file.name!;\r\n    }\r\n\r\n    private onUpload(response: CuiResourceFile): void {\r\n        if (!response.success || !response.file || !this.selectedFile) {\r\n            this.uploadingFailed();\r\n\r\n            return;\r\n        }\r\n\r\n        this.file = {\r\n            name: this.selectedFile.name,\r\n            extension: this.selectedFile.name.split('.').pop(),\r\n            size: this.selectedFile.size,\r\n            url: response.file.url\r\n        };\r\n        this.attachesTool.isLoading = false;\r\n    }\r\n\r\n    private uploadingFailed(): void {\r\n        this.attachesTool.file = undefined;\r\n        this.attachesTool.isLoading = false;\r\n    }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement, CuiParent } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent } from '../components/marker-modal/marker-modal.component';\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport { removeElementTagWrapper } from '../utils/remove-element-tag-wrapper';\r\n\r\nexport enum RangeContainer {\r\n    start = 'startContainer',\r\n    end = 'endContainer'\r\n}\r\n\r\nexport class CuiMarkerTool {\r\n    private readonly LIST_CLASS = 'cdx-list__item';\r\n    protected readonly DEFAULT_CLASS = 'marker';\r\n    protected readonly DIV = 'div';\r\n    protected readonly TAG: string = 'MARK';\r\n    protected readonly api!: API;\r\n\r\n    protected CLASS = 'tool-marker';\r\n    protected _state = false;\r\n    protected button!: HTMLButtonElement;\r\n    protected dropdown!: HTMLElement;\r\n    protected range!: Range;\r\n    protected markerModal!: CuiAngularElement<MarkerModalComponent>;\r\n\r\n    public static get isInline(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public get state(): boolean {\r\n        return this._state;\r\n    }\r\n\r\n    public set state(state: boolean) {\r\n        this._state = state;\r\n\r\n        this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n    }\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        this.api = data.api;\r\n    }\r\n\r\n    public render(): HTMLButtonElement {\r\n        this.button = document.createElement('button');\r\n        this.button.type = 'button';\r\n        this.button.classList.add(this.api.styles.inlineToolButton);\r\n\r\n        this.range = window.getSelection()?.getRangeAt(0).cloneRange() as Range;\r\n\r\n        return this.button;\r\n    }\r\n\r\n    public surround(): void {\r\n        if (this.state) {\r\n            this.api.inlineToolbar.close();\r\n            this.unwrap();\r\n\r\n            return;\r\n        }\r\n\r\n        this.markerModal.title = this.range.toString();\r\n    }\r\n\r\n    public wrap(range: Range): void {\r\n        const { startContainer, endContainer } = range;\r\n        const selectedText = range.extractContents();\r\n        const mark = this.createElement();\r\n\r\n        mark.appendChild(selectedText);\r\n\r\n        this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n        this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n        this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n        this.removeEmptyMarkers(range);\r\n\r\n        this.api.selection.expandToTag(mark);\r\n    }\r\n\r\n    public unwrap(): void {\r\n        const mark = this.api.selection.findParentTag(this.TAG, this.CLASS);\r\n\r\n        if (!mark) {\r\n            return;\r\n        }\r\n\r\n        removeElementTagWrapper(mark);\r\n    }\r\n\r\n    public createElement(text = ''): HTMLElement {\r\n        const element = document.createElement(this.TAG);\r\n\r\n        element.classList.add(this.DEFAULT_CLASS);\r\n        element.textContent = text;\r\n\r\n        return element;\r\n    }\r\n\r\n    public addMarkerToDOM(range: Range, mark: HTMLElement, startBlock: Node, endBlock: Node): void {\r\n        const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n        const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n        const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n        if (!className || startParent === endParent) {\r\n            range.insertNode(mark);\r\n\r\n            return;\r\n        }\r\n\r\n        this.removeAllParentsFromMarker(mark, className);\r\n        startParent?.append(mark);\r\n    }\r\n\r\n    public removeEmptyMarkers(range: Range): void {\r\n        range.commonAncestorContainer.childNodes.forEach((node) => {\r\n            if (node.nodeName !== this.TAG) {\r\n                return;\r\n            }\r\n\r\n            if (node.textContent?.length) {\r\n                return;\r\n            }\r\n\r\n            node.remove();\r\n        });\r\n    }\r\n\r\n    public removeExternalMarkers(range: Range, className: string): void {\r\n        const startContainer = this.getElementFromContainerNode(range, RangeContainer.start, className);\r\n        const endContainer = this.getElementFromContainerNode(range, RangeContainer.end, className);\r\n\r\n        const startElement = startContainer?.closest('.' + className);\r\n        const endElement = endContainer?.closest('.' + className);\r\n\r\n        if (startElement !== endElement || !startElement?.classList.contains(className)) {\r\n            return;\r\n        }\r\n\r\n        const marker = startElement as HTMLElement;\r\n\r\n        removeElementTagWrapper(marker);\r\n    }\r\n\r\n    public removeNestedMarkers(element: HTMLElement, selector: string): void {\r\n        const markers = element.querySelectorAll('.' + selector);\r\n\r\n        markers.forEach((node) => {\r\n            const marker = node as HTMLElement;\r\n\r\n            removeElementTagWrapper(marker);\r\n        });\r\n    }\r\n\r\n    private getElementFromContainerNode(\r\n        range: Range,\r\n        key: RangeContainer,\r\n        className: string\r\n    ): CuiNullable<HTMLElement> {\r\n        const container = range[key] as HTMLElement;\r\n\r\n        if (container?.classList?.contains(className)) {\r\n            return container as HTMLElement;\r\n        }\r\n\r\n        return container.parentElement;\r\n    }\r\n\r\n    private removeAllParentsFromMarker(mark: HTMLElement, className: string): void {\r\n        const innerMarkerNodes: Node[] = [];\r\n\r\n        mark.childNodes.forEach((node) => {\r\n            innerMarkerNodes.push(node);\r\n        });\r\n\r\n        innerMarkerNodes.forEach((node) => {\r\n            const element = node as HTMLElement;\r\n            const isBlock = element.classList?.contains(className);\r\n\r\n            if (!isBlock) {\r\n                return;\r\n            }\r\n\r\n            removeElementTagWrapper(element);\r\n        });\r\n    }\r\n\r\n    private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n        const nodeParent = node.parentElement as Element;\r\n        let parent = nodeParent;\r\n        let resultClassName = '';\r\n\r\n        for (const className of classes) {\r\n            const parentWithClass = parent.closest('.' + className);\r\n\r\n            if (!parentWithClass) {\r\n                continue;\r\n            }\r\n\r\n            parent = parentWithClass;\r\n            resultClassName = className;\r\n            break;\r\n        }\r\n\r\n        return { className: resultClassName, parent };\r\n    }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { MarkerData } from '../components/marker-modal/marker-modal.interfaces';\r\nimport type { MarkerModalComponent } from '../components/marker-modal/marker-modal.component';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\nimport { removeElementTagWrapper } from '../utils';\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiLinkMarker extends CuiMarkerTool {\r\n    protected override readonly TAG = 'A';\r\n\r\n    public static get sanitize(): SanitizerConfig {\r\n        return {\r\n            a: {\r\n                href: true,\r\n                class: true,\r\n                target: true,\r\n                contenteditable: true\r\n            }\r\n        };\r\n    }\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        super(data);\r\n    }\r\n\r\n    public override render(): HTMLButtonElement {\r\n        super.render();\r\n\r\n        /* eslint-disable */\r\n        this.button.innerHTML = `<svg width=\"20\" height=\"15\" viewBox=\"-3 -3 24 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M18.2813 1.22405C17.9329 0.874451 17.5189 0.597062 17.0631 0.407792C16.6073 0.218522 16.1186 0.121094 15.625 0.121094C15.1315 0.121094 14.6428 0.218522 14.187 0.407792C13.7312 0.597062 13.3172 0.874451 12.9688 1.22405L13.8563 2.11155C14.089 1.87886 14.3652 1.69429 14.6692 1.56836C14.9733 1.44243 15.2991 1.37762 15.6282 1.37762C15.9572 1.37762 16.2831 1.44243 16.5871 1.56836C16.8911 1.69429 17.1674 1.87886 17.4 2.11155C17.6327 2.34424 17.8173 2.62047 17.9432 2.92449C18.0692 3.22851 18.134 3.55436 18.134 3.88343C18.134 4.21249 18.0692 4.53834 17.9432 4.84236C17.8173 5.14638 17.6327 5.42261 17.4 5.6553L12.4 10.6553C11.9309 11.1252 11.2944 11.3896 10.6304 11.3901C9.96638 11.3907 9.32935 11.1275 8.85942 10.6584C8.38949 10.1893 8.12515 9.55275 8.12457 8.88876C8.12398 8.22476 8.38719 7.58773 8.85629 7.1178L9.73754 6.2303L8.85629 5.3428L7.96879 6.2303C7.61919 6.57869 7.3418 6.99266 7.15253 7.44848C6.96326 7.9043 6.86583 8.393 6.86583 8.88655C6.86583 9.3801 6.96326 9.8688 7.15253 10.3246C7.3418 10.7804 7.61919 11.1944 7.96879 11.5428C8.67597 12.2409 9.63134 12.6298 10.625 12.624C11.1205 12.6261 11.6114 12.5299 12.0695 12.3411C12.5276 12.1523 12.9437 11.8746 13.2938 11.524L18.2938 6.52405C18.9944 5.81927 19.3866 4.86522 19.3842 3.87146C19.3819 2.87771 18.9852 1.92552 18.2813 1.22405Z\" fill=\"#595E6A\"/>\r\n            <path d=\"M2.61879 12.5115C2.38541 12.2793 2.20022 12.0031 2.07386 11.6991C1.94749 11.395 1.88244 11.069 1.88244 10.7397C1.88244 10.4104 1.94749 10.0844 2.07386 9.78028C2.20022 9.47621 2.38541 9.2001 2.61879 8.9678L7.61879 3.9678C7.85109 3.73442 8.1272 3.54923 8.43127 3.42287C8.73534 3.2965 9.06138 3.23145 9.39067 3.23145C9.71995 3.23145 10.046 3.2965 10.3501 3.42287C10.6541 3.54923 10.9302 3.73442 11.1625 3.9678C11.3944 4.20193 11.577 4.48022 11.6994 4.78619C11.8218 5.09215 11.8815 5.41958 11.875 5.74905C11.8769 6.07955 11.8133 6.40715 11.6878 6.7129C11.5623 7.01865 11.3774 7.29647 11.1438 7.5303L9.81879 8.87405L10.7063 9.76155L12.0313 8.43655C12.7366 7.73124 13.1328 6.77463 13.1328 5.77718C13.1328 4.77972 12.7366 3.82311 12.0313 3.1178C11.326 2.41249 10.3694 2.01625 9.37192 2.01625C8.37446 2.01625 7.41785 2.41249 6.71254 3.1178L1.71254 8.1178C1.362 8.4663 1.08382 8.88066 0.893994 9.33706C0.704168 9.79346 0.606445 10.2829 0.606445 10.7772C0.606445 11.2715 0.704168 11.7609 0.893994 12.2173C1.08382 12.6737 1.362 13.088 1.71254 13.4365C2.42431 14.1293 3.38185 14.5115 4.37504 14.499C5.37698 14.5 6.33862 14.1046 7.05004 13.399L6.16254 12.5115C5.93025 12.7449 5.65413 12.9301 5.35006 13.0565C5.04599 13.1829 4.71995 13.2479 4.39067 13.2479C4.06138 13.2479 3.73534 13.1829 3.43127 13.0565C3.1272 12.9301 2.85109 12.7449 2.61879 12.5115Z\" fill=\"#595E6A\"/>\r\n        </svg>\r\n        `;\r\n        /* eslint-enable */\r\n\r\n        return this.button;\r\n    }\r\n\r\n    public renderActions(): HTMLElement {\r\n        this.dropdown = document.createElement(this.DIV);\r\n\r\n        if (this.state) {\r\n            return this.dropdown;\r\n        }\r\n\r\n        const linkModal = this.createLinkModal();\r\n\r\n        this.dropdown.append(linkModal);\r\n\r\n        return this.dropdown;\r\n    }\r\n\r\n    public wrapLink(range: Range, markerData: MarkerData): void {\r\n        const { startContainer, endContainer } = range;\r\n        const url = markerData.data?.toString();\r\n        const link = this.createElement(url, markerData.title);\r\n\r\n        range.extractContents();\r\n\r\n        this.addMarkerToDOM(range, link, startContainer, endContainer);\r\n\r\n        this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n        this.removeEmptyMarkers(range);\r\n\r\n        this.api.selection.expandToTag(link);\r\n    }\r\n\r\n    public override unwrap(): void {\r\n        const mark = this.api.selection.findParentTag(this.TAG);\r\n\r\n        if (!mark) {\r\n            return;\r\n        }\r\n\r\n        removeElementTagWrapper(mark);\r\n    }\r\n\r\n    public override createElement(url = '', text = ''): HTMLLinkElement {\r\n        const link = super.createElement(text) as HTMLLinkElement;\r\n\r\n        link.href = url;\r\n        link.contentEditable = 'false';\r\n        link.target = '_blank';\r\n\r\n        return link;\r\n    }\r\n\r\n    public checkState(): void {\r\n        const link = this.api.selection.findParentTag(this.TAG);\r\n\r\n        this.state = !!link;\r\n    }\r\n\r\n    private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n        this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n        this.markerModal.url = '';\r\n        this.markerModal.target = this.button;\r\n        this.markerModal.isGlobal = true;\r\n\r\n        this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n            const customEvent = event as CustomEvent<MarkerData>;\r\n            const data = customEvent.detail;\r\n\r\n            this.wrapLink(this.range, data);\r\n        });\r\n\r\n        return this.markerModal;\r\n    }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent, MarkerData } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiCustomMarkerTool extends CuiMarkerTool {\r\n    protected id!: string;\r\n    protected type!: string;\r\n\r\n    public static get sanitize(): SanitizerConfig {\r\n        return {\r\n            mark: {\r\n                class: true,\r\n                'data-id': true,\r\n                'data-type': true,\r\n                contenteditable: true\r\n            }\r\n        };\r\n    }\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        super(data);\r\n    }\r\n\r\n    public wrapTool(range: Range, markerData: MarkerData): void {\r\n        const { startContainer, endContainer } = range;\r\n\r\n        if (markerData.data && typeof markerData.data !== 'string') {\r\n            this.id = markerData.data.id!;\r\n            this.type = markerData.data.type!;\r\n        }\r\n\r\n        const mark = this.createElement(markerData.title);\r\n\r\n        range.extractContents();\r\n\r\n        this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n        this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n        this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n        this.removeEmptyMarkers(range);\r\n\r\n        this.api.selection.expandToTag(mark);\r\n    }\r\n\r\n    private onToolButtonClick(event: MouseEvent): void {\r\n        const range = window.getSelection()?.getRangeAt(0);\r\n\r\n        if (range) {\r\n            return;\r\n        }\r\n\r\n        event.stopImmediatePropagation();\r\n    }\r\n\r\n    public override render(): HTMLButtonElement {\r\n        super.render();\r\n\r\n        this.button.onclick = this.onToolButtonClick.bind(this);\r\n\r\n        return this.button;\r\n    }\r\n\r\n    public renderActions(): HTMLElement {\r\n        this.dropdown = document.createElement(this.DIV);\r\n\r\n        if (this.state) {\r\n            return this.dropdown;\r\n        }\r\n\r\n        const markerSelect = this.createLinkModal();\r\n\r\n        this.dropdown.append(markerSelect);\r\n\r\n        return this.dropdown;\r\n    }\r\n\r\n    public override createElement(text = ''): HTMLElement {\r\n        const element = super.createElement(text);\r\n\r\n        element.contentEditable = 'false';\r\n        element.classList.add(this.CLASS);\r\n        element.setAttribute('data-id', this.id);\r\n        element.setAttribute('data-type', this.type);\r\n\r\n        return element;\r\n    }\r\n\r\n    public checkState(select: Selection): void {\r\n        const range = select.getRangeAt(0);\r\n        const mark = this.api.selection.findParentTag(this.TAG);\r\n        const isCorrectTool = mark?.classList.contains(this.CLASS);\r\n\r\n        if (!mark || !isCorrectTool) {\r\n            this.state = false;\r\n\r\n            return;\r\n        }\r\n\r\n        const startContainer = range.startContainer;\r\n        const endContainer = range.endContainer;\r\n\r\n        const isStartMarker = mark.contains(startContainer);\r\n        const isEndMarker = mark.contains(endContainer);\r\n\r\n        this.state = isStartMarker && isEndMarker && isStartMarker === isEndMarker;\r\n    }\r\n\r\n    private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n        this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n        this.markerModal.tool = { id: '', title: '', type: undefined };\r\n        this.markerModal.target = this.button;\r\n        this.markerModal.isTool = true;\r\n        this.markerModal.isGlobal = true;\r\n\r\n        this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n            const customEvent = event as CustomEvent<MarkerData>;\r\n            const data = customEvent.detail;\r\n\r\n            this.wrapTool(this.range, data);\r\n        });\r\n\r\n        return this.markerModal;\r\n    }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiRoleMarker extends CuiCustomMarkerTool {\r\n    protected override readonly CLASS = 'role-marker';\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        super(data);\r\n    }\r\n\r\n    public override render(): HTMLButtonElement {\r\n        super.render();\r\n\r\n        /* eslint-disable */\r\n        this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"-3 -3 24 24\" fill=\"none\">\r\n            <path d=\"M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n        </svg>`;\r\n        /* eslint-enable */\r\n\r\n        return this.button;\r\n    }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiToolMarker extends CuiCustomMarkerTool {\r\n    protected override readonly CLASS = 'tool-marker';\r\n\r\n    constructor(data: InlineToolConstructorOptions) {\r\n        super(data);\r\n    }\r\n\r\n    public override render(): HTMLButtonElement {\r\n        super.render();\r\n\r\n        this.button.innerHTML =\r\n            '<svg width=\"20\" height=\"20\" viewBox=\"-2 -3 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"technologies-tools\"><path id=\"Vector\" d=\"M16.3581 15.3966L16.3581 11.4729C16.3581 11.4158 16.3469 11.3592 16.325 11.3064C16.3031 11.2536 16.2711 11.2056 16.2307 11.1652C16.1903 11.1248 16.1423 11.0928 16.0895 11.0709C16.0368 11.0491 15.9802 11.0378 15.923 11.0378H13.2574L13.2593 11.0372C13.2007 11.0348 13.1422 11.0443 13.0874 11.0651C13.0326 11.0859 12.9825 11.1176 12.9402 11.1582C12.898 11.1989 12.8643 11.2476 12.8414 11.3016C12.8184 11.3556 12.8066 11.4136 12.8067 11.4723L12.8067 15.3972M14.584 11.0334V5.8334M16.3582 15.1022L16.3582 17.0647C16.3583 17.1234 16.3465 17.1814 16.3235 17.2354C16.3006 17.2893 16.2669 17.3381 16.2247 17.3787C16.1824 17.4194 16.1323 17.4511 16.0775 17.4719C16.0227 17.4927 15.9642 17.5022 15.9056 17.4998L15.9075 17.4992H13.2419C13.1847 17.4992 13.1282 17.4879 13.0754 17.466C13.0226 17.4442 12.9746 17.4121 12.9342 17.3717C12.8938 17.3313 12.8618 17.2834 12.8399 17.2306C12.818 17.1778 12.8068 17.1212 12.8068 17.0641L12.8068 15.1022M5.59636 9.88719L5.59636 15.9284C5.59627 16.0872 5.62748 16.2445 5.68821 16.3912C5.74895 16.5379 5.838 16.6713 5.9503 16.7836C6.06259 16.8959 6.19591 16.9849 6.34265 17.0456C6.48938 17.1064 6.64665 17.1376 6.80545 17.1375C7.12589 17.1375 7.43318 17.0101 7.65976 16.7836C7.88634 16.557 8.01365 16.2497 8.0137 15.9293L8.01284 9.88719C9.29329 9.32793 10.4298 8.05047 10.4298 6.56367C10.4302 5.07729 9.22194 3.54264 8.01284 3.241L8.01327 5.83907L6.8046 7.2887L5.59636 5.83864L5.59636 3.241C4.38769 3.54306 3.17902 5.07729 3.17902 6.5641C3.17944 8.05048 4.31591 9.32793 5.59636 9.88719ZM14.9916 5.56545L14.1253 5.56545L13.2589 4.69909L13.6921 2.5332L15.4248 2.5332L15.858 4.69909L14.9916 5.56545Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>';\r\n\r\n        return this.button;\r\n    }\r\n}\r\n","\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockTool, BlockToolConstructorOptions, ToolConfig } from '@editorjs/editorjs';\r\n\r\nimport {\r\n    COMBINED_TEXT_BLOCK,\r\n    COMBINED_TEXT_BLOCK_ADDED,\r\n    COMBINED_TEXT_BLOCK_NAME,\r\n    COMBINED_TEXT_BLOCK_PART,\r\n    COMBINED_TEXT_BLOCK_REMOVED,\r\n    COMBINED_TEXT_BLOCK_UPDATED,\r\n    DEFAULT_PLACEHOLDER,\r\n    DEFAULT_READONLY_PLACEHOLDER,\r\n    SPLIT_MAX_LENGTH\r\n} from '../constants';\r\nimport type {\r\n    CuiCombinedBlockToolData,\r\n    CuiCombinedPartBlock,\r\n    CuiMutationActions,\r\n    CuiMutationCallback\r\n} from '../interfaces';\r\nimport { generateId, mergeSmallChunks, splitHTML } from '../utils';\r\n\r\nexport class CuiCombinedTextBlockTool implements BlockTool {\r\n    private readonly TAG = 'span';\r\n    private readonly DEBOUNCE_TIME = 350;\r\n    private readonly MAX_CHILD_COUNT_FOR_EMPTY = 1;\r\n    private readonly PLACEHOLDER_ATTRIBUTE_NAME = 'placeholderActive';\r\n\r\n    private readonly mutationConfig = {\r\n        subtree: true,\r\n        childList: true,\r\n        characterData: true\r\n    };\r\n    private readonly api: API;\r\n    private readonly data: CuiCombinedBlockToolData;\r\n    private readonly placeholder: string;\r\n    private wrapper?: HTMLElement;\r\n    private observer?: MutationObserver;\r\n    private lastBlockElement?: HTMLElement;\r\n    private readonly readOnly?: boolean;\r\n    private readonly changes = new Map();\r\n\r\n    private skipNextUpdateEmit = false;\r\n\r\n    constructor(options: unknown) {\r\n        const body = options as BlockToolConstructorOptions;\r\n        const data = body.data;\r\n\r\n        this.readOnly = body.readOnly;\r\n        this.placeholder = this.getPlaceholder(body.config);\r\n        this.api = body.api;\r\n        this.data = {\r\n            id: data.id || generateId(),\r\n            textBlocks: data.textBlocks || []\r\n        };\r\n\r\n        this.convertDefaultDataToCustom(data);\r\n    }\r\n\r\n    public static get isInline(): boolean {\r\n        return false;\r\n    }\r\n\r\n    public static get isReadOnlySupported(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public static get enableLineBreaks(): boolean {\r\n        return false;\r\n    }\r\n\r\n    public static get toolbox(): { icon: string; title: string } {\r\n        return {\r\n            icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\" d=\"M8 9V7.2C8 7.08954 8.08954 7 8.2 7L12 7M16 9V7.2C16 7.08954 15.9105 7 15.8 7L12 7M12 7L12 17M12 17H10M12 17H14\"></path></svg>',\r\n            title: 'Text'\r\n        };\r\n    }\r\n\r\n    public static get pasteConfig(): object {\r\n        return {\r\n            tags: ['P']\r\n        };\r\n    }\r\n\r\n    public onPaste(event: CustomEvent): void {\r\n        if (event.type !== 'tag') {\r\n            return;\r\n        }\r\n\r\n        const text = event.detail.data.textContent;\r\n        const lastBlockIndex = this.data.textBlocks.length - 1;\r\n        const lastBlock = this.data.textBlocks[lastBlockIndex];\r\n        const blockId = lastBlock?.id || generateId();\r\n\r\n        this.data.textBlocks.splice(lastBlockIndex, 1, this.getBlockPartObject(blockId, text));\r\n\r\n        this.skipNextUpdateEmit = true;\r\n\r\n        this.updateExistingBlock(blockId, text, Boolean(lastBlock?.id));\r\n    }\r\n\r\n    public render(): HTMLElement {\r\n        this.wrapper = document.createElement('div');\r\n        this.wrapper.classList.add(COMBINED_TEXT_BLOCK);\r\n        this.wrapper.dataset[this.PLACEHOLDER_ATTRIBUTE_NAME] = this.api.i18n.t(this.placeholder);\r\n\r\n        if (!this.readOnly) {\r\n            this.wrapper.contentEditable = 'true';\r\n        }\r\n\r\n        const isEmptyBlock = !this.data.textBlocks.length;\r\n\r\n        if (isEmptyBlock) {\r\n            this.data.textBlocks.push(this.getBlockPartObject(generateId(), ''));\r\n        }\r\n\r\n        this.renderBlocks(this.data.textBlocks);\r\n        this.checkIsEditorEmpty();\r\n\r\n        if (!this.readOnly) {\r\n            const callback = this.getMutationCallback(this.DEBOUNCE_TIME);\r\n\r\n            this.observer = new MutationObserver(this.onMutationEvent.bind(this, callback));\r\n            this.observer.observe(this.wrapper, this.mutationConfig);\r\n        }\r\n\r\n        return this.wrapper;\r\n    }\r\n\r\n    public merge(blocksData: CuiCombinedPartBlock[]): void {\r\n        if (!this.wrapper) {\r\n            return;\r\n        }\r\n\r\n        let blocksTextContent = '';\r\n        this.data.textBlocks = [];\r\n\r\n        blocksData.forEach((block) => {\r\n            blocksTextContent += block.data.text;\r\n        });\r\n\r\n        for (let i = 0; i < this.wrapper.childNodes.length; i++) {\r\n            const node = this.wrapper.childNodes.item(i);\r\n\r\n            if (!(node instanceof HTMLSpanElement)) {\r\n                return;\r\n            }\r\n\r\n            i--;\r\n            blocksTextContent = node.innerHTML + blocksTextContent;\r\n            node.remove();\r\n        }\r\n\r\n        const parts = blocksTextContent.length < SPLIT_MAX_LENGTH ? [blocksTextContent] : splitHTML(blocksTextContent);\r\n\r\n        parts.forEach((part: string) => {\r\n            const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n            this.data.textBlocks.push(blockObject);\r\n        });\r\n\r\n        this.renderBlocks(this.data.textBlocks);\r\n    }\r\n\r\n    public save(blockContent: HTMLElement): CuiCombinedPartBlock[] {\r\n        const textBlocks: CuiCombinedPartBlock[] = [];\r\n\r\n        blockContent.querySelectorAll(this.TAG).forEach((span: HTMLElement) => {\r\n            textBlocks.push(this.getBlockPartObject(span.dataset['localId']!, span.innerHTML));\r\n        });\r\n\r\n        return textBlocks;\r\n    }\r\n\r\n    public removed(): void {\r\n        this.observer?.disconnect();\r\n\r\n        const blockIds = new Set<string>();\r\n\r\n        this.data.textBlocks.forEach((block: CuiCombinedPartBlock) => {\r\n            blockIds.add(block.id || '');\r\n        });\r\n\r\n        this.removeBlocks(blockIds);\r\n    }\r\n\r\n    private onMutationEvent(callback: (mutationList: MutationRecord[]) => void, mutationList: MutationRecord[]): void {\r\n        if (mutationList.length === 0) {\r\n            return;\r\n        }\r\n\r\n        mutationList.forEach((mutation) => {\r\n            if (mutation.removedNodes.length) {\r\n                this.changes.set(generateId(), mutation);\r\n\r\n                return;\r\n            }\r\n\r\n            this.changes.set(mutation.target, mutation);\r\n        });\r\n\r\n        callback(mutationList);\r\n        this.checkIsEditorEmpty();\r\n    }\r\n\r\n    private readonly getMutationCallback = (wait: number): CuiMutationCallback => {\r\n        let timeoutId: CuiNullable<ReturnType<typeof setTimeout>> = null;\r\n\r\n        return () => {\r\n            if (timeoutId) {\r\n                clearTimeout(timeoutId);\r\n            }\r\n\r\n            timeoutId = setTimeout(() => this.handleMutations(), wait);\r\n        };\r\n    };\r\n\r\n    private handleMutations(): void {\r\n        this.observer?.disconnect();\r\n\r\n        try {\r\n            const { updatedElements, removedElementsIds } = this.getMutationActions([...this.changes.values()]);\r\n            const splittedParts = this.takeSplittedPartsResult(updatedElements);\r\n            const { splittedPartsResult, updatedElementsResult, removedElementsIdsResult } = this.takeMergedResult(\r\n                splittedParts,\r\n                updatedElements,\r\n                removedElementsIds\r\n            );\r\n\r\n            this.addBlocks(splittedPartsResult, updatedElementsResult);\r\n            this.updateBlocks(updatedElementsResult);\r\n            this.removeBlocks(removedElementsIdsResult);\r\n            this.changes.clear();\r\n        } finally {\r\n            if (!this.wrapper) {\r\n                return;\r\n            }\r\n\r\n            this.observer?.observe(this.wrapper, this.mutationConfig);\r\n        }\r\n    }\r\n\r\n    private takeMergedResult(\r\n        splittedParts: HTMLElement[],\r\n        updatedElements: Set<HTMLElement>,\r\n        removedElementsIds: Set<string>\r\n    ): {\r\n        splittedPartsResult: HTMLElement[];\r\n        updatedElementsResult: Set<HTMLElement>;\r\n        removedElementsIdsResult: Set<string>;\r\n    } {\r\n        const { removedIds: mergeRemovedIds, updatedElements: mergeUpdatedElements } = this.applyMergeSmallChunks();\r\n\r\n        const notRemovedByMerge = (el: HTMLElement) => !mergeRemovedIds.has(el.dataset['localId'] ?? '');\r\n\r\n        const splittedPartsResult = splittedParts.filter(notRemovedByMerge);\r\n        const removedElementsIdsResult = new Set<string>([...removedElementsIds, ...mergeRemovedIds]);\r\n        const updatedElementsResult = new Set<HTMLElement>(\r\n            [...updatedElements, ...mergeUpdatedElements].filter(notRemovedByMerge)\r\n        );\r\n\r\n        return { splittedPartsResult, updatedElementsResult, removedElementsIdsResult };\r\n    }\r\n\r\n    private takeSplittedPartsResult(updatedElements: Set<HTMLElement>): HTMLElement[] {\r\n        const splittedParts: HTMLElement[] = [];\r\n\r\n        updatedElements.forEach((element: HTMLElement) => {\r\n            const elementContent: string = element.innerHTML;\r\n\r\n            if (elementContent.length < SPLIT_MAX_LENGTH) {\r\n                return;\r\n            }\r\n\r\n            const parts = splitHTML(elementContent);\r\n\r\n            parts.forEach((part, index) => {\r\n                if (index === 0) {\r\n                    return;\r\n                }\r\n\r\n                const blockId = generateId();\r\n                const textElement = this.createBlock(blockId, part);\r\n\r\n                splittedParts.push(textElement);\r\n            });\r\n\r\n            element.innerHTML = parts[0];\r\n            element.after(...splittedParts);\r\n        });\r\n\r\n        return splittedParts;\r\n    }\r\n\r\n    private applyMergeSmallChunks(): {\r\n        removedIds: Set<string>;\r\n        updatedElements: Set<HTMLElement>;\r\n    } {\r\n        const empty = { removedIds: new Set<string>(), updatedElements: new Set<HTMLElement>() };\r\n\r\n        if (!this.wrapper) {\r\n            return empty;\r\n        }\r\n\r\n        const chunkElements = Array.from(this.wrapper.querySelectorAll<HTMLElement>('.' + COMBINED_TEXT_BLOCK_PART));\r\n        const chunkElementsMap = new Map(chunkElements.map((element) => [element.dataset['localId']!, element]));\r\n        const { chunks, removedIds } = mergeSmallChunks(\r\n            chunkElements.map((element) => ({\r\n                id: element.dataset['localId']!,\r\n                content: element.innerHTML\r\n            }))\r\n        );\r\n\r\n        removedIds.forEach((id) => chunkElementsMap.get(id)?.remove());\r\n\r\n        const updatedElements = new Set<HTMLElement>();\r\n\r\n        chunks.forEach((chunk) => {\r\n            const element = chunkElementsMap.get(chunk.id);\r\n\r\n            if (!element || element.innerHTML === chunk.content) {\r\n                return;\r\n            }\r\n\r\n            element.innerHTML = chunk.content;\r\n            updatedElements.add(element);\r\n        });\r\n\r\n        return { removedIds: new Set(removedIds), updatedElements };\r\n    }\r\n\r\n    // RIP 13.01.2026 - private getNextIndex(): number\r\n\r\n    private getBlockPartObject(blockId: string, text: string): CuiCombinedPartBlock {\r\n        return {\r\n            id: blockId,\r\n            type: COMBINED_TEXT_BLOCK_PART,\r\n            data: {\r\n                text,\r\n                parentId: this.data.id,\r\n                parentType: COMBINED_TEXT_BLOCK_NAME\r\n            }\r\n        };\r\n    }\r\n\r\n    private getMutationActions(mutationList: MutationRecord[]): CuiMutationActions {\r\n        const updatedElements = new Set<HTMLElement>();\r\n        const removedElementsIds = new Set<string>();\r\n        const changedOutsideElements: Node[] = [];\r\n\r\n        this.lastBlockElement = undefined;\r\n\r\n        mutationList.forEach((mutation: MutationRecord): void => {\r\n            this.handleUpdatedBlocks(mutation, updatedElements, changedOutsideElements);\r\n            this.handleRemovedBlocks(mutation, removedElementsIds);\r\n        });\r\n\r\n        if (this.lastBlockElement) {\r\n            const lastBlockElement = this.lastBlockElement as HTMLElement;\r\n\r\n            lastBlockElement.append(...changedOutsideElements);\r\n            updatedElements.add(lastBlockElement);\r\n            this.setCaretToBlocksEnd(lastBlockElement);\r\n        }\r\n\r\n        return {\r\n            updatedElements,\r\n            removedElementsIds\r\n        };\r\n    }\r\n\r\n    private setCaretToBlocksEnd(block: HTMLElement): void {\r\n        const selection = window.getSelection();\r\n        const range = document.createRange();\r\n\r\n        range.setStart(block, block.childNodes.length);\r\n        selection?.removeAllRanges();\r\n        selection?.addRange(range);\r\n    }\r\n\r\n    private handleUpdatedBlocks(\r\n        mutation: MutationRecord,\r\n        updatedElements: Set<HTMLElement>,\r\n        outsideChanges: Node[]\r\n    ): void {\r\n        let element = mutation.target as HTMLElement;\r\n\r\n        if (mutation.target.nodeType === Node.TEXT_NODE) {\r\n            element = mutation.target.parentElement as HTMLElement;\r\n        }\r\n\r\n        const span = element?.closest('.' + COMBINED_TEXT_BLOCK_PART) as HTMLElement;\r\n\r\n        if (span) {\r\n            updatedElements.add(span);\r\n\r\n            return;\r\n        }\r\n\r\n        this.handleChangesOutsideBlock(element, outsideChanges);\r\n    }\r\n\r\n    private handleChangesOutsideBlock(element: HTMLElement, outsideChanges: Node[]): void {\r\n        if (!element || this.lastBlockElement) {\r\n            return;\r\n        }\r\n\r\n        element.childNodes.forEach((block) => {\r\n            const blockElement = block as HTMLElement;\r\n\r\n            if (blockElement.classList?.contains(COMBINED_TEXT_BLOCK_PART)) {\r\n                this.lastBlockElement = blockElement;\r\n\r\n                return;\r\n            }\r\n\r\n            outsideChanges.push(block);\r\n        });\r\n    }\r\n\r\n    private addBlocks(splicedParts: HTMLElement[], updatedElements: Set<HTMLElement>): void {\r\n        if (!splicedParts.length) {\r\n            return;\r\n        }\r\n\r\n        const addedBlocks: CuiCombinedPartBlock[] = splicedParts.map((block) => {\r\n            const blockId = block.dataset['localId'];\r\n\r\n            return {\r\n                id: blockId,\r\n                type: COMBINED_TEXT_BLOCK_PART,\r\n                data: {\r\n                    text: block.innerHTML,\r\n                    parentId: this.data.id,\r\n                    parentType: COMBINED_TEXT_BLOCK_NAME\r\n                }\r\n            };\r\n        });\r\n\r\n        const previousElement = updatedElements.values().next().value;\r\n        const id = previousElement?.dataset['localId'];\r\n        const index = Number(previousElement?.dataset['index']) + 1;\r\n        const blockIndex = this.data.textBlocks.findIndex((block) => block.id === id);\r\n\r\n        this.data.textBlocks.splice(blockIndex, 0, ...addedBlocks);\r\n        this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n            index,\r\n            blockIndex,\r\n            blocks: addedBlocks,\r\n            data: this.data.textBlocks\r\n        });\r\n    }\r\n\r\n    private updateBlocks(updatedElements: Set<HTMLElement>): void {\r\n        if (!updatedElements.size) {\r\n            return;\r\n        }\r\n\r\n        if (this.skipNextUpdateEmit) {\r\n            this.skipNextUpdateEmit = false;\r\n\r\n            return;\r\n        }\r\n\r\n        const updatedBlocks = [...updatedElements.values()].map((block) => {\r\n            return {\r\n                id: block.dataset['localId'],\r\n                type: COMBINED_TEXT_BLOCK_PART,\r\n                data: {\r\n                    text: block.innerHTML,\r\n                    parentId: this.data.id,\r\n                    parentType: COMBINED_TEXT_BLOCK_NAME\r\n                }\r\n            };\r\n        });\r\n\r\n        this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, updatedBlocks);\r\n    }\r\n\r\n    private updateExistingBlock(blockId: string, text: string, isBlockExists: boolean): void {\r\n        if (!this.wrapper) {\r\n            return;\r\n        }\r\n\r\n        const existingElement = this.wrapper.querySelector(`[data-local-id=\"${blockId}\"]`);\r\n\r\n        if (!existingElement) {\r\n            return;\r\n        }\r\n\r\n        const block = this.getBlockPartObject(blockId, text);\r\n\r\n        existingElement.innerHTML = text;\r\n\r\n        if (isBlockExists) {\r\n            setTimeout(() => {\r\n                this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, [block]);\r\n            });\r\n\r\n            return;\r\n        }\r\n\r\n        setTimeout(() => {\r\n            this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n                blocks: [block]\r\n            });\r\n        });\r\n    }\r\n\r\n    private handleRemovedBlocks(mutation: MutationRecord, removedElementsIds: Set<string>): void {\r\n        if (mutation.removedNodes.length === 0) {\r\n            return;\r\n        }\r\n\r\n        mutation.removedNodes.forEach((node: Node): void => {\r\n            if (!(node instanceof HTMLElement)) {\r\n                return;\r\n            }\r\n\r\n            const blockId = (node as HTMLElement).dataset['localId'];\r\n\r\n            if (!blockId) {\r\n                return;\r\n            }\r\n\r\n            removedElementsIds.add(blockId);\r\n        });\r\n    }\r\n\r\n    private removeBlocks(ids: Set<string>): void {\r\n        if (!ids.size) {\r\n            return;\r\n        }\r\n\r\n        const removedElementIds = [...ids.values()];\r\n\r\n        this.data.textBlocks = this.data.textBlocks.filter((block) => !ids.has(block.id || ''));\r\n        this.api.events.emit(COMBINED_TEXT_BLOCK_REMOVED, removedElementIds);\r\n    }\r\n\r\n    private renderBlocks(blocks: CuiCombinedPartBlock[]): void {\r\n        if (!blocks.length) {\r\n            return;\r\n        }\r\n\r\n        blocks.forEach((block: CuiCombinedPartBlock) => {\r\n            const textElement = this.createBlock(block.id || generateId(), block.data.text);\r\n\r\n            if (!this.wrapper) {\r\n                return;\r\n            }\r\n\r\n            if (this.wrapper.querySelector('.' + COMBINED_TEXT_BLOCK_PART)) {\r\n                this.wrapper.append(textElement);\r\n\r\n                return;\r\n            }\r\n\r\n            this.wrapper.replaceChildren(textElement);\r\n        });\r\n\r\n        setTimeout(() => {\r\n            this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n                blocks\r\n            });\r\n        });\r\n    }\r\n\r\n    private createBlock(id: string, text: string): HTMLElement {\r\n        const textElement = document.createElement(this.TAG);\r\n\r\n        textElement.classList.add(COMBINED_TEXT_BLOCK_PART);\r\n        textElement.innerHTML = text;\r\n        textElement.dataset['id'] = id;\r\n        textElement.dataset['localId'] = id;\r\n\r\n        return textElement;\r\n    }\r\n\r\n    private convertDefaultDataToCustom(data: { text: string }): void {\r\n        if (Array.isArray(data)) {\r\n            this.data.textBlocks = data.map((block) => {\r\n                block.id = generateId();\r\n                block.data.parentId = this.data.id;\r\n\r\n                return block;\r\n            });\r\n        }\r\n\r\n        if (!data.text) {\r\n            return;\r\n        }\r\n\r\n        const fragment = document.createRange().createContextualFragment(data.text);\r\n        let elementContent = '';\r\n\r\n        fragment.childNodes.forEach((node) => {\r\n            if (node.nodeType === Node.TEXT_NODE) {\r\n                elementContent += node.textContent;\r\n\r\n                return;\r\n            }\r\n\r\n            elementContent += (node as HTMLElement).innerHTML;\r\n        });\r\n\r\n        const parts = elementContent.length < SPLIT_MAX_LENGTH ? [elementContent] : splitHTML(elementContent);\r\n\r\n        parts.forEach((part: string) => {\r\n            const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n            this.data.textBlocks.push(blockObject);\r\n        });\r\n    }\r\n\r\n    private checkIsEditorEmpty(): void {\r\n        if (!this.wrapper || this.wrapper.children.length > this.MAX_CHILD_COUNT_FOR_EMPTY) {\r\n            return;\r\n        }\r\n\r\n        const item = this.wrapper.children.item(0) as HTMLElement;\r\n        const isItemEmpty = !item?.textContent?.length;\r\n\r\n        this.wrapper.dataset['empty'] = `${isItemEmpty}`;\r\n    }\r\n\r\n    private getPlaceholder(config: ToolConfig): string {\r\n        if (this.readOnly) {\r\n            return config.readonlyPlaceholder ?? DEFAULT_READONLY_PLACEHOLDER;\r\n        }\r\n\r\n        return config.placeholder ?? DEFAULT_PLACEHOLDER;\r\n    }\r\n}\r\n","import type { EditorConfig, LogLevels } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_NAME, DEFAULT_CONFIG } from '../constants';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\nimport { CuiCombinedTextBlockTool, CuiBoldInlineTool, CuiItalicInlineTool, CuiLinkMarker } from '../tools';\r\n\r\nexport const getEditorConfig = (id: string, config: CuiEditorConfig = DEFAULT_CONFIG): EditorConfig => ({\r\n    holder: id,\r\n    logLevel: 'ERROR' as LogLevels,\r\n    readOnly: config.readOnly,\r\n    autofocus: config.autofocus,\r\n    tools: {\r\n        paragraph: {\r\n            class: CuiCombinedTextBlockTool,\r\n            inlineToolbar: true,\r\n            config: {\r\n                placeholder: config.placeholder,\r\n                readonlyPlaceholder: config.readonlyPlaceholder\r\n            }\r\n        },\r\n        link: {\r\n            class: CuiLinkMarker\r\n        },\r\n        bold: {\r\n            class: CuiBoldInlineTool\r\n        },\r\n        italic: {\r\n            class: CuiItalicInlineTool\r\n        },\r\n        ...config.tools\r\n    },\r\n    defaultBlock: COMBINED_TEXT_BLOCK_NAME\r\n});\r\n","export function setEditorDragEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n    editorElement.addEventListener('dragstart', dragstartListener, { signal });\r\n}\r\n\r\nexport function dragstartListener(event: DragEvent): void {\r\n    event.preventDefault();\r\n}\r\n","import { COMBINED_TEXT_BLOCK, COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nconst FIRST_CHILD_SELECTOR = '_selected';\r\n\r\nexport function setEditorKeyboardEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n    editorElement.addEventListener('keydown', keydownListener, { signal });\r\n}\r\n\r\nexport function keydownListener(event: KeyboardEvent): void {\r\n    const target = event.target as HTMLElement;\r\n    const block = target.closest(`.${COMBINED_TEXT_BLOCK}`);\r\n\r\n    if (!block) {\r\n        return;\r\n    }\r\n\r\n    const selection = window.getSelection();\r\n    const ranges = selection?.rangeCount;\r\n\r\n    if (!ranges || !checkIsBlockFullySelected(block)) {\r\n        return;\r\n    }\r\n\r\n    const firstChild = block?.firstElementChild;\r\n\r\n    firstChild?.classList.add(FIRST_CHILD_SELECTOR);\r\n    setTimeout(() => firstChild?.classList.remove(FIRST_CHILD_SELECTOR));\r\n}\r\n\r\nfunction checkIsBlockFullySelected(blockElement: Element): boolean {\r\n    const selection = window.getSelection();\r\n\r\n    if (!selection || selection.rangeCount === 0) {\r\n        return false;\r\n    }\r\n\r\n    const range = selection.getRangeAt(0);\r\n    const startBlock = range.startContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n    const endBlock = range.endContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n    const isStartAtBlockStart = startBlock === blockElement.firstChild && range.startOffset === 0;\r\n    const isEndAtBlockEnd = endBlock === blockElement.lastChild;\r\n\r\n    return isStartAtBlockStart && isEndAtBlockEnd;\r\n}\r\n","import { CuiAngularElement } from '../interfaces';\r\n\r\nimport { EDITOR_TOOL_MODAL_SELECTOR, EditorToolModalComponent } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function setEditorInfoModalEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n    editorElement?.addEventListener('pointerup', pointerUpListener, { signal });\r\n}\r\n\r\nexport function pointerUpListener(event: MouseEvent): void {\r\n    const selection = window.getSelection();\r\n\r\n    if (selection && selection.toString().length > 0) {\r\n        return;\r\n    }\r\n\r\n    const target = event.target as HTMLElement;\r\n    const marker = target.closest('.marker') as HTMLElement;\r\n\r\n    if (!marker) {\r\n        return;\r\n    }\r\n\r\n    onMarkerClick(marker);\r\n}\r\n\r\nexport function onMarkerClick(marker: HTMLElement): void {\r\n    const id = marker.dataset['id'];\r\n    const type = marker.dataset['type'] as MarkerType;\r\n\r\n    if (!(id && type)) {\r\n        return;\r\n    }\r\n\r\n    const toolModal = document.createElement(EDITOR_TOOL_MODAL_SELECTOR) as CuiAngularElement<EditorToolModalComponent>;\r\n\r\n    toolModal.tool = { id, type, title: 'Молоток КУБИПРО Ультра MAX 3000' };\r\n    toolModal.marker = marker;\r\n\r\n    toolModal.addEventListener('closed', function onCloseModal() {\r\n        toolModal.remove();\r\n    });\r\n\r\n    document.body.append(toolModal);\r\n}\r\n","import { tooltipMap } from '../utils';\r\n\r\nconst TOOLTIP_POSITION_X = 5;\r\nconst TOOLTIP_POSITION_Y = 40;\r\nconst TOOLTIP_SAFE_RIGHT_SHIFT = 10;\r\nconst TOOLTIP_DEBOUNCE_TIME = 500;\r\nconst CLOSE_TOOLTIP_DEBOUNCE_TIME = 50;\r\n\r\nlet tooltip: HTMLElement;\r\nlet timeoutId: ReturnType<typeof setTimeout>;\r\nlet closeTimeoutId: ReturnType<typeof setTimeout>;\r\n\r\nconst closeTooltipHandler = (): void => closeTooltip();\r\n\r\nfunction closeTooltip(callback?: () => void): void {\r\n    clearTimeout(closeTimeoutId);\r\n\r\n    closeTimeoutId = setTimeout(() => {\r\n        clearTimeout(timeoutId);\r\n        tooltip?.remove();\r\n        callback?.();\r\n    }, CLOSE_TOOLTIP_DEBOUNCE_TIME);\r\n}\r\n\r\nconst debouncedEvent = (event: MouseEvent, marker: HTMLElement, target: HTMLElement): void => {\r\n    clearTimeout(timeoutId);\r\n\r\n    timeoutId = setTimeout(() => {\r\n        if (tooltip && tooltip?.contains(target)) {\r\n            return;\r\n        }\r\n\r\n        closeTooltip(() => openTooltip(event, marker));\r\n    }, TOOLTIP_DEBOUNCE_TIME);\r\n};\r\n\r\nfunction openTooltip(event: MouseEvent, marker: HTMLElement): void {\r\n    const type = marker.tagName as keyof typeof tooltipMap;\r\n\r\n    tooltip = tooltipMap[type](marker);\r\n    tooltip.style.visibility = 'hidden';\r\n\r\n    document.body.append(tooltip);\r\n\r\n    setTimeout(() => {\r\n        const positionX = event.clientX;\r\n        const positionY = event.clientY;\r\n        const rightX = document.documentElement.clientWidth - positionX;\r\n        const rightShiftDiffX = tooltip.offsetWidth - rightX;\r\n        const rightShiftX = rightShiftDiffX > 0 ? rightShiftDiffX + TOOLTIP_SAFE_RIGHT_SHIFT : 0;\r\n\r\n        tooltip.style.top = positionY - TOOLTIP_POSITION_Y + 'px';\r\n        tooltip.style.left = positionX + TOOLTIP_POSITION_X - rightShiftX + 'px';\r\n        tooltip.style.visibility = 'visible';\r\n    });\r\n}\r\n\r\nexport function setEditorTooltipEvents(signal: AbortSignal): void {\r\n    document.body.addEventListener('mousemove', mouseMoveListener, { signal });\r\n    document.body.addEventListener('mouseleave', closeTooltipHandler, { signal });\r\n}\r\n\r\nexport function mouseMoveListener(event: MouseEvent): void {\r\n    const target = event.target as HTMLElement;\r\n    const marker = target.closest('.marker') as HTMLElement;\r\n\r\n    if (tooltip?.contains(target)) {\r\n        clearTimeout(timeoutId);\r\n        clearTimeout(closeTimeoutId);\r\n\r\n        return;\r\n    }\r\n\r\n    if (!marker) {\r\n        closeTooltip();\r\n\r\n        return;\r\n    }\r\n\r\n    clearTimeout(closeTimeoutId);\r\n    debouncedEvent(event, marker, target);\r\n}\r\n","import { setEditorDragEvents } from './editor-drag.event';\r\nimport { setEditorKeyboardEvents } from './editor-keyboard.event';\r\nimport { setEditorInfoModalEvents } from './editor-modal.event';\r\nimport { setEditorTooltipEvents } from './editor-tooltip.event';\r\n\r\nexport function setEditorEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n    setEditorTooltipEvents(signal);\r\n    setEditorInfoModalEvents(editorElement, signal);\r\n    setEditorDragEvents(editorElement, signal);\r\n    setEditorKeyboardEvents(editorElement, signal);\r\n}\r\n","import type { ElementRef, OnDestroy } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    inject,\n    input,\n    output,\n    viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService } from '@cuby-ui/cdk';\nimport type { API, BlockMutationEvent, OutputData } from '@editorjs/editorjs';\nimport EditorJS from '@editorjs/editorjs';\nimport type { Observable, Subscription } from 'rxjs';\nimport {\n    concatMap,\n    delay,\n    finalize,\n    fromEvent,\n    map,\n    Subject,\n    takeWhile,\n    tap,\n    throttleTime,\n    timer,\n    toArray\n} from 'rxjs';\nimport { CUI_JTEXT_API_SERVICE, CuiBlock, CuiJTextApiService } from '@cuby-ui/api';\n\nimport { getEditorConfig } from './config';\nimport { COMBINED_TEXT_BLOCK_NAME, COMBINED_TEXT_BLOCK_PART, DEFAULT_CONFIG } from './constants/editor.constants';\nimport { setEditorEvents } from './events/set-editor-events';\nimport type {\n    CuiBlockData,\n    CuiBlocksRequestData,\n    CuiCombinedBlockAddingEvent,\n    CuiCombinedBlockToolData,\n    CuiCombinedPartBlock,\n    CuiEditorConfig,\n    CuiEventActionData,\n    CuiFullBlockData\n} from './interfaces';\nimport { CuiEditorService, EventActions } from './services';\nimport { recalculateIndexes } from './utils/recalculate-indexes';\n\n@Component({\n    selector: 'cui-editor',\n    standalone: true,\n    templateUrl: './editor.component.html',\n    styleUrls: ['./editor.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        CuiEditorService,\n        {\n           provide: CUI_JTEXT_API_SERVICE,\n           useFactory: () =>\n                inject(CUI_JTEXT_API_SERVICE, { optional: true, skipSelf: true }) ?? new CuiJTextApiService()\n        }\n    ]\n})\nexport class CuiEditorComponent implements OnDestroy {\n    private readonly destroy = inject(DestroyRef);\n    private readonly cuiIdService = inject(CuiIdService);\n    private readonly editorService = inject(CuiEditorService);\n    private readonly jTextService = inject(CUI_JTEXT_API_SERVICE);\n\n    private readonly POOLING_DELAY = 100;\n    private readonly ELEMENT_SPACE_TO_BOTTOM = 150;\n    private readonly SCROLL_THROTTLE_TIME = 200;\n\n    private readonly emptyQueue = new Subject();\n\n    private poolingSubscription!: Subscription;\n    private scrollSubscription!: Subscription;\n    private isSkipCombinedBlockOnChange: boolean[] = [];\n    private isFirst = true;\n    private isChanging = false;\n    private isSkip = false;\n    private isRequested = false;\n    private isDestroyed = false;\n    // Нужен для соотношения локального ID и основного ID после создания элемента\n    private blockIdsMap = new Map<string, string>();\n    private combinedBlocks = new Map();\n    private index = 0;\n    private page = 0;\n    private addedBlocks: CuiBlockData[] = [];\n    private updatedBlocks: CuiBlock[] = [];\n    private removedBlocksIds: string[] = [];\n    private changesQueue: BlockMutationEvent[][] = [];\n    private abortController = new AbortController();\n\n    protected readonly editorId = this.cuiIdService.generate();\n\n    private readonly isReadonly = computed(() => this.config()?.readOnly);\n\n    protected readonly editorRef = viewChild.required<ElementRef<HTMLElement>>('editor');\n\n    public readonly editorApiId = input.required<string>();\n    public readonly config = input<CuiEditorConfig>(DEFAULT_CONFIG);\n    public readonly requestSize = input<number>(40);\n\n    public readonly editorEmpty = output<boolean>();\n\n    public editor!: EditorJS;\n    public editorElement!: HTMLElement;\n\n    constructor() {\n        this.initEditorEffect();\n    }\n\n    public ngOnDestroy(): void {\n        this.isDestroyed = true;\n\n        this.destroyEditor();\n    }\n\n    private onScrollEvent(element: HTMLElement): void {\n        const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;\n        const currentHeight = element.scrollTop + element.clientHeight;\n\n        if (currentHeight < overallHeight || this.isRequested) {\n            return;\n        }\n\n        this.isRequested = true;\n\n        const size = this.requestSize();\n        let blocksCount = 0;\n\n        this.getBlocks(this.page, size)\n            .pipe(\n                tap((blocks) => (blocksCount = blocks.length)),\n                finalize(() => {\n                    this.isRequested = false;\n\n                    if (blocksCount >= size) {\n                        return;\n                    }\n\n                    this.scrollSubscription.unsubscribe();\n                })\n            )\n            .subscribe();\n\n        this.page++;\n    }\n\n    private onEditorChange(_: API, event: BlockMutationEvent | BlockMutationEvent[]): void {\n        if (this.isReadonly() || this.isDestroyed) {\n            return;\n        }\n\n        if (!Array.isArray(event)) {\n            event = [event];\n        }\n\n        recalculateIndexes(this.editor.blocks);\n\n        if (this.isChanging) {\n            this.changesQueue.unshift(event);\n        }\n\n        this.startChanges(event);\n        this.editorEmpty.emit(this.checkIsEmpty());\n    }\n\n    private onAddedCombinedBlock(data: CuiCombinedBlockAddingEvent): void {\n        if (this.isSkipCombinedBlockOnChange.length) {\n            this.isSkipCombinedBlockOnChange.pop();\n\n            return;\n        }\n\n        const blocksWithoutId = data.blocks.map((block) => ({\n            block: { ...block, id: undefined },\n            id: block.id!\n        }));\n\n        this.addedBlocks.push(...blocksWithoutId);\n    }\n\n    private onUpdatedCombinedBlock(updatedBlocks: CuiBlock[]): void {\n        if (!updatedBlocks.length) {\n            return;\n        }\n\n        this.updatedBlocks.push(...updatedBlocks);\n    }\n\n    private onRemovedCombinedBlock(blockIds: string[]): void {\n        if (!blockIds.length) {\n            return;\n        }\n\n        this.removedBlocksIds.push(...blockIds);\n    }\n\n    private initEditorEffect(): void {\n        effect(\n            () => {\n                if (this.editorApiId() || this.config()) {\n                    this.initEditorChanges();\n                }\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private initEditorChanges(): void {\n        this.jTextService.addOptions(this.config()?.requestOptions);\n\n        this.editor = this.initEditor(this.editorId);\n        this.editor.isReady.then(() => {\n            if (this.isDestroyed) {\n                return;\n            }\n\n            this.editorElement = this.editorRef().nativeElement;\n\n            this.initEditorEvents(this.editorElement);\n            this.initScrollObserver();\n            this.startPooling(this.requestSize());\n            this.setListenersOnCustomBlockChanges();\n        });\n    }\n\n    private initEditor(id: string): EditorJS {\n        const config = this.config();\n\n        this.destroyEditor();\n        this.editor = new EditorJS({\n            ...getEditorConfig(id, config),\n            onChange: this.onEditorChange.bind(this)\n        });\n\n        return this.editor;\n    }\n\n    private initScrollObserver(): void {\n        const element = this.config()?.element ?? this.editorElement;\n        const scrollObserver = fromEvent(element, 'scroll');\n\n        this.scrollSubscription = scrollObserver\n            .pipe(\n                takeUntilDestroyed(this.destroy),\n                throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {\n                    leading: true,\n                    trailing: true\n                }),\n                map(() => this.onScrollEvent(element))\n            )\n            .subscribe();\n    }\n\n    private initEditorEvents(element: HTMLElement): void {\n        const readOnly = this.isReadonly();\n\n        if (readOnly) {\n            return;\n        }\n\n        setEditorEvents(element, this.abortController.signal);\n    }\n\n    private startPooling(size: number): void {\n        const scrollElement = this.config()?.element ?? this.editorElement;\n        const withoutPreload = this.config()?.withoutPreload;\n\n        this.poolingSubscription = timer(0, this.POOLING_DELAY)\n            .pipe(\n                concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))),\n                tap(() => this.page++),\n                takeWhile(\n                    (blocks) =>\n                        !withoutPreload &&\n                        scrollElement.scrollHeight <= scrollElement.clientHeight &&\n                        blocks.length >= size\n                ),\n                finalize(() => {\n                    if (this.isDestroyed) {\n                        return;\n                    }\n\n                    this.setStartBlock();\n                })\n            )\n            .subscribe();\n    }\n\n    private destroyEditor(): void {\n        this.abortController.abort();\n        this.resetData();\n        // TODO: в рандом кейсах падает ошибка если убрать проверку на вызов destroy\n        this.editor?.destroy?.();\n    }\n\n    private setListenersOnCustomBlockChanges(): void {\n        this.editorService.setListenersOnCustomBlockChanges(this.editor, {\n            removedCallback: this.onRemovedCombinedBlock.bind(this),\n            updatedCallback: this.onUpdatedCombinedBlock.bind(this),\n            addedCallback: this.onAddedCombinedBlock.bind(this)\n        });\n    }\n\n    private async startChanges(event: BlockMutationEvent[]): Promise<void> {\n        if (this.isSkip || this.isChanging) {\n            this.isSkip = false;\n\n            return;\n        }\n\n        this.isChanging = true;\n\n        try {\n            const editorOutput = await this.editor.save();\n            const events = event.filter((data) => data.detail.target.name !== COMBINED_TEXT_BLOCK_NAME);\n            const blocks = this.editorService.sortEventsByTypes(events);\n            const { addBlocks$, addedBlocks } = this.collectAddedBlocksRequest(blocks, editorOutput);\n\n            this.addedBlocks = [];\n\n            addBlocks$\n                .pipe(\n                    tap((blockIds) => this.setBlockIdsToMap(blockIds, addedBlocks)),\n                    concatMap(() => this.collectUpdatedBlocksRequest(blocks, editorOutput)),\n                    concatMap(() => this.collectRemovedBlocksRequest(blocks))\n                )\n                .subscribe({\n                    complete: () => this.startNextChange(),\n                    error: () => this.startNextChange()\n                });\n        } catch (e) {\n            return;\n        }\n    }\n\n    private startNextChange(): void {\n        this.isChanging = false;\n\n        const nextEvents = this.changesQueue.pop();\n\n        if (nextEvents) {\n            this.startChanges(nextEvents);\n        }\n\n        this.emptyQueue.next(null);\n    }\n\n    private collectAddedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): CuiBlocksRequestData {\n        const defaultBlocksWithIndex = blocks[EventActions.add].map((addedBlock) =>\n            this.editorService.getFullBlockData(addedBlock, editorOutput)\n        );\n        const combinedBlocksWithIndex = this.addedBlocks.map((block) => {\n            const element = this.editorElement.querySelector(`[data-id=\"${block.id}\"]`) as HTMLElement;\n            const index = Number(element?.dataset['index']);\n\n            return { ...block, index };\n        });\n\n        const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort(\n            (first, second) => first.index - second.index\n        );\n        const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorApiId(), addedBlocks);\n\n        return {\n            addedBlocks,\n            addBlocks$\n        };\n    }\n\n    private collectUpdatedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): Observable<CuiBlock[]> {\n        blocks[EventActions.update].forEach((updateBlock) => {\n            const { id, block } = this.editorService.getFullBlockData(updateBlock, editorOutput);\n            block.id = id;\n\n            this.updatedBlocks.push(block);\n        });\n\n        const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);\n\n        this.updatedBlocks = [];\n\n        return updateBlocks$;\n    }\n\n    private collectRemovedBlocksRequest(blocks: CuiEventActionData): Observable<void> {\n        blocks[EventActions.remove].forEach((block) => {\n            const id = block.detail.target.id;\n\n            this.removedBlocksIds.push(id);\n        });\n\n        const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(\n            this.editorApiId(),\n            this.removedBlocksIds,\n            this.blockIdsMap\n        );\n        this.removedBlocksIds = [];\n\n        return removeBlocks$;\n    }\n\n    private getBlocks(page = 0, size = 40): Observable<CuiBlock[]> {\n        let combinedBlock: CuiNullable<CuiBlock>;\n\n        return this.jTextService.getBlocks(this.editorApiId(), page, size).pipe(\n            takeUntilDestroyed(this.destroy),\n            finalize(() => {\n                if (combinedBlock) {\n                    this.addCombinedBlock(combinedBlock);\n                    combinedBlock = null;\n                }\n\n                recalculateIndexes(this.editor.blocks);\n            }),\n            map((block) => {\n                if (block.type === COMBINED_TEXT_BLOCK_PART) {\n                    const blockData = block.data as { parentId: string };\n\n                    if (combinedBlock && blockData.parentId! !== combinedBlock?.id) {\n                        this.addCombinedBlock(combinedBlock);\n                        combinedBlock = null;\n                    }\n\n                    combinedBlock = this.setCombinedBlock(block);\n\n                    return;\n                }\n\n                if (combinedBlock) {\n                    this.addCombinedBlock(combinedBlock);\n                    combinedBlock = null;\n                }\n\n                this.addBlock(block);\n            }),\n            toArray()\n        ) as unknown as Observable<CuiBlock[]>;\n    }\n\n    private addBlock(block: CuiBlock): void {\n        if (typeof block.type !== 'string') {\n            return;\n        }\n\n        this.blockIdsMap.set(block.id!, block.id!);\n        this.insert(block);\n    }\n\n    private addCombinedBlock(combinedBlock: CuiBlock): void {\n        this.isSkipCombinedBlockOnChange.push(true);\n        const block = this.editor.blocks.getById(combinedBlock.id || '');\n\n        if (block) {\n            this.editor.blocks.update(block.id, combinedBlock.data as CuiCombinedPartBlock);\n\n            return;\n        }\n\n        this.insert(combinedBlock);\n    }\n\n    private insert(block: CuiBlock): void {\n        this.checkFirst(block);\n        this.index++;\n    }\n\n    private checkFirst(block: CuiBlock): void {\n        if (!this.isFirst) {\n            this.isSkip = true;\n            this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);\n\n            return;\n        }\n\n        // TODO: есть варик что что то пойдет не так\n        this.editor.blocks.render({ blocks: [block] }).then(() => (this.isSkip = false));\n        this.isFirst = false;\n    }\n\n    private setCombinedBlock(block: CuiBlock): CuiBlock {\n        const combinedBlockData = block.data as { parentId: string };\n        const parent = this.combinedBlocks.get(combinedBlockData.parentId);\n\n        this.blockIdsMap.set(block.id!, block.id!);\n\n        if (parent) {\n            const parentData = parent.data as { textBlocks: CuiBlock[] };\n            parentData.textBlocks.push(block);\n\n            return parent;\n        }\n\n        const parentObject: CuiBlock = {\n            id: combinedBlockData.parentId,\n            type: COMBINED_TEXT_BLOCK_NAME,\n            data: {\n                id: combinedBlockData.parentId,\n                textBlocks: [block]\n            }\n        };\n\n        this.combinedBlocks.set(combinedBlockData.parentId, parentObject);\n\n        return parentObject;\n    }\n\n    private setBlockIdsToMap(blockIds: string[], addedBlocks: CuiFullBlockData[]): void {\n        if (!blockIds.length) {\n            return;\n        }\n\n        this.updateElementLocalIdWithMainId(blockIds, addedBlocks);\n        addedBlocks.forEach((blockData, index) => {\n            this.blockIdsMap.set(blockData.id, blockIds[index]);\n        });\n    }\n\n    private updateElementLocalIdWithMainId(blockIds: string[], blocks: CuiFullBlockData[]): void {\n        blocks.forEach((block, index) => {\n            const element = this.editorElement.querySelector<HTMLElement>(`[data-id=\"${block.id}\"]`);\n\n            if (!element) {\n                return;\n            }\n\n            element.dataset['id'] = blockIds[index];\n        });\n    }\n\n    private setStartBlock(): void {\n        if (this.blockIdsMap.size) {\n            this.setFocus();\n            this.editorEmpty.emit(this.checkIsEmpty());\n\n            return;\n        }\n\n        if (this.isReadonly()) {\n            this.editor.render({ blocks: [] });\n\n            return;\n        }\n\n        this.editorService.setStartBlock(\n            this.editorApiId(),\n            async (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => {\n                this.blockIdsMap.set(id, id);\n                this.isSkipCombinedBlockOnChange.push(true);\n\n                await this.editor.render({ blocks: [block] });\n\n                this.setFocus();\n                recalculateIndexes(this.editor.blocks);\n            }\n        );\n    }\n\n    private setFocus(): void {\n        if (!this.config()?.autofocus) {\n            return;\n        }\n\n        this.editor.caret.focus();\n    }\n\n    private checkIsEmpty(): boolean {\n        const blocksCount = this.editor.blocks?.getBlocksCount() ?? 0;\n\n        if (!blocksCount) {\n            return true;\n        }\n\n        const REDACTOR_SELECTOR = '.codex-editor__redactor';\n        const redactorTextContent = this.editorElement\n            .querySelector(REDACTOR_SELECTOR)\n            ?.textContent?.trim();\n\n        return !redactorTextContent;\n    }\n\n    private resetData(): void {\n        this.scrollSubscription?.unsubscribe();\n        this.poolingSubscription?.unsubscribe();\n        this.isSkipCombinedBlockOnChange = [];\n        this.isFirst = true;\n        this.isChanging = false;\n        this.isSkip = false;\n        this.isRequested = false;\n        this.blockIdsMap = new Map<string, string>();\n        this.combinedBlocks = new Map();\n        this.index = 0;\n        this.page = 0;\n        this.addedBlocks = [];\n        this.updatedBlocks = [];\n        this.removedBlocksIds = [];\n        this.changesQueue = [];\n        this.abortController = new AbortController();\n    }\n}\n","<div\r\n    #editor\r\n    [id]=\"editorId\"\r\n    data-editor\r\n    [class._readonly]=\"config().readOnly\"\r\n></div>\r\n","import { Directive, effect, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[editorResizeObserver]',\r\n    standalone: true\r\n})\r\nexport class EditorResizeObserverDirective {\r\n    private readonly templateRef = inject(TemplateRef);\r\n    private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n    private observer: ResizeObserver | null = null;\r\n\r\n    public readonly target = input.required<HTMLElement>();\r\n    public readonly shortHeight = input.required<number>();\r\n\r\n    constructor() {\r\n        this.initTargetEffect();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.destroyObserver();\r\n    }\r\n\r\n    private initTargetEffect(): void {\r\n        effect(() => {\r\n            const target = this.target();\r\n\r\n            if (!target) {\r\n                return;\r\n            }\r\n\r\n            this.initObserver();\r\n        });\r\n    }\r\n\r\n    private initObserver(): void {\r\n        this.observer = new ResizeObserver((entries) => {\r\n            if (entries[0].target.scrollHeight <= this.shortHeight()) {\r\n                this.viewContainerRef.clear();\r\n\r\n                return;\r\n            }\r\n\r\n            if (this.viewContainerRef.length) {\r\n                return;\r\n            }\r\n\r\n            this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n        });\r\n\r\n        this.observer.observe(this.target());\r\n    }\r\n\r\n    private destroyObserver(): void {\r\n        this.observer?.disconnect();\r\n        this.observer = null;\r\n    }\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    effect,\r\n    input,\r\n    signal,\r\n    TemplateRef,\r\n    viewChild\r\n} from '@angular/core';\r\nimport { CuiElementDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorReadonlyConfig } from './editor-readonly.options';\r\nimport { EditorResizeObserverDirective } from './editor-resize-observer.directive';\r\n\r\n@Component({\r\n    selector: 'cui-editor-readonly',\r\n    standalone: true,\r\n    imports: [CuiEditorComponent, NgTemplateOutlet, EditorResizeObserverDirective, CuiElementDirective],\r\n    templateUrl: './editor-readonly.component.html',\r\n    styleUrls: ['./editor-readonly.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorReadonlyComponent {\r\n    protected readonly isShowMore = signal(false);\r\n    protected readonly editorConfig = computed(() => ({ readOnly: true, withoutPreload: true, ...this.config() }));\r\n\r\n    protected readonly DEFAULT_SHORT_HEIGHT = 68;\r\n\r\n    protected readonly editor = viewChild.required<CuiEditorComponent>('editor');\r\n\r\n    public readonly editorId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorReadonlyConfig>();\r\n    public readonly buttonTemplate = input.required<TemplateRef<unknown>>();\r\n    public readonly shortHeight = input<number>(this.DEFAULT_SHORT_HEIGHT);\r\n\r\n    constructor() {\r\n        this.initEditorIdEffect();\r\n    }\r\n\r\n    protected onShow(editor: CuiEditorComponent): void {\r\n        editor.editorElement.scrollTo(0, 0);\r\n        this.isShowMore.update((prev) => !prev);\r\n    }\r\n\r\n    private initEditorIdEffect(): void {\r\n        effect(\r\n            () => {\r\n                this.editorId();\r\n                this.isShowMore.set(false);\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n}\r\n","<cui-editor\r\n    cuiElement\r\n    #editorElement=\"elementRef\"\r\n    #editorComponent\r\n    class=\"editor\"\r\n    [class.editor_opened]=\"isShowMore()\"\r\n    [editorApiId]=\"editorId()\"\r\n    [config]=\"editorConfig()\"\r\n/>\r\n\r\n<ng-template\r\n    [editorResizeObserver]\r\n    [target]=\"editorElement.nativeElement\"\r\n    [shortHeight]=\"shortHeight()\"\r\n>\r\n    <button\r\n        class=\"c-button\"\r\n        (click)=\"onShow(editorComponent)\"\r\n    >\r\n        <ng-container\r\n            [ngTemplateOutlet]=\"buttonTemplate()\"\r\n            [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"\r\n        ></ng-container>\r\n    </button>\r\n</ng-template>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, input, output, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiSvgModule } from '../../../components';\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-editor-modal',\r\n    imports: [CuiEditorComponent, CuiButtonModule, NgTemplateOutlet, CuiSvgModule],\r\n    standalone: true,\r\n    templateUrl: './editor-modal.component.html',\r\n    styleUrl: './editor-modal.component.scss'\r\n})\r\nexport class CuiEditorModalComponent {\r\n    protected readonly isOpen = signal(false);\r\n    protected readonly isButtonDisabled = signal<boolean>(false);\r\n\r\n    public readonly title = input.required<string>();\r\n    public readonly buttonTemplate = input<TemplateRef<HTMLElement>>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n    public readonly editorId = input<CuiNullable<string>>();\r\n\r\n    public readonly editorCreated = output();\r\n    public readonly modalClosed = output();\r\n\r\n    protected onModalOpen(): void {\r\n        this.isButtonDisabled.set(true);\r\n\r\n        if (this.editorId()) {\r\n            this.open();\r\n\r\n            return;\r\n        }\r\n\r\n        this.editorCreated.emit();\r\n    }\r\n    public open(): void {\r\n        this.isOpen.set(true);\r\n    }\r\n\r\n    public close(): void {\r\n        this.isButtonDisabled.set(false);\r\n        this.isOpen.set(false);\r\n        this.modalClosed.emit();\r\n    }\r\n}\r\n","@if (buttonTemplate(); as template) {\r\n    <button\r\n        type=\"button\"\r\n        class=\"button\"\r\n        (click)=\"onModalOpen()\"\r\n    >\r\n        <ng-container [ngTemplateOutlet]=\"template\" />\r\n    </button>\r\n} @else {\r\n    <button\r\n        class=\"description\"\r\n        cuiButton\r\n        type=\"button\"\r\n        appearance=\"outlined-gray\"\r\n        icon=\"cuiIconRichText\"\r\n        size=\"sm\"\r\n        (click)=\"onModalOpen()\"\r\n        [disabled]=\"isButtonDisabled()\"\r\n    >\r\n        @if (editorId()) {\r\n            <span class=\"description__text _created\">{{ 'Description' }}</span>\r\n            <cui-svg\r\n                class=\"description__icon\"\r\n                icon=\"cuiIconEdit\"\r\n                color=\"var(--cui-base-500)\"\r\n            />\r\n        } @else {\r\n            <cui-svg\r\n                class=\"description__icon\"\r\n                icon=\"cuiIconPlus\"\r\n                color=\"var(--cui-light-blue-600)\"\r\n            />\r\n            <span class=\"description__text\">{{ 'Add description' }}</span>\r\n        }\r\n    </button>\r\n}\r\n@if (isOpen()) {\r\n    <div class=\"wrapper\">\r\n        @if (editorId(); as id) {\r\n            <header class=\"header\">\r\n                <div class=\"info\">\r\n                    <button\r\n                        cuiButton\r\n                        type=\"button\"\r\n                        icon=\"cuiIconChevronLeft\"\r\n                        size=\"xxs\"\r\n                        appearance=\"secondary\"\r\n                        shape=\"rounded\"\r\n                        (click)=\"close()\"\r\n                    ></button>\r\n                    <h1 class=\"title\">{{ title() }}</h1>\r\n                </div>\r\n                <div class=\"actions\">\r\n                    <!-- <cui-loader /> -->\r\n                    <button\r\n                        type=\"button\"\r\n                        cuiButton\r\n                        size=\"xs\"\r\n                        (click)=\"close()\"\r\n                    >\r\n                        {{ 'Done' }}\r\n                    </button>\r\n                </div>\r\n            </header>\r\n\r\n            <section class=\"section\">\r\n                <cui-editor\r\n                    #editorComponent\r\n                    class=\"editor\"\r\n                    [editorApiId]=\"id\"\r\n                    [config]=\"config()\"\r\n                />\r\n            </section>\r\n        }\r\n    </div>\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    effect,\r\n    ElementRef,\r\n    input,\r\n    output,\r\n    signal,\r\n    viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiButtonModule, CuiContentWrapperComponent, CuiHintModule } from '../../../components';\r\nimport { CuiTooltip } from '../../../directives';\r\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\nimport { CuiEditorModalComponent } from '../editor-modal/editor-modal.component';\r\n\r\n@Component({\r\n    selector: 'cui-editor-block',\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiEditorModalComponent,\r\n        CuiEditorComponent,\r\n        TranslocoDirective,\r\n        CuiContentWrapperComponent,\r\n        CuiTooltip,\r\n        CuiHintModule\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './editor-block.component.html',\r\n    styleUrls: ['./editor-block.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorBlockComponent {\r\n    private skipFirstValidation = true;\r\n\r\n    protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n    protected readonly isDescriptionModalOpen = signal(false);\r\n    protected readonly isDescriptionEmpty = signal(false);\r\n\r\n    public readonly editorContainer = viewChild<string, ElementRef<HTMLElement>>('editorContainer', {\r\n        read: ElementRef\r\n    });\r\n\r\n    public readonly title = input.required<string>();\r\n    public readonly editorId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n    public readonly required = input(false);\r\n\r\n    public readonly editorEmpty = output<boolean>();\r\n\r\n    constructor() {\r\n        this.initEditorConfig();\r\n    }\r\n\r\n    protected onToggleDescriptionModal(): void {\r\n        this.isDescriptionModalOpen.update((prev) => !prev);\r\n    }\r\n\r\n    protected onDescriptionChange(value: boolean): void {\r\n        this.editorEmpty.emit(value);\r\n\r\n        if (this.skipFirstValidation) {\r\n            this.skipFirstValidation = false;\r\n\r\n            return;\r\n        }\r\n\r\n        this.isDescriptionEmpty.set(value);\r\n    }\r\n\r\n    private initEditorConfig(): void {\r\n        const effectRef = effect(\r\n            () => {\r\n                const element = this.editorContainer()?.nativeElement;\r\n\r\n                if (!element) {\r\n                    return;\r\n                }\r\n\r\n                this.editorConfig.set({ element, ...this.config() });\r\n                effectRef.destroy();\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <div class=\"wrapper\">\r\n        <span class=\"title\">\r\n            {{ t('DESCRIPTION') }}\r\n            @if (required()) {\r\n                <span class=\"title__required\">*</span>\r\n            }\r\n        </span>\r\n        <ng-template #button>\r\n            <button\r\n                [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\r\n                cuiButton\r\n                size=\"xxs\"\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                icon=\"cuiIconMaximizeSm\"\r\n                (click)=\"onToggleDescriptionModal()\"\r\n            ></button>\r\n        </ng-template>\r\n        <cui-editor-modal\r\n            [title]=\"title()\"\r\n            [editorId]=\"editorId()\"\r\n            [buttonTemplate]=\"button\"\r\n            [config]=\"config()\"\r\n            (modalClosed)=\"onToggleDescriptionModal()\"\r\n        />\r\n    </div>\r\n    <div\r\n        #editorContainer\r\n        cuiContentWrapper\r\n        class=\"editor\"\r\n        [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\r\n    >\r\n        @if (!isDescriptionModalOpen() && editorConfig()) {\r\n            <cui-editor\r\n                #editorComponent\r\n                [editorApiId]=\"editorId()\"\r\n                [config]=\"editorConfig()!\"\r\n                (editorEmpty)=\"onDescriptionChange($event)\"\r\n            />\r\n        }\r\n    </div>\r\n    @if (required() && isDescriptionEmpty()) {\r\n        <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\r\n    }\r\n</ng-container>\r\n","import {\r\n    EDITOR_ATTACHES_TOOL_SELECTOR,\r\n    EDITOR_IMAGE_TOOL_SELECTOR,\r\n    EDITOR_TOOL_MODAL_SELECTOR,\r\n    EDITOR_TOOLTIP_SELECTOR,\r\n    EDITOR_VIDEO_TOOL_SELECTOR,\r\n    EditorAttachesToolComponent,\r\n    EditorImageToolComponent,\r\n    EditorToolModalComponent,\r\n    EditorTooltipComponent,\r\n    EditorVideoToolComponent,\r\n    MARKER_MODAL_SELECTOR,\r\n    MARKER_SELECT_SELECTOR,\r\n    MarkerModalComponent,\r\n    MarkerSelectComponent\r\n} from '../components';\r\nimport { CuiCustomElement } from '../interfaces';\r\n\r\nexport const EDITOR_CUSTOM_ELEMENTS: readonly CuiCustomElement[] = [\r\n    {\r\n        selector: EDITOR_TOOLTIP_SELECTOR,\r\n        component: EditorTooltipComponent\r\n    },\r\n    {\r\n        selector: MARKER_SELECT_SELECTOR,\r\n        component: MarkerSelectComponent\r\n    },\r\n    {\r\n        selector: EDITOR_TOOL_MODAL_SELECTOR,\r\n        component: EditorToolModalComponent\r\n    },\r\n    {\r\n        selector: MARKER_MODAL_SELECTOR,\r\n        component: MarkerModalComponent\r\n    },\r\n    {\r\n        selector: EDITOR_VIDEO_TOOL_SELECTOR,\r\n        component: EditorVideoToolComponent\r\n    },\r\n    {\r\n        selector: EDITOR_IMAGE_TOOL_SELECTOR,\r\n        component: EditorImageToolComponent\r\n    },\r\n    {\r\n        selector: EDITOR_ATTACHES_TOOL_SELECTOR,\r\n        component: EditorAttachesToolComponent\r\n    }\r\n];\r\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\nimport { EDITOR_CUSTOM_ELEMENTS } from '../config/custom-elements';\r\n\r\nexport function cuiProvideEditor(): Provider {\r\n    return [\r\n        {\r\n            provide: APP_INITIALIZER,\r\n            useFactory: (injector: Injector) => () => {\r\n                EDITOR_CUSTOM_ELEMENTS.forEach(({ component, selector }) => {\r\n                    const element = createCustomElement(component, { injector });\r\n\r\n                    window.customElements.define(selector, element);\r\n                });\r\n            },\r\n            deps: [Injector],\r\n            multi: true\r\n        }\r\n    ];\r\n}\r\n","import type { HttpEvent, HttpInterceptorFn } from '@angular/common/http';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const cuiXNdjsonInterceptor: HttpInterceptorFn = (request, next) => {\r\n    if (request.headers.get('Content-Type') !== 'application/x-ndjson') {\r\n        return next(request);\r\n    }\r\n\r\n    return new Observable<HttpEvent<unknown>>((observer) => {\r\n        const controller = new AbortController();\r\n        const signal = controller.signal;\r\n\r\n        (async (): Promise<void> => {\r\n            try {\r\n                const response = await fetch(request.urlWithParams, {\r\n                    method: request.method,\r\n                    headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\r\n                        headers[key] = request.headers.get(key)!;\r\n\r\n                        return headers;\r\n                    }, {}),\r\n                    body: request.body ? JSON.stringify(request.body) : null,\r\n                    signal\r\n                });\r\n\r\n                if (!response.ok) {\r\n                    const error = await response.json();\r\n\r\n                    observer.error(new HttpErrorResponse({ error }));\r\n\r\n                    return;\r\n                }\r\n\r\n                const reader = response.body!.getReader();\r\n                const decoder = new TextDecoder();\r\n                let buffer = '';\r\n\r\n                for (;;) {\r\n                    const { done, value } = await reader.read();\r\n\r\n                    if (done) {\r\n                        observer.complete();\r\n\r\n                        return;\r\n                    }\r\n\r\n                    buffer += decoder.decode(value);\r\n                    const lines = buffer.split('\\n');\r\n                    buffer = lines.pop() ?? '';\r\n\r\n                    lines.forEach((line) => observer.next(JSON.parse(line)));\r\n                }\r\n            } catch (error) {\r\n                observer.error(new HttpErrorResponse({ error }));\r\n            }\r\n        })();\r\n\r\n        return () => controller.abort();\r\n    });\r\n};\r\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { catchError, finalize, throwError } from 'rxjs';\r\n\r\nimport { CuiLoaderService } from '../services';\r\n\r\nexport const cuiLoaderInterceptor: HttpInterceptorFn = (request, next) => {\r\n    const loaderService = inject(CuiLoaderService);\r\n\r\n    if (request.method === 'GET') {\r\n        return next(request);\r\n    }\r\n\r\n    loaderService.setLoading();\r\n\r\n    return next(request).pipe(\r\n        catchError((error) => throwError(() => error)),\r\n        finalize(loaderService.handleCompletedRequest.bind(loaderService))\r\n    );\r\n};\r\n","import { HttpErrorResponse, type HttpEvent, type HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport type { Observable } from 'rxjs';\r\nimport { catchError, throwError } from 'rxjs';\r\n\r\nimport { CuiAlertService } from '../components';\r\nimport { CUI_ERROR_TRANSLATION_PREFIX } from '../tokens';\r\n\r\nexport const cuiErrorHandlerInterceptor: HttpInterceptorFn = (request, next) => {\r\n    const translocoService = inject(TranslocoService);\r\n    const cuiAlertService = inject(CuiAlertService);\r\n    const errorTranslationPrefix = inject(CUI_ERROR_TRANSLATION_PREFIX);\r\n\r\n    return next(request).pipe(\r\n        catchError((error) => {\r\n            console.error(error);\r\n\r\n            if (error instanceof HttpErrorResponse) {\r\n                cuiAlertService\r\n                    .open(translocoService.translate(`${errorTranslationPrefix}${error.error.code}`), {\r\n                        status: 'error'\r\n                    })\r\n                    .subscribe();\r\n            }\r\n\r\n            return throwError(() => error) as Observable<HttpEvent<unknown>>;\r\n        })\r\n    );\r\n};\r\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\n\r\nimport { CuiAuthService } from '../providers';\r\n\r\nexport const cuiAuthInterceptor: HttpInterceptorFn = (request, next) => {\r\n    const authService = inject(CuiAuthService);\r\n\r\n    if (!authService.hasValidAccessToken()) {\r\n        return next(request);\r\n    }\r\n\r\n    const modifiedRequest = request.clone({\r\n        setHeaders: {\r\n            Authorization: 'Bearer ' + authService.getAccessToken()\r\n        }\r\n    });\r\n\r\n    return next(modifiedRequest);\r\n};\r\n","import type { HttpEvent, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport type { Observer } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const sseStreamReaderInterceptor: HttpInterceptorFn = (request, next) => {\r\n    if (request.headers.get('Accept') !== 'text/event-stream') {\r\n        return next(request);\r\n    }\r\n\r\n    return new Observable<HttpEvent<unknown>>((observer) => {\r\n        const controller = new AbortController();\r\n        const signal = controller.signal;\r\n\r\n        (async (): Promise<void> => {\r\n            try {\r\n                await handleResponse(request, signal, observer);\r\n            } catch (error) {\r\n                observer.error(error);\r\n            }\r\n        })();\r\n\r\n        return () => controller.abort();\r\n    });\r\n};\r\n\r\nasync function handleResponse(\r\n    request: HttpRequest<unknown>,\r\n    signal: AbortSignal,\r\n    observer: Observer<HttpEvent<unknown>>\r\n): Promise<void> {\r\n    const response = await prepareRequest(request, signal);\r\n\r\n    if (!response.body) {\r\n        const error = await response.json();\r\n\r\n        observer.error(new HttpErrorResponse({ error }));\r\n\r\n        return;\r\n    }\r\n\r\n    await readStream(response.body!.getReader(), observer);\r\n}\r\n\r\nasync function prepareRequest(request: HttpRequest<unknown>, signal: AbortSignal): Promise<Response> {\r\n    const response = await fetch(request.urlWithParams, {\r\n        method: request.method,\r\n        headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\r\n            headers[key] = request.headers.get(key)!;\r\n\r\n            return headers;\r\n        }, {}),\r\n        body: request.body ? JSON.stringify(request.body) : null,\r\n        signal\r\n    });\r\n\r\n    if (!response.ok) {\r\n        const error = await response.json();\r\n\r\n        throw new HttpErrorResponse({ error });\r\n    }\r\n\r\n    return response;\r\n}\r\n\r\nasync function readStream(\r\n    reader: ReadableStreamDefaultReader<Uint8Array>,\r\n    observer: Observer<HttpEvent<unknown>>\r\n): Promise<void> {\r\n    const decoder = new TextDecoder();\r\n    let buffer = '';\r\n\r\n    while (true) {\r\n        const { done, value } = await reader.read();\r\n\r\n        if (done) {\r\n            if (buffer.trim()) {\r\n                processChunk(buffer, observer);\r\n            }\r\n\r\n            return observer.complete();\r\n        }\r\n\r\n        const chunk = decoder.decode(value, { stream: true });\r\n\r\n        buffer += chunk;\r\n\r\n        const lines = buffer.split('\\n');\r\n        buffer = lines.pop() || '';\r\n\r\n        for (const line of lines) {\r\n            if (line.trim()) {\r\n                processChunk(line, observer);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nfunction processChunk(line: string, observer: Observer<HttpEvent<unknown>>): void {\r\n    const trimmedLine = line.trim();\r\n\r\n    if (trimmedLine.startsWith('data:')) {\r\n        const jsonStr = trimmedLine.substring(5).trim();\r\n\r\n        if (jsonStr) {\r\n            const data = JSON.parse(jsonStr);\r\n\r\n            observer.next(data);\r\n        }\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../../../../../components';\r\nimport { CuiLoaderPosition, CuiLoaderSize } from '../../../../model';\r\n\r\n/**\r\n * @deprecated Use CuiLoaderComponent with type=\"circle\" instead\r\n */\r\n@Component({\r\n    selector: 'cui-circle-loader',\r\n    standalone: true,\r\n    imports: [CuiSvgModule],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './circle-loader.component.html',\r\n    styleUrl: './circle-loader.component.scss',\r\n    host: {\r\n        '[class]': 'size()',\r\n        '[class._center]': 'position() === \"center\"'\r\n    }\r\n})\r\nexport class CuiCircleLoaderComponent {\r\n    public readonly position = input<CuiLoaderPosition>('auto');\r\n    public readonly size = input<CuiLoaderSize>('md');\r\n    public readonly color = input<string>('var(--cui-base-900)');\r\n}\r\n","<cui-svg\r\n    icon=\"cuiIconLoading\"\r\n    [color]=\"color()\"\r\n    class=\"loading\"\r\n/>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { CuiLoaderPosition, CuiLoaderSize } from '../../../../model';\r\n\r\n/**\r\n * @deprecated Use CuiLoaderComponent with type=\"linear\" instead\r\n */\r\n@Component({\r\n    selector: 'cui-linear-loader',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './linear-loader.component.html',\r\n    styleUrl: './linear-loader.component.scss',\r\n    host: {\r\n        '[class]': 'size()',\r\n        '[class._center]': 'position() === \"center\"',\r\n        '[style.--loader-color]': 'color()'\r\n    }\r\n})\r\nexport class CuiLinearLoaderComponent {\r\n    public readonly position = input<CuiLoaderPosition>('auto');\r\n    public readonly size = input<CuiLoaderSize>('sm');\r\n    public readonly color = input<string>('var(--cui-blue-500)');\r\n}\r\n","<div class=\"loader\"></div>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { CuiLoaderPosition, CuiLoaderSize } from '../../../../model';\r\n\r\n/**\r\n * @deprecated Use CuiLoaderComponent with type=\"pulse\" instead\r\n */\r\n@Component({\r\n    selector: 'cui-pulse-loader',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './pulse-loader.component.html',\r\n    styleUrl: './pulse-loader.component.scss',\r\n    host: {\r\n        '[class]': 'size()',\r\n        '[class._center]': 'position() === \"center\"',\r\n        '[style.--pulse-color]': 'color()'\r\n    }\r\n})\r\nexport class CuiPulseLoaderComponent {\r\n    public readonly position = input<CuiLoaderPosition>('auto');\r\n    public readonly size = input<CuiLoaderSize>('md');\r\n    public readonly color = input<string>('var(--cui-lavender-400)');\r\n}\r\n","<svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"24\"\r\n    height=\"24\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    class=\"footer__loader loader-svg\"\r\n>\r\n    <circle\r\n        class=\"loader-circle\"\r\n        opacity=\"0.5\"\r\n        cx=\"12.0255\"\r\n        cy=\"11.965\"\r\n        r=\"3.70326\"\r\n    />\r\n    <circle\r\n        class=\"loader-circle\"\r\n        opacity=\"0.5\"\r\n        cx=\"12.0255\"\r\n        cy=\"11.965\"\r\n        r=\"3.70326\"\r\n    />\r\n    <circle\r\n        class=\"loader-circle\"\r\n        opacity=\"0.5\"\r\n        cx=\"12.0255\"\r\n        cy=\"11.965\"\r\n        r=\"3.70326\"\r\n    />\r\n    <circle\r\n        class=\"loader-circle\"\r\n        opacity=\"0.5\"\r\n        cx=\"12.0255\"\r\n        cy=\"11.965\"\r\n        r=\"3.70326\"\r\n    />\r\n</svg>\r\n<span class=\"text\">\r\n    <ng-content />\r\n</span>\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\n\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../../../components';\r\nimport { CuiLoaderService, CuiLoadingState } from '../../../../../services';\r\nimport { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIcon } from '@cuby-ui/icons';\r\n\r\n/**\r\n * @deprecated Use CuiLoaderComponent with type=\"stated\" instead\r\n */\r\n@Component({\r\n    selector: 'cui-stated-loader',\r\n    imports: [CuiSvgModule],\r\n    standalone: true,\r\n    templateUrl: './stated-loader.component.html',\r\n    styleUrls: ['./stated-loader.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiStatedLoaderComponent implements OnDestroy {\r\n    private readonly loaderService = inject(CuiLoaderService);\r\n    private readonly translocoService = inject(TranslocoService);\r\n\r\n    public readonly color = input<string>('var(--cui-base-500)');\r\n\r\n    protected readonly state = CuiLoadingState;\r\n    protected readonly LoaderString: Record<CuiLoadingState, string> = {\r\n        [CuiLoadingState.LOADING]: `${this.translocoService.translate('SAVING')}...`,\r\n        [CuiLoadingState.COMPLETED]: this.translocoService.translate('SAVED'),\r\n        [CuiLoadingState.INITIAL]: ''\r\n    };\r\n    protected readonly LoaderIcon: Record<CuiLoadingState, CuiNullable<CuiIcon>> = {\r\n        [CuiLoadingState.LOADING]: 'cuiIconRefreshCcw',\r\n        [CuiLoadingState.COMPLETED]: 'cuiIconCheck',\r\n        [CuiLoadingState.INITIAL]: null\r\n    };\r\n\r\n    protected readonly loaderState = this.loaderService.loaderState;\r\n    protected readonly loaderString = computed(() => this.LoaderString[this.loaderState()]);\r\n    protected readonly loaderIcon = computed(() => this.LoaderIcon[this.loaderState()]);\r\n\r\n    public ngOnDestroy(): void {\r\n        this.loaderService.reset();\r\n    }\r\n}\r\n","@if (loaderState() !== state.INITIAL) {\r\n    <cui-svg\r\n        [icon]=\"loaderIcon()!\"\r\n        [color]=\"color()\"\r\n        [class.icon_loading]=\"loaderState() === state.LOADING\"\r\n    />\r\n    <span>{{ loaderString() }}</span>\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { CuiLoaderPosition, CuiLoaderSize, CuiLoaderType } from '../../model';\r\nimport {\r\n    CuiCircleLoaderComponent,\r\n    CuiLinearLoaderComponent,\r\n    CuiPulseLoaderComponent,\r\n    CuiStatedLoaderComponent\r\n} from './components';\r\n\r\n@Component({\r\n    selector: 'cui-loader',\r\n    standalone: true,\r\n    imports: [CuiCircleLoaderComponent, CuiLinearLoaderComponent, CuiPulseLoaderComponent, CuiStatedLoaderComponent],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    templateUrl: './loader.component.html',\r\n})\r\nexport class CuiLoaderComponent {\r\n    public readonly type = input<CuiLoaderType>('circle');\r\n    public readonly position = input<CuiLoaderPosition>('auto');\r\n    public readonly size = input<CuiLoaderSize>('md');\r\n    public readonly color = input<string>('var(--cui-base-900)');\r\n}\r\n","@switch (type()) {\r\n    @case ('circle') {\r\n        <cui-circle-loader\r\n            [position]=\"position()\"\r\n            [size]=\"size()\"\r\n            [color]=\"color()\"\r\n        />\r\n    }\r\n    @case ('stated') {\r\n        <cui-stated-loader [color]=\"color()\" />\r\n    }\r\n    @case ('linear') {\r\n        <cui-linear-loader\r\n            [position]=\"position()\"\r\n            [size]=\"size()\"\r\n            [color]=\"color()\"\r\n        />\r\n    }\r\n    @case ('pulse') {\r\n        <cui-pulse-loader\r\n            [position]=\"position()\"\r\n            [size]=\"size()\"\r\n            [color]=\"color()\"\r\n        >\r\n            <ng-content />\r\n        </cui-pulse-loader>\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiTooltip } from '../../../directives';\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, type CuiDialogContext } from '../../../components';\r\nimport type { CuiDialogDeleteData } from './delete-modal.options';\r\n\r\n@Component({\r\n    selector: 'cui-delete-modal',\r\n    imports: [CuiButtonModule, TranslocoModule, CuiTooltip],\r\n    standalone: true,\r\n    templateUrl: './delete-modal.component.html',\r\n    styleUrls: ['./delete-modal.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDeleteModalComponent {\r\n    private readonly context = inject<CuiDialogContext<CuiDialogDeleteData>>(CUI_DIALOG_CONTEXT);\r\n\r\n    private readonly data = this.context.data;\r\n\r\n    protected readonly title = this.data.title;\r\n    protected readonly content = this.data.content;\r\n    protected readonly isLoading = signal(false);\r\n    protected readonly isDisabled = this.data.isDisabled ?? false;\r\n\r\n    protected onDelete(): void {\r\n        if (!this.data.delete) {\r\n            return;\r\n        }\r\n\r\n        this.isLoading.set(true);\r\n        this.data\r\n            .delete()\r\n            .pipe(finalize(() => this.isLoading.set(false)))\r\n            .subscribe(() => this.context.completeWith());\r\n    }\r\n\r\n    protected onCancel(): void {\r\n        this.context.completeWith({ canceled: true });\r\n    }\r\n}\r\n","<div\r\n    *transloco=\"let t\"\r\n    class=\"wrapper\"\r\n>\r\n    <div class=\"content\">\r\n        <div class=\"header\">\r\n            <h3 class=\"title\">{{ t(title) }}</h3>\r\n            <button\r\n                type=\"button\"\r\n                cuiButton\r\n                icon=\"cuiIconX\"\r\n                appearance=\"ghost\"\r\n                [disabled]=\"isLoading()\"\r\n                class=\"close-btn\"\r\n                (click)=\"onCancel()\"\r\n            ></button>\r\n        </div>\r\n        <div class=\"info\">\r\n            @for (text of content; track text) {\r\n                <p [innerHTML]=\"t(text)\"></p>\r\n            }\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"footer\">\r\n        <button\r\n            type=\"button\"\r\n            cuiButton\r\n            (click)=\"onCancel()\"\r\n            [disabled]=\"isLoading()\"\r\n            appearance=\"secondary\"\r\n        >\r\n            {{ t('CANCEL') }}\r\n        </button>\r\n        <button\r\n            type=\"button\"\r\n            cuiButton\r\n            [isLoaderShown]=\"isLoading()\"\r\n            [disabled]=\"isDisabled\"\r\n            [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\r\n            appearance=\"destructive\"\r\n            (click)=\"onDelete()\"\r\n        >\r\n            {{ t('YES_DELETE') }}\r\n        </button>\r\n    </div>\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TreeStruct } from '@cuby-ui/api';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiSelectedCategoryService {\r\n    private readonly editingIdSignal = signal<CuiNullable<string>>(null);\r\n    private readonly creatingIdSignal = signal<CuiNullable<string>>(null);\r\n    private readonly categorySignal = signal<CuiNullable<TreeStruct>>(null);\r\n\r\n    public readonly editingId = this.editingIdSignal.asReadonly();\r\n    public readonly creatingId = this.creatingIdSignal.asReadonly();\r\n    public readonly category = this.categorySignal.asReadonly();\r\n\r\n    public setCurrentCategory(category: CuiNullable<TreeStruct>): void {\r\n        this.categorySignal.set(category);\r\n    }\r\n\r\n    public setEditingId(id: string): void {\r\n        this.editingIdSignal.set(id);\r\n        this.clearCreatingId();\r\n    }\r\n\r\n    public setCreatingId(id: string): void {\r\n        this.creatingIdSignal.set(id);\r\n        this.clearEditingId();\r\n    }\r\n\r\n    public clearEditingId(): void {\r\n        this.editingIdSignal.set('');\r\n    }\r\n\r\n    public clearCreatingId(): void {\r\n        this.creatingIdSignal.set('');\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { AbstractControl } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiHintModule } from '../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-general-control-error-hint',\r\n    imports: [CuiHintModule, TranslocoDirective],\r\n    standalone: true,\r\n    templateUrl: './general-control-error-hint.component.html',\r\n    styleUrl: './general-control-error-hint.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class CuiGeneralControlErrorHintComponent {\r\n    public readonly control = input.required<AbstractControl>();\r\n    public readonly isVisible = input<boolean>();\r\n\r\n    protected get isInvalid(): boolean {\r\n        return this.isVisible() ?? (this.control().invalid && this.control().dirty);\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (isInvalid) {\r\n        @if (control().errors; as errors) {\r\n            <cui-hint hintType=\"error\">\r\n                @if (errors['required']) {\r\n                    {{ t('FIELD_IS_REQUIRED') }}\r\n                } @else if (errors['minlength']) {\r\n                    {{ t('PLEASE_KEEP_FIELD_AT_LEAST_CHARACTERS', { value: errors['minlength'].requiredLength }) }}\r\n                } @else if (errors['maxlength']) {\r\n                    {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: errors['maxlength'].requiredLength }) }}\r\n                } @else if (errors['extraSpaces']) {\r\n                    {{ t('MUST_BE_WITHOUT_EXTRA_SPACES') }}\r\n                } @else if (errors['min']) {\r\n                    {{ t('MIN_VALUE_MUST_BE_MORE_THAN', { value: errors['min'].min }) }}\r\n                } @else if (errors['max']) {\r\n                    {{ t('MAX_VALUE_MUST_BE_LESS_THAN', { value: errors['max'].max }) }}\r\n                } @else if (errors['email']) {\r\n                    {{ t('INVALID_EMAIL_ADDRESS') }}\r\n                }\r\n            </cui-hint>\r\n        }\r\n    }\r\n</ng-container>\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    effect,\r\n    ElementRef,\r\n    inject,\r\n    input,\r\n    output,\r\n    viewChild\r\n} from '@angular/core';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { cuiCreateDefaultValidators } from '../../../../../utils';\r\nimport {\r\n    CuiFormFieldModule,\r\n    CuiHintModule,\r\n    CuiIconButtonModule,\r\n    CuiGhostInputComponent\r\n} from '../../../../../components';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\n\r\n@Component({\r\n    selector: 'cui-category-form',\r\n    imports: [\r\n        CuiFormFieldModule,\r\n        CuiHintModule,\r\n        CuiIconButtonModule,\r\n        CuiGeneralControlErrorHintComponent,\r\n        CuiGhostInputComponent,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './category-form.component.html',\r\n    styleUrl: './category-form.component.scss',\r\n    host: {\r\n        '(click)': 'onHostClick($event)'\r\n    },\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryFormComponent implements OnInit {\r\n    protected readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n    protected readonly form = this.nonNullableFormBuilder.group({\r\n        title: ['', cuiCreateDefaultValidators({ asyncDelay: 0 })]\r\n    });\r\n    protected readonly titleControl = this.form.controls.title;\r\n\r\n    public readonly isDisabled = input<boolean>(false);\r\n    public readonly defaultTitle = input<string>('');\r\n\r\n    protected readonly created = output<string>();\r\n    protected readonly canceled = output<void>();\r\n\r\n    protected readonly input = viewChild.required('input', { read: ElementRef<HTMLInputElement> });\r\n\r\n    protected get isTitleInvalid(): boolean {\r\n        return this.titleControl.invalid && this.titleControl.dirty;\r\n    }\r\n\r\n    protected get isSubmitButtonDisabled(): boolean {\r\n        return this.isDisabled() || this.form.invalid;\r\n    }\r\n\r\n    constructor() {\r\n        this.initInputDisableStateSubscription();\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initDefaultTitle();\r\n        this.initInputFocus();\r\n    }\r\n\r\n    protected onHostClick(event: Event): void {\r\n        event.stopPropagation();\r\n    }\r\n\r\n    protected onSubmit(): void {\r\n        if (this.form.invalid) {\r\n            return;\r\n        }\r\n\r\n        this.created.emit(this.form.value.title!);\r\n    }\r\n\r\n    protected onCancel(event: Event): void {\r\n        event.stopPropagation();\r\n        this.canceled.emit();\r\n    }\r\n\r\n    private initInputDisableStateSubscription(): void {\r\n        effect(() => {\r\n            if (this.isDisabled()) {\r\n                this.titleControl.disable();\r\n\r\n                return;\r\n            }\r\n\r\n            this.titleControl.enable();\r\n        });\r\n    }\r\n\r\n    private initDefaultTitle(): void {\r\n        this.form.patchValue({ title: this.defaultTitle() });\r\n    }\r\n\r\n    private initInputFocus(): void {\r\n        Promise.resolve().then(() => this.input().nativeElement.focus());\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <form\r\n        [formGroup]=\"form\"\r\n        class=\"form\"\r\n        (ngSubmit)=\"onSubmit()\"\r\n    >\r\n        <div class=\"input\">\r\n            <input\r\n                #input\r\n                cuiGhostInput\r\n                formControlName=\"title\"\r\n                type=\"text\"\r\n                placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\r\n                [isError]=\"isTitleInvalid\"\r\n                (keyup)=\"$event.preventDefault()\"\r\n            />\r\n            <cui-general-control-error-hint [control]=\"titleControl\" />\r\n        </div>\r\n        <button\r\n            cuiIconButton\r\n            type=\"submit\"\r\n            icon=\"cuiIconCheck\"\r\n            color=\"var(--cui-success)\"\r\n            [disabled]=\"isSubmitButtonDisabled\"\r\n            class=\"button\"\r\n        ></button>\r\n    </form>\r\n    <button\r\n        cuiIconButton\r\n        type=\"button\"\r\n        icon=\"cuiIconXCircle\"\r\n        color=\"var(--cui-danger)\"\r\n        (click)=\"onCancel($event)\"\r\n        [disabled]=\"isDisabled()\"\r\n        class=\"button\"\r\n    ></button>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../../../../../components';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\n\r\n@Component({\r\n    selector: 'cui-create-category-item',\r\n    imports: [CuiSvgModule, CuiCategoryFormComponent],\r\n    standalone: true,\r\n    templateUrl: './create-category-item.component.html',\r\n    styleUrl: './create-category-item.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCreateCategoryItemComponent {\r\n    protected readonly created = output<string>();\r\n    protected readonly canceled = output<void>();\r\n\r\n    public readonly isDisabled = input<boolean>(false);\r\n\r\n    protected onSubmit(title: string): void {\r\n        this.created.emit(title);\r\n    }\r\n\r\n    protected onCancel(): void {\r\n        this.canceled.emit();\r\n    }\r\n}\r\n","<cui-svg\r\n    icon=\"cuiIconFolder\"\r\n    color=\"var(--cui-base-500)\"\r\n    class=\"icon\"\r\n/>\r\n<cui-category-form\r\n    [isDisabled]=\"isDisabled()\"\r\n    (created)=\"onSubmit($event)\"\r\n    (canceled)=\"onCancel()\"\r\n/>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiApiContext, CuiTreeStructNavigatorApiService, TreeStruct } from '@cuby-ui/api';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiButtonModule, CuiIconButtonModule, CuiSvgModule } from '../../../../../components';\r\nimport { CuiSelectedCategoryService } from '../../services';\r\nimport { CuiCategoriesListComponent } from '../categories-list';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\nimport { CuiCreateCategoryItemComponent } from '../create-category-item';\r\n\r\n@Component({\r\n    selector: 'cui-category-item',\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiIconButtonModule,\r\n        CuiLetDirective,\r\n        CuiSvgModule,\r\n        CuiCategoryFormComponent,\r\n        CuiCreateCategoryItemComponent,\r\n        forwardRef(() => CuiCategoriesListComponent)\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './category-item.component.html',\r\n    styleUrl: './category-item.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryItemComponent {\r\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n    private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n    protected readonly isStageCreationLoading = signal(false);\r\n    protected readonly stageStorageChildren = signal<TreeStruct[]>([]);\r\n    protected readonly areChildrenOpened = signal(false);\r\n    protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\r\n        this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\r\n    );\r\n    protected readonly doChildrenExist = computed(\r\n        () => this.stageStorage().children.length || this.stageStorageChildren().length\r\n    );\r\n    protected readonly isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());\r\n    protected readonly stageStorageIcon = computed<CuiIcon>(() =>\r\n        this.areChildrenOpened() && this.doChildrenExist() ? 'cuiIconFolderOpen' : 'cuiIconFolder'\r\n    );\r\n    protected readonly isSubcategoryCreating = signal(false);\r\n    protected readonly isSubcategoryCreationLoading = signal(false);\r\n    protected readonly alignItems = computed(() => (this.isTitleEdit() ? 'flex-start' : 'center'));\r\n    protected readonly isTitleEdit = computed(\r\n        () => this.selectedCategoryService.editingId() === this.stageStorage().id\r\n    );\r\n    protected readonly isCreateCategoryControlVisible = computed(\r\n        () =>\r\n            (this.selectedCategoryService.creatingId() === this.stageStorage().id && this.isSubcategoryCreating()) ||\r\n            this.isSubcategoryCreationLoading()\r\n    );\r\n    public readonly categoryTitle = signal<string>('');\r\n    public readonly category = computed(() => ({\r\n        ...this.stageStorage(),\r\n        title: this.categoryTitle() || this.stageStorage().title\r\n    }));\r\n\r\n    public readonly stageStorage = input.required<TreeStruct>();\r\n    public readonly context = input<CuiApiContext>();\r\n\r\n    constructor() {\r\n        this.initStageStorageChildren();\r\n    }\r\n\r\n    protected onSelectCategory(): void {\r\n        this.selectedCategoryService.setCurrentCategory(this.category());\r\n    }\r\n\r\n    protected onToggleChildren(event: MouseEvent): void {\r\n        event.stopPropagation();\r\n\r\n        this.areChildrenOpened.update((value) => !value);\r\n\r\n        if (this.areChildrenOpened()) {\r\n            return;\r\n        }\r\n\r\n        this.isSubcategoryCreating.set(false);\r\n    }\r\n\r\n    protected onTitleChanged(title: string): void {\r\n        this.onCancelTitleEdit();\r\n\r\n        if (title === this.category().title) {\r\n            return;\r\n        }\r\n\r\n        this.treeStructNavigatorApiService.updateTitle(this.stageStorage().id, title, this.context()).subscribe(() => {\r\n            this.categoryTitle.set(title);\r\n\r\n            if (this.category().id === this.selectedCategoryService.category()?.id) {\r\n                this.selectedCategoryService.setCurrentCategory(this.category());\r\n            }\r\n        });\r\n    }\r\n\r\n    protected onStartTitleEdit(event?: Event): void {\r\n        event?.stopPropagation();\r\n\r\n        this.selectedCategoryService.setEditingId(this.stageStorage().id);\r\n        this.onCreatingSubcategoryCanceled();\r\n    }\r\n\r\n    protected onCancelTitleEdit(): void {\r\n        this.selectedCategoryService.clearEditingId();\r\n    }\r\n\r\n    protected onStartCreatingSubcategory(event: MouseEvent): void {\r\n        event.stopPropagation();\r\n\r\n        this.isSubcategoryCreating.set(true);\r\n        this.areChildrenOpened.set(true);\r\n        this.selectedCategoryService.setCreatingId(this.stageStorage().id);\r\n    }\r\n\r\n    protected onCreateNewSubcategoryCategory(title: string): void {\r\n        this.isSubcategoryCreating.set(false);\r\n        this.isSubcategoryCreationLoading.set(true);\r\n        this.treeStructNavigatorApiService\r\n            .createStageStorageToParent(this.stageStorage().id, title, this.context())\r\n            .pipe(finalize(this.isSubcategoryCreationLoading.set.bind(this.isSubcategoryCreationLoading, false)))\r\n            .subscribe((stateStorage) => {\r\n                this.stageStorageChildren.update((value) => [...value, stateStorage]);\r\n            });\r\n    }\r\n\r\n    protected onCreatingSubcategoryCanceled(): void {\r\n        this.isSubcategoryCreating.set(false);\r\n        this.selectedCategoryService.clearCreatingId();\r\n    }\r\n\r\n    private initStageStorageChildren(): void {\r\n        effect(\r\n            () => {\r\n                if (!this.areChildrenOpened() || this.stageStorageChildren().length) {\r\n                    return;\r\n                }\r\n\r\n                const stageStorage = this.stageStorage();\r\n                const stageStorageChildren = stageStorage.children;\r\n\r\n                if (!stageStorageChildren.length) {\r\n                    return;\r\n                }\r\n\r\n                if (typeof stageStorageChildren[0] !== 'string') {\r\n                    this.stageStorageChildren.set(stageStorageChildren as TreeStruct[]);\r\n\r\n                    return;\r\n                }\r\n\r\n                this.treeStructNavigatorApiService\r\n                    .getStageStoragesByParent(stageStorage.id, this.context())\r\n                    .subscribe((storage) => {\r\n                        this.stageStorageChildren.update((prevStageStorages) =>\r\n                            prevStageStorages ? [...prevStageStorages, storage] : [storage]\r\n                        );\r\n                    });\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n}\r\n","<ng-container *cuiLet=\"category() as stage\">\r\n    <button\r\n        type=\"button\"\r\n        [style.align-items]=\"alignItems()\"\r\n        [disabled]=\"isStageCreationLoading()\"\r\n        class=\"category\"\r\n        (click)=\"onSelectCategory()\"\r\n    >\r\n        <button\r\n            type=\"button\"\r\n            class=\"category__open-close-button\"\r\n            [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\r\n            (click)=\"onToggleChildren($event)\"\r\n        >\r\n            <cui-svg\r\n                [icon]=\"openCloseButtonIcon()\"\r\n                color=\"var(--cui-base-500)\"\r\n            />\r\n        </button>\r\n        <cui-svg\r\n            [icon]=\"stageStorageIcon()\"\r\n            color=\"var(--cui-base-500)\"\r\n            class=\"icon\"\r\n        />\r\n        @if (isTitleEdit()) {\r\n            <cui-category-form\r\n                [defaultTitle]=\"stage.title\"\r\n                (created)=\"onTitleChanged($event)\"\r\n                (canceled)=\"onCancelTitleEdit()\"\r\n            />\r\n        } @else {\r\n            <span class=\"category__title\">{{ stage.title }}</span>\r\n\r\n            <button\r\n                cuiButton\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconEdit\"\r\n                class=\"category__add-subcategory-button\"\r\n                (click)=\"onStartTitleEdit($event)\"\r\n            ></button>\r\n            <button\r\n                cuiButton\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconPlus\"\r\n                class=\"category__add-subcategory-button\"\r\n                (click)=\"onStartCreatingSubcategory($event)\"\r\n            ></button>\r\n        }\r\n    </button>\r\n    <div\r\n        [hidden]=\"!areChildrenOpened()\"\r\n        class=\"list-wrapper\"\r\n    >\r\n        <cui-categories-list\r\n            [stageStorages]=\"stageStorageChildren()\"\r\n            [context]=\"context()\"\r\n        />\r\n        @if (isCreateCategoryControlVisible()) {\r\n            <cui-create-category-item\r\n                class=\"create-category\"\r\n                [isDisabled]=\"isSubcategoryCreationLoading()\"\r\n                (created)=\"onCreateNewSubcategoryCategory($event)\"\r\n                (canceled)=\"onCreatingSubcategoryCanceled()\"\r\n            />\r\n        }\r\n    </div>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\r\nimport { CuiApiContext, TreeStruct } from '@cuby-ui/api';\r\n\r\nimport { CuiIconButtonModule, CuiSvgModule } from '../../../../../components';\r\nimport { CuiCategoryItemComponent } from '../category-item';\r\n\r\n@Component({\r\n    selector: 'cui-categories-list',\r\n    imports: [CuiIconButtonModule, CuiSvgModule, forwardRef(() => CuiCategoryItemComponent)],\r\n    standalone: true,\r\n    templateUrl: './categories-list.component.html',\r\n    styleUrl: './categories-list.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesListComponent {\r\n    public readonly stageStorages = input.required<TreeStruct[]>();\r\n    public readonly context = input<CuiApiContext>();\r\n}\r\n","@for (stageStorage of stageStorages(); track stageStorage.id) {\r\n    <cui-category-item\r\n        [stageStorage]=\"stageStorage\"\r\n        [context]=\"context()\"\r\n    />\r\n}\r\n","import {\r\n    booleanAttribute,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    effect,\r\n    inject,\r\n    input,\r\n    signal,\r\n    viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiApiContext, CuiTreeStructNavigatorApiService, TreeStruct, TreeStructType } from '@cuby-ui/api';\r\n\r\nimport { CuiCategoriesListComponent, CuiCreateCategoryItemComponent } from './components';\r\nimport {\r\n    CuiEmptyStateComponent,\r\n    CuiButtonModule,\r\n    CuiDropdownDirective,\r\n    CuiDropdownWrapperComponent\r\n} from '../../../components';\r\nimport { CuiSelectedCategoryService } from './services';\r\n\r\n@Component({\r\n    selector: 'cui-categories',\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiLetDirective,\r\n        CuiDropdownDirective,\r\n        CuiDropdownWrapperComponent,\r\n        CuiEmptyStateComponent,\r\n        CuiCreateCategoryItemComponent,\r\n        CuiCategoriesListComponent,\r\n        TranslocoDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './categories.component.html',\r\n    styleUrls: ['./categories.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesComponent {\r\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n    private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n    protected readonly stageStorages = signal<CuiNullable<TreeStruct[]>>(null);\r\n    protected readonly isCategoryCreating = signal(false);\r\n    protected readonly isCategoryCreationLoading = signal(false);\r\n    protected readonly isCreateCategoryControlVisible = computed(\r\n        () =>\r\n            (this.selectedCategoryService.creatingId() === this.treeStructType() && this.isCategoryCreating()) ||\r\n            this.isCategoryCreationLoading()\r\n    );\r\n\r\n    protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\r\n\r\n    public readonly treeStructType = input.required<TreeStructType>();\r\n    public readonly buttonId = input<string>();\r\n    public readonly disabled = input(false, { transform: booleanAttribute });\r\n    public readonly context = input<CuiApiContext>();\r\n\r\n    constructor() {\r\n        this.initSelectCategoryEffect();\r\n    }\r\n\r\n    protected onOpenStageStorages(): void {\r\n        this.selectedCategoryService.clearCreatingId();\r\n        this.selectedCategoryService.clearEditingId();\r\n\r\n        if (this.stageStorages()?.length) {\r\n            return;\r\n        }\r\n\r\n        this.treeStructNavigatorApiService\r\n            .getStageStorages(this.treeStructType(), this.context())\r\n            .subscribe((stageStorage) => {\r\n                this.stageStorages.update((prevStageStorages) =>\r\n                    prevStageStorages ? [...prevStageStorages, stageStorage] : [stageStorage]\r\n                );\r\n            });\r\n    }\r\n\r\n    protected onStartCreatingNewCategory(): void {\r\n        this.isCategoryCreating.set(true);\r\n        this.selectedCategoryService.setCreatingId(this.treeStructType());\r\n    }\r\n\r\n    protected onCreateNewCategory(title: string): void {\r\n        this.isCategoryCreating.set(false);\r\n        this.selectedCategoryService.clearCreatingId();\r\n        this.isCategoryCreationLoading.set(true);\r\n        this.treeStructNavigatorApiService\r\n            .createStageStorage(title, this.treeStructType(), this.context())\r\n            .pipe(finalize(this.isCategoryCreationLoading.set.bind(this, false)))\r\n            .subscribe((stateStorage) => this.stageStorages.update((value) => [...(value || []), stateStorage]));\r\n    }\r\n\r\n    protected onCreatingCategoryCanceled(): void {\r\n        this.isCategoryCreating.set(false);\r\n        this.selectedCategoryService.clearCreatingId();\r\n    }\r\n\r\n    private initSelectCategoryEffect(): void {\r\n        effect(\r\n            () => {\r\n                this.selectedCategoryService.category();\r\n                this.dropdown().close();\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n}\r\n","<button\r\n    [attr.id]=\"buttonId()\"\r\n    #dropdown=\"cuiDropdown\"\r\n    [cuiDropdown]=\"dropdownContent\"\r\n    orientation=\"stretch\"\r\n    type=\"button\"\r\n    class=\"target\"\r\n    [disabled]=\"disabled()\"\r\n    (click)=\"onOpenStageStorages()\"\r\n>\r\n    <ng-content />\r\n</button>\r\n\r\n<ng-template #dropdownContent>\r\n    <cui-dropdown-wrapper\r\n        *transloco=\"let t\"\r\n        [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\r\n        width=\"100%\"\r\n        class=\"dropdown-wrapper\"\r\n    >\r\n        <ng-container *cuiLet=\"stageStorages() as stageStorages\">\r\n            @if (stageStorages && stageStorages?.length) {\r\n                <cui-categories-list\r\n                    [stageStorages]=\"stageStorages\"\r\n                    [context]=\"context()\"\r\n                />\r\n            }\r\n            @if (isCreateCategoryControlVisible()) {\r\n                <cui-create-category-item\r\n                    class=\"create-category\"\r\n                    [isDisabled]=\"isCategoryCreationLoading()\"\r\n                    (created)=\"onCreateNewCategory($event)\"\r\n                    (canceled)=\"onCreatingCategoryCanceled()\"\r\n                />\r\n            } @else if (!stageStorages?.length) {\r\n                <cui-empty-state\r\n                    class=\"empty\"\r\n                    [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\r\n                />\r\n            }\r\n        </ng-container>\r\n        <button\r\n            ccDropdownFooterContent\r\n            cuiButton\r\n            type=\"button\"\r\n            appearance=\"ghost\"\r\n            size=\"xxs\"\r\n            icon=\"cuiIconPlus\"\r\n            (click)=\"onStartCreatingNewCategory()\"\r\n        >\r\n            {{ t('NEW_CATEGORY') }}\r\n        </button>\r\n    </cui-dropdown-wrapper>\r\n</ng-template>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\n@Injectable()\r\nexport class CuiCheckListBlockService {\r\n    private readonly checkListItemsSignal =\r\n        signal<CuiNullable<NodeCheckListItem<NodeCheckListItemContentType>[]>>(null);\r\n    private readonly componentIdSignal = signal<CuiNullable<string>>(null);\r\n    private readonly isDragAvailableSignal = signal<boolean>(false);\r\n\r\n    public readonly checkListItems = this.checkListItemsSignal.asReadonly();\r\n    public readonly componentId = this.componentIdSignal.asReadonly();\r\n    public readonly isDragAvailable = this.isDragAvailableSignal.asReadonly();\r\n\r\n    public setCheckListItems(checkListItems: NodeCheckListItem<NodeCheckListItemContentType>[]): void {\r\n        this.checkListItemsSignal.set(checkListItems);\r\n    }\r\n\r\n    public addCheckListItem(checkListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n        this.checkListItemsSignal.update((value) => (value ? [...value, checkListItem] : [checkListItem]));\r\n    }\r\n\r\n    public updateCheckListItem(updatedCheckListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n        if (!this.checkListItemsSignal()) {\r\n            return;\r\n        }\r\n\r\n        this.checkListItemsSignal.update((value) => {\r\n            const updateCheckListItemIndex = value!.findIndex(\r\n                (checkListItem) => checkListItem.id === updatedCheckListItem.id\r\n            );\r\n\r\n            value![updateCheckListItemIndex] = updatedCheckListItem;\r\n\r\n            return [...value!];\r\n        });\r\n    }\r\n\r\n    public deleteCheckListItem(id: string): void {\r\n        if (!this.checkListItemsSignal()) {\r\n            return;\r\n        }\r\n\r\n        this.checkListItemsSignal.update((value) => {\r\n            const deletedItemIndex = value!.findIndex((checklistItem) => checklistItem.id === id);\r\n\r\n            value!.splice(deletedItemIndex, 1);\r\n\r\n            return [...value!];\r\n        });\r\n    }\r\n\r\n    public setComponentId(id: string): void {\r\n        this.componentIdSignal.set(id);\r\n    }\r\n\r\n    public toggleDragPermission(isDragButtonVisible: boolean): void {\r\n        this.isDragAvailableSignal.set(isDragButtonVisible);\r\n    }\r\n}\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    DestroyRef,\r\n    effect,\r\n    inject,\r\n    input,\r\n    output,\r\n    signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListActionItemContent, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport {\r\n    CuiCheckboxModule,\r\n    CuiFormFieldModule,\r\n    CuiLabelModule,\r\n    CuiRadioModule,\r\n    CuiSelectModule,\r\n    CuiTextareaModule,\r\n    CuiToggleModule\r\n} from '../../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../../directives';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block-list-item-action-card',\r\n    imports: [\r\n        CuiCheckboxModule,\r\n        CuiFormFieldModule,\r\n        CuiLabelModule,\r\n        CuiRadioModule,\r\n        CuiSelectModule,\r\n        CuiTextareaModule,\r\n        CuiTextFieldControllerModule,\r\n        CuiToggleModule,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-list-item-action-card.component.html',\r\n    styleUrl: './checklist-block-list-item-action-card.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionCardComponent implements OnInit {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n    public actionForm!: FormGroup;\r\n\r\n    public readonly purposeType = input<string>();\r\n    public readonly isConsiderationNeeded = input<boolean>(false);\r\n    public readonly actionInfo = input.required<NodeCheckListActionItemContent>();\r\n\r\n    public readonly consideredCorrectChanged = output<string>();\r\n    public readonly checkListActionChanged = output<NodeCheckListItemContentAction>();\r\n\r\n    protected readonly _actionInfo = signal<CuiNullable<NodeCheckListActionItemContent>>(null);\r\n    protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n        () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n    );\r\n    protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n        () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n    );\r\n\r\n    protected readonly isConsideredCorrectControl = this.nonNullableFormBuilder.control({\r\n        value: false,\r\n        disabled: false\r\n    });\r\n\r\n    protected get photoGroup(): FormGroup {\r\n        return this.actionForm.get('photo') as FormGroup;\r\n    }\r\n\r\n    protected get commentGroup(): FormGroup {\r\n        return this.actionForm.get('comment') as FormGroup;\r\n    }\r\n\r\n    constructor() {\r\n        effect(\r\n            () => {\r\n                this._actionInfo.set(this.actionInfo());\r\n\r\n                if (!this.purposeType() || !this.isConsiderationNeeded()) {\r\n                    return;\r\n                }\r\n\r\n                this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initActionForm();\r\n    }\r\n\r\n    private initActionForm(): void {\r\n        this.actionForm = this.nonNullableFormBuilder.group({\r\n            photo: this.nonNullableFormBuilder.group({\r\n                isEnable: this.attachmentPhotoAction().isEnable,\r\n                isRequired: {\r\n                    value: this.attachmentPhotoAction().isRequired,\r\n                    disabled: !this.attachmentPhotoAction().isEnable\r\n                }\r\n            }),\r\n            comment: this.nonNullableFormBuilder.group({\r\n                isEnable: this.textAreaAction().isEnable,\r\n                isRequired: {\r\n                    value: this.textAreaAction().isRequired,\r\n                    disabled: !this.textAreaAction().isEnable\r\n                }\r\n            })\r\n        });\r\n\r\n        this.initActionFormSegmentsSubscriptions();\r\n\r\n        if (!this.isConsiderationNeeded()) {\r\n            return;\r\n        }\r\n\r\n        this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n    }\r\n\r\n    private initActionFormSegmentsSubscriptions(): void {\r\n        this.isConsideredCorrectControlSubscription();\r\n        this.initPhotoGroupSubscription();\r\n        this.initCommentGroupSubscription();\r\n    }\r\n\r\n    private isConsideredCorrectControlSubscription(): void {\r\n        this.isConsideredCorrectControl.valueChanges\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe(() => this.consideredCorrectChanged.emit(this._actionInfo()!.id));\r\n    }\r\n\r\n    private initPhotoGroupSubscription(): void {\r\n        this.photoGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n            if (!value.isEnable) {\r\n                this.photoGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n                this.photoGroup.get('isRequired')?.disable({ emitEvent: false });\r\n                this.checkListActionChanged.emit({\r\n                    id: this.attachmentPhotoAction().id,\r\n                    ...this.photoGroup.getRawValue()\r\n                });\r\n\r\n                return;\r\n            }\r\n\r\n            this.photoGroup.get('isRequired')?.enable({ emitEvent: false });\r\n            this.checkListActionChanged.emit({\r\n                id: this.attachmentPhotoAction().id,\r\n                ...this.photoGroup.value\r\n            });\r\n        });\r\n    }\r\n\r\n    private initCommentGroupSubscription(): void {\r\n        this.commentGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n            if (!value.isEnable) {\r\n                this.commentGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n                this.commentGroup.get('isRequired')?.disable({ emitEvent: false });\r\n                this.checkListActionChanged.emit({\r\n                    id: this.textAreaAction().id,\r\n                    ...this.commentGroup.getRawValue()\r\n                });\r\n\r\n                return;\r\n            }\r\n\r\n            this.commentGroup.get('isRequired')?.enable({ emitEvent: false });\r\n            this.checkListActionChanged.emit({\r\n                id: this.textAreaAction().id,\r\n                ...this.commentGroup.value\r\n            });\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <div\r\n        class=\"card\"\r\n        [formGroup]=\"actionForm\"\r\n    >\r\n        <div class=\"title-container\">\r\n            <span class=\"title\">{{ actionInfo().title }}</span>\r\n            @if (isConsiderationNeeded()) {\r\n                <label\r\n                    cuiLabel\r\n                    class=\"title__input\"\r\n                >\r\n                    <input\r\n                        cuiRadio\r\n                        type=\"radio\"\r\n                        [checked]=\"actionInfo().considerCorrect\"\r\n                        [formControl]=\"isConsideredCorrectControl\"\r\n                        [value]=\"true\"\r\n                    />\r\n                    {{ t('CONSIDER_CORRECT') }}\r\n                </label>\r\n            }\r\n        </div>\r\n        <div class=\"blocks\">\r\n            <div\r\n                class=\"block-card\"\r\n                [formGroup]=\"photoGroup\"\r\n            >\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiCheckbox\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isEnable\"\r\n                    />\r\n                    {{ t('PHOTO') }}\r\n                </label>\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiToggle\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isRequired\"\r\n                    />\r\n                    {{ t('REQUIRED') }}\r\n                </label>\r\n            </div>\r\n            <div\r\n                class=\"block-card\"\r\n                [formGroup]=\"commentGroup\"\r\n            >\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiCheckbox\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isEnable\"\r\n                    />\r\n                    {{ t('COMMENT') }}\r\n                </label>\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiToggle\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isRequired\"\r\n                    />\r\n                    {{ t('REQUIRED') }}\r\n                </label>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport {\r\n    CuiNodeChecklistApiService,\r\n    NodeCheckListActionItemContent,\r\n    NodeCheckListItem,\r\n    NodeCheckListItemContentAction\r\n} from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block-list-item-action-with-verification',\r\n    imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-list-item-action-with-verification.component.html',\r\n    styleUrl: './checklist-block-list-item-action-with-verification.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithVerificationComponent {\r\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n    private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n    public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n    protected onConsiderCorrectChanged(actionId: string, purposeType: string): void {\r\n        const requestData = {\r\n            nodeCheckListId: this.checkListItem().id,\r\n            assigneeActionType: purposeType,\r\n            actionId\r\n        };\r\n\r\n        this.nodeCheckListApiService\r\n            .updateNodeCheckListItemIsConsideredCorrect(requestData)\r\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n    }\r\n\r\n    protected onCheckListActionChanged(\r\n        actionContent: NodeCheckListItemContentAction,\r\n        actionId: string,\r\n        purposeType: string\r\n    ): void {\r\n        const requestData = {\r\n            nodeCheckListId: this.checkListItem().id,\r\n            assigneeActionType: purposeType,\r\n            actionId,\r\n            contentId: actionContent.id,\r\n            isEnable: actionContent.isEnable,\r\n            isRequired: actionContent.isRequired\r\n        };\r\n\r\n        this.nodeCheckListApiService\r\n            .updateNodeCheckListItemActionContent(requestData)\r\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n        <div class=\"action\">\r\n            <div class=\"action__header action__assignee-header\">\r\n                {{ t('CONDITIONAL_LOGIC_FOR_ASSIGNEE') | uppercase }}\r\n            </div>\r\n            <div class=\"action__content\">\r\n                <div class=\"cards-container\">\r\n                    <cui-checklist-block-list-item-action-card\r\n                        [purposeType]=\"'ASSIGN'\"\r\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n                        [isConsiderationNeeded]=\"true\"\r\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n                        (checkListActionChanged)=\"\r\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id, 'ASSIGN')\r\n                        \"\r\n                    />\r\n                    <cui-checklist-block-list-item-action-card\r\n                        [purposeType]=\"'ASSIGN'\"\r\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n                        [isConsiderationNeeded]=\"true\"\r\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n                        (checkListActionChanged)=\"\r\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id, 'ASSIGN')\r\n                        \"\r\n                    />\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"action\">\r\n            <div class=\"action__header action__approver-header\">\r\n                {{ t('CONDITIONAL_LOGIC_FOR_APPROVER') | uppercase }}\r\n            </div>\r\n            <div class=\"action__content\">\r\n                <div class=\"cards-container\">\r\n                    <cui-checklist-block-list-item-action-card\r\n                        [purposeType]=\"'APPROVE'\"\r\n                        [actionInfo]=\"checkListItemContent.actionsApprove![0]\"\r\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n                        (checkListActionChanged)=\"\r\n                            onCheckListActionChanged($event, checkListItemContent.actionsApprove![0].id, 'APPROVE')\r\n                        \"\r\n                    />\r\n                    <cui-checklist-block-list-item-action-card\r\n                        [purposeType]=\"'APPROVE'\"\r\n                        [actionInfo]=\"checkListItemContent.actionsApprove![1]\"\r\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n                        (checkListActionChanged)=\"\r\n                            onCheckListActionChanged($event, checkListItemContent.actionsApprove![1].id, 'APPROVE')\r\n                        \"\r\n                    />\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport {\r\n    CuiNodeChecklistApiService,\r\n    NodeCheckListActionItemContent,\r\n    NodeCheckListItem,\r\n    NodeCheckListItemContentAction\r\n} from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block-list-item-action-without-verification',\r\n    imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-list-item-action-without-verification.component.html',\r\n    styleUrl: './checklist-block-list-item-action-without-verification.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithoutVerificationComponent {\r\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n    private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n    public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n    protected onCheckListActionChanged(actionContent: NodeCheckListItemContentAction, actionId: string): void {\r\n        const requestData = {\r\n            nodeCheckListId: this.checkListItem().id,\r\n            assigneeActionType: 'ASSIGN',\r\n            actionId,\r\n            contentId: actionContent.id,\r\n            isEnable: actionContent.isEnable,\r\n            isRequired: actionContent.isRequired\r\n        };\r\n\r\n        this.nodeCheckListApiService\r\n            .updateNodeCheckListItemActionContent(requestData)\r\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n        <div class=\"action\">\r\n            <div class=\"action__header\">\r\n                {{ t('CONDITIONAL_LOGIC') | uppercase }}\r\n            </div>\r\n            <div class=\"action__content\">\r\n                <div class=\"cards-container\">\r\n                    <cui-checklist-block-list-item-action-card\r\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n                        (checkListActionChanged)=\"\r\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id)\r\n                        \"\r\n                    />\r\n                    <cui-checklist-block-list-item-action-card\r\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n                        (checkListActionChanged)=\"\r\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id)\r\n                        \"\r\n                    />\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { FormControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n    CuiContextMenuModule,\r\n    CuiFormFieldModule,\r\n    CuiHintModule,\r\n    CuiInputModule,\r\n    CuiLabelModule\r\n} from '../../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../../directives';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../index';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block-title-control',\r\n    imports: [\r\n        CuiContextMenuModule,\r\n        CuiFormFieldModule,\r\n        CuiHintModule,\r\n        CuiInputModule,\r\n        CuiLabelModule,\r\n        CuiTextFieldControllerModule,\r\n        CuiGeneralControlErrorHintComponent,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-title-control.component.html',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockTitleControlComponent {\r\n    public readonly control = input.required<FormControl>();\r\n\r\n    protected get isTitleError(): boolean {\r\n        return this.control().invalid && this.control().dirty;\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <cui-form-field>\r\n        <label\r\n            cuiLabel\r\n            [isRequired]=\"true\"\r\n            for=\"title\"\r\n        >\r\n            {{ t('TITLE') }}\r\n        </label>\r\n        <cui-input-text\r\n            [formControl]=\"control()\"\r\n            cuiTextFieldId=\"title\"\r\n            [cuiTextFieldIsError]=\"isTitleError\"\r\n            cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\r\n        />\r\n        <cui-general-control-error-hint [control]=\"control()\" />\r\n    </cui-form-field>\r\n</ng-container>\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport type { OnInit, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder } from '@angular/forms';\r\nimport { CuiElementDirective, CuiLetDirective, CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\r\nimport {\r\n    CuiTreeStructApiService,\r\n    CuiNodeChecklistApiService,\r\n    NodeCheckListItem,\r\n    NodeCheckListItemContentType\r\n} from '@cuby-ui/api';\r\n\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiTooltip } from '../../../../../directives';\r\nimport {\r\n    CuiButtonModule,\r\n    CuiContextMenuModule,\r\n    CuiDialogService,\r\n    CuiLabelModule,\r\n    CuiSvgModule\r\n} from '../../../../../components';\r\nimport { CuiCheckListBlockService } from '../../services/checklist-block.service';\r\nimport { CuiChecklistBlockTitleControlComponent } from '../checklist-block-title-control';\r\nimport { CuiNodeCheckListItemWithOption } from './checklist-block-list-item-container.options';\r\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../../../../editor';\r\nimport { CuiDeleteModalComponent } from '../../../index';\r\nimport { cuiCreateDefaultValidators } from '../../../../../utils';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block-list-item-container',\r\n    imports: [\r\n        CuiTooltip,\r\n        CuiEditorBlockComponent,\r\n        CuiChecklistBlockTitleControlComponent,\r\n        CuiButtonModule,\r\n        CuiContextMenuModule,\r\n        CuiElementDirective,\r\n        CuiLabelModule,\r\n        CuiLetDirective,\r\n        CuiSvgModule,\r\n        NgComponentOutlet,\r\n        TranslocoDirective,\r\n        CuiDragPointerDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-list-item-container.component.html',\r\n    styleUrl: './checklist-block-list-item-container.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListItemContainerComponent implements OnInit {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly cuiDialogService = inject(CuiDialogService);\r\n    private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n\r\n    protected readonly DEFAULT_CONTROL_DELAY = 700;\r\n\r\n    protected readonly isOpen = signal(false);\r\n\r\n    public readonly checkListBlockItem = input.required<CuiCheckListBlockItem>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n    public readonly index = input<number>(0);\r\n\r\n    protected readonly componentId = this.checkListBlockService.componentId;\r\n    protected readonly rotate = computed(() => `rotate(${this.isOpen() ? '0deg' : '-90deg'})`);\r\n    protected readonly headerText = computed(() =>\r\n        this.checkListItem().title ? this.checkListItem().title : this.translocoService.translate('UNTITLED')\r\n    );\r\n    protected readonly checkListItem = computed<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n        () => this.checkListBlockItem().content\r\n    );\r\n    protected readonly checkListItemComponent = computed<Type<unknown>>(() => this.checkListBlockItem().component);\r\n    protected readonly checkListItemWithOptions = computed<\r\n        CuiNodeCheckListItemWithOption<NodeCheckListItemContentType>\r\n    >(() => ({\r\n        ...this.checkListItem(),\r\n        options: [\r\n            {\r\n                label: this.translocoService.translate('DUPLICATE'),\r\n                icon: 'cuiIconCopy'\r\n            },\r\n            {\r\n                label: this.translocoService.translate('DELETE'),\r\n                icon: 'cuiIconTrash',\r\n                color: 'var(--cui-danger)',\r\n                command: this.openDeleteChecklistNodeModal.bind(this)\r\n            }\r\n        ]\r\n    }));\r\n    protected readonly headerBorderColor = computed(() => {\r\n        const checkListItem = this.checkListItem();\r\n\r\n        if (checkListItem.content.actionsApprove !== null) {\r\n            return 'var(--cui-violet-bg)';\r\n        }\r\n\r\n        if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n            return 'var(--cui-cyan-bg)';\r\n        }\r\n\r\n        return null;\r\n    });\r\n    protected readonly iconChecklistType = computed(() => {\r\n        const checkListItem = this.checkListItem();\r\n\r\n        if (checkListItem.content.actionsApprove !== null) {\r\n            return 'cuiIconUsersSm';\r\n        }\r\n\r\n        if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n            return 'cuiIconChecklist';\r\n        }\r\n\r\n        return 'cuiIconUserSm';\r\n    });\r\n\r\n    protected readonly titleControl = this.nonNullableFormBuilder.control(\r\n        { value: '', disabled: true },\r\n        cuiCreateDefaultValidators()\r\n    );\r\n\r\n    protected get isTitleEmpty(): boolean {\r\n        return !this.titleControl.value;\r\n    }\r\n\r\n    protected get isTitleError(): boolean {\r\n        return this.titleControl.invalid && this.titleControl.dirty;\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initControls();\r\n    }\r\n\r\n    protected onRowToggle(): void {\r\n        this.isOpen.update((prev) => !prev);\r\n    }\r\n\r\n    protected onAllowDrag(): void {\r\n        this.checkListBlockService.toggleDragPermission(true);\r\n    }\r\n\r\n    protected onProhibitDrag(): void {\r\n        this.checkListBlockService.toggleDragPermission(false);\r\n    }\r\n\r\n    private initControls(): void {\r\n        this.initTitleControlValue();\r\n        this.initTitleControlSubscription();\r\n    }\r\n\r\n    private initTitleControlValue(): void {\r\n        this.titleControl.enable();\r\n        this.titleControl.setValue(this.checkListItem().title ? this.checkListItem().title : '');\r\n    }\r\n\r\n    private initTitleControlSubscription(): void {\r\n        this.titleControl.valueChanges\r\n            .pipe(debounceTime(this.DEFAULT_CONTROL_DELAY), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((titleValue) => {\r\n                if (this.titleControl.invalid) {\r\n                    return;\r\n                }\r\n\r\n                this.nodeCheckListApiService\r\n                    .updateNodeCheckListItemTitle(this.checkListItem().id, titleValue)\r\n                    .subscribe(() => {\r\n                        this.checkListBlockService.updateCheckListItem({\r\n                            ...this.checkListItem(),\r\n                            title: titleValue\r\n                        });\r\n                    });\r\n            });\r\n    }\r\n\r\n    private openDeleteChecklistNodeModal(): void {\r\n        const content = ['THIS_ACTION_WILL_PERMANENTLY_DELETE_THE_ITEM_FROM_CHECKLIST'];\r\n\r\n        this.cuiDialogService\r\n            .open(CuiDeleteModalComponent, {\r\n                data: {\r\n                    title: 'DELETE_EVALUATION_CHECKLIST_ITEM_QUESTION',\r\n                    content,\r\n                    delete: () =>\r\n                        this.treeStructApiService.deleteTreeStructElement(this.componentId()!, this.checkListItem().id)\r\n                }\r\n            })\r\n            .subscribe(\r\n                (data) => data?.canceled || this.checkListBlockService.deleteCheckListItem(this.checkListItem().id)\r\n            );\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <ng-container *cuiLet=\"checkListItemWithOptions() as checkListItem\">\r\n        <header\r\n            class=\"header\"\r\n            [style.border-left-color]=\"headerBorderColor()\"\r\n            [class.header__opened]=\"isOpen()\"\r\n        >\r\n            <button\r\n                class=\"icon-drag\"\r\n                cuiButton\r\n                cuiDragPointer\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                [icon]=\"'cuiIconDragHandleDots'\"\r\n                (mouseenter)=\"onAllowDrag()\"\r\n                (mouseleave)=\"onProhibitDrag()\"\r\n            ></button>\r\n            <button\r\n                cuiButton\r\n                type=\"button\"\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                [style.transform]=\"rotate()\"\r\n                icon=\"cuiIconCaretDownFillXxs\"\r\n                (click)=\"onRowToggle()\"\r\n            ></button>\r\n            <cui-svg\r\n                [icon]=\"iconChecklistType()\"\r\n                color=\"var(--cui-base-500)\"\r\n            />\r\n            <div class=\"header__content\">\r\n                <div class=\"header__numeration\">{{ index() }}.</div>\r\n                <div class=\"header__text\">{{ headerText() }}</div>\r\n            </div>\r\n            @if (isTitleEmpty) {\r\n                <cui-svg\r\n                    [cuiTooltip]=\"t('TITLE_IS_REQUIRED')\"\r\n                    icon=\"cuiIconAlertTriangle\"\r\n                    color=\"var(--cui-danger)\"\r\n                    class=\"icon\"\r\n                />\r\n            }\r\n            <button\r\n                #actionButton=\"elementRef\"\r\n                cuiButton\r\n                type=\"button\"\r\n                cuiElement\r\n                appearance=\"ghost\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconMoreVertical\"\r\n                class=\"list__context-menu-button\"\r\n            ></button>\r\n            <cui-context-menu\r\n                [items]=\"checkListItem.options\"\r\n                [target]=\"actionButton.nativeElement\"\r\n            />\r\n        </header>\r\n        @if (isOpen()) {\r\n            <div class=\"info\">\r\n                <cui-checklist-block-title-control [control]=\"titleControl\" />\r\n                <cui-editor-block\r\n                    [config]=\"config()\"\r\n                    [editorId]=\"checkListItem.textContainerId!\"\r\n                    [title]=\"titleControl.value\"\r\n                />\r\n            </div>\r\n            <ng-container\r\n                [ngComponentOutlet]=\"checkListItemComponent()\"\r\n                [ngComponentOutletInputs]=\"{\r\n                    checkListItem: checkListItem\r\n                }\"\r\n            />\r\n        }\r\n    </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\r\nimport type { FormArray, FormGroup } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport {\r\n    CuiAlertService,\r\n    CuiButtonModule,\r\n    CuiIconButtonModule,\r\n    CuiInputModule,\r\n    CuiInputNumberModule,\r\n    CuiSvgModule,\r\n    CuiTextareaModule\r\n} from '../../../../../components';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\n\r\nimport type { CuiEvaluationCriteriaGroup } from '../checklist-block-list-item-evaluation';\r\n\r\nimport { CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\nimport type { CuiEvaluationCriteriaData } from './checklist-block-list-item-evaluation-criteria.options';\r\n\r\n@Component({\r\n    selector: 'li[cuiChecklistBlockListItemEvaluationCriteria]',\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiIconButtonModule,\r\n        CuiInputModule,\r\n        CuiLetDirective,\r\n        CuiSvgModule,\r\n        CuiTextareaModule,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective,\r\n        CuiInputNumberModule,\r\n        CuiDragPointerDirective,\r\n        CuiGeneralControlErrorHintComponent\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-list-item-evaluation-criteria.component.html',\r\n    styleUrl: './checklist-block-list-item-evaluation-criteria.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationCriteriaComponent {\r\n    private readonly cuiAlertService = inject(CuiAlertService);\r\n    private readonly translocoService = inject(TranslocoService);\r\n\r\n    private readonly EVALUATION_ALREADY_EXIST = `EVALUATION_ALREADY_EXIST`;\r\n\r\n    private previousData: CuiNullable<CuiEvaluationCriteriaData> = null;\r\n\r\n    protected readonly isEditMode = signal(false);\r\n    protected readonly isNew = computed(() => this.criteriaGroup().controls.isNew.value);\r\n    protected readonly gap = computed(() => (this.isEditMode() ? 8 : 0));\r\n    protected readonly isLoading = computed(() => this.loadingIds()[this.criteriaGroup().controls.id.value]);\r\n    protected readonly isDragEnabled = computed(() => !this.isEditMode() && !this.isLoading());\r\n\r\n    protected get isEvaluationInvalid(): boolean {\r\n        return this.criteriaGroup().controls.evaluation.invalid && this.isEditMode();\r\n    }\r\n\r\n    protected get isCriteriaInvalid(): boolean {\r\n        return this.criteriaGroup().controls.criteria.invalid && this.isEditMode();\r\n    }\r\n\r\n    public readonly loadingIds = input.required<Record<string, boolean>>();\r\n    public readonly index = input.required<number>();\r\n    public readonly criteriaGroup = input.required<FormGroup<CuiEvaluationCriteriaGroup>>();\r\n    public readonly evaluationCriteriaFormArray = input.required<FormArray<FormGroup>>();\r\n\r\n    public readonly saveClicked = output<CuiEvaluationCriteriaGroup>();\r\n    public readonly deleteClicked = output<string>();\r\n    public readonly cancelClicked = output();\r\n\r\n    constructor() {\r\n        this.initNewEvaluationCriteriaEffect();\r\n        this.initEditModeEffect();\r\n    }\r\n\r\n    protected onSave(): void {\r\n        if (this.criteriaGroup().invalid) {\r\n            return;\r\n        }\r\n\r\n        const evaluation = `${this.criteriaGroup().controls.evaluation.value}`;\r\n\r\n        if (this.checkIsEvaluationCriteriaExist(evaluation)) {\r\n            this.cuiAlertService\r\n                .open(this.translocoService.translate(this.EVALUATION_ALREADY_EXIST, { evaluation }), {\r\n                    status: 'error'\r\n                })\r\n                .subscribe();\r\n\r\n            return;\r\n        }\r\n\r\n        this.isEditMode.update((prev) => !prev);\r\n        this.saveClicked.emit(this.criteriaGroup().controls);\r\n    }\r\n\r\n    protected onDelete(): void {\r\n        const id = this.criteriaGroup().controls.id.value;\r\n\r\n        this.deleteClicked.emit(id);\r\n    }\r\n\r\n    protected onCancel(): void {\r\n        if (this.isNew()) {\r\n            this.cancelClicked.emit();\r\n        }\r\n\r\n        this.isEditMode.update((prev) => !prev);\r\n\r\n        if (!this.previousData) {\r\n            return;\r\n        }\r\n\r\n        this.criteriaGroup().setValue({\r\n            ...this.criteriaGroup().getRawValue(),\r\n            ...this.previousData\r\n        });\r\n    }\r\n\r\n    protected onToggleEditMode(): void {\r\n        const { criteria, evaluation } = this.criteriaGroup().getRawValue();\r\n\r\n        this.previousData = { criteria, evaluation };\r\n        this.isEditMode.update((prev) => !prev);\r\n    }\r\n\r\n    // TODO: Компонент должен был быть построен исключительно на реактивных формах\r\n    private initEditModeEffect(): void {\r\n        effect(() => this.criteriaGroup()[this.isEditMode() ? 'enable' : 'disable']());\r\n    }\r\n\r\n    private initNewEvaluationCriteriaEffect(): void {\r\n        effect(() => this.isEditMode.set(this.isNew()), { allowSignalWrites: true });\r\n    }\r\n\r\n    private checkIsEvaluationCriteriaExist(evaluation: string): boolean {\r\n        const controls = this.evaluationCriteriaFormArray().controls;\r\n\r\n        return controls.some((control: FormGroup<CuiEvaluationCriteriaGroup>) => {\r\n            if (control.controls.id.value === this.criteriaGroup().controls.id.value) {\r\n                return false;\r\n            }\r\n\r\n            return `${control.get('evaluation')?.value}` === evaluation;\r\n        });\r\n    }\r\n}\r\n","<div *transloco=\"let t\">\r\n    <form\r\n        *cuiLet=\"criteriaGroup() as form\"\r\n        [formGroup]=\"form\"\r\n        [class.form_edit]=\"isEditMode()\"\r\n        clas=\"form\"\r\n    >\r\n        <div class=\"content\">\r\n            <span class=\"index\">{{ index() }}.</span>\r\n            @if (!isEditMode()) {\r\n                <cui-svg\r\n                    cuiDragPointer\r\n                    icon=\"cuiIconDragHandleDots\"\r\n                    color=\"var(--cui-base-500)\"\r\n                    class=\"icon\"\r\n                />\r\n            }\r\n            <div\r\n                style.gap=\"{{ gap() }}px\"\r\n                class=\"wrapper\"\r\n            >\r\n                <cui-input-number\r\n                    formControlName=\"evaluation\"\r\n                    cuiTextFieldPlaceholder=\"0\"\r\n                    [cuiTextFieldIsError]=\"isEvaluationInvalid\"\r\n                    [min]=\"1\"\r\n                    [max]=\"99\"\r\n                    class=\"input-number\"\r\n                />\r\n                <textarea\r\n                    cuiTextarea\r\n                    formControlName=\"criteria\"\r\n                    [rows]=\"1\"\r\n                    [cuiTextFieldIsError]=\"isCriteriaInvalid\"\r\n                    placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\r\n                    class=\"textarea\"\r\n                ></textarea>\r\n            </div>\r\n            @if (isEditMode()) {\r\n                <button\r\n                    type=\"submit\"\r\n                    cuiIconButton\r\n                    icon=\"cuiIconCheck\"\r\n                    color=\"var(--cui-success)\"\r\n                    [disabled]=\"form.invalid\"\r\n                    class=\"button\"\r\n                    (click)=\"onSave()\"\r\n                ></button>\r\n                <button\r\n                    type=\"button\"\r\n                    cuiIconButton\r\n                    icon=\"cuiIconXCircle\"\r\n                    color=\"var(--cui-danger)\"\r\n                    class=\"button\"\r\n                    (click)=\"onCancel()\"\r\n                ></button>\r\n            } @else {\r\n                <button\r\n                    cuiButton\r\n                    type=\"button\"\r\n                    appearance=\"ghost\"\r\n                    size=\"xxs\"\r\n                    icon=\"cuiIconEdit\"\r\n                    [disabled]=\"isLoading()\"\r\n                    (click)=\"onToggleEditMode()\"\r\n                ></button>\r\n                <button\r\n                    cuiButton\r\n                    type=\"button\"\r\n                    appearance=\"ghost\"\r\n                    size=\"xxs\"\r\n                    icon=\"cuiIconTrash\"\r\n                    [isLoaderShown]=\"isLoading()\"\r\n                    (click)=\"onDelete()\"\r\n                ></button>\r\n            }\r\n        </div>\r\n        <cui-general-control-error-hint\r\n            [control]=\"form.controls.criteria\"\r\n            class=\"error-hint\"\r\n        />\r\n    </form>\r\n</div>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiNullable, CuiDragDropData, CuiDragDropDirective, CuiDragListDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, of, Subject, switchMap, takeUntil } from 'rxjs';\r\nimport {\r\n    CuiNodeChecklistApiService,\r\n    NodeCheckListEvaluationCriteria,\r\n    NodeCheckListEvaluationItemContent,\r\n    NodeCheckListItem,\r\n    NodeCheckListItemContentAction,\r\n    NodeCheckListItemSwitchContentPointer,\r\n    NodeCheckListItemSwitchContentRequestParams\r\n} from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemEvaluationCriteriaComponent } from '../checklist-block-list-item-evaluation-criteria';\r\nimport {\r\n    CuiButtonModule,\r\n    CuiCheckboxModule,\r\n    CuiContextMenuModule,\r\n    CuiDialogService,\r\n    CuiHintModule,\r\n    CuiInputModule,\r\n    CuiLabelModule,\r\n    CuiTextareaModule,\r\n    CuiToggleModule,\r\n    CuiEmptyStateComponent\r\n} from '../../../../../components';\r\nimport { CuiDeleteModalComponent } from '../../../index';\r\nimport { CuiTextFieldControllerModule } from '../../../../../directives';\r\nimport { cuiCreateDefaultValidators } from '../../../../../utils';\r\n\r\nimport type {\r\n    CuiEvaluationCriteriaElementData,\r\n    CuiEvaluationCriteriaGroup\r\n} from './checklist-block-list-item-evaluation.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block-list-item-evaluation',\r\n    imports: [\r\n        CuiCheckListBlockListItemEvaluationCriteriaComponent,\r\n        CuiButtonModule,\r\n        CuiCheckboxModule,\r\n        CuiContextMenuModule,\r\n        CuiHintModule,\r\n        CuiInputModule,\r\n        CuiLabelModule,\r\n        CuiTextareaModule,\r\n        CuiTextFieldControllerModule,\r\n        CuiToggleModule,\r\n        CuiEmptyStateComponent,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective,\r\n        CuiDragDropDirective,\r\n        CuiDragListDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-list-item-evaluation.component.html',\r\n    styleUrl: './checklist-block-list-item-evaluation.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationComponent implements OnInit {\r\n    private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n    private readonly cdRef = inject(ChangeDetectorRef);\r\n    private readonly cuiDialogService = inject(CuiDialogService);\r\n\r\n    private readonly isAvailableObserver = new Subject<boolean>();\r\n\r\n    protected readonly photoFormGroup = this.nonNullableFormBuilder.group({\r\n        isEnable: false,\r\n        isRequired: {\r\n            value: false,\r\n            disabled: true\r\n        }\r\n    });\r\n    protected readonly commentFormGroup = this.nonNullableFormBuilder.group({\r\n        isEnable: false,\r\n        isRequired: {\r\n            value: false,\r\n            disabled: true\r\n        }\r\n    });\r\n    protected readonly evaluationCriteriaFormArray = this.nonNullableFormBuilder.array<FormGroup>([]);\r\n\r\n    protected readonly loadingIds = signal<Record<string, boolean>>({});\r\n    protected readonly isAddButtonDisabled = signal(false);\r\n\r\n    private readonly assignee = computed(() => this.checkListItem().content.actionsAssignee![0]);\r\n    protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n        () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n    );\r\n    protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n        () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n    );\r\n\r\n    public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListEvaluationItemContent>>();\r\n\r\n    protected getPointer(currentIndex: number): NodeCheckListItemSwitchContentPointer {\r\n        return currentIndex === 0\r\n            ? NodeCheckListItemSwitchContentPointer.BEFORE\r\n            : NodeCheckListItemSwitchContentPointer.AFTER;\r\n    }\r\n\r\n    protected getTargetIndex(currentIndex: number): number {\r\n        return currentIndex === 0 ? 1 : currentIndex - 1;\r\n    }\r\n\r\n    protected onDrop(event: CuiDragDropData): void {\r\n        const { prevIndex, index } = event;\r\n\r\n        if (prevIndex === index) {\r\n            return;\r\n        }\r\n\r\n        this.moveItemInArray(this.evaluationCriteriaFormArray.controls, prevIndex, index);\r\n        const movingElementId: string = this.evaluationCriteriaFormArray.at(index).value.id;\r\n        const targetItemId: string = this.evaluationCriteriaFormArray.at(this.getTargetIndex(index)).value.id;\r\n        const pointer: NodeCheckListItemSwitchContentPointer = this.getPointer(index);\r\n\r\n        const requestBody: NodeCheckListItemSwitchContentRequestParams = {\r\n            nodeCheckListId: this.checkListItem().id,\r\n            listEvaluationId: this.assignee().id,\r\n            movingElementId,\r\n            targetItemId,\r\n            pointer\r\n        };\r\n\r\n        this.nodeCheckListApiService.updateNodeCheckListItemSwitchContent(requestBody).subscribe({\r\n            error: () => {\r\n                this.moveItemInArray(this.evaluationCriteriaFormArray.controls, index, prevIndex);\r\n                this.cdRef.markForCheck();\r\n            }\r\n        });\r\n    }\r\n\r\n    protected onAddEvaluationCriteriaItem(): void {\r\n        const evaluationItemControl = this.createEvaluationFormGroup();\r\n\r\n        this.isAddButtonDisabled.set(true);\r\n        this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n    }\r\n\r\n    protected onSaveEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n        const isNew = group.isNew.value;\r\n\r\n        if (isNew) {\r\n            this.addEvaluationCriteria(group);\r\n\r\n            return;\r\n        }\r\n\r\n        this.updateEvaluationCriteria(group);\r\n    }\r\n\r\n    protected onCancelNewEvaluationCriteria(): void {\r\n        const lastIndex = this.evaluationCriteriaFormArray.length - 1;\r\n\r\n        this.isAddButtonDisabled.set(false);\r\n        this.evaluationCriteriaFormArray.removeAt(lastIndex);\r\n    }\r\n\r\n    protected openModalDeleteEvaluationCriteria(id: string): void {\r\n        const content = ['DELETE_EVALUATION_CHECKLIST_ITEM_CONFIRMATION_TEXT'];\r\n        const criteria = this.findExistingEvaluationCriteria(id);\r\n\r\n        if (!criteria?.id) {\r\n            return;\r\n        }\r\n\r\n        this.loadingIds.update((ids) => ({ ...ids, [criteria.id]: true }));\r\n        this.cuiDialogService\r\n            .open(CuiDeleteModalComponent, {\r\n                data: {\r\n                    title: 'DELETE_EVALUATION_CHECKLIST_ITEM',\r\n                    content,\r\n                    delete: () =>\r\n                        this.nodeCheckListApiService\r\n                            .deleteEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria.id)\r\n                            .pipe(\r\n                                switchMap((checkListItem) => {\r\n                                    const index = this.evaluationCriteriaFormArray.controls.findIndex(\r\n                                        (control) => control.value.id === id\r\n                                    );\r\n\r\n                                    this.checkListBlockService.updateCheckListItem(checkListItem);\r\n                                    this.evaluationCriteriaFormArray.removeAt(index);\r\n\r\n                                    return of(null);\r\n                                })\r\n                            )\r\n                }\r\n            })\r\n            .subscribe(() => this.completeEvaluationCriteriaDeletion(criteria));\r\n    }\r\n\r\n    protected completeEvaluationCriteriaDeletion(criteria: NodeCheckListEvaluationCriteria): void {\r\n        this.loadingIds.update((ids) => {\r\n            delete ids[criteria.id];\r\n\r\n            return { ...ids };\r\n        });\r\n    }\r\n\r\n    private onCheckListActionChanged(actionId: string, actionContent: NodeCheckListItemContentAction): void {\r\n        const requestData = {\r\n            nodeCheckListId: this.checkListItem().id,\r\n            assigneeActionType: 'ASSIGN',\r\n            actionId,\r\n            contentId: actionContent.id,\r\n            isEnable: actionContent.isEnable,\r\n            isRequired: actionContent.isRequired\r\n        };\r\n\r\n        this.nodeCheckListApiService.updateNodeCheckListItemActionContent(requestData).subscribe((checkListItem) => {\r\n            this.checkListBlockService.updateCheckListItem(checkListItem);\r\n        });\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initEvaluationFormValues();\r\n    }\r\n\r\n    private initEvaluationFormValues(): void {\r\n        this.evaluationCriteriaFormArray.clear();\r\n        this.photoFormGroup.patchValue({\r\n            isEnable: this.attachmentPhotoAction().isEnable,\r\n            isRequired: this.attachmentPhotoAction().isRequired\r\n        });\r\n        this.commentFormGroup.patchValue({\r\n            isEnable: this.textAreaAction().isEnable,\r\n            isRequired: this.textAreaAction().isRequired\r\n        });\r\n\r\n        if (this.attachmentPhotoAction().isEnable) {\r\n            this.photoFormGroup.controls.isRequired.enable();\r\n        }\r\n\r\n        if (this.textAreaAction().isEnable) {\r\n            this.commentFormGroup.controls.isRequired.enable();\r\n        }\r\n\r\n        this.initActionFormSegmentsSubscriptions();\r\n\r\n        this.assignee().acceptanceCriteriaEvaluations.forEach((evaluationCriteria: NodeCheckListEvaluationCriteria) => {\r\n            const evaluationItemControl = this.createEvaluationFormGroup({\r\n                isNew: false,\r\n                criteria: evaluationCriteria.criteria,\r\n                evaluation: evaluationCriteria.evaluation,\r\n                id: evaluationCriteria.id\r\n            });\r\n\r\n            this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n        });\r\n    }\r\n\r\n    private initActionFormSegmentsSubscriptions(): void {\r\n        this.initPhotoGroupSubscription();\r\n        this.initCommentGroupSubscription();\r\n    }\r\n\r\n    private initPhotoGroupSubscription(): void {\r\n        this.photoFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n            if (!value.isEnable) {\r\n                this.photoFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n                this.photoFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n                this.onCheckListActionChanged(this.assignee().id, {\r\n                    id: this.attachmentPhotoAction().id,\r\n                    contentActionType: this.attachmentPhotoAction().contentActionType,\r\n                    ...this.photoFormGroup.getRawValue()\r\n                });\r\n\r\n                return;\r\n            }\r\n\r\n            this.photoFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n            this.onCheckListActionChanged(this.assignee().id, {\r\n                id: this.attachmentPhotoAction().id,\r\n                contentActionType: this.attachmentPhotoAction().contentActionType,\r\n                ...this.photoFormGroup.getRawValue()\r\n            });\r\n        });\r\n    }\r\n\r\n    private initCommentGroupSubscription(): void {\r\n        this.commentFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n            if (!value.isEnable) {\r\n                this.commentFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n                this.commentFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n                this.onCheckListActionChanged(this.assignee().id, {\r\n                    id: this.textAreaAction().id,\r\n                    contentActionType: this.textAreaAction().contentActionType,\r\n                    ...this.commentFormGroup.getRawValue()\r\n                });\r\n\r\n                return;\r\n            }\r\n\r\n            this.commentFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n            this.onCheckListActionChanged(this.assignee().id, {\r\n                id: this.textAreaAction().id,\r\n                contentActionType: this.textAreaAction().contentActionType,\r\n                ...this.commentFormGroup.getRawValue()\r\n            });\r\n        });\r\n    }\r\n\r\n    private updateEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n        const evaluation = group.evaluation.value;\r\n        const criteria = group.criteria.value;\r\n        const id = group.id.value;\r\n\r\n        this.nodeCheckListApiService\r\n            .updateEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, id, criteria, evaluation)\r\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n    }\r\n\r\n    private addEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n        const evaluation = group.evaluation.value;\r\n        const criteria = group.criteria.value;\r\n\r\n        this.nodeCheckListApiService\r\n            .addEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria, evaluation)\r\n            .pipe(finalize(() => this.isAddButtonDisabled.set(false)))\r\n            .subscribe((checkListItem) => this.updateCreatedEvaluationCriteria(checkListItem));\r\n    }\r\n\r\n    private updateCreatedEvaluationCriteria(\r\n        checkListItem: NodeCheckListItem<NodeCheckListEvaluationItemContent>\r\n    ): void {\r\n        const acceptanceCriteriaEvaluations = checkListItem.content.actionsAssignee![0].acceptanceCriteriaEvaluations;\r\n        const id = acceptanceCriteriaEvaluations.at(-1)?.id;\r\n        const control = this.evaluationCriteriaFormArray.controls.at(-1)?.getRawValue();\r\n        const createdControl = this.createEvaluationFormGroup({ ...control, id, isNew: false });\r\n\r\n        this.evaluationCriteriaFormArray.removeAt(-1);\r\n        this.evaluationCriteriaFormArray.push(createdControl);\r\n        this.checkListBlockService.updateCheckListItem(checkListItem);\r\n    }\r\n\r\n    private createEvaluationFormGroup({\r\n        id,\r\n        criteria = '',\r\n        evaluation = null,\r\n        isNew = true\r\n    }: CuiEvaluationCriteriaElementData = {}): FormGroup {\r\n        return this.nonNullableFormBuilder.group({\r\n            id: [id],\r\n            criteria: [criteria, cuiCreateDefaultValidators({ maxLength: 500 })],\r\n            evaluation: [evaluation, [Validators.required]],\r\n            isNew: [isNew]\r\n        });\r\n    }\r\n\r\n    private findExistingEvaluationCriteria(id: string): CuiNullable<NodeCheckListEvaluationCriteria> {\r\n        return (\r\n            this.assignee().acceptanceCriteriaEvaluations.find(\r\n                (evaluationCriteria: NodeCheckListEvaluationCriteria) => evaluationCriteria.id === id\r\n            ) || null\r\n        );\r\n    }\r\n\r\n    private moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\r\n        if (fromIndex === toIndex) {\r\n            return;\r\n        }\r\n\r\n        const item = array[fromIndex];\r\n\r\n        array.splice(fromIndex, 1);\r\n        array.splice(toIndex, 0, item);\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <div class=\"action\">\r\n        <div class=\"action__inputs-container\">\r\n            <div\r\n                class=\"action__input\"\r\n                [formGroup]=\"photoFormGroup\"\r\n            >\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiCheckbox\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isEnable\"\r\n                    />\r\n                    {{ t('PHOTO') }}\r\n                </label>\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiToggle\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isRequired\"\r\n                    />\r\n                    {{ t('REQUIRED') }}\r\n                </label>\r\n            </div>\r\n            <div\r\n                class=\"action__input\"\r\n                [formGroup]=\"commentFormGroup\"\r\n            >\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiCheckbox\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isEnable\"\r\n                    />\r\n                    {{ t('COMMENT') }}\r\n                </label>\r\n                <label cuiLabel>\r\n                    <input\r\n                        cuiToggle\r\n                        type=\"checkbox\"\r\n                        formControlName=\"isRequired\"\r\n                    />\r\n                    {{ t('REQUIRED') }}\r\n                </label>\r\n            </div>\r\n        </div>\r\n        <div class=\"action__criteria-title-container\">\r\n            <label\r\n                cuiLabel\r\n                [isRequired]=\"true\"\r\n                for=\"evaluationCriteria\"\r\n            >\r\n                {{ t('EVALUATION_CRITERIA') }}\r\n            </label>\r\n            <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\r\n        </div>\r\n        <ul\r\n            cuiDragList\r\n            class=\"list\"\r\n        >\r\n            @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\r\n                <li\r\n                    cuiChecklistBlockListItemEvaluationCriteria\r\n                    [index]=\"index + 1\"\r\n                    cuiDragDrop\r\n                    [disabled]=\"isAddButtonDisabled()\"\r\n                    (elementDragged)=\"onDrop($event)\"\r\n                    [criteriaGroup]=\"control\"\r\n                    [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\r\n                    [loadingIds]=\"loadingIds()\"\r\n                    (saveClicked)=\"onSaveEvaluationCriteria($event)\"\r\n                    (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\r\n                    (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\r\n                ></li>\r\n            } @empty {\r\n                <li\r\n                    cuiEmptyState\r\n                    [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\r\n                ></li>\r\n            }\r\n        </ul>\r\n        <div class=\"action__footer\">\r\n            <button\r\n                cuiButton\r\n                size=\"xxs\"\r\n                appearance=\"flat\"\r\n                icon=\"cuiIconPlus\"\r\n                type=\"button\"\r\n                [disabled]=\"isAddButtonDisabled()\"\r\n                (click)=\"onAddEvaluationCriteriaItem()\"\r\n            >\r\n                {{ t('NEW_OPTION') }}\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiTreeStructApiService, CuiTreeStructNavigatorApiService, MovingType } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, switchMap } from 'rxjs';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\nimport { CuiDragDropData, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiEmptyStateComponent } from '../../../../../components';\r\nimport { CuiEditorConfig } from '../../../../../editor';\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\nimport { CuiCheckListBlockListItemActionWithVerificationComponent } from '../checklist-block-list-item-action-with-verification';\r\nimport { CuiCheckListBlockListItemActionWithoutVerificationComponent } from '../checklist-block-list-item-action-without-verification';\r\nimport { CuiChecklistBlockListItemContainerComponent } from '../checklist-block-list-item-container';\r\nimport { CuiCheckListBlockListItemEvaluationComponent } from '../checklist-block-list-item-evaluation';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block-list',\r\n    imports: [\r\n        CuiChecklistBlockListItemContainerComponent,\r\n        CuiButtonModule,\r\n        CuiContextMenuModule,\r\n        CuiLetDirective,\r\n        CuiEmptyStateComponent,\r\n        NgTemplateOutlet,\r\n        TranslocoDirective,\r\n        CuiDragDropDirective,\r\n        CuiHandleScrollDirective,\r\n        CuiDragListDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './checklist-block-list.component.html',\r\n    styleUrl: './checklist-block-list.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListComponent {\r\n    private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n    protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n    protected readonly isDragAvailable = this.checkListBlockService.isDragAvailable;\r\n    protected readonly checkListItemActionWithVerification = CuiCheckListBlockListItemActionWithVerificationComponent;\r\n    protected readonly checkListItemActionWithoutVerification =\r\n        CuiCheckListBlockListItemActionWithoutVerificationComponent;\r\n    protected readonly checkListItemEvaluation = CuiCheckListBlockListItemEvaluationComponent;\r\n\r\n    protected readonly componentId = this.checkListBlockService.componentId;\r\n    protected readonly isLoading = signal<boolean>(false);\r\n    protected readonly isDragEnabled = computed(() => !this.isLoading() && this.isDragAvailable());\r\n    protected readonly checkListItemsWithComponents = computed<CuiCheckListBlockItem[]>(() => {\r\n        if (!this.checkListItems()) {\r\n            return [];\r\n        }\r\n\r\n        return this.checkListItems()!.map((element) => ({\r\n            id: element.id,\r\n            content: element,\r\n            component: this.getNodeCheckListItemComponent(element)\r\n        }));\r\n    });\r\n\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    protected moveTreeStruct(data: CuiDragDropData, element: CuiCheckListBlockItem): void {\r\n        const { targetElement, pointer, index, prevIndex } = data;\r\n\r\n        if (prevIndex === index) {\r\n            return;\r\n        }\r\n\r\n        this.isLoading.set(true);\r\n        this.treeStructNavigatorApiService\r\n            .moveElement({\r\n                type: MovingType.TARGET_NODE,\r\n                targetItemId: targetElement.dataset['id']!,\r\n                treeStructTargetItemId: targetElement.dataset['parentId']!,\r\n                pointer,\r\n                movableItemId: element.id,\r\n                treeStructMovableItemId: this.componentId()!\r\n            })\r\n            .pipe(\r\n                switchMap(() =>\r\n                    this.treeStructApiService.getById<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n                        this.componentId()!\r\n                    )\r\n                ),\r\n                finalize(() => this.isLoading.set(false))\r\n            )\r\n            .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n    }\r\n\r\n    private getNodeCheckListItemComponent(item: NodeCheckListItem<NodeCheckListItemContentType>): Type<unknown> {\r\n        if (item.content.actionsApprove !== null) {\r\n            return this.checkListItemActionWithVerification;\r\n        }\r\n\r\n        if ('acceptanceCriteriaEvaluations' in item.content.actionsAssignee![0]) {\r\n            return this.checkListItemEvaluation;\r\n        }\r\n\r\n        return this.checkListItemActionWithoutVerification;\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <ng-container *cuiLet=\"checkListItemsWithComponents() as checkListItemsWithComponents\">\r\n        @if (checkListItemsWithComponents?.length) {\r\n            <ul\r\n                class=\"list__items\"\r\n                #list\r\n                cuiDragList\r\n            >\r\n                <ng-container *ngTemplateOutlet=\"items; context: { $implicit: checkListItemsWithComponents }\" />\r\n                <ng-template\r\n                    #items\r\n                    let-items\r\n                    let-isHidden=\"isHidden\"\r\n                >\r\n                    @for (item of items; track item.id; let index = $index) {\r\n                        <li\r\n                            [attr.data-id]=\"item.content.id\"\r\n                            [attr.data-parent-id]=\"componentId()\"\r\n                            [hidden]=\"isHidden\"\r\n                            cuiHandleScroll\r\n                            cuiDragDrop\r\n                            class=\"list__item\"\r\n                            [class.list__item_disabled]=\"isLoading()\"\r\n                            (elementDragged)=\"moveTreeStruct($event, item)\"\r\n                        >\r\n                            <cui-checklist-block-list-item-container\r\n                                [checkListBlockItem]=\"item\"\r\n                                [index]=\"index + 1\"\r\n                                [config]=\"config()\"\r\n                            />\r\n                        </li>\r\n                    }\r\n                </ng-template>\r\n            </ul>\r\n        } @else {\r\n            <cui-empty-state [subtitle]=\"t('NO_CHECKLIST_ITEMS')\" />\r\n        }\r\n    </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CuiElementDirective, CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\nimport {} from '@cuby-ui/api';\r\nimport {\r\n    CuiNodeChecklistApiService,\r\n    CuiTreeStructApiService,\r\n    NodeCheckListItem,\r\n    NodeCheckListItemContentType\r\n} from '@cuby-ui/api';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiContentWrapperComponent } from '../../../components';\r\nimport { CuiCheckListBlockItemType } from './checklist-block.options';\r\nimport { CuiChecklistBlockListComponent } from './components';\r\nimport { CuiCheckListBlockService } from './services';\r\nimport { CuiContextMenuItem } from '../../../interfaces';\r\nimport { CuiEditorConfig } from '../../../editor/interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-checklist-block, [cuiCheckListBlock]',\r\n    imports: [\r\n        CuiChecklistBlockListComponent,\r\n        CuiContentWrapperComponent,\r\n        CuiButtonModule,\r\n        CuiContextMenuModule,\r\n        CuiElementDirective,\r\n        CuiLetDirective,\r\n        TranslocoDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './checklist-block.component.html',\r\n    styleUrls: ['./checklist-block.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CuiCheckListBlockService]\r\n})\r\nexport class CuiChecklistBlockComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n    protected readonly CHECKLIST_BLOCK_SELECT_OPTIONS: CuiContextMenuItem[] = [\r\n        {\r\n            label: this.translocoService.translate('ASSIGNEE_APPROVAL'),\r\n            command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITHOUT_VERIFICATION)\r\n        },\r\n        {\r\n            label: this.translocoService.translate('DOUBLE_CHECK_APPROVAL'),\r\n            command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITH_VERIFICATION)\r\n        },\r\n        {\r\n            label: this.translocoService.translate('EVALUATION_OPTIONS'),\r\n            command: () => this.addCheckListItem(CuiCheckListBlockItemType.EVALUATION)\r\n        }\r\n    ];\r\n\r\n    protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n    protected readonly isLoading = signal<boolean>(false);\r\n\r\n    public readonly componentId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    constructor() {\r\n        this.initNodeCheckListBlock();\r\n    }\r\n\r\n    private initNodeCheckListBlock(): void {\r\n        effect(\r\n            () => {\r\n                this.checkListBlockService.setComponentId(this.componentId());\r\n                this.treeStructApiService\r\n                    .getById<NodeCheckListItem<NodeCheckListItemContentType>>(this.componentId())\r\n                    .pipe(takeUntilDestroyed(this.destroyRef))\r\n                    .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private addCheckListItem(type: CuiCheckListBlockItemType): void {\r\n        this.isLoading.set(true);\r\n        this.nodeCheckListApiService\r\n            .addNodeCheckListItem({\r\n                treeStructContainerCheckListId: this.componentId(),\r\n                title: 'New checklist item',\r\n                type_operations: type\r\n            })\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroyRef),\r\n                finalize(() => this.isLoading.set(false))\r\n            )\r\n            .subscribe((checkListItem) => this.checkListBlockService.addCheckListItem(checkListItem));\r\n    }\r\n}\r\n","<cui-content-wrapper\r\n    *transloco=\"let t\"\r\n    backgroundColor=\"var(--cui-base-10)\"\r\n    [gap]=\"16\"\r\n>\r\n    <ng-container *cuiLet=\"checkListItems() as checkListItems\">\r\n        <header class=\"header\">\r\n            <h2 class=\"heading\">{{ t('CHECKLIST') }}</h2>\r\n\r\n            @if (checkListItems) {\r\n                <span class=\"item\">{{ checkListItems?.length }} {{ t('ITEM_VARIANT') }}</span>\r\n            }\r\n        </header>\r\n        <cui-content-wrapper>\r\n            <cui-checklist-block-list [config]=\"config()\" />\r\n        </cui-content-wrapper>\r\n        <div>\r\n            <button\r\n                #actionButton=\"elementRef\"\r\n                cuiElement\r\n                cuiButton\r\n                type=\"button\"\r\n                appearance=\"flat\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconPlus\"\r\n            >\r\n                {{ t('ADD_NEW_ITEM') }}\r\n            </button>\r\n            <cui-context-menu\r\n                [items]=\"CHECKLIST_BLOCK_SELECT_OPTIONS\"\r\n                [target]=\"actionButton.nativeElement\"\r\n            />\r\n        </div>\r\n    </ng-container>\r\n</cui-content-wrapper>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiFrameApiService, Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { Subscription } from 'rxjs';\r\n\r\nimport type { CuiEditorConfig } from '../../../editor';\r\nimport { CuiEditorComponent } from '../../../editor';\r\nimport { CuiEmptyStateComponent } from '../../../components';\r\n\r\nimport { CuiImageUrl } from './framer-preview.options';\r\n\r\n@Component({\r\n    selector: 'cui-framer-preview',\r\n    imports: [TranslocoDirective, CuiEditorComponent, CuiEmptyStateComponent],\r\n    standalone: true,\r\n    templateUrl: './framer-preview.component.html',\r\n    styleUrl: './framer-preview.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFramerPreviewComponent {\r\n    private readonly hostElement = inject(ElementRef).nativeElement;\r\n    private readonly frameApiService = inject(CuiFrameApiService);\r\n\r\n    private subscription!: Subscription;\r\n\r\n    protected isVideo = false;\r\n    protected editorConfig!: CuiEditorConfig;\r\n\r\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\r\n    protected readonly thumbnailUrl = signal<CuiNullable<CuiImageUrl>>(null);\r\n\r\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\r\n\r\n    public readonly framerId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n    public readonly editorResourceUrl = input.required<string>();\r\n    public readonly title = input<string>();\r\n\r\n    constructor() {\r\n        this.initConfigEffect();\r\n        this.initFramerIdEffect();\r\n    }\r\n\r\n    private initConfigEffect(): void {\r\n        effect(\r\n            () => {\r\n                this.editorConfig = {\r\n                    element: this.hostElement,\r\n                    ...this.config(),\r\n                    readOnly: true\r\n                };\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private initFramerIdEffect(): void {\r\n        effect(\r\n            () => {\r\n                const framerId = this.framerId();\r\n\r\n                if (!framerId) {\r\n                    return;\r\n                }\r\n\r\n                this.subscription?.unsubscribe();\r\n                this.initFrameFragments();\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private initFrameFragments(): void {\r\n        const frameId = this.framerId();\r\n\r\n        this.jText.set(null);\r\n        this.thumbnailUrl.set(null);\r\n\r\n        if (!frameId) {\r\n            return;\r\n        }\r\n\r\n        const fragmentActions = {\r\n            J_TEXT: (fragment: Fragment): void => {\r\n                this.jText.set(fragment as JTextFragment);\r\n            },\r\n            RESOURCE_FILE: (fragment: Fragment): void => {\r\n                this.setResourceFile(fragment as ResourceFragment);\r\n            }\r\n        };\r\n\r\n        this.subscription = this.frameApiService\r\n            .getFrame(frameId, this.editorConfig.requestOptions)\r\n            .subscribe((frame) => {\r\n                frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\r\n            });\r\n    }\r\n\r\n    private setResourceFile(resource: ResourceFragment): void {\r\n        const url = `${this.editorResourceUrl()}/${resource.fileId}`;\r\n\r\n        this.isVideo = resource?.name?.split('.').pop() === 'mp4';\r\n\r\n        if (!url) {\r\n            return;\r\n        }\r\n\r\n        this.thumbnailUrl.set({ src: resource.fileId && url, name: resource.name || resource.type });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (jText()) {\r\n        @if (!isDescriptionEmpty()) {\r\n            @let url = thumbnailUrl();\r\n\r\n            @if (url?.src; as src) {\r\n                @if (isVideo) {\r\n                    <video\r\n                        class=\"thumbnail\"\r\n                        [src]=\"src\"\r\n                        controls\r\n                    ></video>\r\n                } @else {\r\n                    <img\r\n                        class=\"thumbnail\"\r\n                        [src]=\"src\"\r\n                        [alt]=\"url?.name\"\r\n                    />\r\n                }\r\n            }\r\n\r\n            <div class=\"content\">\r\n                @if (title(); as title) {\r\n                    <div class=\"title\">{{ title }}</div>\r\n                }\r\n\r\n                @if (jText()?.id; as id) {\r\n                    <div class=\"wrapper\">\r\n                        <cui-editor\r\n                            class=\"editor\"\r\n                            [editorApiId]=\"id\"\r\n                            [config]=\"editorConfig\"\r\n                        />\r\n                    </div>\r\n                }\r\n            </div>\r\n        } @else {\r\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\r\n        }\r\n    }\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\r\nimport type { CuiApiContext, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { FilesUploader, takeCaptureFromVideo } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\n\r\nimport { CuiAlertService, CuiButtonModule } from '../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-utility-thumbnail',\r\n    imports: [TranslocoDirective, CuiButtonModule],\r\n    standalone: true,\r\n    templateUrl: './utility-thumbnail.component.html',\r\n    styleUrl: './utility-thumbnail.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityThumbnailComponent {\r\n    private readonly cuiAlertService = inject(CuiAlertService);\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly frameApiService = inject(CuiFrameApiService);\r\n\r\n    protected readonly MAX_FILE_SIZE = 20971520;\r\n\r\n    public readonly context = input<CuiApiContext>();\r\n\r\n    protected readonly thumbnailUrl = computed(() => {\r\n        const thumbnail = this.thumbnail();\r\n\r\n        if (!thumbnail?.resource) {\r\n            return null;\r\n        }\r\n\r\n        return thumbnail.resource;\r\n    });\r\n    protected readonly uploadButtonName = computed(() => {\r\n        const thumbnail = this.thumbnail();\r\n\r\n        if (thumbnail?.name) {\r\n            return this.translocoService.translate('REPLACE_FILE');\r\n        }\r\n\r\n        return this.translocoService.translate('UPLOAD_FILE');\r\n    });\r\n\r\n    public readonly thumbnail = model.required<CuiNullable<ResourceFragment>>();\r\n    public readonly framerId = input.required<string>();\r\n\r\n    protected onSelectFile(): void {\r\n        const types = 'image/jpg, image/jpeg, image/png, video/mp4';\r\n\r\n        FilesUploader.uploadFile(types).then((files) => this.getFile(files));\r\n    }\r\n\r\n    protected onRemoveThumbnail(): void {\r\n        const frameId = this.framerId();\r\n        const fragmentId = this.thumbnail()?.id;\r\n\r\n        if (!frameId || !fragmentId) {\r\n            return;\r\n        }\r\n\r\n        this.frameApiService.deleteResource(frameId, fragmentId, this.context()).subscribe(() => {\r\n            this.thumbnail.update((prev) => ({ ...prev!, fileId: null, name: null, resource: null }));\r\n        });\r\n    }\r\n\r\n    private getFile(files: FileList): void {\r\n        const file = files.item(0);\r\n\r\n        if (!file) {\r\n            return;\r\n        }\r\n\r\n        if (file.size > this.MAX_FILE_SIZE) {\r\n            this.cuiAlertService\r\n                .open(this.translocoService.translate('INVALID_FILE_SIZE'), {\r\n                    status: 'error'\r\n                })\r\n                .subscribe();\r\n\r\n            return;\r\n        }\r\n\r\n        const isVideo = file.name.split('.').at(-1) === 'mp4';\r\n        const url = URL.createObjectURL(file);\r\n\r\n        if (isVideo) {\r\n            this.getCaptureFromVideo(url, file);\r\n        } else {\r\n            this.thumbnail.update((prev) => ({ ...prev!, name: file.name, resource: url }));\r\n        }\r\n\r\n        this.uploadFile(file);\r\n    }\r\n\r\n    private uploadFile(file: File): void {\r\n        const frameId = this.framerId();\r\n        const fragmentId = this.thumbnail()?.id;\r\n\r\n        if (!frameId || !fragmentId) {\r\n            return;\r\n        }\r\n\r\n        const formData = new FormData();\r\n        formData.append('resource', file);\r\n\r\n        this.frameApiService.uploadResource(formData, frameId, fragmentId, this.context()).subscribe();\r\n    }\r\n\r\n    private getCaptureFromVideo(url: string, file?: File): void {\r\n        takeCaptureFromVideo(url).then((capture) => {\r\n            this.thumbnail.update((prev) => ({\r\n                ...prev!,\r\n                name: (file?.name || prev?.name)!,\r\n                resource: capture\r\n            }));\r\n        });\r\n    }\r\n}\r\n","<section\r\n    *transloco=\"let t\"\r\n    class=\"file\"\r\n>\r\n    <span class=\"title\">{{ t('THUMBNAIL') }}</span>\r\n    <div class=\"upload\">\r\n        <div class=\"upload-file\">\r\n            @if (thumbnail()?.name; as fileId) {\r\n                <div class=\"image\">\r\n                    <span class=\"image__name\">{{ thumbnail()?.name }}</span>\r\n                    <!-- TODO: ngSrc -->\r\n                    <img\r\n                        class=\"image__view\"\r\n                        [src]=\"thumbnailUrl()\"\r\n                        height=\"120\"\r\n                        width=\"184\"\r\n                        alt=\"Thumbnail\"\r\n                    />\r\n                </div>\r\n            }\r\n            <div class=\"info\">\r\n                <button\r\n                    type=\"button\"\r\n                    cuiButton\r\n                    appearance=\"outlined-gray\"\r\n                    size=\"xxs\"\r\n                    icon=\"cuiIconUpload\"\r\n                    (click)=\"onSelectFile()\"\r\n                >\r\n                    {{ uploadButtonName() }}\r\n                </button>\r\n                @if (thumbnail()?.name) {\r\n                    <button\r\n                        class=\"remove-button\"\r\n                        cuiButton\r\n                        appearance=\"link\"\r\n                        size=\"sm\"\r\n                        type=\"button\"\r\n                        (click)=\"onRemoveThumbnail()\"\r\n                    >\r\n                        {{ t('REMOVE') }}\r\n                    </button>\r\n                }\r\n\r\n                <span class=\"accepted\">{{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB</span>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</section>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\r\nimport type { ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';\r\n\r\nimport {\r\n    CuiAccordionModule,\r\n    CuiButtonModule,\r\n    CuiFormFieldModule,\r\n    CuiHintModule,\r\n    CuiInputModule,\r\n    CuiLabelModule\r\n} from '../../../components';\r\nimport { cuiCreateDefaultValidators } from '../../../utils';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport type { CuiEditorConfig } from '../../../editor';\r\nimport { CuiEditorBlockComponent } from '../../../editor';\r\nimport { CuiUtilityThumbnailComponent } from '../utility-thumbnail';\r\n\r\nimport type { CuiCriterionFormGroup, CuiCriterionFormValues } from './criterion-info-form.options';\r\n\r\n@Component({\r\n    selector: 'cui-criterion-info-form',\r\n    imports: [\r\n        CuiAccordionModule,\r\n        CuiButtonModule,\r\n        CuiEditorBlockComponent,\r\n        CuiFormFieldModule,\r\n        CuiGeneralControlErrorHintComponent,\r\n        CuiHintModule,\r\n        CuiInputModule,\r\n        CuiLabelModule,\r\n        CuiUtilityThumbnailComponent,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './criterion-info-form.component.html',\r\n    styleUrl: './criterion-info-form.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCriterionInfoFormComponent {\r\n    private readonly destroy = inject(DestroyRef);\r\n    private readonly formBuilder = inject(NonNullableFormBuilder);\r\n    private readonly frameApiService = inject(CuiFrameApiService);\r\n    private readonly resourceApiService = inject(CuiResourceApiService);\r\n    private readonly cuiIdService = inject(CuiIdService);\r\n\r\n    protected readonly CONTROL_DELAY = 500;\r\n\r\n    protected readonly titleId = this.cuiIdService.generate();\r\n    protected readonly descriptionId = this.cuiIdService.generate();\r\n    protected readonly form = this.formBuilder.group<CuiCriterionFormGroup>({\r\n        title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\r\n        description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\r\n    });\r\n\r\n    protected heading: CuiNullable<string> = null;\r\n\r\n    protected readonly isDescriptionEmpty = signal(false);\r\n    protected readonly editorId = signal<CuiNullable<string>>(null);\r\n    protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\r\n\r\n    public readonly title = input.required<string>();\r\n    public readonly description = input.required<string>();\r\n    public readonly framerId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    public readonly formChanged = output<Partial<CuiCriterionFormValues>>();\r\n    public readonly isFormValidChanged = output<boolean>();\r\n\r\n    protected get controls(): CuiCriterionFormGroup {\r\n        return this.form.controls;\r\n    }\r\n\r\n    protected get isTitleError(): boolean {\r\n        return this.controls.title.invalid && this.controls.title.dirty;\r\n    }\r\n\r\n    protected get isDescriptionError(): boolean {\r\n        return this.controls.description.invalid && this.controls.description.dirty;\r\n    }\r\n\r\n    constructor() {\r\n        this.initUtilityEffect();\r\n    }\r\n\r\n    protected onEditorEmpty(isEmpty: boolean): void {\r\n        this.isDescriptionEmpty.set(isEmpty);\r\n        this.isFormValidChanged.emit(this.checkFormValidation());\r\n    }\r\n\r\n    private initUtilityEffect(): void {\r\n        const effectRef = effect(() => {\r\n            const title = this.title();\r\n\r\n            if (!title) {\r\n                return;\r\n            }\r\n\r\n            this.initFormSubscriptions();\r\n            this.initFrameFragments();\r\n            effectRef.destroy();\r\n        });\r\n    }\r\n\r\n    private initFormSubscriptions(): void {\r\n        this.form.setValue({ title: this.title(), description: this.description() }, { emitEvent: false });\r\n\r\n        this.form.statusChanges\r\n            .pipe(takeUntilDestroyed(this.destroy))\r\n            .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\r\n\r\n        this.form.valueChanges\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroy),\r\n                startWith(this.form.value),\r\n                pairwise(),\r\n                debounceTime(this.CONTROL_DELAY),\r\n                map(([prev, current]) => this.compareFormValues([prev, current]))\r\n            )\r\n            .subscribe((value) => {\r\n                if (!Object.keys(value).length) {\r\n                    return;\r\n                }\r\n\r\n                this.formChanged.emit(value);\r\n            });\r\n    }\r\n\r\n    private initFrameFragments(): void {\r\n        const frameId = this.framerId();\r\n\r\n        if (!frameId) {\r\n            return;\r\n        }\r\n\r\n        this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\r\n            frame.fragments.forEach((fragment) => {\r\n                if (fragment.type === FragmentType.jText) {\r\n                    this.editorId.set(fragment?.id);\r\n                }\r\n\r\n                if (fragment.type === FragmentType.resourceFile) {\r\n                    this.setResourceFile(fragment as ResourceFragment);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    private compareFormValues([\r\n        prevGroup,\r\n        currentGruop\r\n    ]: Partial<CuiCriterionFormValues>[]): Partial<CuiCriterionFormValues> {\r\n        const keys = Object.keys(currentGruop) as (keyof CuiCriterionFormValues)[];\r\n        const changedFields: Record<string, unknown> = {};\r\n\r\n        keys.forEach((key) => {\r\n            const prev = prevGroup[key];\r\n            const current = currentGruop[key];\r\n\r\n            if (prev === current || this.controls[key].invalid) {\r\n                return;\r\n            }\r\n\r\n            changedFields[key] = current;\r\n        });\r\n\r\n        return changedFields;\r\n    }\r\n\r\n    private setResourceFile(resource: ResourceFragment): void {\r\n        if (!resource.fileId) {\r\n            this.thumbnail.set({ ...resource });\r\n\r\n            return;\r\n        }\r\n\r\n        this.resourceApiService.get(resource.fileId, this.config().requestOptions)\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroy),\r\n                map((url) => URL.createObjectURL(url))\r\n            )\r\n            .subscribe((url) => {\r\n                this.thumbnail.set({ ...resource, resource: url });\r\n\r\n                if (!url || resource?.name?.split('.').pop() !== 'mp4') {\r\n                    return;\r\n                }\r\n\r\n                this.getCaptureFromVideo(url);\r\n            });\r\n    }\r\n\r\n    private getCaptureFromVideo(url: string, file?: File): void {\r\n        takeCaptureFromVideo(url).then((capture) => {\r\n            this.thumbnail.update((prev) => ({\r\n                ...prev!,\r\n                name: (file?.name ?? prev?.name)!,\r\n                resource: capture\r\n            }));\r\n        });\r\n    }\r\n\r\n    private checkFormValidation(): boolean {\r\n        return !this.isDescriptionEmpty() && !this.form.invalid;\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <section class=\"content\">\r\n        <cui-form-field>\r\n            <label\r\n                cuiLabel\r\n                [isRequired]=\"true\"\r\n                [for]=\"titleId\"\r\n            >\r\n                {{ t('TITLE') }}\r\n            </label>\r\n\r\n            <cui-input-text\r\n                [cuiTextFieldId]=\"titleId\"\r\n                [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\r\n                [cuiTextFieldIsError]=\"isTitleError\"\r\n                [formControl]=\"form.controls.title\"\r\n            />\r\n\r\n            @if (isTitleError) {\r\n                <cui-general-control-error-hint\r\n                    [control]=\"form.controls.title\"\r\n                    [isVisible]=\"true\"\r\n                />\r\n            }\r\n        </cui-form-field>\r\n\r\n        <cui-form-field>\r\n            <label\r\n                cuiLabel\r\n                [isRequired]=\"true\"\r\n                [for]=\"descriptionId\"\r\n            >\r\n                {{ t('SHORT_DESCRIPTION') }}\r\n            </label>\r\n\r\n            <cui-input-text\r\n                [cuiTextFieldId]=\"descriptionId\"\r\n                cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\r\n                [cuiTextFieldIsError]=\"isDescriptionError\"\r\n                [formControl]=\"form.controls.description\"\r\n            />\r\n\r\n            @if (isDescriptionError) {\r\n                <cui-general-control-error-hint\r\n                    [control]=\"form.controls.description\"\r\n                    [isVisible]=\"true\"\r\n                />\r\n            }\r\n        </cui-form-field>\r\n\r\n\r\n        <cui-utility-thumbnail\r\n            [context]=\"config().requestOptions\"\r\n            [framerId]=\"framerId()\"\r\n            [(thumbnail)]=\"thumbnail\"\r\n        />\r\n\r\n        @if (editorId(); as editorId) {\r\n            <cui-editor-block\r\n                [title]=\"form.controls.title.value || title()\"\r\n                [config]=\"config()\"\r\n                [editorId]=\"editorId\"\r\n                [required]=\"true\"\r\n                class=\"editor\"\r\n                (editorEmpty)=\"onEditorEmpty($event)\"\r\n            />\r\n        }\r\n    </section>\r\n</ng-container>\r\n","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport type { Instruction, StorageObject, Criterion, CuiApiContext } from '@cuby-ui/api';\r\n\r\nexport const UTILITY_MODAL_SERVICE_TOKEN = new InjectionToken<UtilityModalService<UtilityElement>>(\r\n    'UTILITY_MODAL_SERVICE_TOKEN'\r\n);\r\n\r\nexport interface UtilityModalService<T extends UtilityElement> {\r\n    createUtility(id: string): Observable<StorageObject<T>>;\r\n    changeTitle(utilityId: string, title: string, context?: CuiApiContext): Observable<void>;\r\n    changeDescription?(utilityId: string, shortDescription: string, context?: CuiApiContext): Observable<void>;\r\n    unbindUtility(id: string): Observable<StorageObject<T>>;\r\n    deleteUtility(utility: StorageObject<T>): Observable<void>;\r\n}\r\n\r\nexport type UtilityElement = Instruction | Criterion;\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { StorageObject } from '@cuby-ui/api';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../../components';\r\nimport { CuiLoaderComponent } from '../../../loader';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement } from '../../utility-modal.options';\r\n\r\n@Component({\r\n    selector: 'cui-utility-modal-create',\r\n    imports: [CuiButtonModule, CuiLoaderComponent, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\r\n    standalone: true,\r\n    templateUrl: './utility-modal-create.component.html',\r\n    styleUrl: './utility-modal-create.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityModalCreateComponent implements OnInit, OnDestroy {\r\n    private readonly window = inject(CUI_WINDOW);\r\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly utilityModalService = inject(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n    private readonly prevUtility = this.cuiDialogContext.data.utility;\r\n\r\n    protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n    protected readonly tools = this.cuiDialogContext.data.tools;\r\n    protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n    private readonly _utility = computed(() => signal(this.initialUtility()));\r\n\r\n    protected readonly isFormValid = signal(false);\r\n    protected readonly utility = computed(() => this._utility()());\r\n\r\n    public readonly initialUtility = input.required<StorageObject<UtilityElement>>();\r\n\r\n    public ngOnInit(): void {\r\n        this.initWindowUnloadEvent();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.window.onbeforeunload = null;\r\n    }\r\n\r\n    protected onSave(): void {\r\n        this.cuiDialogContext.completeWith(\r\n            this.initialUtility() ? { prevId: this.prevUtility.id, ...this.utility() } : this.utility()\r\n        );\r\n    }\r\n\r\n    protected onCancel(): void {\r\n        this.destroyUtility();\r\n\r\n        const returnedValue = this.initialUtility() ? this.utility() : null;\r\n\r\n        this.cuiDialogContext.completeWith(returnedValue);\r\n    }\r\n\r\n    private initWindowUnloadEvent(): void {\r\n        this.window.onbeforeunload = (): void => this.destroyUtility();\r\n    }\r\n\r\n    private destroyUtility(): void {\r\n        const utility = this.utility();\r\n\r\n        if (!utility || this.initialUtility()) {\r\n            return;\r\n        }\r\n\r\n        this.utilityModalService.deleteUtility(utility).subscribe();\r\n    }\r\n}\r\n","<div\r\n    class=\"wrapper\"\r\n    *transloco=\"let t\"\r\n>\r\n    <header class=\"header\">\r\n        <ng-container [ngTemplateOutlet]=\"header\" />\r\n\r\n        <div class=\"header__content\">\r\n            <cui-loader\r\n                type=\"stated\"\r\n                color=\"var(--cui-base-500)\"\r\n            />\r\n\r\n            <div class=\"actions\">\r\n                @if (!initialUtility()) {\r\n                    <button\r\n                        type=\"button\"\r\n                        cuiButton\r\n                        appearance=\"secondary\"\r\n                        (click)=\"onCancel()\"\r\n                    >\r\n                        {{ t('CANCEL') }}\r\n                    </button>\r\n                }\r\n\r\n                <button\r\n                    type=\"button\"\r\n                    cuiButton\r\n                    [disabled]=\"!isFormValid()\"\r\n                    appearance=\"action-violet\"\r\n                    (click)=\"onSave()\"\r\n                >\r\n                    {{ t('DONE') }}\r\n                </button>\r\n            </div>\r\n        </div>\r\n    </header>\r\n\r\n    <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Criterion, StorageObject } from '@cuby-ui/api';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../../components';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';\r\nimport { CuiCriterionInfoComponent } from '../../../criterion-info';\r\nimport { CuiUtilityModalCreateComponent } from '../utility-modal-create';\r\nimport { CuiEditorConfig } from '../../../../../editor';\r\n\r\n@Component({\r\n    imports: [CuiButtonModule, CuiSvgModule, CuiCriterionInfoComponent, CuiUtilityModalCreateComponent],\r\n    standalone: true,\r\n    templateUrl: './criterion-modal-create.component.html',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCriterionModalCreateComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly criterionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n    private isCreated = false;\r\n\r\n    protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n    protected readonly tools = this.cuiDialogContext.data.tools;\r\n    protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n    private readonly _criterion = computed(() => signal(this.initialUtility()));\r\n\r\n    protected readonly isFormValid = signal(false);\r\n    protected readonly criterion = computed(() => this._criterion()());\r\n\r\n    public readonly initialUtility = input.required<StorageObject<Criterion>>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    protected onCriterionCreated(storageNodeId: string): void {\r\n        if (this.isCreated || this.initialUtility()) {\r\n            return;\r\n        }\r\n\r\n        this.criterionApiService\r\n            .createUtility(storageNodeId)\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((criterion) => {\r\n                this.isCreated = true;\r\n                this._criterion().set(criterion as StorageObject<Criterion>);\r\n            });\r\n    }\r\n}\r\n","<cui-utility-modal-create [initialUtility]=\"criterion()\">\r\n    <cui-criterion-info\r\n        [criterion]=\"criterion()\"\r\n        [config]=\"config()\"\r\n        (validationChanged)=\"isFormValid.set($event)\"\r\n        (criterionCreated)=\"onCriterionCreated($event)\"\r\n    />\r\n</cui-utility-modal-create>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport type { ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\r\n\r\nimport {\r\n    CuiAccordionModule,\r\n    CuiButtonModule,\r\n    CuiFormFieldModule,\r\n    CuiHintModule,\r\n    CuiInputModule,\r\n    CuiLabelModule\r\n} from '../../../components';\r\nimport type { CuiEditorConfig } from '../../../editor';\r\nimport { CuiEditorBlockComponent } from '../../../editor';\r\nimport { cuiCreateDefaultValidators } from '../../../utils';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport { CuiUtilityThumbnailComponent } from '../utility-thumbnail';\r\n\r\nimport type { CuiInstructionFormGroup, CuiInstructionFormValues } from './instruction-info-form.options';\r\n\r\n@Component({\r\n    selector: 'cui-instruction-info-form',\r\n    imports: [\r\n        CuiAccordionModule,\r\n        CuiButtonModule,\r\n        CuiEditorBlockComponent,\r\n        CuiFormFieldModule,\r\n        CuiGeneralControlErrorHintComponent,\r\n        CuiHintModule,\r\n        CuiInputModule,\r\n        CuiLabelModule,\r\n        CuiUtilityThumbnailComponent,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './instruction-info-form.component.html',\r\n    styleUrl: './instruction-info-form.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiInstructionInfoFormComponent {\r\n    private readonly destroy = inject(DestroyRef);\r\n    private readonly formBuilder = inject(NonNullableFormBuilder);\r\n    private readonly frameApiService = inject(CuiFrameApiService);\r\n    private readonly resourceApiService = inject(CuiResourceApiService);\r\n    private readonly cuiIdService = inject(CuiIdService);\r\n\r\n    protected readonly CONTROL_DELAY = 500;\r\n\r\n    protected readonly titleId = this.cuiIdService.generate();\r\n    protected readonly descriptionId = this.cuiIdService.generate();\r\n    protected readonly form = this.formBuilder.group<CuiInstructionFormGroup>({\r\n        title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\r\n        description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\r\n    });\r\n\r\n    protected heading: CuiNullable<string> = null;\r\n\r\n    protected readonly isDescriptionEmpty = signal(false);\r\n    protected readonly editorId = signal<CuiNullable<string>>(null);\r\n    protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\r\n\r\n    public readonly title = input.required<string>();\r\n    public readonly description = input.required<string>();\r\n    public readonly framerId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    public readonly formChanged = output<Partial<CuiInstructionFormValues>>();\r\n    public readonly isFormValidChanged = output<boolean>();\r\n\r\n    protected get controls(): CuiInstructionFormGroup {\r\n        return this.form.controls;\r\n    }\r\n\r\n    protected get isTitleError(): boolean {\r\n        return this.controls.title.invalid && this.controls.title.dirty;\r\n    }\r\n\r\n    protected get isDescriptionError(): boolean {\r\n        return this.controls.description.invalid && this.controls.description.dirty;\r\n    }\r\n\r\n    constructor() {\r\n        this.initUtilityEffect();\r\n    }\r\n\r\n    protected onEditorEmpty(isEmpty: boolean): void {\r\n        this.isDescriptionEmpty.set(isEmpty);\r\n        this.isFormValidChanged.emit(this.checkFormValidation());\r\n    }\r\n\r\n    private initUtilityEffect(): void {\r\n        const effectRef = effect(() => {\r\n            const title = this.title();\r\n\r\n            if (!title) {\r\n                return;\r\n            }\r\n\r\n            this.initFormSubscriptions();\r\n            this.initFrameFragments();\r\n            effectRef.destroy();\r\n        });\r\n    }\r\n\r\n    private initFormSubscriptions(): void {\r\n        this.form.setValue({ title: this.title(), description: this.description() }, { emitEvent: false });\r\n\r\n        this.form.statusChanges\r\n            .pipe(takeUntilDestroyed(this.destroy))\r\n            .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\r\n\r\n        this.form.valueChanges\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroy),\r\n                startWith(this.form.value),\r\n                pairwise(),\r\n                debounceTime(this.CONTROL_DELAY),\r\n                map(([prev, current]) => this.compareFormValues([prev, current]))\r\n            )\r\n            .subscribe((value) => {\r\n                if (!Object.keys(value).length) {\r\n                    return;\r\n                }\r\n\r\n                this.formChanged.emit(value);\r\n            });\r\n    }\r\n\r\n    private initFrameFragments(): void {\r\n        const frameId = this.framerId();\r\n\r\n        if (!frameId) {\r\n            return;\r\n        }\r\n\r\n        this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\r\n            frame.fragments.forEach((fragment) => {\r\n                if (fragment.type === FragmentType.jText) {\r\n                    this.editorId.set(fragment?.id);\r\n                }\r\n\r\n                if (fragment.type === FragmentType.resourceFile) {\r\n                    this.setResourceFile(fragment as ResourceFragment);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    private compareFormValues([\r\n        prevGroup,\r\n        currentGruop\r\n    ]: Partial<CuiInstructionFormValues>[]): Partial<CuiInstructionFormValues> {\r\n        const keys = Object.keys(currentGruop) as (keyof CuiInstructionFormValues)[];\r\n        const changedFields: Record<string, unknown> = {};\r\n\r\n        keys.forEach((key) => {\r\n            const prev = prevGroup[key];\r\n            const current = currentGruop[key];\r\n\r\n            if (prev === current || this.controls[key].invalid) {\r\n                return;\r\n            }\r\n\r\n            changedFields[key] = current;\r\n        });\r\n\r\n        return changedFields;\r\n    }\r\n\r\n    private setResourceFile(resource: ResourceFragment): void {\r\n        if (!resource.fileId) {\r\n            this.thumbnail.set({ ...resource });\r\n\r\n            return;\r\n        }\r\n\r\n        this.resourceApiService.get(resource.fileId, this.config().requestOptions)\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroy),\r\n                map((url) => URL.createObjectURL(url))\r\n            )\r\n            .subscribe((url) => {\r\n                this.thumbnail.set({ ...resource, resource: url });\r\n\r\n                if (!url || resource?.name?.split('.').pop() !== 'mp4') {\r\n                    return;\r\n                }\r\n\r\n                this.getCaptureFromVideo(url);\r\n            });\r\n    }\r\n\r\n    private getCaptureFromVideo(url: string, file?: File): void {\r\n        takeCaptureFromVideo(url).then((capture) => {\r\n            this.thumbnail.update((prev) => ({\r\n                ...prev!,\r\n                name: (file?.name ?? prev?.name)!,\r\n                resource: capture\r\n            }));\r\n        });\r\n    }\r\n\r\n    private checkFormValidation(): boolean {\r\n        return !this.isDescriptionEmpty() && !this.form.invalid;\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <section class=\"content\">\r\n        <cui-form-field>\r\n            <label\r\n                cuiLabel\r\n                [isRequired]=\"true\"\r\n                [for]=\"titleId\"\r\n            >\r\n                {{ t('TITLE') }}\r\n            </label>\r\n\r\n            <cui-input-text\r\n                [cuiTextFieldId]=\"titleId\"\r\n                [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\r\n                [cuiTextFieldIsError]=\"isTitleError\"\r\n                [formControl]=\"form.controls.title\"\r\n            />\r\n\r\n            @if (isTitleError) {\r\n                <cui-general-control-error-hint\r\n                    [control]=\"form.controls.title\"\r\n                    [isVisible]=\"true\"\r\n                />\r\n            }\r\n        </cui-form-field>\r\n\r\n        <cui-form-field>\r\n            <label\r\n                cuiLabel\r\n                [isRequired]=\"true\"\r\n                [for]=\"descriptionId\"\r\n            >\r\n                {{ t('SHORT_DESCRIPTION') }}\r\n            </label>\r\n\r\n            <cui-input-text\r\n                [cuiTextFieldId]=\"descriptionId\"\r\n                cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\r\n                [cuiTextFieldIsError]=\"isDescriptionError\"\r\n                [formControl]=\"form.controls.description\"\r\n            />\r\n\r\n            @if (isDescriptionError) {\r\n                <cui-general-control-error-hint\r\n                    [control]=\"form.controls.description\"\r\n                    [isVisible]=\"true\"\r\n                />\r\n            }\r\n        </cui-form-field>\r\n\r\n        <cui-utility-thumbnail\r\n            [context]=\"config().requestOptions\"\r\n            [framerId]=\"framerId()\"\r\n            [(thumbnail)]=\"thumbnail\"\r\n        />\r\n\r\n        @if (editorId(); as editorId) {\r\n            <cui-editor-block\r\n                [title]=\"form.controls.title.value || title()\"\r\n                [config]=\"config()\"\r\n                [editorId]=\"editorId\"\r\n                [required]=\"true\"\r\n                class=\"editor\"\r\n                (editorEmpty)=\"onEditorEmpty($event)\"\r\n            />\r\n        }\r\n    </section>\r\n</ng-container>\r\n","import type { ElementRef, OnInit } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    DestroyRef,\r\n    effect,\r\n    inject,\r\n    input,\r\n    model,\r\n    output,\r\n    signal,\r\n    untracked,\r\n    viewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { Instruction, StorageObject, TreeStruct } from '@cuby-ui/api';\r\nimport { CuiTreeStructNavigatorApiService, MovingType, TreeStructType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService } from '@cuby-ui/cdk';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport type { Observable, Subscription } from 'rxjs';\r\nimport { finalize, forkJoin } from 'rxjs';\r\n\r\nimport {\r\n    CuiBadgeModule,\r\n    CuiButtonModule,\r\n    CuiDialogModule,\r\n    CuiFormFieldModule,\r\n    CuiLabelModule,\r\n    CuiSvgModule\r\n} from '../../../components';\r\nimport { CuiEditorConfig } from '../../../editor';\r\nimport { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';\r\nimport type { CuiInstructionFormValues } from '../instruction-info-form';\r\nimport { CuiInstructionInfoFormComponent } from '../instruction-info-form';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityModalService } from '../utility-modal';\r\n\r\n@Component({\r\n    selector: 'cui-instruction-info',\r\n    imports: [\r\n        CuiBadgeModule,\r\n        CuiButtonModule,\r\n        CuiCategoriesComponent,\r\n        CuiDialogModule,\r\n        CuiFormFieldModule,\r\n        CuiInstructionInfoFormComponent,\r\n        CuiLabelModule,\r\n        CuiSvgModule,\r\n        TranslocoModule\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './instruction-info.component.html',\r\n    styleUrls: ['./instruction-info.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CuiSelectedCategoryService]\r\n})\r\nexport class CuiInstructionInfoComponent implements OnInit {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly cuiIdService = inject(CuiIdService);\r\n    private readonly cuiCategoriesModalService = inject(CuiSelectedCategoryService);\r\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n    private readonly instructionApiService = inject<UtilityModalService<Instruction>>(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n    protected readonly TYPE = TreeStructType.Instruction;\r\n\r\n    private subscription!: Subscription;\r\n    private skipCategoryChange = false;\r\n\r\n    protected readonly categoryId = this.cuiIdService.generate();\r\n\r\n    protected readonly category = this.cuiCategoriesModalService.category;\r\n    protected readonly isFormValid = signal(false);\r\n    protected readonly prevCategoryId = signal<CuiNullable<string>>(null);\r\n    protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n    protected readonly labelColor = computed(() =>\r\n        this.category()?.title ? 'var(--cui-base-900)' : 'var(--cui-base-400)'\r\n    );\r\n    protected readonly selectTitle = computed(\r\n        () => this.category()?.title || this.translocoService.translate('SELECT') + '...'\r\n    );\r\n\r\n    protected readonly element = viewChild<ElementRef<HTMLElement>>('scrollContent');\r\n\r\n    public readonly instruction = model<StorageObject<Instruction>>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    public readonly validationChanged = output<boolean>();\r\n    public readonly instructionCreated = output<string>();\r\n\r\n    constructor() {\r\n        this.initConfigEffect();\r\n        this.initCategoryEffect();\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initCategory();\r\n    }\r\n\r\n    protected onFormChanged(values: Partial<CuiInstructionFormValues>, instructionId: string): void {\r\n        const actions: Record<keyof CuiInstructionFormValues, (value: string) => Observable<void>> = {\r\n            title: (title: string) => this.changeTitle(title, instructionId),\r\n            description: (description: string) => this.changeDescription(description, instructionId)\r\n        };\r\n\r\n        forkJoin(\r\n            Object.keys(values).map((key) =>\r\n                actions[key as keyof CuiInstructionFormValues](values[key as keyof CuiInstructionFormValues] || '')\r\n            )\r\n        )\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe();\r\n    }\r\n\r\n    protected onFormValidationChanged(isValid: boolean): void {\r\n        this.isFormValid.set(isValid);\r\n        this.validationChanged.emit(isValid);\r\n    }\r\n\r\n    private initCategoryEffect(): void {\r\n        effect(() => {\r\n            const category = this.category();\r\n            const storageObjectInstruction = untracked(this.instruction);\r\n\r\n            if (!category || this.skipCategoryChange) {\r\n                this.skipCategoryChange = false;\r\n\r\n                return;\r\n            }\r\n\r\n            if (storageObjectInstruction) {\r\n                this.changeCategory(category.id, storageObjectInstruction.id);\r\n\r\n                return;\r\n            }\r\n\r\n            this.createInstruction(category.id);\r\n        });\r\n    }\r\n\r\n    private initConfigEffect(): void {\r\n        effect(() => {\r\n            const element = this.element()?.nativeElement;\r\n\r\n            if (!element) {\r\n                return;\r\n            }\r\n\r\n            this.editorConfig.set({ ...this.config(), element });\r\n        });\r\n    }\r\n\r\n    private initCategory(): void {\r\n        const storageObjectId = this.instruction()?.id;\r\n\r\n        if (!storageObjectId) {\r\n            return;\r\n        }\r\n\r\n        this.treeStructNavigatorApiService\r\n            .getCategory(storageObjectId, TreeStructType.Instruction, this.config().requestOptions)\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((category) => {\r\n                this.skipCategoryChange = true;\r\n                this.prevCategoryId.set(category.id);\r\n                this.cuiCategoriesModalService.setCurrentCategory(category as TreeStruct);\r\n            });\r\n    }\r\n\r\n    private changeCategory(categoryId: string, targetId: string): void {\r\n        const prevCategoryId = untracked(this.prevCategoryId);\r\n\r\n        if (!prevCategoryId) {\r\n            return;\r\n        }\r\n\r\n        this.subscription?.unsubscribe();\r\n        this.subscription = this.treeStructNavigatorApiService\r\n            .moveElement({\r\n                type: MovingType.TARGET_TREE_STRUCT,\r\n                movableItemId: targetId,\r\n                treeStructTargetItemId: categoryId,\r\n                treeStructMovableItemId: prevCategoryId\r\n            }, this.config().requestOptions)\r\n            .subscribe(() => this.prevCategoryId.set(categoryId));\r\n    }\r\n\r\n    private createInstruction(categoryId: string): void {\r\n        this.instructionCreated.emit(categoryId);\r\n        this.prevCategoryId.set(categoryId);\r\n    }\r\n\r\n    private changeTitle(value: string, instructionId: string): Observable<void> {\r\n        return this.instructionApiService.changeTitle(instructionId, value, this.config().requestOptions).pipe(\r\n            finalize(() =>\r\n                this.instruction.update((prev) => ({\r\n                    ...prev!,\r\n                    storageElement: { ...prev!.storageElement, title: value }\r\n                }))\r\n            )\r\n        );\r\n    }\r\n\r\n    private changeDescription(value: string, instructionId: string): Observable<void> {\r\n        if (!this.instructionApiService.changeDescription) {\r\n            throw new Error('Change description not implemented');\r\n        }\r\n\r\n        return this.instructionApiService.changeDescription(instructionId, value, this.config().requestOptions).pipe(\r\n            finalize(() =>\r\n                this.instruction.update((prev) => ({\r\n                    ...prev!,\r\n                    storageElement: { ...prev!.storageElement, shortDescription: value }\r\n                }))\r\n            )\r\n        );\r\n    }\r\n}\r\n","<div\r\n    class=\"wrapper\"\r\n    *transloco=\"let t\"\r\n>\r\n    <div\r\n        #scrollContent\r\n        class=\"content content_scrollable\"\r\n    >\r\n        <div class=\"category\">\r\n            <cui-form-field>\r\n                <label\r\n                    cuiLabel\r\n                    [for]=\"categoryId\"\r\n                    [isRequired]=\"true\"\r\n                >\r\n                    {{ t('SELECT_CATEGORY') }}\r\n                </label>\r\n                <cui-categories\r\n                    [buttonId]=\"categoryId\"\r\n                    [treeStructType]=\"TYPE\"\r\n                >\r\n                    <div class=\"select\">\r\n                        <span [style.color]=\"labelColor()\">\r\n                            {{ selectTitle() }}\r\n                        </span>\r\n\r\n                        <cui-svg icon=\"cuiIconChevronDown\" />\r\n                    </div>\r\n                </cui-categories>\r\n            </cui-form-field>\r\n        </div>\r\n\r\n        @let instructionData = instruction();\r\n        @let editorConfigData = editorConfig();\r\n\r\n        @if (editorConfigData && instructionData) {\r\n            <cui-instruction-info-form\r\n                [config]=\"editorConfigData\"\r\n                [title]=\"instructionData.storageElement.title\"\r\n                [description]=\"instructionData.storageElement.shortDescription\"\r\n                [framerId]=\"instructionData.storageElement.framerInstructionId\"\r\n                class=\"utility\"\r\n                (isFormValidChanged)=\"onFormValidationChanged($event)\"\r\n                (formChanged)=\"onFormChanged($event, instructionData.id)\"\r\n            />\r\n        }\r\n    </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { Instruction, StorageObject } from '@cuby-ui/api';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../../components';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';\r\nimport { CuiUtilityModalCreateComponent } from '../utility-modal-create';\r\nimport { CuiInstructionInfoComponent } from '../../../instruction-info';\r\nimport { CuiEditorConfig } from '../../../../../editor';\r\n\r\n@Component({\r\n    imports: [CuiButtonModule, CuiSvgModule, CuiUtilityModalCreateComponent, CuiInstructionInfoComponent],\r\n    standalone: true,\r\n    templateUrl: './instruction-modal-create.component.html',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiInstructionModalCreateComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly instructionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n    private isCreated = false;\r\n\r\n    protected readonly tools = this.cuiDialogContext.data.tools;\r\n    protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n    private readonly _instruction = computed(() => signal(this.initialUtility()));\r\n\r\n    protected readonly isFormValid = signal(false);\r\n    protected readonly instruction = computed(() => this._instruction()());\r\n\r\n    public readonly initialUtility = input.required<StorageObject<Instruction>>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    protected onInstructionCreated(storageNodeId: string): void {\r\n        if (this.isCreated || this.initialUtility()) {\r\n            return;\r\n        }\r\n\r\n        this.instructionApiService\r\n            .createUtility(storageNodeId)\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((instruction) => {\r\n                this.isCreated = true;\r\n                this._instruction().set(instruction as StorageObject<Instruction>);\r\n            });\r\n    }\r\n}\r\n","<cui-utility-modal-create [initialUtility]=\"instruction()\">\r\n    <cui-instruction-info\r\n        [instruction]=\"instruction()\"\r\n        [config]=\"config()\"\r\n        (validationChanged)=\"isFormValid.set($event)\"\r\n        (instructionCreated)=\"onInstructionCreated($event)\"\r\n    />\r\n</cui-utility-modal-create>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { CuiImgUrl } from '../../../interfaces';\r\n\r\n@Component({\r\n    selector: 'cui-utility-readonly-thumbnail',\r\n    imports: [],\r\n    standalone: true,\r\n    templateUrl: './utility-readonly-thumbnail.component.html',\r\n    styleUrl: './utility-readonly-thumbnail.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityReadonlyThumbnailComponent {\r\n    public readonly thumbnailUrl = input.required<CuiImgUrl>();\r\n    public readonly isVideo = input(false);\r\n}\r\n","@let url = thumbnailUrl();\r\n\r\n@if (url?.src; as src) {\r\n    @if (isVideo()) {\r\n        <video\r\n            class=\"thumbnail\"\r\n            [src]=\"src\"\r\n            controls\r\n        ></video>\r\n    } @else {\r\n        <img\r\n            class=\"thumbnail\"\r\n            [src]=\"src\"\r\n            [alt]=\"url?.name\"\r\n        />\r\n    }\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { map, of, type Subscription } from 'rxjs';\r\n\r\nimport { CuiEmptyStateComponent } from '../../../components';\r\nimport type { CuiEditorConfig } from '../../../editor';\r\nimport { CuiEditorComponent } from '../../../editor';\r\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\r\n\r\n@Component({\r\n    selector: 'cui-criterion-readonly-info',\r\n    imports: [CuiEditorComponent, CuiEmptyStateComponent, AsyncPipe, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\r\n    standalone: true,\r\n    templateUrl: './criterion-readonly-info.component.html',\r\n    styleUrl: './criterion-readonly-info.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCriterionReadonlyInfoComponent {\r\n    private readonly hostElement = inject(ElementRef).nativeElement;\r\n    private readonly frameApiService = inject(CuiFrameApiService);\r\n    private readonly resourceApiService = inject(CuiResourceApiService);\r\n\r\n    private subscription!: Subscription;\r\n\r\n    protected isVideo = false;\r\n    protected editorConfig!: CuiEditorConfig;\r\n\r\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\r\n    protected readonly resource = signal<CuiNullable<ResourceFragment>>(null);\r\n\r\n    protected readonly thumbnailUrl = computed(() => {\r\n        const resource = this.resource();\r\n\r\n        if (!resource?.fileId) {\r\n            return of(null);\r\n        }\r\n\r\n        return this.resourceApiService.get(resource.fileId, this.config().requestOptions).pipe(map((url) => {\r\n            return {\r\n                src: URL.createObjectURL(url),\r\n                name: resource.name || resource.type\r\n            };\r\n        }));\r\n    });\r\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\r\n\r\n    public readonly framerId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    constructor() {\r\n        this.initConfigEffect();\r\n        this.initFramerIdEffect();\r\n    }\r\n\r\n    private initConfigEffect(): void {\r\n        effect(() => {\r\n            this.editorConfig = { readOnly: true, element: this.hostElement, ...this.config() };\r\n        });\r\n    }\r\n\r\n    private initFramerIdEffect(): void {\r\n        effect(() => {\r\n            const framerId = this.framerId();\r\n\r\n            if (!framerId) {\r\n                return;\r\n            }\r\n\r\n            this.subscription?.unsubscribe();\r\n            this.initFrameFragments();\r\n        });\r\n    }\r\n\r\n    private initFrameFragments(): void {\r\n        const frameId = this.framerId();\r\n\r\n        this.jText.set(null);\r\n        this.resource.set(null);\r\n\r\n        if (!frameId) {\r\n            return;\r\n        }\r\n\r\n        const fragmentActions = {\r\n            [FragmentType.jText]: (fragment: Fragment): void => {\r\n                this.jText.set(fragment as JTextFragment);\r\n            },\r\n            [FragmentType.resourceFile]: (fragment: Fragment): void => {\r\n                this.resource.set(fragment as ResourceFragment);\r\n            }\r\n        };\r\n\r\n        this.subscription = this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\r\n            frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (jText()) {\r\n        @if (!isDescriptionEmpty()) {\r\n            @if (thumbnailUrl() | async; as thumbnailUrl) {\r\n                <cui-utility-readonly-thumbnail\r\n                    [thumbnailUrl]=\"thumbnailUrl\"\r\n                    [isVideo]=\"isVideo\"\r\n                />\r\n            }\r\n\r\n            @if (jText()?.id; as id) {\r\n                <div class=\"wrapper\">\r\n                    <cui-editor\r\n                        class=\"editor\"\r\n                        [editorApiId]=\"id\"\r\n                        [config]=\"editorConfig\"\r\n                    />\r\n                </div>\r\n            }\r\n        } @else {\r\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\r\n        }\r\n    }\r\n</ng-container>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\nimport { StorageObject } from '@cuby-ui/api';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiBadgeModule, CuiButtonModule, CuiSvgModule } from '../../../../../components';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement, UtilityModalService } from '../../utility-modal.options';\r\n\r\n@Component({\r\n    selector: 'cui-readonly-utility-modal',\r\n    imports: [CuiBadgeModule, CuiButtonModule, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\r\n    standalone: true,\r\n    templateUrl: './readonly-utility-modal.component.html',\r\n    styleUrl: './readonly-utility-modal.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiReadonlyUtilityModalComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly utilityModalService = inject<UtilityModalService<UtilityElement>>(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n    protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n    protected readonly tools = this.cuiDialogContext.data.tools;\r\n    protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n    protected readonly isLoading = signal(false);\r\n\r\n    public readonly utility = input.required<StorageObject<UtilityElement>>();\r\n\r\n    public readonly utilityUnbinded = output<StorageObject<UtilityElement>>();\r\n\r\n    protected onClose(): void {\r\n        this.cuiDialogContext.completeWith();\r\n    }\r\n\r\n    protected onUnbind(): void {\r\n        this.isLoading.set(true);\r\n        this.utilityModalService\r\n            .unbindUtility(this.utility().id)\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroyRef),\r\n                finalize(() => this.isLoading.set(false))\r\n            )\r\n            .subscribe((utility: StorageObject<UtilityElement>) => {\r\n                this.utilityUnbinded.emit(utility);\r\n            });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <header class=\"header\">\r\n        <ng-container [ngTemplateOutlet]=\"header\" />\r\n\r\n        <cui-badge\r\n            color=\"violet\"\r\n            class=\"badge\"\r\n        >\r\n            <cui-svg\r\n                cuiBadgeIcon\r\n                class=\"icon\"\r\n                icon=\"cuiIconVariant\"\r\n            />\r\n            {{ t('INSERTED') }}\r\n        </cui-badge>\r\n\r\n        <button\r\n            type=\"button\"\r\n            cuiButton\r\n            appearance=\"ghost\"\r\n            icon=\"cuiIconX\"\r\n            class=\"button\"\r\n            (click)=\"onClose()\"\r\n        ></button>\r\n    </header>\r\n\r\n    <ng-content />\r\n\r\n    <div class=\"actions\">\r\n        <button\r\n            type=\"button\"\r\n            #button\r\n            cuiButton\r\n            size=\"sm\"\r\n            icon=\"cuiIconLinkBroken\"\r\n            appearance=\"action-violet\"\r\n            [isLoaderShown]=\"isLoading()\"\r\n            (click)=\"onUnbind()\"\r\n        >\r\n            {{ t('UNBIND') }}\r\n        </button>\r\n    </div>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal, viewChild } from '@angular/core';\r\nimport type { Criterion, CuiApiContext, StorageObject } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport {\r\n    CUI_DIALOG_CONTEXT,\r\n    CuiBadgeModule,\r\n    CuiButtonModule,\r\n    CuiRenderDynamicComponentsService,\r\n    CuiSvgModule\r\n} from '../../../../../components';\r\nimport { CuiCriterionReadonlyInfoComponent } from '../../../criterion-readonly-info';\r\nimport { UtilityElement } from '../../utility-modal.options';\r\nimport { CuiCriterionModalCreateComponent } from '../criterion-modal-create';\r\nimport { CuiReadonlyUtilityModalComponent } from '../readonly-utility-modal';\r\n\r\n@Component({\r\n    selector: 'cui-readonly-criterion-modal',\r\n    imports: [\r\n        CuiBadgeModule,\r\n        CuiButtonModule,\r\n        CuiSvgModule,\r\n        TranslocoDirective,\r\n        CuiReadonlyUtilityModalComponent,\r\n        CuiCriterionReadonlyInfoComponent\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './readonly-criterion-modal.component.html',\r\n    styleUrl: './readonly-criterion-modal.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiReadonlyCriterionModalComponent {\r\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n    protected readonly tools = this.cuiDialogContext.data.tools;\r\n    protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n    protected readonly isLoading = signal(false);\r\n    protected readonly config = computed(() => ({\r\n        tools: this.tools(),\r\n        requestOptions: this.context(),\r\n        element: this.element()?.nativeElement\r\n    }));\r\n    protected readonly framerId = computed(() => this.criterion().storageElement.framerCriterionId);\r\n\r\n    public readonly element = viewChild<ElementRef<HTMLElement>>('scrollContainer');\r\n\r\n    public readonly criterion = input.required<StorageObject<Criterion>>();\r\n    public readonly context = input.required<CuiApiContext>();\r\n\r\n    protected onUnbind(criterion: StorageObject<UtilityElement>): void {\r\n        this.cuiRenderDynamicComponentsService.closeAll();\r\n        this.cuiRenderDynamicComponentsService.open({\r\n            component: CuiCriterionModalCreateComponent,\r\n            inputs: { criterion }\r\n        });\r\n    }\r\n}\r\n","<cui-readonly-utility-modal\r\n    [utility]=\"criterion()\"\r\n    (utilityUnbinded)=\"onUnbind($event)\"\r\n>\r\n    <ng-container *transloco=\"let t\">\r\n        <div\r\n            #scrollContainer\r\n            class=\"info\"\r\n        >\r\n            <h3 class=\"title\">{{ criterion().storageElement.title }}</h3>\r\n\r\n            <cui-criterion-readonly-info\r\n                [framerId]=\"framerId()\"\r\n                [config]=\"config()\"\r\n                class=\"info__block\"\r\n            />\r\n        </div>\r\n    </ng-container>\r\n</cui-readonly-utility-modal>\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { map, of, type Subscription } from 'rxjs';\r\n\r\nimport { CuiEmptyStateComponent } from '../../../components';\r\nimport type { CuiEditorConfig } from '../../../editor';\r\nimport { CuiEditorComponent } from '../../../editor';\r\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\r\n\r\n@Component({\r\n    selector: 'cui-instruction-readonly-info',\r\n    imports: [CuiEditorComponent, CuiEmptyStateComponent, AsyncPipe, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\r\n    standalone: true,\r\n    templateUrl: './instruction-readonly-info.component.html',\r\n    styleUrl: './instruction-readonly-info.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiInstructionReadonlyInfoComponent {\r\n    private readonly hostElement = inject(ElementRef).nativeElement;\r\n    private readonly frameApiService = inject(CuiFrameApiService);\r\n    private readonly resourceApiService = inject(CuiResourceApiService);\r\n\r\n    private subscription!: Subscription;\r\n\r\n    protected isVideo = false;\r\n    protected editorConfig!: CuiEditorConfig;\r\n\r\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\r\n    protected readonly resource = signal<CuiNullable<ResourceFragment>>(null);\r\n\r\n    protected readonly thumbnailUrl = computed(() => {\r\n        const resource = this.resource();\r\n\r\n        if (!resource?.fileId) {\r\n            return of(null);\r\n        }\r\n\r\n        return this.resourceApiService.get(resource.fileId, this.config().requestOptions).pipe(map((url) => {\r\n            return {\r\n                src: URL.createObjectURL(url),\r\n                name: resource.name || resource.type\r\n            };\r\n        }));\r\n    });\r\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\r\n\r\n    public readonly framerId = input.required<string>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    constructor() {\r\n        this.initConfigEffect();\r\n        this.initFramerIdEffect();\r\n    }\r\n\r\n    private initConfigEffect(): void {\r\n        effect(() => {\r\n            this.editorConfig = { readOnly: true, element: this.hostElement, ...this.config() };\r\n        });\r\n    }\r\n\r\n    private initFramerIdEffect(): void {\r\n        effect(() => {\r\n            const framerId = this.framerId();\r\n\r\n            if (!framerId) {\r\n                return;\r\n            }\r\n\r\n            this.subscription?.unsubscribe();\r\n            this.initFrameFragments();\r\n        });\r\n    }\r\n\r\n    private initFrameFragments(): void {\r\n        const frameId = this.framerId();\r\n\r\n        this.jText.set(null);\r\n        this.resource.set(null);\r\n\r\n        if (!frameId) {\r\n            return;\r\n        }\r\n\r\n        const fragmentActions = {\r\n            [FragmentType.jText]: (fragment: Fragment): void => {\r\n                this.jText.set(fragment as JTextFragment);\r\n            },\r\n            [FragmentType.resourceFile]: (fragment: Fragment): void => {\r\n                this.resource.set(fragment as ResourceFragment);\r\n            }\r\n        };\r\n\r\n        this.subscription = this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\r\n            frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (jText()) {\r\n        @if (!isDescriptionEmpty()) {\r\n            @if (thumbnailUrl() | async; as thumbnailUrl) {\r\n                <cui-utility-readonly-thumbnail\r\n                    [thumbnailUrl]=\"thumbnailUrl\"\r\n                    [isVideo]=\"isVideo\"\r\n                />\r\n            }\r\n\r\n            @if (jText()?.id; as id) {\r\n                <div class=\"wrapper\">\r\n                    <cui-editor\r\n                        class=\"editor\"\r\n                        [editorApiId]=\"id\"\r\n                        [config]=\"editorConfig\"\r\n                    />\r\n                </div>\r\n            }\r\n        } @else {\r\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\r\n        }\r\n    }\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal, viewChild } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { CuiApiContext, Instruction, StorageObject } from '@cuby-ui/api';\r\n\r\nimport {\r\n    CUI_DIALOG_CONTEXT,\r\n    CuiBadgeModule,\r\n    CuiButtonModule,\r\n    CuiRenderDynamicComponentsService,\r\n    CuiSvgModule\r\n} from '../../../../../components';\r\nimport { CuiInstructionReadonlyInfoComponent } from '../../../instruction-readonly-info';\r\nimport { CuiInstructionModalCreateComponent } from '../instruction-modal-create';\r\nimport { UtilityElement } from '../../utility-modal.options';\r\nimport { CuiReadonlyUtilityModalComponent } from '../readonly-utility-modal';\r\n\r\n@Component({\r\n    selector: 'cui-readonly-instruction-modal',\r\n    imports: [\r\n        CuiBadgeModule,\r\n        CuiButtonModule,\r\n        CuiSvgModule,\r\n        CuiInstructionReadonlyInfoComponent,\r\n        TranslocoDirective,\r\n        CuiReadonlyUtilityModalComponent\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './readonly-instruction-modal.component.html',\r\n    styleUrl: './readonly-instruction-modal.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiReadonlyInstructionModalComponent {\r\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n    protected readonly tools = this.cuiDialogContext.data.tools;\r\n    protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n    protected readonly isLoading = signal(false);\r\n    protected readonly config = computed(() => ({\r\n        tools: this.tools(),\r\n        requestOptions: this.context(),\r\n        element: this.element()?.nativeElement\r\n    }));\r\n    protected readonly framerId = computed(() => this.instruction().storageElement.framerInstructionId);\r\n\r\n    public readonly element = viewChild<ElementRef<HTMLElement>>('scrollContainer');\r\n\r\n    public readonly instruction = input.required<StorageObject<Instruction>>();\r\n    public readonly context = input.required<CuiApiContext>();\r\n\r\n    protected onUnbind(instruction: StorageObject<UtilityElement>): void {\r\n        this.cuiRenderDynamicComponentsService.closeAll();\r\n        this.cuiRenderDynamicComponentsService.open({\r\n            component: CuiInstructionModalCreateComponent,\r\n            inputs: { initialUtility: instruction }\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <cui-readonly-utility-modal\r\n        [utility]=\"instruction()\"\r\n        (utilityUnbinded)=\"onUnbind($event)\"\r\n    >\r\n        <div\r\n            #scrollContainer\r\n            class=\"info\"\r\n        >\r\n            <h3 class=\"title\">{{ instruction().storageElement.title }}</h3>\r\n\r\n            <cui-instruction-readonly-info\r\n                [framerId]=\"framerId()\"\r\n                [config]=\"config()\"\r\n                class=\"info__block\"\r\n            />\r\n        </div>\r\n    </cui-readonly-utility-modal>\r\n</ng-container>\r\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\r\n\r\nimport {\r\n    CUI_DIALOG_CONTEXT,\r\n    CuiRenderDynamicComponentsComponent,\r\n    CuiRenderDynamicComponentsService\r\n} from '../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-utility-modal',\r\n    imports: [CuiRenderDynamicComponentsComponent],\r\n    standalone: true,\r\n    templateUrl: './utility-modal.component.html',\r\n    styleUrl: './utility-modal.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CuiRenderDynamicComponentsService]\r\n})\r\nexport class CuiUtilityModalComponent {\r\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n    private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n    protected readonly utility = this.cuiDialogContext.data.utility;\r\n    protected readonly initialComponent = this.cuiDialogContext.data.initialComponent;\r\n\r\n    constructor() {\r\n        this.cuiRenderDynamicComponentsService.open({\r\n            component: this.initialComponent,\r\n            inputs: { initialUtility: this.utility }\r\n        });\r\n    }\r\n}\r\n","<cui-render-dynamic-components />\r\n","import type { ElementRef, OnInit } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    DestroyRef,\r\n    effect,\r\n    inject,\r\n    input,\r\n    model,\r\n    output,\r\n    signal,\r\n    untracked,\r\n    viewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Criterion, CuiTreeStructNavigatorApiService, MovingType, StorageObject, TreeStruct, TreeStructType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService } from '@cuby-ui/cdk';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport type { Observable, Subscription } from 'rxjs';\r\nimport { finalize, forkJoin } from 'rxjs';\r\n\r\nimport {\r\n    CuiBadgeModule,\r\n    CuiButtonModule,\r\n    CuiDialogModule,\r\n    CuiFormFieldModule,\r\n    CuiLabelModule,\r\n    CuiSvgModule\r\n} from '../../../components';\r\nimport type { CuiEditorConfig } from '../../../editor';\r\nimport { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';\r\nimport { CuiCriterionFormValues, CuiCriterionInfoFormComponent } from '../criterion-info-form';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityModalService } from '../utility-modal';\r\n\r\n@Component({\r\n    selector: 'cui-criterion-info',\r\n    imports: [\r\n        CuiBadgeModule,\r\n        CuiButtonModule,\r\n        CuiCategoriesComponent,\r\n        CuiDialogModule,\r\n        CuiFormFieldModule,\r\n        CuiCriterionInfoFormComponent,\r\n        CuiLabelModule,\r\n        CuiSvgModule,\r\n        TranslocoModule\r\n    ],\r\n    standalone: true,\r\n    templateUrl: './criterion-info.component.html',\r\n    styleUrls: ['./criterion-info.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [CuiSelectedCategoryService]\r\n})\r\nexport class CuiCriterionInfoComponent implements OnInit {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly cuiIdService = inject(CuiIdService);\r\n    private readonly cuiCategoriesModalService = inject(CuiSelectedCategoryService);\r\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n    private readonly criterionApiService = inject<UtilityModalService<Criterion>>(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n    protected readonly TYPE = TreeStructType.Instruction;\r\n\r\n    private subscription!: Subscription;\r\n    private skipCategoryChange = false;\r\n\r\n    protected readonly categoryId = this.cuiIdService.generate();\r\n\r\n    protected readonly category = this.cuiCategoriesModalService.category;\r\n    protected readonly isFormValid = signal(false);\r\n    protected readonly prevCategoryId = signal<CuiNullable<string>>(null);\r\n    protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n    protected readonly labelColor = computed(() =>\r\n        this.category()?.title ? 'var(--cui-base-900)' : 'var(--cui-base-400)'\r\n    );\r\n    protected readonly selectTitle = computed(\r\n        () => this.category()?.title || this.translocoService.translate('SELECT') + '...'\r\n    );\r\n\r\n    protected readonly element = viewChild<ElementRef<HTMLElement>>('scrollContent');\r\n\r\n    public readonly criterion = model<StorageObject<Criterion>>();\r\n    public readonly config = input.required<CuiEditorConfig>();\r\n\r\n    public readonly validationChanged = output<boolean>();\r\n    public readonly criterionCreated = output<string>();\r\n\r\n    constructor() {\r\n        this.initConfigEffect();\r\n        this.initCategoryEffect();\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initCategory();\r\n    }\r\n\r\n    protected onFormChanged(values: Partial<CuiCriterionFormValues>, criterionId: string): void {\r\n        const actions: Record<keyof CuiCriterionFormValues, (value: string) => Observable<void>> = {\r\n            title: (title: string) => this.changeTitle(title, criterionId),\r\n            description: (description: string) => this.changeDescription(description, criterionId)\r\n        };\r\n\r\n        forkJoin(\r\n            Object.keys(values).map((key) =>\r\n                actions[key as keyof CuiCriterionFormValues](values[key as keyof CuiCriterionFormValues] || '')\r\n            )\r\n        )\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe();\r\n    }\r\n\r\n    protected onFormValidationChanged(isValid: boolean): void {\r\n        this.isFormValid.set(isValid);\r\n        this.validationChanged.emit(isValid);\r\n    }\r\n\r\n    private initCategoryEffect(): void {\r\n        effect(() => {\r\n            const category = this.category();\r\n            const storageObjectCriterion = untracked(this.criterion);\r\n\r\n            if (!category || this.skipCategoryChange) {\r\n                this.skipCategoryChange = false;\r\n\r\n                return;\r\n            }\r\n\r\n            if (storageObjectCriterion) {\r\n                this.changeCategory(category.id, storageObjectCriterion.id);\r\n\r\n                return;\r\n            }\r\n\r\n            this.createCriterion(category.id);\r\n        });\r\n    }\r\n\r\n    private initConfigEffect(): void {\r\n        effect(() => {\r\n            const element = this.element()?.nativeElement;\r\n\r\n            if (!element) {\r\n                return;\r\n            }\r\n\r\n            this.editorConfig.set({ ...this.config(), element });\r\n        });\r\n    }\r\n\r\n    private initCategory(): void {\r\n        const storageObjectId = this.criterion()?.id;\r\n\r\n        if (!storageObjectId) {\r\n            return;\r\n        }\r\n\r\n        this.treeStructNavigatorApiService\r\n            .getCategory(storageObjectId, TreeStructType.Criteria, this.config().requestOptions)\r\n            .pipe(takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((category) => {\r\n                this.skipCategoryChange = true;\r\n                this.prevCategoryId.set(category.id);\r\n                this.cuiCategoriesModalService.setCurrentCategory(category as TreeStruct);\r\n            });\r\n    }\r\n\r\n    private changeCategory(categoryId: string, targetId: string): void {\r\n        const prevCategoryId = untracked(this.prevCategoryId);\r\n\r\n        if (!prevCategoryId) {\r\n            return;\r\n        }\r\n\r\n        this.subscription?.unsubscribe();\r\n        this.subscription = this.treeStructNavigatorApiService\r\n            .moveElement({\r\n                type: MovingType.TARGET_TREE_STRUCT,\r\n                movableItemId: targetId,\r\n                treeStructTargetItemId: categoryId,\r\n                treeStructMovableItemId: prevCategoryId\r\n            }, this.config().requestOptions)\r\n            .subscribe(() => this.prevCategoryId.set(categoryId));\r\n    }\r\n\r\n    private createCriterion(categoryId: string): void {\r\n        this.criterionCreated.emit(categoryId);\r\n        this.prevCategoryId.set(categoryId);\r\n    }\r\n\r\n    private changeTitle(value: string, criterionId: string): Observable<void> {\r\n        return this.criterionApiService.changeTitle(criterionId, value, this.config().requestOptions).pipe(\r\n            finalize(() =>\r\n                this.criterion.update((prev) => ({\r\n                    ...prev!,\r\n                    storageElement: { ...prev!.storageElement, title: value }\r\n                }))\r\n            )\r\n        );\r\n    }\r\n\r\n    private changeDescription(value: string, criterionId: string): Observable<void> {\r\n        if (!this.criterionApiService.changeDescription) {\r\n            throw new Error('Change description not implemented');\r\n        }\r\n\r\n        return this.criterionApiService.changeDescription(criterionId, value, this.config().requestOptions).pipe(\r\n            finalize(() =>\r\n                this.criterion.update((prev) => ({\r\n                    ...prev!,\r\n                    storageElement: { ...prev!.storageElement, shortDescription: value }\r\n                }))\r\n            )\r\n        );\r\n    }\r\n}\r\n","<div\r\n    class=\"wrapper\"\r\n    *transloco=\"let t\"\r\n>\r\n    <div\r\n        #scrollContent\r\n        class=\"content content_scrollable\"\r\n    >\r\n        <div class=\"category\">\r\n            <cui-form-field>\r\n                <label\r\n                    cuiLabel\r\n                    [for]=\"categoryId\"\r\n                    [isRequired]=\"true\"\r\n                >\r\n                    {{ t('SELECT_CATEGORY') }}\r\n                </label>\r\n                <cui-categories\r\n                    [buttonId]=\"categoryId\"\r\n                    [treeStructType]=\"TYPE\"\r\n                >\r\n                    <div class=\"select\">\r\n                        <span [style.color]=\"labelColor()\">\r\n                            {{ selectTitle() }}\r\n                        </span>\r\n\r\n                        <cui-svg icon=\"cuiIconChevronDown\" />\r\n                    </div>\r\n                </cui-categories>\r\n            </cui-form-field>\r\n        </div>\r\n\r\n        @let criterionData = criterion();\r\n        @let editorConfigData = editorConfig();\r\n\r\n        @if (editorConfigData && criterionData) {\r\n            <cui-criterion-info-form\r\n                [config]=\"editorConfigData\"\r\n                [title]=\"criterionData.storageElement.title\"\r\n                [description]=\"criterionData.storageElement.shortDescription\"\r\n                [framerId]=\"criterionData.storageElement.framerCriterionId\"\r\n                class=\"utility\"\r\n                (isFormValidChanged)=\"onFormValidationChanged($event)\"\r\n                (formChanged)=\"onFormChanged($event, criterionData.id)\"\r\n            />\r\n        }\r\n    </div>\r\n</div>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\n\r\nimport { CuiCardWrapperComponent } from '../../../../../components';\r\nimport { CuiSvgModule } from '../../../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-select-modal-folder',\r\n    imports: [CuiSvgModule, CuiCardWrapperComponent, NgTemplateOutlet],\r\n    templateUrl: './select-modal-folder.component.html',\r\n    styleUrl: './select-modal-folder.component.scss',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSelectModalFolderComponent {\r\n    protected readonly icon = computed(() => (this.isOpen() ? 'cuiIconFolderOpen' : 'cuiIconFolder'));\r\n\r\n    public readonly title = input.required<string>();\r\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly isOpen = input(false);\r\n}\r\n","<cui-card-wrapper class=\"wrapper\">\r\n    <ng-container [ngTemplateOutlet]=\"buttonSlot()\" />\r\n\r\n    <cui-svg\r\n        [icon]=\"icon()\"\r\n        class=\"icon\"\r\n    />\r\n\r\n    <span class=\"title\">{{ title() }}</span>\r\n</cui-card-wrapper>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs';\r\n\r\nimport { CuiIconButtonModule } from '../../../../../components';\r\nimport { CuiInputModule } from '../../../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-select-modal-search',\r\n    imports: [CuiInputModule, CuiIconButtonModule, ReactiveFormsModule],\r\n    templateUrl: './select-modal-search.component.html',\r\n    styleUrl: './select-modal-search.component.scss',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSelectModalSearchComponent implements OnInit {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n\r\n    public readonly searchControl = input<FormControl>(new FormControl(''));\r\n    public readonly controlDelay = input<number>(700);\r\n\r\n    public readonly searchStringChanged = output<string>();\r\n\r\n    public ngOnInit(): void {\r\n        this.searchControl()\r\n            .valueChanges.pipe(debounceTime(this.controlDelay()), takeUntilDestroyed(this.destroyRef))\r\n            .subscribe((value) => this.searchStringChanged.emit(value));\r\n    }\r\n}\r\n","<cui-input-text\r\n    cuiTextFieldPlaceholder=\"Search...\"\r\n    cuiTextFieldIconLeft=\"cuiIconSearch\"\r\n    [formControl]=\"searchControl()\"\r\n    class=\"search\"\r\n/>\r\n<button\r\n    class=\"filters\"\r\n    type=\"button\"\r\n    cuiIconButton\r\n    icon=\"cuiIconFiltersLines\"\r\n></button>\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport type { CuiSelectModalDialogData } from './select-modal.interfaces';\r\n\r\nimport type { CuiDialogContext } from '../../../components';\r\nimport { CUI_DIALOG_CONTEXT, CuiDialogModule } from '../../../components';\r\nimport { CuiButtonModule } from '../../../components';\r\nimport { CuiIconButtonModule } from '../../../components';\r\nimport { CuiInputModule } from '../../../components';\r\n\r\n@Component({\r\n    imports: [\r\n        CuiButtonModule,\r\n        CuiDialogModule,\r\n        CuiIconButtonModule,\r\n        CuiInputModule,\r\n        NgComponentOutlet,\r\n        TranslocoDirective\r\n    ],\r\n    templateUrl: './select-modal.component.html',\r\n    styleUrl: './select-modal.component.scss',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSelectModalComponent {\r\n    protected readonly context = inject<CuiDialogContext<CuiSelectModalDialogData>>(CUI_DIALOG_CONTEXT);\r\n\r\n    private readonly data = this.context.data;\r\n    protected readonly heading = this.data.heading;\r\n    protected readonly leftData = this.data.leftData;\r\n    protected readonly rightData = this.data.rightData;\r\n\r\n    protected onCancel(): void {\r\n        this.context.completeWith();\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <div class=\"content\">\r\n        <header\r\n            class=\"header\"\r\n            cuiDialogHeader\r\n            [heading]=\"heading\"\r\n            (closed)=\"onCancel()\"\r\n        ></header>\r\n        <div class=\"wrapper\">\r\n            <div class=\"left-block\">\r\n                @if (leftData) {\r\n                    <ng-container\r\n                        [ngComponentOutlet]=\"leftData.component\"\r\n                        [ngComponentOutletInputs]=\"leftData.inputs\"\r\n                    />\r\n                }\r\n            </div>\r\n            <div class=\"right-block\">\r\n                @if (rightData) {\r\n                    <ng-container\r\n                        [ngComponentOutlet]=\"rightData.component\"\r\n                        [ngComponentOutletInputs]=\"rightData.inputs\"\r\n                    />\r\n                }\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n","import type { Signal } from '@angular/core';\r\nimport { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSelectModalElement } from './select-modal.interfaces';\r\n\r\n@Injectable()\r\nexport class CuiSelectModalService {\r\n    private readonly selectedElementSignal = signal<CuiNullable<CuiSelectModalElement>>(null);\r\n\r\n    public readonly selectedElement = this.selectedElementSignal.asReadonly();\r\n\r\n    public getSelectedData<T>(): Signal<CuiNullable<T>> {\r\n        return this.selectedElementSignal.asReadonly() as Signal<CuiNullable<T>>;\r\n    }\r\n\r\n    public set(element: CuiSelectModalElement): void {\r\n        this.selectedElementSignal.set(element);\r\n    }\r\n\r\n    public delete(): void {\r\n        this.selectedElementSignal.set(null);\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\n\r\nexport const CUI_STORAGE_LIST_SERVICE_TOKEN = new InjectionToken<CuiStorageListService>('STORAGE_LIST_SERVICE_TOKEN');\r\n\r\nexport interface CuiStorageListService<T = CuiStorageBase> {\r\n    getChildren?(children: CuiStorage<T>, prevChildrens: CuiStorage<T>[]): Observable<CuiStorage<T>[]>;\r\n    getElements?(element: CuiStorage<T>, prevElements: T[]): Observable<T[]>;\r\n}\r\n\r\nexport interface CuiStorageBase {\r\n    readonly id: string;\r\n    readonly name?: string;\r\n    readonly title?: string;\r\n}\r\n\r\nexport interface CuiStorage<T = CuiStorageBase> extends CuiStorageBase {\r\n    readonly elements?: T[];\r\n    readonly children: CuiStorage<T>[] | string[];\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    effect,\r\n    forwardRef,\r\n    inject,\r\n    input,\r\n    signal,\r\n    untracked\r\n} from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiSvgModule } from '../../../../../components';\r\nimport { CuiStorageListComponent } from '../../index';\r\nimport type { CuiStorage, CuiStorageBase } from '../../storage-list.options';\r\nimport { CUI_STORAGE_LIST_SERVICE_TOKEN } from '../../storage-list.options';\r\n\r\n@Component({\r\n    selector: 'li[cuiStorageListItem]',\r\n    imports: [CuiLetDirective, CuiSvgModule, NgTemplateOutlet, forwardRef(() => CuiStorageListComponent)],\r\n    templateUrl: './storage-list-item.component.html',\r\n    styleUrl: './storage-list-item.component.scss',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiStorageListItemComponent<T = CuiStorageBase> {\r\n    private readonly storageListService = inject(CUI_STORAGE_LIST_SERVICE_TOKEN);\r\n\r\n    private isLoadingChildren = false;\r\n    private isLoadingElements = false;\r\n\r\n    protected readonly storageChildren = signal<CuiStorage[]>([]);\r\n    protected readonly storageElements = signal<CuiStorageBase[]>([]);\r\n    protected readonly areContentOpened = signal(false);\r\n    protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\r\n        this.areContentOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\r\n    );\r\n    protected readonly hasContent = computed(\r\n        () => this.storage().children.length || this.storageChildren().length || this.storageElements().length\r\n    );\r\n\r\n    public readonly storage = input.required<CuiStorage<T>>();\r\n    public readonly elementSlot = input<TemplateRef<unknown>>();\r\n    public readonly itemSlot = input<TemplateRef<unknown>>();\r\n\r\n    constructor() {\r\n        this.initStorageChildrenEffect();\r\n        this.initStorageElementsEffect();\r\n    }\r\n\r\n    protected onToggleChildren(event: MouseEvent): void {\r\n        event.preventDefault();\r\n\r\n        this.areContentOpened.update((prevAreChildrenOpened) => !prevAreChildrenOpened);\r\n    }\r\n\r\n    private initStorageChildrenEffect(): void {\r\n        effect(() => {\r\n            const storage = this.storage() as CuiStorage<CuiStorageBase>;\r\n\r\n            this.areContentOpened();\r\n            untracked(this.setChildren.bind(this, storage));\r\n        });\r\n    }\r\n\r\n    private initStorageElementsEffect(): void {\r\n        effect(() => {\r\n            const storage = this.storage() as CuiStorage<CuiStorageBase>;\r\n\r\n            untracked(this.setElements.bind(this, storage));\r\n        });\r\n    }\r\n\r\n    private setChildren(storage: CuiStorage<CuiStorageBase>): void {\r\n        const storageChildren = storage.children;\r\n\r\n        if (!storageChildren.length) {\r\n            this.storageChildren.set([]);\r\n        }\r\n\r\n        if (this.isLoadingChildren || !this.areContentOpened()) {\r\n            return;\r\n        }\r\n\r\n        if (typeof storageChildren[0] !== 'string') {\r\n            this.storageChildren.set(storageChildren as CuiStorage[]);\r\n\r\n            return;\r\n        }\r\n\r\n        this.isLoadingChildren = true;\r\n        this.storageListService\r\n            .getChildren?.(storage, this.storageChildren())\r\n            .pipe(finalize(() => (this.isLoadingChildren = false)))\r\n            .subscribe((response) => this.storageChildren.set(response));\r\n    }\r\n\r\n    private setElements(storage: CuiStorage<CuiStorageBase>): void {\r\n        const storageElements = storage.elements;\r\n\r\n        if (this.isLoadingElements) {\r\n            return;\r\n        }\r\n\r\n        if (!storageElements?.length) {\r\n            this.storageElements.set([]);\r\n\r\n            return;\r\n        }\r\n\r\n        if (this.storageElements().length) {\r\n            this.storageElements.set(storageElements);\r\n\r\n            return;\r\n        }\r\n\r\n        this.isLoadingElements = true;\r\n        this.storageListService\r\n            .getElements?.(storage, this.storageElements())\r\n            .pipe(finalize(() => (this.isLoadingElements = false)))\r\n            .subscribe((response) => this.storageElements.set(response));\r\n    }\r\n}\r\n","<ng-container *cuiLet=\"storage() as storage\">\r\n    <div class=\"wrapper\">\r\n        <ng-template #openCloseButton>\r\n            @if (hasContent()) {\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"button\"\r\n                    (click)=\"onToggleChildren($event)\"\r\n                >\r\n                    <cui-svg\r\n                        [icon]=\"openCloseButtonIcon()\"\r\n                        color=\"var(--cui-base-500)\"\r\n                    />\r\n                </button>\r\n            }\r\n        </ng-template>\r\n\r\n        @if (itemSlot(); as item) {\r\n            <ng-container\r\n                *ngTemplateOutlet=\"\r\n                    item;\r\n                    context: {\r\n                        $implicit: storage,\r\n                        openCloseButton,\r\n                        areContentOpened: areContentOpened(),\r\n                        hasContent: hasContent()\r\n                    }\r\n                \"\r\n            />\r\n        }\r\n\r\n        <div\r\n            class=\"content\"\r\n            [class.content_hidden]=\"!areContentOpened()\"\r\n        >\r\n            <div class=\"lists\">\r\n                @if (storageChildren().length) {\r\n                    <cui-storage-list\r\n                        [storages]=\"storageChildren()\"\r\n                        [elementSlot]=\"elementSlot()\"\r\n                        [itemSlot]=\"itemSlot()\"\r\n                    />\r\n                }\r\n                @if (storageElements().length && elementSlot()) {\r\n                    <ul class=\"list\">\r\n                        @for (element of storageElements(); track element.id) {\r\n                            <li class=\"item\">\r\n                                <ng-container\r\n                                    *ngTemplateOutlet=\"\r\n                                        elementSlot()!;\r\n                                        context: { $implicit: element, storage: storage }\r\n                                    \"\r\n                                />\r\n                            </li>\r\n                        }\r\n                    </ul>\r\n                }\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-container>\r\n","import type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { CuiStorageListItemComponent } from './components';\r\nimport type { CuiStorage } from './storage-list.options';\r\n\r\n@Component({\r\n    selector: 'cui-storage-list',\r\n    imports: [CuiStorageListItemComponent],\r\n    templateUrl: './storage-list.component.html',\r\n    styleUrl: './storage-list.component.scss',\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiStorageListComponent<T> {\r\n    public readonly storages = input.required<CuiStorage<T>[]>();\r\n    public readonly elementSlot = input<TemplateRef<unknown>>();\r\n    public readonly itemSlot = input<TemplateRef<unknown>>();\r\n}\r\n","<ul class=\"list\">\r\n    @for (storage of storages(); track storage.id) {\r\n        <li\r\n            cuiStorageListItem\r\n            [storage]=\"storage\"\r\n            [elementSlot]=\"elementSlot()\"\r\n            [itemSlot]=\"itemSlot()\"\r\n            class=\"item\"\r\n        ></li>\r\n    }\r\n</ul>\r\n","import { computed, inject, Injectable, Signal, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport type { CuiUserCompany } from '@cuby-ui/api';\r\nimport { UserCompanyApiService } from '@cuby-ui/api';\r\nimport { CuiActivityService } from '../user-action-context.option';\r\nimport { CuiUserCompanyActivity } from '@cuby-ui/api/platform/models/user-company-api.options';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CuiActivityBaseService implements CuiActivityService {\r\n    private readonly userCompanyApiService = inject(UserCompanyApiService);\r\n\r\n    private readonly companiesSignal = signal<CuiUserCompany[]>([]);\r\n\r\n    public readonly companies = this.companiesSignal.asReadonly();\r\n\r\n    public initActivityData(): void {\r\n        this.userCompanyApiService\r\n            .getMyCompanies()\r\n            .pipe(takeUntilDestroyed())\r\n            .subscribe((response) => this.companiesSignal.set(response));\r\n    }\r\n\r\n    public checkIsCurrentActivity(activityId: string): boolean {\r\n        return false;\r\n    }\r\n\r\n    public checkIsCurrentCompany(companyId: string): boolean {\r\n        return false;\r\n    }\r\n}\r\n","import { inject, Injectable, signal } from '@angular/core';\r\n\r\nimport type { CuiActivityService } from '../user-action-context.option';\r\nimport { CuiAuthService } from '../../../../providers';\r\nimport type { CuiExchangeTokenSession } from '../../../../services';\r\nimport { CuiActivityBaseService } from './activity-base.service';\r\n\r\n@Injectable({\r\n    providedIn: 'any'\r\n})\r\nexport class CuiActivityImplService extends CuiActivityBaseService implements CuiActivityService {\r\n    private readonly cuiAuthService = inject(CuiAuthService);\r\n\r\n    private readonly authData = this.cuiAuthService.getAccessTokenData<CuiExchangeTokenSession>();\r\n    private readonly currentActivityId = this.authData.employee_session?.activityId;\r\n    private readonly currentCompanyId = this.authData.employee_session?.companyId;\r\n    private isCheckActivity = false;\r\n\r\n    public override checkIsCurrentActivity(activityId: string): boolean {\r\n        if (this.currentActivityId === activityId) {\r\n            this.isCheckActivity = true;\r\n        }\r\n\r\n        return this.currentActivityId === activityId;\r\n    }\r\n\r\n    public override checkIsCurrentCompany(companyId: string): boolean {\r\n        if (this.isCheckActivity) {\r\n            return false;\r\n        }\r\n\r\n        return this.currentCompanyId === companyId;\r\n    }\r\n}\r\n","import { InjectionToken, Signal } from '@angular/core';\r\nimport { CuiUserCompany } from '@cuby-ui/api';\r\nimport { CuiUserCompanyActivity } from '@cuby-ui/api/platform/models/user-company-api.options';\r\n\r\nexport const CUI_ACTIVITY_SERVICE_TOKEN = new InjectionToken<CuiActivityService>('ACTIVITY_SERVICE_TOKEN');\r\n\r\nexport interface CuiActivityData {\r\n    readonly companies: Signal<CuiUserCompany[]>;\r\n}\r\n\r\nexport interface CuiActivityService extends CuiActivityData {\r\n    initActivityData(): void;\r\n    checkIsCurrentActivity(activityId: string): boolean;\r\n    checkIsCurrentCompany(companyId: string): boolean;\r\n}\r\n\r\nexport interface LinkConfig {\r\n    userLink: string;\r\n    adminLink: string;\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input } from '@angular/core';\r\nimport { CuiApiUrl, CuiTokenExchangeType, CuiUserCompanyActivity, CuiUserCompanyActivityType } from '@cuby-ui/api';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { CuiLetterBoxComponent } from '../../../../components';\r\nimport { CuiSvgModule } from '../../../../components';\r\nimport { CuiAuthService } from '../../../../providers';\r\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from '../user-action-context.option';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { CuiTooltipDirective } from '../../../../directives';\r\n\r\n@Component({\r\n    selector: 'cui-activity-item',\r\n    standalone: true,\r\n    imports: [CuiLetterBoxComponent, CuiSvgModule, CuiTooltipDirective],\r\n    templateUrl: './activity-item.component.html',\r\n    styleUrl: './activity-item.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class.selected]': 'isSelected()'\r\n    }\r\n})\r\nexport class CuiActivityItemComponent {\r\n    private readonly transloco = inject(TranslocoService);\r\n    private readonly destroy = inject(DestroyRef);\r\n    private readonly cuiAuthService = inject(CuiAuthService);\r\n    private readonly cuiActivityService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\r\n\r\n    protected readonly isSelected = computed(() =>\r\n        this.cuiActivityService.checkIsCurrentActivity(this.activity().activityId)\r\n    );\r\n    protected readonly letterBackgroundColor = computed(() => {\r\n        const licenseType = this.activity().type;\r\n\r\n        return licenseType === CuiUserCompanyActivityType.Manufacture\r\n            ? 'var(--cui-orange-500)'\r\n            : 'var(--cui-light-blue-500)';\r\n    });\r\n\r\n    public readonly activity = input.required<CuiUserCompanyActivity>();\r\n    public readonly companyId = input.required<string>();\r\n\r\n    protected readonly typeCompany = computed(() => {\r\n        return this.transloco.translate(this.activity().type);\r\n    });\r\n\r\n    protected onGoToActivity(): void {\r\n        if (this.isSelected()) {\r\n            return;\r\n        }\r\n\r\n        this.cuiAuthService\r\n            .exchangeToken({\r\n                type: CuiTokenExchangeType.Activity,\r\n                activityId: this.activity().activityId,\r\n                companyId: this.companyId()\r\n            })\r\n            .pipe(takeUntilDestroyed(this.destroy))\r\n            .subscribe(() => {\r\n                const type = this.activity().type;\r\n                const activityMap = {\r\n                    [CuiUserCompanyActivityType.Developer]: CuiApiUrl.Project,\r\n                    [CuiUserCompanyActivityType.Manufacture]: CuiApiUrl.Manufacturing\r\n                };\r\n\r\n                window.location.href = `${window.location.origin}/${activityMap[type]}`;\r\n            });\r\n    }\r\n}\r\n","<div\r\n    class=\"wrapper\"\r\n    (click)=\"onGoToActivity()\"\r\n    [cuiTooltip]=\"activity().description\"\r\n>\r\n    <button\r\n        type=\"button\"\r\n        class=\"activity-button\"\r\n    >\r\n        <cui-letter-box\r\n            [letter]=\"activity().description[0]\"\r\n            [shape]=\"'rounded'\"\r\n            [backgroundColor]=\"letterBackgroundColor()\"\r\n            size=\"md\"\r\n        />\r\n        <div class=\"text\">\r\n            <span class=\"title\">{{ activity().description }}</span>\r\n            <span class=\"sub-title\">{{ typeCompany() }}</span>\r\n        </div>\r\n    </button>\r\n\r\n    @if (isSelected()) {\r\n        <div class=\"icon-wrapper\">\r\n            <cui-svg\r\n                [icon]=\"'cuiIconCheck'\"\r\n                color=\"var(--cui-info)\"\r\n            />\r\n        </div>\r\n    }\r\n</div>\r\n","import { Component, computed, DestroyRef, inject, input } from '@angular/core';\r\nimport { CuiTokenExchangeType, CuiUserCompany } from '@cuby-ui/api';\r\nimport { CuiLetterBoxComponent, CuiSvgModule } from '../../../../components';\r\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from '../user-action-context.option';\r\n\r\nimport { CuiAuthService } from '../../../../providers';\r\nimport { CuiTokenData, CuiTokenRole } from '../../../../services';\r\nimport { TranslocoPipe } from '@jsverse/transloco';\r\nimport { CuiTooltip } from '../../../../directives';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n    selector: 'cui-company-item',\r\n    standalone: true,\r\n    imports: [CuiLetterBoxComponent, CuiSvgModule, TranslocoPipe, CuiTooltip],\r\n    templateUrl: './company-item.component.html',\r\n    styleUrl: './company-item.component.scss',\r\n    host: {\r\n        '[class.selected]': 'isSelected()'\r\n    }\r\n})\r\nexport class CompanyItemComponent {\r\n    private readonly cuiAuthService = inject(CuiAuthService);\r\n    private readonly cuiActivityCompanyService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\r\n\r\n    private readonly COMPANY: string = 'company';\r\n    private readonly destroy = inject(DestroyRef);\r\n\r\n    protected readonly isSelected = computed(() =>\r\n        this.cuiActivityCompanyService.checkIsCurrentCompany(this.company().companyId)\r\n    );\r\n\r\n    protected readonly urlCompanyTemplate = computed(() => {\r\n        const origin = window.location.origin;\r\n        const userBasePath = '/cuby-platform/user/works';\r\n        const adminBasePath = '/cuby-platform/admin/companies/edit';\r\n\r\n        return {\r\n            userLink: `${origin}${userBasePath}/${this.COMPANY}/{id}/company-structure`,\r\n            adminLink: `${origin}${adminBasePath}/{id}`\r\n        };\r\n    });\r\n\r\n    public readonly company = input.required<CuiUserCompany>();\r\n    public readonly selected = input(false);\r\n\r\n    public getRoles(): string[] {\r\n        const token = this.cuiAuthService.getAccessTokenData<CuiTokenData>();\r\n\r\n        return token.realm_access.roles;\r\n    }\r\n\r\n    public checkIsAdmin(): boolean {\r\n        const roles = this.getRoles();\r\n\r\n        return roles.includes(CuiTokenRole.Admin);\r\n    }\r\n\r\n    protected onGoToCompany(): void {\r\n        if (this.isSelected()) {\r\n            return;\r\n        }\r\n\r\n        this.cuiAuthService\r\n            .exchangeToken({\r\n                type: CuiTokenExchangeType.Company,\r\n                companyId: this.company().companyId\r\n            })\r\n            .pipe(takeUntilDestroyed(this.destroy))\r\n            .subscribe(() => {\r\n                const userBasePath = '/cuby-platform/user/works';\r\n                const adminBasePath = '/cuby-platform/admin/companies/edit';\r\n\r\n                const basePath = this.checkIsAdmin() ? adminBasePath : userBasePath;\r\n                const companyPath = this.checkIsAdmin()\r\n                    ? `/${this.company().companyId}`\r\n                    : `/${this.COMPANY}/${this.company().companyId}/company-structure`;\r\n\r\n                window.location.href = `${window.location.origin}${basePath}${companyPath}`;\r\n            });\r\n    }\r\n}\r\n","<div\r\n    class=\"title-company\"\r\n    (click)=\"onGoToCompany()\"\r\n    [cuiTooltip]=\"company().name\"\r\n>\r\n    <button\r\n        type=\"button\"\r\n        class=\"company-button\"\r\n    >\r\n        <cui-letter-box\r\n            [letter]=\"company().name[0]\"\r\n            [backgroundColor]=\"'var(--cui-orange-500)'\"\r\n            size=\"md\"\r\n        />\r\n        <div class=\"text\">\r\n            <span class=\"title\">{{ company().name }}</span>\r\n            <span class=\"sub-title\">{{ 'COMPANY' | transloco }}</span>\r\n        </div>\r\n    </button>\r\n\r\n    @if (isSelected()) {\r\n        <div class=\"icon-wrapper\">\r\n            <cui-svg\r\n                [icon]=\"'cuiIconCheck'\"\r\n                color=\"var(--cui-info)\"\r\n            />\r\n        </div>\r\n    }\r\n</div>\r\n","import {Component, inject} from '@angular/core';\r\nimport {CuiSvgModule} from \"../../../components/svg\";\r\nimport {CuiTheme, CuiThemeService} from \"../../../services\";\r\nimport {AsyncPipe} from \"@angular/common\";\r\nimport {TranslocoDirective} from \"@jsverse/transloco\";\r\n\r\n@Component({\r\n  selector: 'cui-button-change-theme',\r\n  standalone: true,\r\n    imports: [\r\n        CuiSvgModule,\r\n        AsyncPipe,\r\n        TranslocoDirective\r\n    ],\r\n  templateUrl: './button-change-theme.component.html',\r\n  styleUrl: './button-change-theme.component.scss'\r\n})\r\nexport class ButtonChangeThemeComponent {\r\n    private readonly cuiThemeService = inject(CuiThemeService);\r\n    protected readonly theme$ = this.cuiThemeService.asObservable();\r\n\r\n    protected onChangeTheme(theme: CuiTheme): void {\r\n        this.cuiThemeService.next(theme);\r\n    }\r\n}\r\n","@let currentTheme = theme$ | async;\r\n\r\n<ng-container *transloco=\"let t\">\r\n<button type=\"button\"\r\n        class=\"custom-button\">\r\n    <div class=\"content-button\">\r\n        <cui-svg icon=\"cuiIconPaletteSm\" />\r\n        <div class=\"text-and-sub-button\">\r\n            {{ t('SWITCH_THEME') }}\r\n            <div class=\"group-sub-button\">\r\n                <div\r\n                    [class.button-select]=\"currentTheme === 'dark'\"\r\n                    class=\"container-sub-button\"\r\n                >\r\n                    <cui-svg\r\n                        icon=\"cuiIconMoon\"\r\n                        color=\"var(--cui-base-500)\"\r\n                        (click)=\"onChangeTheme('dark')\"\r\n                    />\r\n                </div>\r\n                <div\r\n                    [class.button-select]=\"currentTheme === 'light'\"\r\n                    class=\"container-sub-button\"\r\n                >\r\n                    <cui-svg\r\n                        icon=\"cuiIconSun\"\r\n                        color=\"var(--cui-base-500)\"\r\n                        (click)=\"onChangeTheme('light')\"\r\n                    />\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</button>\r\n</ng-container>\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, effect, inject, output, signal } from '@angular/core';\r\nimport { LangDefinition, TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport { CuiApiUrl } from '@cuby-ui/api';\r\n\r\nimport {\r\n    CuiButtonModule,\r\n    CuiContextMenuModule,\r\n    CuiDropdownDirective,\r\n    CuiDropdownWrapperComponent,\r\n    CuiLetterBoxComponent,\r\n    CuiSvgModule\r\n} from '../../../components';\r\nimport type { CuiExchangeTokenSession } from '../../../services';\r\nimport { CuiActivityItemComponent } from './activity-item';\r\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from './user-action-context.option';\r\nimport { CuiAuthService } from '../../../providers';\r\nimport { CompanyItemComponent } from './company-item';\r\nimport { CuiUserCompanyActivity } from '@cuby-ui/api/platform/models/user-company-api.options';\r\nimport { ButtonChangeThemeComponent } from \"../button-change-theme\";\r\n\r\n@Component({\r\n    selector: 'cui-user-action-context-menu',\r\n    standalone: true,\r\n    imports: [\r\n        TranslocoDirective,\r\n        CuiSvgModule,\r\n        CuiDropdownDirective,\r\n        CuiDropdownWrapperComponent,\r\n        CuiLetterBoxComponent,\r\n        CuiButtonModule,\r\n        CuiContextMenuModule,\r\n        CuiActivityItemComponent,\r\n        AsyncPipe,\r\n        CompanyItemComponent,\r\n        CuiActivityItemComponent,\r\n        ButtonChangeThemeComponent,\r\n        ButtonChangeThemeComponent\r\n    ],\r\n    templateUrl: './user-action-context-menu.component.html',\r\n    styleUrl: './user-action-context-menu.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUserActionContextMenuComponent {\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly cuiWindow = inject(CUI_WINDOW);\r\n    private readonly cuiAuthService = inject(CuiAuthService);\r\n    private readonly cuiActivityService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\r\n\r\n    private readonly authData = this.cuiAuthService.getAccessTokenData<CuiExchangeTokenSession>();\r\n\r\n    protected readonly langs = this.translocoService.getAvailableLangs();\r\n    protected readonly email = this.authData.email;\r\n    protected readonly fullName = this.authData.name;\r\n\r\n    protected readonly lang$ = this.translocoService.langChanges$;\r\n\r\n    protected readonly isOpen = signal(false);\r\n    protected readonly companies = this.cuiActivityService.companies;\r\n\r\n    public readonly currentActivityChange = output<CuiUserCompanyActivity | null>();\r\n\r\n    constructor() {\r\n        this.cuiActivityService.initActivityData();\r\n        this.findCurrentActivity();\r\n    }\r\n\r\n    protected onLogout(): void {\r\n        this.cuiAuthService.logOut();\r\n    }\r\n\r\n    protected onToggleOpenState(open: boolean): void {\r\n        this.isOpen.set(open);\r\n    }\r\n\r\n    protected onGoToPlatform(): void {\r\n        this.cuiWindow.location.href = `${this.cuiWindow.location.origin}/${CuiApiUrl.Platform}`;\r\n    }\r\n\r\n    protected onChangeLang(lang: string | LangDefinition): void {\r\n        if (typeof lang === 'string') {\r\n            this.translocoService.setActiveLang(lang);\r\n\r\n            return;\r\n        }\r\n\r\n        this.translocoService.setActiveLang(lang.label);\r\n    }\r\n\r\n    protected findCurrentActivity(): void {\r\n        effect(() => {\r\n            const companies = this.companies();\r\n            for (const company of companies) {\r\n                for (const activity of company.contexts) {\r\n                    if (this.cuiActivityService.checkIsCurrentActivity(activity.activityId)) {\r\n                        return this.currentActivityChange.emit(activity);\r\n                    }\r\n                }\r\n            }\r\n            this.currentActivityChange.emit(null);\r\n        });\r\n    }\r\n}\r\n","@let currentLang = lang$ | async;\r\n\r\n<ng-container *transloco=\"let t\">\r\n    <button\r\n        type=\"button\"\r\n        [cuiDropdown]=\"content\"\r\n        class=\"select\"\r\n        (isOpened)=\"onToggleOpenState($event)\"\r\n    >\r\n        <ng-content />\r\n    </button>\r\n\r\n    <ng-template #content>\r\n        @if (isOpen()) {\r\n            <cui-dropdown-wrapper\r\n                width=\"300px\"\r\n                maxHeight=\"500px\"\r\n            >\r\n                <div\r\n                    #dropdownContainer\r\n                    class=\"wrapper\"\r\n                >\r\n                    <div class=\"block-name\">\r\n                        <div>\r\n                            <cui-letter-box\r\n                                [letter]=\"fullName[0]\"\r\n                                [shape]=\"'rounded'\"\r\n                                size=\"md\"\r\n                            />\r\n                        </div>\r\n                        <div>\r\n                            <ul class=\"title-text\">\r\n                                {{\r\n                                    fullName\r\n                                }}\r\n                            </ul>\r\n                            <ul class=\"subtitle-text\">\r\n                                {{\r\n                                    email\r\n                                }}\r\n                            </ul>\r\n                        </div>\r\n                    </div>\r\n                    <div\r\n                        class=\"wrapper-platform block-platform\"\r\n                        (click)=\"onGoToPlatform()\"\r\n                    >\r\n                        <cui-svg\r\n                            icon=\"cuiIconLogo\"\r\n                            color=\"var(--cui-base-900)\"\r\n                        />\r\n                        <div>{{ t('CUBY_PLATFORM') }}</div>\r\n                    </div>\r\n                    <div class=\"list-company\">\r\n                        @for (company of companies(); track company.id) {\r\n                            <cui-company-item [company]=\"company\" />\r\n\r\n                            <div class=\"list-activity\">\r\n                                @for (activity of company.contexts; track activity) {\r\n                                    <cui-activity-item\r\n                                        class=\"activity-item\"\r\n                                        [activity]=\"activity\"\r\n                                        [companyId]=\"company.companyId\"\r\n                                    />\r\n                                } @empty {\r\n                                    <div class=\"sub-title-text\">{{ t('YOU_DONT_HAVE_ACTIVITY_IN_THIS_COMPANY') }}</div>\r\n                                }\r\n                            </div>\r\n                        } @empty {\r\n                            <div class=\"sub-title-text\">{{ t('YOU_DONT_HAVE_COMPANY') }}</div>\r\n                        }\r\n                    </div>\r\n                    <div class=\"block-button\">\r\n                       <cui-button-change-theme />\r\n                        <button type=\"button\">\r\n                            <div class=\"content-button\">\r\n                                <cui-svg icon=\"cuiIconGlobeSm\" />\r\n                                <div class=\"text-and-sub-button\">\r\n                                    {{ t('LANGUAGE') }}\r\n                                    <div class=\"group-sub-button\">\r\n                                        @for (lang of langs; track lang) {\r\n                                            <div\r\n                                                [class.container-sub-button__select]=\"currentLang === lang\"\r\n                                                class=\"container-sub-button\"\r\n                                                (click)=\"onChangeLang(lang)\"\r\n                                            >\r\n                                                {{ lang }}\r\n                                            </div>\r\n                                        }\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </button>\r\n                        <button\r\n                            type=\"button\"\r\n                            (click)=\"onLogout()\"\r\n                        >\r\n                            <div class=\"content-button\">\r\n                                <cui-svg icon=\"cuiIconLogOutSm\" />\r\n                                <div class=\"text-and-sub-button\">{{ t('LOG_OUT') }}</div>\r\n                            </div>\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </cui-dropdown-wrapper>\r\n        }\r\n    </ng-template>\r\n</ng-container>\r\n","import { Component, inject, input, output } from '@angular/core';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { CuiContextMenuItem } from '../../../interfaces';\r\nimport { CuiTooltip } from '../../../directives';\r\nimport { AlertHintComponent } from '../../../components/alert-hint/alert-hint.component';\r\nimport { OptionsButtonComponent } from '../../../components/options-button/options-button.component';\r\n\r\n@Component({\r\n    selector: 'cui-assignee-role-item',\r\n    standalone: true,\r\n    imports: [CuiTooltip, AlertHintComponent, TranslocoDirective, OptionsButtonComponent],\r\n    templateUrl: './assignee-role-item.component.html',\r\n    styleUrl: './assignee-role-item.component.scss'\r\n})\r\nexport class AssigneeRoleItemComponent {\r\n    private readonly translocoService = inject(TranslocoService);\r\n\r\n    protected readonly OPTIONS: CuiContextMenuItem[] = [\r\n        {\r\n            label: this.translocoService.translate('DELETE'),\r\n            icon: 'cuiIconTrash',\r\n            color: 'var(--cui-danger)',\r\n            command: () => this.deleteClicked.emit()\r\n        }\r\n    ];\r\n\r\n    public readonly role = input.required<string>();\r\n    public readonly readonly = input(false);\r\n    public readonly empty = input(false);\r\n\r\n    public readonly deleteClicked = output();\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <span></span>\r\n    <span\r\n        class=\"title\"\r\n        [cuiTooltip]=\"role()\"\r\n    >\r\n        {{ role() }}\r\n    </span>\r\n\r\n    @if (!readonly()) {\r\n        @if (empty()) {\r\n            <cui-alert-hint\r\n                status=\"warning\"\r\n                [tooltipText]=\"t('NO_ENTITIES_ADDED')\"\r\n            />\r\n        }\r\n        <cui-options-button [options]=\"OPTIONS\" />\r\n    } @else {\r\n        <span></span>\r\n    }\r\n</ng-container>\r\n","import { Component, ElementRef, input, output, TemplateRef, viewChild } from '@angular/core';\r\nimport {\r\n    CuiButtonModule,\r\n    CuiTabDirective,\r\n    CuiTabsComponent,\r\n    CuiTabsServiceImpl,\r\n    provideCuiTabs\r\n} from '../../../components';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n    selector: 'cui-assignee-roles-tabs',\r\n    standalone: true,\r\n    imports: [CuiTabsComponent, CuiTabDirective, TranslocoDirective, CuiButtonModule, NgTemplateOutlet],\r\n    templateUrl: './assignee-roles-tabs.component.html',\r\n    styleUrl: './assignee-roles-tabs.component.scss',\r\n    providers: [provideCuiTabs(CuiTabsServiceImpl)]\r\n})\r\nexport class AssigneeRolesTabsComponent {\r\n    protected readonly SCROLL_LENGTH = 200;\r\n\r\n    protected readonly buttons = viewChild.required<ElementRef<HTMLDivElement>>('buttons');\r\n\r\n    public readonly tabs = input.required<unknown[]>();\r\n    public readonly itemSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly contentSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly selectedIndex = input(0);\r\n    public readonly selectedIndexChange = output<number>();\r\n\r\n    protected trackTab(index: number, tab: unknown): unknown {\r\n        if (tab && typeof tab === 'object' && 'id' in (tab as object)) {\r\n            return (tab as { id: unknown }).id;\r\n        }\r\n\r\n        return `tab_${index}`;\r\n    }\r\n\r\n    protected onSelectTab(index: number): void {\r\n        this.selectedIndexChange.emit(index);\r\n    }\r\n\r\n    protected onScrollLeft(): void {\r\n        const buttonsElement = this.buttons().nativeElement;\r\n\r\n        buttonsElement.scrollTo({\r\n            left: buttonsElement.scrollLeft - this.SCROLL_LENGTH,\r\n            behavior: 'smooth'\r\n        });\r\n    }\r\n\r\n    protected onScrollRight(): void {\r\n        const buttonsElement = this.buttons().nativeElement;\r\n\r\n        buttonsElement.scrollTo({\r\n            left: buttonsElement.scrollLeft + this.SCROLL_LENGTH,\r\n            behavior: 'smooth'\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <cui-tabs\r\n        class=\"tabs\"\r\n        [selectedIndex]=\"selectedIndex()\"\r\n        [headerSlot]=\"headerSlot\"\r\n    >\r\n        <ng-template\r\n            #headerSlot\r\n            let-buttons\r\n        >\r\n            <header class=\"header\">\r\n                <div\r\n                    #buttons\r\n                    class=\"buttons\"\r\n                >\r\n                    <ng-container [ngTemplateOutlet]=\"buttons\" />\r\n                </div>\r\n                <div class=\"actions\">\r\n                    @if (tabs().length > 4) {\r\n                        <button\r\n                            cuiButton\r\n                            type=\"button\"\r\n                            appearance=\"ghost\"\r\n                            size=\"xxs\"\r\n                            icon=\"cuiIconChevronLeft\"\r\n                            (click)=\"onScrollLeft()\"\r\n                        ></button>\r\n                        <button\r\n                            cuiButton\r\n                            type=\"button\"\r\n                            appearance=\"ghost\"\r\n                            size=\"xxs\"\r\n                            icon=\"cuiIconChevronRight\"\r\n                            (click)=\"onScrollRight()\"\r\n                        ></button>\r\n                    }\r\n\r\n                    <ng-container [ngTemplateOutlet]=\"buttonSlot()\" />\r\n                </div>\r\n            </header>\r\n        </ng-template>\r\n\r\n        @for (tab of tabs(); track trackTab($index, tab); let i = $index) {\r\n            <cui-tab\r\n                [data]=\"tab\"\r\n                [buttonSlot]=\"cuiButtonSlot\"\r\n                [contentSlot]=\"cuiContentSlot\"\r\n                class=\"tab\"\r\n            >\r\n                <ng-template\r\n                    #cuiButtonSlot\r\n                    let-isActive=\"isActive\"\r\n                    let-element\r\n                >\r\n                    <div\r\n                        class=\"button\"\r\n                        [class.button_active]=\"isActive\"\r\n                        (click)=\"onSelectTab(i)\"\r\n                        (keyup.enter)=\"onSelectTab(i)\"\r\n                        role=\"button\"\r\n                        tabindex=\"0\"\r\n                    >\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"itemSlot()\"\r\n                            [ngTemplateOutletContext]=\"{ $implicit: element }\"\r\n                        />\r\n                    </div>\r\n                </ng-template>\r\n                <ng-template\r\n                    #cuiContentSlot\r\n                    let-element\r\n                >\r\n                    <div class=\"content\">\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"contentSlot()\"\r\n                            [ngTemplateOutletContext]=\"{ $implicit: element }\"\r\n                        />\r\n                    </div>\r\n                </ng-template>\r\n            </cui-tab>\r\n        }\r\n    </cui-tabs>\r\n</ng-container>\r\n","import { Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport { createEditorTools, CuiEditorComponent, CuiEditorConfig } from '../../../editor';\r\nimport { Subscription } from 'rxjs';\r\nimport { CuiNullable } from '@cuby-ui/cdk';\r\nimport {\r\n    CuiApiContext,\r\n    CuiFrameApiService,\r\n    Fragment,\r\n    FragmentType,\r\n    JTextFragment,\r\n    ResourceFragment,\r\n    SHARED_INSTRUCTION_HTTP_OPTIONS,\r\n    SHARED_CONSTRUCTION_HTTP_OPTIONS\r\n} from '@cuby-ui/api';\r\nimport { ImgUrl } from './utility-info-readonly.options';\r\nimport { CuiEmptyStateComponent } from '../../../components';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\n@Component({\r\n    selector: 'cui-utility-info-readonly',\r\n    standalone: true,\r\n    imports: [CuiEditorComponent, CuiEmptyStateComponent, TranslocoDirective],\r\n    templateUrl: './utility-info-readonly.component.html',\r\n    styleUrl: './utility-info-readonly.component.scss'\r\n})\r\nexport class UtilityInfoReadonlyComponent {\r\n    private readonly hostElement = inject(ElementRef).nativeElement;\r\n    private readonly frameApiService = inject(CuiFrameApiService);\r\n\r\n    private subscription!: Subscription;\r\n\r\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\r\n    protected readonly thumbnailUrl = signal<CuiNullable<ImgUrl>>(null);\r\n\r\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\r\n\r\n    public readonly environmentUrlForResources = input<string>();\r\n    public readonly environmentUrlForInstruction = input<string>();\r\n    public readonly context = signal<CuiApiContext>(SHARED_CONSTRUCTION_HTTP_OPTIONS);\r\n\r\n    protected isVideo = false;\r\n    protected editorConfig!: CuiEditorConfig;\r\n\r\n    public readonly framerId = input.required<string>();\r\n    public readonly element = input<HTMLElement>(this.hostElement);\r\n\r\n    constructor() {\r\n        this.initConfigEffect();\r\n        this.initFramerIdEffect();\r\n    }\r\n\r\n    private initConfigEffect(): void {\r\n        effect(\r\n            () => {\r\n                this.editorConfig = {\r\n                    readOnly: true,\r\n                    tools: createEditorTools(this.checkCurrentTypeUtility()),\r\n                    element: this.element(),\r\n                    requestOptions: this.context()\r\n                };\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private checkCurrentTypeUtility(): string {\r\n        if (this.environmentUrlForInstruction()) {\r\n            return this.environmentUrlForInstruction() ?? '';\r\n        }\r\n\r\n        return this.environmentUrlForResources() ?? '';\r\n    }\r\n\r\n    private initFramerIdEffect(): void {\r\n        effect(\r\n            () => {\r\n                const framerId = this.framerId();\r\n\r\n                if (!framerId) {\r\n                    return;\r\n                }\r\n\r\n                this.setContext();\r\n\r\n                this.subscription?.unsubscribe();\r\n                this.initFrameFragments();\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private setContext(): void {\r\n        if (this.environmentUrlForInstruction()) {\r\n            this.context.set(SHARED_INSTRUCTION_HTTP_OPTIONS);\r\n        } else {\r\n            this.context.set(SHARED_CONSTRUCTION_HTTP_OPTIONS);\r\n        }\r\n    }\r\n\r\n    private initFrameFragments(): void {\r\n        const frameId = this.framerId();\r\n\r\n        this.jText.set(null);\r\n        this.thumbnailUrl.set(null);\r\n\r\n        if (!frameId) {\r\n            return;\r\n        }\r\n\r\n        const fragmentActions = {\r\n            [FragmentType.jText]: (fragment: Fragment): void => {\r\n                this.jText.set(fragment as JTextFragment);\r\n            },\r\n            [FragmentType.resourceFile]: (fragment: Fragment): void => {\r\n                this.setResourceFile(fragment as ResourceFragment);\r\n            }\r\n        };\r\n\r\n        this.subscription = this.frameApiService.getFrame(frameId, this.context()).subscribe((frame) => {\r\n            frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\r\n        });\r\n    }\r\n\r\n    private setResourceFile(resource: ResourceFragment): void {\r\n        this.isVideo = resource?.name?.split('.').pop() === 'mp4';\r\n\r\n        if (!resource.fileId) {\r\n            return;\r\n        }\r\n\r\n        this.thumbnailUrl.set({\r\n            src: `${this.checkCurrentTypeUtility()}/${resource.fileId}`,\r\n            name: resource.name || resource.type\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (jText()) {\r\n        @if (!isDescriptionEmpty()) {\r\n            @if (thumbnailUrl(); as url) {\r\n                @if (url?.src; as src) {\r\n                    @if (isVideo) {\r\n                        <video\r\n                            class=\"thumbnail\"\r\n                            [src]=\"src\"\r\n                            controls\r\n                        ></video>\r\n                    } @else {\r\n                        <img\r\n                            class=\"thumbnail\"\r\n                            [src]=\"src\"\r\n                            [alt]=\"url?.name\"\r\n                        />\r\n                    }\r\n                }\r\n            }\r\n            @if (jText()?.id; as id) {\r\n                <div class=\"wrapper\">\r\n                    <cui-editor\r\n                        class=\"editor\"\r\n                        [editorApiId]=\"id\"\r\n                        [config]=\"editorConfig\"\r\n                    />\r\n                </div>\r\n            }\r\n        } @else {\r\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\r\n        }\r\n    }\r\n</ng-container>\r\n","import { Component, computed, input, OnInit, signal } from '@angular/core';\r\nimport { Criterion, CuiApiContext, Instruction } from '@cuby-ui/api';\r\nimport { CuiNullable } from '@cuby-ui/cdk';\r\nimport {\r\n    EmptyStateTitle,\r\n    GetFramerId,\r\n    SectionStorageElementTypeName,\r\n    SectionStorageObject\r\n} from './modal-divided-section.interfaces';\r\nimport {\r\n    CuiCardWrapperComponent,\r\n    CuiEmptyStateComponent,\r\n    CuiLetterBoxComponent,\r\n    CuiSvgModule\r\n} from '../../../components';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { UtilityInfoReadonlyComponent } from '../utility-info-readonly';\r\n\r\n@Component({\r\n    selector: 'cui-modal-divided-section',\r\n    standalone: true,\r\n    imports: [\r\n        CuiSvgModule,\r\n        CuiEmptyStateComponent,\r\n        CuiLetterBoxComponent,\r\n        CuiCardWrapperComponent,\r\n        TranslocoDirective,\r\n        UtilityInfoReadonlyComponent\r\n    ],\r\n    templateUrl: './modal-divided-section.component.html',\r\n    styleUrl: './modal-divided-section.component.scss'\r\n})\r\nexport class ModalDividedSectionComponent implements OnInit {\r\n    protected readonly EMPTY_STATE_TITLE: EmptyStateTitle = {\r\n        CRITERIA: 'ACCEPTANCE_CRITERIA',\r\n        INSTRUCTION: 'INSTRUCTIONS'\r\n    };\r\n    protected readonly GET_FRAMER_ID: GetFramerId = {\r\n        CRITERIA: (value) => (value as Criterion).framerCriterionId,\r\n        INSTRUCTION: (value) => (value as Instruction).framerInstructionId\r\n    };\r\n\r\n    protected readonly selectedStorageObject = signal<CuiNullable<SectionStorageObject>>(null);\r\n    protected readonly selectedFramerId = computed(() => {\r\n        const selectedStorageObject = this.selectedStorageObject();\r\n\r\n        if (!selectedStorageObject) {\r\n            return;\r\n        }\r\n\r\n        return this.GET_FRAMER_ID[this.storageElementTypeName()](selectedStorageObject.storageElement);\r\n    });\r\n\r\n    protected readonly emptyStateSubtitle = computed(\r\n        () => `NO_${this.EMPTY_STATE_TITLE[this.storageElementTypeName()]}_TO_VIEW_YET`\r\n    );\r\n\r\n    public readonly storageElementTypeName = input.required<SectionStorageElementTypeName>();\r\n    public readonly storageObjects = input.required<SectionStorageObject[]>();\r\n    public readonly environmentUrlForResources = input<string>();\r\n    public readonly environmentUrlForInstruction = input<string>();\r\n    public readonly context = input<CuiApiContext>();\r\n\r\n    public ngOnInit(): void {\r\n        this.initSelectedStorageObject();\r\n    }\r\n\r\n    protected onSelect(sectionStorageObject: SectionStorageObject): void {\r\n        this.selectedStorageObject.set(sectionStorageObject);\r\n    }\r\n\r\n    private initSelectedStorageObject(): void {\r\n        if (!this.storageObjects().length) {\r\n            return;\r\n        }\r\n\r\n        this.selectedStorageObject.set(this.storageObjects()?.[0]);\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (storageObjects(); as storageObjects) {\r\n        @if (storageObjects.length) {\r\n            <div class=\"block block_left\">\r\n                <ul class=\"list\">\r\n                    @for (storageObject of storageObjects; track storageObject.id) {\r\n                        @if (storageObject.storageElement; as storageElement) {\r\n                            <li>\r\n                                <button\r\n                                    type=\"button\"\r\n                                    [title]=\"storageElement.title\"\r\n                                    cuiCardWrapper\r\n                                    [isSelected]=\"selectedStorageObject()?.id === storageObject.id\"\r\n                                    (click)=\"onSelect(storageObject)\"\r\n                                >\r\n                                    <div class=\"button__content\">\r\n                                        @switch (storageElementTypeName()) {\r\n                                            @case ('CRITERIA') {\r\n                                                <cui-letter-box\r\n                                                    letter=\"c\"\r\n                                                    backgroundColor=\"var(--cui-violet-400)\"\r\n                                                />\r\n                                            }\r\n                                            @case ('INSTRUCTION') {\r\n                                                <cui-svg\r\n                                                    icon=\"cuiIconFileText\"\r\n                                                    color=\"var(--cui-base-500)\"\r\n                                                />\r\n                                            }\r\n                                        }\r\n                                        <span class=\"button__text\">{{ storageElement.title }}</span>\r\n                                    </div>\r\n                                </button>\r\n                            </li>\r\n                        }\r\n                    }\r\n                </ul>\r\n            </div>\r\n            <div class=\"block block_right\">\r\n                @if (selectedStorageObject()?.storageElement; as selectedStorageElement) {\r\n                    <header class=\"header\">{{ selectedStorageElement.title }}</header>\r\n                    <cui-utility-info-readonly\r\n                        [framerId]=\"selectedFramerId()!\"\r\n                        [environmentUrlForResources]=\"environmentUrlForResources()\"\r\n                        [environmentUrlForInstruction]=\"environmentUrlForInstruction()\"\r\n                        class=\"utility-info\"\r\n                    />\r\n                }\r\n            </div>\r\n        } @else {\r\n            <cui-empty-state [subtitle]=\"t(emptyStateSubtitle())\" />\r\n        }\r\n    }\r\n</ng-container>\r\n","import { Component, output } from '@angular/core';\r\nimport { CuiButtonModule } from '../../../components';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiTooltip } from '../../../directives';\r\n\r\n@Component({\r\n    selector: 'cui-modal-header-inserted-buttons',\r\n    standalone: true,\r\n    imports: [CuiButtonModule, TranslocoDirective, CuiTooltip],\r\n    templateUrl: './modal-header-inserted-buttons.component.html',\r\n    styleUrl: './modal-header-inserted-buttons.component.scss'\r\n})\r\nexport class ModalHeaderInsertedButtonsComponent {\r\n    public readonly unbindClicked = output();\r\n\r\n    protected onUnbind(): void {\r\n        this.unbindClicked.emit();\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <!-- TODO: добавить переход на категории когда появится страница -->\r\n    <button\r\n        cuiButton\r\n        [cuiTooltip]=\"t('IN_DEVELOPMENT')\"\r\n        type=\"button\"\r\n        size=\"sm\"\r\n        appearance=\"outlined-gray\"\r\n        iconRight=\"cuiIconExternalLinkSm\"\r\n        [disabled]=\"true\"\r\n    >\r\n        {{ t('VIEW') }}\r\n    </button>\r\n    <button\r\n        cuiButton\r\n        type=\"button\"\r\n        size=\"sm\"\r\n        icon=\"cuiIconLinkBroken\"\r\n        appearance=\"action\"\r\n        class=\"cc-violet-action-button\"\r\n        (click)=\"onUnbind()\"\r\n    >\r\n        {{ t('UNBIND') }}\r\n    </button>\r\n</ng-container>\r\n","import { Component, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { KeyValuePipe, NgTemplateOutlet } from '@angular/common';\r\nimport { Content } from './modal-info-tab.options';\r\n\r\n@Component({\r\n    selector: 'cui-modal-info-tab',\r\n    standalone: true,\r\n    imports: [TranslocoDirective, NgTemplateOutlet, KeyValuePipe],\r\n    templateUrl: './modal-info-tab.component.html',\r\n    styleUrl: './modal-info-tab.component.scss'\r\n})\r\nexport class ModalInfoTabComponent {\r\n    public readonly content = input.required<Content>();\r\n\r\n    protected compareFn(): number {\r\n        return 0;\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <h3 class=\"heading\">{{ t('INFO') }}</h3>\r\n    <div class=\"wrapper\">\r\n        @for (option of content() | keyvalue: compareFn; track option.key) {\r\n            <span class=\"category-title\">{{ t(option.key) }}:</span>\r\n            <ng-container *ngTemplateOutlet=\"option.value\" />\r\n        }\r\n    </div>\r\n</ng-container>\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { ResourceStateService } from './resource-state-service.interface';\r\n\r\nexport const CUI_RESOURCE_STATE_SERVICE_TOKEN = new InjectionToken<ResourceStateService>(\r\n    'CUI_RESOURCE_STATE_SERVICE_TOKEN'\r\n);\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SubjectModalService } from './subject-modal-service.interface';\r\n\r\nexport const CUI_SUBJECT_MODAL_SERVICE_TOKEN = new InjectionToken<SubjectModalService>('SubjectModalService');\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { UsedElementsService } from './used-elements-service.interface';\r\n\r\nexport const CUI_USED_ELEMENTS_SERVICE_TOKEN = new InjectionToken<UsedElementsService>('USED_ELEMENTS_SERVICE');\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { UtilityService } from './utility-service.interface';\r\n\r\nexport const CUI_UTILITY_SERVICE_TOKEN = new InjectionToken<UtilityService>('CUI_UTILITY_SERVICE_TOKEN');\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiBadgeModule } from '../../../../../components';\r\nimport { ResourceUtilityTool } from '../../../resources-block';\r\n\r\n@Component({\r\n    selector: 'cc-tool-form-readonly',\r\n    imports: [CuiBadgeModule, TranslocoDirective],\r\n    templateUrl: './tool-form-readonly.component.html',\r\n    styleUrl: './tool-form-readonly.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._disabled]': 'tool().isDelete'\r\n    },\r\n    standalone: true\r\n})\r\nexport class ToolFormReadonlyComponent {\r\n    public readonly tool = input.required<ResourceUtilityTool>();\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <td class=\"cc-table__td info custom\">\r\n        {{ tool().name }}\r\n\r\n        @if (tool().isDelete) {\r\n            <cui-badge\r\n                class=\"badge\"\r\n                [size]=\"'sm'\"\r\n                color=\"red\"\r\n            >\r\n                {{ t('DELETED') }}\r\n            </cui-badge>\r\n        }\r\n    </td>\r\n    <td class=\"cc-table__td custom\">\r\n        {{ tool().quantity }}\r\n    </td>\r\n    <td class=\"cc-table__td custom\">\r\n        {{ tool().unit }}\r\n    </td>\r\n</ng-container>\r\n","import { LowerCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport type { ConsumableFormValues } from '../../consumable-form.options';\r\n\r\n@Component({\r\n    selector: 'cui-consumable-form-item-readonly',\r\n    imports: [TranslocoDirective, LowerCasePipe],\r\n    templateUrl: './consumable-form-item-readonly.component.html',\r\n    styleUrl: './consumable-form-item-readonly.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ConsumableFormItemReadonlyComponent {\r\n    public readonly title = input.required<string>();\r\n    public readonly consumable = input.required<ConsumableFormValues>();\r\n}\r\n","@let consumableData = consumable();\r\n\r\n<form\r\n    *transloco=\"let t\"\r\n    class=\"form\"\r\n>\r\n    <span class=\"title\">{{ title() }}</span>\r\n\r\n    <div class=\"content\">\r\n        <div class=\"field\">\r\n            <span class=\"readonly-item\">{{ t('AMOUNT') }}:</span>\r\n            <span class=\"readonly-item\">{{ consumableData.quantity }}</span>\r\n            <span class=\"readonly-item\">{{ consumableData.unit | lowercase }}</span>\r\n        </div>\r\n\r\n        <div class=\"field\">\r\n            <span class=\"readonly-item\">{{ t('MEASURE') }}:</span>\r\n            <span class=\"readonly-item\">{{ consumableData.measure.value }}</span>\r\n            <span class=\"readonly-item\">{{ consumableData.measure.unit | lowercase }}</span>\r\n        </div>\r\n    </div>\r\n</form>\r\n","export const CUI_DEFAULT_CONTROL_DELAY = 700;\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, input, output } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { CuiConsumptionUnitsService, CuiIdService, UnitsAmount } from '@cuby-ui/cdk';\r\n\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { debounceTime } from 'rxjs';\r\n\r\nimport type { ConsumableFormGroup, ConsumableFormValues } from '../../consumable-form.options';\r\nimport { ConsumableFormItemReadonlyComponent } from '../consumable-form-item-readonly';\r\nimport { CUI_DEFAULT_CONTROL_DELAY } from './default-control-delay';\r\nimport {\r\n    CuiAccordionModule,\r\n    CuiButtonModule,\r\n    CuiContextMenuModule,\r\n    CuiFormFieldModule,\r\n    CuiInputNumberModule,\r\n    CuiLabelModule,\r\n    CuiSelectModule,\r\n    CuiSvgModule\r\n} from '../../../../../components';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\nimport { CuiOption } from '../../../../../interfaces';\r\n\r\n@Component({\r\n    selector: 'cc-consumable-form-item',\r\n    imports: [\r\n        CuiAccordionModule,\r\n        CuiButtonModule,\r\n        CuiContextMenuModule,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective,\r\n        CuiInputNumberModule,\r\n        CuiSvgModule,\r\n        CuiFormFieldModule,\r\n        CuiLabelModule,\r\n        CuiSelectModule,\r\n        ConsumableFormItemReadonlyComponent,\r\n        CuiGeneralControlErrorHintComponent\r\n    ],\r\n    templateUrl: './consumable-form-item.component.html',\r\n    styleUrl: './consumable-form-item.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ConsumableFormItemComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cuiIdService = inject(CuiIdService);\r\n    private readonly cuiConsumptionUnitsService = inject(CuiConsumptionUnitsService);\r\n\r\n    protected readonly quantityId = this.cuiIdService.generate();\r\n    protected readonly consumptionId = this.cuiIdService.generate();\r\n    protected readonly consumable = computed(() => this.form().getRawValue());\r\n    protected readonly piecesOptions = computed<CuiOption[]>(() =>\r\n        UnitsAmount.map((unit) => ({ label: unit.abbreviation, value: unit.value }))\r\n    );\r\n\r\n    public readonly title = input.required<string>();\r\n    public readonly consumptionOptions = input.required<CuiOption[]>();\r\n    public readonly form = input.required<FormGroup<ConsumableFormGroup>>();\r\n    public readonly readonly = input(false);\r\n\r\n    public readonly consumableChanged = output<Partial<ConsumableFormValues>>();\r\n\r\n    constructor() {\r\n        this.initFormChangesEffect();\r\n    }\r\n\r\n    protected hasFormError(): boolean {\r\n        const form = this.form();\r\n\r\n        return form.invalid && form.touched;\r\n    }\r\n\r\n    private initFormChangesEffect(): void {\r\n        effect(() => {\r\n            const form = this.form();\r\n\r\n            form.valueChanges\r\n                .pipe(debounceTime(CUI_DEFAULT_CONTROL_DELAY), takeUntilDestroyed(this.destroyRef))\r\n                .subscribe((value) => {\r\n                    if (form.invalid) {\r\n                        return;\r\n                    }\r\n\r\n                    this.consumableChanged.emit(value as Partial<ConsumableFormValues>);\r\n                });\r\n\r\n            const measureFormGroup = form.controls.measure;\r\n            const measureMeasureControl = measureFormGroup.controls.measure;\r\n            const measureUnitControl = measureFormGroup.controls.unit;\r\n\r\n            measureUnitControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((unit) => {\r\n                const measure = this.cuiConsumptionUnitsService.getConsumptionByUnit(unit);\r\n                measureMeasureControl.patchValue(measure, { emitEvent: false });\r\n            });\r\n        });\r\n    }\r\n}\r\n","@let formData = form();\r\n\r\n@if (readonly()) {\r\n    <cui-consumable-form-item-readonly\r\n        [title]=\"title()\"\r\n        [consumable]=\"consumable()\"\r\n    />\r\n} @else {\r\n    <form\r\n        [formGroup]=\"formData\"\r\n        *transloco=\"let t\"\r\n        class=\"form\"\r\n    >\r\n        <span class=\"title\">{{ title() }}</span>\r\n\r\n        <div class=\"wrapper-input\">\r\n            <div class=\"form__input\">\r\n                @let quantity = formData.controls.quantity;\r\n\r\n                <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\r\n                <div class=\"field\">\r\n                    <cui-input-number\r\n                        [cuiTextFieldId]=\"quantityId\"\r\n                        cuiTextFieldPlaceholder=\"0\"\r\n                        formControlName=\"quantity\"\r\n                        [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\r\n                        class=\"input\"\r\n                    />\r\n\r\n                    <cui-select\r\n                        [options]=\"piecesOptions()\"\r\n                        [class.options--error]=\"hasFormError()\"\r\n                        formControlName=\"unit\"\r\n                        class=\"options\"\r\n                    />\r\n                </div>\r\n                <cui-general-control-error-hint\r\n                    [control]=\"quantity\"\r\n                    [isVisible]=\"!!quantity.errors && quantity.dirty\"\r\n                />\r\n            </div>\r\n\r\n            <div class=\"form__input\">\r\n                @let measureFormGroup = formData.controls.measure;\r\n                @let consumption = measureFormGroup.controls.value;\r\n\r\n                <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\r\n                <div\r\n                    class=\"field\"\r\n                    [formGroup]=\"measureFormGroup\"\r\n                >\r\n                    <cui-input-number\r\n                        [cuiTextFieldId]=\"consumptionId\"\r\n                        cuiTextFieldPlaceholder=\"0\"\r\n                        formControlName=\"value\"\r\n                        [precision]=\"3\"\r\n                        [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\r\n                        class=\"input\"\r\n                    />\r\n\r\n                    <cui-select\r\n                        [options]=\"consumptionOptions()\"\r\n                        [class.options--error]=\"hasFormError()\"\r\n                        formControlName=\"unit\"\r\n                        class=\"options\"\r\n                    />\r\n                </div>\r\n                <cui-general-control-error-hint\r\n                    [control]=\"consumption\"\r\n                    [isVisible]=\"!!consumption.errors && consumption.dirty\"\r\n                />\r\n            </div>\r\n        </div>\r\n    </form>\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    DestroyRef,\r\n    effect,\r\n    inject,\r\n    input,\r\n    output,\r\n    signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { UnitsAmount } from '@cuby-ui/cdk';\r\n\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, finalize, switchMap, tap } from 'rxjs';\r\n\r\nimport { ToolFormReadonlyComponent } from './components';\r\nimport type { ToolboxFormControls } from './tool-form.options';\r\nimport {\r\n    CuiSelectModule,\r\n    CuiAlertService,\r\n    CuiBadgeModule,\r\n    CuiButtonModule,\r\n    CuiInputNumberModule\r\n} from '../../../components';\r\nimport { ResourceContentType, ResourceRequestType, CuiQuantumGroupResourcesStructureApiService } from '@cuby-ui/api';\r\nimport { CUI_DEFAULT_CONTROL_DELAY } from '../consumable-form/components';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport { ResourceUtilityTool } from '../resources-block';\r\n\r\n@Component({\r\n    selector: 'cui-tool-form',\r\n    imports: [\r\n        ToolFormReadonlyComponent,\r\n        CuiSelectModule,\r\n        ReactiveFormsModule,\r\n        CuiBadgeModule,\r\n        TranslocoDirective,\r\n        CuiInputNumberModule,\r\n        CuiButtonModule,\r\n        CuiGeneralControlErrorHintComponent\r\n    ],\r\n    templateUrl: './tool-form.component.html',\r\n    styleUrl: './tool-form.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {\r\n        '[class._disabled]': 'isLoading() || tool().isDelete'\r\n    },\r\n    standalone: true\r\n})\r\nexport class ToolFormComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly cuiAlertService = inject(CuiAlertService);\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly quantumGroupResourcesStructureApiService = inject(CuiQuantumGroupResourcesStructureApiService);\r\n    private readonly formBuilder = inject(NonNullableFormBuilder);\r\n\r\n    protected readonly TOOLBOX_WAS_DELETED = 'TOOLBOX_WAS_SUCCESSFULLY_DELETED';\r\n    protected readonly PART_WAS_DELETED = 'PART_WAS_SUCCESSFULLY_DELETED';\r\n\r\n    protected readonly isLoading = signal(false);\r\n    protected readonly toolForm = signal<CuiNullable<FormGroup<ToolboxFormControls>>>(null);\r\n    protected readonly controls = computed(() => this.toolForm()?.controls);\r\n    protected readonly toolboxOptions = computed(() =>\r\n        UnitsAmount.map((unit) => ({ label: unit.abbreviation, value: unit.value }))\r\n    );\r\n\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly tool = input.required<ResourceUtilityTool>();\r\n    public readonly readonly = input(false);\r\n    public readonly resourceType = input<ResourceContentType>(ResourceContentType.Toolbox);\r\n\r\n    public readonly toolChanged = output<ResourceUtilityTool>();\r\n    public readonly toolDeleted = output<string>();\r\n\r\n    constructor() {\r\n        this.initFormEffect();\r\n    }\r\n\r\n    protected onDeleteToolbox(): void {\r\n        const { id } = this.tool();\r\n\r\n        this.isLoading.set(true);\r\n        this.quantumGroupResourcesStructureApiService\r\n            .deleteElementInStructure(this.utilityId(), this.resourceType().toLowerCase(), id)\r\n            .pipe(\r\n                tap(() => this.toolDeleted.emit(id)),\r\n                finalize(() => this.isLoading.set(false)),\r\n                switchMap(() => {\r\n                    const message =\r\n                        this.resourceType() === ResourceContentType.Part\r\n                            ? this.PART_WAS_DELETED\r\n                            : this.TOOLBOX_WAS_DELETED;\r\n\r\n                    return this.cuiAlertService.open(this.translocoService.translate(message), {\r\n                        status: 'success'\r\n                    });\r\n                })\r\n            )\r\n            .subscribe();\r\n    }\r\n\r\n    private initFormEffect(): void {\r\n        const effectRef = effect(\r\n            () => {\r\n                const toolForm = this.createForm();\r\n\r\n                this.toolForm.set(toolForm);\r\n                toolForm.valueChanges\r\n                    .pipe(debounceTime(CUI_DEFAULT_CONTROL_DELAY), takeUntilDestroyed(this.destroyRef))\r\n                    .subscribe((value) => {\r\n                        if (toolForm.invalid) {\r\n                            return;\r\n                        }\r\n\r\n                        const updatedTool = {\r\n                            ...this.tool(),\r\n                            ...value,\r\n                            type: ResourceRequestType.Toolbox\r\n                        };\r\n\r\n                        this.quantumGroupResourcesStructureApiService\r\n                            .updateElementInStructure(this.utilityId(), this.resourceType(), updatedTool)\r\n                            .pipe(takeUntilDestroyed(this.destroyRef))\r\n                            .subscribe(() => this.toolChanged.emit(updatedTool));\r\n                    });\r\n                effectRef.destroy();\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private createForm(): FormGroup<ToolboxFormControls> {\r\n        return this.formBuilder.group<ToolboxFormControls>({\r\n            quantity: this.formBuilder.control(this.tool().quantity, [\r\n                Validators.required,\r\n                Validators.min(1),\r\n                Validators.max(100)\r\n            ]),\r\n            unit: this.formBuilder.control(this.tool().unit, [Validators.required])\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @let controlsData = controls();\r\n\r\n    @if (readonly()) {\r\n        <cc-tool-form-readonly [tool]=\"tool()\" />\r\n    } @else if (controlsData) {\r\n        <td class=\"cc-table__td info custom\">\r\n            {{ tool().name }}\r\n\r\n            @if (tool().isDelete) {\r\n                <cui-badge\r\n                    class=\"badge\"\r\n                    [size]=\"'sm'\"\r\n                    color=\"red\"\r\n                >\r\n                    {{ t('DELETED') }}\r\n                </cui-badge>\r\n            }\r\n        </td>\r\n        <td class=\"cc-table__td custom\">\r\n            <cui-input-number\r\n                type=\"text\"\r\n                [formControl]=\"controlsData.quantity\"\r\n                [cuiTextFieldIsError]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\r\n            />\r\n            <cui-general-control-error-hint\r\n                [control]=\"controlsData.quantity\"\r\n                [isVisible]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\r\n            />\r\n        </td>\r\n        <td class=\"cc-table__td custom\">\r\n            <cui-select\r\n                [formControl]=\"controlsData.unit\"\r\n                [options]=\"toolboxOptions()\"\r\n            />\r\n        </td>\r\n        <td class=\"cc-table__td button custom\">\r\n            <button\r\n                type=\"button\"\r\n                cuiButton\r\n                icon=\"cuiIconTrash\"\r\n                size=\"xxs\"\r\n                appearance=\"ghost\"\r\n                [isLoaderShown]=\"isLoading()\"\r\n                (click)=\"onDeleteToolbox()\"\r\n            ></button>\r\n        </td>\r\n    }\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { Observable } from 'rxjs';\r\nimport { EMPTY, map } from 'rxjs';\r\n\r\nimport { ToolFormComponent } from '../../../toolbox-form';\r\n\r\nimport type { ResourceUtilityPart } from './resources-block-part.options';\r\nimport { CuiFactoryApiService, ResourceContentType, UtilitySubject } from '@cuby-ui/api';\r\nimport { CuiButtonModule } from '../../../../../components';\r\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../../../model';\r\n\r\n@Component({\r\n    selector: 'cui-resources-block-part',\r\n    imports: [TranslocoDirective, CuiButtonModule, ToolFormComponent],\r\n    templateUrl: './resources-block-part.component.html',\r\n    styleUrl: './resources-block-part.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ResourcesBlockPartComponent {\r\n    private readonly factoryApiService = inject(CuiFactoryApiService);\r\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\r\n\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly containerId = input.required<string>();\r\n    public readonly elements = input.required<ResourceUtilityPart[]>();\r\n    public readonly readonly = input(false);\r\n\r\n    constructor() {\r\n        this.initPartsStructure();\r\n    }\r\n\r\n    protected onPartChanged(part: ResourceUtilityPart): void {\r\n        this.utilityService.updateResource(part, this.containerId());\r\n    }\r\n\r\n    protected onPartDeleted(partId: string): void {\r\n        this.utilityService.removeResource(partId, this.containerId());\r\n    }\r\n\r\n    private initPartsStructure(): void {\r\n        const effectRef = effect(() => {\r\n            const parts = this.elements();\r\n            const arePartsWithFullInfo = parts.every((part) => part.name);\r\n\r\n            if (arePartsWithFullInfo) {\r\n                return;\r\n            }\r\n\r\n            this.getAddintionalResourceInfo(parts).subscribe((part) => {\r\n                this.utilityService.updateResource(part, this.containerId());\r\n            });\r\n\r\n            effectRef.destroy();\r\n        });\r\n    }\r\n\r\n    private getAddintionalResourceInfo(resources: UtilitySubject[]): Observable<ResourceUtilityPart> {\r\n        if (!resources.length) {\r\n            return EMPTY;\r\n        }\r\n\r\n        const ids = resources.map((resource) => resource.id);\r\n\r\n        return this.factoryApiService.getPartsByIdsStream(ids).pipe(\r\n            map(\r\n                (factoryElement) =>\r\n                    ({\r\n                        ...resources.find((resource) => factoryElement.id === resource.id),\r\n                        isDelete: factoryElement.isDelete,\r\n                        name: factoryElement.name\r\n                    }) as ResourceUtilityPart\r\n            )\r\n        );\r\n    }\r\n\r\n    protected readonly ResourceContentType = ResourceContentType;\r\n}\r\n","<table\r\n    *transloco=\"let t\"\r\n    class=\"cc-table table\"\r\n    [class.table_readonly]=\"readonly()\"\r\n>\r\n    <thead class=\"cc-table__thead\">\r\n        <tr class=\"cc-table__tr\">\r\n            <th class=\"cc-table__th custom\">{{ t('TITLE') }}</th>\r\n            <th class=\"cc-table__th custom\">{{ t('QUANTITY') }}</th>\r\n            <th class=\"cc-table__th custom\">{{ t('UNIT') }}</th>\r\n        </tr>\r\n    </thead>\r\n    <tbody class=\"cc-table__tbody\">\r\n        @for (part of elements(); track part.id) {\r\n            <tr class=\"cc-table__tr custom-row\">\r\n                <cui-tool-form\r\n                    [tool]=\"part\"\r\n                    [utilityId]=\"utilityId()\"\r\n                    [readonly]=\"readonly()\"\r\n                    [resourceType]=\"ResourceContentType.Part\"\r\n                    (toolChanged)=\"onPartChanged($event)\"\r\n                    (toolDeleted)=\"onPartDeleted($event)\"\r\n                />\r\n            </tr>\r\n        }\r\n    </tbody>\r\n</table>\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    DestroyRef,\r\n    effect,\r\n    inject,\r\n    input,\r\n    output,\r\n    signal,\r\n    untracked\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { Consumption, CuiConsumptionUnitsService, CuiElementDirective, UnitsAmount } from '@cuby-ui/cdk';\r\n\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\n\r\nimport type { ResourceUtilityMaterial } from '../resources-block/components';\r\n\r\nimport { ConsumableFormItemComponent } from './components';\r\nimport type { ConsumableFormValues, SeasonForm } from './consumable-form.options';\r\nimport { ResourceContentType, ResourceRequestType } from '@cuby-ui/api';\r\nimport { OptionsButtonComponent } from '../../../components/options-button/options-button.component';\r\nimport {\r\n    CuiQuantumGroupResourcesStructureApiService,\r\n    MaterialTypeDefoliate,\r\n    MaterialTypeSupply,\r\n    SeasonType\r\n} from '@cuby-ui/api';\r\nimport { CuiContextMenuItem } from '../../../interfaces';\r\nimport {\r\n    CuiAccordionModule,\r\n    CuiAlertService,\r\n    CuiButtonModule,\r\n    CuiContextMenuModule,\r\n    CuiFormFieldModule,\r\n    CuiInputNumberModule,\r\n    CuiLabelModule,\r\n    CuiSvgModule\r\n} from '../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-consumable-form',\r\n    imports: [\r\n        CuiAccordionModule,\r\n        CuiButtonModule,\r\n        CuiContextMenuModule,\r\n        CuiElementDirective,\r\n        ReactiveFormsModule,\r\n        TranslocoDirective,\r\n        OptionsButtonComponent,\r\n        CuiInputNumberModule,\r\n        CuiSvgModule,\r\n        CuiFormFieldModule,\r\n        CuiLabelModule,\r\n        ConsumableFormItemComponent,\r\n        ConsumableFormItemComponent,\r\n        ConsumableFormItemComponent\r\n    ],\r\n    templateUrl: './consumable-form.component.html',\r\n    styleUrl: './consumable-form.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ConsumableFormComponent {\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private readonly translocoService = inject(TranslocoService);\r\n    private readonly formBuilder = inject(NonNullableFormBuilder);\r\n    private readonly cuiAlertService = inject(CuiAlertService);\r\n    private readonly cuiConsumptionUnitsService = inject(CuiConsumptionUnitsService);\r\n    private readonly quantumGroupResourcesStructureApiService = inject(CuiQuantumGroupResourcesStructureApiService);\r\n\r\n    private static readonly CONSUMABLE_WAS_DELETED = 'CONSUMABLE_WAS_SUCCESSFULLY_DELETED';\r\n\r\n    protected readonly CONSUMABLE_OPTIONS: CuiContextMenuItem[] = [\r\n        {\r\n            label: 'Delete',\r\n            icon: 'cuiIconTrash',\r\n            color: 'var(--cui-danger)',\r\n            command: this.onDeleteConsumable.bind(this)\r\n        }\r\n    ];\r\n    protected readonly seasons = Object.values(SeasonType);\r\n\r\n    protected readonly allSeasonForm = signal<CuiNullable<FormGroup>>(null);\r\n    protected readonly seasonForms = signal<SeasonForm[]>([]);\r\n    protected readonly isLoading = signal(false);\r\n\r\n    protected readonly availableSeasons = computed(() => {\r\n        const usedSeasons = this.seasonForms().map((form) => form.type);\r\n\r\n        return this.seasons.filter((season) => !usedSeasons.includes(season));\r\n    });\r\n    protected readonly consumptionOptions = computed(() => {\r\n        const consumable = this.consumable();\r\n\r\n        if (!(consumable.specifications || consumable.parameters)) {\r\n            return [];\r\n        }\r\n\r\n        const consumableUnits = this.cuiConsumptionUnitsService.getConsumptionsUnits(consumable);\r\n\r\n        return Object.values(consumableUnits)\r\n            .reduce((accumulator, value) => accumulator.concat(value), [])\r\n            .map((unit) => ({ label: unit.abbreviation, value: unit.value }));\r\n    });\r\n\r\n    protected readonly SEASON_OPTIONS = computed(() =>\r\n        this.availableSeasons().map((season) => ({\r\n            label: season,\r\n            command: (): void => this.addSeason(season, this.createForm())\r\n        }))\r\n    );\r\n\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly consumable = input.required<ResourceUtilityMaterial>();\r\n    public readonly readonly = input(false);\r\n\r\n    public readonly consumableChanged = output<ResourceUtilityMaterial>();\r\n    public readonly consumableDeleted = output<string>();\r\n\r\n    constructor() {\r\n        this.initFormValuesEffect();\r\n    }\r\n\r\n    protected onConsumableChanged(): void {\r\n        this.updateConsumable();\r\n    }\r\n\r\n    protected onRemoveSeason(type: SeasonType): void {\r\n        this.seasonForms.update((forms) => forms.filter((form) => form.type !== type));\r\n        this.updateConsumable();\r\n    }\r\n\r\n    protected onDeleteConsumable(): void {\r\n        const { id } = this.consumable();\r\n\r\n        this.isLoading.set(true);\r\n        this.quantumGroupResourcesStructureApiService\r\n            .deleteElementInStructure(this.utilityId(), ResourceContentType.Consumables.toLowerCase(), id)\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroyRef),\r\n                tap(() => this.consumableDeleted.emit(id)),\r\n                finalize(() => this.isLoading.set(false)),\r\n                switchMap(() =>\r\n                    this.cuiAlertService.open(\r\n                        this.translocoService.translate(ConsumableFormComponent.CONSUMABLE_WAS_DELETED),\r\n                        {\r\n                            status: 'success'\r\n                        }\r\n                    )\r\n                )\r\n            )\r\n            .subscribe();\r\n    }\r\n\r\n    private initFormValuesEffect(): void {\r\n        effect(\r\n            () => {\r\n                const seasonForms = untracked(this.seasonForms);\r\n\r\n                this.consumable().supply?.forEach((season) => {\r\n                    const isExist = seasonForms.find((form) => form.type === season.season);\r\n\r\n                    if (isExist) {\r\n                        return;\r\n                    }\r\n\r\n                    this.addSeason(season.season, this.createForm(season));\r\n                });\r\n\r\n                if (this.allSeasonForm()) {\r\n                    return;\r\n                }\r\n\r\n                this.allSeasonForm.set(this.createForm(this.consumable().supplyDefoliate));\r\n            },\r\n            { allowSignalWrites: true }\r\n        );\r\n    }\r\n\r\n    private addSeason(seasonType: SeasonType, form: FormGroup): void {\r\n        this.seasonForms.update((forms) => [\r\n            ...forms,\r\n            {\r\n                type: seasonType,\r\n                form\r\n            }\r\n        ]);\r\n    }\r\n\r\n    private updateConsumable(): void {\r\n        const allSeasonForm = this.allSeasonForm();\r\n\r\n        if (!allSeasonForm?.valid) {\r\n            return;\r\n        }\r\n\r\n        const supply = this.seasonForms()\r\n            .filter((season) => season.form.valid)\r\n            .map(\r\n                (season) =>\r\n                    this.formatMeasureUnits({ season: season.type, ...season.form.getRawValue() }) as MaterialTypeSupply\r\n            );\r\n\r\n        const requestBody = {\r\n            id: this.consumable().id,\r\n            type: ResourceRequestType.Consumables,\r\n            supplyDefoliate: this.formatMeasureUnits(allSeasonForm.value) as MaterialTypeDefoliate,\r\n            supply\r\n        };\r\n        const updatedConsumable = {\r\n            ...this.consumable(),\r\n            ...requestBody\r\n        };\r\n\r\n        this.quantumGroupResourcesStructureApiService\r\n            .updateElementInStructure(this.utilityId(), ResourceContentType.Consumables, requestBody)\r\n            .pipe(\r\n                takeUntilDestroyed(this.destroyRef),\r\n                tap(() => this.consumableChanged.emit(updatedConsumable))\r\n            )\r\n            .subscribe();\r\n    }\r\n\r\n    private createForm(values?: ConsumableFormValues): FormGroup {\r\n        return this.formBuilder.group({\r\n            quantity: this.formBuilder.control(values?.quantity, [\r\n                Validators.required,\r\n                Validators.min(1),\r\n                Validators.max(99999)\r\n            ]),\r\n            unit: this.formBuilder.control(UnitsAmount[0].value, [Validators.required]),\r\n            measure: this.formBuilder.group({\r\n                measure: this.formBuilder.control(\r\n                    values?.measure?.measure ??\r\n                        (this.consumptionOptions?.()[0]?.value\r\n                            ? this.cuiConsumptionUnitsService.getConsumptionByUnit(this.consumptionOptions()[0].value)\r\n                            : Consumption.Length),\r\n                    [Validators.required]\r\n                ),\r\n                value: this.formBuilder.control(values?.measure?.value, [\r\n                    Validators.required,\r\n                    Validators.min(0.001),\r\n                    Validators.max(99999)\r\n                ]),\r\n                unit: this.formBuilder.control(\r\n                    values?.measure?.measure === 'AMOUNT'\r\n                        ? 'PIECES'\r\n                        : (values?.measure?.unit ?? this.consumptionOptions?.()[0].value),\r\n                    [Validators.required]\r\n                )\r\n            })\r\n        });\r\n    }\r\n\r\n    private formatMeasureUnits(\r\n        material: MaterialTypeDefoliate | MaterialTypeSupply\r\n    ): MaterialTypeDefoliate | MaterialTypeSupply {\r\n        return {\r\n            ...material,\r\n            measure: {\r\n                ...material.measure,\r\n                unit:\r\n                    material.measure.measure === 'AMOUNT'\r\n                        ? null\r\n                        : (material?.measure?.unit ?? this.consumptionOptions?.()[0].value)\r\n            }\r\n        };\r\n    }\r\n}\r\n","<cui-accordion-item\r\n    *transloco=\"let t\"\r\n    class=\"accordion\"\r\n>\r\n    <div class=\"header\">\r\n        {{ consumable().name }}\r\n\r\n        @if (!readonly()) {\r\n            <cui-options-button [options]=\"CONSUMABLE_OPTIONS\" />\r\n        }\r\n    </div>\r\n\r\n    <div\r\n        cuiAccordionItemContent\r\n        class=\"content\"\r\n    >\r\n        <div class=\"info\">\r\n            <div class=\"title\">{{ t('SEASON_CONSUMPTION') }}</div>\r\n\r\n            @if (allSeasonForm() && consumptionOptions().length) {\r\n                <cc-consumable-form-item\r\n                    title=\"{{ t('ALL_SEASON') }}:\"\r\n                    [consumptionOptions]=\"consumptionOptions()\"\r\n                    [form]=\"allSeasonForm()!\"\r\n                    [readonly]=\"readonly()\"\r\n                    (consumableChanged)=\"onConsumableChanged()\"\r\n                />\r\n            }\r\n        </div>\r\n\r\n        <div>\r\n            @for (season of seasonForms(); track season) {\r\n                <div class=\"season\">\r\n                    @if (consumptionOptions().length) {\r\n                        <cc-consumable-form-item\r\n                            title=\"{{ t(season.type) }}:\"\r\n                            [consumptionOptions]=\"consumptionOptions()\"\r\n                            [form]=\"season.form\"\r\n                            [readonly]=\"readonly()\"\r\n                            (consumableChanged)=\"onConsumableChanged()\"\r\n                        />\r\n                    }\r\n\r\n                    @if (!readonly()) {\r\n                        <div class=\"container-trash\">\r\n                            <button\r\n                                type=\"button\"\r\n                                cuiButton\r\n                                size=\"xxs\"\r\n                                appearance=\"ghost\"\r\n                                icon=\"cuiIconTrash\"\r\n                                (click)=\"onRemoveSeason(season.type)\"\r\n                            ></button>\r\n                        </div>\r\n                    }\r\n                </div>\r\n            }\r\n        </div>\r\n        @if (!readonly()) {\r\n            <button\r\n                #seasonButton=\"elementRef\"\r\n                cuiButton\r\n                cuiElement\r\n                type=\"button\"\r\n                appearance=\"flat\"\r\n                size=\"xxs\"\r\n                icon=\"cuiIconPlus\"\r\n                [disabled]=\"!availableSeasons().length\"\r\n                class=\"add-button\"\r\n            >\r\n                {{ t('ADD_SEASON') }}\r\n            </button>\r\n            <cui-context-menu\r\n                [items]=\"SEASON_OPTIONS()\"\r\n                [target]=\"seasonButton.nativeElement\"\r\n            />\r\n        }\r\n    </div>\r\n</cui-accordion-item>\r\n","import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { EMPTY, map } from 'rxjs';\r\n\r\nimport type { ResourceUtilityMaterial } from './resources-block-consumables.options';\r\nimport { ConsumableFormComponent } from '../../../consumable-form';\r\nimport { CuiFactoryApiService, UtilitySubject } from '@cuby-ui/api';\r\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../../../model';\r\n\r\n@Component({\r\n    selector: 'cui-resources-block-consumables',\r\n    imports: [ConsumableFormComponent],\r\n    templateUrl: './resources-block-consumables.component.html',\r\n    styleUrl: './resources-block-consumables.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ResourcesBlockConsumablesComponent {\r\n    private readonly factoryApiService = inject(CuiFactoryApiService);\r\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\r\n\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly containerId = input.required<string>();\r\n    public readonly elements = input.required<ResourceUtilityMaterial[]>();\r\n    public readonly readonly = input(false);\r\n\r\n    constructor() {\r\n        this.initConsumablesStructure();\r\n    }\r\n\r\n    protected onConsumableChanged(consumable: ResourceUtilityMaterial): void {\r\n        this.utilityService.updateResource(consumable, this.containerId());\r\n    }\r\n\r\n    protected onConsumableDeleted(consumableId: string): void {\r\n        this.utilityService.removeResource(consumableId, this.containerId());\r\n    }\r\n\r\n    private initConsumablesStructure(): void {\r\n        const effectRef = effect(() => {\r\n            const materials = this.elements();\r\n            const areMaterialsWithFullInfo = materials.every((material) => material.name);\r\n\r\n            if (areMaterialsWithFullInfo) {\r\n                return;\r\n            }\r\n\r\n            this.getAddintionalResourceInfo(materials).subscribe((consumable) => {\r\n                this.utilityService.updateResource(consumable, this.containerId());\r\n            });\r\n\r\n            effectRef.destroy();\r\n        });\r\n    }\r\n\r\n    private getAddintionalResourceInfo(\r\n        resources: UtilitySubject[] | ResourceUtilityMaterial[]\r\n    ): Observable<ResourceUtilityMaterial> {\r\n        if (!resources.length) {\r\n            return EMPTY;\r\n        }\r\n\r\n        const ids = resources.map((resource) => resource.id);\r\n\r\n        return this.factoryApiService.getMaterialsByIds(ids).pipe(\r\n            map(\r\n                (factoryElement) =>\r\n                    ({\r\n                        ...resources.find((resource) => factoryElement.id === resource.id),\r\n                        ...factoryElement\r\n                    }) as ResourceUtilityMaterial\r\n            )\r\n        );\r\n    }\r\n}\r\n","@for (consumable of elements(); track consumable.id) {\r\n    <cui-consumable-form\r\n        [utilityId]=\"utilityId()\"\r\n        [consumable]=\"consumable\"\r\n        [readonly]=\"readonly()\"\r\n        (consumableChanged)=\"onConsumableChanged($event)\"\r\n        (consumableDeleted)=\"onConsumableDeleted($event)\"\r\n    />\r\n}\r\n","import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { Observable } from 'rxjs';\r\nimport { EMPTY, map } from 'rxjs';\r\nimport { CuiFactoryApiService, UtilitySubject } from '@cuby-ui/api';\r\n\r\nimport { ToolFormComponent } from '../../../toolbox-form';\r\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../../../model';\r\nimport { CuiButtonModule } from '../../../../../components';\r\nimport { ResourceUtilityTool } from './resources-block-toolbox.options';\r\n\r\n@Component({\r\n    selector: 'cui-resources-block-toolbox',\r\n    imports: [TranslocoDirective, CuiButtonModule, ToolFormComponent],\r\n    templateUrl: './resources-block-toolbox.component.html',\r\n    styleUrl: './resources-block-toolbox.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ResourcesBlockToolboxComponent {\r\n    private readonly factoryApiService = inject(CuiFactoryApiService);\r\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\r\n\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly containerId = input.required<string>();\r\n    public readonly elements = input.required<ResourceUtilityTool[]>();\r\n    public readonly readonly = input(false);\r\n\r\n    constructor() {\r\n        this.initToolsStructure();\r\n    }\r\n\r\n    protected onToolChanged(tool: ResourceUtilityTool): void {\r\n        this.utilityService.updateResource(tool, this.containerId());\r\n    }\r\n\r\n    protected onToolDeleted(toolId: string): void {\r\n        this.utilityService.removeResource(toolId, this.containerId());\r\n    }\r\n\r\n    private initToolsStructure(): void {\r\n        const effectRef = effect(() => {\r\n            const tools = this.elements();\r\n            const areToolsWithFullInfo = tools.every((tool) => tool.name);\r\n\r\n            if (areToolsWithFullInfo) {\r\n                return;\r\n            }\r\n\r\n            this.getAddintionalResourceInfo(tools).subscribe((tool) => {\r\n                this.utilityService.updateResource(tool, this.containerId());\r\n            });\r\n\r\n            effectRef.destroy();\r\n        });\r\n    }\r\n\r\n    private getAddintionalResourceInfo(resources: UtilitySubject[]): Observable<ResourceUtilityTool> {\r\n        if (!resources.length) {\r\n            return EMPTY;\r\n        }\r\n\r\n        const ids = resources.map((resource) => resource.id);\r\n\r\n        return this.factoryApiService.getToolsByIdsStream(ids).pipe(\r\n            map(\r\n                (factoryElement) =>\r\n                    ({\r\n                        ...resources.find((resource) => factoryElement.id === resource.id),\r\n                        isDelete: factoryElement.isDelete,\r\n                        name: factoryElement.name\r\n                    }) as ResourceUtilityTool\r\n            )\r\n        );\r\n    }\r\n}\r\n","<table\r\n    *transloco=\"let t\"\r\n    class=\"cc-table table\"\r\n    [class.table_readonly]=\"readonly()\"\r\n>\r\n    <thead class=\"cc-table__thead\">\r\n        <tr class=\"cc-table__tr\">\r\n            <th class=\"cc-table__th custom\">{{ t('TITLE') }}</th>\r\n            <th class=\"cc-table__th custom\">{{ t('QUANTITY') }}</th>\r\n            <th class=\"cc-table__th custom\">{{ t('UNIT') }}</th>\r\n        </tr>\r\n    </thead>\r\n    <tbody class=\"cc-table__tbody\">\r\n        @for (tool of elements(); track tool.id) {\r\n            <tr class=\"cc-table__tr custom-row\">\r\n                <cui-tool-form\r\n                    [tool]=\"tool\"\r\n                    [utilityId]=\"utilityId()\"\r\n                    [readonly]=\"readonly()\"\r\n                    (toolChanged)=\"onToolChanged($event)\"\r\n                    (toolDeleted)=\"onToolDeleted($event)\"\r\n                />\r\n            </tr>\r\n        }\r\n    </tbody>\r\n</table>\r\n","import { ResourcesBlockConsumablesComponent } from '../resources-block-consumables';\r\nimport { ResourcesBlockPartComponent } from '../resources-block-part';\r\nimport { ResourcesBlockToolboxComponent } from '../resources-block-toolbox';\r\n\r\nimport { Resource, ResourceContentType, UtilitySubject } from '@cuby-ui/api';\r\n\r\nexport const COMPONENTS_CONTENT = {\r\n    [ResourceContentType.Consumables]: ResourcesBlockConsumablesComponent,\r\n    [ResourceContentType.Toolbox]: ResourcesBlockToolboxComponent,\r\n    [ResourceContentType.Part]: ResourcesBlockPartComponent\r\n};\r\n\r\nexport interface ResourceDeleteOutput {\r\n    readonly resources: UtilitySubject[];\r\n    readonly container: Resource;\r\n}\r\n","import { TitleCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\r\nimport { ResourceContentType, SHARED_FACTORY_HTTP_OPTIONS } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CUI_SUBJECT_MODAL_SERVICE_TOKEN } from '../../../../model';\r\nimport { UtilitySubject } from '@cuby-ui/api';\r\nimport { CuiButtonModule, CuiEmptyStateComponent } from '../../../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-resources-block-content',\r\n    imports: [\r\n        TranslocoDirective,\r\n        CuiEmptyStateComponent,\r\n        CuiButtonModule,\r\n        TitleCasePipe,\r\n        CuiButtonModule,\r\n        CuiEmptyStateComponent\r\n    ],\r\n    templateUrl: './resources-block-content.component.html',\r\n    styleUrl: './resources-block-content.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ResourcesBlockContentComponent {\r\n    private subjectModalBase = inject(CUI_SUBJECT_MODAL_SERVICE_TOKEN);\r\n    public readonly config = SHARED_FACTORY_HTTP_OPTIONS;\r\n    public readonly isLoading = signal(false);\r\n\r\n    protected readonly emptyState = computed(() => `NO_${this.type().toUpperCase()}_TO_VIEW_YET`);\r\n\r\n    public readonly resourcesAdded = output<UtilitySubject[]>();\r\n\r\n    public readonly type = input.required<ResourceContentType>();\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly empty = input(true);\r\n    public readonly readonly = input(false);\r\n\r\n    protected onAddResource(): void {\r\n        this.subjectModalBase.addResource(this.utilityId());\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (!empty()) {\r\n        <ng-content />\r\n    } @else {\r\n        <cui-empty-state [subtitle]=\"t(emptyState())\" />\r\n    }\r\n\r\n    @if (!readonly()) {\r\n        <button\r\n            type=\"button\"\r\n            cuiButton\r\n            appearance=\"flat\"\r\n            size=\"xxs\"\r\n            icon=\"cuiIconPlus\"\r\n            (click)=\"onAddResource()\"\r\n        >\r\n            {{ t('ADD') }} {{ type() | titlecase }}\r\n        </button>\r\n    }\r\n</ng-container>\r\n","import { NgComponentOutlet, TitleCasePipe } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, input, output } from '@angular/core';\r\nimport { CuiTemplateContext, CuiTypedTemplateDirective } from '@cuby-ui/cdk';\r\n\r\nimport type { ResourceDeleteOutput } from './resources-block-tabs.options';\r\nimport { COMPONENTS_CONTENT } from './resources-block-tabs.options';\r\nimport { AssigneeRoleItemComponent } from '../../../assignee-role-item';\r\nimport { AssigneeRolesTabsComponent } from '../../../assignee-roles-tabs';\r\nimport { CuiButtonModule, CuiDialogService } from '../../../../../components';\r\nimport { Resource, UtilityApiService, UtilityComponentType, UtilityComponentWithResources } from '@cuby-ui/api';\r\nimport { UtilitySubject } from '@cuby-ui/api';\r\nimport { CuiDeleteModalComponent } from '../../../delete-modal';\r\nimport { ResourcesBlockContentComponent } from '../resources-block-content';\r\n\r\n@Component({\r\n    selector: 'cui-resources-block-tabs',\r\n    imports: [\r\n        CuiButtonModule,\r\n        TitleCasePipe,\r\n        NgComponentOutlet,\r\n        CuiTypedTemplateDirective,\r\n        AssigneeRoleItemComponent,\r\n        AssigneeRolesTabsComponent,\r\n        ResourcesBlockContentComponent\r\n    ],\r\n    templateUrl: './resources-block-tabs.component.html',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ResourcesBlockTabsComponent {\r\n    private readonly utilityApiService = inject(UtilityApiService);\r\n    private readonly cuiDialogService = inject(CuiDialogService);\r\n\r\n    protected readonly UTILITY_TEMPLATE_CONTEXT!: CuiTemplateContext<Resource>;\r\n    protected readonly COMPONENTS_CONTENT = COMPONENTS_CONTENT;\r\n\r\n    public readonly resourceComponent = input.required<UtilityComponentWithResources>();\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly readonly = input(false);\r\n    public readonly selectedIndex = input(0);\r\n\r\n    public readonly resourceAdded = output<ResourceDeleteOutput>();\r\n    public readonly resourceDeleted = output<Resource>();\r\n    public readonly selectedIndexChange = output<number>();\r\n\r\n    protected onOpenDeleteResourceModal(resource: Resource): void {\r\n        const content = [`ACTION_WILL_DELETE_${resource.contentType}_FROM_RESOURCES`];\r\n\r\n        this.cuiDialogService\r\n            .open(CuiDeleteModalComponent, {\r\n                data: {\r\n                    title: `DELETE_${resource.contentType}_QUESTION`,\r\n                    content,\r\n                    delete: () =>\r\n                        this.utilityApiService.deleteStructure(\r\n                            this.utilityId(),\r\n                            UtilityComponentType.Resources,\r\n                            resource.id\r\n                        )\r\n                }\r\n            })\r\n            .subscribe((data) => data?.canceled || this.resourceDeleted.emit(resource));\r\n    }\r\n\r\n    protected onResourcesAdded(resources: UtilitySubject[], container: Resource): void {\r\n        this.resourceAdded.emit({ resources, container });\r\n    }\r\n}\r\n","<cui-assignee-roles-tabs\r\n    [tabs]=\"resourceComponent().structure\"\r\n    [itemSlot]=\"itemSlot\"\r\n    [buttonSlot]=\"buttonSlot()\"\r\n    [contentSlot]=\"contentSlot\"\r\n    [selectedIndex]=\"selectedIndex()\"\r\n    (selectedIndexChange)=\"selectedIndexChange.emit($event)\"\r\n>\r\n    <ng-template\r\n        #itemSlot\r\n        let-element\r\n    >\r\n        <cui-assignee-role-item\r\n            [role]=\"element.contentType | titlecase\"\r\n            [readonly]=\"readonly()\"\r\n            [empty]=\"!element.elements.length\"\r\n            (deleteClicked)=\"onOpenDeleteResourceModal(element)\"\r\n        />\r\n    </ng-template>\r\n\r\n    <ng-template\r\n        #contentSlot\r\n        let-element\r\n        [cuiTypedTemplate]=\"UTILITY_TEMPLATE_CONTEXT\"\r\n    >\r\n        <cui-resources-block-content\r\n            [type]=\"element.contentType\"\r\n            [utilityId]=\"utilityId()\"\r\n            [empty]=\"!element.elements.length\"\r\n            [readonly]=\"readonly()\"\r\n            (resourcesAdded)=\"onResourcesAdded($event, element)\"\r\n        >\r\n            <ng-container\r\n                [ngComponentOutlet]=\"COMPONENTS_CONTENT[element.contentType]\"\r\n                [ngComponentOutletInputs]=\"{\r\n                    elements: element.elements,\r\n                    containerId: element.id,\r\n                    utilityId: utilityId(),\r\n                    readonly: readonly()\r\n                }\"\r\n            />\r\n        </cui-resources-block-content>\r\n    </ng-template>\r\n</cui-assignee-roles-tabs>\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\r\nimport { CuiClickOutsideDirective, CuiElementDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\nimport { CuiQuantumGroupResourcesStructureApiService, Resource, ResourceContentType } from '@cuby-ui/api';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule } from '../../../../../components';\r\n\r\n@Component({\r\n    selector: 'cui-resources-options',\r\n    imports: [CuiButtonModule, CuiElementDirective, CuiContextMenuModule, TranslocoDirective],\r\n    templateUrl: './resources-options.component.html',\r\n    styleUrl: './resources-options.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    hostDirectives: [CuiClickOutsideDirective],\r\n    host: {\r\n        '[class._flat]': \"appearance() === 'flat'\"\r\n    },\r\n    standalone: true\r\n})\r\nexport class ResourcesOptionsComponent {\r\n    private readonly quantumGroupResourcesStructureApiService = inject(CuiQuantumGroupResourcesStructureApiService);\r\n\r\n    protected readonly options = computed(() =>\r\n        this.types().map((type) => ({\r\n            label: type,\r\n            command: (): void => this.addResource(type)\r\n        }))\r\n    );\r\n    protected readonly isWithTitle = computed(() => this.appearance() === 'flat');\r\n    public readonly isLoading = signal(false);\r\n\r\n    public readonly types = input.required<ResourceContentType[]>();\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly appearance = input<'ghost' | 'flat'>('flat');\r\n    public readonly disabled = input(false);\r\n\r\n    public readonly resourceAdded = output<Resource>();\r\n\r\n    protected addResource(type: ResourceContentType): void {\r\n        this.isLoading.set(true);\r\n        this.quantumGroupResourcesStructureApiService\r\n            .addElementForStructure(this.utilityId(), type)\r\n            .pipe(finalize(() => this.isLoading.set(false)))\r\n            .subscribe((resource) => this.resourceAdded.emit(resource));\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <div class=\"utility\">\r\n        <button\r\n            #actionButton=\"elementRef\"\r\n            cuiElement\r\n            cuiButton\r\n            type=\"button\"\r\n            [appearance]=\"appearance()\"\r\n            [isLoaderShown]=\"isLoading()\"\r\n            [disabled]=\"disabled()\"\r\n            size=\"xxs\"\r\n            icon=\"cuiIconPlus\"\r\n        >\r\n            @if (isWithTitle()) {\r\n                {{ t('ADD_UTILITY') }}\r\n            }\r\n        </button>\r\n\r\n        <cui-context-menu\r\n            [items]=\"options()\"\r\n            [target]=\"actionButton.nativeElement\"\r\n        />\r\n    </div>\r\n</ng-container>\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    computed,\r\n    effect,\r\n    ElementRef,\r\n    inject,\r\n    input,\r\n    OnDestroy,\r\n    output,\r\n    Renderer2,\r\n    signal\r\n} from '@angular/core';\r\nimport { CuiContentWrapperComponent, CuiDialogService } from '../../../components';\r\nimport { AlertHintComponent } from '../../../components/alert-hint/alert-hint.component';\r\nimport { OptionsButtonComponent } from '../../../components/options-button/options-button.component';\r\nimport { ResourcesBlockTabsComponent } from '../resources-block-tabs';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { ResourcesOptionsComponent, ResourceUtilityMaterial } from './components';\r\nimport {\r\n    CuiFactoryApiService,\r\n    Resource,\r\n    ResourceContentType,\r\n    ResourceMaterialElement,\r\n    UtilityApiService,\r\n    UtilityComponentType,\r\n    UtilityComponentWithResources,\r\n    UtilitySubject\r\n} from '@cuby-ui/api';\r\nimport { CuiContextMenuItem } from '../../../interfaces';\r\nimport { map, Observable, toArray } from 'rxjs';\r\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../model';\r\nimport { CUI_USED_ELEMENTS_SERVICE_TOKEN } from '../../model/used-elements-service.token';\r\nimport { CUI_RESOURCE_STATE_SERVICE_TOKEN } from '../../model/resource-state-service.token';\r\nimport { CuiDeleteModalComponent } from '../delete-modal';\r\nimport { ContentHeaderComponent } from '../../../components/content-header';\r\n\r\n@Component({\r\n    selector: 'cui-resources-block',\r\n    standalone: true,\r\n    imports: [\r\n        CuiContentWrapperComponent,\r\n        AlertHintComponent,\r\n        OptionsButtonComponent,\r\n        ResourcesBlockTabsComponent,\r\n        TranslocoDirective,\r\n        ResourcesOptionsComponent,\r\n        ContentHeaderComponent\r\n    ],\r\n    templateUrl: './resources-block.component.html',\r\n    styleUrl: './resources-block.component.scss'\r\n})\r\nexport class ResourcesBlockComponent implements AfterViewInit, OnDestroy {\r\n    private readonly el = inject(ElementRef<HTMLElement>);\r\n    private readonly r2 = inject(Renderer2);\r\n    private readonly factoryApiService = inject(CuiFactoryApiService);\r\n    private readonly cuiDialogService = inject(CuiDialogService);\r\n    private readonly utilityApiService = inject(UtilityApiService);\r\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\r\n    private readonly usedElementsService = inject(CUI_USED_ELEMENTS_SERVICE_TOKEN);\r\n    private readonly resourceStateService = inject(CUI_RESOURCE_STATE_SERVICE_TOKEN);\r\n    private ro?: ResizeObserver;\r\n\r\n    protected readonly TYPES = [ResourceContentType.Consumables, ResourceContentType.Toolbox, ResourceContentType.Part];\r\n    protected readonly RESOURCES_COMPONENT_OPTIONS: CuiContextMenuItem[] = [\r\n        {\r\n            label: 'Delete',\r\n            icon: 'cuiIconTrash',\r\n            color: 'var(--cui-danger)',\r\n            command: this.openDeleteResourceComponentModal.bind(this)\r\n        }\r\n    ];\r\n\r\n    protected readonly currentTabIndex = signal(0);\r\n    protected readonly resources = computed(() => this.resourceComponent().structure);\r\n    protected readonly availableTypes = computed(() =>\r\n        this.TYPES.filter(\r\n            (type) => !this.resourceComponent().structure.find((resource) => resource.contentType === type)\r\n        )\r\n    );\r\n\r\n    public readonly title = input.required<string>();\r\n    public readonly resourceComponent = input.required<UtilityComponentWithResources>();\r\n    public readonly utilityId = input.required<string>();\r\n\r\n    public readonly resourceComponentDeleted = output<UtilityComponentType>();\r\n\r\n    constructor() {\r\n        this.initUsedElementsEffect();\r\n\r\n        effect(() => {\r\n            const length = this.resourceComponent().structure.length;\r\n            const idx = this.currentTabIndex();\r\n\r\n            if (length > 0 && idx >= length) {\r\n                this.currentTabIndex.set(length - 1);\r\n            }\r\n        });\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        const host = this.el.nativeElement;\r\n        const targetWrapper = host.querySelector('cui-content-wrapper.custom-wrapper:last-child') as HTMLElement;\r\n\r\n        const update = (): void => {\r\n            if (host.offsetWidth > 600 && targetWrapper) {\r\n                this.r2.addClass(targetWrapper, 'wide');\r\n            } else if (targetWrapper) {\r\n                this.r2.removeClass(targetWrapper, 'wide');\r\n            }\r\n        };\r\n\r\n        this.ro = new ResizeObserver(update);\r\n        this.ro.observe(host);\r\n        update();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.ro?.disconnect();\r\n    }\r\n\r\n    protected onAddResourcesType(resource: Resource): void {\r\n        this.utilityService.addResourceStructure(resource);\r\n    }\r\n\r\n    protected onResourcesAdded(resources: UtilitySubject[], container: Resource): void {\r\n        this.getAddintionalResourceInfo(resources, container.contentType).subscribe((structure) => {\r\n            this.utilityService.addResources(structure, container.id);\r\n\r\n            const updatedResources = this.resourceComponent().structure.map((resource) =>\r\n                resource.id === container.id\r\n                    ? {\r\n                          ...resource,\r\n                          elements: [\r\n                              ...resource.elements,\r\n                              ...structure.filter((s) => !resource.elements.some((e) => e.id === s.id))\r\n                          ] as ResourceMaterialElement[]\r\n                      }\r\n                    : resource\r\n            );\r\n\r\n            this.resourceStateService.updateResources(this.utilityId(), updatedResources);\r\n        });\r\n    }\r\n\r\n    protected onResourceStructureRemoved(resource: Resource): void {\r\n        this.utilityService.removeResourceStructure(resource.id);\r\n\r\n        const updatedResources = this.resourceComponent().structure.filter((r) => r.id !== resource.id);\r\n        this.resourceStateService.updateResources(this.utilityId(), updatedResources);\r\n    }\r\n\r\n    private initUsedElementsEffect(): void {\r\n        effect(() => {\r\n            this.usedElementsService.setAll(\r\n                this.resourceComponent().structure.flatMap((structure) => structure.elements)\r\n            );\r\n        });\r\n    }\r\n\r\n    private openDeleteResourceComponentModal(): void {\r\n        const content = ['ACTION_WILL_DELETE_RESOURCE_COMPONENT'];\r\n        const componentId = this.resourceComponent().id;\r\n\r\n        this.cuiDialogService\r\n            .open(CuiDeleteModalComponent, {\r\n                data: {\r\n                    title: 'DELETE_RESOURCE_COMPONENT_QUESTION',\r\n                    content,\r\n                    delete: () => this.utilityApiService.deleteComponent(this.utilityId(), componentId)\r\n                }\r\n            })\r\n            .subscribe((data) => data?.canceled || this.resourceComponentDeleted.emit(UtilityComponentType.Resources));\r\n    }\r\n\r\n    private getAddintionalResourceInfo(\r\n        resources: UtilitySubject[],\r\n        contentType: ResourceContentType\r\n    ): Observable<ResourceUtilityMaterial[]> {\r\n        const ids = resources.map((resource) => resource.id);\r\n        const requests = {\r\n            [ResourceContentType.Consumables]: this.factoryApiService.getMaterialsByIds(ids),\r\n            [ResourceContentType.Toolbox]: this.factoryApiService.getToolsByIdsStream(ids),\r\n            [ResourceContentType.Part]: this.factoryApiService.getPartsByIdsStream(ids)\r\n        };\r\n\r\n        return requests[contentType].pipe(\r\n            toArray(),\r\n            map((factoryElements) =>\r\n                factoryElements.map(\r\n                    (element, index) =>\r\n                        ({\r\n                            ...resources[index],\r\n                            ...element\r\n                        }) as ResourceUtilityMaterial\r\n                )\r\n            )\r\n        );\r\n    }\r\n}\r\n","@let structure = resourceComponent().structure;\r\n\r\n<cui-content-wrapper\r\n    class=\"custom-wrapper\"\r\n    *transloco=\"let t\"\r\n    backgroundColor=\"var(--cui-base-10)\"\r\n    [gap]=\"16\"\r\n>\r\n    <header\r\n        cuiContentHeader\r\n        [heading]=\"title()\"\r\n    >\r\n        <div class=\"content\">\r\n            @if (!structure.length) {\r\n                <cui-alert-hint\r\n                    status=\"warning\"\r\n                    [tooltipText]=\"t('NO_ENTITIES_ADDED')\"\r\n                />\r\n            }\r\n            <cui-options-button [options]=\"RESOURCES_COMPONENT_OPTIONS\" />\r\n        </div>\r\n    </header>\r\n\r\n    <cui-content-wrapper class=\"custom-wrapper\">\r\n        @if (structure.length) {\r\n            <cui-resources-block-tabs\r\n                [utilityId]=\"utilityId()\"\r\n                [buttonSlot]=\"buttonSlot\"\r\n                [resourceComponent]=\"resourceComponent()\"\r\n                [selectedIndex]=\"currentTabIndex()\"\r\n                (selectedIndexChange)=\"currentTabIndex.set($event)\"\r\n                (resourceAdded)=\"onResourcesAdded($event.resources, $event.container)\"\r\n                (resourceDeleted)=\"onResourceStructureRemoved($event)\"\r\n            />\r\n        } @else {\r\n            <cui-resources-options\r\n                [utilityId]=\"utilityId()\"\r\n                [types]=\"availableTypes()\"\r\n                (resourceAdded)=\"onAddResourcesType($event)\"\r\n            />\r\n        }\r\n    </cui-content-wrapper>\r\n</cui-content-wrapper>\r\n\r\n<ng-template #buttonSlot>\r\n    <cui-resources-options\r\n        [utilityId]=\"utilityId()\"\r\n        [types]=\"availableTypes()\"\r\n        [disabled]=\"!availableTypes().length\"\r\n        appearance=\"ghost\"\r\n        (resourceAdded)=\"onAddResourcesType($event)\"\r\n    />\r\n</ng-template>\r\n","import { ResourcesBlockPartComponent } from '../resources-block';\r\nimport { Resource, ResourceContentType } from '@cuby-ui/api';\r\nimport { ResourcesBlockConsumablesComponent } from '../resources-block/components/resources-block-consumables';\r\nimport { ResourcesBlockToolboxComponent } from '../resources-block/components/resources-block-toolbox';\r\nimport { UtilitySubject } from '@cuby-ui/api';\r\n\r\nexport const COMPONENTS_CONTENT = {\r\n    [ResourceContentType.Consumables]: ResourcesBlockConsumablesComponent,\r\n    [ResourceContentType.Toolbox]: ResourcesBlockToolboxComponent,\r\n    [ResourceContentType.Part]: ResourcesBlockPartComponent\r\n};\r\n\r\nexport interface ResourceDeleteOutput {\r\n    readonly resources: UtilitySubject[];\r\n    readonly container: Resource;\r\n}\r\n","import { Component, inject, input, output, TemplateRef } from '@angular/core';\r\nimport { CuiDialogService } from '../../../components';\r\nimport { COMPONENTS_CONTENT, ResourceDeleteOutput } from './resources-block-tabs.options';\r\nimport { NgComponentOutlet, TitleCasePipe } from '@angular/common';\r\nimport { AssigneeRolesTabsComponent } from '../assignee-roles-tabs/assignee-roles-tabs.component';\r\n\r\nimport { AssigneeRoleItemComponent } from '../assignee-role-item/assignee-role-item.component';\r\nimport { CuiDeleteModalComponent } from '../delete-modal';\r\nimport { Resource, UtilityComponentType, UtilityComponentWithResources, UtilityApiService } from '@cuby-ui/api';\r\nimport { CUI_SUBJECT_MODAL_SERVICE_TOKEN } from '../../model';\r\nimport { CuiTemplateContext, CuiTypedTemplateDirective } from '@cuby-ui/cdk';\r\nimport { ResourcesBlockContentComponent } from '../resources-block/components/resources-block-content';\r\n\r\n@Component({\r\n    selector: 'cui-resources-block-tabs',\r\n    standalone: true,\r\n    imports: [\r\n        TitleCasePipe,\r\n        AssigneeRolesTabsComponent,\r\n        AssigneeRoleItemComponent,\r\n        NgComponentOutlet,\r\n        ResourcesBlockContentComponent,\r\n        CuiTypedTemplateDirective\r\n    ],\r\n    templateUrl: './resources-block-tabs.component.html'\r\n})\r\nexport class ResourcesBlockTabsComponent {\r\n    private readonly utilityApiService = inject(UtilityApiService);\r\n    private readonly cuiDialogService = inject(CuiDialogService);\r\n    private readonly subjectModalService = inject(CUI_SUBJECT_MODAL_SERVICE_TOKEN);\r\n\r\n    protected readonly UTILITY_TEMPLATE_CONTEXT!: CuiTemplateContext<Resource>;\r\n    protected readonly COMPONENTS_CONTENT = COMPONENTS_CONTENT;\r\n\r\n    public readonly resourceComponent = input.required<UtilityComponentWithResources>();\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\r\n    public readonly readonly = input(false);\r\n    public readonly selectedIndex = input(0);\r\n\r\n    public readonly resourceAdded = output<ResourceDeleteOutput>();\r\n    public readonly resourceDeleted = output<Resource>();\r\n    public readonly selectedIndexChange = output<number>();\r\n\r\n    protected onOpenDeleteResourceModal(resource: Resource): void {\r\n        const content = [`ACTION_WILL_DELETE_${resource.contentType}_FROM_RESOURCES`];\r\n\r\n        this.cuiDialogService\r\n            .open(CuiDeleteModalComponent, {\r\n                data: {\r\n                    title: `DELETE_${resource.contentType}_QUESTION`,\r\n                    content,\r\n                    delete: () =>\r\n                        this.utilityApiService.deleteStructure(\r\n                            this.utilityId(),\r\n                            UtilityComponentType.Resources,\r\n                            resource.id\r\n                        )\r\n                }\r\n            })\r\n            .subscribe((data) => data?.canceled || this.resourceDeleted.emit(resource));\r\n    }\r\n\r\n    protected onResourcesAdded(): void {\r\n        this.subjectModalService.addResource(this.utilityId());\r\n    }\r\n}\r\n","<cui-assignee-roles-tabs\r\n    [tabs]=\"resourceComponent().structure\"\r\n    [itemSlot]=\"itemSlot\"\r\n    [buttonSlot]=\"buttonSlot()\"\r\n    [contentSlot]=\"contentSlot\"\r\n    [selectedIndex]=\"selectedIndex()\"\r\n    (selectedIndexChange)=\"selectedIndexChange.emit($event)\"\r\n>\r\n    <ng-template\r\n        #itemSlot\r\n        let-element\r\n    >\r\n        <cui-assignee-role-item\r\n            [role]=\"element.contentType | titlecase\"\r\n            [readonly]=\"readonly()\"\r\n            [empty]=\"!element.elements.length\"\r\n            (deleteClicked)=\"onOpenDeleteResourceModal(element)\"\r\n        />\r\n    </ng-template>\r\n\r\n    <ng-template\r\n        #contentSlot\r\n        let-element\r\n        [cuiTypedTemplate]=\"UTILITY_TEMPLATE_CONTEXT\"\r\n    >\r\n        <cui-resources-block-content\r\n            [type]=\"element.contentType\"\r\n            [utilityId]=\"utilityId()\"\r\n            [empty]=\"!element.elements.length\"\r\n            [readonly]=\"readonly()\"\r\n            (resourcesAdded)=\"onResourcesAdded()\"\r\n        >\r\n            <ng-container\r\n                [ngComponentOutlet]=\"COMPONENTS_CONTENT[element.contentType]\"\r\n                [ngComponentOutletInputs]=\"{\r\n                    elements: element.elements,\r\n                    containerId: element.id,\r\n                    utilityId: utilityId(),\r\n                    readonly: readonly()\r\n                }\"\r\n            />\r\n        </cui-resources-block-content>\r\n    </ng-template>\r\n</cui-assignee-roles-tabs>\r\n","import { Component, inject, input, OnInit, signal } from '@angular/core';\r\nimport { CuiEmptyStateComponent } from '../../../components';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { UtilityApiService, UtilityComponentType, UtilityComponentWithResources } from '@cuby-ui/api';\r\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../model';\r\nimport { ResourcesBlockTabsComponent } from '../resources-block-tabs';\r\n\r\n@Component({\r\n    selector: 'cui-modal-resources-tab',\r\n    standalone: true,\r\n    imports: [CuiEmptyStateComponent, TranslocoDirective, ResourcesBlockTabsComponent],\r\n    templateUrl: './modal-resources-tab.component.html',\r\n    styleUrl: './modal-resources-tab.component.scss'\r\n})\r\nexport class ModalResourcesTabComponent implements OnInit {\r\n    private readonly utilityApiService = inject(UtilityApiService);\r\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\r\n\r\n    protected readonly isLoaded = signal(false);\r\n    protected readonly utilityComponentWithResources = this.utilityService.resourcesComponent;\r\n\r\n    public readonly utilityId = input.required<string>();\r\n\r\n    public ngOnInit(): void {\r\n        this.initResources();\r\n    }\r\n\r\n    private initResources(): void {\r\n        this.utilityApiService.getById(this.utilityId()).subscribe((utility) => {\r\n            this.isLoaded.set(true);\r\n\r\n            const utilityComponentWithResources =\r\n                (utility.components.find(\r\n                    (utilityComponent) => utilityComponent.componentType === UtilityComponentType.Resources\r\n                ) as UtilityComponentWithResources) ?? null;\r\n\r\n            this.utilityService.setComponent(utilityComponentWithResources);\r\n        });\r\n    }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    @if (isLoaded()) {\r\n        @if (utilityComponentWithResources(); as utilityComponentWithResources) {\r\n            <cui-resources-block-tabs\r\n                [resourceComponent]=\"utilityComponentWithResources\"\r\n                [utilityId]=\"utilityId()\"\r\n                [buttonSlot]=\"button\"\r\n                [readonly]=\"true\"\r\n            />\r\n            <ng-template #button />\r\n        } @else {\r\n            <cui-empty-state [subtitle]=\"t('NO_RESOURCES_TO_VIEW_YET')\" />\r\n        }\r\n    }\r\n</ng-container>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, input, signal } from '@angular/core';\r\nimport {\r\n    CuiApiContext,\r\n    StorageObjectInstruction,\r\n    UtilityApiService,\r\n    UtilityComponentType,\r\n    UtilityComponentWithInstructions\r\n} from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { ModalDividedSectionComponent } from '../modal-divided-section';\r\n\r\n@Component({\r\n    imports: [ModalDividedSectionComponent],\r\n    templateUrl: './modal-instructions-tab.component.html',\r\n    styleUrl: './modal-instructions-tab.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ModalInstructionsTabComponent implements OnInit {\r\n    private readonly utilityApiService = inject(UtilityApiService);\r\n\r\n    public readonly utilityId = input.required<string>();\r\n    public readonly environmentUrlForInstruction = input.required<string>();\r\n    public readonly context = input.required<CuiApiContext>();\r\n    protected readonly storageObjectInstructions = signal<CuiNullable<StorageObjectInstruction[]>>(null);\r\n\r\n    public ngOnInit(): void {\r\n        this.initInstructions();\r\n    }\r\n\r\n    private initInstructions(): void {\r\n        this.utilityApiService.getById(this.utilityId()).subscribe((utility) => {\r\n            const utilityComponentWithInstructions = utility.components.find(\r\n                (utilityComponent) => utilityComponent.componentType === UtilityComponentType.Instructions\r\n            ) as CuiNullable<UtilityComponentWithInstructions>;\r\n\r\n            this.storageObjectInstructions.set(\r\n                utilityComponentWithInstructions\r\n                    ? utilityComponentWithInstructions.structure.map(\r\n                          (listObjectInstruction) => listObjectInstruction.instruction\r\n                      )\r\n                    : []\r\n            );\r\n        });\r\n    }\r\n}\r\n","@if (storageObjectInstructions(); as storageObjectInstructions) {\r\n    <cui-modal-divided-section\r\n        storageElementTypeName=\"INSTRUCTION\"\r\n        [context]=\"context()\"\r\n        [environmentUrlForInstruction]=\"environmentUrlForInstruction()\"\r\n        [storageObjects]=\"storageObjectInstructions\"\r\n    />\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\nimport { CuiTabsComponent } from '../../../components/tabs';\r\nimport { CuiTabDirective } from '../../../components/tab';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { ModalHeaderTab } from '@cuby-ui/api';\r\n\r\n@Component({\r\n    selector: 'cui-modal-header-tabs',\r\n    standalone: true,\r\n    imports: [CuiTabsComponent, NgTemplateOutlet, CuiTabDirective, NgComponentOutlet, TranslocoDirective],\r\n    templateUrl: './modal-header-tabs.component.html',\r\n    styleUrl: './modal-header-tabs.component.scss'\r\n})\r\nexport class ModalHeaderTabsComponent {\r\n    public readonly tabs = input.required<ModalHeaderTab[]>();\r\n    public readonly selectedIndex = input(0);\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n    <cui-tabs\r\n        class=\"tabs\"\r\n        [selectedIndex]=\"selectedIndex()\"\r\n        [headerSlot]=\"headerSlot\"\r\n    >\r\n        <ng-template\r\n            #headerSlot\r\n            let-buttons\r\n        >\r\n            <header class=\"header\">\r\n                <div\r\n                    #buttons\r\n                    class=\"buttons\"\r\n                >\r\n                    <ng-container [ngTemplateOutlet]=\"buttons\" />\r\n                </div>\r\n            </header>\r\n        </ng-template>\r\n\r\n        @for (tab of tabs(); track tab) {\r\n            <cui-tab\r\n                [data]=\"tab\"\r\n                [buttonSlot]=\"cuiButtonSlot\"\r\n                [contentSlot]=\"cuiContentSlot\"\r\n                class=\"tab\"\r\n            >\r\n                <ng-template\r\n                    #cuiButtonSlot\r\n                    let-isActive=\"isActive\"\r\n                    let-element\r\n                >\r\n                    <div\r\n                        class=\"button\"\r\n                        [class.button_active]=\"isActive\"\r\n                    >\r\n                        {{ t(element.title) }}\r\n                    </div>\r\n                </ng-template>\r\n                <ng-template\r\n                    #cuiContentSlot\r\n                    let-element\r\n                >\r\n                    <div class=\"content\">\r\n                        <ng-container\r\n                            [ngComponentOutlet]=\"element.component\"\r\n                            [ngComponentOutletInputs]=\"element.inputs\"\r\n                        />\r\n                    </div>\r\n                </ng-template>\r\n            </cui-tab>\r\n        }\r\n    </cui-tabs>\r\n</ng-container>\r\n","import type { AfterViewInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, input, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { ModalDividedSectionComponent } from '../modal-divided-section/modal-divided-section.component';\r\nimport { CuiCriterionApiService, CuiStorageObjectType, StorageObjectCriterion } from '@cuby-ui/api';\r\n\r\n@Component({\r\n    imports: [ModalDividedSectionComponent],\r\n    templateUrl: './modal-criteria-tab.component.html',\r\n    styleUrl: './modal-criteria-tab.component.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true\r\n})\r\nexport class ModalCriteriaTabComponent implements AfterViewInit {\r\n    private readonly criterionApiService = inject(CuiCriterionApiService);\r\n\r\n    protected readonly storageObjectCriteria = signal<CuiNullable<StorageObjectCriterion[]>>(null);\r\n\r\n    public readonly acceptanceCriteriaContainerId = input<string>();\r\n    public readonly acceptanceCriteriaIds = input<string[]>();\r\n    public readonly environmentUrlForResources = input.required<string>();\r\n\r\n    public ngAfterViewInit(): void {\r\n        this.initCriteriaSubscription();\r\n    }\r\n\r\n    private initCriteriaSubscription(): void {\r\n        const acceptanceCriteriaContainerId = this.acceptanceCriteriaContainerId();\r\n        const acceptanceCriteriaIds = this.acceptanceCriteriaIds();\r\n\r\n        if (acceptanceCriteriaContainerId) {\r\n            this.criterionApiService\r\n                .getAll(acceptanceCriteriaContainerId)\r\n                .subscribe((criteria) => this.storageObjectCriteria.set(criteria));\r\n\r\n            return;\r\n        }\r\n\r\n        if (!acceptanceCriteriaIds) {\r\n            return;\r\n        }\r\n\r\n        if (acceptanceCriteriaIds.length) {\r\n            this.criterionApiService.getSelection(acceptanceCriteriaIds).subscribe((criteria) =>\r\n                this.storageObjectCriteria.set(\r\n                    criteria.map((criterion) => ({\r\n                        id: criterion.id,\r\n                        storageElement: criterion,\r\n                        storageObjectType: CuiStorageObjectType.CREATED\r\n                    }))\r\n                )\r\n            );\r\n\r\n            return;\r\n        }\r\n\r\n        this.storageObjectCriteria.set([]);\r\n    }\r\n}\r\n","@if (storageObjectCriteria(); as storageObjectCriteria) {\r\n    <cui-modal-divided-section\r\n        storageElementTypeName=\"CRITERIA\"\r\n        [environmentUrlForResources]=\"environmentUrlForResources()\"\r\n        [storageObjects]=\"storageObjectCriteria\"\r\n    />\r\n}\r\n","import { AfterViewInit, Component, computed, inject, input, signal, TemplateRef, viewChild } from '@angular/core';\r\nimport { CUI_DIALOG_CONTEXT, CuiDialogContext, CuiLetterBoxComponent } from '../../../components';\r\nimport { createEditorTools, CuiEditorComponent, CuiEditorConfig } from '../../../editor';\r\nimport { CuiNullable, CuiTime } from '@cuby-ui/cdk';\r\nimport {\r\n    CuiJobApiService,\r\n    JobType,\r\n    ModalHeaderTab,\r\n    Operation,\r\n    SHARED_CONSTRUCTION_HTTP_OPTIONS,\r\n    SHARED_INSTRUCTION_HTTP_OPTIONS,\r\n    StorageObject\r\n} from '@cuby-ui/api';\r\nimport { ModalInfoTabComponent } from '../modal-info-tab';\r\nimport { ModalResourcesTabComponent } from '../modal-resources-tab';\r\nimport { ModalInstructionsTabComponent } from '../modal-instructions-tab';\r\nimport { ModalHeaderTabsComponent } from '../modal-header-tabs';\r\nimport { ModalHeaderInsertedButtonsComponent } from '../modal-header-inserted-buttons';\r\nimport { ModalCriteriaTabComponent } from '../modal-criteria-tab';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { ModalHeaderComponent } from '../modal-header';\r\n\r\n@Component({\r\n    selector: 'cui-modal-operation-part',\r\n    standalone: true,\r\n    imports: [\r\n        CuiLetterBoxComponent,\r\n        CuiEditorComponent,\r\n        ModalHeaderTabsComponent,\r\n        ModalHeaderInsertedButtonsComponent,\r\n        ModalHeaderTabsComponent,\r\n        ModalHeaderTabsComponent,\r\n        ModalHeaderTabsComponent,\r\n        ModalHeaderComponent,\r\n        TranslocoDirective\r\n    ],\r\n    templateUrl: './modal-operation-part.component.html',\r\n    styleUrl: './modal-operation-part.component.scss'\r\n})\r\nexport class ModalOperationPartComponent implements AfterViewInit {\r\n    private readonly context = inject<CuiDialogContext>(CUI_DIALOG_CONTEXT);\r\n    private readonly jobApiService = inject(CuiJobApiService);\r\n\r\n    protected readonly tabs = signal<ModalHeaderTab[]>([]);\r\n\r\n    protected readonly ptFormat = computed(() =>\r\n        CuiTime.fromPT(this.storageObjectOperation().storageElement.estimatedTime).toString('HH:MM:SS')\r\n    );\r\n\r\n    protected editorConfig = computed<CuiEditorConfig>(() => ({\r\n        readOnly: true,\r\n        requestOptions: SHARED_CONSTRUCTION_HTTP_OPTIONS,\r\n        tools: createEditorTools(this.environmentUrlForResources())\r\n    }));\r\n\r\n    public readonly isInserted = input(false);\r\n    public readonly containerId = input<CuiNullable<string>>();\r\n    public readonly quantumId = input<CuiNullable<string>>();\r\n    public readonly jobId = input<CuiNullable<string>>();\r\n\r\n    public readonly storageObjectOperation = input.required<StorageObject<Operation>>();\r\n    public readonly environmentUrlForResources = input.required<string>();\r\n    public readonly environmentUrlForInstruction = input.required<string>();\r\n\r\n    protected readonly estimatedTime = viewChild.required('estimatedTime');\r\n    public readonly editor = viewChild.required<TemplateRef<unknown>>('editor');\r\n\r\n    public ngAfterViewInit() {\r\n        this.initSectionComponent();\r\n    }\r\n\r\n    protected onUnbindOperation(): void {\r\n        const containerId = this.containerId();\r\n        const operationId = this.storageObjectOperation().id;\r\n        const quantumId = this.quantumId();\r\n        const jobId = this.jobId();\r\n\r\n        if (!containerId) {\r\n            return;\r\n        }\r\n\r\n        if (!quantumId) {\r\n            const requestBody = {\r\n                jobId: jobId!,\r\n                pointerOperationsId: containerId,\r\n                selectOperation: operationId,\r\n                type: JobType.JobCorrective\r\n            };\r\n\r\n            this.jobApiService.unbindOperation(requestBody).subscribe((response) => {\r\n                this.context.completeWith(response);\r\n            });\r\n\r\n            return;\r\n        }\r\n\r\n        this.jobApiService\r\n            .unbindOperation({\r\n                jobId: jobId!,\r\n                pointerOperationsId: containerId,\r\n                selectOperation: operationId,\r\n                type: JobType.JobMain\r\n            })\r\n            .subscribe((response) => {\r\n                this.context.completeWith(response);\r\n            });\r\n    }\r\n\r\n    private initSectionComponent(): void {\r\n        const {\r\n            storageElement: { utilityId, acceptancesCriteria }\r\n        } = this.storageObjectOperation();\r\n\r\n        this.tabs.set([\r\n            {\r\n                title: 'INFO',\r\n                component: ModalInfoTabComponent,\r\n                inputs: { content: { ESTIMATED_TIME: this.estimatedTime(), DESCRIPTION: this.editor() } }\r\n            },\r\n            {\r\n                title: 'RESOURCES',\r\n                component: ModalResourcesTabComponent,\r\n                inputs: { utilityId }\r\n            },\r\n            {\r\n                title: 'INSTRUCTIONS',\r\n                component: ModalInstructionsTabComponent,\r\n                inputs: {\r\n                    utilityId,\r\n                    environmentUrlForInstruction: this.environmentUrlForInstruction(),\r\n                    context: SHARED_INSTRUCTION_HTTP_OPTIONS\r\n                }\r\n            },\r\n            {\r\n                title: 'CRITERIA',\r\n                component: ModalCriteriaTabComponent,\r\n                inputs: {\r\n                    acceptanceCriteriaContainerId: acceptancesCriteria,\r\n                    environmentUrlForResources: this.environmentUrlForResources()\r\n                }\r\n            }\r\n        ]);\r\n    }\r\n}\r\n","@if (storageObjectOperation().storageElement; as operation) {\r\n    <ng-container *transloco=\"let t\">\r\n        <cui-modal-header\r\n            [heading]=\"operation.title\"\r\n            [isInserted]=\"isInserted()\"\r\n        >\r\n            <cui-letter-box\r\n                cuiModalHeaderIcon\r\n                letter=\"o\"\r\n                backgroundColor=\"var(--cui-success)\"\r\n            />\r\n\r\n            @if (isInserted()) {\r\n                <cui-modal-header-inserted-buttons\r\n                    cuiModalHeaderButtons\r\n                    (unbindClicked)=\"onUnbindOperation()\"\r\n                />\r\n            }\r\n        </cui-modal-header>\r\n\r\n        @if (tabs().length) {\r\n            <cui-modal-header-tabs [tabs]=\"tabs()\" />\r\n        }\r\n    </ng-container>\r\n\r\n    <ng-template #estimatedTime>\r\n        {{ ptFormat() }}\r\n    </ng-template>\r\n\r\n    <ng-template #editor>\r\n        <cui-editor\r\n            [editorApiId]=\"operation.textContainerId\"\r\n            [config]=\"editorConfig()\"\r\n        />\r\n    </ng-template>\r\n}\r\n","import { Component, HostBinding, inject } from '@angular/core';\r\nimport {\r\n    CUI_DIALOG_CONTEXT,\r\n    CuiDialogContext,\r\n    CuiDialogSize,\r\n    CuiRenderDynamicComponentsComponent,\r\n    CuiRenderDynamicComponentsService\r\n} from '../../../components';\r\nimport { CuiRenderDynamicModalDialogData } from './render-dynamic-modal.option';\r\n\r\n@Component({\r\n    selector: 'cui-render-dynamic-modal',\r\n    standalone: true,\r\n    imports: [CuiRenderDynamicComponentsComponent],\r\n    templateUrl: './render-dynamic-modal.component.html',\r\n    styleUrl: './render-dynamic-modal.component.scss'\r\n})\r\nexport class RenderDynamicModalComponent {\r\n    private readonly cuiDialogContext = inject<CuiDialogContext<CuiRenderDynamicModalDialogData>>(CUI_DIALOG_CONTEXT);\r\n    private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n    @HostBinding('attr.data-size')\r\n    protected get size(): CuiDialogSize {\r\n        return this.cuiDialogContext.size;\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.initParentParentOfModal();\r\n    }\r\n\r\n    private initParentParentOfModal(): void {\r\n        const { component, inputs } = this.cuiDialogContext.data;\r\n\r\n        this.renderDynamicComponentsService.open({ component, inputs });\r\n    }\r\n}\r\n","<div class=\"wrapper\">\r\n    <cui-render-dynamic-components />\r\n</div>\r\n","import { computed, Injectable, signal } from '@angular/core';\r\nimport { UtilityService } from '../model';\r\nimport { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport {\r\n    ListObjectInstruction,\r\n    Resource,\r\n    StorageObjectInstruction,\r\n    Utility,\r\n    UtilityComponent,\r\n    UtilityComponentType,\r\n    UtilityComponentWithInstructions,\r\n    UtilityComponentWithResources,\r\n    UtilitySubject\r\n} from '@cuby-ui/api';\r\nimport type { ResourceUtilityMaterial } from '../ui/resources-block/components';\r\n\r\n@Injectable()\r\nexport class UtilityBaseService implements UtilityService {\r\n    private readonly utilitySignal = signal<CuiNullable<Utility>>(null);\r\n    private readonly instructionComponentSignal = signal<CuiNullable<UtilityComponentWithInstructions>>(null);\r\n    private readonly resourcesComponentSignal = signal<CuiNullable<UtilityComponentWithResources>>(null);\r\n\r\n    public readonly instructions = computed(() => {\r\n        const structure = this.instructionComponentSignal()?.structure || [];\r\n        return structure.map(({ instruction }) => instruction);\r\n    });\r\n\r\n    public readonly resources = computed(() => this.resourcesComponentSignal()?.structure ?? []);\r\n    public readonly instructionComponent = this.instructionComponentSignal.asReadonly();\r\n    public readonly resourcesComponent = this.resourcesComponentSignal.asReadonly();\r\n    public readonly utility = this.utilitySignal.asReadonly();\r\n\r\n    public setUtility(utility: Utility): void {\r\n        this.utilitySignal.set(utility);\r\n    }\r\n\r\n    public setComponent(component: UtilityComponent): void {\r\n        const actions = {\r\n            [UtilityComponentType.Instructions]: (): void =>\r\n                this.instructionComponentSignal.set(component as UtilityComponentWithInstructions),\r\n            [UtilityComponentType.Resources]: (): void =>\r\n                this.resourcesComponentSignal.set(component as UtilityComponentWithResources)\r\n        };\r\n\r\n        actions[component.componentType]();\r\n    }\r\n\r\n    public removeComponent(componentType: UtilityComponentType): void {\r\n        const actions = {\r\n            [UtilityComponentType.Instructions]: (): void => this.instructionComponentSignal.set(null),\r\n            [UtilityComponentType.Resources]: (): void => this.resourcesComponentSignal.set(null)\r\n        };\r\n\r\n        actions[componentType]();\r\n    }\r\n\r\n    public addInstructions(instructions: ListObjectInstruction[]): void {\r\n        this.instructionComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure: [...(prev?.structure ?? []), ...instructions]\r\n        }));\r\n    }\r\n\r\n    public updateInstruction(instruction: StorageObjectInstruction, id?: string): void {\r\n        const updatedInstructionId = id ?? instruction?.id;\r\n\r\n        this.instructionComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure:\r\n                prev?.structure.map((item) =>\r\n                    updatedInstructionId === item.instruction.id ? { ...item, id: instruction.id, instruction } : item\r\n                ) ?? []\r\n        }));\r\n    }\r\n\r\n    public removeInstruction(instructionStorageId: string): void {\r\n        this.instructionComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure: prev?.structure.filter((instruction) => instruction.id !== instructionStorageId) ?? []\r\n        }));\r\n    }\r\n\r\n    public updateInstructionTitle(instructionId: string, title: string): void {\r\n        this.instructionComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure:\r\n                prev?.structure.map((item) => {\r\n                    if (item.instruction.id !== instructionId) {\r\n                        return item;\r\n                    }\r\n\r\n                    const updatedStorageElement = {\r\n                        ...item.instruction.storageElement,\r\n                        title\r\n                    };\r\n\r\n                    const updatedInstruction = {\r\n                        ...item.instruction,\r\n                        storageElement: updatedStorageElement\r\n                    };\r\n\r\n                    return { ...item, instruction: updatedInstruction };\r\n                }) ?? []\r\n        }));\r\n    }\r\n\r\n    public addResourceStructure(resource: Resource): void {\r\n        this.resourcesComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure: [...prev!.structure, resource]\r\n        }));\r\n    }\r\n\r\n    public removeResourceStructure(resourceId: string): void {\r\n        this.resourcesComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure: prev!.structure.filter((resource) => resource.id !== resourceId)\r\n        }));\r\n    }\r\n\r\n    public addResources(resources: UtilitySubject[], containerId: string): void {\r\n        this.resourcesComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure: prev!.structure.map((container) => {\r\n                if (container.id !== containerId) {\r\n                    return container;\r\n                }\r\n\r\n                container.elements = [...container.elements, ...(resources as any[])];\r\n                return container;\r\n            })\r\n        }));\r\n    }\r\n\r\n    public updateResource(resource: UtilitySubject | ResourceUtilityMaterial, containerId: string): void {\r\n        this.resourcesComponentSignal.update((prev) => ({\r\n            ...prev!,\r\n            structure: prev!.structure.map((container) => {\r\n                if (container.id !== containerId) {\r\n                    return container;\r\n                }\r\n\r\n                container.elements =\r\n                    container.elements.map((item) => (resource.id === item.id ? { ...item, ...resource } : item)) ?? [];\r\n\r\n                return container;\r\n            })\r\n        }));\r\n    }\r\n\r\n    public removeResource(resourceId: string, containerId: string): void {\r\n        this.resourcesComponentSignal.update((prev) => {\r\n            return {\r\n                ...prev!,\r\n                structure: prev!.structure.map((container) => {\r\n                    if (container.id !== containerId) {\r\n                        return container;\r\n                    }\r\n\r\n                    container.elements = container.elements.filter((resource) => resource.id !== resourceId);\r\n\r\n                    return container;\r\n                })\r\n            };\r\n        });\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { UtilitySubject } from '@cuby-ui/api';\r\nimport { SubjectModalService } from '../model';\r\nimport { TreeStructCategoryElement } from '../model/resources-block.options';\r\n\r\n@Injectable()\r\nexport class SubjectModalBaseService implements SubjectModalService {\r\n    public addResource(utilityId: string): void {}\r\n\r\n    public handleAddedResource(\r\n        ids: Record<string, TreeStructCategoryElement>,\r\n        type: string\r\n    ): Observable<UtilitySubject[]> {\r\n        return of([]);\r\n    }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { UsedElementsService } from '../model/used-elements-service.interface';\r\n\r\n@Injectable()\r\nexport class UsedElementsBaseService<T extends { id: string }> implements UsedElementsService<T> {\r\n    protected readonly usedElementsSignal = signal<Record<string, T>>({});\r\n\r\n    public readonly usedElements = this.usedElementsSignal.asReadonly();\r\n\r\n    public setAll(elements: T[]): void {\r\n        this.usedElementsSignal.set(Object.fromEntries(elements.map((e) => [e.id, e])));\r\n    }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { ResourceStateService } from '../model/resource-state-service.interface';\r\nimport { Resource } from '@cuby-ui/api';\r\n\r\n@Injectable()\r\nexport class ResourceStateBaseService implements ResourceStateService {\r\n    protected readonly resourcesMapSignal = signal<Map<string, Resource[]>>(new Map());\r\n    public readonly resourcesMap = this.resourcesMapSignal.asReadonly();\r\n\r\n    public updateResources(utilityId: string, resources: Resource[]): void {\r\n        const newMap = new Map(this.resourcesMap());\r\n        newMap.set(utilityId, resources);\r\n        this.resourcesMapSignal.set(newMap);\r\n    }\r\n}\r\n","import { Translation } from '@jsverse/transloco';\r\n\r\nexport const CuiLibTranslations: Record<string, Promise<Translation>> = {\r\n    en: import('../i18n/en.json'),\r\n    ru: import('../i18n/ru.json')\r\n} as const;\r\n","import type { HttpErrorResponse } from '@angular/common/http';\r\nimport type { OperatorFunction } from 'rxjs';\r\nimport { catchError, of } from 'rxjs';\r\n\r\nexport function handleError<T, R>(handler: (error: unknown) => R, useDefaultError = true): OperatorFunction<T, R | T> {\r\n    return catchError((error: HttpErrorResponse) => {\r\n        if (useDefaultError) {\r\n            setTimeout(() => {\r\n                throw error;\r\n            });\r\n        }\r\n\r\n        return of(handler(error));\r\n    });\r\n}\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { inject, Pipe } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CuiTime } from '@cuby-ui/cdk';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Pipe({\r\n    name: 'time',\r\n    pure: false,\r\n    standalone: true\r\n})\r\nexport class CuiTimePipe implements PipeTransform {\r\n    private readonly translocoService = inject(TranslocoService);\r\n\r\n    private readonly FORMAT_TOKEN_REGEX = /HH|MM|SS|'([^']*)'/g;\r\n\r\n    private readonly lang = toSignal(this.translocoService.langChanges$);\r\n\r\n    public transform(value: Date | string, format = \"HH 'h' MM 'm'\", withEmpty = false): string {\r\n        this.lang();\r\n\r\n        const { tokenValues, unitValues } = this.getValues(value, withEmpty);\r\n\r\n        return format\r\n            .replace(this.FORMAT_TOKEN_REGEX, (match, quoted) =>\r\n                quoted ? (unitValues[quoted] ?? quoted) : tokenValues[match]\r\n            )\r\n            .replace(/\\s{2,}/g, ' ')\r\n            .trim();\r\n    }\r\n\r\n    private getValues(value: Date | string, withEmpty = false): {\r\n        tokenValues: Record<string, string>;\r\n        unitValues: Record<string, string>;\r\n    } {\r\n        const { hours, minutes, seconds } = this.getTime(value);\r\n        const tokenValues: Record<string, string> = {\r\n            HH: this.getTimeString(hours, withEmpty),\r\n            MM: this.getTimeString(minutes, withEmpty),\r\n            SS: this.getTimeString(seconds, withEmpty)\r\n        };\r\n        const unitValues: Record<string, string> = {\r\n            h: this.getTimeUnit(hours, this.translocoService.translate('TIME_UNITS.H'), withEmpty),\r\n            m: this.getTimeUnit(minutes, this.translocoService.translate('TIME_UNITS.MIN'), withEmpty),\r\n            s: this.getTimeUnit(seconds, this.translocoService.translate('TIME_UNITS.S'), withEmpty)\r\n        };\r\n\r\n        return { tokenValues, unitValues };\r\n    }\r\n\r\n    private getTimeString(value: number, withEmpty = false): string {\r\n        if (!value || (value === 0 && !withEmpty)) {\r\n            return '';\r\n        }\r\n\r\n        return value.toString();\r\n    }\r\n\r\n    private getTimeUnit(value: number, unit: string, withEmpty = false): string {\r\n        if (!value || (value === 0 && !withEmpty)) {\r\n            return '';\r\n        }\r\n\r\n        return unit;\r\n    }\r\n\r\n    private getTime(value: Date | string): { hours: number; minutes: number; seconds: number } {\r\n        if (value instanceof Date) {\r\n            return { hours: value.getHours(), minutes: value.getMinutes(), seconds: value.getSeconds() };\r\n        }\r\n\r\n        return CuiTime.fromString(value);\r\n    }\r\n}\r\n","import { Translation } from '@jsverse/transloco';\r\n\r\nexport const CuiTranslations: Record<string, Promise<Translation>> = {\r\n    en: import('./en.json'),\r\n    ru: import('./ru.json')\r\n} as const;\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.CuiSvgComponent","i2.CuiButtonComponent","i2.CuiNotificationComponent","i2","GAP","i1.CuiTooltipDriver","i2.CuiTooltipHover","i3.CuiTooltipPosition","i1.CuiTooltipDirective","i3.CuiSvgComponent","i4.CuiButtonComponent","i1.CuiDialogsComponent","i2.CuiAlertsComponent","i3.CuiTooltips","i3.CuiButtonComponent","i1","i1.CuiSvgComponent","i4.CuiSvgComponent","i1.CuiBadgeComponent","i3","i1.CuiDialogHeaderComponent","i1.CuiContextMenuComponent","i2.CuiInputTextComponent","i3.CuiTextFieldPlaceholderDirective","i2.CuiInputNumberComponent","i1.CuiCheckboxComponent","i1.CuiButtonComponent","i3.CuiInputTextComponent","i4.CuiTextFieldIdDirective","i5.CuiTextFieldPlaceholderDirective","i3.CuiFormFieldComponent","i4.CuiHintComponent","i9.CuiLabelComponent","i10.CuiSvgComponent","i11","i3.CuiHintComponent","i3.CuiTooltipDirective","i2.CuiLabelComponent","i4.CuiToggleComponent","i3.CuiTextFieldIdDirective","i4.CuiTextFieldPlaceholderDirective","i5.CuiTextFieldIsErrorDirective","i3.CuiContextMenuComponent","i2.CuiIconButtonComponent","i4.CuiTextFieldIsErrorDirective","i5.CuiSvgComponent","i6.CuiTextareaComponent","i7","i8.CuiInputNumberComponent","i2.CuiCheckboxComponent","i3.CuiLabelComponent","i2.CuiContextMenuComponent","i1.CuiFormFieldComponent","i1.CuiInputTextComponent","i2.CuiTextFieldIconLeftDirective","i2.CuiTooltipDirective","i6.CuiSelectComponent","i1.CuiSelectComponent","i2.CuiTextFieldIsErrorDirective","i5.CuiInputNumberComponent","tap","finalize","switchMap","i1.CuiAccordionItemComponent","COMPONENTS_CONTENT","ResourcesBlockTabsComponent"],"mappings":"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"}