{"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/utils/check-auth-failure-event.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/tokens/auth-login-strategy.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/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/services/browser-login-strategy.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/collapsible-panel/collapsible-panel.component.ts","../../../projects/core/components/collapsible-panel/collapsible-panel.component.html","../../../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/template-select/template-select.component.ts","../../../projects/core/components/template-select/template-select.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/tree/tree.component.ts","../../../projects/core/components/tree/tree.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/pipes/file-size.pipe.ts","../../../projects/core/pipes/time.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/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/interceptors/auth-error.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/categories-tree/models/categories-tree-data-source.token.ts","../../../projects/core/widgets/ui/categories-tree/services/category-tree-state.service.ts","../../../projects/core/widgets/ui/categories-tree/components/categories-tree-list/categories-tree-list.component.ts","../../../projects/core/widgets/ui/categories-tree/components/categories-tree-list/categories-tree-list.component.html","../../../projects/core/widgets/ui/categories-tree/components/category-tree-form/category-tree-form.component.ts","../../../projects/core/widgets/ui/categories-tree/components/category-tree-form/category-tree-form.component.html","../../../projects/core/widgets/ui/categories-tree/components/create-category-tree-item/create-category-tree-item.component.ts","../../../projects/core/widgets/ui/categories-tree/components/create-category-tree-item/create-category-tree-item.component.html","../../../projects/core/widgets/ui/categories-tree/components/category-tree-item/category-tree-item.component.ts","../../../projects/core/widgets/ui/categories-tree/components/category-tree-item/category-tree-item.component.html","../../../projects/core/widgets/ui/categories-tree/categories-tree.component.ts","../../../projects/core/widgets/ui/categories-tree/categories-tree.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/i18n/index.ts","../../../projects/core/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'cui-accordion',\n    templateUrl: './accordion.template.html',\n    styleUrls: ['./accordion.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAccordionComponent {}\n","<ng-content select=\"cui-accordion-item\"></ng-content>\n","import { Directive, effect, inject, input, model, Renderer2 } from '@angular/core';\n\n@Directive({\n    selector: '[cuiAccordion]',\n    standalone: true,\n    host: {\n        '(click)': 'onToggle($event)'\n    }\n})\nexport class CuiAccordionDirective {\n    private readonly renderer = inject(Renderer2);\n\n    private wrapper!: HTMLElement;\n\n    public readonly content = input.required<HTMLElement>();\n    public readonly isOpen = model(true);\n\n    constructor() {\n        this.initWrapperEffect();\n        this.initOpenChangesEffect();\n    }\n\n    protected onToggle(event: Event): void {\n        if (event.defaultPrevented) {\n            return;\n        }\n\n        this.isOpen.update((prev) => !prev);\n    }\n\n    private initWrapperEffect(): void {\n        const effectRef = effect(() => {\n            const content = this.content();\n\n            this.wrapper = this.renderer.createElement('div');\n\n            content.after(this.wrapper);\n            this.renderer.appendChild(this.wrapper, content);\n\n            effectRef.destroy();\n        });\n    }\n\n    private initOpenChangesEffect(): void {\n        effect(() => {\n            const isOpen = this.isOpen();\n            const doAction = isOpen ? this.close : this.open;\n\n            doAction.call(this, this.wrapper);\n        });\n    }\n\n    private open(wrapper: HTMLElement): void {\n        this.renderer.setStyle(wrapper, 'visibility', 'hidden');\n        this.renderer.setStyle(wrapper, 'height', '0');\n        this.renderer.setStyle(wrapper, 'overflow', 'hidden');\n    }\n\n    private close(wrapper: HTMLElement): void {\n        this.renderer.setStyle(wrapper, 'visibility', 'visible');\n        this.renderer.setStyle(wrapper, 'height', '');\n        this.renderer.setStyle(wrapper, 'overflow', '');\n    }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type {\n    CuiAppearanceAction,\n    CuiAppearanceActionCyan,\n    CuiAppearanceActionViolet,\n    CuiAppearanceDestructive,\n    CuiAppearanceFlat,\n    CuiAppearanceGhost,\n    CuiAppearanceLink,\n    CuiAppearanceOutlined,\n    CuiAppearanceOutlinedGray,\n    CuiAppearanceSecondary,\n    CuiAppearanceVividSuccess,\n    CuiButtonThemeCyan,\n    CuiButtonThemeDefault,\n    CuiButtonThemeSuccess,\n    CuiButtonThemeViolet,\n    CuiButtonThemeVividSuccess,\n    CuiShapeRounded,\n    CuiSizeLg,\n    CuiSizeMd,\n    CuiSizeSm,\n    CuiSizeXs,\n    CuiSizeXxs,\n    CuiSizeXxxs\n} from '../../types';\n\nexport interface CuiButtonOptions {\n    readonly appearance: CuiButtonAppearance;\n    readonly shape: CuiButtonShape;\n    readonly size: CuiButtonSize;\n    readonly theme: CuiButtonTheme;\n}\n\nexport type CuiButtonAppearance =\n    | CuiAppearanceAction\n    | CuiAppearanceSecondary\n    | CuiAppearanceOutlined\n    | CuiAppearanceOutlinedGray\n    | CuiAppearanceGhost\n    | CuiAppearanceFlat\n    | CuiAppearanceVividSuccess\n    | CuiAppearanceDestructive\n    | CuiAppearanceLink\n    | CuiAppearanceActionViolet\n    | CuiAppearanceActionCyan;\nexport type CuiButtonTheme =\n    | CuiButtonThemeDefault\n    | CuiButtonThemeViolet\n    | CuiButtonThemeCyan\n    | CuiButtonThemeSuccess\n    | CuiButtonThemeVividSuccess;\nexport type CuiButtonSize = CuiSizeXxxs | CuiSizeXxs | CuiSizeXs | CuiSizeSm | CuiSizeMd | CuiSizeLg;\nexport type CuiButtonShape = CuiShapeRounded | null;\n\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\n    appearance: 'action',\n    shape: null,\n    size: 'sm',\n    theme: 'default'\n};\n\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\n    factory: () => CUI_BUTTON_DEFAULT_OPTIONS\n});\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { CUI_ICONS, cuiIsIcon } from '@cuby-ui/icons';\n\n@Component({\n    selector: 'cui-svg[icon]',\n    templateUrl: './svg.template.html',\n    styleUrls: ['./svg.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSvgComponent {\n    private readonly domSanitizer = inject(DomSanitizer);\n\n    protected safeSvgContent!: SafeHtml;\n\n    @Input()\n    public width?: number;\n\n    @Input()\n    public height?: number;\n\n    @Input()\n    @HostBinding('style.--stroke-width')\n    public strokeWidth?: number;\n\n    @Input()\n    @HostBinding('style.--color')\n    public color?: string;\n\n    @Input()\n    public set icon(icon: CuiIcon) {\n        // TODO: В данном случае подключаются все иконки (вероятно, можно как-то оптимизировано их подключать)\n        this.safeSvgContent = this.domSanitizer.bypassSecurityTrustHtml(cuiIsIcon(icon) ? CUI_ICONS[icon] : icon);\n    }\n\n    @HostBinding('class._with-stroke-width')\n    public get isWithStrokeWidth(): boolean {\n        return !!this.strokeWidth;\n    }\n\n    @HostBinding('class._with-color')\n    public get isWithColor(): boolean {\n        return !!this.color;\n    }\n}\n","<span\n    [innerHTML]=\"safeSvgContent\"\n    [style.width.px]=\"width\"\n    [style.height.px]=\"height\"\n></span>\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    HostBinding,\n    inject,\n    Input,\n    OnInit,\n    ViewChild\n} from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport {\n    CUI_BUTTON_OPTIONS,\n    CuiButtonAppearance,\n    CuiButtonOptions,\n    CuiButtonSize,\n    CuiButtonTheme\n} from './button.options';\n\n@Component({\n    selector: 'button[cuiButton], a[cuiButton]',\n    templateUrl: './button.template.html',\n    styleUrls: ['./styles/index.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\n\n    private readonly ICON_XS_SIZES = ['xxs', 'xxxs'];\n    protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\n    protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonAppearance[] = [\n        'secondary',\n        'outlined',\n        'outlined-gray',\n        'ghost'\n    ];\n\n    protected _theme = this.cuiButtonOptions.theme;\n    protected _appearance = this.cuiButtonOptions.appearance;\n    protected _size = this.cuiButtonOptions.size;\n\n    protected iconColor = this.getIconColor(this._appearance);\n    protected iconDimensions = {\n        width: 20,\n        height: 20\n    };\n\n    @Input()\n    @HostBinding('attr.data-shape')\n    public shape = this.cuiButtonOptions.shape;\n\n    @Input()\n    @HostBinding('class._disabled')\n    public disabled = false;\n\n    @Input()\n    @HostBinding('class._loading')\n    public isLoaderShown = false;\n\n    @Input()\n    public icon?: CuiIcon;\n\n    @Input()\n    public iconRight?: CuiIcon;\n\n    @Input()\n    @HostBinding('attr.data-appearance')\n    public get appearance(): CuiButtonAppearance {\n        return this._appearance;\n    }\n\n    public set appearance(appearance: CuiButtonAppearance) {\n        this._appearance = appearance;\n\n        this.changeIconColor();\n    }\n\n    @Input()\n    @HostBinding('attr.data-theme')\n    public get theme(): CuiButtonTheme {\n        return this._theme;\n    }\n\n    public set theme(theme: CuiButtonTheme) {\n        this._theme = theme;\n\n        this.changeIconColor();\n    }\n\n    @Input()\n    @HostBinding('attr.data-size')\n    public get size(): CuiButtonSize {\n        return this._size;\n    }\n\n    public set size(size: CuiButtonSize) {\n        this._size = size;\n\n        if (this.ICON_XS_SIZES.includes(size)) {\n            this.iconDimensions = {\n                width: 16,\n                height: 16\n            };\n\n            return;\n        }\n\n        this.iconDimensions = {\n            width: 20,\n            height: 20\n        };\n    }\n\n    @HostBinding('class._only-icon')\n    protected containsOnlyIcon = false;\n\n    @HostBinding('disabled')\n    protected get isDisabled(): boolean {\n        return this.disabled || this.isLoaderShown;\n    }\n\n    @ViewChild('content')\n    protected content!: ElementRef<HTMLSpanElement>;\n\n    public ngOnInit(): void {\n        this.initIconColor();\n    }\n\n    private initIconColor(): void {\n        this.changeIconColor();\n    }\n\n    private changeIconColor(): void {\n        Promise.resolve().then(() => {\n            this.iconColor = this.getIconColor(this._appearance);\n\n            this.changeDetectorRef.markForCheck();\n        });\n    }\n\n    private getIconColor(appearance: CuiButtonOptions['appearance']): string {\n        if (this.BUTTON_ICONS_COLOR_BASE_500.includes(appearance)) {\n            return this.COLOR_BASE_500;\n        }\n\n        return 'currentColor';\n    }\n}\n","<span\n    class=\"c-wrapper\"\n    [class.c-wrapper_invisible]=\"isLoaderShown\"\n>\n    <cui-svg\n        *ngIf=\"icon\"\n        [icon]=\"icon\"\n        [width]=\"iconDimensions.width\"\n        [height]=\"iconDimensions.height\"\n        [color]=\"iconColor\"\n    ></cui-svg>\n    <span\n        #content\n        class=\"c-content\"\n    >\n        <ng-content></ng-content>\n    </span>\n    <cui-svg\n        *ngIf=\"iconRight\"\n        [icon]=\"iconRight\"\n        [width]=\"iconDimensions.width\"\n        [height]=\"iconDimensions.height\"\n        [color]=\"iconColor\"\n    ></cui-svg>\n</span>\n<cui-svg\n    *ngIf=\"isLoaderShown\"\n    icon=\"cuiIconLoading\"\n    [color]=\"iconColor\"\n    class=\"c-loader\"\n></cui-svg>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { CuiAccordionAppearance } from './accordion-item.options';\n\n@Component({\n    selector: 'cui-accordion-item',\n    templateUrl: './accordion-item.template.html',\n    styleUrls: ['./accordion-item.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAccordionItemComponent {\n    @Input()\n    public isOpen = true;\n\n    @Input()\n    public appearance: CuiAccordionAppearance = 'default';\n\n    @Output()\n    public readonly isOpenChange = new EventEmitter<boolean>();\n\n    protected get buttonIcon(): CuiIcon {\n        return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';\n    }\n\n    @HostBinding('attr.appearance')\n    public get _appearance(): string {\n        return this.appearance;\n    }\n\n    protected onRowToggle(): void {\n        this.isOpen = !this.isOpen;\n\n        this.isOpenChange.emit(this.isOpen);\n    }\n}\n","<header class=\"c-header\">\n    <button\n        cuiButton\n        appearance=\"ghost\"\n        size=\"xxs\"\n        [icon]=\"buttonIcon\"\n        (click)=\"onRowToggle()\"\n    ></button>\n    <div class=\"c-header__wrapper\">\n        <ng-content></ng-content>\n    </div>\n</header>\n<div\n    *ngIf=\"isOpen\"\n    class=\"c-content\"\n>\n    <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiSvgComponent } from './svg.component';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [CuiSvgComponent],\n    exports: [CuiSvgComponent]\n})\nexport class CuiSvgModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiButtonComponent } from './button.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n    imports: [CommonModule, CuiSvgModule],\n    declarations: [CuiButtonComponent],\n    exports: [CuiButtonComponent]\n})\nexport class CuiButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiAccordionComponent } from './accordion.component';\nimport { CuiAccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiButtonModule } from '../button';\n\n@NgModule({\n    imports: [CommonModule, CuiSvgModule, CuiButtonModule],\n    declarations: [CuiAccordionComponent, CuiAccordionItemComponent],\n    exports: [CuiAccordionComponent, CuiAccordionItemComponent]\n})\nexport class CuiAccordionModule {}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\nimport { CuiIcon } from '@cuby-ui/icons';\n\nimport type { CuiStatus } from '../../types';\n\nexport type CuiNotificationIcons = Record<CuiStatus, { icon: CuiIcon }>;\n\nexport type CuiNotificationIconOptions = Record<CuiStatus, { color: string }>;\n\nexport interface CuiNotificationOptions {\n    readonly status: CuiStatus;\n    readonly mode: 'default' | 'light';\n}\n\nexport const CUI_NOTIFICATION_DEFAULT_OPTIONS: CuiNotificationOptions = {\n    status: 'info',\n    mode: 'default'\n};\n\nexport const CUI_NOTIFICATION_OPTIONS = cuiCreateToken(CUI_NOTIFICATION_DEFAULT_OPTIONS);\n\nexport const CUI_NOTIFICATION_ICONS: CuiNotificationIcons = {\n    info: {\n        icon: 'cuiIconInfo'\n    },\n    success: {\n        icon: 'cuiIconCheckCircle'\n    },\n    alert: {\n        icon: 'cuiIconAlertTriangle'\n    },\n    error: {\n        icon: 'cuiIconXCircle'\n    }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE: CuiNotificationIconOptions = {\n    info: {\n        color: 'var(--c-info-icon-color)'\n    },\n    success: {\n        color: 'var(--cui-green-500)'\n    },\n    alert: {\n        color: 'var(--cui-yellow-400)'\n    },\n    error: {\n        color: 'var(--cui-danger)'\n    }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE: CuiNotificationIconOptions = {\n    info: {\n        color: 'var(--cui-info)'\n    },\n    success: {\n        color: 'var(--cui-green-700)'\n    },\n    alert: {\n        color: 'var(--cui-yellow-400)'\n    },\n    error: {\n        color: 'var(--cui-danger)'\n    }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS: Record<CuiNotificationOptions['mode'], CuiNotificationIconOptions> = {\n    default: CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE,\n    light: CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE\n};\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    HostBinding,\n    inject,\n    Input,\n    OnInit,\n    Output\n} from '@angular/core';\nimport {\n    CUI_NOTIFICATION_ICON_OPTIONS,\n    CuiNotificationIconOptions,\n    CuiNotificationOptions\n} from './notification.options';\nimport { CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS } from './notification.options';\n\n@Component({\n    selector: 'cui-notification',\n    templateUrl: './notification.template.html',\n    styleUrls: ['./notification.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiNotificationComponent implements CuiNotificationOptions, OnInit {\n    private readonly cuiNotificationOptions = inject(CUI_NOTIFICATION_OPTIONS);\n\n    protected readonly ICONS = CUI_NOTIFICATION_ICONS;\n    protected readonly ICON_OPTIONS = CUI_NOTIFICATION_ICON_OPTIONS;\n\n    protected iconOptions!: CuiNotificationIconOptions;\n\n    @Input()\n    @HostBinding('attr.data-status')\n    public status = this.cuiNotificationOptions.status;\n\n    @Input()\n    @HostBinding('attr.data-mode')\n    public mode = this.cuiNotificationOptions.mode;\n\n    @Input()\n    public isCloseable = false;\n\n    @Output()\n    public readonly closed = new EventEmitter<void>();\n\n    public ngOnInit(): void {\n        this.initIconOptions();\n    }\n\n    protected onClose(): void {\n        this.closed.next();\n    }\n\n    private initIconOptions(): void {\n        this.iconOptions = this.ICON_OPTIONS[this.mode];\n    }\n}\n","<cui-svg\n    class=\"c-icon\"\n    [icon]=\"ICONS[status].icon\"\n    [color]=\"iconOptions[status].color\"\n></cui-svg>\n<div class=\"c-content\">\n    <ng-content></ng-content>\n</div>\n<button\n    *ngIf=\"isCloseable\"\n    class=\"c-button\"\n    (click)=\"onClose()\"\n>\n    <cui-svg\n        icon=\"cuiIconX\"\n        color=\"var(--cui-gray-0)\"\n    />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { CuiNotificationComponent } from './notification.component';\n\n@NgModule({\n    imports: [CommonModule, CuiSvgModule],\n    declarations: [CuiNotificationComponent],\n    exports: [CuiNotificationComponent]\n})\nexport class CuiNotificationModule {}\n","import { inject, InjectionToken } from '@angular/core';\nimport { cuiCreateTokenFromFactory, CuiPopover } from '@cuby-ui/cdk';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiAlertOptions } from './alert.interfaces';\nimport { CUI_NOTIFICATION_OPTIONS } from '../notification';\n\nexport const CUI_ALERTS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([]));\n\nexport const CUI_ALERT_DEFAULT_OPTIONS: Omit<CuiAlertOptions, 'status'> = {\n    label: '',\n    needAutoClose: true,\n    isCloseable: true,\n    mode: 'default',\n    position: 'right',\n    resizing: 'fixed'\n};\n\nexport const CUI_ALERT_OPTIONS = cuiCreateTokenFromFactory(() => ({\n    ...CUI_ALERT_DEFAULT_OPTIONS,\n    ...inject(CUI_NOTIFICATION_OPTIONS)\n}));\n\nexport const CUI_ALERT_CONTEXT = new InjectionToken<CuiPopover<CuiAlertOptions>>('');\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, HostBinding } from '@angular/core';\n\nimport { CUI_ALERT_CONTEXT } from './alert.tokens';\nimport type { CuiAlertResizing } from './alert.types';\n\n@Component({\n    selector: 'cui-alert',\n    templateUrl: './alert.template.html',\n    styleUrls: ['./alert.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAlertComponent implements OnInit {\n    protected readonly context = inject(CUI_ALERT_CONTEXT);\n\n    protected readonly AUTO_CLOSE_DURATION_IN_MILLISECONDS = 3000;\n\n    @HostBinding('attr.data-resizing')\n    protected get resizing(): CuiAlertResizing {\n        return this.context.resizing;\n    }\n\n    public ngOnInit(): void {\n        this.initAutoClose();\n    }\n\n    protected onClosed(): void {\n        this.context.$implicit.complete();\n    }\n\n    private initAutoClose(): void {\n        if (!this.context.needAutoClose) {\n            return;\n        }\n\n        setTimeout(this.onClosed.bind(this), this.AUTO_CLOSE_DURATION_IN_MILLISECONDS);\n    }\n}\n","<cui-notification\n    [status]=\"context.status\"\n    [mode]=\"context.mode\"\n    [isCloseable]=\"context.isCloseable\"\n    (closed)=\"onClosed()\"\n>\n    <h2\n        *ngIf=\"context.label\"\n        class=\"c-heading\"\n    >\n        {{ context.label }}\n    </h2>\n    {{ context.content }}\n</cui-notification>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport type { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs';\n\nimport { CUI_ALERT_CONTEXT, CUI_ALERTS } from './alert.tokens';\nimport type { CuiAlertOptions } from './alert.interfaces';\n\n@Component({\n    selector: 'cui-alerts',\n    templateUrl: './alerts.template.html',\n    styleUrls: ['./alerts.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CuiDestroyService]\n})\nexport class CuiAlertsComponent implements OnInit {\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n    protected readonly alerts$: Observable<ReadonlyArray<CuiPopover<CuiAlertOptions>>> = inject(CUI_ALERTS);\n    protected alertInjectors!: ReadonlyArray<Injector>;\n\n    public ngOnInit(): void {\n        this.initAlertInjectorsSubscription();\n    }\n\n    protected trackByFn(_: number, alert: CuiPopover<CuiAlertOptions>): string {\n        return alert.id;\n    }\n\n    protected alertsMatcher(alert: CuiPopover<CuiAlertOptions>, position: string): boolean {\n        return alert.position === position;\n    }\n\n    protected initAlertInjectorsSubscription(): void {\n        this.alerts$.pipe(takeUntil(this.destroy$)).subscribe(\n            (dialogs) =>\n                (this.alertInjectors = dialogs.map((useValue) =>\n                    Injector.create({\n                        providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\n                    })\n                ))\n        );\n    }\n}\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\n    <div class=\"c-wrapper c-wrapper_position_center\">\n        <ng-container\n            *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'center'; let i = index; trackBy: trackByFn\"\n        >\n            <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\n        </ng-container>\n    </div>\n    <div class=\"c-wrapper c-wrapper_position_right\">\n        <ng-container\n            *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'right'; let i = index; trackBy: trackByFn\"\n        >\n            <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\n        </ng-container>\n    </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiFilterPipe, CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiAlertComponent } from './alert.component';\nimport { CuiAlertsComponent } from './alerts.component';\nimport { CuiNotificationModule } from '../notification';\n\n@NgModule({\n    imports: [CommonModule, CuiFilterPipe, CuiNotificationModule, CuiLetDirective],\n    declarations: [CuiAlertComponent, CuiAlertsComponent],\n    exports: [CuiAlertComponent, CuiAlertComponent, CuiAlertsComponent]\n})\nexport class CuiAlertModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { CuiPopoverService } from '@cuby-ui/cdk';\n\nimport { CUI_ALERT_OPTIONS, CUI_ALERTS } from './alert.tokens';\nimport { CuiAlertComponent } from './alert.component';\nimport type { CuiAlertOptions } from './alert.interfaces';\n\n@Injectable({\n    providedIn: 'root',\n    useFactory: () => new CuiAlertService(CUI_ALERTS, CuiAlertComponent, inject(CUI_ALERT_OPTIONS))\n})\nexport class CuiAlertService extends CuiPopoverService<CuiAlertOptions> {}\n","import type { CuiIcon } from '@cuby-ui/icons';\n\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport class CuiTextFieldController {\n    constructor(\n        private readonly iconLeftDirective: CuiTextFieldIconLeftDirective,\n        private readonly idDirective: CuiTextFieldIdDirective,\n        private readonly isErrorDirective: CuiTextFieldIsErrorDirective,\n        private readonly placeholderDirective: CuiTextFieldPlaceholderDirective,\n        private readonly sizeDirective: CuiTextFieldSizeDirective\n    ) {}\n\n    public get iconLeft(): CuiIcon | undefined {\n        return this.iconLeftDirective.iconLeft;\n    }\n\n    public get id(): string | undefined {\n        return this.idDirective.id;\n    }\n\n    public get isError(): boolean {\n        return this.isErrorDirective.isError;\n    }\n\n    public get placeholder(): string | undefined {\n        return this.placeholderDirective.placeholder;\n    }\n\n    public get size(): CuiSizeSm | CuiSizeMd {\n        return this.sizeDirective.size;\n    }\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nexport const CUI_TEXT_FIELD_ICON_LEFT = new InjectionToken<CuiTextFieldIconLeftDirective>('', {\n    factory: () => new CuiTextFieldIconLeftDirective()\n});\n\n@Directive({\n    selector: '[cuiTextFieldIconLeft]',\n    providers: [cuiProvide(CUI_TEXT_FIELD_ICON_LEFT, CuiTextFieldIconLeftDirective)]\n})\nexport class CuiTextFieldIconLeftDirective {\n    @Input('cuiTextFieldIconLeft')\n    public iconLeft?: CuiIcon;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_ID = new InjectionToken<CuiTextFieldIdDirective>('', {\n    factory: () => new CuiTextFieldIdDirective()\n});\n\n@Directive({\n    selector: '[cuiTextFieldId]',\n    providers: [cuiProvide(CUI_TEXT_FIELD_ID, CuiTextFieldIdDirective)]\n})\nexport class CuiTextFieldIdDirective {\n    @Input('cuiTextFieldId')\n    public id?: string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_IS_ERROR = new InjectionToken<CuiTextFieldIsErrorDirective>('', {\n    factory: () => new CuiTextFieldIsErrorDirective()\n});\n\n@Directive({\n    selector: '[cuiTextFieldIsError]',\n    providers: [cuiProvide(CUI_TEXT_FIELD_IS_ERROR, CuiTextFieldIsErrorDirective)]\n})\nexport class CuiTextFieldIsErrorDirective {\n    @Input('cuiTextFieldIsError')\n    public isError = false;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_PLACEHOLDER = new InjectionToken<CuiTextFieldPlaceholderDirective>('', {\n    factory: () => new CuiTextFieldPlaceholderDirective()\n});\n\n@Directive({\n    selector: '[cuiTextFieldPlaceholder]',\n    providers: [cuiProvide(CUI_TEXT_FIELD_PLACEHOLDER, CuiTextFieldPlaceholderDirective)]\n})\nexport class CuiTextFieldPlaceholderDirective {\n    @Input('cuiTextFieldPlaceholder')\n    public placeholder?: string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport const CUI_TEXT_FIELD_SIZE = new InjectionToken<CuiTextFieldSizeDirective>('', {\n    factory: () => new CuiTextFieldSizeDirective()\n});\n\n@Directive({\n    selector: '[cuiTextFieldSize]',\n    providers: [cuiProvide(CUI_TEXT_FIELD_SIZE, CuiTextFieldSizeDirective)]\n})\nexport class CuiTextFieldSizeDirective {\n    @Input('cuiTextFieldSize')\n    public size: CuiSizeSm | CuiSizeMd = 'sm';\n}\n","import { NgModule } from '@angular/core';\n\nimport { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\nimport { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport { CuiTextFieldSizeDirective } from './text-field-size.directive';\n\n@NgModule({\n    declarations: [\n        CuiTextFieldIconLeftDirective,\n        CuiTextFieldIdDirective,\n        CuiTextFieldPlaceholderDirective,\n        CuiTextFieldIsErrorDirective,\n        CuiTextFieldSizeDirective\n    ],\n    exports: [\n        CuiTextFieldIconLeftDirective,\n        CuiTextFieldIdDirective,\n        CuiTextFieldPlaceholderDirective,\n        CuiTextFieldIsErrorDirective,\n        CuiTextFieldSizeDirective\n    ]\n})\nexport class CuiTextFieldControllerModule {}\n","import { InjectionToken, Provider } from '@angular/core';\n\nimport { CuiTextFieldController } from './text-field.controller';\n\nimport { CUI_TEXT_FIELD_SIZE } from './text-field-size.directive';\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\nimport { CUI_TEXT_FIELD_ID } from './text-field-id.directive';\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport { CUI_TEXT_FIELD_IS_ERROR } from './text-field-is-error.directive';\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport { CUI_TEXT_FIELD_PLACEHOLDER } from './text-field-placeholder.directive';\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport { CUI_TEXT_FIELD_ICON_LEFT } from './text-field-icon-left.directive';\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\n\nexport const CUI_TEXT_FIELD_CONTROLLER = new InjectionToken<CuiTextFieldController>('');\n\nexport const CUI_TEXT_FILED_CONTROLLER_PROVIDER: Provider = [\n    {\n        provide: CUI_TEXT_FIELD_CONTROLLER,\n        useFactory: (\n            ...controllers: [\n                CuiTextFieldIconLeftDirective,\n                CuiTextFieldIdDirective,\n                CuiTextFieldIsErrorDirective,\n                CuiTextFieldPlaceholderDirective,\n                CuiTextFieldSizeDirective\n            ]\n        ) => {\n            return new CuiTextFieldController(...controllers);\n        },\n        deps: [\n            CUI_TEXT_FIELD_ICON_LEFT,\n            CUI_TEXT_FIELD_ID,\n            CUI_TEXT_FIELD_IS_ERROR,\n            CUI_TEXT_FIELD_PLACEHOLDER,\n            CUI_TEXT_FIELD_SIZE\n        ]\n    }\n];\n","import { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations';\n\nconst TRANSITION = '{{duration}}ms ease-in-out';\nconst DURATION = { params: { duration: 300 } };\nconst STAGGER = 300;\n\nexport interface CuiDurationOptions {\n    params: { duration: number };\n    value: string;\n}\n\n/**\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\n */\nexport const cuiParentAnimation = trigger('cuiParentAnimation', [\n    transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\n]);\n\n/**\n * Add on parent to stop initial :enter animation for children\n */\nexport const cuiParentStop = trigger('cuiParentStop', [transition(':enter', [])]);\n\nexport const cuiHost = trigger('cuiHost', [\n    transition(':enter', [style({ overflow: 'clip' }), query(':scope > *', [animateChild()], { optional: true })]),\n    transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\n]);\n\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\n    transition(':enter', [style({ height: 0 }), animate(TRANSITION, style({ height: '*' }))], DURATION),\n    transition(':leave', [style({ height: '*' }), animate(TRANSITION, style({ height: 0 }))], DURATION)\n]);\n\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\n    transition(\n        '* => *',\n        [\n            query(':enter', [style({ height: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ height: '*' }))])], {\n                optional: true\n            }),\n            query(':leave', [style({ height: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ height: 0 }))])], {\n                optional: true\n            })\n        ],\n        DURATION\n    )\n]);\n\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\n    transition(':enter', [style({ width: 0 }), animate(TRANSITION, style({ width: '*' }))], DURATION),\n    transition(':leave', [style({ width: '*' }), animate(TRANSITION, style({ width: 0 }))], DURATION)\n]);\n\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\n    transition(\n        '* => *',\n        [\n            query(':enter', [style({ width: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ width: '*' }))])], {\n                optional: true\n            }),\n            query(':leave', [style({ width: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ width: 0 }))])], {\n                optional: true\n            })\n        ],\n        DURATION\n    )\n]);\n\nexport const cuiFadeIn = trigger('cuiFadeIn', [\n    transition(':enter', [style({ opacity: 0 }), animate(TRANSITION, style({ opacity: 1 }))], DURATION),\n    transition(':leave', [style({ opacity: 1 }), animate(TRANSITION, style({ opacity: 0 }))], DURATION)\n]);\n\nexport const cuiFadeInList = trigger('cuiFadeInList', [\n    transition(\n        '* => *',\n        [\n            query(':enter', [style({ opacity: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 1 }))])], {\n                optional: true\n            }),\n            query(':leave', [style({ opacity: 1 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 0 }))])], {\n                optional: true\n            })\n        ],\n        DURATION\n    )\n]);\n\nexport const cuiFadeInTop = trigger('cuiFadeInTop', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\n            animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n        ],\n        { params: { end: 0, start: 10, duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'translateY({{end}})', opacity: 1 }),\n            animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\n        ],\n        { params: { end: 0, start: 10, duration: 300 } }\n    )\n]);\n\nexport const cuiFadeInBottom = trigger('cuiFadeInBottom', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'translateY({{start}}px)', opacity: 0 }),\n            animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n        ],\n        { params: { end: 0, start: 10, duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'translateY({{end}})', opacity: 1 }),\n            animate(TRANSITION, style({ transform: 'translateY({{start}}px)', opacity: 0 }))\n        ],\n        { params: { end: 0, start: 10, duration: 300 } }\n    )\n]);\n\nexport const cuiDropdownAnimation = trigger('cuiDropdownAnimation', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\n            animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n        ],\n        { params: { end: 0, start: 10, duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'translateY({{end}})', opacity: 1 }),\n            animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\n        ],\n        { params: { end: 0, start: 10, duration: 300 } }\n    )\n]);\n\nexport const cuiScaleIn = trigger('cuiScaleIn', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'scale({{start}})' }),\n            animate('{{duration}}ms {{easing}}', style({ transform: 'scale({{end}})' }))\n        ],\n        { params: { end: 1, start: 0, duration: 300, easing: 'ease-in-out' } }\n    ),\n    transition(\n        ':leave',\n        [style({ transform: 'scale({{end}})' }), animate(TRANSITION, style({ transform: 'scale({{start}})' }))],\n        { params: { end: 1, start: 0, duration: 300 } }\n    )\n]);\n\nexport const cuiPop = trigger('cuiPop', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'scale({{start}})' }),\n            animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\n            animate(TRANSITION, style({ transform: 'scale({{end}})' }))\n        ],\n        { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'scale({{end}})' }),\n            animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\n            animate(TRANSITION, style({ transform: 'scale({{start}})' }))\n        ],\n        { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\n    )\n]);\n\nexport const cuiScaleInList = trigger('cuiScaleInList', [\n    transition(\n        '* => *',\n        [\n            query(\n                ':enter',\n                [\n                    style({ transform: 'scale({{start}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{end}})' }))])\n                ],\n                { optional: true }\n            ),\n            query(\n                ':leave',\n                [\n                    style({ transform: 'scale({{end}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{start}})' }))])\n                ],\n                { optional: true }\n            )\n        ],\n        { params: { end: 1, start: 0, duration: 300 } }\n    )\n]);\n\nexport const cuiSlideIn = trigger('cuiSlideIn', [\n    transition(\n        '* => left',\n        [\n            style({ transform: 'translateX(-{{start}})' }),\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    ),\n    transition(\n        'left => *',\n        [\n            style({ transform: 'translateX({{end}})' }),\n            animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    ),\n    transition(\n        '* => right',\n        [\n            style({ transform: 'translateX({{start}})' }),\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    ),\n    transition(\n        'right => *',\n        [\n            style({ transform: 'translateX({{end}})' }),\n            animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInLeft = trigger('cuiSlideInLeft', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'translateX(-{{start}})' }),\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'translateX({{end}})' }),\n            animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInLeftList = trigger('cuiSlideInLeftList', [\n    transition(\n        '* => *',\n        [\n            query(\n                ':enter',\n                [\n                    style({ transform: 'translateX(-{{start}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\n                ],\n                { optional: true }\n            ),\n            query(\n                ':leave',\n                [\n                    style({ transform: 'translateX({{end}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))])\n                ],\n                { optional: true }\n            )\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInRight = trigger('cuiSlideInRight', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'translateX({{start}})' }),\n            animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'translateX({{end}})' }),\n            animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInRightList = trigger('cuiSlideInRightList', [\n    transition(\n        '* => *',\n        [\n            query(\n                ':enter',\n                [\n                    style({ transform: 'translateX({{start}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\n                ],\n                { optional: true }\n            ),\n            query(\n                ':leave',\n                [\n                    style({ transform: 'translateX({{end}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{start}})' }))])\n                ],\n                { optional: true }\n            )\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInTop = trigger('cuiSlideInTop', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'translate3d(0,{{start}},0)', pointerEvents: 'none' }),\n            animate(TRANSITION, style({ transform: 'translate3d(0,{{end}},0)' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'translate3d(0,{{end}},0)' }),\n            animate(TRANSITION, style({ transform: 'translate3d(0,{{start}},0)' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInTopList = trigger('cuiSlideInTopList', [\n    transition(\n        '* => *',\n        [\n            query(\n                ':enter',\n                [\n                    style({ transform: 'translateY({{start}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\n                ],\n                { optional: true }\n            ),\n            query(\n                ':leave',\n                [\n                    style({ transform: 'translateY({{end}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{start}})' }))])\n                ],\n                { optional: true }\n            )\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInBottom = trigger('cuiSlideInBottom', [\n    transition(\n        ':enter',\n        [\n            style({ transform: 'translateY(-{{start}})' }),\n            animate(TRANSITION, style({ transform: 'translateY({{end}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    ),\n    transition(\n        ':leave',\n        [\n            style({ transform: 'translateY({{end}})' }),\n            animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n\nexport const cuiSlideInBottomList = trigger('cuiSlideInBottomList', [\n    transition(\n        '* => *',\n        [\n            query(\n                ':enter',\n                [\n                    style({ transform: 'translateY(-{{start}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\n                ],\n                { optional: true }\n            ),\n            query(\n                ':leave',\n                [\n                    style({ transform: 'translateY({{end}})' }),\n                    stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))])\n                ],\n                { optional: true }\n            )\n        ],\n        { params: { end: 0, start: '100%', duration: 300 } }\n    )\n]);\n","import type { AbstractType, ExistingProvider, FactoryProvider, Type } from '@angular/core';\nimport { Optional, SkipSelf } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiPoint } from '../types';\n\nexport abstract class CuiAccessor {\n    public abstract readonly type: string;\n}\n\nexport abstract class CuiPositionAccessor extends CuiAccessor {\n    /*\n     * TODO @deprecated switching from DOMRect to HTMLElement in v5\n     */\n    public abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint;\n}\n\nexport abstract class CuiRectAccessor extends CuiAccessor {\n    public abstract getClientRect(): DOMRect;\n}\n\nexport function cuiProvideAccessor<T extends CuiAccessor>(\n    provide: AbstractType<T>,\n    type: string,\n    fallback: Type<T>\n): FactoryProvider {\n    return {\n        provide,\n        deps: [[new SkipSelf(), new Optional(), provide], fallback],\n        useFactory: cuiFallbackAccessor<T>(type)\n    };\n}\n\nexport function cuiFallbackAccessor<T extends CuiAccessor>(\n    type: string\n): (accessors: readonly T[] | null, fallback: T) => T {\n    return (accessors, fallback) =>\n        accessors?.find?.((accessor) => accessor !== fallback && accessor.type === type) || fallback;\n}\n\nexport function cuiPositionAccessorFor(type: string, fallback: Type<CuiPositionAccessor>): FactoryProvider {\n    return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\n}\n\nexport function cuiRectAccessorFor(type: string, fallback: Type<CuiRectAccessor>): FactoryProvider {\n    return cuiProvideAccessor(CuiRectAccessor, type, fallback);\n}\n\nexport function cuiAsPositionAccessor(accessor: Type<CuiPositionAccessor>): ExistingProvider {\n    return cuiProvide(CuiPositionAccessor, accessor, true);\n}\n\nexport function cuiAsRectAccessor(accessor: Type<CuiRectAccessor>): ExistingProvider {\n    return cuiProvide(CuiRectAccessor, accessor, true);\n}\n","import type { ExistingProvider, Type } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport abstract class CuiVehicle {\n    public abstract readonly type: string;\n    public abstract toggle(value: boolean): void;\n}\n\nexport function cuiAsVehicle(vehicle: Type<CuiVehicle>): ExistingProvider {\n    return cuiProvide(CuiVehicle, vehicle, true);\n}\n","import type { AfterViewInit, ExistingProvider, Type } from '@angular/core';\nimport { DestroyRef, Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport { distinctUntilChanged, merge, Observable } from 'rxjs';\n\nimport { CuiVehicle } from './vehicle';\n\nexport abstract class CuiDriver extends Observable<boolean> {\n    public abstract readonly type: string;\n}\n\nexport function cuiAsDriver(driver: Type<CuiDriver>): ExistingProvider {\n    return cuiProvide(CuiDriver, driver, true);\n}\n\n@Directive()\nexport abstract class CuiDriverDirective implements AfterViewInit {\n    public abstract type: string;\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly drivers: readonly CuiDriver[] = inject<any>(CuiDriver, { self: true, optional: true }) || [];\n\n    private readonly vehicles: readonly CuiVehicle[] = inject<any>(CuiVehicle, {\n        self: true,\n        optional: true\n    });\n\n    public ngAfterViewInit(): void {\n        const vehicle = this.vehicles?.find(({ type }) => type === this.type);\n\n        merge(...this.drivers.filter(({ type }) => type === this.type))\n            .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n            .subscribe((value) => {\n                vehicle?.toggle(value);\n            });\n    }\n}\n","import { inject, Injectable, NgZone } from '@angular/core';\nimport { CUI_ANIMATION_FRAME } from '@cuby-ui/cdk';\nimport { EMPTY_CLIENT_RECT, cuiInjectElement, cuiZonefree } from '@cuby-ui/cdk';\nimport { CuiPositionAccessor } from '../classes';\nimport type { CuiPoint } from '../types';\nimport { finalize, map, Observable, startWith } from 'rxjs';\n\n@Injectable()\nexport class CuiPositionService extends Observable<CuiPoint> {\n    private readonly el = cuiInjectElement();\n    private readonly accessor = inject(CuiPositionAccessor);\n\n    constructor() {\n        const animationFrame$ = inject(CUI_ANIMATION_FRAME);\n        const zone = inject(NgZone);\n\n        super((subscriber) =>\n            animationFrame$\n                .pipe(\n                    startWith(null),\n                    map(() => this.accessor.getPosition(this.el.getBoundingClientRect(), this.el)),\n                    cuiZonefree(zone),\n                    finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT))\n                )\n                .subscribe(subscriber)\n        );\n    }\n}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nexport type CuiTheme = 'light' | 'dark';\n\nexport const CUI_THEME_STORAGE_DEFAULT_KEY = 'cuiTheme';\n\nexport const CUI_DEFAULT_THEME: CuiTheme = 'light';\n\nexport const CUI_THEME_STORAGE_KEY = cuiCreateToken(CUI_THEME_STORAGE_DEFAULT_KEY);\n\nexport const CUI_THEME = cuiCreateToken<CuiTheme>(CUI_DEFAULT_THEME);\n","import { inject, Injectable } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiTheme } from './theme.options';\nimport { CUI_THEME, CUI_THEME_STORAGE_KEY } from './theme.options';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiThemeService extends BehaviorSubject<CuiTheme> {\n    private readonly localStorage = inject(CUI_LOCAL_STORAGE);\n    private readonly key = inject(CUI_THEME_STORAGE_KEY);\n\n    constructor() {\n        super(\n            (inject(CUI_LOCAL_STORAGE).getItem(inject(CUI_THEME_STORAGE_KEY)) as CuiNullable<CuiTheme>) ??\n                inject(CUI_THEME)\n        );\n    }\n\n    public override next(theme: CuiTheme): void {\n        this.localStorage.setItem(this.key, theme);\n        super.next(theme);\n    }\n\n    // При работе только двух тем\n    public switch(): void {\n        this.next(this.value === 'light' ? 'dark' : 'light');\n    }\n}\n","import type { CuiValueOf } from '@cuby-ui/cdk';\n\nexport const CuiLoadingState = {\n    LOADING: 'loading',\n    COMPLETED: 'completed',\n    INITIAL: 'initial'\n} as const;\n\nexport type CuiLoadingState = CuiValueOf<typeof CuiLoadingState>;\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';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\nimport { CUI_IS_WEBKIT } from '@cuby-ui/cdk';\nimport type { CuiPoint } from '../types';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiVisualViewportService {\n    private readonly isWebkit = inject(CUI_IS_WEBKIT);\n    private readonly win = inject(CUI_WINDOW);\n\n    // https://bugs.webkit.org/show_bug.cgi?id=207089\n    public correct(point: CuiPoint): CuiPoint {\n        return this.isWebkit\n            ? [\n                  point[0] + (this.win.visualViewport?.offsetTop ?? 0),\n                  point[1] + (this.win.visualViewport?.offsetLeft ?? 0)\n              ]\n            : point;\n    }\n}\n","import type { EventType } from 'angular-oauth2-oidc';\n\nexport function cuiCheckAuthFailureEvent(type: EventType): boolean {\n    switch (type) {\n        case 'token_refresh_error':\n        case 'token_validation_error':\n        case 'session_terminated':\n        case 'session_error':\n        case 'silent_refresh_error':\n        case 'silent_refresh_timeout':\n            return true;\n        default:\n            return false;\n    }\n}\n","import { inject, signal } from '@angular/core';\nimport type { CuiTokenExchangeRequestBody, CuiTokenResponse } from '@cuby-ui/api';\nimport { CuiExchangeContextApiService } from '@cuby-ui/api';\nimport type { TokenResponse } from 'angular-oauth2-oidc';\nimport { OAuthErrorEvent, OAuthService, OAuthSuccessEvent } from 'angular-oauth2-oidc';\nimport type { Observable } from 'rxjs';\nimport { catchError, from, map, of, switchMap, tap, throwError } from 'rxjs';\n\nimport type { CuiTokenData } from './token.options';\n\nabstract class CuiToken extends OAuthService {\n    private readonly tokenData = signal<{ [key: string]: CuiTokenData }>({});\n\n    private readonly CONVERT_TO_SECONDS_CONSTANT = 1000;\n\n    public getRefreshTokenExpiration(): number {\n        const refreshTokenExpiration = this.getTokenDataFromStore(this.getRefreshToken());\n\n        return refreshTokenExpiration.exp;\n    }\n\n    public getAccessTokenData<T extends CuiTokenData = CuiTokenData>(): T {\n        const token = this.getAccessToken();\n\n        if (!token) {\n            throw new Error('No access token found');\n        }\n\n        return this.getTokenDataFromStore(token) as T;\n    }\n\n    public checkIsTokenExpired(): boolean {\n        const token = this.getAccessToken();\n\n        if (!token) {\n            return true;\n        }\n\n        return this.checkTokenExpired(this.getAccessTokenExpiration() / this.CONVERT_TO_SECONDS_CONSTANT);\n    }\n\n    public checkIsRefreshTokenExpired(): boolean {\n        const token = this.getRefreshToken();\n\n        if (!token) {\n            return true;\n        }\n\n        return this.checkTokenExpired(this.getRefreshTokenExpiration());\n    }\n\n    protected getTokenDataFromStore(token: string): CuiTokenData {\n        const tokenData = this.tokenData()[token];\n\n        if (tokenData) {\n            return tokenData;\n        }\n\n        const currentTokenData = this.parseToken(token);\n\n        this.tokenData.update((prev) => ({ ...prev, [token]: currentTokenData }));\n\n        return currentTokenData;\n    }\n\n    private parseToken(token: string): CuiTokenData {\n        try {\n            const base64Url = token.split('.')[1];\n            const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n            const jsonPayload = decodeURIComponent(\n                window\n                    .atob(base64)\n                    .split('')\n                    .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n                    .join('')\n            );\n\n            return JSON.parse(jsonPayload);\n        } catch {\n            throw new Error('Invalid token');\n        }\n    }\n\n    private checkTokenExpired(expiredTimeInSeconds: number): boolean {\n        const currentTime = Date.now() / this.CONVERT_TO_SECONDS_CONSTANT;\n\n        return currentTime >= expiredTimeInSeconds;\n    }\n}\n\nexport class CuiTokenBase extends CuiToken {\n    private readonly exchangeContextApiService = inject(CuiExchangeContextApiService);\n    private readonly EXCHANGE_TOKEN_VALUE = 'token-exchange';\n\n    // TODO: override refreshToken with custom refresh token request to the backend\n    public override refreshToken(): Promise<TokenResponse> {\n        try {\n            const tokenData = this.getTokenDataFromStore(this.getRefreshToken());\n\n            if (tokenData.azp.includes(this.EXCHANGE_TOKEN_VALUE)) {\n                return this.refreshExchangedToken();\n            }\n        } catch (error) {\n            this.logger.error('Error refreshing token', error);\n        }\n\n        return super.refreshToken();\n    }\n\n    public refreshExchangedToken(): Promise<CuiTokenResponse> {\n        return new Promise((resolve, reject) =>\n            this.exchangeContextApiService\n                .refresh(this.getRefreshToken())\n                .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))\n                .subscribe({\n                    next: (tokenResponse) => {\n                        this.setTokenResponse(tokenResponse);\n\n                        resolve(tokenResponse);\n                    },\n                    error: (error) => {\n                        this.logger.error('Error refreshing token', error);\n                        this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\n\n                        reject(error);\n                    }\n                })\n        );\n    }\n\n    public exchangeToken(params: CuiTokenExchangeRequestBody): Observable<CuiTokenResponse> {\n        return this.exchangeContextApiService.exchange(params).pipe(\n            switchMap((tokenResponse) => this.setIdToken(tokenResponse)),\n            tap((tokenResponse) => this.setTokenResponse(tokenResponse)),\n            catchError((error) => {\n                this.logger.error('Error exchanging token', error);\n                this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\n\n                return throwError(() => error);\n            })\n        );\n    }\n\n    private setTokenResponse(tokenResponse: CuiTokenResponse): void {\n        const expiresIn = tokenResponse.expires_in || this.fallbackAccessTokenExpirationTimeInSec!;\n\n        this.debug('tokenResponse', tokenResponse);\n        this.storeAccessTokenResponse(\n            tokenResponse.access_token,\n            tokenResponse.refresh_token,\n            expiresIn,\n            tokenResponse.scope\n        );\n\n        this.eventsSubject.next(new OAuthSuccessEvent('token_received'));\n        this.eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));\n    }\n\n    private setIdToken(tokenResponse: CuiTokenResponse): Observable<CuiTokenResponse> {\n        if (!this.oidc || !tokenResponse.id_token) {\n            return of(tokenResponse);\n        }\n\n        return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(\n            tap((result) => this.storeIdToken(result)),\n            map(() => tokenResponse)\n        );\n    }\n}\n","import type { AuthConfig, TokenResponse } from 'angular-oauth2-oidc';\nimport { OAuthErrorEvent, OAuthInfoEvent } from 'angular-oauth2-oidc';\nimport { filter } from 'rxjs';\n\nimport { cuiCheckAuthFailureEvent } from '../utils/check-auth-failure-event';\nimport { CuiTokenBase } from './token.service';\n\nexport abstract class CuiAuthBase extends CuiTokenBase {\n    public abstract initAuth(authConfig: AuthConfig): Promise<void>;\n\n    public override createLoginUrl(\n        state?: string,\n        loginHint?: string,\n        customRedirectUri?: string,\n        noPrompt?: boolean,\n        params?: object\n    ): Promise<string> {\n        return super.createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params);\n    }\n\n    public async useCheckTokenFlow(loginCallback: () => void): Promise<TokenResponse | void> {\n        const isAccessTokenExpired = this.checkIsTokenExpired();\n        const isRefreshTokenExpired = this.checkIsRefreshTokenExpired();\n\n        if (isRefreshTokenExpired) {\n            return loginCallback();\n        }\n\n        if (!isAccessTokenExpired) {\n            return;\n        }\n\n        return await this.refreshToken();\n    }\n\n    public initAuthRefreshEvents(loginCallback: () => void): void {\n        this.events.pipe(filter((event) => event instanceof OAuthInfoEvent)).subscribe((event) => {\n            if (event.type !== 'token_expires' || event.info !== 'access_token') {\n                return;\n            }\n\n            if (!this.hasValidAccessToken() || !this.getRefreshToken()) {\n                return loginCallback();\n            }\n\n            this.refreshToken();\n        });\n    }\n\n    public initAuthFailureEvents(onFailure: () => void): void {\n        this.events.pipe(filter((event) => event instanceof OAuthErrorEvent)).subscribe((event) => {\n            if (cuiCheckAuthFailureEvent(event.type)) {\n                onFailure();\n            }\n        });\n    }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nexport const CUI_REDUCED_MOTION = cuiCreateTokenFromFactory(\n    () => inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false\n);\n","import { inject } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nimport { CUI_REDUCED_MOTION } from './reduced-motion';\n\n/**\n * Speed of all Taiga UI animations. 1 equals 300ms.\n */\nexport const CUI_ANIMATIONS_SPEED = cuiCreateTokenFromFactory<number>(() => (inject(CUI_REDUCED_MOTION) ? 0 : 1));\n","import type { Provider, Type } from '@angular/core';\nimport { inject } from '@angular/core';\nimport { CUI_WINDOW, cuiCreateTokenFromFactory, cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor } from '../classes';\n\n/**\n * Viewport accessor\n */\nexport const CUI_VIEWPORT = cuiCreateTokenFromFactory<CuiRectAccessor>(() => {\n    const win = inject(CUI_WINDOW);\n\n    return {\n        type: 'viewport',\n        getClientRect() {\n            const rect = {\n                top: 0,\n                left: 0,\n                right: win.innerWidth,\n                bottom: win.innerHeight,\n                width: win.innerWidth,\n                height: win.innerHeight,\n                x: 0,\n                y: 0\n            };\n\n            return {\n                ...rect,\n                toJSON: () => JSON.stringify(rect)\n            };\n        }\n    };\n});\n\nexport function cuiAsViewport(accessor: Type<CuiRectAccessor>): Provider {\n    return cuiProvide(CUI_VIEWPORT, accessor);\n}\n","import { InjectionToken, inject } from '@angular/core';\n\nimport type { CuiErrorNotificationService } from '../interfaces/error-notification-service';\nimport { CuiAlertService } from '../components';\n\nclass DefaultErrorNotificationService implements CuiErrorNotificationService {\n    private readonly alertService = inject(CuiAlertService);\n\n    public showError(message: string, options?: Record<string, unknown>): void {\n        this.alertService.open(message, { status: 'error', ...options }).subscribe();\n    }\n}\n\nexport const CUI_ERROR_NOTIFICATION_SERVICE = new InjectionToken<CuiErrorNotificationService>(\n    'CUI_ERROR_NOTIFICATION_SERVICE',\n    {\n        providedIn: 'root',\n        factory: () => new DefaultErrorNotificationService()\n    }\n);\n","import { InjectionToken } from '@angular/core';\n\nexport const CUI_ERROR_TRANSLATION_PREFIX = new InjectionToken<string>('CUI_ERROR_TRANSLATION_PREFIX', {\n    providedIn: 'root',\n    factory: () => 'BACKEND.'\n});\n","import { InjectionToken } from '@angular/core';\n\nimport type { ShouldHandleErrorPredicate } from '../types';\n\nexport const CUI_SHOULD_HANDLE_ERROR = new InjectionToken<ShouldHandleErrorPredicate>(\n    'CUI_SHOULD_HANDLE_ERROR'\n);\n","import { InjectionToken } from '@angular/core';\n\nexport const CUI_AUTH_LOGIN_STRATEGY = new InjectionToken<CuiAuthLoginStrategyService>('CUI_AUTH_LOGIN_STRATEGY');\n\nexport interface CuiAuthLoginStrategyService {\n    openLogin(): void | Promise<void>;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\n\nimport type { ErrorStrategy } from '../interfaces';\nimport { CUI_ERROR_TRANSLATION_PREFIX } from '../tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class CuiErrorResolverFactory {\n    private readonly nullErrorStrategy = inject(NullErrorStrategy);\n    private readonly httpErrorStrategy = inject(HttpErrorStrategy);\n    private readonly defaultErrorStrategy = inject(DefaultErrorStrategy);\n\n    public getErrorStrategy(error: unknown): ErrorStrategy {\n        if (error instanceof HttpErrorResponse) {\n            return this.httpErrorStrategy;\n        }\n\n        if (error instanceof Error) {\n            return this.defaultErrorStrategy;\n        }\n\n        return this.nullErrorStrategy;\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nclass NullErrorStrategy implements ErrorStrategy {\n    private readonly translocoService = inject(TranslocoService);\n    private readonly translatePrefix = inject(CUI_ERROR_TRANSLATION_PREFIX);\n\n    public getMessage(): string {\n        return this.translocoService.translate(`${this.translatePrefix}UNKNOWN_ERROR`);\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nclass HttpErrorStrategy implements ErrorStrategy {\n    private readonly translocoService = inject(TranslocoService);\n    private readonly translatePrefix = inject(CUI_ERROR_TRANSLATION_PREFIX);\n\n    public getMessage(error: HttpErrorResponse): string {\n        if (error.error?.code) {\n            return this.translocoService.translate(`${this.translatePrefix}${error.error.code}`);\n        }\n\n        if (error.error?.message) {\n            return error.error.message;\n        }\n\n        return error.message;\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nclass DefaultErrorStrategy implements ErrorStrategy {\n    public getMessage(error: Error): string {\n        return error.message;\n    }\n}\n","import type { ErrorHandler } from '@angular/core';\nimport { inject, Injectable } from '@angular/core';\nimport { CuiErrorResolverFactory } from './error-resolver-factory.service';\nimport { CUI_ERROR_NOTIFICATION_SERVICE, CUI_SHOULD_HANDLE_ERROR } from '../tokens';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiGlobalErrorHandler implements ErrorHandler {\n    private readonly errorNotificationService = inject(CUI_ERROR_NOTIFICATION_SERVICE);\n    private readonly cuiErrorResolverFactory = inject(CuiErrorResolverFactory);\n    private readonly shouldHandleError = inject(CUI_SHOULD_HANDLE_ERROR, { optional: true });\n\n    public handleError(error: unknown): void {\n        if (this.shouldHandleError && !this.shouldHandleError(error)) {\n            console.error(error);\n\n            return;\n        }\n\n        console.error(error);\n\n        this.errorNotificationService.showError(this.getErrorMessage(error));\n    }\n\n    private getErrorMessage(error: unknown): string {\n        return this.cuiErrorResolverFactory.getErrorStrategy(error).getMessage(error);\n    }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiHybridStorageService implements Storage {\n    private readonly sessionKeys = new Set(['nonce', 'PKCE_verifier']);\n\n    public get length(): number {\n        return this.getAllKeys().length;\n    }\n\n    public clear(): void {\n        localStorage.clear();\n        sessionStorage.clear();\n    }\n\n    public getItem(key: string): string | null {\n        return this.getStorageForKey(key).getItem(key);\n    }\n\n    public key(index: number): string | null {\n        return this.getAllKeys()[index] ?? null;\n    }\n\n    public removeItem(key: string): void {\n        this.getStorageForKey(key).removeItem(key);\n    }\n\n    public setItem(key: string, value: string): void {\n        this.getStorageForKey(key).setItem(key, value);\n    }\n\n    private getStorageForKey(key: string): Storage {\n        return this.sessionKeys.has(key) ? sessionStorage : localStorage;\n    }\n\n    private getAllKeys(): string[] {\n        const allKeys = new Set<string>();\n\n        for (let i = 0; i < localStorage.length; i++) {\n            const key = localStorage.key(i);\n\n            if (key) {\n                allKeys.add(key);\n            }\n        }\n\n        for (let i = 0; i < sessionStorage.length; i++) {\n            const key = sessionStorage.key(i);\n\n            if (key) {\n                allKeys.add(key);\n            }\n        }\n\n        return Array.from(allKeys);\n    }\n}\n","import type { Type } from '@angular/core';\nimport { InjectionToken } from '@angular/core';\nimport type { AuthConfig, OAuthModuleConfig } from 'angular-oauth2-oidc';\n\nimport type { CuiAuthLoginStrategyService } from '../tokens';\nimport type { CuiBrowserAuthService } from '../services/browser-auth.service';\nimport type { CuiMobileAuthService } from '../services/mobile-auth.service';\nimport { CuiAuthBase } from '../services/auth.service';\n\nexport type CuiAuthPlatform = 'mobile' | 'browser';\n\nexport interface CuiAuthConfig extends AuthConfig {\n    readonly tokenExpiredCallback?: (this: CuiAuthBase) => void;\n}\n\nexport interface CuiAuthProviderConfig {\n    readonly authConfig: CuiAuthConfig;\n    readonly moduleConfig?: OAuthModuleConfig;\n    readonly platform?: CuiAuthPlatform;\n    readonly loginStrategy?: Type<CuiAuthLoginStrategyService>;\n}\n\nexport const CuiAuthService = new InjectionToken<CuiMobileAuthService | CuiBrowserAuthService>('CUI_AUTH_SERVICE');\n","import { Location } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CuiAuthConfig } from '../providers';\nimport { CuiAuthBase } from './auth.service';\nimport { CuiHybridStorageService } from './hybrid-storage.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiBrowserAuthService extends CuiAuthBase {\n    private readonly router = inject(Router);\n    private readonly location = inject(Location);\n    private readonly oauthStorage = inject(CuiHybridStorageService);\n\n    public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\n        this.setStorage(this.oauthStorage);\n        this.configure(authConfig);\n\n        await this.loadDiscoveryDocument();\n\n        try {\n            await this.tryLogin();\n        } catch (error) {\n            if (!this.hasValidAccessToken()) {\n                throw error;\n            }\n        }\n\n        const tokenExpiredCallback = authConfig.tokenExpiredCallback?.bind(this) ?? this.initLoginFlow.bind(this);\n\n        this.initAuthRefreshEvents(tokenExpiredCallback);\n\n        await this.useCheckTokenFlow(tokenExpiredCallback);\n\n        this.router.navigateByUrl(this.location.path(false).split('?')[0]);\n    }\n}\n","import { inject, Injectable } from '@angular/core';\n\nimport { CuiAuthConfig } from '../providers';\nimport { CuiAuthBase } from './auth.service';\nimport { CuiHybridStorageService } from './hybrid-storage.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiMobileAuthService extends CuiAuthBase {\n    private readonly oauthStorage = inject(CuiHybridStorageService);\n\n    public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\n        this.setStorage(this.oauthStorage);\n        this.configure(authConfig);\n\n        if (!authConfig.tokenExpiredCallback) {\n            return;\n        }\n\n        await this.loadDiscoveryDocument();\n        await this.tryLogin();\n\n        this.initAuthRefreshEvents(authConfig.tokenExpiredCallback.bind(this));\n\n        await this.useCheckTokenFlow(authConfig.tokenExpiredCallback.bind(this));\n    }\n}\n","import type { Provider } from '@angular/core';\nimport { APP_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';\nimport { provideOAuthClient } from 'angular-oauth2-oidc';\n\nimport { CuiBrowserAuthService } from '../services/browser-auth.service';\nimport { CuiBrowserLoginStrategyService } from '../services/browser-login-strategy.service';\nimport { CuiMobileAuthService } from '../services/mobile-auth.service';\nimport { CUI_AUTH_LOGIN_STRATEGY } from '../tokens';\nimport type { CuiAuthConfig, CuiAuthProviderConfig } from './auth.options';\nimport { CuiAuthService } from './auth.options';\n\nexport function provideCuiAuth({\n    authConfig,\n    moduleConfig,\n    platform = 'browser',\n    loginStrategy = CuiBrowserLoginStrategyService\n}: CuiAuthProviderConfig): Provider {\n    return [\n        provideOAuthClient(moduleConfig),\n        {\n            provide: CuiAuthService,\n            useFactory: (): CuiMobileAuthService | CuiBrowserAuthService => {\n                if (platform === 'mobile') {\n                    return inject(CuiMobileAuthService);\n                }\n\n                return inject(CuiBrowserAuthService);\n            }\n        },\n        {\n            provide: CUI_AUTH_LOGIN_STRATEGY,\n            useClass: loginStrategy\n        },\n        makeEnvironmentProviders([\n            {\n                provide: APP_INITIALIZER,\n                useValue: (): Promise<void> => initAuth(authConfig),\n                multi: true\n            }\n        ])\n    ];\n}\n\nasync function initAuth(authConfig: CuiAuthConfig): Promise<void> {\n    const authService = inject(CuiAuthService);\n    const loginStrategy = inject(CUI_AUTH_LOGIN_STRATEGY);\n\n    authService.initAuthFailureEvents(() => loginStrategy.openLogin());\n\n    return await authService.initAuth(authConfig);\n}\n","import { ErrorHandler, type Provider } from '@angular/core';\n\nimport { CuiGlobalErrorHandler } from '../services/global-handler-error.service';\nimport { CUI_ERROR_NOTIFICATION_SERVICE, CUI_ERROR_TRANSLATION_PREFIX, CUI_SHOULD_HANDLE_ERROR } from '../tokens';\nimport type { CuiErrorHandlerProviderConfig } from './error-handler.options';\n\nexport function provideCuiErrorHandler({\n    errorNotificationService,\n    shouldHandleError,\n    translationPrefix = 'BACKEND.'\n}: CuiErrorHandlerProviderConfig = {}): Provider[] {\n    const providers: Provider[] = [\n        {\n            provide: ErrorHandler,\n            useClass: CuiGlobalErrorHandler\n        },\n        {\n            provide: CUI_ERROR_TRANSLATION_PREFIX,\n            useValue: translationPrefix\n        }\n    ];\n\n    if (errorNotificationService) {\n        providers.push({\n            provide: CUI_ERROR_NOTIFICATION_SERVICE,\n            useClass: errorNotificationService\n        });\n    }\n\n    if (shouldHandleError) {\n        providers.push({\n            provide: CUI_SHOULD_HANDLE_ERROR,\n            useValue: shouldHandleError\n        });\n    }\n\n    return providers;\n}\n","import { inject, Injectable } from '@angular/core';\n\nimport { CuiAuthService } from '../providers';\nimport type { CuiAuthLoginStrategyService } from '../tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class CuiBrowserLoginStrategyService implements CuiAuthLoginStrategyService {\n    private readonly authService = inject(CuiAuthService);\n\n    public openLogin(): void {\n        this.authService.initLoginFlow();\n    }\n}\n","export function cuiRemoveSpaces(value: string): string {\n    return value.replace(/\\s+/g, '');\n}\n","export function cuiReplace(value: string, search: string, replace: string): string {\n    const regex = new RegExp(search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\n\n    return value.replace(regex, replace);\n}\n","import { cuiGetElementObscures } from '@cuby-ui/cdk';\n\n/**\n * @internal\n */\nexport function cuiIsObscured(el: HTMLElement, exceptSelector = 'cui-hints'): boolean {\n    return !!cuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\n}\n","export function cuiOverrideOptions<T>(\n    override: Partial<T>,\n    fallback: T\n): (directive: T | null, options: T | null) => T {\n    return (directive, options) => {\n        const result: T = directive || { ...(options || fallback) };\n\n        Object.keys(override).forEach((key) => {\n            // Update directive props with new defaults before inputs are processed\n            (result as Record<string, unknown>)[key] = override[key as keyof T];\n        });\n\n        return result;\n    };\n}\n","import type { AnimationOptions } from '@angular/animations';\n\nexport const CUI_ANIMATIONS_DEFAULT_DURATION = 300;\n\nexport function cuiToAnimationOptions(speed: number, easing?: string): AnimationOptions {\n    return {\n        value: '',\n        params: {\n            duration: cuiGetDuration(speed),\n            easing\n        }\n    } as unknown as AnimationOptions;\n}\n\nexport function cuiGetDuration(speed: number): number {\n    return speed && CUI_ANIMATIONS_DEFAULT_DURATION / speed;\n}\n","import type { ValidationErrors } from '@angular/forms';\n\nconst LEADING_TRAILING_SPACES_REGEX = /^\\s|\\s$/;\nconst MULTIPLE_SPACES_REGEX = /\\s{2,}/;\n\nexport function hasExtraSpaces(value: string): ValidationErrors | null {\n    const hasLeadingOrTrailingSpaces = LEADING_TRAILING_SPACES_REGEX.test(value);\n    const hasMultipleSpaces = MULTIPLE_SPACES_REGEX.test(value);\n\n    if (hasLeadingOrTrailingSpaces || hasMultipleSpaces) {\n        return { extraSpaces: true };\n    }\n\n    return null;\n}\n","import type { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport type { Observable } from 'rxjs';\nimport { map, timer } from 'rxjs';\n\nimport { hasExtraSpaces } from './extra-spaces.options';\n\nexport function asyncExtraSpacesValidators(delay: number): AsyncValidatorFn {\n    return ({ value }: AbstractControl): Observable<ValidationErrors | null> => {\n        return timer(delay).pipe(map(() => hasExtraSpaces(value)));\n    };\n}\n\nexport function syncExtraSpacesValidator(): ValidatorFn {\n    return ({ value }: AbstractControl): ValidationErrors | null => hasExtraSpaces(value);\n}\n","import { Validators } from '@angular/forms';\nimport { CuiDefaultValidatorsOptions } from './create-default-validators.options';\nimport { asyncExtraSpacesValidators, syncExtraSpacesValidator } from './extra-spaces.validators';\n\nexport function cuiCreateDefaultValidators({ maxLength = 100, asyncDelay = 700 } = {}): CuiDefaultValidatorsOptions {\n    // Need to offset because this delay must be before changing value\n    const OFFSET = 1;\n\n    const adjustedAsyncDelay = asyncDelay - OFFSET;\n    const validators: CuiDefaultValidatorsOptions = {\n        validators: [Validators.required, Validators.maxLength(maxLength)],\n        asyncValidators: []\n    };\n\n    if (asyncDelay) {\n        validators.asyncValidators.push(asyncExtraSpacesValidators(adjustedAsyncDelay));\n    } else {\n        validators.validators.push(syncExtraSpacesValidator());\n    }\n\n    return validators;\n}\n","export function cuiCheckFixedPosition(element?: HTMLElement | null): boolean {\n    return !!element && (isFixed(element) || cuiCheckFixedPosition(element.parentElement));\n}\n\nfunction isFixed(element: HTMLElement): boolean {\n    return element.ownerDocument.defaultView?.getComputedStyle(element).getPropertyValue('position') === 'fixed';\n}\n","import type { Type } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nimport { CuiTooltipComponent } from './tooltip.component';\n\n/**\n * A component to display a tooltip\n */\nexport const CUI_TOOLTIP_COMPONENT = cuiCreateTokenFromFactory<Type<unknown>>(() => CuiTooltipComponent);\n","import { Injectable } from '@angular/core';\nimport type { CuiPortalItem } from '../../types';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Service for displaying hints/tooltips\n */\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiTooltipService extends BehaviorSubject<readonly CuiPortalItem[]> {\n    constructor() {\n        super([]);\n    }\n\n    public add(directive: CuiPortalItem): void {\n        this.next(this.value.concat(directive));\n    }\n\n    public remove(directive: CuiPortalItem): void {\n        if (this.value.includes(directive)) {\n            this.next(this.value.filter((hint) => hint !== directive));\n        }\n    }\n}\n","import { Directive } from '@angular/core';\nimport { CuiDriverDirective } from '../../classes';\n\n@Directive({\n    standalone: true\n})\nexport class CuiTooltipDriver extends CuiDriverDirective {\n    public readonly type = 'hint';\n}\n","import type { FactoryProvider, OnChanges } from '@angular/core';\nimport { Directive, inject, Input, Optional, Self, SkipSelf } from '@angular/core';\nimport { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';\nimport { cuiOverrideOptions } from '../../utils';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { Subject } from 'rxjs';\n\nexport type CuiTooltipDirection =\n    | 'bottom-left'\n    | 'bottom-right'\n    | 'bottom'\n    | 'left-bottom'\n    | 'left-top'\n    | 'left'\n    | 'right-bottom'\n    | 'right-top'\n    | 'right'\n    | 'top-left'\n    | 'top-right'\n    | 'top';\n\nexport const CUI_TOOLTIP_DIRECTIONS: readonly CuiTooltipDirection[] = [\n    'top',\n    'top-left',\n    'top-right',\n    'bottom',\n    'bottom-left',\n    'bottom-right',\n    'left-top',\n    'left',\n    'left-bottom',\n    'right-top',\n    'right',\n    'right-bottom'\n];\n\nexport interface CuiTooltipOptions {\n    readonly appearance: string;\n    readonly direction: CuiTooltipDirection | CuiTooltipDirection[];\n    readonly hideDelay: number;\n    readonly icon: string;\n    readonly showDelay: number;\n}\n\n/** Default values for tooltip options */\nexport const CUI_TOOLTIP_DEFAULT_OPTIONS: CuiTooltipOptions = {\n    direction: 'top',\n    showDelay: 500,\n    hideDelay: 200,\n    appearance: '',\n    /** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/\n    icon: '@cui.circle-help'\n};\n\n/**\n * Default parameters for tooltip directive\n */\nexport const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);\n\nexport const cuiTooltipOptionsProvider: (options: Partial<CuiTooltipOptions>) => FactoryProvider = (\n    override: Partial<CuiTooltipOptions>\n) => ({\n    provide: CUI_TOOLTIP_OPTIONS,\n    deps: [\n        [new Optional(), new Self(), CuiTooltipOptionsDirective],\n        [new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS]\n    ],\n    useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS)\n});\n\n/**\n * @deprecated: drop in 5.0\n */\n@Directive({\n    standalone: true,\n    selector: '[cuiTooltipContent]',\n    providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)]\n})\nexport class CuiTooltipOptionsDirective implements CuiTooltipOptions, OnChanges {\n    private readonly options = inject(CUI_TOOLTIP_OPTIONS, { skipSelf: true });\n\n    @Input('cuiTooltipContent')\n    public content: PolymorpheusContent;\n\n    @Input('cuiTooltipDirection')\n    public direction = this.options.direction;\n\n    @Input('cuiTooltipAppearance')\n    public appearance = this.options.appearance;\n\n    @Input('cuiTooltipShowDelay')\n    public showDelay = this.options.showDelay;\n\n    @Input('cuiTooltipHideDelay')\n    public hideDelay = this.options.hideDelay;\n\n    public icon = this.options.icon;\n\n    public readonly change$ = new Subject<void>();\n\n    public ngOnChanges(): void {\n        this.change$.next();\n    }\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { CuiHoveredService, CUI_IS_MOBILE, cuiInjectElement } from '@cuby-ui/cdk';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport { cuiIsObscured } from '../../utils';\nimport { delay, filter, map, merge, of, repeat, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nimport type { CuiTooltipOptions } from './tooltip-options.directive';\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\n\n@Directive({\n    standalone: true,\n    providers: [cuiAsDriver(CuiTooltipHover), CuiHoveredService],\n    exportAs: 'cuiTooltipHover'\n})\nexport class CuiTooltipHover extends CuiDriver {\n    private readonly isMobile = inject(CUI_IS_MOBILE);\n    private readonly el = cuiInjectElement();\n    private readonly hovered$ = inject(CuiHoveredService);\n    private readonly options = inject(CUI_TOOLTIP_OPTIONS);\n    private visible = false;\n    private readonly toggle$ = new Subject<boolean>();\n    private readonly stream$ = merge(\n        this.toggle$.pipe(\n            switchMap((visible) =>\n                this.isMobile ? of(visible) : of(visible).pipe(delay(visible ? 0 : this.cuiTooltipHideDelay))\n            ),\n            takeUntil(this.hovered$),\n            repeat()\n        ),\n        this.hovered$.pipe(\n            switchMap((visible) =>\n                this.isMobile\n                    ? of(visible)\n                    : of(visible).pipe(delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay))\n            ),\n            takeUntil(this.toggle$),\n            repeat()\n        )\n    ).pipe(\n        filter(() => this.enabled),\n        map((value) => value && (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el))),\n        tap((visible) => {\n            this.visible = visible;\n        })\n    );\n\n    private readonly parent = inject(CuiTooltipHover, {\n        optional: true,\n        skipSelf: true\n    });\n\n    @Input()\n    public cuiTooltipShowDelay: CuiTooltipOptions['showDelay'] = this.options.showDelay;\n\n    @Input()\n    public cuiTooltipHideDelay: CuiTooltipOptions['hideDelay'] = this.options.hideDelay;\n\n    public readonly type = 'hint';\n\n    public enabled = true;\n\n    constructor() {\n        super((subscriber) => this.stream$.subscribe(subscriber));\n    }\n\n    public toggle(visible = !this.visible): void {\n        this.toggle$.next(visible);\n        this.parent?.toggle(visible);\n    }\n}\n","import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';\nimport { cuiFallbackAccessor, CuiPositionAccessor, CuiRectAccessor } from '../../classes';\nimport { CUI_VIEWPORT } from '../../tokens';\nimport type { CuiPoint } from '../../types';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport type { CuiTooltipDirection, CuiTooltipOptions } from './tooltip-options.directive';\nimport { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 24;\nconst TOP = 0;\nconst LEFT = 1;\n\n@Directive({\n    standalone: true\n})\nexport class CuiTooltipPosition extends CuiPositionAccessor {\n    private readonly offset = inject(CUI_IS_MOBILE) ? 16 : 5;\n    private readonly viewport = inject(CUI_VIEWPORT);\n    private readonly accessor = cuiFallbackAccessor<CuiRectAccessor>('hint')(\n        inject<any>(CuiRectAccessor),\n        inject(CuiTooltipDirective)\n    );\n\n    private readonly points: Record<CuiTooltipDirection, [number, number]> = CUI_TOOLTIP_DIRECTIONS.reduce(\n        (acc, direction) => ({ ...acc, [direction]: [0, 0] }),\n        {} as Record<CuiTooltipDirection, [number, number]>\n    );\n\n    @Input('cuiTooltipDirection')\n    public direction: CuiTooltipOptions['direction'] = inject(CUI_TOOLTIP_OPTIONS).direction;\n\n    @Output('cuiTooltipDirectionChange')\n    public readonly directionChange = new EventEmitter<CuiTooltipDirection>();\n\n    public readonly type = 'hint';\n\n    @cuiPure\n    public emitDirection(direction: CuiTooltipDirection): void {\n        this.directionChange.emit(direction);\n    }\n\n    public getPosition(rect: DOMRect, el?: HTMLElement): CuiPoint {\n        const width = el?.clientWidth ?? rect.width;\n        const height = el?.clientHeight ?? rect.height;\n        const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;\n        const leftCenter = hostRect.left + hostRect.width / 2;\n        const topCenter = hostRect.top + hostRect.height / 2;\n\n        this.points['top-left'][TOP] = hostRect.top - height - this.offset;\n        this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\n        this.points.top[TOP] = this.points['top-left'][TOP];\n        this.points.top[LEFT] = leftCenter - width / 2;\n        this.points['top-right'][TOP] = this.points['top-left'][TOP];\n        this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\n\n        this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\n        this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\n        this.points.bottom[TOP] = this.points['bottom-left'][TOP];\n        this.points.bottom[LEFT] = this.points.top[LEFT];\n        this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\n        this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\n\n        this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\n        this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\n        this.points.left[TOP] = topCenter - height / 2;\n        this.points.left[LEFT] = this.points['left-top'][LEFT];\n        this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\n        this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\n\n        this.points['right-top'][TOP] = this.points['left-top'][TOP];\n        this.points['right-top'][LEFT] = hostRect.right + this.offset;\n        this.points.right[TOP] = this.points.left[TOP];\n        this.points.right[LEFT] = this.points['right-top'][LEFT];\n        this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\n        this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\n\n        const priorityDirections = Array.isArray(this.direction) ? this.direction : [this.direction];\n        const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);\n\n        const direction = sortedDirections.find((direction) =>\n            this.checkPosition(this.points[direction], width, height)\n        );\n\n        this.emitDirection(direction || this.fallback);\n\n        return this.points[direction || this.fallback];\n    }\n\n    private get fallback(): CuiTooltipDirection {\n        return this.points.top[TOP] > this.viewport.getClientRect().bottom - this.points.bottom[TOP] ? 'top' : 'bottom';\n    }\n\n    private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\n        const viewport = this.viewport.getClientRect();\n\n        return top > GAP && left > GAP && top + height < viewport.bottom - GAP && left + width < viewport.right - GAP;\n    }\n}\n","import type { OnDestroy } from '@angular/core';\nimport { Directive, inject, INJECTOR, Input, signal } from '@angular/core';\nimport { cuiInjectElement, CuiActiveZone } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor, CuiVehicle } from '../../classes';\nimport { cuiAsRectAccessor, cuiAsVehicle } from '../../classes';\nimport type { CuiPortalItem } from '../../types';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\n\nimport { CUI_TOOLTIP_COMPONENT } from './tooltip.providers';\nimport { CuiTooltipService } from './tooltip.service';\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\n\n@Directive({\n    standalone: true,\n    selector: '[cuiTooltip]:not(ng-container):not(ng-template)',\n    providers: [\n        cuiAsRectAccessor(CuiTooltipDirective),\n        cuiAsVehicle(CuiTooltipDirective),\n        {\n            provide: PolymorpheusComponent,\n            deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],\n            useClass: PolymorpheusComponent\n        }\n    ],\n    hostDirectives: [\n        CuiTooltipDriver,\n        {\n            directive: CuiTooltipHover,\n            inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay']\n        },\n        {\n            directive: CuiTooltipPosition,\n            inputs: ['cuiTooltipDirection'],\n            outputs: ['cuiTooltipDirectionChange']\n        }\n    ]\n})\nexport class CuiTooltipDirective<C> implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle {\n    private readonly service = inject(CuiTooltipService);\n\n    @Input('cuiTooltipContext')\n    public context?: C;\n\n    @Input('cuiTooltipAppearance')\n    public appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;\n\n    public content = signal<PolymorpheusContent<C>>(null);\n    public component = inject(PolymorpheusComponent<unknown>);\n    public readonly el = cuiInjectElement();\n    public readonly activeZone? = inject(CuiActiveZone, { optional: true });\n    public readonly type = 'hint';\n\n    @Input()\n    public set cuiTooltip(content: PolymorpheusContent<C>) {\n        this.content.set(content);\n\n        if (!content) {\n            this.toggle(false);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.toggle(false);\n    }\n\n    public getClientRect(): DOMRect {\n        return this.el.getBoundingClientRect();\n    }\n\n    public toggle(show: boolean): void {\n        if (show && this.content()) {\n            this.service.add(this);\n        } else {\n            this.service.remove(this);\n        }\n    }\n}\n","import { Directive } from '@angular/core';\nimport { EMPTY_CLIENT_RECT, cuiPointToClientRect } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor } from '../../classes';\nimport { cuiAsDriver, cuiAsRectAccessor } from '../../classes';\n\nimport { CuiTooltipHover } from './tooltip-hover.directive';\n\n@Directive({\n    standalone: true,\n    selector: '[cuiTooltip][cuiTooltipPointer]',\n    providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],\n    host: {\n        '(mousemove.silent)': 'onMove($event)'\n    }\n})\nexport class CuiTooltipPointer extends CuiTooltipHover implements CuiRectAccessor {\n    private currentRect = EMPTY_CLIENT_RECT;\n\n    public getClientRect(): DOMRect {\n        return this.currentRect;\n    }\n\n    protected onMove({ clientX, clientY }: MouseEvent): void {\n        this.currentRect = cuiPointToClientRect(clientX, clientY);\n    }\n}\n","import type { WritableSignal } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, Directive, inject, TemplateRef } from '@angular/core';\nimport type { CuiContext } from '@cuby-ui/cdk';\nimport { cuiParentAnimation } from '../../animations';\nimport type { CuiPortalItem } from '../../types';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { injectContext, PolymorpheusComponent, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\n\n@Component({\n    standalone: true,\n    imports: [PolymorpheusOutlet],\n    template: '<ng-container *polymorpheusOutlet=\"context.$implicit.content()\" />',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [cuiParentAnimation],\n    host: { '[@cuiParentAnimation]': '' }\n})\nexport class CuiTooltipUnstyledComponent {\n    protected readonly context =\n        injectContext<CuiContext<CuiPortalItem & { content: WritableSignal<PolymorpheusContent> }>>();\n}\n\n@Directive({\n    standalone: true,\n    selector: 'ng-template[cuiTooltip]'\n})\nexport class CuiTooltipUnstyled<C> {\n    constructor() {\n        const hint = inject(CuiTooltipDirective<C>);\n\n        hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);\n        hint.content.set(inject(TemplateRef<C>));\n    }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EMPTY_CLIENT_RECT, CuiHoveredService, CuiContext } from '@cuby-ui/cdk';\nimport { cuiFadeIn, cuiScaleIn } from '../../animations';\nimport { cuiPositionAccessorFor, CuiRectAccessor, cuiRectAccessorFor } from '../../classes';\nimport { CuiPositionService, CuiVisualViewportService } from '../../services';\nimport { CUI_ANIMATIONS_SPEED, CUI_VIEWPORT } from '../../tokens';\nimport { cuiIsObscured, cuiToAnimationOptions } from '../../utils';\nimport { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\nimport { map, takeWhile } from 'rxjs';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\nimport { CuiTooltipUnstyledComponent } from './tooltip-unstyled.component';\nimport { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';\n\nconst GAP = 8;\n\nexport const CUI_TOOLTIP_PROVIDERS = [\n    CuiPositionService,\n    CuiHoveredService,\n    cuiPositionAccessorFor('hint', CuiTooltipPosition),\n    cuiRectAccessorFor(\n        'hint',\n        forwardRef(() => CuiTooltipDirective)\n    )\n];\n\n@Component({\n    standalone: true,\n    selector: 'cui-tooltip',\n    imports: [PolymorpheusOutlet],\n    template: `\n        <ng-content />\n        <span\n            *polymorpheusOutlet=\"content() as text; context: hint.context\"\n            [innerHTML]=\"text\"\n        ></span>\n    `,\n    styleUrls: ['./tooltip.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: CUI_TOOLTIP_PROVIDERS,\n    animations: [cuiFadeIn, cuiScaleIn],\n    host: {\n        '[@cuiScaleIn]': 'isMobile ? options : desktop',\n        '[@cuiFadeIn]': 'options',\n        '[class._untouchable]': 'pointer',\n        '[class._mobile]': 'isMobile',\n        '[attr.data-appearance]': 'appearance',\n        '[attr.cuiTheme]': 'appearance',\n        '(document:click)': 'onClick($event.target)'\n    }\n})\nexport class CuiTooltipComponent<C = any> {\n    private readonly el = cuiInjectElement();\n    private readonly hover = inject(CuiTooltipHover);\n    private readonly vvs = inject(CuiVisualViewportService);\n    private readonly viewport = inject(CUI_VIEWPORT);\n\n    protected readonly desktop = { value: '', params: { end: 1, start: 1 } };\n    protected readonly options = cuiToAnimationOptions(\n        inject(CUI_ANIMATIONS_SPEED),\n        'cubic-bezier(0.35, 1.3, 0.25, 1)'\n    );\n\n    protected readonly pointer = inject(CuiTooltipPointer, { optional: true });\n    protected readonly accessor = inject(CuiRectAccessor);\n    protected readonly hint = injectContext<CuiContext<CuiTooltipDirective<C>>>().$implicit;\n    protected readonly isMobile = inject(CUI_IS_MOBILE);\n\n    protected readonly content =\n        this.hint.component.component === CuiTooltipUnstyledComponent ? signal('') : this.hint.content;\n\n    protected readonly appearance =\n        this.hint.appearance || this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');\n\n    constructor() {\n        inject(CuiPositionService)\n            .pipe(\n                takeWhile(() => this.hint.el.isConnected),\n                map((point) => this.vvs.correct(point)),\n                takeUntilDestroyed()\n            )\n            .subscribe({\n                next: ([top, left]) => this.update(top, left),\n                complete: () => this.hover.toggle(false)\n            });\n\n        inject(CuiHoveredService)\n            .pipe(takeUntilDestroyed())\n            .subscribe((hover) => this.hover.toggle(hover));\n    }\n\n    protected onClick(target: HTMLElement): void {\n        if ((!target.closest('cui-hint') && !this.hint.el.contains(target)) || cuiIsObscured(this.hint.el)) {\n            this.hover.toggle(false);\n        }\n    }\n\n    @cuiPure\n    private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\n        this.el.style.top = top;\n        this.el.style.left = left;\n        this.el.style.setProperty('--top', `${beakTop}%`);\n        this.el.style.setProperty('--left', `${beakLeft}%`);\n        this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');\n    }\n\n    private update(top: number, left: number): void {\n        const { clientHeight, clientWidth } = this.el;\n        const rect = this.accessor.getClientRect();\n        const viewport = this.viewport.getClientRect();\n\n        if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\n            return;\n        }\n\n        const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);\n        const [beakTop, beakLeft] = this.vvs.correct([\n            rect.top + rect.height / 2 - top,\n            rect.left + rect.width / 2 - safeLeft\n        ]);\n\n        this.apply(\n            cuiPx(Math.round(top)),\n            cuiPx(Math.round(safeLeft)),\n            Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\n            Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100)\n        );\n    }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, inject, Input, NgZone } from '@angular/core';\nimport {\n    cuiIfMap,\n    cuiTypedFromEvent,\n    cuiZonefreeScheduler,\n    cuiZoneOptimized,\n    cuiInjectElement,\n    cuiIsPresent,\n    cuiPure,\n    cuiIsNativeFocused\n} from '@cuby-ui/cdk';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport {\n    BehaviorSubject,\n    debounce,\n    distinctUntilChanged,\n    fromEvent,\n    map,\n    merge,\n    of,\n    skip,\n    startWith,\n    switchMap,\n    timer\n} from 'rxjs';\n\n@Directive({\n    standalone: true,\n    selector: '[cuiTooltipDescribe]',\n    providers: [cuiAsDriver(CuiTooltipDescribe)]\n})\nexport class CuiTooltipDescribe extends CuiDriver {\n    private readonly doc = inject(DOCUMENT);\n    private readonly el = cuiInjectElement();\n    private readonly zone = inject(NgZone);\n    private readonly id$ = new BehaviorSubject('');\n    private readonly stream$ = this.id$.pipe(\n        distinctUntilChanged(),\n        cuiIfMap(() => fromEvent(this.doc, 'keydown', { capture: true }), cuiIsPresent),\n        switchMap(() =>\n            this.focused\n                ? of(false)\n                : merge(cuiTypedFromEvent(this.doc, 'keyup'), cuiTypedFromEvent(this.element, 'blur')).pipe(\n                      map(() => this.focused)\n                  )\n        ),\n        debounce((visible) => (visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null))),\n        startWith(false),\n        distinctUntilChanged(),\n        skip(1),\n        cuiZoneOptimized()\n    );\n\n    public readonly type = 'hint';\n\n    constructor() {\n        super((subscriber) => this.stream$.subscribe(subscriber));\n    }\n\n    @Input()\n    public set cuiTooltipDescribe(id: string | null | undefined) {\n        this.id$.next(id || '');\n    }\n\n    @cuiPure\n    private get element(): HTMLElement {\n        return this.doc.getElementById(this.id$.value || '') || this.el;\n    }\n\n    private get focused(): boolean {\n        return cuiIsNativeFocused(this.element);\n    }\n}\n","import { Directive, Input } from '@angular/core';\nimport { EMPTY_CLIENT_RECT } from '@cuby-ui/cdk';\nimport { cuiAsRectAccessor, CuiRectAccessor } from '../../classes';\n\n@Directive({\n    standalone: true,\n    selector: '[cuiTooltip][cuiTooltipHost]',\n    providers: [cuiAsRectAccessor(CuiTooltipHost)]\n})\nexport class CuiTooltipHost extends CuiRectAccessor {\n    @Input()\n    public cuiTooltipHost?: HTMLElement;\n\n    public readonly type = 'hint';\n\n    public getClientRect(): DOMRect {\n        return this.cuiTooltipHost?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\n    }\n}\n","import type { OnChanges } from '@angular/core';\nimport { Directive, inject, Input } from '@angular/core';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { CuiTooltipHover } from './tooltip-hover.directive';\n\n@Directive({\n    standalone: true,\n    selector: '[cuiTooltip][cuiTooltipManual]',\n    providers: [cuiAsDriver(CuiTooltipManual)]\n})\nexport class CuiTooltipManual extends CuiDriver implements OnChanges {\n    private readonly hover = inject(CuiTooltipHover);\n    private readonly stream$ = new BehaviorSubject(false);\n\n    @Input()\n    public cuiTooltipManual = false;\n\n    public readonly type = 'hint';\n\n    constructor() {\n        super((subscriber) => this.stream$.subscribe(subscriber));\n        this.hover.enabled = false;\n    }\n\n    public ngOnChanges(): void {\n        this.stream$.next(this.cuiTooltipManual);\n    }\n}\n","import { Directive, inject } from '@angular/core';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\n\n@Directive({\n    standalone: true,\n    selector: '[cuiTooltipOverflow]',\n    hostDirectives: [\n        {\n            directive: CuiTooltipDirective,\n            inputs: ['cuiTooltipAppearance']\n        }\n    ],\n    host: {\n        '(mouseenter)': 'onMouseEnter($event.currentTarget)'\n    }\n})\nexport class CuiTooltipOverflow {\n    private readonly hint = inject(CuiTooltipDirective);\n\n    protected onMouseEnter({ scrollWidth, clientWidth, textContent }: Element): void {\n        this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';\n    }\n}\n","import { CuiTooltipComponent } from './tooltip.component';\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport { CuiTooltipDescribe } from './tooltip-describe.directive';\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\nimport { CuiTooltipHost } from './tooltip-host.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CuiTooltipManual } from './tooltip-manual.directive';\nimport { CuiTooltipOptionsDirective } from './tooltip-options.directive';\nimport { CuiTooltipOverflow } from './tooltip-overflow.directive';\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\nimport { CuiTooltipUnstyled } from './tooltip-unstyled.component';\n\nexport const CuiTooltip = [\n    CuiTooltipComponent,\n    CuiTooltipDirective,\n    CuiTooltipOptionsDirective,\n    CuiTooltipUnstyled,\n    CuiTooltipDriver,\n    CuiTooltipPosition,\n    CuiTooltipHover,\n    CuiTooltipOverflow,\n    CuiTooltipDescribe,\n    CuiTooltipHost,\n    CuiTooltipManual,\n    CuiTooltipPointer\n] as const;\n","import { NgForOf } from '@angular/common';\nimport type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CuiActiveZone } from '@cuby-ui/cdk';\nimport { cuiParentAnimation } from '../../animations';\nimport type { CuiPortalItem } from '../../types';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { CuiTooltipService } from './tooltip.service';\n\n@Component({\n    standalone: true,\n    selector: 'cui-tooltips',\n    imports: [NgForOf, PolymorpheusTemplate, CuiActiveZone, PolymorpheusOutlet],\n    templateUrl: './tooltips.template.html',\n    styleUrls: ['./tooltips.style.scss'],\n    // So that we do not force OnPush on custom hints\n    // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n    changeDetection: ChangeDetectionStrategy.Default,\n    animations: [cuiParentAnimation],\n    host: {\n        'aria-live': 'polite'\n    }\n})\nexport class CuiTooltips implements OnInit {\n    private readonly hints$ = inject(CuiTooltipService);\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cdr = inject(ChangeDetectorRef);\n\n    protected hints: readonly CuiPortalItem[] = [];\n\n    public ngOnInit(): void {\n        // Due to this view being parallel to app content, `markForCheck` from `async` pipe\n        // can happen after view was checked, so calling `detectChanges` instead\n        this.hints$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hints) => {\n            this.hints = hints;\n            this.cdr.detectChanges();\n        });\n    }\n}\n","<div\n    *ngFor=\"let hint of hints\"\n    role=\"tooltip\"\n    @cuiParentAnimation\n    [cuiActiveZoneParent]=\"hint.activeZone || null\"\n>\n    <ng-container *polymorpheusOutlet=\"hint.component; context: { $implicit: hint }\" />\n</div>\n","export const FADE = [{ opacity: 0.06 }, { opacity: 1 }];\n","export const MAX_PLACEHOLDER_LENGTH_LIMITER = 11;\n","export const MIN_PLACEHOLDER_LENGTH_LIMITER = 5;\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    Directive,\n    inject,\n    Input,\n    computed,\n    signal,\n    ViewEncapsulation\n} from '@angular/core';\nimport { cuiInjectElement, cuiWithStyles, CHAR_NO_BREAK_SPACE } from '@cuby-ui/cdk';\nimport { CUI_ANIMATIONS_SPEED } from '../../tokens';\nimport { cuiGetDuration } from '../../utils';\nimport { FADE, MAX_PLACEHOLDER_LENGTH_LIMITER, MIN_PLACEHOLDER_LENGTH_LIMITER } from './constants';\n\n@Component({\n    standalone: true,\n    template: '',\n    styleUrls: ['./skeleton.style.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'cui-skeleton-styles'\n    }\n})\nclass CuiSkeletonStyles {}\n\n@Directive({\n    standalone: true,\n    selector: '[cuiSkeleton]',\n    host: {\n        cuiSkeleton: '',\n        '[class._skeleton]': 'skeleton()',\n        '[attr.data-cui-skeleton]': 'placeholder()'\n    }\n})\nexport class CuiSkeleton {\n    private animation?: Animation;\n    private readonly el = cuiInjectElement();\n    private readonly duration = cuiGetDuration(inject(CUI_ANIMATIONS_SPEED)) * 2;\n\n    protected readonly nothing = cuiWithStyles(CuiSkeletonStyles);\n\n    private readonly _skeleton = signal<boolean | number | string>(false);\n\n    protected readonly placeholder = computed(() => {\n        const value = this._skeleton();\n\n        switch (typeof value) {\n            case 'number':\n                return Array.from({ length: value })\n                    .map(() => CHAR_NO_BREAK_SPACE.repeat(this.getLength()))\n                    .join(' ');\n            case 'string':\n                return value;\n            default:\n                return null;\n        }\n    });\n    protected readonly skeleton = computed(() => !!this._skeleton());\n\n    @Input()\n    set cuiSkeleton(value: boolean | number | string) {\n        this._skeleton.set(value);\n\n        this.animation?.cancel();\n        if (!value) {\n            this.animation = this.el.animate?.(FADE, this.duration);\n        }\n    }\n\n    private getLength(): number {\n        return Math.floor(Math.random() * MAX_PLACEHOLDER_LENGTH_LIMITER) + MIN_PLACEHOLDER_LENGTH_LIMITER;\n    }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { ErrorStatus } from './error-status';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTooltipDirective } from '../../directives';\n\n@Component({\n    selector: 'cui-alert-hint',\n    standalone: true,\n    imports: [CuiSvgModule, CuiTooltipDirective],\n    templateUrl: './alert-hint.component.html',\n    styleUrl: './alert-hint.component.scss'\n})\nexport class AlertHintComponent {\n    private readonly DEFAULT_TOOLTIP_TEXT = 'In development';\n\n    protected readonly IconColor: Record<ErrorStatus, string> = {\n        warning: 'var(--cui-warning)',\n        error: 'var(--cui-danger)'\n    };\n\n    protected readonly iconColor = computed(() => this.IconColor[this.status()]);\n\n    public readonly status = input<ErrorStatus>('error');\n    public readonly tooltipText = input(this.DEFAULT_TOOLTIP_TEXT, {\n        transform: (value: string | string[]) => {\n            return typeof value === 'string' ? value : value.join('<br />');\n        }\n    });\n}\n","<cui-svg\n    [cuiTooltip]=\"tooltipText()\"\n    icon=\"cuiIconAlertTriangle\"\n    [color]=\"iconColor()\"\n    class=\"icon\"\n/>\n","import { cuiCreateToken, CuiNullable } from '@cuby-ui/cdk';\n\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport type CuiBadgeVisualStyle = 'light' | 'fill' | 'outline' | 'emphasis' | 'soft';\n\nexport interface CuiBadgeOptions {\n    readonly color: CuiBadgeColor;\n    readonly size: CuiSizeSm | CuiSizeMd;\n    readonly variant?: CuiNullable<CuiBadgeVisualStyle>;\n}\n\nexport type CuiBadgeColor = CuiBadgeColorSolid | CuiBadgeColorLight | CuiDeprecationColors | CuiBadgeSemanticColor;\n\nexport type CuiBadgeSemanticColor = 'blue' | 'light-green' | 'lavender' | 'magenta' | 'cyan' | 'purple' | 'terra';\n\nexport type CuiBadgeColorSolid =\n    | 'violet-solid'\n    | 'yellow-solid'\n    | 'orange-solid'\n    | 'lavender-solid'\n    | 'magenta-solid'\n    | 'green-solid'\n    | 'black-solid'\n    | 'red-solid'\n    | 'blue-solid'\n    | 'success-solid';\n\nexport type CuiBadgeColorLight =\n    | 'gray'\n    | 'dark-gray'\n    | 'blue-light'\n    | 'yellow-light'\n    | 'green-light'\n    | 'red-light'\n    | 'lavender-light'\n    | 'magenta-light'\n    | 'violet-light'\n    | 'orange-light';\n\nexport type CuiDeprecationColors = 'light-blue' | 'yellow' | 'green' | 'red' | 'violet' | 'orange';\n\nexport const CUI_BADGE_DEFAULT_OPTIONS: CuiBadgeOptions = {\n    color: 'light-blue',\n    size: 'sm',\n    variant: 'light'\n};\n\nexport const CUI_BADGE_OPTIONS = cuiCreateToken(CUI_BADGE_DEFAULT_OPTIONS);\n","import type { CuiNullable } from '@cuby-ui/cdk';\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\n\nimport type { CuiBadgeOptions, CuiBadgeVisualStyle } from './badge.options';\nimport { CUI_BADGE_OPTIONS } from './badge.options';\n\n@Component({\n    selector: 'cui-badge',\n    templateUrl: './badge.template.html',\n    styleUrls: ['./badge.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBadgeComponent implements CuiBadgeOptions {\n    private readonly options = inject(CUI_BADGE_OPTIONS);\n\n    @Input()\n    @HostBinding('attr.data-color')\n    public color = this.options.color;\n\n    @Input()\n    @HostBinding('attr.data-size')\n    public size = this.options.size;\n\n    @Input()\n    @HostBinding('attr.data-variant')\n    public variant: CuiNullable<CuiBadgeVisualStyle> = this.options.variant;\n}\n","<span class=\"c-badge__icon\"><ng-content select=\"[cuiBadgeIcon]\" /></span>\n<span class=\"c-badge__body\">\n    <ng-content />\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiBadgeComponent } from './badge.component';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [CuiBadgeComponent],\n    exports: [CuiBadgeComponent]\n})\nexport class CuiBadgeModule {}\n","import type { CuiStatus } from '../../types';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nexport type CuiBannerIconOptions = {\n    [k in CuiStatus]: {\n        icon: CuiIcon;\n        color: string;\n    };\n};\n\nexport interface CuiBannerOptions {\n    readonly status: CuiStatus;\n}\n\nexport const CUI_BANNER_DEFAULT_OPTIONS: CuiBannerOptions = {\n    status: 'info'\n};\n\nexport const CUI_BANNER_OPTIONS = cuiCreateToken(CUI_BANNER_DEFAULT_OPTIONS);\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\n\nimport type { CuiBannerIconOptions, CuiBannerOptions } from './banner.options';\nimport { CUI_BANNER_OPTIONS } from './banner.options';\nimport type { CuiTheme } from '../../services';\nimport { CuiThemeService } from '../../services';\nimport { map } from 'rxjs';\n\n@Component({\n    selector: 'cui-banner',\n    templateUrl: './banner.template.html',\n    styleUrls: ['./banner.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBannerComponent implements CuiBannerOptions {\n    private readonly options = inject(CUI_BANNER_OPTIONS);\n    protected readonly theme$ = inject(CuiThemeService);\n\n    protected readonly ICON_OPTIONS: CuiBannerIconOptions = {\n        info: {\n            icon: 'cuiIconInfo',\n            color: 'var(--c-info-icon-color)'\n        },\n        success: {\n            icon: 'cuiIconCheckCircle',\n            color: 'var(--cui-success)'\n        },\n        alert: {\n            icon: 'cuiIconAlertTriangle',\n            color: 'var(--c-alert-icon-color)'\n        },\n        error: {\n            icon: 'cuiIconAlertCircle',\n            color: 'var(--cui-danger)'\n        }\n    };\n    protected readonly THEME_CLOSE_BUTTON_ICON_COLORS: Record<CuiTheme, string> = {\n        light: 'var(--cui-gray-500)',\n        dark: 'var(--cui-gray-0)'\n    };\n\n    @Input()\n    @HostBinding('attr.data-status')\n    public status = this.options.status;\n\n    @Input()\n    public isCloseable = true;\n\n    @Input()\n    public label?: string;\n\n    @Input()\n    public actionButtonText?: string;\n\n    @Output()\n    public actionButtonClicked = new EventEmitter<void>();\n\n    @Output()\n    public closed = new EventEmitter<void>();\n\n    protected onAction(): void {\n        this.actionButtonClicked.emit();\n    }\n\n    protected onClose(): void {\n        this.closed.emit();\n    }\n}\n","<cui-svg\n    *cuiLet=\"ICON_OPTIONS[status] as iconOption\"\n    [icon]=\"iconOption.icon\"\n    [color]=\"iconOption.color\"\n    class=\"c-icon\"\n></cui-svg>\n<div class=\"c-wrapper\">\n    <h2\n        *ngIf=\"label\"\n        class=\"c-heading\"\n    >\n        {{ label }}\n    </h2>\n    <ng-content></ng-content>\n    <button\n        cuiButton\n        *ngIf=\"actionButtonText\"\n        appearance=\"link\"\n        class=\"c-action\"\n        (click)=\"onAction()\"\n    >\n        {{ actionButtonText }}\n    </button>\n</div>\n<button\n    *ngIf=\"isCloseable\"\n    class=\"c-button\"\n    (click)=\"onClose()\"\n>\n    @if (theme$ | async; as theme) {\n        <cui-svg\n            icon=\"cuiIconX\"\n            [color]=\"THEME_CLOSE_BUTTON_ICON_COLORS[theme]\"\n        />\n    }\n</button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiBannerComponent } from './banner.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiButtonModule } from '../button';\n\n@NgModule({\n    imports: [CommonModule, CuiLetDirective, CuiSvgModule, CuiButtonModule],\n    declarations: [CuiBannerComponent],\n    exports: [CuiBannerComponent]\n})\nexport class CuiBannerModule {}\n","import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\n\nimport { CuiItemDirective } from '@cuby-ui/cdk';\n\n@Component({\n    selector: 'cui-breadcrumbs',\n    templateUrl: './breadcrumbs.template.html',\n    styleUrls: ['./breadcrumbs.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBreadcrumbsComponent {\n    @ContentChildren(CuiItemDirective, { read: TemplateRef })\n    protected readonly breadcrumbs!: QueryList<TemplateRef<unknown>>;\n}\n","<ng-container *ngIf=\"breadcrumbs.changes | async\" />\n<ng-container *ngFor=\"let breadcrumb of breadcrumbs; let isLast = last\">\n    <ng-container *ngTemplateOutlet=\"breadcrumb\" />\n    <cui-svg\n        *ngIf=\"!isLast\"\n        icon=\"cuiIconSlashDivider\"\n        color=\"var(--cui-base-500)\"\n    />\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n    selector: '[cuiBreadcrumb]',\n    templateUrl: './breadcrumb.template.html',\n    styleUrls: ['./breadcrumb.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBreadcrumbComponent {\n    @Input()\n    public isLast = false;\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiBreadcrumbsComponent } from './breadcrumbs.component';\nimport { CuiBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n    imports: [CommonModule, CuiSvgModule],\n    declarations: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent],\n    exports: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent]\n})\nexport class CuiBreadcrumbsModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'cui-button-group',\n    templateUrl: './button-group.template.html',\n    styleUrls: ['./button-group.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiButtonGroupComponent {}\n","<ng-content select=\"button[cuiButton], a[cuiButton]\"></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { CuiButtonGroupComponent } from './button-group.component';\n\n@NgModule({\n    declarations: [CuiButtonGroupComponent],\n    exports: [CuiButtonGroupComponent]\n})\nexport class CuiButtonGroupModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'input[type=\"checkbox\"][cuiCheckbox]',\n    template: '',\n    styleUrls: ['./checkbox.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckboxComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n    declarations: [CuiCheckboxComponent],\n    exports: [CuiCheckboxComponent]\n})\nexport class CuiCheckboxModule {}\n","import { ChangeDetectionStrategy, Component, computed, model } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CuiButtonModule } from '../button';\n\n@Component({\n    selector: 'cui-collapsible-panel',\n    standalone: true,\n    imports: [CuiButtonModule],\n    templateUrl: 'collapsible-panel.component.html',\n    styleUrl: 'collapsible-panel.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class._collapsed]': 'isCollapsed()'\n    }\n})\nexport class CuiCollapsiblePanelComponent {\n    protected readonly toggleIcon = computed<CuiIcon>(() =>\n        this.isCollapsed() ? 'cuiIconChevronsRightSm' : 'cuiIconChevronsLeftSm'\n    );\n\n    public readonly isCollapsed = model(false);\n\n    protected onToggleCollapsed(): void {\n        this.isCollapsed.update((isCollapsed) => !isCollapsed);\n    }\n}\n","<div class=\"head\">\n    <div [hidden]=\"isCollapsed()\">\n        <ng-content select=\"[cuiCollapsiblePanelTitle]\" />\n    </div>\n\n    <button\n        type=\"button\"\n        cuiButton\n        appearance=\"ghost\"\n        size=\"xs\"\n        [icon]=\"toggleIcon()\"\n        (click)=\"onToggleCollapsed()\"\n    ></button>\n</div>\n\n<div\n    [hidden]=\"isCollapsed()\"\n    class=\"body\"\n>\n    <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiTooltipDirective } from '../../directives';\nimport { CuiSvgModule } from '../svg';\n\n@Component({\n    selector: 'header[cuiContentHeader]',\n    imports: [CuiSvgModule, CuiTooltipDirective],\n    templateUrl: './content-header.component.html',\n    styleUrl: './content-header.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ContentHeaderComponent {\n    public readonly heading = input.required<string>();\n    public readonly subheading = input<string>();\n    public readonly tooltip = input<string>();\n}\n","<div class=\"wrapper\">\n    <span class=\"heading\">\n        {{ heading() }}\n\n        @if (tooltip(); as tooltip) {\n            <cui-svg\n                icon=\"cuiIconQuestionCircleBold\"\n                [cuiTooltip]=\"tooltip\"\n            />\n        }\n    </span>\n\n    @if (subheading(); as subheading) {\n        <h2 class=\"subheading\">{{ subheading }}</h2>\n    }\n</div>\n\n<ng-content />\n","import { ChangeDetectionStrategy, Component, computed, effect, input, output, signal } from '@angular/core';\n\nimport { CuiButtonModule } from '../button';\nimport { CuiSvgModule } from '../svg';\n\nimport type { CuiDateRangeCalendarMode } from './date-range-calendar.interfaces';\n\n@Component({\n    selector: 'cui-date-range-calendar',\n    standalone: true,\n    imports: [CuiButtonModule, CuiSvgModule],\n    templateUrl: './date-range-calendar.template.html',\n    styleUrls: ['./date-range-calendar.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDateRangeCalendarComponent {\n    /** Selection mode: 'range' for date range, 'single' for single date */\n    public readonly mode = input<CuiDateRangeCalendarMode>('range');\n\n    /** Start date of the range */\n    public readonly startDate = input<Date | null>(null);\n\n    /** End date of the range */\n    public readonly endDate = input<Date | null>(null);\n\n    /** Selected date (for single mode) */\n    public readonly selectedDate = input<Date | null>(null);\n\n    /** Emitted when a date range is applied */\n    public readonly rangeSelected = output<{ start: Date; end: Date }>();\n\n    /** Emitted when a single date is applied */\n    public readonly dateSelected = output<Date>();\n\n    /** Emitted when the user cancels */\n    public readonly cancelled = output<void>();\n\n    /** Currently displayed month */\n    protected readonly currentMonth = signal(new Date());\n\n    /** Temporary start date (during range selection) */\n    protected readonly tmpStartDate = signal<Date | null>(null);\n\n    /** Temporary end date (during range selection) */\n    protected readonly tmpEndDate = signal<Date | null>(null);\n\n    /** Temporary selected date (for single mode) */\n    protected readonly tmpSelectedDate = signal<Date | null>(null);\n\n    /** Week day labels */\n    protected readonly weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\n    /** Current month display name */\n    protected readonly currentMonthName = computed(() => {\n        const date = this.currentMonth();\n\n        return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n    });\n\n    /** Calendar days grid */\n    protected readonly calendarDays = computed(() => {\n        const date = this.currentMonth();\n        const year = date.getFullYear();\n        const month = date.getMonth();\n\n        const firstDay = new Date(year, month, 1);\n        const lastDay = new Date(year, month + 1, 0);\n\n        // Get the day of the week for the first day (0 = Sunday, convert so Monday = 0)\n        let startDayOfWeek = firstDay.getDay() - 1;\n\n        if (startDayOfWeek < 0) {\n            startDayOfWeek = 6;\n        }\n\n        const days: { date: Date; isCurrentMonth: boolean }[] = [];\n\n        // Add previous month's trailing days\n        const prevMonthLastDay = new Date(year, month, 0).getDate();\n\n        for (let i = startDayOfWeek - 1; i >= 0; i--) {\n            days.push({\n                date: new Date(year, month - 1, prevMonthLastDay - i),\n                isCurrentMonth: false\n            });\n        }\n\n        // Add current month's days\n        for (let i = 1; i <= lastDay.getDate(); i++) {\n            days.push({\n                date: new Date(year, month, i),\n                isCurrentMonth: true\n            });\n        }\n\n        // Add next month's leading days to fill the grid (6 rows x 7 days = 42)\n        const remainingDays = 42 - days.length;\n\n        for (let i = 1; i <= remainingDays; i++) {\n            days.push({\n                date: new Date(year, month + 1, i),\n                isCurrentMonth: false\n            });\n        }\n\n        return days;\n    });\n\n    constructor() {\n        // Initialize temporary values from inputs via effect (signal inputs are not resolved in constructor)\n        effect(() => {\n            if (this.mode() === 'range') {\n                const start = this.startDate();\n                const end = this.endDate();\n\n                if (start) {\n                    this.tmpStartDate.set(start);\n                    this.currentMonth.set(new Date(start.getFullYear(), start.getMonth(), 1));\n                }\n\n                if (end) {\n                    this.tmpEndDate.set(end);\n                }\n            } else {\n                const selected = this.selectedDate();\n\n                if (selected) {\n                    this.tmpSelectedDate.set(selected);\n                    this.currentMonth.set(new Date(selected.getFullYear(), selected.getMonth(), 1));\n                }\n            }\n        });\n    }\n\n    protected goToPrevMonth(): void {\n        const current = this.currentMonth();\n        this.currentMonth.set(new Date(current.getFullYear(), current.getMonth() - 1, 1));\n    }\n\n    protected goToNextMonth(): void {\n        const current = this.currentMonth();\n        this.currentMonth.set(new Date(current.getFullYear(), current.getMonth() + 1, 1));\n    }\n\n    protected selectDate(date: Date): void {\n        if (this.mode() !== 'range') {\n            // Single date mode - just select the date\n            this.tmpSelectedDate.set(date);\n\n            return;\n        }\n\n        // Range mode\n        const start = this.tmpStartDate();\n        const end = this.tmpEndDate();\n\n        if (!start || (start && end)) {\n            // Start a new selection\n            this.tmpStartDate.set(date);\n            this.tmpEndDate.set(null);\n        } else {\n            // Complete the selection\n            if (date < start) {\n                // If selected date is before start, swap them\n                this.tmpEndDate.set(start);\n                this.tmpStartDate.set(date);\n            } else {\n                this.tmpEndDate.set(date);\n            }\n        }\n    }\n\n    protected isSelected(date: Date): boolean {\n        if (this.mode() !== 'range') {\n            // Single date mode\n            const selected = this.tmpSelectedDate();\n\n            return selected !== null && this.isSameDay(date, selected);\n        }\n\n        // Range mode\n        const start = this.tmpStartDate();\n        const end = this.tmpEndDate();\n\n        if (start && this.isSameDay(date, start)) {\n            return true;\n        }\n\n        if (end && this.isSameDay(date, end)) {\n            return true;\n        }\n\n        return false;\n    }\n\n    protected isInRange(date: Date): boolean {\n        const start = this.tmpStartDate();\n        const end = this.tmpEndDate();\n\n        if (!start || !end) {\n            return false;\n        }\n\n        return date > start && date < end;\n    }\n\n    protected isRangeStart(date: Date): boolean {\n        const start = this.tmpStartDate();\n\n        return start !== null && this.isSameDay(date, start);\n    }\n\n    protected isRangeEnd(date: Date): boolean {\n        const end = this.tmpEndDate();\n\n        return end !== null && this.isSameDay(date, end);\n    }\n\n    protected isToday(date: Date): boolean {\n        return this.isSameDay(date, new Date());\n    }\n\n    protected apply(): void {\n        if (this.mode() !== 'range') {\n            // Single date mode\n            const selected = this.tmpSelectedDate();\n\n            if (selected) {\n                this.dateSelected.emit(selected);\n            }\n        } else {\n            // Range mode\n            const start = this.tmpStartDate();\n            const end = this.tmpEndDate();\n\n            if (start && end) {\n                this.rangeSelected.emit({ start, end });\n            }\n        }\n    }\n\n    protected cancel(): void {\n        this.cancelled.emit();\n    }\n\n    protected hasSelection(): boolean {\n        if (this.mode() !== 'range') {\n            return this.tmpSelectedDate() !== null;\n        }\n\n        return this.tmpStartDate() !== null;\n    }\n\n    private isSameDay(date1: Date, date2: Date): boolean {\n        return (\n            date1.getFullYear() === date2.getFullYear() &&\n            date1.getMonth() === date2.getMonth() &&\n            date1.getDate() === date2.getDate()\n        );\n    }\n}\n","<div class=\"cui-calendar\">\n    <div class=\"cui-calendar__header\">\n        <button\n            type=\"button\"\n            class=\"cui-calendar__nav-btn\"\n            (click)=\"goToPrevMonth()\"\n        >\n            <cui-svg icon=\"cuiIconChevronLeft\" />\n        </button>\n        <span class=\"cui-calendar__month-name\">{{ currentMonthName() }}</span>\n        <button\n            type=\"button\"\n            class=\"cui-calendar__nav-btn\"\n            (click)=\"goToNextMonth()\"\n        >\n            <cui-svg icon=\"cuiIconChevronRight\" />\n        </button>\n    </div>\n\n    <div class=\"cui-calendar__weekdays\">\n        @for (day of weekDays; track day) {\n            <div class=\"cui-calendar__weekday\">{{ day }}</div>\n        }\n    </div>\n\n    <div class=\"cui-calendar__days\">\n        @for (day of calendarDays(); track day.date.getTime()) {\n            <button\n                type=\"button\"\n                class=\"cui-calendar__day\"\n                [class.cui-calendar__day--other-month]=\"!day.isCurrentMonth\"\n                [class.cui-calendar__day--selected]=\"isSelected(day.date)\"\n                [class.cui-calendar__day--in-range]=\"isInRange(day.date)\"\n                [class.cui-calendar__day--range-start]=\"isRangeStart(day.date)\"\n                [class.cui-calendar__day--range-end]=\"isRangeEnd(day.date)\"\n                [class.cui-calendar__day--today]=\"isToday(day.date)\"\n                (click)=\"selectDate(day.date)\"\n            >\n                {{ day.date.getDate() }}\n            </button>\n        }\n    </div>\n\n    <div class=\"cui-calendar__footer\">\n        <button\n            type=\"button\"\n            cuiButton\n            appearance=\"secondary\"\n            (click)=\"cancel()\"\n        >\n            Cancel\n        </button>\n        <button\n            type=\"button\"\n            cuiButton\n            appearance=\"action\"\n            [disabled]=\"!hasSelection()\"\n            (click)=\"apply()\"\n        >\n            Apply\n        </button>\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CuiDateRangeCalendarComponent } from './date-range-calendar.component';\n\n@NgModule({\n    imports: [CuiDateRangeCalendarComponent],\n    exports: [CuiDateRangeCalendarComponent]\n})\nexport class CuiDateRangeCalendarModule {}","export const CUI_ROOT_SELECTOR = 'cui-root';\n","import { InjectionToken } from '@angular/core';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\nexport const CUI_DIALOGS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([]));\n\nexport const CUI_DIALOG_DEFAULT_OPTIONS: CuiDialogOptions = {\n    size: 'auto',\n    data: undefined,\n    dismissible: true\n};\n\nexport const CUI_DIALOG_OPTIONS = cuiCreateToken(CUI_DIALOG_DEFAULT_OPTIONS);\n\nexport const CUI_DIALOG_CONTEXT = new InjectionToken<CuiPopover<CuiDialogOptions>>('');\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport type { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs';\n\nimport { CUI_DIALOG_CONTEXT, CUI_DIALOGS } from './dialog.tokens';\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\n@Component({\n    selector: 'cui-dialogs',\n    templateUrl: './dialogs.template.html',\n    styleUrls: ['./dialogs.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CuiDestroyService]\n})\nexport class CuiDialogsComponent implements OnInit {\n    private readonly document = inject(DOCUMENT);\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n    protected readonly dialogs$: Observable<ReadonlyArray<CuiPopover<CuiDialogOptions>>> = inject(CUI_DIALOGS);\n    protected dialogInjectorCache = new Map<string, Injector>();\n    protected dialogInjectors!: ReadonlyArray<Injector>;\n\n    public ngOnInit(): void {\n        this.initDialogsSubscription();\n    }\n\n    protected trackByFn(_: number, dialog: CuiPopover<CuiDialogOptions>): string {\n        return dialog.id;\n    }\n\n    protected initDialogsSubscription(): void {\n        this.dialogs$.pipe(takeUntil(this.destroy$)).subscribe((dialogs) => {\n            this.document.body.style.overflow = dialogs.length ? 'hidden' : '';\n            this.dialogInjectors = dialogs.map((dialog) => {\n                if (!this.dialogInjectorCache.has(dialog.id)) {\n                    this.dialogInjectorCache.set(\n                        dialog.id,\n                        Injector.create({\n                            providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\n                            parent: dialog.injector\n                        })\n                    );\n                }\n\n                return this.dialogInjectorCache.get(dialog.id)!;\n            });\n\n            this.dialogInjectorCache.forEach((_, dialogId) => {\n                if (dialogs.find((dialog) => dialog.id === dialogId)) {\n                    return;\n                }\n\n                this.dialogInjectorCache.delete(dialogId);\n            });\n        });\n    }\n}\n","<ng-container *cuiLet=\"dialogs$ | async as dialogs\">\n    <ng-container *ngFor=\"let dialog of dialogs; let i = index; trackBy: trackByFn\">\n        <ng-container *ngComponentOutlet=\"dialog.component; injector: dialogInjectors[i]\"></ng-container>\n    </ng-container>\n    <div\n        *ngIf=\"dialogs!.length\"\n        class=\"c-overlay\"\n    ></div>\n</ng-container>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { CuiThemeService } from '../../services';\nimport { CUI_ROOT_SELECTOR } from './root.options';\n\n@Component({\n    selector: CUI_ROOT_SELECTOR,\n    templateUrl: './root.template.html',\n    styleUrls: ['./root.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRootComponent implements OnInit {\n    private readonly document = inject(DOCUMENT);\n    private readonly theme$ = inject(CuiThemeService);\n\n    public ngOnInit(): void {\n        this.initThemeSubscription();\n    }\n\n    private initThemeSubscription(): void {\n        this.theme$.subscribe((theme) => this.document.documentElement.setAttribute('cuiTheme', theme));\n    }\n}\n","<div class=\"c-content\">\n    <ng-content />\n</div>\n<cui-dialogs />\n<cui-alerts />\n<cui-tooltips />\n","import type { OnInit } from '@angular/core';\nimport { HostBinding, HostListener, Type } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ElementRef } from '@angular/core';\nimport type { CuiValueOf } from '@cuby-ui/cdk';\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\n\nimport type { CuiDialogSize } from './dialog.interfaces';\nimport { CUI_DIALOG_CONTEXT } from './dialog.tokens';\n\n// TODO: сделать структурную директиву\nconst ContentType = {\n    String: 'string',\n    Template: 'template',\n    Component: 'component'\n} as const;\n\ntype IContentType = CuiValueOf<typeof ContentType>;\n\n@Component({\n    selector: 'cui-dialog',\n    templateUrl: './dialog.template.html',\n    styleUrls: ['./dialog.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [CuiFocusTrapDirective]\n})\nexport class CuiDialogComponent implements OnInit {\n    protected readonly element = inject(ElementRef).nativeElement as HTMLElement;\n    protected readonly context = inject(CUI_DIALOG_CONTEXT);\n\n    protected readonly LAST_OF_TYPE_SELECTOR = ':last-of-type';\n\n    protected readonly ContentType = ContentType;\n\n    protected contentType: IContentType = ContentType.Component;\n\n    @HostBinding('attr.data-size')\n    protected get size(): CuiDialogSize {\n        return this.context.size;\n    }\n\n    public ngOnInit(): void {\n        this.initContentType();\n    }\n\n    protected get contentTemplateRef(): TemplateRef<unknown> {\n        return this.context.content as TemplateRef<unknown>;\n    }\n\n    protected get componentType(): Type<unknown> {\n        return this.context.content as Type<unknown>;\n    }\n\n    @HostListener('document:keydown.escape', ['$event'])\n    protected onEscape(): void {\n        if (!this.context.dismissible) {\n            return;\n        }\n\n        if (!this.element.matches(this.LAST_OF_TYPE_SELECTOR)) {\n            return;\n        }\n\n        this.context.completeWith();\n    }\n\n    private initContentType(): void {\n        const content = this.context.content;\n\n        switch (true) {\n            case typeof content === 'string':\n                this.contentType = ContentType.String;\n\n                return;\n\n            case content instanceof TemplateRef:\n                this.contentType = ContentType.Template;\n\n                return;\n        }\n    }\n}\n","<ng-container [ngSwitch]=\"contentType\">\n    <ng-container *ngSwitchCase=\"ContentType.String\">\n        {{ context.content }}\n    </ng-container>\n    <ng-container *ngSwitchCase=\"ContentType.Template\">\n        <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: context\"></ng-container>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"ContentType.Component\">\n        <div class=\"c-component-container\">\n            <ng-container *ngComponentOutlet=\"componentType\"></ng-container>\n        </div>\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'cui-dialog-actions',\n    templateUrl: './dialog-actions.template.html',\n    styleUrls: ['./dialog-actions.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDialogActionsComponent {}\n","<div class=\"c-divider\"></div>\n<div class=\"c-content\">\n    <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { PolymorpheusContext } from '@taiga-ui/polymorpheus/classes/context';\n\n@Component({\n    selector: 'header[cuiDialogHeader][heading]',\n    templateUrl: './dialog-header.template.html',\n    styleUrls: ['./dialog-header.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDialogHeaderComponent<T> {\n    @Input()\n    public heading!: PolymorpheusContent;\n\n    @Input()\n    public headingContext?: T;\n\n    @Input()\n    public subheading?: string;\n\n    @Output()\n    public readonly closed = new EventEmitter<MouseEvent>();\n\n    protected onClose(event: MouseEvent): void {\n        this.closed.emit(event);\n    }\n}\n","<div class=\"c-heading\">\n    <ng-container *polymorpheusOutlet=\"heading as heading; context: headingContext\">{{ heading }}</ng-container>\n</div>\n<button\n    cuiButton\n    type=\"button\"\n    appearance=\"ghost\"\n    icon=\"cuiIconClearSm\"\n    class=\"c-button\"\n    (click)=\"onClose($event)\"\n></button>\n<span *ngIf=\"subheading\">{{ subheading }}</span>\n<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule } from '../button';\nimport { CuiDialogComponent } from './dialog.component';\nimport { CuiDialogsComponent } from './dialogs.component';\nimport { CuiDialogActionsComponent } from './dialog-actions/dialog-actions.component';\nimport { CuiDialogHeaderComponent } from './dialog-header/dialog-header.component';\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\n\n@NgModule({\n    imports: [CommonModule, PolymorpheusOutlet, CuiLetDirective, CuiButtonModule],\n    declarations: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent],\n    exports: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent]\n})\nexport class CuiDialogModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { CuiPopoverService } from '@cuby-ui/cdk';\n\nimport { CUI_DIALOG_OPTIONS, CUI_DIALOGS } from './dialog.tokens';\nimport { CuiDialogComponent } from './dialog.component';\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\n@Injectable({\n    providedIn: 'root',\n    useFactory: () => new CuiDialogService(CUI_DIALOGS, CuiDialogComponent, inject(CUI_DIALOG_OPTIONS))\n})\nexport class CuiDialogService extends CuiPopoverService<CuiDialogOptions> {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiRootComponent } from './root.component';\nimport { CuiDialogModule } from '../dialog';\nimport { CuiAlertModule } from '../alert';\nimport { CuiTooltips } from '../../directives/tooltip';\n\n@NgModule({\n    imports: [CommonModule, CuiDialogModule, CuiAlertModule, CuiTooltips],\n    declarations: [CuiRootComponent],\n    exports: [CuiRootComponent]\n})\nexport class CuiRootModule {}\n","import type { OnInit, AfterViewInit, TemplateRef, OnDestroy } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    HostListener,\n    inject,\n    Input,\n    ViewContainerRef,\n    ViewChild\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n    CuiDestroyService,\n    CuiClickOutsideDirective,\n    CuiTargetDirective,\n    CUI_WINDOW,\n    cuiGetClosestFocusable\n} from '@cuby-ui/cdk';\nimport { fromEvent, take, takeUntil } from 'rxjs';\n\nimport type { CuiContextMenuItem } from '../../interfaces';\nimport { CUI_ROOT_SELECTOR } from '../root';\n\n@Component({\n    selector: 'cui-context-menu[items][target]',\n    templateUrl: './context-menu.component.html',\n    styleUrls: ['./context-menu.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CuiDestroyService],\n    hostDirectives: [\n        CuiClickOutsideDirective,\n        {\n            directive: CuiTargetDirective,\n            inputs: ['ccTarget: target']\n        }\n    ]\n})\nexport class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {\n    private readonly viewContainerRef = inject(ViewContainerRef);\n    private readonly document = inject(DOCUMENT);\n    private readonly documentElement = this.document.documentElement;\n    private readonly window = inject(CUI_WINDOW);\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n    private readonly cuiTargetDirective = inject(CuiTargetDirective, { self: true });\n\n    protected readonly EXTRA_OFFSET_LEFT = 0;\n    protected readonly EXTRA_OFFSET_TOP = 0;\n\n    protected isVisible = false;\n    protected node?: HTMLDivElement;\n\n    @Input()\n    public items!: CuiContextMenuItem[];\n\n    @Input()\n    public target!: HTMLElement;\n\n    @Input()\n    public width!: string;\n\n    @Input()\n    public withPaddings = true;\n\n    @ViewChild('list')\n    protected readonly list!: TemplateRef<any>;\n\n    @ViewChild('backdrop')\n    protected readonly backdrop!: TemplateRef<any>;\n\n    public ngOnInit(): void {\n        this.initClickOutsideSubscription();\n    }\n\n    public ngOnDestroy(): void {\n        this.clearViewContainerRef();\n    }\n\n    public ngAfterViewInit(): void {\n        this.initTargetElementListener();\n    }\n\n    protected onSelect(item: CuiContextMenuItem): void {\n        this.close();\n\n        item.command?.();\n    }\n\n    @HostListener('window:resize')\n    protected onClose(): void {\n        this.close();\n    }\n\n    @HostListener('click', ['$event'])\n    protected onStopClickPropagation(event: MouseEvent): void {\n        event.stopPropagation();\n    }\n\n    protected trackByFn(_: number, item: CuiContextMenuItem): string {\n        return item.label;\n    }\n\n    private initClickOutsideSubscription(): void {\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe((target) => {\n            if (this.target.contains(target)) {\n                return;\n            }\n\n            this.close();\n        });\n    }\n\n    private initTargetElementListener(): void {\n        this.cuiTargetDirective.clicked.pipe(takeUntil(this.destroy$)).subscribe(this.targetEventListener.bind(this));\n    }\n\n    private initHidingSubscription(): void {\n        this.initHidingFromWindowEvent('scroll');\n        this.initHidingFromWindowEvent('resize');\n    }\n\n    private initHidingFromWindowEvent(eventName: keyof WindowEventMap): void {\n        fromEvent(this.window, eventName)\n            .pipe(take(1))\n            .subscribe(() => this.close());\n    }\n\n    private targetEventListener(event: MouseEvent): void {\n        event.stopPropagation();\n        // TODO: нужен для перерисовки ngFor\n        this.document.body.click();\n\n        this.isVisible = !this.isVisible;\n\n        this.clearViewContainerRef();\n\n        if (!this.isVisible) {\n            return;\n        }\n\n        this.renderList();\n        this.changePosition(event.clientX, event.clientY);\n        this.initHidingSubscription();\n    }\n\n    private close(): void {\n        this.isVisible = false;\n\n        this.clearViewContainerRef();\n    }\n\n    private renderList(): void {\n        const root = this.document.querySelector(CUI_ROOT_SELECTOR)!;\n        const backdropViewRef = this.viewContainerRef.createEmbeddedView(this.backdrop);\n        const listViewRef = this.viewContainerRef.createEmbeddedView(this.list);\n\n        this.node = listViewRef.rootNodes[0];\n\n        root.append(backdropViewRef.rootNodes[0], this.node!);\n    }\n\n    private changePosition(x: number, y: number): void {\n        this.node!.style.visibility = 'hidden';\n\n        setTimeout(() => {\n            const { clientWidth, clientHeight } = this.documentElement;\n            const width = this.node!.offsetWidth;\n            const height = this.node!.offsetHeight;\n            let left = x;\n            let top = y;\n\n            if (left + width > clientWidth) {\n                left -= width;\n            }\n\n            if (top + height > clientHeight) {\n                top -= height;\n            }\n\n            left = Math.max(left, this.EXTRA_OFFSET_LEFT);\n            top = Math.max(top, this.EXTRA_OFFSET_TOP);\n\n            this.node!.style.left = left + 'px';\n            this.node!.style.top = top + 'px';\n            this.node!.style.visibility = '';\n\n            cuiGetClosestFocusable({ initial: this.node!, root: this.node! })?.focus();\n        });\n    }\n\n    private clearViewContainerRef(): void {\n        this.viewContainerRef.clear();\n    }\n}\n","<ng-template #backdrop>\n    <div class=\"c-backdrop\"></div>\n</ng-template>\n\n<ng-template #list>\n    <div\n        class=\"c-container\"\n        [style.width]=\"width\"\n    >\n        <ul\n            class=\"c-ul\"\n            [class.c-ul_with-padding]=\"withPaddings\"\n        >\n            <li\n                *ngFor=\"let item of items; trackBy: trackByFn\"\n                [style.color]=\"item.color\"\n            >\n                <button\n                    type=\"button\"\n                    class=\"c-button\"\n                    (click)=\"onSelect(item)\"\n                >\n                    <cui-svg\n                        *ngIf=\"item.icon\"\n                        [icon]=\"item.icon\"\n                        [color]=\"item.color\"\n                    ></cui-svg>\n                    <span>{{ item.label }}</span>\n                </button>\n            </li>\n        </ul>\n    </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { CuiContextMenuComponent } from './context-menu.component';\n\n@NgModule({\n    imports: [CommonModule, CuiSvgModule],\n    declarations: [CuiContextMenuComponent],\n    exports: [CuiContextMenuComponent]\n})\nexport class CuiContextMenuModule {}\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';\n\n@Component({\n    selector: 'cui-form-field',\n    templateUrl: './form-field.template.html',\n    styleUrls: ['./form-field.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFormFieldComponent {}\n","<ng-content select=\"label[cuiLabel]\" />\n<ng-content />\n<div class=\"c-hint-container\">\n    <ng-content select=\"cui-hint\" />\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { CuiFormFieldComponent } from './form-field.component';\n\n@NgModule({\n    declarations: [CuiFormFieldComponent],\n    exports: [CuiFormFieldComponent]\n})\nexport class CuiFormFieldModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport type { CuiHintType } from '../../types';\n\n@Component({\n    selector: 'cui-hint',\n    templateUrl: './hint.template.html',\n    styleUrls: ['./hint.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiHintComponent {\n    @Input()\n    @HostBinding('attr.data-hint-type')\n    public hintType: CuiHintType = 'info';\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { CuiHintComponent } from './hint.component';\n\n@NgModule({\n    declarations: [CuiHintComponent],\n    exports: [CuiHintComponent]\n})\nexport class CuiHintModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\n@Component({\n    selector: 'button[cuiIconButton][icon], a[cuiIconButton][icon]',\n    templateUrl: './icon-button.template.html',\n    styleUrls: ['./icon-button.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiIconButtonComponent {\n    protected readonly ICON_WIDTH = 16;\n    protected readonly ICON_HEIGHT = 16;\n    protected readonly ICON_STROKE_WIDTH = 1.5;\n\n    @Input()\n    public icon!: CuiIcon;\n\n    @Input()\n    public color?: string;\n\n    @Input()\n    @HostBinding('style.--icon-hover-color')\n    public hoverColor?: string;\n\n    @HostBinding('class._with-hover-color')\n    protected get isWithHoverColor(): boolean {\n        return !!this.hoverColor;\n    }\n}\n","<cui-svg\n    [icon]=\"icon\"\n    [width]=\"ICON_WIDTH\"\n    [height]=\"ICON_HEIGHT\"\n    [color]=\"color\"\n    [strokeWidth]=\"ICON_STROKE_WIDTH\"\n    class=\"c-icon\"\n></cui-svg>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiIconButtonComponent } from './icon-button.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n    imports: [CommonModule, CuiSvgModule],\n    declarations: [CuiIconButtonComponent],\n    exports: [CuiIconButtonComponent]\n})\nexport class CuiIconButtonModule {}\n","import type { ElementRef } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    HostBinding,\n    HostListener,\n    inject,\n    Input,\n    ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { MaskitoOptions } from '@maskito/core';\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';\nimport { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n    selector: 'cui-input-number',\n    templateUrl: './input-number.template.html',\n    styleUrls: ['./input-number.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)]\n})\nexport class CuiInputNumberComponent implements ControlValueAccessor {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n    protected maskOptions = this.generateMask();\n    protected _precision = 0;\n    protected _min = Number.MIN_SAFE_INTEGER;\n    protected _max = Number.MAX_SAFE_INTEGER;\n    protected value!: CuiNullable<string>;\n    protected onChange!: CuiOnChange<CuiNullable<number>>;\n    protected onTouched!: CuiOnTouched;\n\n    @Input()\n    public set precision(value: number) {\n        this._precision = value;\n        this.maskOptions = this.generateMask();\n    }\n\n  @Input()\n  public set min(value: CuiNullable<number>) {\n    this._min = value ?? this._min;\n    this.maskOptions = this.generateMask();\n  }\n\n  @Input()\n  public set max(value: CuiNullable<number>) {\n    this._max = value ?? this._max;\n    this.maskOptions = this.generateMask();\n  }\n\n    @HostBinding('class._disabled')\n    protected isDisabled!: boolean;\n\n    @ViewChild('input')\n    protected input!: ElementRef<HTMLInputElement>;\n\n    protected get id(): string | undefined {\n        return this.cuiTextFieldController.id;\n    }\n\n    protected get placeholder(): string | undefined {\n        return this.cuiTextFieldController.placeholder;\n    }\n\n    protected get iconLeft(): CuiIcon | undefined {\n        return this.cuiTextFieldController.iconLeft;\n    }\n\n    @HostBinding('attr.data-size')\n    protected get size(): CuiSizeSm | CuiSizeMd {\n        return this.cuiTextFieldController.size;\n    }\n\n    @HostBinding('class._with-error')\n    protected get isError(): boolean {\n        return this.cuiTextFieldController.isError;\n    }\n\n    public writeValue(value: CuiNullable<number>): void {\n        this.value = value?.toString();\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    public registerOnChange(fn: CuiOnChange<CuiNullable<number>>): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: CuiOnTouched): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    protected onInput({ target }: Event): void {\n        this.changeModel((target as HTMLInputElement).value);\n    }\n\n    @HostListener('click')\n    protected onFocus(): void {\n        this.input.nativeElement.focus();\n    }\n\n    private changeModel(value: string): void {\n        const parsedValue = maskitoParseNumber(value);\n\n        this.value = value;\n\n        this.onChange(Number.isNaN(parsedValue) ? null : parsedValue);\n    }\n\n    private generateMask(): MaskitoOptions {\n        return maskitoNumberOptionsGenerator({\n            precision: this._precision,\n            min: this._min,\n            max: this._max\n        });\n    }\n}\n","<cui-svg\n    *ngIf=\"iconLeft\"\n    [icon]=\"iconLeft\"\n    color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n    #input\n    [ngModel]=\"value\"\n    [attr.id]=\"id\"\n    [attr.placeholder]=\"placeholder\"\n    type=\"text\"\n    [maskito]=\"maskOptions\"\n    [disabled]=\"isDisabled\"\n    class=\"c-input\"\n    (input)=\"onInput($event)\"\n    (focus)=\"onTouched()\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\n\nimport { CuiInputNumberComponent } from './input-number.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\n    declarations: [CuiInputNumberComponent],\n    exports: [CuiInputNumberComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputNumberModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, input } from '@angular/core';\n\n@Component({\n    selector: 'cui-content-wrapper, [cuiContentWrapper]',\n    standalone: true,\n    templateUrl: './content-wrapper.component.html',\n    styleUrl: './content-wrapper.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiContentWrapperComponent {\n    private readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-base-0)';\n    private readonly DEFAULT_GAP = 8;\n\n    public readonly backgroundColor = input(this.DEFAULT_BACKGROUND_COLOR);\n    public readonly gap = input(this.DEFAULT_GAP);\n\n    @HostBinding('style.background')\n    protected get _backgroundColor(): string {\n        return this.backgroundColor();\n    }\n\n    @HostBinding('style.gap.px')\n    protected get _gap(): number {\n        return this.gap();\n    }\n}\n","<ng-content />\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n    selector: 'input [cuiGhostInput]',\n    standalone: true,\n    template: '',\n    styleUrl: './ghost-input.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class._with-error]': 'isError()'\n    }\n})\nexport class CuiGhostInputComponent {\n    public isError = input(false, { transform: booleanAttribute });\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiInputType, CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n    selector: 'cui-input-password',\n    templateUrl: './input-password.template.html',\n    styleUrls: ['./input-password.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)]\n})\nexport class CuiInputPasswordComponent implements ControlValueAccessor {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n    protected isPasswordHidden = true;\n    protected value!: CuiNullable<string>;\n    protected onChange!: CuiOnChange<string>;\n    protected onTouched!: CuiOnTouched;\n\n    @HostBinding('class._disabled')\n    protected isDisabled!: boolean;\n\n    protected get id(): string | undefined {\n        return this.cuiTextFieldController.id;\n    }\n\n    protected get placeholder(): string | undefined {\n        return this.cuiTextFieldController.placeholder;\n    }\n\n    protected get iconLeft(): CuiIcon | undefined {\n        return this.cuiTextFieldController.iconLeft;\n    }\n\n    protected get isToggleButtonShown(): boolean {\n        return !this.isDisabled;\n    }\n\n    protected get icon(): CuiIcon {\n        return this.isPasswordHidden ? 'cuiIconEye' : 'cuiIconEyeOff';\n    }\n\n    protected get type(): CuiInputType {\n        return this.isPasswordHidden ? 'password' : 'text';\n    }\n\n    protected get buttonTitle(): string {\n        return this.isPasswordHidden ? 'Reveal password' : 'Hide password';\n    }\n\n    @HostBinding('attr.data-size')\n    protected get size(): CuiSizeSm | CuiSizeMd {\n        return this.cuiTextFieldController.size;\n    }\n\n    @HostBinding('class._with-error')\n    protected get isError(): boolean {\n        return this.cuiTextFieldController.isError;\n    }\n\n    public writeValue(value: CuiNullable<string>): void {\n        this.value = value;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    public registerOnChange(fn: CuiOnChange<string>): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: CuiOnTouched): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n\n        if (this.isDisabled) {\n            this.isPasswordHidden = true;\n        }\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    protected onInput({ target }: Event): void {\n        const value = (target as HTMLInputElement).value;\n\n        this.value = value;\n\n        this.onChange(value);\n    }\n\n    protected onTogglePasswordVisibility(): void {\n        this.isPasswordHidden = !this.isPasswordHidden;\n    }\n}\n","<cui-svg\n    *ngIf=\"iconLeft\"\n    [icon]=\"iconLeft\"\n    color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n    [ngModel]=\"value\"\n    [attr.id]=\"id\"\n    [attr.placeholder]=\"placeholder\"\n    [type]=\"type\"\n    [disabled]=\"isDisabled\"\n    class=\"c-input\"\n    (input)=\"onInput($event)\"\n    (focus)=\"onTouched()\"\n/>\n<button\n    *ngIf=\"isToggleButtonShown\"\n    [title]=\"buttonTitle\"\n    class=\"c-button\"\n    (click)=\"onTogglePasswordVisibility()\"\n>\n    <cui-svg\n        [icon]=\"icon\"\n        [width]=\"16\"\n        [height]=\"16\"\n        color=\"var(--cui-base-500)\"\n    ></cui-svg>\n</button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiInputPasswordComponent } from './input-password.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, CuiSvgModule],\n    declarations: [CuiInputPasswordComponent],\n    exports: [CuiInputPasswordComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputPasswordModule {}\n","import type { ElementRef } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    HostBinding,\n    HostListener,\n    inject,\n    ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n    selector: 'cui-input-text',\n    templateUrl: './input-text.template.html',\n    styleUrls: ['./input-text.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)]\n})\nexport class CuiInputTextComponent implements ControlValueAccessor {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n    protected value!: CuiNullable<string>;\n    protected onChange: CuiOnChange<string> = () => {};\n    protected onTouched: CuiOnTouched = () => {};\n\n    @HostBinding('class._disabled')\n    protected isDisabled!: boolean;\n\n    @ViewChild('input')\n    protected input!: ElementRef<HTMLInputElement>;\n\n    protected get id(): string | undefined {\n        return this.cuiTextFieldController.id;\n    }\n\n    protected get placeholder(): string | undefined {\n        return this.cuiTextFieldController.placeholder;\n    }\n\n    protected get iconLeft(): CuiIcon | undefined {\n        return this.cuiTextFieldController.iconLeft;\n    }\n\n    protected get isClearButtonHidden(): boolean {\n        return !(this.value && !this.isDisabled);\n    }\n\n    @HostBinding('attr.data-size')\n    protected get size(): CuiSizeSm | CuiSizeMd {\n        return this.cuiTextFieldController.size;\n    }\n\n    @HostBinding('class._with-error')\n    protected get isError(): boolean {\n        return this.cuiTextFieldController.isError;\n    }\n\n    public writeValue(value: CuiNullable<string>): void {\n        this.value = value;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    public registerOnChange(fn: CuiOnChange<string>): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: CuiOnTouched): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    protected onInput({ target }: Event): void {\n        this.changeModel((target as HTMLInputElement).value);\n    }\n\n    protected onClear(): void {\n        this.changeModel('');\n    }\n\n    @HostListener('click')\n    protected onFocus(): void {\n        this.input.nativeElement.focus();\n    }\n\n    private changeModel(value: string): void {\n        this.value = value;\n\n        this.onChange(value);\n    }\n}\n","<cui-svg\n    *ngIf=\"iconLeft\"\n    [icon]=\"iconLeft\"\n    color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n    #input\n    [ngModel]=\"value\"\n    [attr.id]=\"id\"\n    [attr.placeholder]=\"placeholder\"\n    type=\"text\"\n    [disabled]=\"isDisabled\"\n    class=\"c-input\"\n    (input)=\"onInput($event)\"\n    (focus)=\"onTouched()\"\n/>\n<button\n    type=\"button\"\n    class=\"c-button\"\n    [class.c-button_hidden]=\"isClearButtonHidden\"\n    (click)=\"onClear()\"\n>\n    <cui-svg\n        icon=\"cuiIconClear\"\n        color=\"var(--cui-base-300)\"\n        class=\"c-close-icon\"\n    />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiTextFieldControllerModule } from '../../directives';\nimport { CuiSvgModule } from '../svg';\nimport { CuiInputTextComponent } from './input-text.component';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, CuiSvgModule],\n    declarations: [CuiInputTextComponent],\n    exports: [CuiInputTextComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputModule {}\n","import { InjectionToken } from '@angular/core';\nimport type { CuiTimeMode } from '@cuby-ui/cdk';\n\nexport interface CuiInputTimeOptions {\n    readonly mode: CuiTimeMode;\n}\n\nexport const CUI_INPUT_TIME_DEFAULT_OPTIONS: CuiInputTimeOptions = {\n    mode: 'HH:MM'\n};\n\nexport const CUI_INPUT_TIME_OPTIONS = new InjectionToken('', {\n    factory: () => CUI_INPUT_TIME_DEFAULT_OPTIONS\n});\n","import type { ElementRef } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    HostBinding,\n    HostListener,\n    inject,\n    Input,\n    ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { MaskitoTimeMode } from '@maskito/kit';\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\nimport type { MaskitoOptions } from '@maskito/core';\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide, CuiTime } from '@cuby-ui/cdk';\n\nimport { CUI_INPUT_TIME_OPTIONS, CuiInputTimeOptions } from './input-time.options';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\n\n@Component({\n    selector: 'cui-input-time',\n    templateUrl: './input-time.template.html',\n    styleUrls: ['./input-time.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)]\n})\nexport class CuiInputTimeComponent implements CuiInputTimeOptions, ControlValueAccessor {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n    private readonly options = inject(CUI_INPUT_TIME_OPTIONS);\n\n    protected _mode = this.options.mode;\n    protected maskOptions = this.generateMask(this._mode);\n    protected defaultPlaceholder = this._mode.toLowerCase();\n    protected value!: CuiNullable<CuiTime>;\n    protected onChange!: CuiOnChange<CuiNullable<CuiTime>>;\n    protected onTouched!: CuiOnTouched;\n\n    @Input()\n    public set mode(value: CuiInputTimeOptions['mode']) {\n        this._mode = value;\n        this.maskOptions = this.generateMask(value);\n        this.defaultPlaceholder = value.toLowerCase();\n    }\n\n    @HostBinding('class._disabled')\n    protected isDisabled!: boolean;\n\n    @ViewChild('input')\n    protected input!: ElementRef<HTMLInputElement>;\n\n    protected get id(): string | undefined {\n        return this.cuiTextFieldController.id;\n    }\n\n    protected get placeholder(): string | undefined {\n        return this.cuiTextFieldController.placeholder ?? this.defaultPlaceholder;\n    }\n\n    public get computedValue(): string {\n        return this.value ? this.value.toString(this._mode) : '';\n    }\n\n    @HostBinding('attr.data-size')\n    protected get size(): CuiSizeSm | CuiSizeMd {\n        return this.cuiTextFieldController.size;\n    }\n\n    @HostBinding('class._with-error')\n    protected get isError(): boolean {\n        return this.cuiTextFieldController.isError;\n    }\n\n    public writeValue(value: CuiNullable<CuiTime>): void {\n        this.value = value;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    public registerOnChange(fn: CuiOnChange<CuiNullable<CuiTime>>): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: CuiOnTouched): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    protected onInput(event: Event): void {\n        const value = (event.target as HTMLInputElement).value;\n\n        if (value.length !== this._mode.length) {\n            this.onChange(null);\n\n            return;\n        }\n\n        const time = CuiTime.fromString(value);\n\n        this.onChange(time);\n    }\n\n    @HostListener('click')\n    protected onFocus(): void {\n        this.input.nativeElement.focus();\n    }\n\n    private generateMask(mode: MaskitoTimeMode): MaskitoOptions {\n        return maskitoTimeOptionsGenerator({ mode });\n    }\n}\n","<cui-svg\n    icon=\"cuiIconClock\"\n    color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n    #input\n    [ngModel]=\"computedValue\"\n    [attr.id]=\"id\"\n    [attr.placeholder]=\"placeholder\"\n    type=\"text\"\n    [maskito]=\"maskOptions\"\n    [disabled]=\"isDisabled\"\n    class=\"c-input\"\n    (input)=\"onInput($event)\"\n    (focus)=\"onTouched()\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\n\nimport { CuiInputTimeComponent } from './input-time.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n    imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\n    declarations: [CuiInputTimeComponent],\n    exports: [CuiInputTimeComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputTimeModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n    selector: 'label[cuiLabel]',\n    templateUrl: './label.template.html',\n    styleUrls: ['./label.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiLabelComponent {\n    @Input()\n    public isRequired = false;\n}\n","<span class=\"c-wrapper\">\n    <ng-content></ng-content>\n</span>\n<span\n    *ngIf=\"isRequired\"\n    class=\"c-star\"\n>\n    *\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiLabelComponent } from './label.component';\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [CuiLabelComponent],\n    exports: [CuiLabelComponent]\n})\nexport class CuiLabelModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport type { CuiShape, CuiSize } from './letter-box.interfaces';\n\n@Component({\n    selector: 'cui-letter-box',\n    standalone: true,\n    templateUrl: './letter-box.component.html',\n    styleUrls: ['./letter-box.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiLetterBoxComponent {\n    protected readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-magenta-500)';\n\n    @Input({ required: true })\n    public letter!: string;\n\n    @Input()\n    public backgroundColor?: string;\n\n    @Input()\n    public size: CuiSize = 'sm';\n\n    @Input()\n    public shape: CuiShape = null;\n\n    @HostBinding('style.background-color')\n    protected get _backgroundColor(): string {\n        return this.backgroundColor ?? this.DEFAULT_BACKGROUND_COLOR;\n    }\n\n    @HostBinding('attr.data-size')\n    protected get _size(): CuiSize {\n        return this.size;\n    }\n\n    @HostBinding('attr.data-shape')\n    protected get _shape(): CuiShape {\n        return this.shape;\n    }\n}\n","{{ letter }}\n","import { Injectable, signal } from '@angular/core';\n\nimport type { CuiDynamicComponent } from './render-dynamic-components.options';\n\n@Injectable()\nexport class CuiRenderDynamicComponentsService {\n    private readonly dynamicComponentsSignal = signal<CuiDynamicComponent[]>([]);\n\n    public readonly dynamicComponents = this.dynamicComponentsSignal.asReadonly();\n\n    public open(dynamicComponent: CuiDynamicComponent): void {\n        this.dynamicComponentsSignal.update((prevDynamicComponents) => [...prevDynamicComponents, dynamicComponent]);\n    }\n\n    public closeLast(): void {\n        this.dynamicComponentsSignal.update((prevDynamicComponents) => prevDynamicComponents.slice(0, -1));\n    }\n\n    public closeAllExceptFirst(): void {\n        this.dynamicComponentsSignal.update((prevDynamicComponents) => {\n            const firstDynamicComponent = prevDynamicComponents[0];\n\n            return firstDynamicComponent ? [firstDynamicComponent] : [];\n        });\n    }\n\n    public closeAll(): void {\n        this.dynamicComponentsSignal.set([]);\n    }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { CuiRenderDynamicComponentsService } from './render-dynamic-components.service';\n\n@Component({\n    selector: 'cui-render-dynamic-components',\n    imports: [NgComponentOutlet],\n    standalone: true,\n    templateUrl: './render-dynamic-components.component.html',\n    styleUrl: './render-dynamic-components.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRenderDynamicComponentsComponent {\n    private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n    protected readonly dynamicComponents = this.renderDynamicComponentsService.dynamicComponents;\n}\n","@for (dynamicComponent of dynamicComponents(); let isLast = $last; track $index) {\n    <div\n        class=\"container\"\n        [class.container_hidden]=\"!isLast\"\n    >\n        <ng-container *ngComponentOutlet=\"dynamicComponent.component; inputs: dynamicComponent.inputs\" />\n    </div>\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CuiBadgeModule } from '../../../components';\nimport { CuiSvgModule } from '../../../components';\nimport { TranslocoModule } from '@jsverse/transloco';\n\n@Component({\n    selector: 'cui-inserted',\n    imports: [CuiBadgeModule, CuiSvgModule, TranslocoModule],\n    templateUrl: './inserted.component.html',\n    styleUrl: './inserted.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InsertedComponent {}\n","<ng-container *transloco=\"let t\">\n    <cui-badge color=\"violet\">\n        <cui-svg\n            cuiBadgeIcon\n            class=\"icon\"\n            icon=\"cuiIconVariant\"\n        />\n        {{ t('INSERTED') }}\n    </cui-badge>\n</ng-container>\n","import { Component, computed, inject, input } from '@angular/core';\nimport { CUI_DIALOG_CONTEXT, CuiDialogModule } from '../../../components/dialog';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { CuiButtonModule } from '../../../components/button';\nimport { CuiRenderDynamicComponentsService } from '../../../components/render-dynamic-components';\nimport { InsertedComponent } from '../inserted/inserted.component';\n\n@Component({\n    selector: 'cui-modal-header',\n    standalone: true,\n    imports: [TranslocoDirective, CuiDialogModule, CuiButtonModule, InsertedComponent],\n    templateUrl: './modal-header.component.html',\n    styleUrl: './modal-header.component.scss'\n})\nexport class ModalHeaderComponent {\n    private readonly context = inject(CUI_DIALOG_CONTEXT);\n    private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n    protected readonly areDynamicComponentsMoreThanTwo = computed(\n        () => this.renderDynamicComponentsService.dynamicComponents().length > 1\n    );\n\n    public readonly heading = input.required<string>();\n    public readonly isInserted = input(false);\n\n    protected onClosed(): void {\n        this.context.completeWith({ canceled: true });\n    }\n\n    protected onGoBack(): void {\n        this.renderDynamicComponentsService.closeLast();\n    }\n}\n","<header\n    *transloco=\"let t\"\n    cuiDialogHeader\n    [heading]=\"headingTemplate\"\n    class=\"header\"\n    (closed)=\"onClosed()\"\n>\n    <ng-template #headingTemplate>\n        <div\n            [title]=\"heading()\"\n            class=\"heading\"\n        >\n            @if (areDynamicComponentsMoreThanTwo()) {\n                <button\n                    type=\"button\"\n                    cuiButton\n                    appearance=\"ghost\"\n                    icon=\"cuiIconChevronLeftSm\"\n                    (click)=\"onGoBack()\"\n                ></button>\n            }\n            <ng-content select=\"[cuiModalHeaderIcon]\" />\n            <div class=\"heading__container\">\n                <span class=\"heading__text\">{{ heading() }}</span>\n                <ng-content select=\"[cuiModalHeaderCrums]\" />\n            </div>\n            @if (isInserted()) {\n                <cui-inserted />\n            }\n        </div>\n    </ng-template>\n    <div class=\"header__content\">\n        <ng-content select=\"[cuiModalHeaderButtons]\" />\n    </div>\n</header>\n","import { Component, input } from '@angular/core';\nimport { CuiContextMenuItem } from '../../interfaces';\nimport { CuiContextMenuModule } from '../context-menu';\nimport { CuiButtonModule } from '../button';\nimport { CuiElementDirective } from '@cuby-ui/cdk';\n\n@Component({\n    selector: 'cui-options-button',\n    standalone: true,\n    imports: [CuiContextMenuModule, CuiButtonModule, CuiElementDirective],\n    templateUrl: './options-button.component.html'\n})\nexport class OptionsButtonComponent {\n    public readonly options = input.required<CuiContextMenuItem[]>();\n    public readonly hoverBackgroundColor = input<string>();\n}\n","<button\n    #actionButton=\"elementRef\"\n    cuiButton\n    type=\"button\"\n    cuiElement\n    appearance=\"ghost\"\n    size=\"xxs\"\n    icon=\"cuiIconMoreVertical\"\n    [style.--cui-base-50]=\"hoverBackgroundColor()\"\n></button>\n<cui-context-menu\n    [items]=\"options()\"\n    [target]=\"actionButton.nativeElement\"\n/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'input[type=\"radio\"][cuiRadio]',\n    template: '',\n    styleUrls: ['./radio.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRadioComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiRadioComponent } from './radio.component';\n\n@NgModule({\n    declarations: [CuiRadioComponent],\n    exports: [CuiRadioComponent]\n})\nexport class CuiRadioModule {}\n","import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    inject,\n    Input,\n    ElementRef,\n    ViewChild,\n    HostBinding,\n    ViewContainerRef,\n    HostListener\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { takeUntil } from 'rxjs';\n\nimport type { CuiOption } from '../../interfaces';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CUI_ROOT_SELECTOR } from '../root';\n\n@Component({\n    selector: 'cui-select[options]',\n    templateUrl: './select.template.html',\n    styleUrls: ['./select.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        CUI_TEXT_FILED_CONTROLLER_PROVIDER,\n        cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),\n        CuiDestroyService\n    ],\n    hostDirectives: [CuiClickOutsideDirective]\n})\nexport class CuiSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\n    private readonly element = inject(ElementRef).nativeElement;\n    private readonly document = inject(DOCUMENT);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly viewContainerRef = inject(ViewContainerRef);\n    private readonly destroy$ = inject(CuiDestroyService, { self: true });\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n\n    protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;\n\n    protected isOpened = false;\n    protected isOptionsListAbove = false;\n    protected value!: CuiNullable<unknown>;\n    protected onChange!: CuiOnChange<unknown>;\n    protected onTouched!: CuiOnTouched;\n    protected isDisabled!: boolean;\n    protected selectedOption?: CuiOption;\n\n    @Input()\n    public options!: CuiOption[];\n\n    @Input()\n    public defaultOptionText?: string;\n\n    @ViewChild('button')\n    protected readonly button!: ElementRef<HTMLButtonElement>;\n\n    @ViewChild('getOptionsListHeightContainer')\n    protected readonly getOptionsListHeightContainer!: ElementRef<HTMLUListElement>;\n\n    @ViewChild('backdrop')\n    protected readonly backdrop!: TemplateRef<unknown>;\n\n    @ViewChild('optionsWrapper')\n    protected readonly optionsWrapper!: TemplateRef<unknown>;\n\n    @HostBinding('style.--c-gap')\n    protected gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;\n\n    protected get id(): string | undefined {\n        return this.cuiTextFieldController.id;\n    }\n\n    protected get size(): CuiSizeSm | CuiSizeMd {\n        return this.cuiTextFieldController.size;\n    }\n\n    protected get placeholder(): string | undefined {\n        return this.cuiTextFieldController.placeholder;\n    }\n\n    protected get isError(): boolean {\n        return this.cuiTextFieldController.isError;\n    }\n\n    protected trackByFn(_: number, item: CuiOption): string {\n        return item.label;\n    }\n\n    public writeValue(value: unknown): void {\n        this.value = value;\n        // TODO: Непонятно, зачем нужно в construction вторая часть выражения\n        this.selectedOption = this.options.find((option) => option.value === value) ?? (value as CuiOption);\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    public registerOnChange(fn: CuiOnChange<unknown>): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: CuiOnTouched): void {\n        this.onTouched = fn;\n    }\n\n    public ngOnInit(): void {\n        this.initClickOutsideSubscription();\n    }\n\n    public ngOnDestroy(): void {\n        this.clearViewContainerRef();\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    protected onSelect(event: Event, option: CuiOption): void {\n        event.stopPropagation();\n\n        if (option.isDisabled) {\n            return;\n        }\n\n        this.value = option.value;\n        this.selectedOption = option;\n\n        this.onChange(this.value);\n        this.onSwitch();\n        this.onTouched();\n        this.changeDetectorRef.markForCheck();\n    }\n\n    protected onSwitch(): void {\n        if (!this.options.length && !this.defaultOptionText) {\n            return;\n        }\n\n        if (!this.isOpened) {\n            this.open();\n\n            return;\n        }\n\n        this.close();\n    }\n\n    protected onClose(): void {\n        this.close();\n    }\n\n    @HostListener('window:resize')\n    protected onWindowResize(): void {\n        this.button.nativeElement.blur();\n        this.close();\n    }\n\n    private initClickOutsideSubscription(): void {\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            if (this.isOpened) {\n                this.onTouched();\n            }\n\n            this.close();\n        });\n    }\n\n    private open(): void {\n        this.isOpened = true;\n\n        const rootElement = this.document.querySelector(CUI_ROOT_SELECTOR)!;\n        const {\n            top: elementRectTop,\n            left: elementRectLeft,\n            bottom: elementRectBottom\n        } = this.element.getBoundingClientRect();\n        const distanceToBottom =\n            this.document.documentElement.clientHeight - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);\n        const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);\n        const node = embeddedViewRef.rootNodes[0];\n        const nodeStyles = node.style;\n\n        this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;\n\n        embeddedViewRef.detectChanges();\n\n        nodeStyles.width = this.element.offsetWidth + 'px';\n        nodeStyles.left = window.scrollX + elementRectLeft + 'px';\n\n        if (this.isOptionsListAbove) {\n            nodeStyles.top =\n                window.scrollY +\n                elementRectTop -\n                this.getOptionsListHeightContainer.nativeElement.offsetHeight -\n                this.SPACE_BETWEEN_BUTTON_AND_OPTIONS +\n                'px';\n        } else {\n            nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';\n        }\n\n        rootElement.appendChild(this.viewContainerRef.createEmbeddedView(this.backdrop).rootNodes[0]);\n        rootElement.appendChild(embeddedViewRef.rootNodes[0]);\n    }\n\n    private close(): void {\n        this.isOpened = false;\n\n        this.clearViewContainerRef();\n    }\n\n    private clearViewContainerRef(): void {\n        this.viewContainerRef.clear();\n    }\n}\n","<button\n    #button\n    type=\"button\"\n    [attr.id]=\"id\"\n    [attr.data-size]=\"size\"\n    [disabled]=\"isDisabled\"\n    class=\"c-button\"\n    [class.c-button_active]=\"isOpened\"\n    [class.c-button_with-error]=\"isError\"\n    (click)=\"onSwitch()\"\n>\n    <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\n        {{ selectedOption.label }}\n    </ng-container>\n    <ng-template #placeholderTemplate>\n        <span class=\"c-placeholder\">{{ placeholder }}</span>\n    </ng-template>\n    <cui-svg\n        icon=\"cuiIconChevronDown\"\n        color=\"var(--cui-base-500)\"\n    />\n</button>\n<ng-template #backdrop>\n    <div class=\"c-backdrop\"></div>\n</ng-template>\n<ng-template #optionsWrapper>\n    <div\n        cuiFocusTrap\n        class=\"c-options__wrapper\"\n        [class.c-options__wrapper_top]=\"isOptionsListAbove\"\n    >\n        <ng-container *ngTemplateOutlet=\"optionsList\" />\n    </div>\n</ng-template>\n<div\n    #getOptionsListHeightContainer\n    class=\"c-get-options-list-height-container\"\n>\n    <ng-container *ngTemplateOutlet=\"optionsList\" />\n</div>\n<ng-template #optionsList>\n    <ul\n        class=\"c-options\"\n        [class.c-options_top]=\"isOptionsListAbove\"\n    >\n        <ng-container *ngIf=\"options.length; else empty\">\n            <li *ngFor=\"let option of options; trackBy: trackByFn\">\n                <button\n                    type=\"button\"\n                    class=\"c-option-button\"\n                    [class.c-option-button_selected]=\"selectedOption === option\"\n                    [disabled]=\"option.isDisabled\"\n                    (click)=\"onSelect($event, option)\"\n                >\n                    <span>{{ option.label }}</span>\n                    <cui-svg\n                        *ngIf=\"selectedOption === option\"\n                        icon=\"cuiIconCheckSm\"\n                        color=\"var(--cui-info)\"\n                        class=\"c-option-button__icon\"\n                    />\n                </button>\n            </li>\n        </ng-container>\n        <ng-template #empty>\n            <li *ngIf=\"defaultOptionText\">\n                <button\n                    type=\"button\"\n                    class=\"c-option-button\"\n                    (click)=\"onClose()\"\n                >\n                    {{ defaultOptionText }}\n                </button>\n            </li>\n        </ng-template>\n    </ul>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiSelectComponent } from './select.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\n\n@NgModule({\n    imports: [CommonModule, CuiSvgModule, CuiFocusTrapDirective],\n    declarations: [CuiSelectComponent],\n    exports: [CuiSelectComponent, CuiTextFieldControllerModule]\n})\nexport class CuiSelectModule {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n    selector: 'cui-empty-state, [cuiEmptyState]',\n    standalone: true,\n    templateUrl: './empty-state.component.html',\n    styleUrl: './empty-state.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class._with-title]': '!!this.title()'\n    }\n})\nexport class CuiEmptyStateComponent {\n    public readonly title = input<string>();\n    public readonly subtitle = input<string>();\n}\n","@if (title(); as title) {\n    <p class=\"title\">{{ title }}</p>\n}\n@if (subtitle(); as subtitle) {\n    <p class=\"subtitle\">{{ subtitle }}</p>\n}\n<ng-content />\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    input,\n    model,\n    output,\n    signal,\n    TemplateRef,\n    viewChild\n} from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport type {\n    CuiTemplateSelectOption,\n    CuiTemplateSelectOptionContext,\n    CuiTemplateSelectTriggerContext,\n    CuiTemplateSelectValue\n} from './template-select.interfaces';\nimport type { CuiDropdownOrientation } from '../dropdown';\nimport { CuiDropdownDirective, CuiDropdownWrapperComponent } from '../dropdown';\nimport { CuiEmptyStateComponent } from '../empty-state';\n\n@Component({\n    selector: 'cui-template-select',\n    standalone: true,\n    imports: [CuiDropdownDirective, CuiDropdownWrapperComponent, CuiEmptyStateComponent, NgTemplateOutlet],\n    templateUrl: './template-select.component.html',\n    styleUrl: './template-select.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiTemplateSelectComponent<TOption extends CuiTemplateSelectOption<unknown>> {\n    protected readonly isOpen = signal<boolean>(false);\n\n    protected readonly selectedOption = computed<CuiNullable<TOption>>(\n        () => this.options().find((option) => option.value === this.value()) ?? null\n    );\n\n    protected readonly triggerContext = computed<CuiTemplateSelectTriggerContext<TOption>>(() => ({\n        $implicit: this.selectedOption(),\n        isOpen: this.isOpen()\n    }));\n\n    protected readonly optionContexts = computed<CuiTemplateSelectOptionContext<TOption>[]>(() =>\n        this.options().map((option) => ({ $implicit: option, isSelected: option.value === this.value() }))\n    );\n\n    protected readonly placeholderTemplate = computed<CuiNullable<TemplateRef<unknown>>>(() => {\n        const placeholder = this.placeholder();\n\n        return placeholder instanceof TemplateRef ? placeholder : null;\n    });\n\n    protected readonly dropdown = viewChild.required(CuiDropdownDirective);\n\n    public readonly value = model<CuiNullable<CuiTemplateSelectValue<TOption>>>(null);\n\n    public readonly options = input<TOption[]>([]);\n    public readonly triggerTemplate = input.required<TemplateRef<CuiTemplateSelectTriggerContext<TOption>>>();\n    public readonly optionTemplate = input<TemplateRef<CuiTemplateSelectOptionContext<TOption>>>();\n    public readonly contentTemplate = input<TemplateRef<unknown>>();\n    public readonly placeholder = input<string | TemplateRef<unknown>>('');\n    public readonly emptyPlaceholder = input<string>('');\n\n    public readonly disabled = input<boolean>(false);\n    public readonly orientation = input<CuiDropdownOrientation>('stretch');\n    public readonly dropdownWidth = input<string>('auto');\n\n    public readonly openChange = output<boolean>();\n\n    protected onSelect(option: TOption): void {\n        this.value.set(option.value as CuiTemplateSelectValue<TOption>);\n        this.dropdown().close();\n    }\n\n    protected onOpenChange(isOpen: boolean): void {\n        this.isOpen.set(isOpen);\n        this.openChange.emit(isOpen);\n    }\n}\n","<button\n    type=\"button\"\n    [cuiDropdown]=\"content\"\n    [orientation]=\"orientation()\"\n    [disabled]=\"disabled()\"\n    class=\"trigger\"\n    (isOpened)=\"onOpenChange($event)\"\n>\n    @if (value()) {\n        <ng-container *ngTemplateOutlet=\"triggerTemplate(); context: triggerContext()\" />\n    } @else {\n        @if (placeholderTemplate(); as template) {\n            <ng-container *ngTemplateOutlet=\"template; context: triggerContext()\" />\n        } @else {\n            <span class=\"placeholder\">{{ placeholder() }}</span>\n        }\n    }\n</button>\n\n<ng-template #content>\n    <cui-dropdown-wrapper [width]=\"dropdownWidth()\">\n        @if (contentTemplate(); as dropdownContent) {\n            <ng-container *ngTemplateOutlet=\"dropdownContent\" />\n        } @else {\n            <div class=\"list\">\n                @for (context of optionContexts(); track context.$implicit) {\n                    <button\n                        type=\"button\"\n                        class=\"option\"\n                        [class.option_selected]=\"context.isSelected\"\n                        (click)=\"onSelect(context.$implicit)\"\n                    >\n                        @if (optionTemplate(); as template) {\n                            <ng-container *ngTemplateOutlet=\"template; context: context\" />\n                        } @else {\n                            <ng-container\n                                *ngTemplateOutlet=\"\n                                    triggerTemplate();\n                                    context: { $implicit: context.$implicit, isOpen: false }\n                                \"\n                            />\n                        }\n                    </button>\n                } @empty {\n                    @if (emptyPlaceholder()) {\n                        <cui-empty-state\n                            [subtitle]=\"emptyPlaceholder()\"\n                            class=\"empty\"\n                        />\n                    }\n                }\n            </div>\n        }\n    </cui-dropdown-wrapper>\n</ng-template>\n","export const IS_SIDEBAR_OPENED_STORAGE_KEY = 'is-sidebar-opened';\n\nexport interface CuiSidebarLink {\n    readonly text: string;\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\n\nimport { IS_SIDEBAR_OPENED_STORAGE_KEY } from './sidebar.options';\nimport { CuiRenderDynamicComponentsService } from '../render-dynamic-components';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiSidebarService extends CuiRenderDynamicComponentsService {\n    private readonly localStorage = inject(CUI_LOCAL_STORAGE);\n\n    private readonly isOpenedSignal = signal(this.localStorage.getItem(IS_SIDEBAR_OPENED_STORAGE_KEY) === 'true');\n    private readonly isHiddenSignal = signal(false);\n    private readonly widthSignal = signal<number>(0);\n\n    public readonly isOpened = this.isOpenedSignal.asReadonly();\n    public readonly isHidden = this.isHiddenSignal.asReadonly();\n    public readonly width = this.widthSignal.asReadonly();\n\n    public hide(): void {\n        this.isHiddenSignal.set(true);\n    }\n\n    public show(): void {\n        this.isHiddenSignal.set(false);\n    }\n\n    public switch(): void {\n        this.isOpenedSignal.update((value) => !value);\n        this.localStorage.setItem(IS_SIDEBAR_OPENED_STORAGE_KEY, this.isOpenedSignal().toString());\n    }\n\n    public setWidth(value: number): void {\n        this.widthSignal.set(value);\n    }\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CuiSvgModule } from '../../svg';\nimport { CuiSidebarService } from '../sidebar.service';\n\n@Component({\n    selector: 'header[cuiSidebarHeader]',\n    imports: [CuiSvgModule, NgTemplateOutlet],\n    standalone: true,\n    templateUrl: 'sidebar-header.component.html',\n    styleUrl: 'sidebar-header.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarHeaderComponent {\n    private readonly document = inject(DOCUMENT);\n    private readonly sidebarService = inject(CuiSidebarService);\n\n    protected readonly isOpened = this.sidebarService.isOpened;\n    protected readonly buttonIcon = computed<CuiIcon>(() =>\n        this.isOpened() ? 'cuiIconChevronsLeft' : 'cuiIconChevronsRight'\n    );\n\n    public readonly headerSlot = input.required<TemplateRef<unknown>>();\n\n    protected onSwitch(event: MouseEvent): void {\n        event.stopPropagation();\n\n        this.document.body.click();\n        this.sidebarService.switch();\n    }\n}\n","<ng-container\n    [ngTemplateOutlet]=\"headerSlot()\"\n    [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\"\n/>\n<button\n    type=\"button\"\n    class=\"button\"\n    [class.button_opened]=\"isOpened()\"\n    (click)=\"onSwitch($event)\"\n>\n    <cui-svg\n        [icon]=\"buttonIcon()\"\n        color=\"var(--cui-base-500)\"\n    />\n</button>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { CuiDimensionsObserverDirective } from '@cuby-ui/cdk';\n\nimport { CuiSidebarService } from '../sidebar.service';\n\n@Component({\n    selector: 'cui-sidebar-container',\n    standalone: true,\n    templateUrl: 'sidebar-container.component.html',\n    styleUrl: 'sidebar-container.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [\n        {\n            directive: CuiDimensionsObserverDirective,\n            outputs: ['cuiResizeObserver']\n        }\n    ],\n    host: {\n        '(cuiResizeObserver)': 'onResize($event.width)',\n        '[class._opened]': 'isOpened()'\n    }\n})\nexport class CuiSidebarContainerComponent {\n    private readonly sidebarService = inject(CuiSidebarService);\n\n    protected readonly isOpened = this.sidebarService.isOpened;\n    protected readonly isHidden = this.sidebarService.isHidden;\n\n    protected onResize(width: number): void {\n        this.sidebarService.setWidth(width);\n    }\n}\n","@if (!isHidden()) {\n    <ng-content />\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiSidebarLink } from '../sidebar.options';\n\n@Component({\n    selector: 'cui-sidebar-navigation',\n    imports: [NgTemplateOutlet],\n    standalone: true,\n    templateUrl: 'sidebar-navigation.component.html',\n    styleUrl: 'sidebar-navigation.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarNavigationComponent {\n    public readonly links = input.required<CuiSidebarLink[]>();\n    public readonly slot = input.required<TemplateRef<unknown>>();\n}\n","<nav class=\"nav\">\n    <ul class=\"list\">\n        @for (link of links(); track link.text; let isLast = $last) {\n            <ng-container\n                [ngTemplateOutlet]=\"slot()\"\n                [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\"\n            />\n        }\n    </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiIcon } from '@cuby-ui/icons';\n\nimport { CuiSvgModule } from '../../svg';\n\n@Component({\n    selector: '[cuiSidebarNavigationItem]',\n    imports: [CuiSvgModule],\n    standalone: true,\n    templateUrl: 'sidebar-navigation-item.component.html',\n    styleUrl: 'sidebar-navigation-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class._active]': 'active()'\n    }\n})\nexport class CuiSidebarNavigationItemComponent {\n    public readonly text = input.required<string>();\n    public readonly icon = input<CuiIcon>();\n    public readonly active = input<boolean>();\n    public readonly isOpen = input<boolean>();\n}\n","@if (icon(); as icon) {\n    <cui-svg\n        [icon]=\"icon\"\n        color=\"var(--cui-base-500)\"\n    />\n}\n@if (isOpen()) {\n    {{ text() }}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n    selector: 'cui-sidebar-navigation-container',\n    imports: [NgTemplateOutlet],\n    standalone: true,\n    templateUrl: 'sidebar-navigation-container.component.html',\n    styleUrl: 'sidebar-navigation-container.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarNavigationContainerComponent {\n    public readonly slot = input.required<TemplateRef<unknown>>();\n    public readonly title = input<string>();\n}\n","@if (title(); as title) {\n    <h3 class=\"title\">{{ title }}</h3>\n}\n\n<ng-container [ngTemplateOutlet]=\"slot()\" />\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n    selector: 'cui-card-wrapper, [cuiCardWrapper]',\n    standalone: true,\n    templateUrl: 'card-wrapper.component.html',\n    styleUrl: 'card-wrapper.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class._with-border]': 'withBorder()',\n        '[class._selected]': 'isSelected()'\n    }\n})\nexport class CuiCardWrapperComponent {\n    public readonly withBorder = input(true);\n    public readonly isSelected = input(false);\n}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n    selector: 'cui-layout',\n    standalone: true,\n    templateUrl: './layout.component.html',\n    styleUrl: './layout.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[style.marginLeft.px]': 'sidebarWidth()'\n    }\n})\nexport class CuiLayoutComponent {\n    public readonly sidebarWidth = input.required<number>();\n}\n","<div class=\"content\">\n    <ng-content />\n</div>\n","import { InjectionToken, Signal, type TemplateRef } from '@angular/core';\nimport { CuiNullable } from '@cuby-ui/cdk';\n\nexport const CUI_TABS_SERVICE_TOKEN = new InjectionToken<CuiAbstractTabsService>('CUI_TABS_SERVICE');\n\nexport abstract class CuiAbstractTabsService implements CuiTabsService {\n    abstract readonly tabs: Signal<CuiTabOptions[]>;\n    abstract readonly activeTab: Signal<CuiNullable<CuiTabOptions>>;\n\n    abstract set(tab: CuiTabOptions): void;\n    abstract addTab(tab: CuiTabOptions): void;\n    abstract removeTab(tabId: string): void;\n}\n\nexport interface CuiTabsService {\n    set(tab: CuiTabOptions): void;\n    addTab(tab: CuiTabOptions): void;\n    removeTab(tabId: string): void;\n}\n\nexport interface CuiTabOptions {\n    readonly id: string;\n    readonly button: TemplateRef<unknown>;\n    readonly content: TemplateRef<unknown>;\n    readonly data?: unknown;\n}\n","import type { TemplateRef } from '@angular/core';\nimport { Directive, effect, inject, input, untracked } from '@angular/core';\nimport { CuiIdService } from '@cuby-ui/cdk';\n\nimport { CUI_TABS_SERVICE_TOKEN } from '../tabs/tabs.options';\n\n@Directive({\n    selector: 'cui-tab, [cuiTab]',\n    standalone: true\n})\nexport class CuiTabDirective {\n    private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\n    private readonly tabId = inject(CuiIdService).generate();\n\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n    public readonly contentSlot = input.required<TemplateRef<unknown>>();\n    public readonly data = input<unknown>();\n\n    constructor() {\n        this.initTabEffect();\n    }\n\n    private initTabEffect(): void {\n        effect(\n            (onCleanup) => {\n                this.addTab(this.buttonSlot(), this.contentSlot());\n\n                onCleanup(this.removeTab.bind(this));\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private addTab(button: TemplateRef<unknown>, content: TemplateRef<unknown>): void {\n        this.tabsService.addTab({ id: this.tabId, button, content, data: untracked(this.data) });\n    }\n\n    private removeTab(): void {\n        this.tabsService.removeTab(this.tabId);\n    }\n}\n","import { Component, ChangeDetectionStrategy, inject, TemplateRef, input, effect } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport { CUI_TABS_SERVICE_TOKEN, CuiTabOptions } from '../../tabs.options';\n\n@Component({\n    selector: 'cui-abstract-tabs',\n    imports: [NgTemplateOutlet],\n    standalone: true,\n    templateUrl: 'abstract-tabs.component.html',\n    styleUrl: 'abstract-tabs.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAbstractTabsComponent {\n    private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\n\n    protected readonly tabs = this.tabsService.tabs;\n    protected readonly activeTab = this.tabsService.activeTab;\n\n    public readonly headerSlot = input<TemplateRef<unknown>>();\n    public readonly selectedIndex = input<number>(0);\n\n    constructor() {\n        this.initSelectedTabEffect();\n    }\n\n    protected onSelectTab(event: Event, tab: CuiTabOptions): void {\n        if (event.defaultPrevented) {\n            return;\n        }\n\n        this.tabsService.set(tab);\n    }\n\n    private initSelectedTabEffect() {\n        effect(\n            () => {\n                const index = this.selectedIndex();\n                const length = this.tabs().length;\n\n                if (index === undefined || !length) {\n                    return;\n                }\n\n                if (index < 0 || index >= length) {\n                    throw new Error('Invalid tab index');\n                }\n\n                this.tabsService.set(this.tabs()[index]);\n            },\n            { allowSignalWrites: true }\n        );\n    }\n}\n","@if (headerSlot(); as header) {\n    <ng-container\n        [ngTemplateOutlet]=\"header\"\n        [ngTemplateOutletContext]=\"{ $implicit: buttons }\"\n    />\n} @else {\n    <header class=\"header\">\n        <ng-container [ngTemplateOutlet]=\"buttons\" />\n    </header>\n}\n\n<ng-template #buttons>\n    @for (tab of tabs(); track tab.id) {\n        <button\n            type=\"button\"\n            class=\"button\"\n            (click)=\"onSelectTab($event, tab)\"\n        >\n            <ng-container\n                [ngTemplateOutlet]=\"tab.button\"\n                [ngTemplateOutletContext]=\"{ $implicit: tab.data, isActive: tab.id === activeTab()?.id }\"\n            />\n        </button>\n    }\n</ng-template>\n\n@if (activeTab()?.content; as content) {\n    <ng-container\n        [ngTemplateOutlet]=\"content\"\n        [ngTemplateOutletContext]=\"{ $implicit: activeTab()?.data }\"\n    />\n}\n","import { computed, Injectable, signal, WritableSignal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport { CuiAbstractTabsService, CuiTabOptions } from '../tabs.options';\n\n@Injectable()\nexport class CuiTabsServiceImpl extends CuiAbstractTabsService {\n    private readonly tabsSignal = signal<CuiTabOptions[]>([]);\n    private readonly activeTabSignal = computed<WritableSignal<CuiNullable<CuiTabOptions>>>(() =>\n        signal(this.tabsSignal()[0])\n    );\n\n    public readonly tabs = this.tabsSignal.asReadonly();\n    public readonly activeTab = computed(() => this.activeTabSignal()());\n\n    public set(tab: CuiTabOptions): void {\n        this.activeTabSignal().set(tab);\n    }\n\n    public addTab(tab: CuiTabOptions): void {\n        this.tabsSignal.update((prev) => [...prev, tab]);\n    }\n\n    public removeTab(tabId: string): void {\n        this.tabsSignal.update((prev) => prev.filter((tab) => tab.id !== tabId));\n    }\n}\n","import { Provider, Type } from '@angular/core';\nimport { CuiTabsServiceImpl } from './services';\nimport { CUI_TABS_SERVICE_TOKEN, CuiAbstractTabsService } from './tabs.options';\n\nexport function provideCuiTabs(Implementation: Type<CuiAbstractTabsService> = CuiTabsServiceImpl): Provider {\n    return {\n        provide: CUI_TABS_SERVICE_TOKEN,\n        useClass: Implementation\n    };\n}\n","import { ChangeDetectionStrategy, Component, input, TemplateRef } from '@angular/core';\n\nimport { CuiAbstractTabsComponent } from './components';\nimport { provideCuiTabs } from './tabs.provider';\n\n@Component({\n    selector: 'cui-tabs',\n    imports: [CuiAbstractTabsComponent],\n    standalone: true,\n    templateUrl: 'tabs.component.html',\n    styleUrl: 'tabs.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [provideCuiTabs()]\n})\nexport class CuiTabsComponent {\n    public readonly headerSlot = input<TemplateRef<unknown>>();\n    public readonly selectedIndex = input<number>(0);\n}\n","<cui-abstract-tabs\n    [headerSlot]=\"headerSlot()\"\n    [selectedIndex]=\"selectedIndex()\"\n/>\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport type { CuiTreeNode, CuiTreeTemplateContext } from './tree.options';\n\n@Component({\n    selector: 'cui-tree',\n    standalone: true,\n    imports: [NgTemplateOutlet],\n    templateUrl: './tree.component.html',\n    styleUrl: './tree.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiTreeComponent<TData = unknown> {\n    public readonly nodes = input.required<CuiTreeNode<TData>[]>();\n    public readonly nodeTemplate = input.required<TemplateRef<CuiTreeTemplateContext<TData>>>();\n}\n","<ng-template\n    #branch\n    let-items\n    let-level=\"level\"\n>\n    <ul class=\"list\">\n        @for (node of items; track node.key) {\n            @let isOpen = node.expanded?.() === true;\n\n            <li class=\"item\">\n                <ng-container *ngTemplateOutlet=\"nodeTemplate(); context: { $implicit: node, level: level }\" />\n                @if (isOpen && node.children?.length) {\n                    <div class=\"children\">\n                        <ng-container\n                            *ngTemplateOutlet=\"branch; context: { $implicit: node.children, level: level + 1 }\"\n                        />\n                    </div>\n                }\n            </li>\n        }\n    </ul>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"branch; context: { $implicit: nodes(), level: 0 }\" />\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { CuiAutoResizingDirective } from '@cuby-ui/cdk';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\n\n@Component({\n    selector: 'textarea[cuiTextarea]',\n    template: '',\n    styleUrls: ['./textarea.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER],\n    hostDirectives: [CuiAutoResizingDirective]\n})\nexport class CuiTextareaComponent {\n    private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n    @Input()\n    @HostBinding('rows')\n    public rows = 4;\n\n    @Input()\n    @HostBinding('class._no-borders-and-paddings')\n    public noBordersAndPaddings = false;\n\n    @HostBinding('class._with-error')\n    protected get isError(): boolean {\n        return this.cuiTextFieldController.isError;\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CuiTextareaComponent } from './textarea.component';\n\n@NgModule({\n    declarations: [CuiTextareaComponent],\n    exports: [CuiTextareaComponent]\n})\nexport class CuiTextareaModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'input[type=\"checkbox\"][cuiToggle]',\n    template: '',\n    styleUrls: ['./toggle.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiToggleComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiToggleComponent } from './toggle.component';\n\n@NgModule({\n    declarations: [CuiToggleComponent],\n    exports: [CuiToggleComponent]\n})\nexport class CuiToggleModule {}\n","export const EXTENSION_GROUP_COLOR = {\n    model: 'var(--cui-light-green-500)',\n    doc: 'var(--cui-light-blue-500)',\n    image: 'var(--cui-yellow-400)',\n    sheet: 'var(--cui-green-600)',\n    presentations: 'var(--cui-green-600)',\n    video: 'var(--cui-light-green-500)',\n    audio: 'var(--cui-lavender-400)',\n    archive: 'var(--cui-orange-600)',\n    geo: 'var(--cui-magenta-400)'\n} as const;\n\nexport const EXTENSION_TO_GROUP: Record<string, keyof typeof EXTENSION_GROUP_COLOR> = {\n    // 3D Model formats - var(--cui-light-green-500)\n    dae: 'model',\n    fbx: 'model',\n    glb: 'model',\n    gltf: 'model',\n    mtl: 'model',\n    obj: 'model',\n    ply: 'model',\n    step: 'model',\n    stl: 'model',\n    usd: 'model',\n    usda: 'model',\n    usdc: 'model',\n    usdz: 'model',\n    dxf: 'model',\n\n    // Document formats - var(--cui-light-blue-500)\n    azw: 'doc',\n    doc: 'doc',\n    docx: 'doc',\n    epub: 'doc',\n    mobi: 'doc',\n    odt: 'doc',\n    pdf: 'doc',\n    ps: 'doc',\n    rtf: 'doc',\n    txt: 'doc',\n    w: 'doc',\n\n    // Spreadsheet formats - var(--cui-green-600)\n    ods: 'sheet',\n    x: 'sheet',\n    xls: 'sheet',\n    xlsx: 'sheet',\n\n    // Presentation formats - var(--cui-green-600)\n    odp: 'presentations',\n    p: 'presentations',\n    pt: 'presentations',\n    ppt: 'presentations',\n    pptx: 'presentations',\n    sldx: 'presentations',\n\n    // Video formats - var(--cui-light-green-500)\n    '3g2': 'video',\n    '3gp': 'video',\n    avi: 'video',\n    flv: 'video',\n    m4v: 'video',\n    mkv: 'video',\n    mov: 'video',\n    mp4: 'video',\n    mpg: 'video',\n    pr: 'video',\n    rm: 'video',\n    rmvb: 'video',\n    vob: 'video',\n    webm: 'video',\n    wmv: 'video',\n\n    // Audio formats - var(--cui-lavender-400)\n    aac: 'audio',\n    aif: 'audio',\n    aiff: 'audio',\n    alac: 'audio',\n    amr: 'audio',\n    au: 'audio',\n    dsd: 'audio',\n    flac: 'audio',\n    m4a: 'audio',\n    mp3: 'audio',\n    ogg: 'audio',\n    opus: 'audio',\n    pcm: 'audio',\n    wav: 'audio',\n    wma: 'audio',\n\n    // Archive formats - var(--cui-orange-600)\n    '7z': 'archive',\n    arj: 'archive',\n    gz: 'archive',\n    rar: 'archive',\n    sfx: 'archive',\n    tar: 'archive',\n    zip: 'archive',\n\n    // Geographic Data formats - var(--cui-magenta-400)\n    geojson: 'geo',\n    gpx: 'geo',\n    kml: 'geo',\n    kmz: 'geo',\n    shp: 'geo',\n\n    // Image formats - var(--cui-yellow-400)\n    arw: 'image',\n    bmp: 'image',\n    cr2: 'image',\n    dng: 'image',\n    gif: 'image',\n    ico: 'image',\n    jpeg: 'image',\n    jpg: 'image',\n    nef: 'image',\n    orf: 'image',\n    pef: 'image',\n    png: 'image',\n    raf: 'image',\n    raw: 'image',\n    svg: 'image',\n    tga: 'image',\n    tif: 'image',\n    tiff: 'image',\n    webp: 'image',\n    xcf: 'image'\n} as const;\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { EXTENSION_GROUP_COLOR, EXTENSION_TO_GROUP } from './file-icon.options';\n\n@Component({\n    selector: 'cui-file-icon',\n    imports: [CuiSvgModule],\n    standalone: true,\n    templateUrl: 'file-icon.component.html',\n    styleUrl: 'file-icon.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFileIconComponent {\n    protected readonly extensionColor = computed(() => this.color() ?? this.getColorByExtension(this.extension()));\n\n    public readonly extension = input.required<string>();\n    public readonly color = input<string>();\n\n    private getColorByExtension(extension: string): string {\n        return EXTENSION_GROUP_COLOR[EXTENSION_TO_GROUP[extension]];\n    }\n}\n","@if (extensionColor(); as color) {\n    <cui-svg\n        icon=\"cuiIconBoldFileDefaultSm\"\n        [color]=\"color\"\n        class=\"icon\"\n    ></cui-svg>\n\n    <span class=\"extension\">{{ extension() }}</span>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport { CuiSvgModule } from '../../../../components/svg';\n\n@Component({\n    selector: 'cui-filter-remove-button',\n    standalone: true,\n    imports: [CuiSvgModule],\n    templateUrl: './filter-remove-button.template.html',\n    styleUrls: ['./filter-remove-button.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFilterRemoveButtonComponent {\n    public readonly label = input.required<string>();\n\n    public readonly removed = output<void>();\n\n    public onRemove(): void {\n        this.removed.emit();\n    }\n}\n","<button\n    type=\"button\"\n    class=\"filter-remove-button\"\n>\n    <cui-svg\n        icon=\"cuiIconVector\"\n        (click)=\"onRemove(); $event.stopPropagation()\"\n    />\n    <span class=\"filter-remove-button__label\">{{ label() }}:</span>\n</button>\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiButtonModule } from '../../../../components/button';\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\nimport { CuiInputModule } from '../../../../components/input-text';\nimport { CuiSvgModule } from '../../../../components/svg';\nimport { CuiTooltipDirective } from '../../../../directives';\nimport type { CuiActiveFilter, CuiFilterBarTranslations } from '../../filter-bar.interfaces';\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\n\n@Component({\n    selector: 'cui-string-filter',\n    standalone: true,\n    imports: [\n        CuiButtonModule,\n        CuiDropdownDirective,\n        CuiFilterRemoveButtonComponent,\n        CuiInputModule,\n        CuiSvgModule,\n        CuiTooltipDirective,\n        FormsModule\n    ],\n    templateUrl: './string-filter.template.html',\n    styleUrls: ['./string-filter.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiStringFilterComponent {\n    public readonly filter = input.required<CuiActiveFilter>();\n    public readonly translations = input.required<CuiFilterBarTranslations>();\n    public readonly removed = output<string>();\n    public readonly changed = output<CuiActiveFilter>();\n\n    protected readonly tmpValue = signal('');\n\n    protected readonly currentValue = computed(() => {\n        const f = this.filter();\n\n        return f.value.type === 'string' ? f.value.value : '';\n    });\n\n    protected readonly hasValue = computed(() => !!this.currentValue());\n\n    protected onRemove(): void {\n        this.removed.emit(this.filter().id);\n    }\n\n    protected onDropdownOpened(opened: boolean): void {\n        if (opened) {\n            this.tmpValue.set(this.currentValue());\n        }\n    }\n\n    protected onTmpValueChange(value: string): void {\n        this.tmpValue.set(value);\n    }\n\n    protected applyValue(dropdown: CuiDropdownDirective): void {\n        const f = this.filter();\n\n        if (f.value.type !== 'string') {\n            return;\n        }\n\n        this.changed.emit({\n            ...f,\n            value: { ...f.value, value: this.tmpValue() }\n        });\n        dropdown.close();\n    }\n}","<cui-filter-remove-button\n    [label]=\"filter().field.label\"\n    (removed)=\"onRemove()\"\n/>\n\n<button\n    type=\"button\"\n    class=\"string-filter__trigger\"\n    [class.string-filter__trigger--active]=\"hasValue()\"\n    [cuiDropdown]=\"dropdownTpl\"\n    #dropdown=\"cuiDropdown\"\n    (isOpened)=\"onDropdownOpened($event)\"\n>\n    @if (hasValue()) {\n        <span\n            class=\"string-filter__value\"\n            [cuiTooltip]=\"currentValue()\"\n        >\n            {{ currentValue() }}\n        </span>\n    } @else {\n        <span class=\"string-filter__placeholder\">{{ translations().enterValue }}</span>\n    }\n    <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n    <div class=\"string-filter__dropdown\">\n        <div class=\"string-filter__label\">\n            {{ translations().filterBy }} {{ filter().field.label }}\n        </div>\n        <cui-input-text\n            [ngModel]=\"tmpValue()\"\n            (ngModelChange)=\"onTmpValueChange($event)\"\n            maxlength=\"25\"\n            [cuiTextFieldPlaceholder]=\"translations().enterValue\"\n        />\n        <div class=\"string-filter__footer\">\n            <button\n                type=\"button\"\n                cuiButton\n                size=\"xs\"\n                appearance=\"secondary\"\n                (click)=\"dropdown.close()\"\n            >\n                {{ translations().cancel }}\n            </button>\n            <button\n                type=\"button\"\n                cuiButton\n                size=\"xs\"\n                appearance=\"action-cyan\"\n                (click)=\"applyValue(dropdown)\"\n            >\n                {{ translations().apply }}\n            </button>\n        </div>\n    </div>\n</ng-template>","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiButtonModule } from '../../../../components/button';\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\nimport { CuiInputNumberModule } from '../../../../components/input-number';\nimport { CuiSvgModule } from '../../../../components/svg';\nimport { CuiTooltipDirective } from '../../../../directives';\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiFilterValue, CuiRangeFilterField } from '../../filter-bar.interfaces';\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\n\n@Component({\n    selector: 'cui-range-filter',\n    standalone: true,\n    imports: [\n        CuiButtonModule,\n        CuiDropdownDirective,\n        CuiFilterRemoveButtonComponent,\n        CuiInputNumberModule,\n        CuiSvgModule,\n        CuiTooltipDirective,\n        FormsModule\n    ],\n    templateUrl: './range-filter.template.html',\n    styleUrls: ['./range-filter.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRangeFilterComponent {\n    public readonly filter = input.required<CuiActiveFilter>();\n    public readonly translations = input.required<CuiFilterBarTranslations>();\n    public readonly removed = output<string>();\n    public readonly changed = output<CuiActiveFilter>();\n\n    protected readonly tmpMin = signal<number | null>(null);\n    protected readonly tmpMax = signal<number | null>(null);\n\n    protected readonly currentMin = computed(() => {\n        const f = this.filter();\n\n        return f.value.type === 'range' ? f.value.min : null;\n    });\n\n    protected readonly currentMax = computed(() => {\n        const f = this.filter();\n\n        return f.value.type === 'range' ? f.value.max : null;\n    });\n\n    protected readonly hasValue = computed(() => this.currentMin() !== null || this.currentMax() !== null);\n\n    protected readonly displayValue = computed(() => {\n        const min = this.currentMin();\n        const max = this.currentMax();\n\n        if (min !== null && max !== null) {\n            return `${min} – ${max}`;\n        }\n\n        if (min !== null) {\n            return `≥ ${min}`;\n        }\n\n        if (max !== null) {\n            return `≤ ${max}`;\n        }\n\n        return '';\n    });\n\n    protected readonly minPlaceholder = computed(() => {\n        const field = this.filter().field as CuiRangeFilterField;\n\n        return field.rangeConfig?.minPlaceholder ?? 'MIN';\n    });\n\n    protected readonly maxPlaceholder = computed(() => {\n        const field = this.filter().field as CuiRangeFilterField;\n\n        return field.rangeConfig?.maxPlaceholder ?? 'MAX';\n    });\n\n    protected onRemove(): void {\n        this.removed.emit(this.filter().id);\n    }\n\n    protected onDropdownOpened(isOpened: boolean): void {\n        if (isOpened) {\n            this.tmpMin.set(this.currentMin());\n            this.tmpMax.set(this.currentMax());\n        }\n    }\n\n    protected onTmpMinChange(value: number | null): void {\n        this.tmpMin.set(value);\n    }\n\n    protected onTmpMaxChange(value: number | null): void {\n        this.tmpMax.set(value);\n    }\n\n    protected applyValue(dropdown: CuiDropdownDirective): void {\n        const f = this.filter();\n\n        if (f.value.type !== 'range') {\n            return;\n        }\n\n        const newValue: CuiFilterValue = {\n            type: 'range',\n            min: this.tmpMin(),\n            max: this.tmpMax()\n        };\n\n        this.changed.emit({ ...f, value: newValue });\n        dropdown.close();\n    }\n}","<cui-filter-remove-button\n    [label]=\"filter().field.label\"\n    (removed)=\"onRemove()\"\n/>\n\n<button\n    type=\"button\"\n    class=\"range-filter__trigger\"\n    [class.range-filter__trigger_active]=\"hasValue()\"\n    [cuiDropdown]=\"dropdownTpl\"\n    #dropdown=\"cuiDropdown\"\n    (isOpened)=\"onDropdownOpened($event)\"\n>\n    @if (hasValue()) {\n        <span\n            class=\"range-filter__value\"\n            [cuiTooltip]=\"displayValue()\"\n        >\n            {{ displayValue() }}\n        </span>\n    } @else {\n        <span class=\"range-filter__placeholder\">{{ translations().enterValue }}</span>\n    }\n    <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n    <div class=\"range-filter__dropdown\">\n        <div class=\"range-filter__label\">\n            {{ translations().filterBy }} {{ filter().field.label }}\n        </div>\n        <div class=\"range-filter__inputs\">\n            <cui-input-number\n                [ngModel]=\"tmpMin()\"\n                (ngModelChange)=\"onTmpMinChange($event)\"\n                [cuiTextFieldPlaceholder]=\"minPlaceholder()\"\n            />\n            <span class=\"range-filter__separator\">–</span>\n            <cui-input-number\n                [ngModel]=\"tmpMax()\"\n                (ngModelChange)=\"onTmpMaxChange($event)\"\n                [cuiTextFieldPlaceholder]=\"maxPlaceholder()\"\n            />\n        </div>\n        <div class=\"range-filter__footer\">\n            <button\n                type=\"button\"\n                cuiButton\n                size=\"xs\"\n                appearance=\"secondary\"\n                (click)=\"dropdown.close()\"\n            >\n                {{ translations().cancel }}\n            </button>\n            <button\n                type=\"button\"\n                cuiButton\n                size=\"xs\"\n                appearance=\"action-cyan\"\n                (click)=\"applyValue(dropdown)\"\n            >\n                {{ translations().apply }}\n            </button>\n        </div>\n    </div>\n</ng-template>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\nimport { CuiSvgModule } from '../../../../components/svg';\nimport { CuiTooltipDirective } from '../../../../directives';\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiSelectFilterField } from '../../filter-bar.interfaces';\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\n\n@Component({\n    selector: 'cui-select-filter',\n    standalone: true,\n    imports: [\n        CuiDropdownDirective,\n        CuiFilterRemoveButtonComponent,\n        CuiSvgModule,\n        CuiTooltipDirective\n    ],\n    templateUrl: './select-filter.template.html',\n    styleUrls: ['./select-filter.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSelectFilterComponent {\n    public readonly filter = input.required<CuiActiveFilter>();\n    public readonly translations = input.required<CuiFilterBarTranslations>();\n    public readonly removed = output<string>();\n    public readonly changed = output<CuiActiveFilter>();\n\n    protected readonly currentValue = computed(() => {\n        const f = this.filter();\n\n        return f.value.type === 'select' ? f.value.value : null;\n    });\n\n    protected readonly currentLabel = computed(() => {\n        const f = this.filter();\n\n        if (f.value.type !== 'select' || !f.value.value) {\n            return '';\n        }\n\n        const selectedValue = f.value.value;\n        const field = f.field as CuiSelectFilterField;\n\n        return field.selectOptions?.find((opt) => opt.value === selectedValue)?.label ?? selectedValue;\n    });\n\n    protected readonly hasValue = computed(() => !!this.currentValue());\n\n    protected readonly options = computed(() => {\n        const field = this.filter().field as CuiSelectFilterField;\n\n        return field.selectOptions ?? [];\n    });\n\n    protected onRemove(): void {\n        this.removed.emit(this.filter().id);\n    }\n\n    protected isOptionSelected(value: string): boolean {\n        return this.currentValue() === value;\n    }\n\n    protected selectOption(value: string, dropdown: CuiDropdownDirective): void {\n        const f = this.filter();\n\n        if (f.value.type !== 'select') {\n            return;\n        }\n\n        this.changed.emit({\n            ...f,\n            value: { ...f.value, value: f.value.value === value ? null : value }\n        });\n        dropdown.close();\n    }\n}","<cui-filter-remove-button\n    [label]=\"filter().field.label\"\n    (removed)=\"onRemove()\"\n/>\n\n<button\n    type=\"button\"\n    class=\"select-filter__trigger\"\n    [class.select-filter__trigger--active]=\"hasValue()\"\n    [cuiDropdown]=\"dropdownTpl\"\n    #dropdown=\"cuiDropdown\"\n>\n    @if (hasValue()) {\n        <span\n            class=\"select-filter__value\"\n            [cuiTooltip]=\"currentLabel()\"\n        >\n            {{ currentLabel() }}\n        </span>\n    } @else {\n        <span class=\"select-filter__placeholder\">{{ translations().selectValue }}</span>\n    }\n    <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n    <div class=\"select-filter__dropdown\">\n        @for (opt of options(); track opt.value) {\n            <button\n                type=\"button\"\n                class=\"select-filter__option\"\n                [class.select-filter__option--selected]=\"isOptionSelected(opt.value)\"\n                (click)=\"selectOption(opt.value, dropdown)\"\n            >\n                {{ opt.label }}\n            </button>\n        }\n    </div>\n</ng-template>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { CuiCheckboxModule } from '../../../../components/checkbox';\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\nimport { CuiSvgModule } from '../../../../components/svg';\nimport { CuiTooltipDirective } from '../../../../directives';\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiMultiSelectFilterField } from '../../filter-bar.interfaces';\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\n\n@Component({\n    selector: 'cui-multiselect-filter',\n    standalone: true,\n    imports: [\n        CuiCheckboxModule,\n        CuiDropdownDirective,\n        CuiFilterRemoveButtonComponent,\n        CuiSvgModule,\n        CuiTooltipDirective\n    ],\n    templateUrl: './multiselect-filter.template.html',\n    styleUrls: ['./multiselect-filter.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiMultiSelectFilterComponent {\n    public readonly filter = input.required<CuiActiveFilter>();\n    public readonly translations = input.required<CuiFilterBarTranslations>();\n    public readonly removed = output<string>();\n    public readonly changed = output<CuiActiveFilter>();\n\n    protected readonly currentValues = computed(() => {\n        const f = this.filter();\n\n        return f.value.type === 'multiselect' ? f.value.values : [];\n    });\n\n    protected readonly currentLabels = computed(() => {\n        const f = this.filter();\n\n        if (f.value.type !== 'multiselect') {\n            return '';\n        }\n\n        const field = f.field as CuiMultiSelectFilterField;\n\n        return f.value.values\n            .map((val) => field.multiSelectOptions?.find((opt) => opt.value === val)?.label ?? val)\n            .join(', ');\n    });\n\n    protected readonly hasValue = computed(() => this.currentValues().length > 0);\n\n    protected readonly options = computed(() => {\n        const field = this.filter().field as CuiMultiSelectFilterField;\n\n        return field.multiSelectOptions ?? [];\n    });\n\n    protected onRemove(): void {\n        this.removed.emit(this.filter().id);\n    }\n\n    protected isOptionSelected(value: string): boolean {\n        return this.currentValues().includes(value);\n    }\n\n    protected toggleOption(value: string): void {\n        const f = this.filter();\n\n        if (f.value.type !== 'multiselect') {\n            return;\n        }\n\n        const currentValues = f.value.values;\n        const newValues = currentValues.includes(value)\n            ? currentValues.filter((v) => v !== value)\n            : [...currentValues, value];\n\n        this.changed.emit({\n            ...f,\n            value: { ...f.value, values: newValues }\n        });\n    }\n}","<cui-filter-remove-button\n    [label]=\"filter().field.label\"\n    (removed)=\"onRemove()\"\n/>\n\n<button\n    type=\"button\"\n    class=\"multiselect-filter__trigger\"\n    [class.multiselect-filter__trigger--active]=\"hasValue()\"\n    [cuiDropdown]=\"dropdownTpl\"\n>\n    @if (hasValue()) {\n        <span\n            class=\"multiselect-filter__value\"\n            [cuiTooltip]=\"currentLabels()\"\n        >\n            {{ currentLabels() }}\n        </span>\n    } @else {\n        <span class=\"multiselect-filter__placeholder\">{{ translations().selectValues }}</span>\n    }\n    <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n    <div class=\"multiselect-filter__dropdown\">\n        @for (opt of options(); track opt.value) {\n            <label class=\"multiselect-filter__option\">\n                <input\n                    type=\"checkbox\"\n                    cuiCheckbox\n                    [checked]=\"isOptionSelected(opt.value)\"\n                    (change)=\"toggleOption(opt.value)\"\n                />\n                <span>{{ opt.label }}</span>\n            </label>\n        }\n    </div>\n</ng-template>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport { CuiButtonModule } from '../../../../components/button';\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\nimport { CuiSvgModule } from '../../../../components/svg';\nimport type { CuiFilterField } from '../../filter-bar.interfaces';\n\n@Component({\n    selector: 'cui-add-filter-button',\n    standalone: true,\n    imports: [CuiButtonModule, CuiDropdownDirective, CuiSvgModule],\n    templateUrl: './add-filter-button.template.html',\n    styleUrls: ['./add-filter-button.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAddFilterButtonComponent {\n    public readonly availableFields = input.required<CuiFilterField[]>();\n    public readonly addFilterLabel = input<string>('Add filter');\n\n    public readonly fieldSelected = output<CuiFilterField>();\n\n    protected selectField(field: CuiFilterField, dropdown: CuiDropdownDirective): void {\n        this.fieldSelected.emit(field);\n        dropdown.close();\n    }\n}","<div class=\"cui-add-filter\">\n    <button\n        type=\"button\"\n        class=\"cui-add-filter__btn\"\n        cuiButton\n        size=\"xxs\"\n        appearance=\"outlined\"\n        [cuiDropdown]=\"dropdownTpl\"\n        #dropdown=\"cuiDropdown\"\n    >\n        <cui-svg\n            icon=\"cuiIconPlusSm\"\n            [width]=\"16\"\n            color=\"var(--cui-info)\"\n        />\n        {{ addFilterLabel() }}\n    </button>\n    <ng-template #dropdownTpl>\n        <div class=\"cui-add-filter__dropdown\">\n            @for (field of availableFields(); track field.id) {\n                <button\n                    type=\"button\"\n                    class=\"cui-add-filter__dropdown-item\"\n                    (click)=\"selectField(field, dropdown)\"\n                >\n                    {{ field.label }}\n                </button>\n            }\n        </div>\n    </ng-template>\n</div>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { CuiButtonModule } from '../../../../components/button';\nimport { CuiDateRangeCalendarComponent } from '../../../date-range-calendar';\nimport { CuiDropdownDirective } from '../../../../components/dropdown';\nimport { CuiSvgModule } from '../../../../components/svg';\nimport type { CuiActiveFilter, CuiDateFilterField, CuiDateOperator, CuiFilterBarTranslations } from '../../filter-bar.interfaces';\nimport { CuiFilterRemoveButtonComponent } from '../filter-remove-button/filter-remove-button.component';\n\ninterface OperatorOption {\n    value: CuiDateOperator;\n    label: string;\n}\n\nconst DEFAULT_OPERATOR_LABELS: Record<CuiDateOperator, string> = {\n    on: 'On',\n    before: 'Before',\n    after: 'After',\n    between: 'Between'\n};\n\n@Component({\n    selector: 'cui-date-filter',\n    standalone: true,\n    imports: [\n        CuiButtonModule,\n        CuiDateRangeCalendarComponent,\n        CuiDropdownDirective,\n        CuiFilterRemoveButtonComponent,\n        CuiSvgModule\n    ],\n    templateUrl: './date-filter.template.html',\n    styleUrls: ['./date-filter.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDateFilterComponent {\n    public readonly filter = input.required<CuiActiveFilter>();\n    public readonly translations = input.required<CuiFilterBarTranslations>();\n    public readonly removed = output<string>();\n    public readonly changed = output<CuiActiveFilter>();\n\n    protected readonly operatorOptions = computed((): OperatorOption[] => {\n        const field = this.filter().field as CuiDateFilterField;\n        const operators: CuiDateOperator[] = field.dateOperators ?? ['on', 'before', 'after', 'between'];\n\n        return operators.map((op) => ({\n            value: op,\n            label: field.operatorLabels?.[op] ?? DEFAULT_OPERATOR_LABELS[op]\n        }));\n    });\n\n    protected readonly currentOperator = computed((): CuiDateOperator => {\n        const f = this.filter();\n\n        return f.value.type === 'date' ? f.value.operator : 'on';\n    });\n\n    protected readonly operatorLabel = computed(() => {\n        const options = this.operatorOptions();\n        const op = options.find((o) => o.value === this.currentOperator());\n\n        return op?.label ?? '';\n    });\n\n    protected readonly dateLabel = computed(() => {\n        const f = this.filter();\n\n        if (f.value.type !== 'date') {\n            return '';\n        }\n\n        const dateValue = f.value;\n\n        if (dateValue.operator === 'between') {\n            if (dateValue.rangeStart && dateValue.rangeEnd) {\n                return `${this.formatDate(dateValue.rangeStart)} - ${this.formatDate(dateValue.rangeEnd)}`;\n            }\n\n            return '';\n        }\n\n        return dateValue.value ? this.formatDate(dateValue.value) : '';\n    });\n\n    protected readonly hasValue = computed(() => {\n        const f = this.filter();\n\n        if (f.value.type !== 'date') {\n            return false;\n        }\n\n        if (f.value.operator === 'between') {\n            return !!f.value.rangeStart && !!f.value.rangeEnd;\n        }\n\n        return !!f.value.value;\n    });\n\n    protected readonly rangeStart = computed((): Date | null => {\n        const f = this.filter();\n\n        return f.value.type === 'date' && f.value.rangeStart ? new Date(f.value.rangeStart) : null;\n    });\n\n    protected readonly rangeEnd = computed((): Date | null => {\n        const f = this.filter();\n\n        return f.value.type === 'date' && f.value.rangeEnd ? new Date(f.value.rangeEnd) : null;\n    });\n\n    protected readonly selectedDate = computed((): Date | null => {\n        const f = this.filter();\n\n        return f.value.type === 'date' && f.value.value ? new Date(f.value.value) : null;\n    });\n\n    protected readonly calendarMode = computed((): 'single' | 'range' => (this.currentOperator() === 'between' ? 'range' : 'single'));\n\n    protected onRemove(): void {\n        this.removed.emit(this.filter().id);\n    }\n\n    protected selectOperator(operator: CuiDateOperator, dropdown: CuiDropdownDirective): void {\n        const f = this.filter();\n\n        if (f.value.type !== 'date') {\n            return;\n        }\n\n        const isBetween = operator === 'between';\n\n        const updated: CuiActiveFilter = {\n            ...f,\n            value: {\n                type: 'date',\n                operator,\n                value: isBetween ? null : f.value.value,\n                rangeStart: isBetween ? f.value.rangeStart : null,\n                rangeEnd: isBetween ? f.value.rangeEnd : null\n            }\n        };\n\n        this.changed.emit(updated);\n        dropdown.close();\n    }\n\n    protected onRangeSelected(range: { start: Date; end: Date }, dropdown: CuiDropdownDirective): void {\n        const f = this.filter();\n\n        if (f.value.type !== 'date') {\n            return;\n        }\n\n        this.changed.emit({\n            ...f,\n            value: {\n                type: 'date',\n                operator: 'between',\n                value: null,\n                rangeStart: range.start,\n                rangeEnd: range.end\n            }\n        });\n        dropdown.close();\n    }\n\n    protected onSingleDateSelected(date: Date, dropdown: CuiDropdownDirective): void {\n        const f = this.filter();\n\n        if (f.value.type !== 'date') {\n            return;\n        }\n\n        this.changed.emit({\n            ...f,\n            value: {\n                type: 'date',\n                operator: f.value.operator,\n                value: date,\n                rangeStart: null,\n                rangeEnd: null\n            }\n        });\n        dropdown.close();\n    }\n\n    private formatDate(date: Date): string {\n        return date.toLocaleDateString();\n    }\n}\n","<cui-filter-remove-button\n    [label]=\"filter().field.label\"\n    (removed)=\"onRemove()\"\n/>\n\n<button\n    type=\"button\"\n    class=\"date-filter__operator\"\n    [cuiDropdown]=\"operatorDropdownTpl\"\n    #operatorDropdown=\"cuiDropdown\"\n>\n    <span class=\"date-filter__operator-label\">{{ operatorLabel() }}</span>\n    <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<button\n    type=\"button\"\n    class=\"date-filter__trigger\"\n    [class.date-filter__trigger--active]=\"hasValue()\"\n    [cuiDropdown]=\"calendarDropdownTpl\"\n    #calendarDropdown=\"cuiDropdown\"\n>\n    @if (dateLabel()) {\n        <span class=\"date-filter__value\">\n            {{ dateLabel() }}\n        </span>\n    } @else {\n        <span class=\"date-filter__placeholder\">Select date</span>\n    }\n    <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #operatorDropdownTpl>\n    <div class=\"date-filter__dropdown\">\n        @for (op of operatorOptions(); track op.value) {\n            <button\n                type=\"button\"\n                class=\"date-filter__option\"\n                [class.date-filter__option--selected]=\"currentOperator() === op.value\"\n                (click)=\"selectOperator(op.value, operatorDropdown)\"\n            >\n                {{ op.label }}\n            </button>\n        }\n    </div>\n</ng-template>\n\n<ng-template #calendarDropdownTpl>\n    <div class=\"date-filter__calendar-dropdown\">\n        <cui-date-range-calendar\n            [mode]=\"calendarMode()\"\n            [startDate]=\"rangeStart()\"\n            [endDate]=\"rangeEnd()\"\n            [selectedDate]=\"selectedDate()\"\n            (rangeSelected)=\"onRangeSelected($event, calendarDropdown)\"\n            (dateSelected)=\"onSingleDateSelected($event, calendarDropdown)\"\n            (cancelled)=\"calendarDropdown.close()\"\n        />\n    </div>\n</ng-template>\n","// --- Public types (exported in public API) ---\n\nexport interface CuiBaseFilterField {\n    readonly id: string;\n    readonly label: string;\n    readonly operatorLabels?: Record<string, string>;\n}\n\nexport interface CuiStringFilterField extends CuiBaseFilterField {\n    readonly type: 'string';\n    readonly outputMapping: CuiStringOutputMapping;\n    readonly stringOperators?: CuiStringOperator[];\n}\n\nexport interface CuiSelectFilterField extends CuiBaseFilterField {\n    readonly type: 'select';\n    readonly outputMapping: CuiSelectOutputMapping;\n    readonly selectOptions: CuiFilterOption[];\n    readonly selectOperators?: CuiSelectOperator[];\n}\n\nexport interface CuiMultiSelectFilterField extends CuiBaseFilterField {\n    readonly type: 'multiselect';\n    readonly outputMapping: CuiMultiSelectOutputMapping;\n    readonly multiSelectOptions: CuiFilterOption[];\n    readonly multiSelectOperators?: CuiMultiSelectOperator[];\n}\n\nexport interface CuiDateFilterField extends CuiBaseFilterField {\n    readonly type: 'date';\n    readonly outputMapping: CuiDateOutputMapping;\n    readonly dateOperators?: CuiDateOperator[];\n}\n\nexport interface CuiRangeFilterField extends CuiBaseFilterField {\n    readonly type: 'range';\n    readonly outputMapping: CuiRangeOutputMapping;\n    readonly rangeConfig?: { readonly minPlaceholder?: string; readonly maxPlaceholder?: string };\n}\n\nexport type CuiFilterField =\n    | CuiStringFilterField\n    | CuiSelectFilterField\n    | CuiMultiSelectFilterField\n    | CuiDateFilterField\n    | CuiRangeFilterField;\n\nexport type CuiStringOutputMapping = { readonly value: string };\nexport type CuiSelectOutputMapping = { readonly value: string };\nexport type CuiMultiSelectOutputMapping = { readonly values: string };\nexport type CuiDateOutputMapping = { readonly start: string; readonly end: string };\nexport type CuiRangeOutputMapping = { readonly min: string; readonly max: string };\n\nexport interface CuiFilterOption {\n    readonly value: string;\n    readonly label: string;\n}\n\nexport type CuiStringOperator = 'contains' | 'equals' | 'startsWith' | 'endsWith';\nexport type CuiSelectOperator = 'equals' | 'notEquals';\nexport type CuiMultiSelectOperator = 'in' | 'notIn' | 'containsAll';\nexport type CuiDateOperator = 'between' | 'on' | 'after' | 'before';\n\nexport interface CuiFilterBarTranslations {\n    readonly addFilter: string;\n    readonly apply: string;\n    readonly cancel: string;\n    readonly enterValue: string;\n    readonly selectValue: string;\n    readonly selectValues: string;\n    readonly filterBy: string;\n}\n\nexport const CUI_FILTER_BAR_DEFAULT_TRANSLATIONS: CuiFilterBarTranslations = {\n    addFilter: 'Add filter',\n    apply: 'Apply',\n    cancel: 'Cancel',\n    enterValue: 'Enter value',\n    selectValue: 'Select value',\n    selectValues: 'Select values',\n    filterBy: 'Filter by'\n};\n\n// --- Internal types (NOT exported in public API) ---\n\nexport type CuiFilterValue =\n    | { readonly type: 'string'; readonly operator: CuiStringOperator; readonly value: string }\n    | { readonly type: 'select'; readonly operator: CuiSelectOperator; readonly value: string | null }\n    | { readonly type: 'multiselect'; readonly operator: CuiMultiSelectOperator; readonly values: string[] }\n    | { readonly type: 'date'; readonly operator: CuiDateOperator; readonly value: Date | null; readonly rangeStart: Date | null; readonly rangeEnd: Date | null }\n    | { readonly type: 'range'; readonly min: number | null; readonly max: number | null };\n\nexport interface CuiActiveFilter {\n    readonly id: string;\n    readonly field: CuiFilterField;\n    readonly value: CuiFilterValue;\n}\n","import type {\n    CuiActiveFilter,\n    CuiDateFilterField,\n    CuiDateOperator,\n    CuiFilterField,\n    CuiFilterValue,\n    CuiMultiSelectFilterField,\n    CuiRangeFilterField,\n    CuiSelectFilterField,\n    CuiStringFilterField\n} from './filter-bar.interfaces';\n\nexport function buildOutputObject(filters: CuiActiveFilter[]): Record<string, unknown> {\n    const result: Record<string, unknown> = {};\n\n    for (const filter of filters) {\n        const entries = extractEntries(filter.field, filter.value);\n\n        for (const [path, val] of entries) {\n            setByPath(result, path, val);\n        }\n    }\n\n    return result;\n}\n\nfunction extractEntries(field: CuiFilterField, value: CuiFilterValue): [string, unknown][] {\n    switch (field.type) {\n        case 'string': {\n            const v = value as CuiFilterValue & { type: 'string' };\n            if (!v.value) return [];\n            return [[(field as CuiStringFilterField).outputMapping.value, v.value]];\n        }\n        case 'select': {\n            const v = value as CuiFilterValue & { type: 'select' };\n            if (v.value == null) return [];\n            return [[(field as CuiSelectFilterField).outputMapping.value, v.value]];\n        }\n        case 'multiselect': {\n            const v = value as CuiFilterValue & { type: 'multiselect' };\n            if (!v.values.length) return [];\n            return [[(field as CuiMultiSelectFilterField).outputMapping.values, v.values]];\n        }\n        case 'date': {\n            const v = value as CuiFilterValue & { type: 'date' };\n            const mapping = (field as CuiDateFilterField).outputMapping;\n            return buildDateEntries(v.operator, v.value, v.rangeStart, v.rangeEnd, mapping.start, mapping.end);\n        }\n        case 'range': {\n            const v = value as CuiFilterValue & { type: 'range' };\n            const mapping = (field as CuiRangeFilterField).outputMapping;\n            const entries: [string, unknown][] = [];\n            if (v.min != null) entries.push([mapping.min, v.min]);\n            if (v.max != null) entries.push([mapping.max, v.max]);\n            return entries;\n        }\n    }\n}\n\nfunction buildDateEntries(\n    operator: CuiDateOperator,\n    value: Date | null,\n    rangeStart: Date | null,\n    rangeEnd: Date | null,\n    startPath: string,\n    endPath: string\n): [string, unknown][] {\n    const entries: [string, unknown][] = [];\n\n    switch (operator) {\n        case 'on':\n            if (value) {\n                entries.push([startPath, formatDateStart(value)]);\n                entries.push([endPath, formatDateEnd(value)]);\n            }\n            break;\n        case 'before':\n            if (value) {\n                entries.push([endPath, formatDateEnd(value)]);\n            }\n            break;\n        case 'after':\n            if (value) {\n                entries.push([startPath, formatDateStart(value)]);\n            }\n            break;\n        case 'between':\n            if (rangeStart) entries.push([startPath, formatDateStart(rangeStart)]);\n            if (rangeEnd) entries.push([endPath, formatDateEnd(rangeEnd)]);\n            break;\n    }\n\n    return entries;\n}\n\nfunction formatDateStart(date: Date): string {\n    return formatDate(date) + 'T00:00:00';\n}\n\nfunction formatDateEnd(date: Date): string {\n    return formatDate(date) + 'T23:59:59';\n}\n\nfunction formatDate(date: Date): string {\n    const y = date.getFullYear();\n    const m = String(date.getMonth() + 1).padStart(2, '0');\n    const d = String(date.getDate()).padStart(2, '0');\n    return `${y}-${m}-${d}`;\n}\n\nfunction setByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n    const keys = path.split('.');\n    let current: Record<string, unknown> = obj;\n\n    for (let i = 0; i < keys.length - 1; i++) {\n        const key = keys[i];\n        if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {\n            current[key] = {};\n        }\n        current = current[key] as Record<string, unknown>;\n    }\n\n    current[keys[keys.length - 1]] = value;\n}\n\nexport function buildDefaultValue(field: CuiFilterField): CuiFilterValue {\n    switch (field.type) {\n        case 'string':\n            return { type: 'string', operator: field.stringOperators?.[0] ?? 'contains', value: '' };\n        case 'select':\n            return { type: 'select', operator: field.selectOperators?.[0] ?? 'equals', value: null };\n        case 'multiselect':\n            return { type: 'multiselect', operator: field.multiSelectOperators?.[0] ?? 'in', values: [] };\n        case 'date':\n            return { type: 'date', operator: field.dateOperators?.[0] ?? 'on', value: null, rangeStart: null, rangeEnd: null };\n        case 'range':\n            return { type: 'range', min: null, max: null };\n    }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\n\nimport {\n    CuiAddFilterButtonComponent,\n    CuiDateFilterComponent,\n    CuiFilterRemoveButtonComponent,\n    CuiMultiSelectFilterComponent,\n    CuiRangeFilterComponent,\n    CuiSelectFilterComponent,\n    CuiStringFilterComponent\n} from './components';\nimport type { CuiActiveFilter, CuiFilterBarTranslations, CuiFilterField } from './filter-bar.interfaces';\nimport { CUI_FILTER_BAR_DEFAULT_TRANSLATIONS } from './filter-bar.interfaces';\nimport { buildDefaultValue, buildOutputObject } from './filter-bar.utils';\n\n@Component({\n    selector: 'cui-filter-bar',\n    standalone: true,\n    imports: [\n        CuiAddFilterButtonComponent,\n        CuiDateFilterComponent,\n        CuiFilterRemoveButtonComponent,\n        CuiMultiSelectFilterComponent,\n        CuiRangeFilterComponent,\n        CuiSelectFilterComponent,\n        CuiStringFilterComponent\n    ],\n    templateUrl: './filter-bar.template.html',\n    styleUrls: ['./filter-bar.style.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFilterBarComponent {\n    readonly fields = input.required<CuiFilterField[]>();\n    readonly translations = input<CuiFilterBarTranslations>(CUI_FILTER_BAR_DEFAULT_TRANSLATIONS);\n\n    readonly filterChange = output<Record<string, unknown>>();\n\n    readonly _filters = signal<CuiActiveFilter[]>([]);\n\n    readonly availableFields = computed(() => {\n        const usedFieldIds = new Set(this._filters().map(f => f.field.id));\n        return this.fields().filter(f => !usedFieldIds.has(f.id));\n    });\n\n    protected selectField(field: CuiFilterField): void {\n        const newFilter: CuiActiveFilter = {\n            id: crypto.randomUUID(),\n            field,\n            value: buildDefaultValue(field)\n        };\n\n        this._filters.set([...this._filters(), newFilter]);\n        this.emitFilterChange();\n    }\n\n    protected onFilterChanged(updated: CuiActiveFilter): void {\n        const next = this._filters().map(f => (f.id === updated.id ? updated : f));\n        this._filters.set(next);\n        this.emitFilterChange();\n    }\n\n    protected onFilterRemoved(id: string): void {\n        const next = this._filters().filter(f => f.id !== id);\n        this._filters.set(next);\n        this.emitFilterChange();\n    }\n\n    private emitFilterChange(): void {\n        this.filterChange.emit(buildOutputObject(this._filters()));\n    }\n}\n","<div class=\"cui-filter-bar\">\n    <div class=\"cui-filter-bar__list\">\n        @for (filter of _filters(); track filter.id) {\n            @switch (filter.field.type) {\n                @case ('string') {\n                    <cui-string-filter\n                        [filter]=\"filter\"\n                        [translations]=\"translations()\"\n                        (changed)=\"onFilterChanged($event)\"\n                        (removed)=\"onFilterRemoved($event)\"\n                    />\n                }\n                @case ('date') {\n                    <cui-date-filter\n                        [filter]=\"filter\"\n                        [translations]=\"translations()\"\n                        (changed)=\"onFilterChanged($event)\"\n                        (removed)=\"onFilterRemoved($event)\"\n                    />\n                }\n                @case ('range') {\n                    <cui-range-filter\n                        [filter]=\"filter\"\n                        [translations]=\"translations()\"\n                        (changed)=\"onFilterChanged($event)\"\n                        (removed)=\"onFilterRemoved($event)\"\n                    />\n                }\n                @case ('select') {\n                    <cui-select-filter\n                        [filter]=\"filter\"\n                        [translations]=\"translations()\"\n                        (changed)=\"onFilterChanged($event)\"\n                        (removed)=\"onFilterRemoved($event)\"\n                    />\n                }\n                @case ('multiselect') {\n                    <cui-multiselect-filter\n                        [filter]=\"filter\"\n                        [translations]=\"translations()\"\n                        (changed)=\"onFilterChanged($event)\"\n                        (removed)=\"onFilterRemoved($event)\"\n                    />\n                }\n            }\n        }\n\n        @if (availableFields().length > 0) {\n            <cui-add-filter-button\n                [availableFields]=\"availableFields()\"\n                [addFilterLabel]=\"translations().addFilter\"\n                (fieldSelected)=\"selectField($event)\"\n            />\n        }\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { CuiFilterBarComponent } from './filter-bar.component';\n\n@NgModule({\n    imports: [CuiFilterBarComponent],\n    exports: [CuiFilterBarComponent]\n})\nexport class CuiFilterBarModule {}\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';\n\nexport function urlValidator(): ValidatorFn {\n    return ({ value }: AbstractControl): ValidationErrors | null => {\n        try {\n            new URL(value);\n\n            return null;\n        } catch {\n            return { url: true };\n        }\n    };\n}\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, CuiApiContext, 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(\r\n        editorId: string,\r\n        addedBlocks: CuiFullBlockData[],\r\n        requestOptions?: CuiApiContext\r\n    ): 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, requestOptions) : 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        requestOptions?: CuiApiContext\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) =>\r\n            this.jtextService.updateBlock(block, requestOptions)\r\n        );\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        requestOptions?: CuiApiContext\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$ = uniqueBackendIds.length\r\n            ? this.jtextService.deleteBlocks(editorId, uniqueBackendIds, requestOptions)\r\n            : 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        requestOptions: CuiApiContext | undefined,\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, requestOptions)\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';\nimport { NgIf } from '@angular/common';\n\nimport type { Tool } from '../../../editor-tool-modal';\n\n@Component({\n    selector: 'cc-select-option',\n    standalone: true,\n    imports: [NgIf],\n    templateUrl: './select-option.component.html',\n    styleUrls: ['./select-option.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectOptionComponent {\n    @Input({ required: true })\n    public tool!: Tool;\n}\n","<ng-container *ngIf=\"tool\">\n    <img\n        *ngIf=\"tool.image\"\n        class=\"image\"\n        [src]=\"tool.image\"\n        alt=\"\"\n    />\n    <h3 class=\"title\">{{ tool.title }}</h3>\n</ng-container>\n","import { DOCUMENT, NgFor, NgIf } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    inject,\n    Input,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';\n\nimport type { Tool } from '../editor-tool-modal/editor-tool-modal.options';\n\nimport { EDITOR_SELECTOR } from '../../constants';\nimport { MarkerType } from '../../services/markers-service.options';\nimport { CuiMarkersService } from '../../services/markers.service';\n\nimport { SelectOptionComponent } from './component/select-item/select-option.component';\n\n@Component({\n    selector: 'cc-marker-select',\n    imports: [\n        CuiButtonModule,\n        CuiContextMenuModule,\n        CuiInputModule,\n        CuiLabelModule,\n        FormsModule,\n        ReactiveFormsModule,\n        SelectOptionComponent,\n        NgIf,\n        NgFor\n    ],\n    standalone: true,\n    templateUrl: './marker-select.component.html',\n    styleUrls: ['./marker-select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [CuiClickOutsideDirective],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => MarkerSelectComponent),\n            multi: true\n        }\n    ]\n})\nexport class MarkerSelectComponent implements OnInit, OnDestroy {\n    private readonly document = inject(DOCUMENT);\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n    private readonly element = inject(ElementRef).nativeElement;\n    private readonly markersService = inject(CuiMarkersService);\n\n    private SPACE_BETWEEN_TARGET_AND_LIST = 5;\n\n    @Input()\n    public target!: HTMLButtonElement;\n\n    @Input()\n    public set space(value: number) {\n        this.SPACE_BETWEEN_TARGET_AND_LIST = value;\n    }\n\n    protected isVisible = signal(false);\n    protected isHidden = signal(true);\n    protected editor!: HTMLElement;\n    protected value!: CuiNullable<Tool>;\n    // TODO: set current type\n    protected elements = this.markersService.getMarkersByType(MarkerType.tool);\n    protected onChange!: CuiOnChange<unknown>;\n    protected onTouched!: CuiOnTouched;\n    protected readonly targetToggleEventListener = (): void => {\n        this.isVisible.update((prev) => !prev);\n\n        if (!this.isVisible()) {\n            return;\n        }\n\n        this.calculateDropdownPosition();\n    };\n\n    @HostBinding('class._hidden')\n    protected get hide(): boolean {\n        return this.isHidden();\n    }\n\n    public writeValue(value: Tool): void {\n        this.value = value;\n    }\n\n    public registerOnChange(fn: CuiOnChange<unknown>): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: CuiOnTouched): void {\n        this.onTouched = fn;\n    }\n\n    protected onScroll(): void {\n        this.isVisible.set(false);\n    }\n\n    public ngOnInit(): void {\n        this.initTargetElementListener();\n        this.initClickOutsideSubscription();\n        this.initOnCloseWhenEditorScroll();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroyEventListeners();\n    }\n\n    protected onToolClick(tool: Tool): void {\n        this.value = tool;\n\n        this.onChange(this.value);\n        this.onTouched();\n\n        // this.isVisible.set(false);\n    }\n\n    private initTargetElementListener(): void {\n        this.target.addEventListener('click', this.targetToggleEventListener);\n    }\n\n    private initClickOutsideSubscription(): void {\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\n            if (this.target.contains(target) || !this.isVisible()) {\n                return;\n            }\n\n            this.isVisible.set(false);\n        });\n    }\n\n    private initOnCloseWhenEditorScroll(): void {\n        this.editor = this.element.closest(EDITOR_SELECTOR);\n\n        this.editor?.addEventListener('scroll', this.onScroll.bind(this));\n    }\n\n    private destroyEventListeners(): void {\n        this.editor?.removeEventListener('scroll', this.onScroll.bind(this));\n        this.target?.addEventListener('click', this.targetToggleEventListener);\n    }\n\n    private calculateDropdownPosition(): void {\n        this.isHidden.set(true);\n\n        setTimeout(() => {\n            const target = this.target;\n            const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\n            const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\n                this.document.documentElement;\n            const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);\n            const distanceToRight = documentClientWidth - targetRectLeft;\n            const isListRight = distanceToRight < this.element.offsetWidth;\n            const isListAbove = distanceToBottom < this.element.offsetHeight;\n\n            this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\n            this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\n            this.isHidden.set(false);\n        });\n    }\n\n    private changePositionX(isListRight: boolean, width: number, left: number): void {\n        if (isListRight) {\n            this.element.style.right = 'auto';\n            this.element.style.left = left;\n\n            return;\n        }\n\n        this.element.style.right = left - this.element.offsetWidth + width;\n        this.element.style.left = 'auto';\n    }\n\n    private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\n        if (isListAbove) {\n            this.element.style.top =\n                bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n\n            return;\n        }\n\n        this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n    }\n}\n","<ng-container *ngIf=\"isVisible()\">\n    <div\n        #dropdown\n        class=\"dropdown\"\n    >\n        <header class=\"header\">\n            <cui-input-text\n                class=\"header__input\"\n                cuiTextFieldId=\"estimated\"\n                cuiTextFieldPlaceholder=\"Search...\"\n            />\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconFiltersLines\"\n            ></button>\n        </header>\n        <div class=\"scrollable-content\">\n            <cc-select-option\n                *ngFor=\"let element of elements\"\n                [class._selected]=\"element.id === value?.id\"\n                (click)=\"onToolClick(element)\"\n                [tool]=\"element\"\n            />\n        </div>\n    </div>\n</ng-container>\n","export const MARKER_SELECT_SELECTOR = 'marker-select';\r\n","import { DOCUMENT, NgIf } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n    computed,\n    inject,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport {\n    CuiButtonModule,\n    CuiFormFieldModule,\n    CuiHintModule,\n    CuiInputModule,\n    CuiLabelModule,\n    CuiSvgModule\n} from '../../../components';\n\nimport { urlValidator } from '../../utils/url.validator';\n\nimport { EDITOR_SELECTOR } from '../../constants';\nimport { CuiMarkersService } from '../../services';\nimport type { Tool } from '../editor-tool-modal';\nimport { MarkerSelectComponent } from '../marker-select';\n\nimport type { MarkerData, MarkerDataControl } from './marker-modal.interfaces';\n\n@Component({\n    standalone: true,\n    imports: [\n        CuiButtonModule,\n        CuiElementDirective,\n        CuiFormFieldModule,\n        CuiHintModule,\n        CuiInputModule,\n        CuiLabelModule,\n        CuiSvgModule,\n        FormsModule,\n        MarkerSelectComponent,\n        ReactiveFormsModule,\n        TranslocoDirective,\n        NgIf\n    ],\n    templateUrl: './marker-modal.component.html',\n    styleUrls: ['./marker-modal.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [CuiClickOutsideDirective]\n})\nexport class MarkerModalComponent implements OnInit, OnDestroy {\n    private readonly element = inject(ElementRef).nativeElement;\n    private readonly document = inject(DOCUMENT);\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n    private readonly cuiIdService = inject(CuiIdService);\n    private readonly markersService = inject(CuiMarkersService);\n\n    protected readonly TITLE_MAX_LENGTH = 100;\n\n    protected readonly formTitle = signal('');\n    protected readonly isTitleEmpty = computed(() => !this.formTitle().length);\n    protected readonly isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);\n    protected readonly isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());\n    protected readonly titleId = this.cuiIdService.generate();\n    protected readonly dataId = this.cuiIdService.generate();\n\n    protected dynamicDataControl!: MarkerDataControl;\n    protected spaceBetweenTargetAndList = 5;\n    protected startTitle = '';\n\n    @Input()\n    public set title(value: string) {\n        this.startTitle = value;\n        this.formTitle.set(value);\n    }\n\n    @Input()\n    public set url(value: string) {\n        this.dynamicDataControl = new FormControl(value, {\n            nonNullable: true,\n            validators: [Validators.required, urlValidator()]\n        });\n    }\n\n    @Input()\n    public set tool(value: Tool) {\n        const tool = this.markersService.getMarkerObjectByType(value.type!, value.id);\n        this.dynamicDataControl = new FormControl(tool, {\n            nonNullable: true,\n            validators: [Validators.required]\n        });\n    }\n\n    @Input()\n    public isGlobal = false;\n\n    @Input()\n    public isTool = false;\n\n    @Input()\n    public target!: HTMLButtonElement;\n\n    @Input()\n    public set space(value: number) {\n        this.spaceBetweenTargetAndList = value;\n    }\n\n    @Output()\n    public saveClicked = new EventEmitter<MarkerData>();\n\n    @Output()\n    public cancelClicked = new EventEmitter();\n\n    protected isVisible = signal(false);\n    protected isHidden = signal(true);\n    protected editor!: HTMLElement;\n    protected currentTool?: Tool;\n    protected readonly targetToggleEventListener = (): void => {\n        this.isVisible.update((prev) => !prev);\n\n        if (!this.isVisible()) {\n            return;\n        }\n\n        this.calculateDropdownPosition();\n    };\n\n    protected get isFormInvalid(): boolean {\n        return this.dynamicDataControl.invalid || this.isTitleInvalid();\n    }\n\n    protected get isDynamicDataErrorShown(): boolean {\n        return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;\n    }\n\n    @HostBinding('class._hidden')\n    protected get hide(): boolean {\n        return this.isHidden();\n    }\n\n    @HostBinding('class._fixed')\n    protected get fixed(): boolean {\n        return this.isGlobal;\n    }\n\n    public ngOnInit(): void {\n        this.initTargetElementListener();\n        this.initClickOutsideSubscription();\n        this.initOnCloseWhenEditorScroll();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroyEventListeners();\n    }\n\n    protected onTitleLabelClick(element: HTMLDivElement): void {\n        const range = document.createRange();\n        const selection = window.getSelection();\n\n        range.selectNodeContents(element);\n        range.collapse(false);\n        selection?.removeAllRanges();\n        selection?.addRange(range);\n    }\n\n    protected onSave(): void {\n        if (this.isFormInvalid) {\n            return;\n        }\n\n        this.isVisible.set(false);\n        this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });\n    }\n\n    protected onScroll(): void {\n        this.isVisible.set(false);\n    }\n\n    protected onCancel(): void {\n        this.isVisible.set(false);\n        this.cancelClicked.emit();\n    }\n\n    protected onClearTitle(titleElement: HTMLElement): void {\n        this.formTitle.set('');\n\n        titleElement.textContent = '';\n        titleElement.focus();\n    }\n\n    protected onTitleChange(event: KeyboardEvent): void {\n        if (event.key === 'Enter') {\n            event.preventDefault();\n\n            return;\n        }\n\n        const target = event.target as HTMLInputElement;\n        const value = target.textContent!;\n\n        this.formTitle.set(value);\n    }\n\n    protected onTitlePaste(event: ClipboardEvent): void {\n        event.stopPropagation();\n        event.preventDefault();\n\n        if (!this.document) {\n            return;\n        }\n\n        const value = event.clipboardData?.getData('text/plain');\n        const target = event.target as HTMLElement;\n\n        this.document.execCommand('insertText', false, value);\n        setTimeout(() => this.formTitle.set(target.textContent!));\n    }\n\n    private initTargetElementListener(): void {\n        this.target.addEventListener('click', this.targetToggleEventListener);\n    }\n\n    private initClickOutsideSubscription(): void {\n        this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\n            if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {\n                return;\n            }\n\n            this.isVisible.set(false);\n        });\n    }\n\n    private initOnCloseWhenEditorScroll(): void {\n        this.editor = this.document.querySelector(EDITOR_SELECTOR) as HTMLElement;\n\n        this.editor.addEventListener('scroll', this.onScroll.bind(this));\n    }\n\n    private destroyEventListeners(): void {\n        this.editor.removeEventListener('scroll', this.onScroll.bind(this));\n        this.target.addEventListener('click', this.targetToggleEventListener);\n    }\n\n    private calculateDropdownPosition(): void {\n        this.isHidden.set(true);\n\n        setTimeout(() => {\n            const target = this.target;\n            const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\n            const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\n                this.document.documentElement;\n            const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);\n            const distanceToRight = documentClientWidth - targetRectLeft;\n            const isListRight = distanceToRight < this.element.offsetWidth;\n            const isListAbove = distanceToBottom < this.element.offsetHeight;\n\n            this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\n            this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\n\n            this.isHidden.set(false);\n        });\n    }\n\n    private changePositionX(isListRight: boolean, width: number, left: number): void {\n        if (this.isGlobal) {\n            this.changeGlobalPositionX(isListRight, width, left);\n\n            return;\n        }\n\n        if (isListRight) {\n            this.element.style.right = '0';\n            this.element.style.left = 'auto';\n\n            return;\n        }\n\n        this.element.style.right = 'auto';\n        this.element.style.left = '0';\n    }\n\n    private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\n        if (this.isGlobal) {\n            this.changeGlobalPositionY(isListAbove, height, bottom);\n\n            return;\n        }\n\n        if (isListAbove) {\n            this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';\n            this.element.style.top = 'auto';\n\n            return;\n        }\n\n        this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';\n        this.element.style.bottom = 'auto';\n    }\n\n    private changeGlobalPositionX(isListRight: boolean, width: number, left: number): void {\n        if (isListRight) {\n            this.element.style.left = left - this.element.offsetWidth + width + 'px';\n\n            return;\n        }\n\n        this.element.style.left = left + 'px';\n    }\n\n    private changeGlobalPositionY(isListAbove: boolean, height: number, bottom: number): void {\n        if (isListAbove) {\n            this.element.style.top =\n                bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';\n\n            return;\n        }\n\n        this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <ng-container *ngIf=\"isVisible()\">\n        <form\n            autocomplete=\"off\"\n            class=\"wrapper\"\n        >\n            <cui-form-field>\n                <!-- eslint-disable-next-line -->\n                <label\n                    [for]=\"titleId\"\n                    cuiLabel\n                    [isRequired]=\"true\"\n                    (click)=\"onTitleLabelClick(titleElement)\"\n                >\n                    {{ t('TITLE') }}\n                </label>\n                <!-- TODO: если найдется варик сделать через форму -->\n                <div\n                    class=\"title\"\n                    [class.title_invalid]=\"isTitleInvalid()\"\n                >\n                    <div\n                        #titleElement\n                        class=\"title__text\"\n                        contenteditable\n                        attr.data-placeholder=\"{{ t('TITLE') }}...\"\n                        (paste)=\"onTitlePaste($event)\"\n                        (keyup)=\"onTitleChange($event)\"\n                        [innerHTML]=\"startTitle\"\n                    ></div>\n                    <button\n                        type=\"button\"\n                        class=\"title__clear\"\n                        (click)=\"onClearTitle(titleElement)\"\n                    >\n                        <cui-svg\n                            icon=\"cuiIconClear\"\n                            color=\"var(--cui-base-300)\"\n                            class=\"title__icon\"\n                        />\n                    </button>\n                </div>\n\n                <cui-hint\n                    *ngIf=\"isTitleInvalid()\"\n                    hintType=\"error\"\n                >\n                    <ng-container *ngIf=\"isTitleEmpty()\">\n                        {{ t('FIELD_IS_REQUIRED') }}\n                    </ng-container>\n                    <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\n                        {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: TITLE_MAX_LENGTH }) }}\n                    </ng-container>\n                </cui-hint>\n            </cui-form-field>\n            <cui-form-field>\n                <label\n                    [for]=\"dataId\"\n                    cuiLabel\n                    [isRequired]=\"true\"\n                >\n                    {{ isTool ? t('TOOL') : t('URL') }}\n                </label>\n                <ng-container *ngIf=\"dynamicDataControl\">\n                    <ng-container *ngIf=\"isTool; else input\">\n                        <div>\n                            <button\n                                #target=\"elementRef\"\n                                class=\"button tool-button\"\n                                cuiButton\n                                type=\"button\"\n                                cuiElement\n                                appearance=\"outlined-gray\"\n                                size=\"sm\"\n                            >\n                                {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\n                            </button>\n                        </div>\n                        <cc-marker-select\n                            [formControl]=\"dynamicDataControl\"\n                            [target]=\"target.nativeElement\"\n                        />\n                    </ng-container>\n                    <ng-template #input>\n                        <cui-input-text\n                            [cuiTextFieldId]=\"dataId\"\n                            [formControl]=\"dynamicDataControl\"\n                            autocomplete=\"off\"\n                            [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\n                            cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\n                        />\n                        <cui-hint\n                            *ngIf=\"isDynamicDataErrorShown\"\n                            hintType=\"error\"\n                        >\n                            <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\n                                {{ t('FIELD_IS_REQUIRED') }}\n                            </ng-container>\n                            <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\n                                {{ t('INVALID_URL') }}\n                            </ng-container>\n                        </cui-hint>\n                    </ng-template>\n                </ng-container>\n            </cui-form-field>\n            <div class=\"buttons\">\n                <button\n                    cuiButton\n                    type=\"button\"\n                    appearance=\"outlined-gray\"\n                    size=\"sm\"\n                    (click)=\"onCancel()\"\n                >\n                    {{ t('CANCEL') }}\n                </button>\n                <button\n                    cuiButton\n                    type=\"submit\"\n                    appearance=\"action\"\n                    size=\"sm\"\n                    [disabled]=\"isFormInvalid\"\n                    (click)=\"onSave()\"\n                >\n                    {{ t('SAVE') }}\n                </button>\n            </div>\n        </form>\n    </ng-container>\n</ng-container>\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 {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n    inject,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CUI_WINDOW, CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { skip } from 'rxjs';\n\nimport { CuiButtonModule } from '../../../components';\nimport type { Tool } from './editor-tool-modal.options';\n\n@Component({\n    standalone: true,\n    imports: [CuiButtonModule],\n    templateUrl: './editor-tool-modal.component.html',\n    styleUrls: ['./editor-tool-modal.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [CuiClickOutsideDirective]\n})\nexport class EditorToolModalComponent {\n    private readonly element = inject(ElementRef).nativeElement;\n    private readonly window = inject(CUI_WINDOW);\n    private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n\n    private readonly SPACE_BETWEEN_TARGET_AND_LIST = 10;\n\n    public isFullscreen = signal(false);\n    public isHidden = signal(true);\n\n    @Input({ required: true })\n    public tool!: Tool;\n\n    @Input()\n    public set marker(value: HTMLElement) {\n        this.calculateModalPosition(value);\n    }\n\n    @Output()\n    public closed = new EventEmitter<void>();\n\n    @HostBinding('class._hidden')\n    protected get _isHidden(): boolean {\n        return this.isHidden();\n    }\n\n    @HostBinding('class._fullscreen')\n    protected get _isFullscreen(): boolean {\n        return this.isFullscreen();\n    }\n\n    constructor() {\n        this.initClickOutsideSubscription();\n    }\n\n    protected onCloseModal(): void {\n        this.closed.emit();\n    }\n\n    protected onMaximizeModal(): void {\n        this.isFullscreen.update((prev) => !prev);\n    }\n\n    private initClickOutsideSubscription(): void {\n        this.cuiClickOutsideDirective.cuiClickOutside\n            .pipe(skip(1), takeUntilDestroyed())\n            .subscribe(() => this.onCloseModal());\n    }\n\n    private calculateModalPosition(marker: HTMLElement): void {\n        const { bottom, left } = marker.getBoundingClientRect();\n\n        setTimeout(() => {\n            const modalWidth = this.element.offsetWidth;\n\n            this.element.style.top = bottom + this.window.scrollY + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n            this.element.style.left = left + this.window.scrollX + marker.offsetWidth / 2 - modalWidth / 2 + 'px';\n\n            this.isHidden.set(false);\n        });\n    }\n}\n","<div class=\"triangle\"></div>\n<div class=\"wrapper\">\n    <header class=\"header\">\n        <h3 class=\"title\">{{ tool.title }}</h3>\n        <div class=\"header__buttons\">\n            <!-- TODO: replace icon with 'maximize' -->\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconArrowSortSm\"\n                (click)=\"onMaximizeModal()\"\n            ></button>\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconX\"\n                (click)=\"onCloseModal()\"\n            ></button>\n        </div>\n    </header>\n    <div class=\"content\">\n        <div class=\"info\">\n            <!-- TODO: будет картинка-->\n            <p class=\"info__item\">\n                <span class=\"info__field\">Тип:</span>\n                <span class=\"info__title\">{{ tool.title }}</span>\n            </p>\n            <p class=\"info__item\">\n                <span class=\"info__field\">Страна производитель:</span>\n                <span class=\"info__title\">{{ tool.title }}</span>\n            </p>\n        </div>\n    </div>\n</div>\n","import type { MarkerType } from '../../services/markers-service.options';\n\nexport interface Tool {\n    id: string;\n    image?: string;\n    title?: string;\n    type?: MarkerType;\n}\n\nexport const EDITOR_TOOL_MODAL_SELECTOR = 'cc-editor-tool-modal';\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';\nimport { Pipe } from '@angular/core';\n\n@Pipe({\n    name: 'fileSize',\n    standalone: true\n})\nexport class FileSizePipe implements PipeTransform {\n    private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\n    private readonly BYTES_IN_KILOBYTE = 1024;\n\n    public transform(bytes: number): string {\n        if (isNaN(bytes) || bytes === 0) {\n            return '0 Bytes';\n        }\n\n        const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\n\n        return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\n    }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { inject, Pipe } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CuiTime } from '@cuby-ui/cdk';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Pipe({\n    name: 'time',\n    pure: false,\n    standalone: true\n})\nexport class CuiTimePipe implements PipeTransform {\n    private readonly translocoService = inject(TranslocoService);\n\n    private readonly FORMAT_TOKEN_REGEX = /HH|MM|SS|'([^']*)'/g;\n\n    private readonly lang = toSignal(this.translocoService.langChanges$);\n\n    public transform(value: Date | string, format = \"HH 'h' MM 'm'\", withEmpty = false): string {\n        this.lang();\n\n        const { tokenValues, unitValues } = this.getValues(value, withEmpty);\n\n        return format\n            .replace(this.FORMAT_TOKEN_REGEX, (match, quoted) =>\n                quoted ? (unitValues[quoted] ?? quoted) : tokenValues[match]\n            )\n            .replace(/\\s{2,}/g, ' ')\n            .trim();\n    }\n\n    private getValues(value: Date | string, withEmpty = false): {\n        tokenValues: Record<string, string>;\n        unitValues: Record<string, string>;\n    } {\n        const { hours, minutes, seconds } = this.getTime(value);\n        const tokenValues: Record<string, string> = {\n            HH: this.getTimeString(hours, withEmpty),\n            MM: this.getTimeString(minutes, withEmpty),\n            SS: this.getTimeString(seconds, withEmpty)\n        };\n        const unitValues: Record<string, string> = {\n            h: this.getTimeUnit(hours, this.translocoService.translate('TIME_UNITS.H'), withEmpty),\n            m: this.getTimeUnit(minutes, this.translocoService.translate('TIME_UNITS.MIN'), withEmpty),\n            s: this.getTimeUnit(seconds, this.translocoService.translate('TIME_UNITS.S'), withEmpty)\n        };\n\n        return { tokenValues, unitValues };\n    }\n\n    private getTimeString(value: number, withEmpty = false): string {\n        if (!value || (value === 0 && !withEmpty)) {\n            return '';\n        }\n\n        return value.toString();\n    }\n\n    private getTimeUnit(value: number, unit: string, withEmpty = false): string {\n        if (!value || (value === 0 && !withEmpty)) {\n            return '';\n        }\n\n        return unit;\n    }\n\n    private getTime(value: Date | string): { hours: number; minutes: number; seconds: number } {\n        if (value instanceof Date) {\n            return { hours: value.getHours(), minutes: value.getMinutes(), seconds: value.getSeconds() };\n        }\n\n        return CuiTime.fromString(value);\n    }\n}\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 { FileSizePipe } from '../../../pipes';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\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';\n\nexport async function openFileInBrowser(file: CuiFileData): Promise<void> {\n    if (!file?.url) {\n        return;\n    }\n\n    const encodedUrl = encodeURIComponent(file.url);\n    const googleViewerUrl = `https://docs.google.com/viewer?url=${encodedUrl}&embedded=true`;\n\n    window.open(googleViewerUrl, '_blank');\n}\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';\nimport { CuiFileUploaderStatus } from './file-uploader';\n\nexport function setLoading(status: CuiFileUploaderStatus): void {\n    const service = AngularOutsideLoaderService.getInstance();\n    const loadingActions: Record<CuiFileUploaderStatus, () => void> = {\n        [CuiFileUploaderStatus.Loading]: () => service.setLoading(),\n        [CuiFileUploaderStatus.Completed]: () => {\n            service.setCompleted();\n            service.handleCompletedRequest();\n        }\n    };\n\n    return loadingActions[status]();\n}\n","import type { CuiTools } from '../interfaces';\nimport { CuiAttachesTool, CuiHeaderTool, CuiImageTool, CuiListTool, CuiVideoTool } from '../tools';\nimport { openFileInBrowser } from './open-file-in-browser';\nimport { setLoading } from './set-loading';\n\nexport function createEditorTools(resourceUrl: string): CuiTools;\nexport function createEditorTools(config: Partial<CuiTools>, resourceUrl?: string): CuiTools;\nexport function createEditorTools(config: Partial<CuiTools> | string, resourceUrl?: string): CuiTools {\n    const endpoint = typeof config === 'string' ? config : resourceUrl;\n    const tools = typeof config !== 'string' ? config : {};\n\n    return {\n        header: {\n            class: CuiHeaderTool,\n            config: {\n                levels: [2, 3, 4],\n                defaultLevel: 2\n            },\n            ...(tools?.['header'] ?? {})\n        },\n        list: {\n            class: CuiListTool,\n            inlineToolbar: true,\n            config: {\n                defaultStyle: 'unordered'\n            },\n            ...(tools?.['list'] ?? {})\n        },\n        attaches: {\n            class: CuiAttachesTool,\n            config: {\n                endpoint,\n                field: 'resource',\n                types: '.pdf,.doc,.docx',\n                load: setLoading,\n                fileClicked: openFileInBrowser\n            },\n            ...(tools?.['attaches'] ?? {})\n        },\n        video: {\n            class: CuiVideoTool,\n            config: {\n                endpoint,\n                field: 'resource',\n                load: setLoading\n            },\n            ...(tools?.['video'] ?? {})\n        },\n        image: {\n            class: CuiImageTool,\n            config: {\n                endpoint,\n                field: 'resource',\n                load: setLoading\n            },\n            ...(tools?.['image'] ?? {})\n        },\n        ...(tools ?? {})\n    };\n}\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 {\n    if (window?.navigator.clipboard && window.isSecureContext) {\n        window.navigator.clipboard.writeText(text);\n    }\n\n    copyTextToClipboardFallback(text);\n}\n\n// TODO: Remove when switch to https\nfunction copyTextToClipboardFallback(text: string): void {\n    const textarea = document.createElement('textarea');\n\n    textarea.value = text;\n    document.body.appendChild(textarea);\n    textarea.focus({ preventScroll: true });\n    textarea.select();\n\n    document.execCommand('copy');\n    document.body.removeChild(textarea);\n}\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';\nimport { ChunkDescriptor, ChunkDescriptorsMergeResult } from '../interfaces';\n\nexport function mergeSmallChunks(chunks: ChunkDescriptor[]): ChunkDescriptorsMergeResult {\n    if (chunks.length <= 1) {\n        return { chunks: [...chunks], removedIds: [] };\n    }\n\n    const result: ChunkDescriptor[] = [];\n    const removedIds: string[] = [];\n    let current = { id: chunks[0].id, content: chunks[0].content };\n\n    for (let i = 1; i < chunks.length; i++) {\n        const next = chunks[i];\n\n        if (checkIsAvailableToMerge(current, next)) {\n            current = { id: current.id, content: current.content + next.content };\n            removedIds.push(next.id);\n\n            continue;\n        }\n\n        result.push(current);\n        current = { id: next.id, content: next.content };\n    }\n\n    result.push(current);\n\n    return { chunks: result, removedIds };\n}\n\nfunction checkIsAvailableToMerge(current: ChunkDescriptor, next: ChunkDescriptor): boolean {\n    const combinedLength = current.content.length + next.content.length;\n\n    return (\n        combinedLength < SPLIT_MAX_LENGTH &&\n        (current.content.length < MERGE_MIN_LENGTH || next.content.length < MERGE_MIN_LENGTH)\n    );\n}\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 { inject } from '@angular/core';\n\nimport { CuiAuthService } from '../../providers';\nimport type { CuiTools } from '../interfaces';\nimport { CuiAttachesTool, CuiImageTool, CuiVideoTool } from '../tools';\nimport { openFileInBrowser } from './open-file-in-browser';\nimport { setLoading } from './set-loading';\n\nexport function presetConfigToken(): (resourceUrl: string) => Partial<CuiTools> {\n    const token = inject(CuiAuthService).getAccessToken();\n    const additionalRequestHeaders = {\n        Authorization: `Bearer ${token}`\n    };\n\n    return (resourceUrl: string) => ({\n        attaches: {\n            class: CuiAttachesTool,\n            config: {\n                endpoint: resourceUrl,\n                field: 'resource',\n                types: '.pdf,.doc,.docx',\n                load: setLoading,\n                fileClicked: openFileInBrowser,\n                additionalRequestHeaders\n            }\n        },\n        video: {\n            class: CuiVideoTool,\n            config: {\n                endpoint: resourceUrl,\n                field: 'resource',\n                load: setLoading,\n                additionalRequestHeaders\n            }\n        },\n        image: {\n            class: CuiImageTool,\n            config: {\n                endpoint: resourceUrl,\n                field: 'resource',\n                load: setLoading,\n                additionalRequestHeaders\n            }\n        }\n    });\n}\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';\n\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\n\nexport class CuiRoleMarker extends CuiCustomMarkerTool {\n    protected override readonly CLASS = 'role-marker';\n\n    constructor(data: InlineToolConstructorOptions) {\n        super(data);\n    }\n\n    public override render(): HTMLButtonElement {\n        super.render();\n\n        /* eslint-disable */\n        this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"-3 -3 24 24\" fill=\"none\">\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\"/>\n        </svg>`;\n        /* eslint-enable */\n\n        return this.button;\n    }\n}\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\n\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\n\nexport class CuiToolMarker extends CuiCustomMarkerTool {\n    protected override readonly CLASS = 'tool-marker';\n\n    constructor(data: InlineToolConstructorOptions) {\n        super(data);\n    }\n\n    public override render(): HTMLButtonElement {\n        super.render();\n\n        this.button.innerHTML =\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>';\n\n        return this.button;\n    }\n}\n","\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport type { API, BlockTool, BlockToolConstructorOptions, ToolConfig } from '@editorjs/editorjs';\n\nimport {\n    COMBINED_TEXT_BLOCK,\n    COMBINED_TEXT_BLOCK_ADDED,\n    COMBINED_TEXT_BLOCK_NAME,\n    COMBINED_TEXT_BLOCK_PART,\n    COMBINED_TEXT_BLOCK_REMOVED,\n    COMBINED_TEXT_BLOCK_UPDATED,\n    DEFAULT_PLACEHOLDER,\n    DEFAULT_READONLY_PLACEHOLDER,\n    SPLIT_MAX_LENGTH\n} from '../constants';\nimport type {\n    CuiCombinedBlockToolData,\n    CuiCombinedPartBlock,\n    CuiMutationActions,\n    CuiMutationCallback\n} from '../interfaces';\nimport { generateId, mergeSmallChunks, splitHTML } from '../utils';\n\nexport class CuiCombinedTextBlockTool implements BlockTool {\n    private readonly TAG = 'span';\n    private readonly DEBOUNCE_TIME = 350;\n    private readonly MAX_CHILD_COUNT_FOR_EMPTY = 1;\n    private readonly PLACEHOLDER_ATTRIBUTE_NAME = 'placeholderActive';\n\n    private readonly mutationConfig = {\n        subtree: true,\n        childList: true,\n        characterData: true\n    };\n    private readonly api: API;\n    private readonly data: CuiCombinedBlockToolData;\n    private readonly placeholder: string;\n    private wrapper?: HTMLElement;\n    private observer?: MutationObserver;\n    private lastBlockElement?: HTMLElement;\n    private readonly readOnly?: boolean;\n    private readonly changes = new Map();\n\n    private skipNextUpdateEmit = false;\n\n    constructor(options: unknown) {\n        const body = options as BlockToolConstructorOptions;\n        const data = body.data;\n\n        this.readOnly = body.readOnly;\n        this.placeholder = this.getPlaceholder(body.config);\n        this.api = body.api;\n        this.data = {\n            id: data.id || generateId(),\n            textBlocks: data.textBlocks || []\n        };\n\n        this.convertDefaultDataToCustom(data);\n    }\n\n    public static get isInline(): boolean {\n        return false;\n    }\n\n    public static get isReadOnlySupported(): boolean {\n        return true;\n    }\n\n    public static get enableLineBreaks(): boolean {\n        return false;\n    }\n\n    public static get toolbox(): { icon: string; title: string } {\n        return {\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>',\n            title: 'Text'\n        };\n    }\n\n    public static get pasteConfig(): object {\n        return {\n            tags: ['P']\n        };\n    }\n\n    public onPaste(event: CustomEvent): void {\n        if (event.type !== 'tag') {\n            return;\n        }\n\n        const text = event.detail.data.textContent;\n        const lastBlockIndex = this.data.textBlocks.length - 1;\n        const lastBlock = this.data.textBlocks[lastBlockIndex];\n        const blockId = lastBlock?.id || generateId();\n\n        this.data.textBlocks.splice(lastBlockIndex, 1, this.getBlockPartObject(blockId, text));\n\n        this.skipNextUpdateEmit = true;\n\n        this.updateExistingBlock(blockId, text, Boolean(lastBlock?.id));\n    }\n\n    public render(): HTMLElement {\n        this.wrapper = document.createElement('div');\n        this.wrapper.classList.add(COMBINED_TEXT_BLOCK);\n        this.wrapper.dataset[this.PLACEHOLDER_ATTRIBUTE_NAME] = this.api.i18n.t(this.placeholder);\n\n        if (!this.readOnly) {\n            this.wrapper.contentEditable = 'true';\n        }\n\n        const isEmptyBlock = !this.data.textBlocks.length;\n\n        if (isEmptyBlock) {\n            this.data.textBlocks.push(this.getBlockPartObject(generateId(), ''));\n        }\n\n        this.renderBlocks(this.data.textBlocks);\n        this.checkIsEditorEmpty();\n\n        if (!this.readOnly) {\n            const callback = this.getMutationCallback(this.DEBOUNCE_TIME);\n\n            this.observer = new MutationObserver(this.onMutationEvent.bind(this, callback));\n            this.observer.observe(this.wrapper, this.mutationConfig);\n        }\n\n        return this.wrapper;\n    }\n\n    public merge(blocksData: CuiCombinedPartBlock[]): void {\n        if (!this.wrapper) {\n            return;\n        }\n\n        let blocksTextContent = '';\n        this.data.textBlocks = [];\n\n        blocksData.forEach((block) => {\n            blocksTextContent += block.data.text;\n        });\n\n        for (let i = 0; i < this.wrapper.childNodes.length; i++) {\n            const node = this.wrapper.childNodes.item(i);\n\n            if (!(node instanceof HTMLSpanElement)) {\n                return;\n            }\n\n            i--;\n            blocksTextContent = node.innerHTML + blocksTextContent;\n            node.remove();\n        }\n\n        const parts = blocksTextContent.length < SPLIT_MAX_LENGTH ? [blocksTextContent] : splitHTML(blocksTextContent);\n\n        parts.forEach((part: string) => {\n            const blockObject = this.getBlockPartObject(generateId(), part);\n\n            this.data.textBlocks.push(blockObject);\n        });\n\n        this.renderBlocks(this.data.textBlocks);\n    }\n\n    public save(blockContent: HTMLElement): CuiCombinedPartBlock[] {\n        const textBlocks: CuiCombinedPartBlock[] = [];\n\n        blockContent.querySelectorAll(this.TAG).forEach((span: HTMLElement) => {\n            textBlocks.push(this.getBlockPartObject(span.dataset['localId']!, span.innerHTML));\n        });\n\n        return textBlocks;\n    }\n\n    public removed(): void {\n        this.observer?.disconnect();\n\n        const blockIds = new Set<string>();\n\n        this.data.textBlocks.forEach((block: CuiCombinedPartBlock) => {\n            blockIds.add(block.id || '');\n        });\n\n        this.removeBlocks(blockIds);\n    }\n\n    private onMutationEvent(callback: (mutationList: MutationRecord[]) => void, mutationList: MutationRecord[]): void {\n        if (mutationList.length === 0) {\n            return;\n        }\n\n        mutationList.forEach((mutation) => {\n            if (mutation.removedNodes.length) {\n                this.changes.set(generateId(), mutation);\n\n                return;\n            }\n\n            this.changes.set(mutation.target, mutation);\n        });\n\n        callback(mutationList);\n        this.checkIsEditorEmpty();\n    }\n\n    private readonly getMutationCallback = (wait: number): CuiMutationCallback => {\n        let timeoutId: CuiNullable<ReturnType<typeof setTimeout>> = null;\n\n        return () => {\n            if (timeoutId) {\n                clearTimeout(timeoutId);\n            }\n\n            timeoutId = setTimeout(() => this.handleMutations(), wait);\n        };\n    };\n\n    private handleMutations(): void {\n        this.observer?.disconnect();\n\n        try {\n            const { updatedElements, removedElementsIds } = this.getMutationActions([...this.changes.values()]);\n            const splittedParts = this.takeSplittedPartsResult(updatedElements);\n            const { splittedPartsResult, updatedElementsResult, removedElementsIdsResult } = this.takeMergedResult(\n                splittedParts,\n                updatedElements,\n                removedElementsIds\n            );\n\n            this.addBlocks(splittedPartsResult, updatedElementsResult);\n            this.updateBlocks(updatedElementsResult);\n            this.removeBlocks(removedElementsIdsResult);\n            this.changes.clear();\n        } finally {\n            if (!this.wrapper) {\n                return;\n            }\n\n            this.observer?.observe(this.wrapper, this.mutationConfig);\n        }\n    }\n\n    private takeMergedResult(\n        splittedParts: HTMLElement[],\n        updatedElements: Set<HTMLElement>,\n        removedElementsIds: Set<string>\n    ): {\n        splittedPartsResult: HTMLElement[];\n        updatedElementsResult: Set<HTMLElement>;\n        removedElementsIdsResult: Set<string>;\n    } {\n        const { removedIds: mergeRemovedIds, updatedElements: mergeUpdatedElements } = this.applyMergeSmallChunks();\n\n        const notRemovedByMerge = (el: HTMLElement) => !mergeRemovedIds.has(el.dataset['localId'] ?? '');\n\n        const splittedPartsResult = splittedParts.filter(notRemovedByMerge);\n        const removedElementsIdsResult = new Set<string>([...removedElementsIds, ...mergeRemovedIds]);\n        const updatedElementsResult = new Set<HTMLElement>(\n            [...updatedElements, ...mergeUpdatedElements].filter(notRemovedByMerge)\n        );\n\n        return { splittedPartsResult, updatedElementsResult, removedElementsIdsResult };\n    }\n\n    private takeSplittedPartsResult(updatedElements: Set<HTMLElement>): HTMLElement[] {\n        const splittedParts: HTMLElement[] = [];\n\n        updatedElements.forEach((element: HTMLElement) => {\n            const elementContent: string = element.innerHTML;\n\n            if (elementContent.length < SPLIT_MAX_LENGTH) {\n                return;\n            }\n\n            const parts = splitHTML(elementContent);\n\n            parts.forEach((part, index) => {\n                if (index === 0) {\n                    return;\n                }\n\n                const blockId = generateId();\n                const textElement = this.createBlock(blockId, part);\n\n                splittedParts.push(textElement);\n            });\n\n            element.innerHTML = parts[0];\n            element.after(...splittedParts);\n        });\n\n        return splittedParts;\n    }\n\n    private applyMergeSmallChunks(): {\n        removedIds: Set<string>;\n        updatedElements: Set<HTMLElement>;\n    } {\n        const empty = { removedIds: new Set<string>(), updatedElements: new Set<HTMLElement>() };\n\n        if (!this.wrapper) {\n            return empty;\n        }\n\n        const chunkElements = Array.from(this.wrapper.querySelectorAll<HTMLElement>('.' + COMBINED_TEXT_BLOCK_PART));\n        const chunkElementsMap = new Map(chunkElements.map((element) => [element.dataset['localId']!, element]));\n        const { chunks, removedIds } = mergeSmallChunks(\n            chunkElements.map((element) => ({\n                id: element.dataset['localId']!,\n                content: element.innerHTML\n            }))\n        );\n\n        removedIds.forEach((id) => chunkElementsMap.get(id)?.remove());\n\n        const updatedElements = new Set<HTMLElement>();\n\n        chunks.forEach((chunk) => {\n            const element = chunkElementsMap.get(chunk.id);\n\n            if (!element || element.innerHTML === chunk.content) {\n                return;\n            }\n\n            element.innerHTML = chunk.content;\n            updatedElements.add(element);\n        });\n\n        return { removedIds: new Set(removedIds), updatedElements };\n    }\n\n    // RIP 13.01.2026 - private getNextIndex(): number\n\n    private getBlockPartObject(blockId: string, text: string): CuiCombinedPartBlock {\n        return {\n            id: blockId,\n            type: COMBINED_TEXT_BLOCK_PART,\n            data: {\n                text,\n                parentId: this.data.id,\n                parentType: COMBINED_TEXT_BLOCK_NAME\n            }\n        };\n    }\n\n    private getMutationActions(mutationList: MutationRecord[]): CuiMutationActions {\n        const updatedElements = new Set<HTMLElement>();\n        const removedElementsIds = new Set<string>();\n        const changedOutsideElements: Node[] = [];\n\n        this.lastBlockElement = undefined;\n\n        mutationList.forEach((mutation: MutationRecord): void => {\n            this.handleUpdatedBlocks(mutation, updatedElements, changedOutsideElements);\n            this.handleRemovedBlocks(mutation, removedElementsIds);\n        });\n\n        if (this.lastBlockElement) {\n            const lastBlockElement = this.lastBlockElement as HTMLElement;\n\n            lastBlockElement.append(...changedOutsideElements);\n            updatedElements.add(lastBlockElement);\n            this.setCaretToBlocksEnd(lastBlockElement);\n        }\n\n        return {\n            updatedElements,\n            removedElementsIds\n        };\n    }\n\n    private setCaretToBlocksEnd(block: HTMLElement): void {\n        const selection = window.getSelection();\n        const range = document.createRange();\n\n        range.setStart(block, block.childNodes.length);\n        selection?.removeAllRanges();\n        selection?.addRange(range);\n    }\n\n    private handleUpdatedBlocks(\n        mutation: MutationRecord,\n        updatedElements: Set<HTMLElement>,\n        outsideChanges: Node[]\n    ): void {\n        let element = mutation.target as HTMLElement;\n\n        if (mutation.target.nodeType === Node.TEXT_NODE) {\n            element = mutation.target.parentElement as HTMLElement;\n        }\n\n        const span = element?.closest('.' + COMBINED_TEXT_BLOCK_PART) as HTMLElement;\n\n        if (span) {\n            updatedElements.add(span);\n\n            return;\n        }\n\n        this.handleChangesOutsideBlock(element, outsideChanges);\n    }\n\n    private handleChangesOutsideBlock(element: HTMLElement, outsideChanges: Node[]): void {\n        if (!element || this.lastBlockElement) {\n            return;\n        }\n\n        element.childNodes.forEach((block) => {\n            const blockElement = block as HTMLElement;\n\n            if (blockElement.classList?.contains(COMBINED_TEXT_BLOCK_PART)) {\n                this.lastBlockElement = blockElement;\n\n                return;\n            }\n\n            outsideChanges.push(block);\n        });\n    }\n\n    private addBlocks(splicedParts: HTMLElement[], updatedElements: Set<HTMLElement>): void {\n        if (!splicedParts.length) {\n            return;\n        }\n\n        const addedBlocks: CuiCombinedPartBlock[] = splicedParts.map((block) => {\n            const blockId = block.dataset['localId'];\n\n            return {\n                id: blockId,\n                type: COMBINED_TEXT_BLOCK_PART,\n                data: {\n                    text: block.innerHTML,\n                    parentId: this.data.id,\n                    parentType: COMBINED_TEXT_BLOCK_NAME\n                }\n            };\n        });\n\n        const previousElement = updatedElements.values().next().value;\n        const id = previousElement?.dataset['localId'];\n        const index = Number(previousElement?.dataset['index']) + 1;\n        const blockIndex = this.data.textBlocks.findIndex((block) => block.id === id);\n\n        this.data.textBlocks.splice(blockIndex, 0, ...addedBlocks);\n        this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\n            index,\n            blockIndex,\n            blocks: addedBlocks,\n            data: this.data.textBlocks\n        });\n    }\n\n    private updateBlocks(updatedElements: Set<HTMLElement>): void {\n        if (!updatedElements.size) {\n            return;\n        }\n\n        if (this.skipNextUpdateEmit) {\n            this.skipNextUpdateEmit = false;\n\n            return;\n        }\n\n        const updatedBlocks = [...updatedElements.values()].map((block) => {\n            return {\n                id: block.dataset['localId'],\n                type: COMBINED_TEXT_BLOCK_PART,\n                data: {\n                    text: block.innerHTML,\n                    parentId: this.data.id,\n                    parentType: COMBINED_TEXT_BLOCK_NAME\n                }\n            };\n        });\n\n        this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, updatedBlocks);\n    }\n\n    private updateExistingBlock(blockId: string, text: string, isBlockExists: boolean): void {\n        if (!this.wrapper) {\n            return;\n        }\n\n        const existingElement = this.wrapper.querySelector(`[data-local-id=\"${blockId}\"]`);\n\n        if (!existingElement) {\n            return;\n        }\n\n        const block = this.getBlockPartObject(blockId, text);\n\n        existingElement.innerHTML = text;\n\n        if (isBlockExists) {\n            setTimeout(() => {\n                this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, [block]);\n            });\n\n            return;\n        }\n\n        setTimeout(() => {\n            this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\n                blocks: [block]\n            });\n        });\n    }\n\n    private handleRemovedBlocks(mutation: MutationRecord, removedElementsIds: Set<string>): void {\n        if (mutation.removedNodes.length === 0) {\n            return;\n        }\n\n        mutation.removedNodes.forEach((node: Node): void => {\n            if (!(node instanceof HTMLElement)) {\n                return;\n            }\n\n            const blockId = (node as HTMLElement).dataset['localId'];\n\n            if (!blockId) {\n                return;\n            }\n\n            removedElementsIds.add(blockId);\n        });\n    }\n\n    private removeBlocks(ids: Set<string>): void {\n        if (!ids.size) {\n            return;\n        }\n\n        const removedElementIds = [...ids.values()];\n\n        this.data.textBlocks = this.data.textBlocks.filter((block) => !ids.has(block.id || ''));\n        this.api.events.emit(COMBINED_TEXT_BLOCK_REMOVED, removedElementIds);\n    }\n\n    private renderBlocks(blocks: CuiCombinedPartBlock[]): void {\n        if (!blocks.length) {\n            return;\n        }\n\n        blocks.forEach((block: CuiCombinedPartBlock) => {\n            const textElement = this.createBlock(block.id || generateId(), block.data.text);\n\n            if (!this.wrapper) {\n                return;\n            }\n\n            if (this.wrapper.querySelector('.' + COMBINED_TEXT_BLOCK_PART)) {\n                this.wrapper.append(textElement);\n\n                return;\n            }\n\n            this.wrapper.replaceChildren(textElement);\n        });\n\n        setTimeout(() => {\n            this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\n                blocks\n            });\n        });\n    }\n\n    private createBlock(id: string, text: string): HTMLElement {\n        const textElement = document.createElement(this.TAG);\n\n        textElement.classList.add(COMBINED_TEXT_BLOCK_PART);\n        textElement.innerHTML = text;\n        textElement.dataset['id'] = id;\n        textElement.dataset['localId'] = id;\n\n        return textElement;\n    }\n\n    private convertDefaultDataToCustom(data: { text: string }): void {\n        if (Array.isArray(data)) {\n            this.data.textBlocks = data.map((block) => {\n                block.id = generateId();\n                block.data.parentId = this.data.id;\n\n                return block;\n            });\n        }\n\n        if (!data.text) {\n            return;\n        }\n\n        const fragment = document.createRange().createContextualFragment(data.text);\n        let elementContent = '';\n\n        fragment.childNodes.forEach((node) => {\n            if (node.nodeType === Node.TEXT_NODE) {\n                elementContent += node.textContent;\n\n                return;\n            }\n\n            elementContent += (node as HTMLElement).innerHTML;\n        });\n\n        const parts = elementContent.length < SPLIT_MAX_LENGTH ? [elementContent] : splitHTML(elementContent);\n\n        parts.forEach((part: string) => {\n            const blockObject = this.getBlockPartObject(generateId(), part);\n\n            this.data.textBlocks.push(blockObject);\n        });\n    }\n\n    private checkIsEditorEmpty(): void {\n        if (!this.wrapper || this.wrapper.children.length > this.MAX_CHILD_COUNT_FOR_EMPTY) {\n            return;\n        }\n\n        const item = this.wrapper.children.item(0) as HTMLElement;\n        const isItemEmpty = !item?.textContent?.length;\n\n        this.wrapper.dataset['empty'] = `${isItemEmpty}`;\n    }\n\n    private getPlaceholder(config: ToolConfig): string {\n        if (this.readOnly) {\n            return config.readonlyPlaceholder ?? DEFAULT_READONLY_PLACEHOLDER;\n        }\n\n        return config.placeholder ?? DEFAULT_PLACEHOLDER;\n    }\n}\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    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    signal,\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 { catchError, concatMap, EMPTY, finalize, map, Subject, tap, timer, toArray } 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 RETRY_DELAY = 3000;\n\n    private readonly emptyQueue = new Subject();\n\n    private initChain: Promise<void> = Promise.resolve();\n    private firstRender: Promise<void> = Promise.resolve();\n    private lazyLoadObserver: CuiNullable<IntersectionObserver> = null;\n    private lazyLoadSubscription: CuiNullable<Subscription> = null;\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    private isPreloadFinished = false;\n    private hasEndLeftZone = 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 lazyLoadVersion = 0;\n    private addedBlocks: CuiBlockData[] = [];\n    private updatedBlocks: CuiBlock[] = [];\n    private removedBlocksIds: string[] = [];\n    private changesQueue: BlockMutationEvent[][] = [];\n    private abortController = new AbortController();\n\n    private readonly isReadonly = computed(() => this.config()?.readOnly);\n    private readonly requestOptions = computed(() => this.config()?.requestOptions);\n\n    private readonly editorEndRef = viewChild.required<ElementRef<HTMLElement>>('editorEnd');\n\n    protected readonly isEditorReady = signal(false);\n    protected readonly editorId = this.cuiIdService.generate();\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    public readonly editorReady = output<void>();\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.enqueueInit(() => this.teardownEditor());\n    }\n\n    private loadPage(): void {\n        this.isRequested = true;\n\n        const version = this.lazyLoadVersion;\n        const size = this.requestSize();\n        let blocksCount = 0;\n        let isFailed = false;\n\n        this.lazyLoadSubscription = this.getBlocks(this.page, size)\n            .pipe(\n                tap((blocks) => (blocksCount = blocks.length)),\n                catchError(() => {\n                    isFailed = true;\n\n                    return EMPTY;\n                }),\n                finalize(() => this.finishPageLoad(blocksCount, size, version, isFailed))\n            )\n            .subscribe();\n    }\n\n    private finishPageLoad(blocksCount: number, size: number, version: number, isFailed: boolean): void {\n        this.isRequested = false;\n\n        if (this.isDestroyed || version !== this.lazyLoadVersion) {\n            return;\n        }\n\n        if (isFailed) {\n            this.retryPageLoad(version);\n\n            return;\n        }\n\n        this.page++;\n        this.scheduleNextPage(blocksCount, size, version);\n    }\n\n    private retryPageLoad(version: number): void {\n        this.isRequested = true;\n\n        timer(this.RETRY_DELAY)\n            .pipe(takeUntilDestroyed(this.destroy))\n            .subscribe(() => {\n                if (this.isDestroyed || version !== this.lazyLoadVersion) {\n                    return;\n                }\n\n                this.loadPage();\n            });\n    }\n\n    private scheduleNextPage(blocksCount: number, size: number, version: number): void {\n        if (blocksCount < size) {\n            this.lazyLoadObserver?.disconnect();\n            this.finishPreload();\n\n            return;\n        }\n\n        timer(this.POOLING_DELAY)\n            .pipe(takeUntilDestroyed(this.destroy))\n            .subscribe(() => this.continueLazyLoad(version));\n    }\n\n    private continueLazyLoad(version: number): void {\n        if (this.isDestroyed || version !== this.lazyLoadVersion) {\n            return;\n        }\n\n        if (this.config()?.withoutPreload) {\n            this.finishPreload();\n        }\n\n        this.observeEditorEnd();\n    }\n    private finishPreload(): void {\n        if (this.isPreloadFinished) {\n            return;\n        }\n\n        this.isPreloadFinished = true;\n        this.setStartBlock();\n    }\n\n    private finishFirstRender(version: number): void {\n        if (this.isDestroyed || version !== this.lazyLoadVersion || this.isEditorReady()) {\n            return;\n        }\n\n        this.isEditorReady.set(true);\n        this.editorReady.emit();\n    }\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        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.recalculateAllBlocksAfterRemoval(blockIds);\n    }\n\n    private onEditorEndMove(entry: IntersectionObserverEntry): void {\n        if (this.isRequested) {\n            return;\n        }\n\n        if (!entry.isIntersecting) {\n            this.hasEndLeftZone = true;\n            this.finishPreload();\n\n            return;\n        }\n\n        if (this.config()?.withoutPreload && !this.hasEndLeftZone) {\n            return;\n        }\n\n        this.loadPage();\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.enqueueInit(() => this.runEditorInit());\n    }\n\n    private recalculateAllBlocksAfterRemoval(blockIds: string[]): void {\n        const remainingRemovedBlockIds = new Set(blockIds);\n\n        this.updatedBlocks = this.updatedBlocks.filter(\n            (updatedBlock) => !remainingRemovedBlockIds.has(updatedBlock.id ?? '')\n        );\n        this.addedBlocks = this.addedBlocks.filter((addedBlock) => {\n            if (!remainingRemovedBlockIds.has(addedBlock.id)) {\n                return true;\n            }\n\n            remainingRemovedBlockIds.delete(addedBlock.id);\n\n            return false;\n        });\n\n        this.removedBlocksIds.push(...remainingRemovedBlockIds.values());\n    }\n\n    private observeEditorEnd(): void {\n        const editorEndElement = this.editorEndRef().nativeElement;\n\n        this.lazyLoadObserver ??= this.createLazyLoadObserver();\n        this.lazyLoadObserver.unobserve(editorEndElement);\n        this.lazyLoadObserver.observe(editorEndElement);\n    }\n\n    private createLazyLoadObserver(): IntersectionObserver {\n        return new IntersectionObserver((entries) => this.onEditorEndMove(entries[entries.length - 1]), {\n            root: this.getViewportElement()\n        });\n    }\n\n    private getViewportElement(): HTMLElement {\n        return this.config()?.element ?? this.editorElement;\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 teardownEditor(): void {\n        this.abortController.abort();\n        this.resetData();\n\n        this.editor?.destroy?.();\n    }\n\n    private enqueueInit(callback: () => void | Promise<void>): void {\n        this.initChain = this.initChain.catch(() => undefined).then(callback);\n    }\n\n    private async runEditorInit(): Promise<void> {\n        this.teardownEditor();\n\n        if (this.isDestroyed) {\n            return;\n        }\n\n        this.editor = this.buildEditor(this.editorId);\n\n        await this.editor.isReady;\n\n        if (this.isDestroyed) {\n            return;\n        }\n\n        this.wireEditor();\n    }\n\n    private buildEditor(id: string): EditorJS {\n        return new EditorJS({\n            ...getEditorConfig(id, this.config()),\n            onChange: this.onEditorChange.bind(this)\n        });\n    }\n\n    private wireEditor(): void {\n        this.editorElement = this.editorRef().nativeElement;\n\n        this.initEditorEvents(this.editorElement);\n        this.loadPage();\n        this.setListenersOnCustomBlockChanges();\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\n            recalculateIndexes(this.editor.blocks);\n\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(\n            this.editorApiId(),\n            addedBlocks,\n            this.requestOptions()\n        );\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(\n            this.updatedBlocks,\n            this.blockIdsMap,\n            this.requestOptions()\n        );\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            this.requestOptions()\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, this.requestOptions()).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        if (this.blockIdsMap.has(block.id!)) {\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        const version = this.lazyLoadVersion;\n\n        // TODO: есть варик что что то пойдет не так\n        this.firstRender = this.editor.blocks.render({ blocks: [block] }).then(() => {\n            this.isSkip = false;\n            this.finishFirstRender(version);\n        });\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        if (parent && this.blockIdsMap.has(block.id!)) {\n            return parent;\n        }\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.finishLoadedDocument();\n\n            return;\n        }\n\n        const version = this.lazyLoadVersion;\n\n        if (this.isReadonly()) {\n            this.editor.render({ blocks: [] }).then(() => this.finishFirstRender(version));\n\n            return;\n        }\n\n        this.editorService.setStartBlock(\n            this.editorApiId(),\n            this.requestOptions(),\n            (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => this.renderStartBlock(block, id, version)\n        );\n    }\n\n    private finishLoadedDocument(): void {\n        this.firstRender.then(() => {\n            if (this.isDestroyed) {\n                return;\n            }\n\n            this.setFocus();\n            this.editorEmpty.emit(this.checkIsEmpty());\n        });\n    }\n\n    private async renderStartBlock(\n        block: CuiBlock<CuiCombinedBlockToolData>,\n        id: string,\n        version: number\n    ): Promise<void> {\n        if (this.isDestroyed || version !== this.lazyLoadVersion) {\n            return;\n        }\n\n        this.blockIdsMap.set(id, id);\n        this.isSkipCombinedBlockOnChange.push(true);\n        this.editor.render({ blocks: [block] }).then(() => {\n            this.finishFirstRender(version);\n            this.setFocus();\n            recalculateIndexes(this.editor.blocks);\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.querySelector(REDACTOR_SELECTOR)?.textContent?.trim();\n\n        return !redactorTextContent;\n    }\n\n    private resetData(): void {\n        this.resetLazyLoad();\n        this.firstRender = Promise.resolve();\n        this.isEditorReady.set(false);\n        this.isSkipCombinedBlockOnChange = [];\n        this.isFirst = true;\n        this.isChanging = false;\n        this.isSkip = false;\n        this.blockIdsMap = new Map<string, string>();\n        this.combinedBlocks = new Map();\n        this.index = 0;\n        this.addedBlocks = [];\n        this.updatedBlocks = [];\n        this.removedBlocksIds = [];\n        this.changesQueue = [];\n        this.abortController = new AbortController();\n    }\n\n    private resetLazyLoad(): void {\n        this.lazyLoadVersion++;\n        this.lazyLoadObserver?.disconnect();\n        this.lazyLoadObserver = null;\n        this.lazyLoadSubscription?.unsubscribe();\n        this.lazyLoadSubscription = null;\n        this.isRequested = false;\n        this.isPreloadFinished = false;\n        this.hasEndLeftZone = false;\n        this.page = 0;\n    }\n}\n","<div\n    #editor\n    data-editor\n    [class._readonly]=\"config().readOnly\"\n    [class._loading]=\"!isEditorReady()\"\n>\n    <div [id]=\"editorId\"></div>\n    <div\n        #editorEnd\n        class=\"editor-end\"\n    ></div>\n</div>\n","import { Directive, effect, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n    selector: '[editorResizeObserver]',\n    standalone: true\n})\nexport class EditorResizeObserverDirective {\n    private readonly templateRef = inject(TemplateRef);\n    private readonly viewContainerRef = inject(ViewContainerRef);\n\n    private observer: ResizeObserver | null = null;\n\n    public readonly target = input.required<HTMLElement>();\n    public readonly shortHeight = input.required<number>();\n\n    constructor() {\n        this.initTargetEffect();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroyObserver();\n    }\n\n    private initTargetEffect(): void {\n        effect(() => {\n            const target = this.target();\n\n            if (!target) {\n                return;\n            }\n\n            this.initObserver();\n        });\n    }\n\n    private initObserver(): void {\n        this.observer = new ResizeObserver((entries) => {\n            if (entries[0].target.scrollHeight <= this.shortHeight()) {\n                this.viewContainerRef.clear();\n\n                return;\n            }\n\n            if (this.viewContainerRef.length) {\n                return;\n            }\n\n            this.viewContainerRef.createEmbeddedView(this.templateRef);\n        });\n\n        this.observer.observe(this.target());\n    }\n\n    private destroyObserver(): void {\n        this.observer?.disconnect();\n        this.observer = null;\n    }\n}\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';\nimport type { TemplateRef } from '@angular/core';\nimport { Component, input, output, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule, CuiSvgModule } from '../../../components';\nimport { CuiEditorComponent } from '../../editor.component';\nimport type { CuiEditorConfig } from '../../interfaces';\n\n@Component({\n    selector: 'cui-editor-modal',\n    imports: [CuiEditorComponent, CuiButtonModule, NgTemplateOutlet, CuiSvgModule],\n    standalone: true,\n    templateUrl: './editor-modal.component.html',\n    styleUrl: './editor-modal.component.scss'\n})\nexport class CuiEditorModalComponent {\n    protected readonly isOpen = signal(false);\n    protected readonly isButtonDisabled = signal<boolean>(false);\n\n    public readonly title = input.required<string>();\n    public readonly buttonTemplate = input<TemplateRef<HTMLElement>>();\n    public readonly config = input.required<CuiEditorConfig>();\n    public readonly editorId = input<CuiNullable<string>>();\n\n    public readonly editorCreated = output();\n    public readonly modalClosed = output();\n\n    protected onModalOpen(): void {\n        this.isButtonDisabled.set(true);\n\n        if (this.editorId()) {\n            this.open();\n\n            return;\n        }\n\n        this.editorCreated.emit();\n    }\n    public open(): void {\n        this.isOpen.set(true);\n    }\n\n    public close(): void {\n        this.isButtonDisabled.set(false);\n        this.isOpen.set(false);\n        this.modalClosed.emit();\n    }\n}\n","@if (buttonTemplate(); as template) {\n    <button\n        type=\"button\"\n        class=\"button\"\n        (click)=\"onModalOpen()\"\n    >\n        <ng-container [ngTemplateOutlet]=\"template\" />\n    </button>\n} @else {\n    <button\n        class=\"description\"\n        cuiButton\n        type=\"button\"\n        appearance=\"outlined-gray\"\n        icon=\"cuiIconRichText\"\n        size=\"sm\"\n        (click)=\"onModalOpen()\"\n        [disabled]=\"isButtonDisabled()\"\n    >\n        @if (editorId()) {\n            <span class=\"description__text _created\">{{ 'Description' }}</span>\n            <cui-svg\n                class=\"description__icon\"\n                icon=\"cuiIconEdit\"\n                color=\"var(--cui-base-500)\"\n            />\n        } @else {\n            <cui-svg\n                class=\"description__icon\"\n                icon=\"cuiIconPlus\"\n                color=\"var(--cui-light-blue-600)\"\n            />\n            <span class=\"description__text\">{{ 'Add description' }}</span>\n        }\n    </button>\n}\n@if (isOpen()) {\n    <div class=\"wrapper\">\n        @if (editorId(); as id) {\n            <header class=\"header\">\n                <div class=\"info\">\n                    <button\n                        cuiButton\n                        type=\"button\"\n                        icon=\"cuiIconChevronLeft\"\n                        size=\"xxs\"\n                        appearance=\"secondary\"\n                        shape=\"rounded\"\n                        (click)=\"close()\"\n                    ></button>\n                    <h1 class=\"title\">{{ title() }}</h1>\n                </div>\n                <div class=\"actions\">\n                    <!-- <cui-loader /> -->\n                    <button\n                        type=\"button\"\n                        cuiButton\n                        size=\"xs\"\n                        (click)=\"close()\"\n                    >\n                        {{ 'Done' }}\n                    </button>\n                </div>\n            </header>\n\n            <section class=\"section\">\n                <cui-editor\n                    #editorComponent\n                    class=\"editor\"\n                    [editorApiId]=\"id\"\n                    [config]=\"config()\"\n                />\n            </section>\n        }\n    </div>\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    effect,\n    ElementRef,\n    input,\n    output,\n    signal,\n    viewChild\n} from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiButtonModule, CuiContentWrapperComponent, CuiHintModule } from '../../../components';\nimport { CuiTooltip } from '../../../directives';\n\nimport { CuiEditorComponent } from '../../editor.component';\nimport type { CuiEditorConfig } from '../../interfaces';\nimport { CuiEditorModalComponent } from '../editor-modal/editor-modal.component';\n\n@Component({\n    selector: 'cui-editor-block',\n    imports: [\n        CuiButtonModule,\n        CuiEditorModalComponent,\n        CuiEditorComponent,\n        TranslocoDirective,\n        CuiContentWrapperComponent,\n        CuiTooltip,\n        CuiHintModule\n    ],\n    standalone: true,\n    templateUrl: './editor-block.component.html',\n    styleUrls: ['./editor-block.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiEditorBlockComponent {\n    private skipFirstValidation = true;\n\n    protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\n    protected readonly isDescriptionModalOpen = signal(false);\n    protected readonly isDescriptionEmpty = signal(false);\n\n    public readonly editorContainer = viewChild<string, ElementRef<HTMLElement>>('editorContainer', {\n        read: ElementRef\n    });\n\n    public readonly title = input.required<string>();\n    public readonly editorId = input.required<string>();\n    public readonly config = input.required<CuiEditorConfig>();\n    public readonly required = input(false);\n\n    public readonly editorEmpty = output<boolean>();\n\n    constructor() {\n        this.initEditorConfig();\n    }\n\n    protected onToggleDescriptionModal(): void {\n        this.isDescriptionModalOpen.update((prev) => !prev);\n    }\n\n    protected onDescriptionChange(value: boolean): void {\n        this.editorEmpty.emit(value);\n\n        if (this.skipFirstValidation) {\n            this.skipFirstValidation = false;\n\n            return;\n        }\n\n        this.isDescriptionEmpty.set(value);\n    }\n\n    private initEditorConfig(): void {\n        const effectRef = effect(\n            () => {\n                const element = this.editorContainer()?.nativeElement;\n\n                if (!element) {\n                    return;\n                }\n\n                this.editorConfig.set({ element, ...this.config() });\n                effectRef.destroy();\n            },\n            { allowSignalWrites: true }\n        );\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <div class=\"wrapper\">\n        <span class=\"title\">\n            {{ t('DESCRIPTION') }}\n            @if (required()) {\n                <span class=\"title__required\">*</span>\n            }\n        </span>\n        <ng-template #button>\n            <button\n                [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\n                cuiButton\n                size=\"xxs\"\n                type=\"button\"\n                appearance=\"ghost\"\n                icon=\"cuiIconMaximizeSm\"\n                (click)=\"onToggleDescriptionModal()\"\n            ></button>\n        </ng-template>\n        <cui-editor-modal\n            [title]=\"title()\"\n            [editorId]=\"editorId()\"\n            [buttonTemplate]=\"button\"\n            [config]=\"config()\"\n            (modalClosed)=\"onToggleDescriptionModal()\"\n        />\n    </div>\n    <div\n        #editorContainer\n        cuiContentWrapper\n        class=\"editor\"\n        [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\n    >\n        @if (!isDescriptionModalOpen() && editorConfig()) {\n            <cui-editor\n                #editorComponent\n                [editorApiId]=\"editorId()\"\n                [config]=\"editorConfig()!\"\n                (editorEmpty)=\"onDescriptionChange($event)\"\n            />\n        }\n    </div>\n    @if (required() && isDescriptionEmpty()) {\n        <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\n    }\n</ng-container>\n","import {\n    EDITOR_ATTACHES_TOOL_SELECTOR,\n    EDITOR_IMAGE_TOOL_SELECTOR,\n    EDITOR_TOOL_MODAL_SELECTOR,\n    EDITOR_TOOLTIP_SELECTOR,\n    EDITOR_VIDEO_TOOL_SELECTOR,\n    EditorAttachesToolComponent,\n    EditorImageToolComponent,\n    EditorToolModalComponent,\n    EditorTooltipComponent,\n    EditorVideoToolComponent,\n    MARKER_MODAL_SELECTOR,\n    MARKER_SELECT_SELECTOR,\n    MarkerModalComponent,\n    MarkerSelectComponent\n} from '../components';\nimport { CuiCustomElement } from '../interfaces';\n\nexport const EDITOR_CUSTOM_ELEMENTS: readonly CuiCustomElement[] = [\n    {\n        selector: EDITOR_TOOLTIP_SELECTOR,\n        component: EditorTooltipComponent\n    },\n    {\n        selector: MARKER_SELECT_SELECTOR,\n        component: MarkerSelectComponent\n    },\n    {\n        selector: EDITOR_TOOL_MODAL_SELECTOR,\n        component: EditorToolModalComponent\n    },\n    {\n        selector: MARKER_MODAL_SELECTOR,\n        component: MarkerModalComponent\n    },\n    {\n        selector: EDITOR_VIDEO_TOOL_SELECTOR,\n        component: EditorVideoToolComponent\n    },\n    {\n        selector: EDITOR_IMAGE_TOOL_SELECTOR,\n        component: EditorImageToolComponent\n    },\n    {\n        selector: EDITOR_ATTACHES_TOOL_SELECTOR,\n        component: EditorAttachesToolComponent\n    }\n];\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, HttpRequest } from '@angular/common/http';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport type { Observer } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nexport const cuiXNdjsonInterceptor: HttpInterceptorFn = (request, next) => {\n    if (request.headers.get('Content-Type') !== 'application/x-ndjson') {\n        return next(request);\n    }\n\n    return new Observable<HttpEvent<unknown>>((observer) => {\n        const controller = new AbortController();\n        const signal = controller.signal;\n\n        (async (): Promise<void> => {\n            try {\n                await handleResponse(request, signal, observer);\n            } catch (error) {\n                observer.error(new HttpErrorResponse({ error }));\n            }\n        })();\n\n        return () => controller.abort();\n    });\n};\n\nasync function handleResponse(\n    request: HttpRequest<unknown>,\n    signal: AbortSignal,\n    observer: Observer<HttpEvent<unknown>>\n): Promise<void> {\n    const response = await sendRequest(request, signal);\n\n    if (!response.ok) {\n        const error = await response.json();\n\n        observer.error(new HttpErrorResponse({ error }));\n\n        return;\n    }\n\n    if (!response.body) {\n        observer.complete();\n\n        return;\n    }\n\n    await readStream(response.body.getReader(), observer);\n}\n\nasync function sendRequest(request: HttpRequest<unknown>, signal: AbortSignal): Promise<Response> {\n    return fetch(request.urlWithParams, {\n        method: request.method,\n        headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\n            headers[key] = request.headers.get(key)!;\n\n            return headers;\n        }, {}),\n        body: request.body ? JSON.stringify(request.body) : null,\n        signal\n    });\n}\n\nasync function readStream(\n    reader: ReadableStreamDefaultReader<Uint8Array>,\n    observer: Observer<HttpEvent<unknown>>\n): Promise<void> {\n    const decoder = new TextDecoder();\n    let buffer = '';\n\n    for (;;) {\n        const { done, value } = await reader.read();\n\n        if (done) {\n            emitTail(buffer + decoder.decode(), observer);\n            observer.complete();\n\n            return;\n        }\n\n        buffer += decoder.decode(value, { stream: true });\n\n        const lines = buffer.split('\\n');\n\n        buffer = lines.pop() ?? '';\n        emitLines(lines, observer);\n    }\n}\n\nfunction emitLines(lines: string[], observer: Observer<HttpEvent<unknown>>): void {\n    lines.filter((line) => line.trim().length > 0).forEach((line) => observer.next(JSON.parse(line)));\n}\n\nfunction emitTail(tail: string, observer: Observer<HttpEvent<unknown>>): void {\n    try {\n        emitLines([tail], observer);\n    } catch {\n        return;\n    }\n}\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';\nimport { inject } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport type { Observable } from 'rxjs';\nimport { catchError, throwError } from 'rxjs';\n\nimport { CuiAlertService } from '../components';\nimport { CUI_ERROR_TRANSLATION_PREFIX } from '../tokens';\n\nexport const cuiErrorHandlerInterceptor: HttpInterceptorFn = (request, next) => {\n    const translocoService = inject(TranslocoService);\n    const cuiAlertService = inject(CuiAlertService);\n    const errorTranslationPrefix = inject(CUI_ERROR_TRANSLATION_PREFIX);\n\n    return next(request).pipe(\n        catchError((error) => {\n            console.error(error);\n\n            if (error instanceof HttpErrorResponse) {\n                cuiAlertService\n                    .open(translocoService.translate(`${errorTranslationPrefix}${error.error.code}`), {\n                        status: 'error'\n                    })\n                    .subscribe();\n            }\n\n            return throwError(() => error) as Observable<HttpEvent<unknown>>;\n        })\n    );\n};\n","import type { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\n\nimport { CuiAuthService } from '../providers';\n\nexport const cuiAuthInterceptor: HttpInterceptorFn = (request, next) => {\n    const authService = inject(CuiAuthService);\n\n    if (!authService.hasValidAccessToken()) {\n        return next(request);\n    }\n\n    const modifiedRequest = request.clone({\n        setHeaders: {\n            Authorization: 'Bearer ' + authService.getAccessToken()\n        }\n    });\n\n    return next(modifiedRequest);\n};\n","import type { HttpEvent, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport type { Observer } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nexport const sseStreamReaderInterceptor: HttpInterceptorFn = (request, next) => {\n    if (request.headers.get('Accept') !== 'text/event-stream') {\n        return next(request);\n    }\n\n    return new Observable<HttpEvent<unknown>>((observer) => {\n        const controller = new AbortController();\n        const signal = controller.signal;\n\n        (async (): Promise<void> => {\n            try {\n                await handleResponse(request, signal, observer);\n            } catch (error) {\n                observer.error(error);\n            }\n        })();\n\n        return () => controller.abort();\n    });\n};\n\nasync function handleResponse(\n    request: HttpRequest<unknown>,\n    signal: AbortSignal,\n    observer: Observer<HttpEvent<unknown>>\n): Promise<void> {\n    const response = await prepareRequest(request, signal);\n\n    if (!response.body) {\n        const error = await response.json();\n\n        observer.error(new HttpErrorResponse({ error }));\n\n        return;\n    }\n\n    await readStream(response.body!.getReader(), observer);\n}\n\nasync function prepareRequest(request: HttpRequest<unknown>, signal: AbortSignal): Promise<Response> {\n    const response = await fetch(request.urlWithParams, {\n        method: request.method,\n        headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\n            headers[key] = request.headers.get(key)!;\n\n            return headers;\n        }, {}),\n        body: request.body ? JSON.stringify(request.body) : null,\n        signal\n    });\n\n    if (!response.ok) {\n        const error = await response.json();\n\n        throw new HttpErrorResponse({ error });\n    }\n\n    return response;\n}\n\nasync function readStream(\n    reader: ReadableStreamDefaultReader<Uint8Array>,\n    observer: Observer<HttpEvent<unknown>>\n): Promise<void> {\n    const decoder = new TextDecoder();\n    let buffer = '';\n\n    while (true) {\n        const { done, value } = await reader.read();\n\n        if (done) {\n            if (buffer.trim()) {\n                processChunk(buffer, observer);\n            }\n\n            return observer.complete();\n        }\n\n        const chunk = decoder.decode(value, { stream: true });\n\n        buffer += chunk;\n\n        const lines = buffer.split('\\n');\n        buffer = lines.pop() || '';\n\n        for (const line of lines) {\n            if (line.trim()) {\n                processChunk(line, observer);\n            }\n        }\n    }\n}\n\nfunction processChunk(line: string, observer: Observer<HttpEvent<unknown>>): void {\n    const trimmedLine = line.trim();\n\n    if (trimmedLine.startsWith('data:')) {\n        const jsonStr = trimmedLine.substring(5).trim();\n\n        if (jsonStr) {\n            const data = JSON.parse(jsonStr);\n\n            observer.next(data);\n        }\n    }\n}\n","import { HttpErrorResponse, type HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { catchError, throwError } from 'rxjs';\n\nimport { CUI_AUTH_LOGIN_STRATEGY } from '../tokens';\n\nexport const cuiAuthErrorInterceptor: HttpInterceptorFn = (request, next) => {\n    const loginStrategy = inject(CUI_AUTH_LOGIN_STRATEGY);\n\n    return next(request).pipe(\n        catchError((error) => {\n            if (error instanceof HttpErrorResponse && (error.status === 401 || error.status === 403)) {\n                loginStrategy.openLogin();\n            }\n            return throwError(() => error);\n        })\n    );\n};\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { CuiSvgModule } from '../../../../../components';\nimport { CuiLoaderPosition, CuiLoaderSize } from '../../../../model';\n\n/**\n * @deprecated Use CuiLoaderComponent with type=\"circle\" instead\n */\n@Component({\n    selector: 'cui-circle-loader',\n    standalone: true,\n    imports: [CuiSvgModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    templateUrl: './circle-loader.component.html',\n    styleUrl: './circle-loader.component.scss',\n    host: {\n        '[class]': 'size()',\n        '[class._center]': 'position() === \"center\"'\n    }\n})\nexport class CuiCircleLoaderComponent {\n    public readonly position = input<CuiLoaderPosition>('auto');\n    public readonly size = input<CuiLoaderSize>('md');\n    public readonly color = input<string>('var(--cui-base-900)');\n}\n","<cui-svg\n    icon=\"cuiIconLoading\"\n    [color]=\"color()\"\n    class=\"loading\"\n/>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { CuiLoaderPosition, CuiLoaderSize } from '../../../../model';\n\n/**\n * @deprecated Use CuiLoaderComponent with type=\"linear\" instead\n */\n@Component({\n    selector: 'cui-linear-loader',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    templateUrl: './linear-loader.component.html',\n    styleUrl: './linear-loader.component.scss',\n    host: {\n        '[class]': 'size()',\n        '[class._center]': 'position() === \"center\"',\n        '[style.--loader-color]': 'color()'\n    }\n})\nexport class CuiLinearLoaderComponent {\n    public readonly position = input<CuiLoaderPosition>('auto');\n    public readonly size = input<CuiLoaderSize>('sm');\n    public readonly color = input<string>('var(--cui-blue-500)');\n}\n","<div class=\"loader\"></div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { CuiLoaderPosition, CuiLoaderSize } from '../../../../model';\n\n/**\n * @deprecated Use CuiLoaderComponent with type=\"pulse\" instead\n */\n@Component({\n    selector: 'cui-pulse-loader',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    templateUrl: './pulse-loader.component.html',\n    styleUrl: './pulse-loader.component.scss',\n    host: {\n        '[class]': 'size()',\n        '[class._center]': 'position() === \"center\"',\n        '[style.--pulse-color]': 'color()'\n    }\n})\nexport class CuiPulseLoaderComponent {\n    public readonly position = input<CuiLoaderPosition>('auto');\n    public readonly size = input<CuiLoaderSize>('md');\n    public readonly color = input<string>('var(--cui-lavender-400)');\n}\n","<svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"24\"\n    height=\"24\"\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    class=\"footer__loader loader-svg\"\n>\n    <circle\n        class=\"loader-circle\"\n        opacity=\"0.5\"\n        cx=\"12.0255\"\n        cy=\"11.965\"\n        r=\"3.70326\"\n    />\n    <circle\n        class=\"loader-circle\"\n        opacity=\"0.5\"\n        cx=\"12.0255\"\n        cy=\"11.965\"\n        r=\"3.70326\"\n    />\n    <circle\n        class=\"loader-circle\"\n        opacity=\"0.5\"\n        cx=\"12.0255\"\n        cy=\"11.965\"\n        r=\"3.70326\"\n    />\n    <circle\n        class=\"loader-circle\"\n        opacity=\"0.5\"\n        cx=\"12.0255\"\n        cy=\"11.965\"\n        r=\"3.70326\"\n    />\n</svg>\n<span class=\"text\">\n    <ng-content />\n</span>\n","import type { OnDestroy } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\n\nimport { TranslocoService } from '@jsverse/transloco';\n\nimport { CuiSvgModule } from '../../../../../components';\nimport { CuiLoaderService, CuiLoadingState } from '../../../../../services';\nimport { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIcon } from '@cuby-ui/icons';\n\n/**\n * @deprecated Use CuiLoaderComponent with type=\"stated\" instead\n */\n@Component({\n    selector: 'cui-stated-loader',\n    imports: [CuiSvgModule],\n    standalone: true,\n    templateUrl: './stated-loader.component.html',\n    styleUrls: ['./stated-loader.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiStatedLoaderComponent implements OnDestroy {\n    private readonly loaderService = inject(CuiLoaderService);\n    private readonly translocoService = inject(TranslocoService);\n\n    public readonly color = input<string>('var(--cui-base-500)');\n\n    protected readonly state = CuiLoadingState;\n    protected readonly LoaderString: Record<CuiLoadingState, string> = {\n        [CuiLoadingState.LOADING]: `${this.translocoService.translate('SAVING')}...`,\n        [CuiLoadingState.COMPLETED]: this.translocoService.translate('SAVED'),\n        [CuiLoadingState.INITIAL]: ''\n    };\n    protected readonly LoaderIcon: Record<CuiLoadingState, CuiNullable<CuiIcon>> = {\n        [CuiLoadingState.LOADING]: 'cuiIconRefreshCcw',\n        [CuiLoadingState.COMPLETED]: 'cuiIconCheck',\n        [CuiLoadingState.INITIAL]: null\n    };\n\n    protected readonly loaderState = this.loaderService.loaderState;\n    protected readonly loaderString = computed(() => this.LoaderString[this.loaderState()]);\n    protected readonly loaderIcon = computed(() => this.LoaderIcon[this.loaderState()]);\n\n    public ngOnDestroy(): void {\n        this.loaderService.reset();\n    }\n}\n","@if (loaderState() !== state.INITIAL) {\n    <cui-svg\n        [icon]=\"loaderIcon()!\"\n        [color]=\"color()\"\n        [class.icon_loading]=\"loaderState() === state.LOADING\"\n    />\n    <span>{{ loaderString() }}</span>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { CuiLoaderPosition, CuiLoaderSize, CuiLoaderType } from '../../model';\nimport {\n    CuiCircleLoaderComponent,\n    CuiLinearLoaderComponent,\n    CuiPulseLoaderComponent,\n    CuiStatedLoaderComponent\n} from './components';\n\n@Component({\n    selector: 'cui-loader',\n    standalone: true,\n    imports: [CuiCircleLoaderComponent, CuiLinearLoaderComponent, CuiPulseLoaderComponent, CuiStatedLoaderComponent],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    templateUrl: './loader.component.html',\n})\nexport class CuiLoaderComponent {\n    public readonly type = input<CuiLoaderType>('circle');\n    public readonly position = input<CuiLoaderPosition>('auto');\n    public readonly size = input<CuiLoaderSize>('md');\n    public readonly color = input<string>('var(--cui-base-900)');\n}\n","@switch (type()) {\n    @case ('circle') {\n        <cui-circle-loader\n            [position]=\"position()\"\n            [size]=\"size()\"\n            [color]=\"color()\"\n        />\n    }\n    @case ('stated') {\n        <cui-stated-loader [color]=\"color()\" />\n    }\n    @case ('linear') {\n        <cui-linear-loader\n            [position]=\"position()\"\n            [size]=\"size()\"\n            [color]=\"color()\"\n        />\n    }\n    @case ('pulse') {\n        <cui-pulse-loader\n            [position]=\"position()\"\n            [size]=\"size()\"\n            [color]=\"color()\"\n        >\n            <ng-content />\n        </cui-pulse-loader>\n    }\n}\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\n\nimport { CuiTooltip } from '../../../directives';\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, type CuiDialogContext } from '../../../components';\nimport type { CuiDialogDeleteData } from './delete-modal.options';\n\n@Component({\n    selector: 'cui-delete-modal',\n    imports: [CuiButtonModule, TranslocoModule, CuiTooltip],\n    standalone: true,\n    templateUrl: './delete-modal.component.html',\n    styleUrls: ['./delete-modal.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDeleteModalComponent {\n    private readonly context = inject<CuiDialogContext<CuiDialogDeleteData>>(CUI_DIALOG_CONTEXT);\n\n    private readonly data = this.context.data;\n\n    protected readonly title = this.data.title;\n    protected readonly content = this.data.content;\n    protected readonly isLoading = signal(false);\n    protected readonly isDisabled = this.data.isDisabled ?? false;\n\n    protected onDelete(): void {\n        if (!this.data.delete) {\n            return;\n        }\n\n        this.isLoading.set(true);\n        this.data\n            .delete()\n            .pipe(finalize(() => this.isLoading.set(false)))\n            .subscribe(() => this.context.completeWith());\n    }\n\n    protected onCancel(): void {\n        this.context.completeWith({ canceled: true });\n    }\n}\n","<div\n    *transloco=\"let t\"\n    class=\"wrapper\"\n>\n    <div class=\"content\">\n        <div class=\"header\">\n            <h3 class=\"title\">{{ t(title) }}</h3>\n            <button\n                type=\"button\"\n                cuiButton\n                icon=\"cuiIconX\"\n                appearance=\"ghost\"\n                [disabled]=\"isLoading()\"\n                class=\"close-btn\"\n                (click)=\"onCancel()\"\n            ></button>\n        </div>\n        <div class=\"info\">\n            @for (text of content; track text) {\n                <p [innerHTML]=\"t(text)\"></p>\n            }\n        </div>\n    </div>\n\n    <div class=\"footer\">\n        <button\n            type=\"button\"\n            cuiButton\n            (click)=\"onCancel()\"\n            [disabled]=\"isLoading()\"\n            appearance=\"secondary\"\n        >\n            {{ t('CANCEL') }}\n        </button>\n        <button\n            type=\"button\"\n            cuiButton\n            [isLoaderShown]=\"isLoading()\"\n            [disabled]=\"isDisabled\"\n            [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\n            appearance=\"destructive\"\n            (click)=\"onDelete()\"\n        >\n            {{ t('YES_DELETE') }}\n        </button>\n    </div>\n</div>\n","import { Injectable, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { TreeStruct } from '@cuby-ui/api';\n\n@Injectable({\n    providedIn: 'root'\n})\n/** @deprecated Use `CuiCategoryTreeStateService` from `cui-categories-tree`. */\nexport class CuiSelectedCategoryService {\n    private readonly editingIdSignal = signal<CuiNullable<string>>(null);\n    private readonly creatingIdSignal = signal<CuiNullable<string>>(null);\n    private readonly categorySignal = signal<CuiNullable<TreeStruct>>(null);\n\n    public readonly editingId = this.editingIdSignal.asReadonly();\n    public readonly creatingId = this.creatingIdSignal.asReadonly();\n    public readonly category = this.categorySignal.asReadonly();\n\n    public setCurrentCategory(category: CuiNullable<TreeStruct>): void {\n        this.categorySignal.set(category);\n    }\n\n    public setEditingId(id: string): void {\n        this.editingIdSignal.set(id);\n        this.clearCreatingId();\n    }\n\n    public setCreatingId(id: string): void {\n        this.creatingIdSignal.set(id);\n        this.clearEditingId();\n    }\n\n    public clearEditingId(): void {\n        this.editingIdSignal.set('');\n    }\n\n    public clearCreatingId(): void {\n        this.creatingIdSignal.set('');\n    }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport type { AbstractControl } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiHintModule } from '../../../components';\n\n@Component({\n    selector: 'cui-general-control-error-hint',\n    imports: [CuiHintModule, TranslocoDirective],\n    standalone: true,\n    templateUrl: './general-control-error-hint.component.html',\n    styleUrl: './general-control-error-hint.component.scss',\n    changeDetection: ChangeDetectionStrategy.Default\n})\nexport class CuiGeneralControlErrorHintComponent {\n    public readonly control = input.required<AbstractControl>();\n    public readonly isVisible = input<boolean>();\n\n    protected get isInvalid(): boolean {\n        return this.isVisible() ?? (this.control().invalid && this.control().dirty);\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (isInvalid) {\n        @if (control().errors; as errors) {\n            <cui-hint hintType=\"error\">\n                @if (errors['required']) {\n                    {{ t('FIELD_IS_REQUIRED') }}\n                } @else if (errors['minlength']) {\n                    {{ t('PLEASE_KEEP_FIELD_AT_LEAST_CHARACTERS', { value: errors['minlength'].requiredLength }) }}\n                } @else if (errors['maxlength']) {\n                    {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: errors['maxlength'].requiredLength }) }}\n                } @else if (errors['extraSpaces']) {\n                    {{ t('MUST_BE_WITHOUT_EXTRA_SPACES') }}\n                } @else if (errors['min']) {\n                    {{ t('MIN_VALUE_MUST_BE_MORE_THAN', { value: errors['min'].min }) }}\n                } @else if (errors['max']) {\n                    {{ t('MAX_VALUE_MUST_BE_LESS_THAN', { value: errors['max'].max }) }}\n                } @else if (errors['email']) {\n                    {{ t('INVALID_EMAIL_ADDRESS') }}\n                }\n            </cui-hint>\n        }\n    }\n</ng-container>\n","import type { OnInit } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    effect,\n    ElementRef,\n    inject,\n    input,\n    output,\n    viewChild\n} from '@angular/core';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { cuiCreateDefaultValidators } from '../../../../../utils';\nimport {\n    CuiFormFieldModule,\n    CuiHintModule,\n    CuiIconButtonModule,\n    CuiGhostInputComponent\n} from '../../../../../components';\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\n\n@Component({\n    selector: 'cui-category-form',\n    imports: [\n        CuiFormFieldModule,\n        CuiHintModule,\n        CuiIconButtonModule,\n        CuiGeneralControlErrorHintComponent,\n        CuiGhostInputComponent,\n        ReactiveFormsModule,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './category-form.component.html',\n    styleUrl: './category-form.component.scss',\n    host: {\n        '(click)': 'onHostClick($event)'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoryFormComponent implements OnInit {\n    protected readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n\n    protected readonly form = this.nonNullableFormBuilder.group({\n        title: ['', cuiCreateDefaultValidators({ asyncDelay: 0 })]\n    });\n    protected readonly titleControl = this.form.controls.title;\n\n    public readonly isDisabled = input<boolean>(false);\n    public readonly defaultTitle = input<string>('');\n\n    protected readonly created = output<string>();\n    protected readonly canceled = output<void>();\n\n    protected readonly input = viewChild.required('input', { read: ElementRef<HTMLInputElement> });\n\n    protected get isTitleInvalid(): boolean {\n        return this.titleControl.invalid && this.titleControl.dirty;\n    }\n\n    protected get isSubmitButtonDisabled(): boolean {\n        return this.isDisabled() || this.form.invalid;\n    }\n\n    constructor() {\n        this.initInputDisableStateSubscription();\n    }\n\n    public ngOnInit(): void {\n        this.initDefaultTitle();\n        this.initInputFocus();\n    }\n\n    protected onHostClick(event: Event): void {\n        event.stopPropagation();\n    }\n\n    protected onSubmit(): void {\n        if (this.form.invalid) {\n            return;\n        }\n\n        this.created.emit(this.form.value.title!);\n    }\n\n    protected onCancel(event: Event): void {\n        event.stopPropagation();\n        this.canceled.emit();\n    }\n\n    private initInputDisableStateSubscription(): void {\n        effect(() => {\n            if (this.isDisabled()) {\n                this.titleControl.disable();\n\n                return;\n            }\n\n            this.titleControl.enable();\n        });\n    }\n\n    private initDefaultTitle(): void {\n        this.form.patchValue({ title: this.defaultTitle() });\n    }\n\n    private initInputFocus(): void {\n        Promise.resolve().then(() => this.input().nativeElement.focus());\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <form\n        [formGroup]=\"form\"\n        class=\"form\"\n        (ngSubmit)=\"onSubmit()\"\n    >\n        <div class=\"input\">\n            <input\n                #input\n                cuiGhostInput\n                formControlName=\"title\"\n                type=\"text\"\n                placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\n                [isError]=\"isTitleInvalid\"\n                (keyup)=\"$event.preventDefault()\"\n            />\n            <cui-general-control-error-hint [control]=\"titleControl\" />\n        </div>\n        <button\n            cuiIconButton\n            type=\"submit\"\n            icon=\"cuiIconCheck\"\n            color=\"var(--cui-success)\"\n            [disabled]=\"isSubmitButtonDisabled\"\n            class=\"button\"\n        ></button>\n    </form>\n    <button\n        cuiIconButton\n        type=\"button\"\n        icon=\"cuiIconXCircle\"\n        color=\"var(--cui-danger)\"\n        (click)=\"onCancel($event)\"\n        [disabled]=\"isDisabled()\"\n        class=\"button\"\n    ></button>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport { CuiSvgModule } from '../../../../../components';\nimport { CuiCategoryFormComponent } from '../category-form';\n\n@Component({\n    selector: 'cui-create-category-item',\n    imports: [CuiSvgModule, CuiCategoryFormComponent],\n    standalone: true,\n    templateUrl: './create-category-item.component.html',\n    styleUrl: './create-category-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCreateCategoryItemComponent {\n    protected readonly created = output<string>();\n    protected readonly canceled = output<void>();\n\n    public readonly isDisabled = input<boolean>(false);\n\n    protected onSubmit(title: string): void {\n        this.created.emit(title);\n    }\n\n    protected onCancel(): void {\n        this.canceled.emit();\n    }\n}\n","<cui-svg\n    icon=\"cuiIconFolder\"\n    color=\"var(--cui-base-500)\"\n    class=\"icon\"\n/>\n<cui-category-form\n    [isDisabled]=\"isDisabled()\"\n    (created)=\"onSubmit($event)\"\n    (canceled)=\"onCancel()\"\n/>\n","import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, inject, input, signal } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { CuiApiContext, CuiTreeStructNavigatorApiService, TreeStruct } from '@cuby-ui/api';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { finalize } from 'rxjs';\n\nimport { CuiButtonModule, CuiIconButtonModule, CuiSvgModule } from '../../../../../components';\nimport { CuiSelectedCategoryService } from '../../services';\nimport { CuiCategoriesListComponent } from '../categories-list';\nimport { CuiCategoryFormComponent } from '../category-form';\nimport { CuiCreateCategoryItemComponent } from '../create-category-item';\n\n@Component({\n    selector: 'cui-category-item',\n    imports: [\n        CuiButtonModule,\n        CuiIconButtonModule,\n        CuiLetDirective,\n        CuiSvgModule,\n        CuiCategoryFormComponent,\n        CuiCreateCategoryItemComponent,\n        forwardRef(() => CuiCategoriesListComponent)\n    ],\n    standalone: true,\n    templateUrl: './category-item.component.html',\n    styleUrl: './category-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoryItemComponent {\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n    private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\n\n    protected readonly isStageCreationLoading = signal(false);\n    protected readonly stageStorageChildren = signal<TreeStruct[]>([]);\n    protected readonly areChildrenOpened = signal(false);\n    protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\n        this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\n    );\n    protected readonly doChildrenExist = computed(\n        () => this.stageStorage().children.length || this.stageStorageChildren().length\n    );\n    protected readonly isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());\n    protected readonly stageStorageIcon = computed<CuiIcon>(() =>\n        this.areChildrenOpened() && this.doChildrenExist() ? 'cuiIconFolderOpen' : 'cuiIconFolder'\n    );\n    protected readonly isSubcategoryCreating = signal(false);\n    protected readonly isSubcategoryCreationLoading = signal(false);\n    protected readonly alignItems = computed(() => (this.isTitleEdit() ? 'flex-start' : 'center'));\n    protected readonly isTitleEdit = computed(\n        () => this.selectedCategoryService.editingId() === this.stageStorage().id\n    );\n    protected readonly isCreateCategoryControlVisible = computed(\n        () =>\n            (this.selectedCategoryService.creatingId() === this.stageStorage().id && this.isSubcategoryCreating()) ||\n            this.isSubcategoryCreationLoading()\n    );\n    public readonly categoryTitle = signal<string>('');\n    public readonly category = computed(() => ({\n        ...this.stageStorage(),\n        title: this.categoryTitle() || this.stageStorage().title\n    }));\n\n    public readonly stageStorage = input.required<TreeStruct>();\n    public readonly context = input<CuiApiContext>();\n\n    constructor() {\n        this.initStageStorageChildren();\n    }\n\n    protected onSelectCategory(): void {\n        this.selectedCategoryService.setCurrentCategory(this.category());\n    }\n\n    protected onToggleChildren(event: MouseEvent): void {\n        event.stopPropagation();\n\n        this.areChildrenOpened.update((value) => !value);\n\n        if (this.areChildrenOpened()) {\n            return;\n        }\n\n        this.isSubcategoryCreating.set(false);\n    }\n\n    protected onTitleChanged(title: string): void {\n        this.onCancelTitleEdit();\n\n        if (title === this.category().title) {\n            return;\n        }\n\n        this.treeStructNavigatorApiService.updateTitle(this.stageStorage().id, title, this.context()).subscribe(() => {\n            this.categoryTitle.set(title);\n\n            if (this.category().id === this.selectedCategoryService.category()?.id) {\n                this.selectedCategoryService.setCurrentCategory(this.category());\n            }\n        });\n    }\n\n    protected onStartTitleEdit(event?: Event): void {\n        event?.stopPropagation();\n\n        this.selectedCategoryService.setEditingId(this.stageStorage().id);\n        this.onCreatingSubcategoryCanceled();\n    }\n\n    protected onCancelTitleEdit(): void {\n        this.selectedCategoryService.clearEditingId();\n    }\n\n    protected onStartCreatingSubcategory(event: MouseEvent): void {\n        event.stopPropagation();\n\n        this.isSubcategoryCreating.set(true);\n        this.areChildrenOpened.set(true);\n        this.selectedCategoryService.setCreatingId(this.stageStorage().id);\n    }\n\n    protected onCreateNewSubcategoryCategory(title: string): void {\n        this.isSubcategoryCreating.set(false);\n        this.isSubcategoryCreationLoading.set(true);\n        this.treeStructNavigatorApiService\n            .createStageStorageToParent(this.stageStorage().id, title, this.context())\n            .pipe(finalize(this.isSubcategoryCreationLoading.set.bind(this.isSubcategoryCreationLoading, false)))\n            .subscribe((stateStorage) => {\n                this.stageStorageChildren.update((value) => [...value, stateStorage]);\n            });\n    }\n\n    protected onCreatingSubcategoryCanceled(): void {\n        this.isSubcategoryCreating.set(false);\n        this.selectedCategoryService.clearCreatingId();\n    }\n\n    private initStageStorageChildren(): void {\n        effect(\n            () => {\n                if (!this.areChildrenOpened() || this.stageStorageChildren().length) {\n                    return;\n                }\n\n                const stageStorage = this.stageStorage();\n                const stageStorageChildren = stageStorage.children;\n\n                if (!stageStorageChildren.length) {\n                    return;\n                }\n\n                if (typeof stageStorageChildren[0] !== 'string') {\n                    this.stageStorageChildren.set(stageStorageChildren as TreeStruct[]);\n\n                    return;\n                }\n\n                this.treeStructNavigatorApiService\n                    .getStageStoragesByParent(stageStorage.id, this.context())\n                    .subscribe((storage) => {\n                        this.stageStorageChildren.update((prevStageStorages) =>\n                            prevStageStorages ? [...prevStageStorages, storage] : [storage]\n                        );\n                    });\n            },\n            { allowSignalWrites: true }\n        );\n    }\n}\n","<ng-container *cuiLet=\"category() as stage\">\n    <button\n        type=\"button\"\n        [style.align-items]=\"alignItems()\"\n        [disabled]=\"isStageCreationLoading()\"\n        class=\"category\"\n        (click)=\"onSelectCategory()\"\n    >\n        <button\n            type=\"button\"\n            class=\"category__open-close-button\"\n            [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\n            (click)=\"onToggleChildren($event)\"\n        >\n            <cui-svg\n                [icon]=\"openCloseButtonIcon()\"\n                color=\"var(--cui-base-500)\"\n            />\n        </button>\n        <cui-svg\n            [icon]=\"stageStorageIcon()\"\n            color=\"var(--cui-base-500)\"\n            class=\"icon\"\n        />\n        @if (isTitleEdit()) {\n            <cui-category-form\n                [defaultTitle]=\"stage.title\"\n                (created)=\"onTitleChanged($event)\"\n                (canceled)=\"onCancelTitleEdit()\"\n            />\n        } @else {\n            <span class=\"category__title\">{{ stage.title }}</span>\n\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconEdit\"\n                class=\"category__add-subcategory-button\"\n                (click)=\"onStartTitleEdit($event)\"\n            ></button>\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconPlus\"\n                class=\"category__add-subcategory-button\"\n                (click)=\"onStartCreatingSubcategory($event)\"\n            ></button>\n        }\n    </button>\n    <div\n        [hidden]=\"!areChildrenOpened()\"\n        class=\"list-wrapper\"\n    >\n        <cui-categories-list\n            [stageStorages]=\"stageStorageChildren()\"\n            [context]=\"context()\"\n        />\n        @if (isCreateCategoryControlVisible()) {\n            <cui-create-category-item\n                class=\"create-category\"\n                [isDisabled]=\"isSubcategoryCreationLoading()\"\n                (created)=\"onCreateNewSubcategoryCategory($event)\"\n                (canceled)=\"onCreatingSubcategoryCanceled()\"\n            />\n        }\n    </div>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\nimport { CuiApiContext, TreeStruct } from '@cuby-ui/api';\n\nimport { CuiIconButtonModule, CuiSvgModule } from '../../../../../components';\nimport { CuiCategoryItemComponent } from '../category-item';\n\n@Component({\n    selector: 'cui-categories-list',\n    imports: [CuiIconButtonModule, CuiSvgModule, forwardRef(() => CuiCategoryItemComponent)],\n    standalone: true,\n    templateUrl: './categories-list.component.html',\n    styleUrl: './categories-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoriesListComponent {\n    public readonly stageStorages = input.required<TreeStruct[]>();\n    public readonly context = input<CuiApiContext>();\n}\n","@for (stageStorage of stageStorages(); track stageStorage.id) {\n    <cui-category-item\n        [stageStorage]=\"stageStorage\"\n        [context]=\"context()\"\n    />\n}\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    effect,\n    inject,\n    input,\n    signal,\n    viewChild\n} from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\n\nimport { CuiApiContext, CuiTreeStructNavigatorApiService, TreeStruct, TreeStructType } from '@cuby-ui/api';\n\nimport { CuiCategoriesListComponent, CuiCreateCategoryItemComponent } from './components';\nimport {\n    CuiEmptyStateComponent,\n    CuiButtonModule,\n    CuiDropdownDirective,\n    CuiDropdownWrapperComponent\n} from '../../../components';\nimport { CuiSelectedCategoryService } from './services';\n\n@Component({\n    selector: 'cui-categories',\n    imports: [\n        CuiButtonModule,\n        CuiLetDirective,\n        CuiDropdownDirective,\n        CuiDropdownWrapperComponent,\n        CuiEmptyStateComponent,\n        CuiCreateCategoryItemComponent,\n        CuiCategoriesListComponent,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './categories.component.html',\n    styleUrls: ['./categories.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\n/** @deprecated Use `CuiCategoriesTreeComponent` (`cui-categories-tree`) with `CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN`. */\nexport class CuiCategoriesComponent {\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n    private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\n\n    protected readonly stageStorages = signal<CuiNullable<TreeStruct[]>>(null);\n    protected readonly isCategoryCreating = signal(false);\n    protected readonly isCategoryCreationLoading = signal(false);\n    protected readonly isCreateCategoryControlVisible = computed(\n        () =>\n            (this.selectedCategoryService.creatingId() === this.treeStructType() && this.isCategoryCreating()) ||\n            this.isCategoryCreationLoading()\n    );\n\n    protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\n\n    public readonly treeStructType = input.required<TreeStructType>();\n    public readonly buttonId = input<string>();\n    public readonly disabled = input(false, { transform: booleanAttribute });\n    public readonly context = input<CuiApiContext>();\n\n    constructor() {\n        this.initSelectCategoryEffect();\n    }\n\n    protected onOpenStageStorages(): void {\n        this.selectedCategoryService.clearCreatingId();\n        this.selectedCategoryService.clearEditingId();\n\n        if (this.stageStorages()?.length) {\n            return;\n        }\n\n        this.treeStructNavigatorApiService\n            .getStageStorages(this.treeStructType(), this.context())\n            .subscribe((stageStorage) => {\n                this.stageStorages.update((prevStageStorages) =>\n                    prevStageStorages ? [...prevStageStorages, stageStorage] : [stageStorage]\n                );\n            });\n    }\n\n    protected onStartCreatingNewCategory(): void {\n        this.isCategoryCreating.set(true);\n        this.selectedCategoryService.setCreatingId(this.treeStructType());\n    }\n\n    protected onCreateNewCategory(title: string): void {\n        this.isCategoryCreating.set(false);\n        this.selectedCategoryService.clearCreatingId();\n        this.isCategoryCreationLoading.set(true);\n        this.treeStructNavigatorApiService\n            .createStageStorage(title, this.treeStructType(), this.context())\n            .pipe(finalize(this.isCategoryCreationLoading.set.bind(this, false)))\n            .subscribe((stateStorage) => this.stageStorages.update((value) => [...(value || []), stateStorage]));\n    }\n\n    protected onCreatingCategoryCanceled(): void {\n        this.isCategoryCreating.set(false);\n        this.selectedCategoryService.clearCreatingId();\n    }\n\n    private initSelectCategoryEffect(): void {\n        effect(\n            () => {\n                this.selectedCategoryService.category();\n                this.dropdown().close();\n            },\n            { allowSignalWrites: true }\n        );\n    }\n}\n","<button\n    [attr.id]=\"buttonId()\"\n    #dropdown=\"cuiDropdown\"\n    [cuiDropdown]=\"dropdownContent\"\n    orientation=\"stretch\"\n    type=\"button\"\n    class=\"target\"\n    [disabled]=\"disabled()\"\n    (click)=\"onOpenStageStorages()\"\n>\n    <ng-content />\n</button>\n\n<ng-template #dropdownContent>\n    <cui-dropdown-wrapper\n        *transloco=\"let t\"\n        [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\n        width=\"100%\"\n        class=\"dropdown-wrapper\"\n    >\n        <ng-container *cuiLet=\"stageStorages() as stageStorages\">\n            @if (stageStorages && stageStorages?.length) {\n                <cui-categories-list\n                    [stageStorages]=\"stageStorages\"\n                    [context]=\"context()\"\n                />\n            }\n            @if (isCreateCategoryControlVisible()) {\n                <cui-create-category-item\n                    class=\"create-category\"\n                    [isDisabled]=\"isCategoryCreationLoading()\"\n                    (created)=\"onCreateNewCategory($event)\"\n                    (canceled)=\"onCreatingCategoryCanceled()\"\n                />\n            } @else if (!stageStorages?.length) {\n                <cui-empty-state\n                    class=\"empty\"\n                    [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\n                />\n            }\n        </ng-container>\n        <button\n            ccDropdownFooterContent\n            cuiButton\n            type=\"button\"\n            appearance=\"ghost\"\n            size=\"xxs\"\n            icon=\"cuiIconPlus\"\n            (click)=\"onStartCreatingNewCategory()\"\n        >\n            {{ t('NEW_CATEGORY') }}\n        </button>\n    </cui-dropdown-wrapper>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport type { Job, TreeStruct } from '@cuby-ui/api';\nimport type { Observable } from 'rxjs';\n\nexport interface CuiCategoriesTreeDataSourceService<T = Job> {\n    loadRoots(): Observable<TreeStruct<T>[]>;\n    loadChildren(parentId: string): Observable<TreeStruct<T>[]>;\n    createRoot(title: string): Observable<TreeStruct<T>>;\n    createChild(parentId: string, title: string): Observable<TreeStruct<T>>;\n    updateTitle(id: string, title: string): Observable<void>;\n    delete?(id: string): Observable<void>;\n}\n\nexport const CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN = new InjectionToken<CuiCategoriesTreeDataSourceService>(\n    'CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN'\n);\n","import { Injectable, signal } from '@angular/core';\nimport type { TreeStruct } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\n@Injectable()\nexport class CuiCategoryTreeStateService {\n    private readonly editingIdSignal = signal<CuiNullable<string>>(null);\n    private readonly creatingParentIdSignal = signal<CuiNullable<string>>(null);\n    private readonly isCreatingRootSignal = signal(false);\n    private readonly categorySignal = signal<CuiNullable<TreeStruct>>(null);\n\n    public readonly editingId = this.editingIdSignal.asReadonly();\n    public readonly creatingParentId = this.creatingParentIdSignal.asReadonly();\n    public readonly isCreatingRoot = this.isCreatingRootSignal.asReadonly();\n    public readonly category = this.categorySignal.asReadonly();\n\n    public setCurrentCategory(category: CuiNullable<TreeStruct>): void {\n        this.categorySignal.set(category);\n    }\n\n    public setEditingId(id: string): void {\n        this.editingIdSignal.set(id);\n        this.clearCreating();\n    }\n\n    public startCreatingChildOf(parentId: string): void {\n        this.creatingParentIdSignal.set(parentId);\n        this.isCreatingRootSignal.set(false);\n        this.clearEditingId();\n    }\n\n    public startCreatingRoot(): void {\n        this.isCreatingRootSignal.set(true);\n        this.creatingParentIdSignal.set(null);\n        this.clearEditingId();\n    }\n\n    public clearEditingId(): void {\n        this.editingIdSignal.set(null);\n    }\n\n    public clearCreating(): void {\n        this.creatingParentIdSignal.set(null);\n        this.isCreatingRootSignal.set(false);\n    }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, input, output } from '@angular/core';\nimport type { TreeStruct } from '@cuby-ui/api';\n\nimport { CuiIconButtonModule, CuiSvgModule } from '../../../../../components';\nimport { CuiCategoryTreeItemComponent } from '../category-tree-item';\n\n@Component({\n    selector: 'cui-categories-tree-list',\n    imports: [CuiIconButtonModule, CuiSvgModule, forwardRef(() => CuiCategoryTreeItemComponent)],\n    standalone: true,\n    templateUrl: './categories-tree-list.component.html',\n    styleUrl: './categories-tree-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoriesTreeListComponent {\n    public readonly storages = input.required<TreeStruct[]>();\n\n    public readonly deleted = output<string>();\n}\n","@for (storage of storages(); track storage.id) {\n    <cui-category-tree-item\n        [storage]=\"storage\"\n        (deleted)=\"deleted.emit($event)\"\n    />\n}\n","import type { OnInit } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    effect,\n    ElementRef,\n    inject,\n    input,\n    output,\n    viewChild\n} from '@angular/core';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { cuiCreateDefaultValidators } from '../../../../../utils';\nimport {\n    CuiFormFieldModule,\n    CuiHintModule,\n    CuiIconButtonModule,\n    CuiGhostInputComponent\n} from '../../../../../components';\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\n\n@Component({\n    selector: 'cui-category-tree-form',\n    imports: [\n        CuiFormFieldModule,\n        CuiHintModule,\n        CuiIconButtonModule,\n        CuiGeneralControlErrorHintComponent,\n        CuiGhostInputComponent,\n        ReactiveFormsModule,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './category-tree-form.component.html',\n    styleUrl: './category-tree-form.component.scss',\n    host: {\n        '(click)': 'onHostClick($event)'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoryTreeFormComponent implements OnInit {\n    protected readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n\n    protected readonly form = this.nonNullableFormBuilder.group({\n        title: ['', cuiCreateDefaultValidators({ asyncDelay: 0 })]\n    });\n    protected readonly titleControl = this.form.controls.title;\n\n    public readonly isDisabled = input<boolean>(false);\n    public readonly defaultTitle = input<string>('');\n\n    public readonly created = output<string>();\n    public readonly canceled = output<void>();\n\n    protected readonly input = viewChild.required('input', { read: ElementRef<HTMLInputElement> });\n\n    protected get isTitleInvalid(): boolean {\n        return this.titleControl.invalid && this.titleControl.dirty;\n    }\n\n    protected get isSubmitButtonDisabled(): boolean {\n        return this.isDisabled() || this.form.invalid;\n    }\n\n    constructor() {\n        this.initInputDisableStateSubscription();\n    }\n\n    public ngOnInit(): void {\n        this.initDefaultTitle();\n        this.initInputFocus();\n    }\n\n    protected onHostClick(event: Event): void {\n        event.stopPropagation();\n    }\n\n    protected onSubmit(): void {\n        if (this.form.invalid) {\n            return;\n        }\n\n        this.created.emit(this.form.value.title!);\n    }\n\n    protected onCancel(event: Event): void {\n        event.stopPropagation();\n        this.canceled.emit();\n    }\n\n    private initInputDisableStateSubscription(): void {\n        effect(() => {\n            if (this.isDisabled()) {\n                this.titleControl.disable();\n\n                return;\n            }\n\n            this.titleControl.enable();\n        });\n    }\n\n    private initDefaultTitle(): void {\n        this.form.patchValue({ title: this.defaultTitle() });\n    }\n\n    private initInputFocus(): void {\n        Promise.resolve().then(() => this.input().nativeElement.focus());\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <form\n        [formGroup]=\"form\"\n        class=\"form\"\n        (ngSubmit)=\"onSubmit()\"\n    >\n        <div class=\"input\">\n            <input\n                #input\n                cuiGhostInput\n                formControlName=\"title\"\n                type=\"text\"\n                placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\n                [isError]=\"isTitleInvalid\"\n                (keyup)=\"$event.preventDefault()\"\n            />\n            <cui-general-control-error-hint [control]=\"titleControl\" />\n        </div>\n        <button\n            cuiIconButton\n            type=\"submit\"\n            icon=\"cuiIconCheck\"\n            color=\"var(--cui-success)\"\n            [disabled]=\"isSubmitButtonDisabled\"\n            class=\"button\"\n        ></button>\n    </form>\n    <button\n        cuiIconButton\n        type=\"button\"\n        icon=\"cuiIconXCircle\"\n        color=\"var(--cui-danger)\"\n        (click)=\"onCancel($event)\"\n        [disabled]=\"isDisabled()\"\n        class=\"button\"\n    ></button>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport { CuiSvgModule } from '../../../../../components';\nimport { CuiCategoryTreeFormComponent } from '../category-tree-form';\n\n@Component({\n    selector: 'cui-create-category-tree-item',\n    imports: [CuiSvgModule, CuiCategoryTreeFormComponent],\n    standalone: true,\n    templateUrl: './create-category-tree-item.component.html',\n    styleUrl: './create-category-tree-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCreateCategoryTreeItemComponent {\n    public readonly created = output<string>();\n    public readonly canceled = output<void>();\n\n    public readonly isDisabled = input<boolean>(false);\n\n    protected onSubmit(title: string): void {\n        this.created.emit(title);\n    }\n\n    protected onCancel(): void {\n        this.canceled.emit();\n    }\n}\n","<cui-svg\n    icon=\"cuiIconFolder\"\n    color=\"var(--cui-base-500)\"\n    class=\"icon\"\n/>\n<cui-category-tree-form\n    [isDisabled]=\"isDisabled()\"\n    (created)=\"onSubmit($event)\"\n    (canceled)=\"onCancel()\"\n/>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    forwardRef,\n    inject,\n    input,\n    output,\n    signal,\n    untracked\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport type { TreeStruct } from '@cuby-ui/api';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { finalize } from 'rxjs';\n\nimport { CuiButtonModule, CuiDialogService, CuiIconButtonModule, CuiSvgModule } from '../../../../../components';\nimport { CuiDeleteModalComponent } from '../../../delete-modal';\nimport { CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN } from '../../models';\nimport { CuiCategoryTreeStateService } from '../../services';\nimport { CuiCategoriesTreeListComponent } from '../categories-tree-list';\nimport { CuiCategoryTreeFormComponent } from '../category-tree-form';\nimport { CuiCreateCategoryTreeItemComponent } from '../create-category-tree-item';\n\n@Component({\n    selector: 'cui-category-tree-item',\n    imports: [\n        CuiButtonModule,\n        CuiIconButtonModule,\n        CuiLetDirective,\n        CuiSvgModule,\n        CuiCategoryTreeFormComponent,\n        CuiCreateCategoryTreeItemComponent,\n        forwardRef(() => CuiCategoriesTreeListComponent)\n    ],\n    standalone: true,\n    templateUrl: './category-tree-item.component.html',\n    styleUrl: './category-tree-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoryTreeItemComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly categoriesDataSourceService = inject(CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN);\n    private readonly categoryTreeStateService = inject(CuiCategoryTreeStateService);\n    private readonly cuiDialogService = inject(CuiDialogService);\n\n    protected readonly isDeleteSupported = !!this.categoriesDataSourceService.delete;\n\n    protected readonly storageChildren = signal<TreeStruct[]>([]);\n    protected readonly areChildrenOpened = signal(false);\n    protected readonly isSubcategoryCreating = signal(false);\n    protected readonly isSubcategoryCreationLoading = signal(false);\n    protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\n        this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\n    );\n    protected readonly doChildrenExist = computed(\n        () => this.storage().children.length || this.storageChildren().length\n    );\n    protected readonly isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());\n    protected readonly storageIcon = computed<CuiIcon>(() =>\n        this.areChildrenOpened() && this.doChildrenExist() ? 'cuiIconFolderOpen' : 'cuiIconFolder'\n    );\n    protected readonly alignItems = computed(() => (this.isTitleEdit() ? 'flex-start' : 'center'));\n    protected readonly isTitleEdit = computed(() => this.categoryTreeStateService.editingId() === this.storage().id);\n    protected readonly isCreateCategoryControlVisible = computed(\n        () =>\n            (this.categoryTreeStateService.creatingParentId() === this.storage().id && this.isSubcategoryCreating()) ||\n            this.isSubcategoryCreationLoading()\n    );\n    protected readonly isEmpty = computed(\n        () =>\n            !this.storage().elements.length &&\n            (this.areChildrenOpened() ? !this.storageChildren().length : !this.storage().children.length)\n    );\n    protected readonly categoryTitle = signal<string>('');\n    protected readonly category = computed(() => ({\n        ...this.storage(),\n        title: this.categoryTitle() || this.storage().title\n    }));\n\n    public readonly storage = input.required<TreeStruct>();\n\n    public readonly deleted = output<string>();\n\n    constructor() {\n        this.initStorageChildren();\n    }\n\n    protected onSelectCategory(): void {\n        this.categoryTreeStateService.setCurrentCategory(this.category());\n    }\n\n    protected onToggleChildren(event: MouseEvent): void {\n        event.stopPropagation();\n\n        this.areChildrenOpened.update((value) => !value);\n\n        if (this.areChildrenOpened()) {\n            return;\n        }\n\n        this.isSubcategoryCreating.set(false);\n    }\n\n    protected onTitleChanged(title: string): void {\n        this.onCancelTitleEdit();\n\n        if (title === this.category().title) {\n            return;\n        }\n\n        this.categoriesDataSourceService\n            .updateTitle(this.storage().id, title)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => {\n                this.categoryTitle.set(title);\n\n                if (this.category().id === this.categoryTreeStateService.category()?.id) {\n                    this.categoryTreeStateService.setCurrentCategory(this.category());\n                }\n            });\n    }\n\n    protected onStartTitleEdit(event?: Event): void {\n        event?.stopPropagation();\n\n        this.categoryTreeStateService.setEditingId(this.storage().id);\n        this.onCreatingSubcategoryCanceled();\n    }\n\n    protected onCancelTitleEdit(): void {\n        this.categoryTreeStateService.clearEditingId();\n    }\n\n    protected onStartCreatingSubcategory(event: MouseEvent): void {\n        event.stopPropagation();\n\n        this.isSubcategoryCreating.set(true);\n        this.areChildrenOpened.set(true);\n        this.categoryTreeStateService.startCreatingChildOf(this.storage().id);\n    }\n\n    protected onCreateNewSubcategory(title: string): void {\n        this.isSubcategoryCreating.set(false);\n        this.isSubcategoryCreationLoading.set(true);\n        this.categoriesDataSourceService\n            .createChild(this.storage().id, title)\n            .pipe(\n                finalize(() => this.isSubcategoryCreationLoading.set(false)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((storage) => {\n                this.storageChildren.update((value) => [...value, storage]);\n            });\n    }\n\n    protected onCreatingSubcategoryCanceled(): void {\n        this.isSubcategoryCreating.set(false);\n        this.categoryTreeStateService.clearCreating();\n    }\n\n    protected onDelete(event: MouseEvent): void {\n        event.stopPropagation();\n\n        const deleteRequest = this.categoriesDataSourceService.delete;\n\n        if (!deleteRequest) {\n            return;\n        }\n\n        this.cuiDialogService\n            .open(CuiDeleteModalComponent, {\n                data: {\n                    title: 'DELETE_CATEGORY_QUESTION',\n                    content: ['ACTION_WILL_DELETE_CATEGORY'],\n                    delete: () => deleteRequest.call(this.categoriesDataSourceService, this.storage().id)\n                }\n            })\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((data) => {\n                if (data?.canceled) {\n                    return;\n                }\n\n                this.deleted.emit(this.storage().id);\n            });\n    }\n\n    protected onChildDeleted(id: string): void {\n        this.storageChildren.update((children) => children.filter((child) => child.id !== id));\n    }\n\n    private initStorageChildren(): void {\n        const effectRef = effect(\n            () => {\n                if (!this.areChildrenOpened()) {\n                    return;\n                }\n\n                effectRef.destroy();\n                untracked(() => this.loadChildren());\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private loadChildren(): void {\n        const storage = this.storage();\n        const children = storage.children;\n\n        if (!children.length) {\n            return;\n        }\n\n        if (typeof children[0] !== 'string') {\n            this.storageChildren.set(children as TreeStruct[]);\n\n            return;\n        }\n\n        this.categoriesDataSourceService\n            .loadChildren(storage.id)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((storages) => this.storageChildren.set(storages));\n    }\n}\n","<ng-container *cuiLet=\"category() as stage\">\n    <button\n        type=\"button\"\n        [style.align-items]=\"alignItems()\"\n        class=\"category\"\n        (click)=\"onSelectCategory()\"\n    >\n        <button\n            type=\"button\"\n            class=\"toggle-button\"\n            [class.toggle-button_hidden]=\"isOpenCloseButtonHidden()\"\n            (click)=\"onToggleChildren($event)\"\n        >\n            <cui-svg\n                [icon]=\"openCloseButtonIcon()\"\n                color=\"var(--cui-base-500)\"\n            />\n        </button>\n        <cui-svg\n            [icon]=\"storageIcon()\"\n            color=\"var(--cui-base-500)\"\n            class=\"icon\"\n        />\n        @if (isTitleEdit()) {\n            <cui-category-tree-form\n                [defaultTitle]=\"stage.title\"\n                (created)=\"onTitleChanged($event)\"\n                (canceled)=\"onCancelTitleEdit()\"\n            />\n        } @else {\n            <span class=\"title\">{{ stage.title }}</span>\n\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconEdit\"\n                class=\"button edit-button\"\n                (click)=\"onStartTitleEdit($event)\"\n            ></button>\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconPlus\"\n                class=\"button add-button\"\n                (click)=\"onStartCreatingSubcategory($event)\"\n            ></button>\n            @if (isDeleteSupported) {\n                <button\n                    cuiButton\n                    type=\"button\"\n                    appearance=\"ghost\"\n                    size=\"xxs\"\n                    icon=\"cuiIconTrash\"\n                    class=\"button delete-button\"\n                    (click)=\"onDelete($event)\"\n                ></button>\n            }\n        }\n    </button>\n    <div\n        [hidden]=\"!areChildrenOpened()\"\n        class=\"list-wrapper\"\n    >\n        <cui-categories-tree-list\n            [storages]=\"storageChildren()\"\n            (deleted)=\"onChildDeleted($event)\"\n        />\n        @if (isCreateCategoryControlVisible()) {\n            <cui-create-category-tree-item\n                class=\"create-category\"\n                [isDisabled]=\"isSubcategoryCreationLoading()\"\n                (created)=\"onCreateNewSubcategory($event)\"\n                (canceled)=\"onCreatingSubcategoryCanceled()\"\n            />\n        }\n    </div>\n</ng-container>\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    inject,\n    input,\n    signal,\n    viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\n\nimport type { TreeStruct } from '@cuby-ui/api';\n\nimport {\n    CuiEmptyStateComponent,\n    CuiButtonModule,\n    CuiDropdownDirective,\n    CuiDropdownWrapperComponent\n} from '../../../components';\nimport { CuiCategoriesTreeListComponent, CuiCreateCategoryTreeItemComponent } from './components';\nimport { CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN } from './models';\nimport { CuiCategoryTreeStateService } from './services';\n\n@Component({\n    selector: 'cui-categories-tree',\n    imports: [\n        CuiButtonModule,\n        CuiLetDirective,\n        CuiDropdownDirective,\n        CuiDropdownWrapperComponent,\n        CuiEmptyStateComponent,\n        CuiCreateCategoryTreeItemComponent,\n        CuiCategoriesTreeListComponent,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './categories-tree.component.html',\n    styleUrls: ['./categories-tree.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoriesTreeComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly categoriesDataSourceService = inject(CUI_CATEGORIES_TREE_DATA_SOURCE_SERVICE_TOKEN);\n    private readonly categoryTreeStateService = inject(CuiCategoryTreeStateService);\n\n    protected readonly storages = signal<CuiNullable<TreeStruct[]>>(null);\n    protected readonly isCategoryCreating = signal(false);\n    protected readonly isCategoryCreationLoading = signal(false);\n    protected readonly isCreateCategoryControlVisible = computed(\n        () =>\n            (this.categoryTreeStateService.isCreatingRoot() && this.isCategoryCreating()) ||\n            this.isCategoryCreationLoading()\n    );\n\n    protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\n\n    public readonly disabled = input(false, { transform: booleanAttribute });\n\n    constructor() {\n        this.initSelectCategoryEffect();\n    }\n\n    protected onOpenStorages(): void {\n        this.categoryTreeStateService.clearCreating();\n        this.categoryTreeStateService.clearEditingId();\n\n        if (this.storages()?.length) {\n            return;\n        }\n\n        this.categoriesDataSourceService\n            .loadRoots()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((roots) => {\n                this.storages.set(roots);\n            });\n    }\n\n    protected onStartCreatingNewCategory(): void {\n        this.isCategoryCreating.set(true);\n        this.categoryTreeStateService.startCreatingRoot();\n    }\n\n    protected onCreateNewCategory(title: string): void {\n        this.isCategoryCreating.set(false);\n        this.categoryTreeStateService.clearCreating();\n        this.isCategoryCreationLoading.set(true);\n        this.categoriesDataSourceService\n            .createRoot(title)\n            .pipe(\n                finalize(() => this.isCategoryCreationLoading.set(false)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((storage) => this.storages.update((value) => [...(value || []), storage]));\n    }\n\n    protected onCreatingCategoryCanceled(): void {\n        this.isCategoryCreating.set(false);\n        this.categoryTreeStateService.clearCreating();\n    }\n\n    protected onItemDeleted(id: string): void {\n        this.storages.update((value) => (value ? value.filter((storage) => storage.id !== id) : value));\n    }\n\n    private initSelectCategoryEffect(): void {\n        effect(\n            () => {\n                this.categoryTreeStateService.category();\n                this.dropdown().close();\n            },\n            { allowSignalWrites: true }\n        );\n    }\n}\n","<button\n    #dropdown=\"cuiDropdown\"\n    [cuiDropdown]=\"dropdownContent\"\n    orientation=\"stretch\"\n    type=\"button\"\n    class=\"target\"\n    [disabled]=\"disabled()\"\n    (click)=\"onOpenStorages()\"\n>\n    <ng-content />\n</button>\n\n<ng-template #dropdownContent>\n    <cui-dropdown-wrapper\n        *transloco=\"let t\"\n        [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\n        width=\"100%\"\n        class=\"dropdown-wrapper\"\n    >\n        <ng-container *cuiLet=\"storages() as storages\">\n            @if (storages && storages.length) {\n                <cui-categories-tree-list\n                    [storages]=\"storages\"\n                    (deleted)=\"onItemDeleted($event)\"\n                />\n            }\n            @if (isCreateCategoryControlVisible()) {\n                <cui-create-category-tree-item\n                    class=\"create-category\"\n                    [isDisabled]=\"isCategoryCreationLoading()\"\n                    (created)=\"onCreateNewCategory($event)\"\n                    (canceled)=\"onCreatingCategoryCanceled()\"\n                />\n            } @else if (!storages?.length) {\n                <cui-empty-state\n                    class=\"empty\"\n                    [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\n                />\n            }\n        </ng-container>\n        <button\n            ccDropdownFooterContent\n            cuiButton\n            type=\"button\"\n            appearance=\"ghost\"\n            size=\"xxs\"\n            icon=\"cuiIconPlus\"\n            (click)=\"onStartCreatingNewCategory()\"\n        >\n            {{ t('NEW_CATEGORY') }}\n        </button>\n    </cui-dropdown-wrapper>\n</ng-template>\n","import { Injectable, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\n\n@Injectable()\nexport class CuiCheckListBlockService {\n    private readonly checkListItemsSignal =\n        signal<CuiNullable<NodeCheckListItem<NodeCheckListItemContentType>[]>>(null);\n    private readonly componentIdSignal = signal<CuiNullable<string>>(null);\n    private readonly isDragAvailableSignal = signal<boolean>(false);\n\n    public readonly checkListItems = this.checkListItemsSignal.asReadonly();\n    public readonly componentId = this.componentIdSignal.asReadonly();\n    public readonly isDragAvailable = this.isDragAvailableSignal.asReadonly();\n\n    public setCheckListItems(checkListItems: NodeCheckListItem<NodeCheckListItemContentType>[]): void {\n        this.checkListItemsSignal.set(checkListItems);\n    }\n\n    public addCheckListItem(checkListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\n        this.checkListItemsSignal.update((value) => (value ? [...value, checkListItem] : [checkListItem]));\n    }\n\n    public updateCheckListItem(updatedCheckListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\n        if (!this.checkListItemsSignal()) {\n            return;\n        }\n\n        this.checkListItemsSignal.update((value) => {\n            const updateCheckListItemIndex = value!.findIndex(\n                (checkListItem) => checkListItem.id === updatedCheckListItem.id\n            );\n\n            value![updateCheckListItemIndex] = updatedCheckListItem;\n\n            return [...value!];\n        });\n    }\n\n    public deleteCheckListItem(id: string): void {\n        if (!this.checkListItemsSignal()) {\n            return;\n        }\n\n        this.checkListItemsSignal.update((value) => {\n            const deletedItemIndex = value!.findIndex((checklistItem) => checklistItem.id === id);\n\n            value!.splice(deletedItemIndex, 1);\n\n            return [...value!];\n        });\n    }\n\n    public setComponentId(id: string): void {\n        this.componentIdSignal.set(id);\n    }\n\n    public toggleDragPermission(isDragButtonVisible: boolean): void {\n        this.isDragAvailableSignal.set(isDragButtonVisible);\n    }\n}\n","import type { OnInit } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    inject,\n    input,\n    output,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { FormGroup } from '@angular/forms';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { NodeCheckListActionItemContent, NodeCheckListItemContentAction } from '@cuby-ui/api';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport {\n    CuiCheckboxModule,\n    CuiFormFieldModule,\n    CuiLabelModule,\n    CuiRadioModule,\n    CuiSelectModule,\n    CuiTextareaModule,\n    CuiToggleModule\n} from '../../../../../components';\nimport { CuiTextFieldControllerModule } from '../../../../../directives';\n\n@Component({\n    selector: 'cui-checklist-block-list-item-action-card',\n    imports: [\n        CuiCheckboxModule,\n        CuiFormFieldModule,\n        CuiLabelModule,\n        CuiRadioModule,\n        CuiSelectModule,\n        CuiTextareaModule,\n        CuiTextFieldControllerModule,\n        CuiToggleModule,\n        ReactiveFormsModule,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './checklist-block-list-item-action-card.component.html',\n    styleUrl: './checklist-block-list-item-action-card.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemActionCardComponent implements OnInit {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n\n    public actionForm!: FormGroup;\n\n    public readonly purposeType = input<string>();\n    public readonly isConsiderationNeeded = input<boolean>(false);\n    public readonly actionInfo = input.required<NodeCheckListActionItemContent>();\n\n    public readonly consideredCorrectChanged = output<string>();\n    public readonly checkListActionChanged = output<NodeCheckListItemContentAction>();\n\n    protected readonly _actionInfo = signal<CuiNullable<NodeCheckListActionItemContent>>(null);\n    protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\n        () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\n    );\n    protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\n        () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\n    );\n\n    protected readonly isConsideredCorrectControl = this.nonNullableFormBuilder.control({\n        value: false,\n        disabled: false\n    });\n\n    protected get photoGroup(): FormGroup {\n        return this.actionForm.get('photo') as FormGroup;\n    }\n\n    protected get commentGroup(): FormGroup {\n        return this.actionForm.get('comment') as FormGroup;\n    }\n\n    constructor() {\n        effect(\n            () => {\n                this._actionInfo.set(this.actionInfo());\n\n                if (!this.purposeType() || !this.isConsiderationNeeded()) {\n                    return;\n                }\n\n                this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    public ngOnInit(): void {\n        this.initActionForm();\n    }\n\n    private initActionForm(): void {\n        this.actionForm = this.nonNullableFormBuilder.group({\n            photo: this.nonNullableFormBuilder.group({\n                isEnable: this.attachmentPhotoAction().isEnable,\n                isRequired: {\n                    value: this.attachmentPhotoAction().isRequired,\n                    disabled: !this.attachmentPhotoAction().isEnable\n                }\n            }),\n            comment: this.nonNullableFormBuilder.group({\n                isEnable: this.textAreaAction().isEnable,\n                isRequired: {\n                    value: this.textAreaAction().isRequired,\n                    disabled: !this.textAreaAction().isEnable\n                }\n            })\n        });\n\n        this.initActionFormSegmentsSubscriptions();\n\n        if (!this.isConsiderationNeeded()) {\n            return;\n        }\n\n        this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\n    }\n\n    private initActionFormSegmentsSubscriptions(): void {\n        this.isConsideredCorrectControlSubscription();\n        this.initPhotoGroupSubscription();\n        this.initCommentGroupSubscription();\n    }\n\n    private isConsideredCorrectControlSubscription(): void {\n        this.isConsideredCorrectControl.valueChanges\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.consideredCorrectChanged.emit(this._actionInfo()!.id));\n    }\n\n    private initPhotoGroupSubscription(): void {\n        this.photoGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n            if (!value.isEnable) {\n                this.photoGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n                this.photoGroup.get('isRequired')?.disable({ emitEvent: false });\n                this.checkListActionChanged.emit({\n                    id: this.attachmentPhotoAction().id,\n                    ...this.photoGroup.getRawValue()\n                });\n\n                return;\n            }\n\n            this.photoGroup.get('isRequired')?.enable({ emitEvent: false });\n            this.checkListActionChanged.emit({\n                id: this.attachmentPhotoAction().id,\n                ...this.photoGroup.value\n            });\n        });\n    }\n\n    private initCommentGroupSubscription(): void {\n        this.commentGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n            if (!value.isEnable) {\n                this.commentGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n                this.commentGroup.get('isRequired')?.disable({ emitEvent: false });\n                this.checkListActionChanged.emit({\n                    id: this.textAreaAction().id,\n                    ...this.commentGroup.getRawValue()\n                });\n\n                return;\n            }\n\n            this.commentGroup.get('isRequired')?.enable({ emitEvent: false });\n            this.checkListActionChanged.emit({\n                id: this.textAreaAction().id,\n                ...this.commentGroup.value\n            });\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <div\n        class=\"card\"\n        [formGroup]=\"actionForm\"\n    >\n        <div class=\"title-container\">\n            <span class=\"title\">{{ actionInfo().title }}</span>\n            @if (isConsiderationNeeded()) {\n                <label\n                    cuiLabel\n                    class=\"title__input\"\n                >\n                    <input\n                        cuiRadio\n                        type=\"radio\"\n                        [checked]=\"actionInfo().considerCorrect\"\n                        [formControl]=\"isConsideredCorrectControl\"\n                        [value]=\"true\"\n                    />\n                    {{ t('CONSIDER_CORRECT') }}\n                </label>\n            }\n        </div>\n        <div class=\"blocks\">\n            <div\n                class=\"block-card\"\n                [formGroup]=\"photoGroup\"\n            >\n                <label cuiLabel>\n                    <input\n                        cuiCheckbox\n                        type=\"checkbox\"\n                        formControlName=\"isEnable\"\n                    />\n                    {{ t('PHOTO') }}\n                </label>\n                <label cuiLabel>\n                    <input\n                        cuiToggle\n                        type=\"checkbox\"\n                        formControlName=\"isRequired\"\n                    />\n                    {{ t('REQUIRED') }}\n                </label>\n            </div>\n            <div\n                class=\"block-card\"\n                [formGroup]=\"commentGroup\"\n            >\n                <label cuiLabel>\n                    <input\n                        cuiCheckbox\n                        type=\"checkbox\"\n                        formControlName=\"isEnable\"\n                    />\n                    {{ t('COMMENT') }}\n                </label>\n                <label cuiLabel>\n                    <input\n                        cuiToggle\n                        type=\"checkbox\"\n                        formControlName=\"isRequired\"\n                    />\n                    {{ t('REQUIRED') }}\n                </label>\n            </div>\n        </div>\n    </div>\n</ng-container>\n","import { UpperCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport {\n    CuiNodeChecklistApiService,\n    NodeCheckListActionItemContent,\n    NodeCheckListItem,\n    NodeCheckListItemContentAction\n} from '@cuby-ui/api';\n\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\nimport { CuiCheckListBlockService } from '../../services';\n\n@Component({\n    selector: 'cui-checklist-block-list-item-action-with-verification',\n    imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\n    standalone: true,\n    templateUrl: './checklist-block-list-item-action-with-verification.component.html',\n    styleUrl: './checklist-block-list-item-action-with-verification.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemActionWithVerificationComponent {\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n    private checkListBlockService = inject(CuiCheckListBlockService);\n\n    public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\n\n    protected onConsiderCorrectChanged(actionId: string, purposeType: string): void {\n        const requestData = {\n            nodeCheckListId: this.checkListItem().id,\n            assigneeActionType: purposeType,\n            actionId\n        };\n\n        this.nodeCheckListApiService\n            .updateNodeCheckListItemIsConsideredCorrect(requestData)\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n    }\n\n    protected onCheckListActionChanged(\n        actionContent: NodeCheckListItemContentAction,\n        actionId: string,\n        purposeType: string\n    ): void {\n        const requestData = {\n            nodeCheckListId: this.checkListItem().id,\n            assigneeActionType: purposeType,\n            actionId,\n            contentId: actionContent.id,\n            isEnable: actionContent.isEnable,\n            isRequired: actionContent.isRequired\n        };\n\n        this.nodeCheckListApiService\n            .updateNodeCheckListItemActionContent(requestData)\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\n        <div class=\"action\">\n            <div class=\"action__header action__assignee-header\">\n                {{ t('CONDITIONAL_LOGIC_FOR_ASSIGNEE') | uppercase }}\n            </div>\n            <div class=\"action__content\">\n                <div class=\"cards-container\">\n                    <cui-checklist-block-list-item-action-card\n                        [purposeType]=\"'ASSIGN'\"\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\n                        [isConsiderationNeeded]=\"true\"\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\n                        (checkListActionChanged)=\"\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id, 'ASSIGN')\n                        \"\n                    />\n                    <cui-checklist-block-list-item-action-card\n                        [purposeType]=\"'ASSIGN'\"\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\n                        [isConsiderationNeeded]=\"true\"\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\n                        (checkListActionChanged)=\"\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id, 'ASSIGN')\n                        \"\n                    />\n                </div>\n            </div>\n        </div>\n        <div class=\"action\">\n            <div class=\"action__header action__approver-header\">\n                {{ t('CONDITIONAL_LOGIC_FOR_APPROVER') | uppercase }}\n            </div>\n            <div class=\"action__content\">\n                <div class=\"cards-container\">\n                    <cui-checklist-block-list-item-action-card\n                        [purposeType]=\"'APPROVE'\"\n                        [actionInfo]=\"checkListItemContent.actionsApprove![0]\"\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\n                        (checkListActionChanged)=\"\n                            onCheckListActionChanged($event, checkListItemContent.actionsApprove![0].id, 'APPROVE')\n                        \"\n                    />\n                    <cui-checklist-block-list-item-action-card\n                        [purposeType]=\"'APPROVE'\"\n                        [actionInfo]=\"checkListItemContent.actionsApprove![1]\"\n                        (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\n                        (checkListActionChanged)=\"\n                            onCheckListActionChanged($event, checkListItemContent.actionsApprove![1].id, 'APPROVE')\n                        \"\n                    />\n                </div>\n            </div>\n        </div>\n    </ng-container>\n</ng-container>\n","import { UpperCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport {\n    CuiNodeChecklistApiService,\n    NodeCheckListActionItemContent,\n    NodeCheckListItem,\n    NodeCheckListItemContentAction\n} from '@cuby-ui/api';\n\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\nimport { CuiCheckListBlockService } from '../../services';\n\n@Component({\n    selector: 'cui-checklist-block-list-item-action-without-verification',\n    imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\n    standalone: true,\n    templateUrl: './checklist-block-list-item-action-without-verification.component.html',\n    styleUrl: './checklist-block-list-item-action-without-verification.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemActionWithoutVerificationComponent {\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n    private checkListBlockService = inject(CuiCheckListBlockService);\n\n    public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\n\n    protected onCheckListActionChanged(actionContent: NodeCheckListItemContentAction, actionId: string): void {\n        const requestData = {\n            nodeCheckListId: this.checkListItem().id,\n            assigneeActionType: 'ASSIGN',\n            actionId,\n            contentId: actionContent.id,\n            isEnable: actionContent.isEnable,\n            isRequired: actionContent.isRequired\n        };\n\n        this.nodeCheckListApiService\n            .updateNodeCheckListItemActionContent(requestData)\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\n        <div class=\"action\">\n            <div class=\"action__header\">\n                {{ t('CONDITIONAL_LOGIC') | uppercase }}\n            </div>\n            <div class=\"action__content\">\n                <div class=\"cards-container\">\n                    <cui-checklist-block-list-item-action-card\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\n                        (checkListActionChanged)=\"\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id)\n                        \"\n                    />\n                    <cui-checklist-block-list-item-action-card\n                        [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\n                        (checkListActionChanged)=\"\n                            onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id)\n                        \"\n                    />\n                </div>\n            </div>\n        </div>\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport type { FormControl } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n    CuiContextMenuModule,\n    CuiFormFieldModule,\n    CuiHintModule,\n    CuiInputModule,\n    CuiLabelModule\n} from '../../../../../components';\nimport { CuiTextFieldControllerModule } from '../../../../../directives';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiGeneralControlErrorHintComponent } from '../../../index';\n\n@Component({\n    selector: 'cui-checklist-block-title-control',\n    imports: [\n        CuiContextMenuModule,\n        CuiFormFieldModule,\n        CuiHintModule,\n        CuiInputModule,\n        CuiLabelModule,\n        CuiTextFieldControllerModule,\n        CuiGeneralControlErrorHintComponent,\n        ReactiveFormsModule,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './checklist-block-title-control.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiChecklistBlockTitleControlComponent {\n    public readonly control = input.required<FormControl>();\n\n    protected get isTitleError(): boolean {\n        return this.control().invalid && this.control().dirty;\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <cui-form-field>\n        <label\n            cuiLabel\n            [isRequired]=\"true\"\n            for=\"title\"\n        >\n            {{ t('TITLE') }}\n        </label>\n        <cui-input-text\n            [formControl]=\"control()\"\n            cuiTextFieldId=\"title\"\n            [cuiTextFieldIsError]=\"isTitleError\"\n            cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\n        />\n        <cui-general-control-error-hint [control]=\"control()\" />\n    </cui-form-field>\n</ng-container>\n","import { NgComponentOutlet } from '@angular/common';\nimport type { OnInit, Type } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NonNullableFormBuilder } from '@angular/forms';\nimport { CuiElementDirective, CuiLetDirective, CuiDragPointerDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport {\n    CuiTreeStructApiService,\n    CuiNodeChecklistApiService,\n    NodeCheckListItem,\n    NodeCheckListItemContentType\n} from '@cuby-ui/api';\n\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\nimport { CuiTooltip } from '../../../../../directives';\nimport {\n    CuiButtonModule,\n    CuiContextMenuModule,\n    CuiDialogService,\n    CuiLabelModule,\n    CuiSvgModule\n} from '../../../../../components';\nimport { CuiCheckListBlockService } from '../../services/checklist-block.service';\nimport { CuiChecklistBlockTitleControlComponent } from '../checklist-block-title-control';\nimport { CuiNodeCheckListItemWithOption } from './checklist-block-list-item-container.options';\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../../../../editor';\nimport { CuiDeleteModalComponent } from '../../../index';\nimport { cuiCreateDefaultValidators } from '../../../../../utils';\n\n@Component({\n    selector: 'cui-checklist-block-list-item-container',\n    imports: [\n        CuiTooltip,\n        CuiEditorBlockComponent,\n        CuiChecklistBlockTitleControlComponent,\n        CuiButtonModule,\n        CuiContextMenuModule,\n        CuiElementDirective,\n        CuiLabelModule,\n        CuiLetDirective,\n        CuiSvgModule,\n        NgComponentOutlet,\n        TranslocoDirective,\n        CuiDragPointerDirective\n    ],\n    standalone: true,\n    templateUrl: './checklist-block-list-item-container.component.html',\n    styleUrl: './checklist-block-list-item-container.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiChecklistBlockListItemContainerComponent implements OnInit {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n    private readonly translocoService = inject(TranslocoService);\n    private readonly cuiDialogService = inject(CuiDialogService);\n    private readonly treeStructApiService = inject(CuiTreeStructApiService);\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n\n    protected readonly DEFAULT_CONTROL_DELAY = 700;\n\n    protected readonly isOpen = signal(false);\n\n    public readonly checkListBlockItem = input.required<CuiCheckListBlockItem>();\n    public readonly config = input.required<CuiEditorConfig>();\n    public readonly index = input<number>(0);\n\n    protected readonly componentId = this.checkListBlockService.componentId;\n    protected readonly rotate = computed(() => `rotate(${this.isOpen() ? '0deg' : '-90deg'})`);\n    protected readonly headerText = computed(() =>\n        this.checkListItem().title ? this.checkListItem().title : this.translocoService.translate('UNTITLED')\n    );\n    protected readonly checkListItem = computed<NodeCheckListItem<NodeCheckListItemContentType>>(\n        () => this.checkListBlockItem().content\n    );\n    protected readonly checkListItemComponent = computed<Type<unknown>>(() => this.checkListBlockItem().component);\n    protected readonly checkListItemWithOptions = computed<\n        CuiNodeCheckListItemWithOption<NodeCheckListItemContentType>\n    >(() => ({\n        ...this.checkListItem(),\n        options: [\n            {\n                label: this.translocoService.translate('DUPLICATE'),\n                icon: 'cuiIconCopy'\n            },\n            {\n                label: this.translocoService.translate('DELETE'),\n                icon: 'cuiIconTrash',\n                color: 'var(--cui-danger)',\n                command: this.openDeleteChecklistNodeModal.bind(this)\n            }\n        ]\n    }));\n    protected readonly headerBorderColor = computed(() => {\n        const checkListItem = this.checkListItem();\n\n        if (checkListItem.content.actionsApprove !== null) {\n            return 'var(--cui-violet-bg)';\n        }\n\n        if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\n            return 'var(--cui-cyan-bg)';\n        }\n\n        return null;\n    });\n    protected readonly iconChecklistType = computed(() => {\n        const checkListItem = this.checkListItem();\n\n        if (checkListItem.content.actionsApprove !== null) {\n            return 'cuiIconUsersSm';\n        }\n\n        if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\n            return 'cuiIconChecklist';\n        }\n\n        return 'cuiIconUserSm';\n    });\n\n    protected readonly titleControl = this.nonNullableFormBuilder.control(\n        { value: '', disabled: true },\n        cuiCreateDefaultValidators()\n    );\n\n    protected get isTitleEmpty(): boolean {\n        return !this.titleControl.value;\n    }\n\n    protected get isTitleError(): boolean {\n        return this.titleControl.invalid && this.titleControl.dirty;\n    }\n\n    public ngOnInit(): void {\n        this.initControls();\n    }\n\n    protected onRowToggle(): void {\n        this.isOpen.update((prev) => !prev);\n    }\n\n    protected onAllowDrag(): void {\n        this.checkListBlockService.toggleDragPermission(true);\n    }\n\n    protected onProhibitDrag(): void {\n        this.checkListBlockService.toggleDragPermission(false);\n    }\n\n    private initControls(): void {\n        this.initTitleControlValue();\n        this.initTitleControlSubscription();\n    }\n\n    private initTitleControlValue(): void {\n        this.titleControl.enable();\n        this.titleControl.setValue(this.checkListItem().title ? this.checkListItem().title : '');\n    }\n\n    private initTitleControlSubscription(): void {\n        this.titleControl.valueChanges\n            .pipe(debounceTime(this.DEFAULT_CONTROL_DELAY), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n            .subscribe((titleValue) => {\n                if (this.titleControl.invalid) {\n                    return;\n                }\n\n                this.nodeCheckListApiService\n                    .updateNodeCheckListItemTitle(this.checkListItem().id, titleValue)\n                    .subscribe(() => {\n                        this.checkListBlockService.updateCheckListItem({\n                            ...this.checkListItem(),\n                            title: titleValue\n                        });\n                    });\n            });\n    }\n\n    private openDeleteChecklistNodeModal(): void {\n        const content = ['THIS_ACTION_WILL_PERMANENTLY_DELETE_THE_ITEM_FROM_CHECKLIST'];\n\n        this.cuiDialogService\n            .open(CuiDeleteModalComponent, {\n                data: {\n                    title: 'DELETE_EVALUATION_CHECKLIST_ITEM_QUESTION',\n                    content,\n                    delete: () =>\n                        this.treeStructApiService.deleteTreeStructElement(this.componentId()!, this.checkListItem().id)\n                }\n            })\n            .subscribe(\n                (data) => data?.canceled || this.checkListBlockService.deleteCheckListItem(this.checkListItem().id)\n            );\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <ng-container *cuiLet=\"checkListItemWithOptions() as checkListItem\">\n        <header\n            class=\"header\"\n            [style.border-left-color]=\"headerBorderColor()\"\n            [class.header__opened]=\"isOpen()\"\n        >\n            <button\n                class=\"icon-drag\"\n                cuiButton\n                cuiDragPointer\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                [icon]=\"'cuiIconDragHandleDots'\"\n                (mouseenter)=\"onAllowDrag()\"\n                (mouseleave)=\"onProhibitDrag()\"\n            ></button>\n            <button\n                cuiButton\n                type=\"button\"\n                appearance=\"ghost\"\n                size=\"xxs\"\n                [style.transform]=\"rotate()\"\n                icon=\"cuiIconCaretDownFillXxs\"\n                (click)=\"onRowToggle()\"\n            ></button>\n            <cui-svg\n                [icon]=\"iconChecklistType()\"\n                color=\"var(--cui-base-500)\"\n            />\n            <div class=\"header__content\">\n                <div class=\"header__numeration\">{{ index() }}.</div>\n                <div class=\"header__text\">{{ headerText() }}</div>\n            </div>\n            @if (isTitleEmpty) {\n                <cui-svg\n                    [cuiTooltip]=\"t('TITLE_IS_REQUIRED')\"\n                    icon=\"cuiIconAlertTriangle\"\n                    color=\"var(--cui-danger)\"\n                    class=\"icon\"\n                />\n            }\n            <button\n                #actionButton=\"elementRef\"\n                cuiButton\n                type=\"button\"\n                cuiElement\n                appearance=\"ghost\"\n                size=\"xxs\"\n                icon=\"cuiIconMoreVertical\"\n                class=\"list__context-menu-button\"\n            ></button>\n            <cui-context-menu\n                [items]=\"checkListItem.options\"\n                [target]=\"actionButton.nativeElement\"\n            />\n        </header>\n        @if (isOpen()) {\n            <div class=\"info\">\n                <cui-checklist-block-title-control [control]=\"titleControl\" />\n                <cui-editor-block\n                    [config]=\"config()\"\n                    [editorId]=\"checkListItem.textContainerId!\"\n                    [title]=\"titleControl.value\"\n                />\n            </div>\n            <ng-container\n                [ngComponentOutlet]=\"checkListItemComponent()\"\n                [ngComponentOutletInputs]=\"{\n                    checkListItem: checkListItem\n                }\"\n            />\n        }\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport type { FormArray, FormGroup } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport {\n    CuiAlertService,\n    CuiButtonModule,\n    CuiIconButtonModule,\n    CuiInputModule,\n    CuiInputNumberModule,\n    CuiSvgModule,\n    CuiTextareaModule\n} from '../../../../../components';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport type { CuiEvaluationCriteriaGroup } from '../checklist-block-list-item-evaluation';\n\nimport { CuiDragPointerDirective } from '@cuby-ui/cdk';\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\nimport type { CuiEvaluationCriteriaData } from './checklist-block-list-item-evaluation-criteria.options';\n\n@Component({\n    selector: 'li[cuiChecklistBlockListItemEvaluationCriteria]',\n    imports: [\n        CuiButtonModule,\n        CuiIconButtonModule,\n        CuiInputModule,\n        CuiLetDirective,\n        CuiSvgModule,\n        CuiTextareaModule,\n        ReactiveFormsModule,\n        TranslocoDirective,\n        CuiInputNumberModule,\n        CuiDragPointerDirective,\n        CuiGeneralControlErrorHintComponent\n    ],\n    standalone: true,\n    templateUrl: './checklist-block-list-item-evaluation-criteria.component.html',\n    styleUrl: './checklist-block-list-item-evaluation-criteria.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemEvaluationCriteriaComponent {\n    private readonly cuiAlertService = inject(CuiAlertService);\n    private readonly translocoService = inject(TranslocoService);\n\n    private readonly EVALUATION_ALREADY_EXIST = `EVALUATION_ALREADY_EXIST`;\n\n    private previousData: CuiNullable<CuiEvaluationCriteriaData> = null;\n\n    protected readonly isEditMode = signal(false);\n    protected readonly isNew = computed(() => this.criteriaGroup().controls.isNew.value);\n    protected readonly gap = computed(() => (this.isEditMode() ? 8 : 0));\n    protected readonly isLoading = computed(() => this.loadingIds()[this.criteriaGroup().controls.id.value]);\n    protected readonly isDragEnabled = computed(() => !this.isEditMode() && !this.isLoading());\n\n    protected get isEvaluationInvalid(): boolean {\n        return this.criteriaGroup().controls.evaluation.invalid && this.isEditMode();\n    }\n\n    protected get isCriteriaInvalid(): boolean {\n        return this.criteriaGroup().controls.criteria.invalid && this.isEditMode();\n    }\n\n    public readonly loadingIds = input.required<Record<string, boolean>>();\n    public readonly index = input.required<number>();\n    public readonly criteriaGroup = input.required<FormGroup<CuiEvaluationCriteriaGroup>>();\n    public readonly evaluationCriteriaFormArray = input.required<FormArray<FormGroup>>();\n\n    public readonly saveClicked = output<CuiEvaluationCriteriaGroup>();\n    public readonly deleteClicked = output<string>();\n    public readonly cancelClicked = output();\n\n    constructor() {\n        this.initNewEvaluationCriteriaEffect();\n        this.initEditModeEffect();\n    }\n\n    protected onSave(): void {\n        if (this.criteriaGroup().invalid) {\n            return;\n        }\n\n        const evaluation = `${this.criteriaGroup().controls.evaluation.value}`;\n\n        if (this.checkIsEvaluationCriteriaExist(evaluation)) {\n            this.cuiAlertService\n                .open(this.translocoService.translate(this.EVALUATION_ALREADY_EXIST, { evaluation }), {\n                    status: 'error'\n                })\n                .subscribe();\n\n            return;\n        }\n\n        this.isEditMode.update((prev) => !prev);\n        this.saveClicked.emit(this.criteriaGroup().controls);\n    }\n\n    protected onDelete(): void {\n        const id = this.criteriaGroup().controls.id.value;\n\n        this.deleteClicked.emit(id);\n    }\n\n    protected onCancel(): void {\n        if (this.isNew()) {\n            this.cancelClicked.emit();\n        }\n\n        this.isEditMode.update((prev) => !prev);\n\n        if (!this.previousData) {\n            return;\n        }\n\n        this.criteriaGroup().setValue({\n            ...this.criteriaGroup().getRawValue(),\n            ...this.previousData\n        });\n    }\n\n    protected onToggleEditMode(): void {\n        const { criteria, evaluation } = this.criteriaGroup().getRawValue();\n\n        this.previousData = { criteria, evaluation };\n        this.isEditMode.update((prev) => !prev);\n    }\n\n    // TODO: Компонент должен был быть построен исключительно на реактивных формах\n    private initEditModeEffect(): void {\n        effect(() => this.criteriaGroup()[this.isEditMode() ? 'enable' : 'disable']());\n    }\n\n    private initNewEvaluationCriteriaEffect(): void {\n        effect(() => this.isEditMode.set(this.isNew()), { allowSignalWrites: true });\n    }\n\n    private checkIsEvaluationCriteriaExist(evaluation: string): boolean {\n        const controls = this.evaluationCriteriaFormArray().controls;\n\n        return controls.some((control: FormGroup<CuiEvaluationCriteriaGroup>) => {\n            if (control.controls.id.value === this.criteriaGroup().controls.id.value) {\n                return false;\n            }\n\n            return `${control.get('evaluation')?.value}` === evaluation;\n        });\n    }\n}\n","<div *transloco=\"let t\">\n    <form\n        *cuiLet=\"criteriaGroup() as form\"\n        [formGroup]=\"form\"\n        [class.form_edit]=\"isEditMode()\"\n        clas=\"form\"\n    >\n        <div class=\"content\">\n            <span class=\"index\">{{ index() }}.</span>\n            @if (!isEditMode()) {\n                <cui-svg\n                    cuiDragPointer\n                    icon=\"cuiIconDragHandleDots\"\n                    color=\"var(--cui-base-500)\"\n                    class=\"icon\"\n                />\n            }\n            <div\n                style.gap=\"{{ gap() }}px\"\n                class=\"wrapper\"\n            >\n                <cui-input-number\n                    formControlName=\"evaluation\"\n                    cuiTextFieldPlaceholder=\"0\"\n                    [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n                    [min]=\"1\"\n                    [max]=\"99\"\n                    class=\"input-number\"\n                />\n                <textarea\n                    cuiTextarea\n                    formControlName=\"criteria\"\n                    [rows]=\"1\"\n                    [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n                    placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n                    class=\"textarea\"\n                ></textarea>\n            </div>\n            @if (isEditMode()) {\n                <button\n                    type=\"submit\"\n                    cuiIconButton\n                    icon=\"cuiIconCheck\"\n                    color=\"var(--cui-success)\"\n                    [disabled]=\"form.invalid\"\n                    class=\"button\"\n                    (click)=\"onSave()\"\n                ></button>\n                <button\n                    type=\"button\"\n                    cuiIconButton\n                    icon=\"cuiIconXCircle\"\n                    color=\"var(--cui-danger)\"\n                    class=\"button\"\n                    (click)=\"onCancel()\"\n                ></button>\n            } @else {\n                <button\n                    cuiButton\n                    type=\"button\"\n                    appearance=\"ghost\"\n                    size=\"xxs\"\n                    icon=\"cuiIconEdit\"\n                    [disabled]=\"isLoading()\"\n                    (click)=\"onToggleEditMode()\"\n                ></button>\n                <button\n                    cuiButton\n                    type=\"button\"\n                    appearance=\"ghost\"\n                    size=\"xxs\"\n                    icon=\"cuiIconTrash\"\n                    [isLoaderShown]=\"isLoading()\"\n                    (click)=\"onDelete()\"\n                ></button>\n            }\n        </div>\n        <cui-general-control-error-hint\n            [control]=\"form.controls.criteria\"\n            class=\"error-hint\"\n        />\n    </form>\n</div>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\nimport type { FormGroup } from '@angular/forms';\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { CuiNullable, CuiDragDropData, CuiDragDropDirective, CuiDragListDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize, of, Subject, switchMap, takeUntil } from 'rxjs';\nimport {\n    CuiNodeChecklistApiService,\n    NodeCheckListEvaluationCriteria,\n    NodeCheckListEvaluationItemContent,\n    NodeCheckListItem,\n    NodeCheckListItemContentAction,\n    NodeCheckListItemSwitchContentPointer,\n    NodeCheckListItemSwitchContentRequestParams\n} from '@cuby-ui/api';\n\nimport { CuiCheckListBlockListItemEvaluationCriteriaComponent } from '../checklist-block-list-item-evaluation-criteria';\nimport {\n    CuiButtonModule,\n    CuiCheckboxModule,\n    CuiContextMenuModule,\n    CuiDialogService,\n    CuiHintModule,\n    CuiInputModule,\n    CuiLabelModule,\n    CuiTextareaModule,\n    CuiToggleModule,\n    CuiEmptyStateComponent\n} from '../../../../../components';\nimport { CuiDeleteModalComponent } from '../../../index';\nimport { CuiTextFieldControllerModule } from '../../../../../directives';\nimport { cuiCreateDefaultValidators } from '../../../../../utils';\n\nimport type {\n    CuiEvaluationCriteriaElementData,\n    CuiEvaluationCriteriaGroup\n} from './checklist-block-list-item-evaluation.options';\nimport { CuiCheckListBlockService } from '../../services';\n\n@Component({\n    selector: 'cui-checklist-block-list-item-evaluation',\n    imports: [\n        CuiCheckListBlockListItemEvaluationCriteriaComponent,\n        CuiButtonModule,\n        CuiCheckboxModule,\n        CuiContextMenuModule,\n        CuiHintModule,\n        CuiInputModule,\n        CuiLabelModule,\n        CuiTextareaModule,\n        CuiTextFieldControllerModule,\n        CuiToggleModule,\n        CuiEmptyStateComponent,\n        ReactiveFormsModule,\n        TranslocoDirective,\n        CuiDragDropDirective,\n        CuiDragListDirective\n    ],\n    standalone: true,\n    templateUrl: './checklist-block-list-item-evaluation.component.html',\n    styleUrl: './checklist-block-list-item-evaluation.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemEvaluationComponent implements OnInit {\n    private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\n    private readonly cdRef = inject(ChangeDetectorRef);\n    private readonly cuiDialogService = inject(CuiDialogService);\n\n    private readonly isAvailableObserver = new Subject<boolean>();\n\n    protected readonly photoFormGroup = this.nonNullableFormBuilder.group({\n        isEnable: false,\n        isRequired: {\n            value: false,\n            disabled: true\n        }\n    });\n    protected readonly commentFormGroup = this.nonNullableFormBuilder.group({\n        isEnable: false,\n        isRequired: {\n            value: false,\n            disabled: true\n        }\n    });\n    protected readonly evaluationCriteriaFormArray = this.nonNullableFormBuilder.array<FormGroup>([]);\n\n    protected readonly loadingIds = signal<Record<string, boolean>>({});\n    protected readonly isAddButtonDisabled = signal(false);\n\n    private readonly assignee = computed(() => this.checkListItem().content.actionsAssignee![0]);\n    protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\n        () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\n    );\n    protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\n        () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\n    );\n\n    public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListEvaluationItemContent>>();\n\n    protected getPointer(currentIndex: number): NodeCheckListItemSwitchContentPointer {\n        return currentIndex === 0\n            ? NodeCheckListItemSwitchContentPointer.BEFORE\n            : NodeCheckListItemSwitchContentPointer.AFTER;\n    }\n\n    protected getTargetIndex(currentIndex: number): number {\n        return currentIndex === 0 ? 1 : currentIndex - 1;\n    }\n\n    protected onDrop(event: CuiDragDropData): void {\n        const { prevIndex, index } = event;\n\n        if (prevIndex === index) {\n            return;\n        }\n\n        this.moveItemInArray(this.evaluationCriteriaFormArray.controls, prevIndex, index);\n        const movingElementId: string = this.evaluationCriteriaFormArray.at(index).value.id;\n        const targetItemId: string = this.evaluationCriteriaFormArray.at(this.getTargetIndex(index)).value.id;\n        const pointer: NodeCheckListItemSwitchContentPointer = this.getPointer(index);\n\n        const requestBody: NodeCheckListItemSwitchContentRequestParams = {\n            nodeCheckListId: this.checkListItem().id,\n            listEvaluationId: this.assignee().id,\n            movingElementId,\n            targetItemId,\n            pointer\n        };\n\n        this.nodeCheckListApiService.updateNodeCheckListItemSwitchContent(requestBody).subscribe({\n            error: () => {\n                this.moveItemInArray(this.evaluationCriteriaFormArray.controls, index, prevIndex);\n                this.cdRef.markForCheck();\n            }\n        });\n    }\n\n    protected onAddEvaluationCriteriaItem(): void {\n        const evaluationItemControl = this.createEvaluationFormGroup();\n\n        this.isAddButtonDisabled.set(true);\n        this.evaluationCriteriaFormArray.push(evaluationItemControl);\n    }\n\n    protected onSaveEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\n        const isNew = group.isNew.value;\n\n        if (isNew) {\n            this.addEvaluationCriteria(group);\n\n            return;\n        }\n\n        this.updateEvaluationCriteria(group);\n    }\n\n    protected onCancelNewEvaluationCriteria(): void {\n        const lastIndex = this.evaluationCriteriaFormArray.length - 1;\n\n        this.isAddButtonDisabled.set(false);\n        this.evaluationCriteriaFormArray.removeAt(lastIndex);\n    }\n\n    protected openModalDeleteEvaluationCriteria(id: string): void {\n        const content = ['DELETE_EVALUATION_CHECKLIST_ITEM_CONFIRMATION_TEXT'];\n        const criteria = this.findExistingEvaluationCriteria(id);\n\n        if (!criteria?.id) {\n            return;\n        }\n\n        this.loadingIds.update((ids) => ({ ...ids, [criteria.id]: true }));\n        this.cuiDialogService\n            .open(CuiDeleteModalComponent, {\n                data: {\n                    title: 'DELETE_EVALUATION_CHECKLIST_ITEM',\n                    content,\n                    delete: () =>\n                        this.nodeCheckListApiService\n                            .deleteEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria.id)\n                            .pipe(\n                                switchMap((checkListItem) => {\n                                    const index = this.evaluationCriteriaFormArray.controls.findIndex(\n                                        (control) => control.value.id === id\n                                    );\n\n                                    this.checkListBlockService.updateCheckListItem(checkListItem);\n                                    this.evaluationCriteriaFormArray.removeAt(index);\n\n                                    return of(null);\n                                })\n                            )\n                }\n            })\n            .subscribe(() => this.completeEvaluationCriteriaDeletion(criteria));\n    }\n\n    protected completeEvaluationCriteriaDeletion(criteria: NodeCheckListEvaluationCriteria): void {\n        this.loadingIds.update((ids) => {\n            delete ids[criteria.id];\n\n            return { ...ids };\n        });\n    }\n\n    private onCheckListActionChanged(actionId: string, actionContent: NodeCheckListItemContentAction): void {\n        const requestData = {\n            nodeCheckListId: this.checkListItem().id,\n            assigneeActionType: 'ASSIGN',\n            actionId,\n            contentId: actionContent.id,\n            isEnable: actionContent.isEnable,\n            isRequired: actionContent.isRequired\n        };\n\n        this.nodeCheckListApiService.updateNodeCheckListItemActionContent(requestData).subscribe((checkListItem) => {\n            this.checkListBlockService.updateCheckListItem(checkListItem);\n        });\n    }\n\n    public ngOnInit(): void {\n        this.initEvaluationFormValues();\n    }\n\n    private initEvaluationFormValues(): void {\n        this.evaluationCriteriaFormArray.clear();\n        this.photoFormGroup.patchValue({\n            isEnable: this.attachmentPhotoAction().isEnable,\n            isRequired: this.attachmentPhotoAction().isRequired\n        });\n        this.commentFormGroup.patchValue({\n            isEnable: this.textAreaAction().isEnable,\n            isRequired: this.textAreaAction().isRequired\n        });\n\n        if (this.attachmentPhotoAction().isEnable) {\n            this.photoFormGroup.controls.isRequired.enable();\n        }\n\n        if (this.textAreaAction().isEnable) {\n            this.commentFormGroup.controls.isRequired.enable();\n        }\n\n        this.initActionFormSegmentsSubscriptions();\n\n        this.assignee().acceptanceCriteriaEvaluations.forEach((evaluationCriteria: NodeCheckListEvaluationCriteria) => {\n            const evaluationItemControl = this.createEvaluationFormGroup({\n                isNew: false,\n                criteria: evaluationCriteria.criteria,\n                evaluation: evaluationCriteria.evaluation,\n                id: evaluationCriteria.id\n            });\n\n            this.evaluationCriteriaFormArray.push(evaluationItemControl);\n        });\n    }\n\n    private initActionFormSegmentsSubscriptions(): void {\n        this.initPhotoGroupSubscription();\n        this.initCommentGroupSubscription();\n    }\n\n    private initPhotoGroupSubscription(): void {\n        this.photoFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\n            if (!value.isEnable) {\n                this.photoFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n                this.photoFormGroup.get('isRequired')?.disable({ emitEvent: false });\n                this.onCheckListActionChanged(this.assignee().id, {\n                    id: this.attachmentPhotoAction().id,\n                    contentActionType: this.attachmentPhotoAction().contentActionType,\n                    ...this.photoFormGroup.getRawValue()\n                });\n\n                return;\n            }\n\n            this.photoFormGroup.get('isRequired')?.enable({ emitEvent: false });\n            this.onCheckListActionChanged(this.assignee().id, {\n                id: this.attachmentPhotoAction().id,\n                contentActionType: this.attachmentPhotoAction().contentActionType,\n                ...this.photoFormGroup.getRawValue()\n            });\n        });\n    }\n\n    private initCommentGroupSubscription(): void {\n        this.commentFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\n            if (!value.isEnable) {\n                this.commentFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n                this.commentFormGroup.get('isRequired')?.disable({ emitEvent: false });\n                this.onCheckListActionChanged(this.assignee().id, {\n                    id: this.textAreaAction().id,\n                    contentActionType: this.textAreaAction().contentActionType,\n                    ...this.commentFormGroup.getRawValue()\n                });\n\n                return;\n            }\n\n            this.commentFormGroup.get('isRequired')?.enable({ emitEvent: false });\n            this.onCheckListActionChanged(this.assignee().id, {\n                id: this.textAreaAction().id,\n                contentActionType: this.textAreaAction().contentActionType,\n                ...this.commentFormGroup.getRawValue()\n            });\n        });\n    }\n\n    private updateEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\n        const evaluation = group.evaluation.value;\n        const criteria = group.criteria.value;\n        const id = group.id.value;\n\n        this.nodeCheckListApiService\n            .updateEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, id, criteria, evaluation)\n            .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n    }\n\n    private addEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\n        const evaluation = group.evaluation.value;\n        const criteria = group.criteria.value;\n\n        this.nodeCheckListApiService\n            .addEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria, evaluation)\n            .pipe(finalize(() => this.isAddButtonDisabled.set(false)))\n            .subscribe((checkListItem) => this.updateCreatedEvaluationCriteria(checkListItem));\n    }\n\n    private updateCreatedEvaluationCriteria(\n        checkListItem: NodeCheckListItem<NodeCheckListEvaluationItemContent>\n    ): void {\n        const acceptanceCriteriaEvaluations = checkListItem.content.actionsAssignee![0].acceptanceCriteriaEvaluations;\n        const id = acceptanceCriteriaEvaluations.at(-1)?.id;\n        const control = this.evaluationCriteriaFormArray.controls.at(-1)?.getRawValue();\n        const createdControl = this.createEvaluationFormGroup({ ...control, id, isNew: false });\n\n        this.evaluationCriteriaFormArray.removeAt(-1);\n        this.evaluationCriteriaFormArray.push(createdControl);\n        this.checkListBlockService.updateCheckListItem(checkListItem);\n    }\n\n    private createEvaluationFormGroup({\n        id,\n        criteria = '',\n        evaluation = null,\n        isNew = true\n    }: CuiEvaluationCriteriaElementData = {}): FormGroup {\n        return this.nonNullableFormBuilder.group({\n            id: [id],\n            criteria: [criteria, cuiCreateDefaultValidators({ maxLength: 500 })],\n            evaluation: [evaluation, [Validators.required]],\n            isNew: [isNew]\n        });\n    }\n\n    private findExistingEvaluationCriteria(id: string): CuiNullable<NodeCheckListEvaluationCriteria> {\n        return (\n            this.assignee().acceptanceCriteriaEvaluations.find(\n                (evaluationCriteria: NodeCheckListEvaluationCriteria) => evaluationCriteria.id === id\n            ) || null\n        );\n    }\n\n    private moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\n        if (fromIndex === toIndex) {\n            return;\n        }\n\n        const item = array[fromIndex];\n\n        array.splice(fromIndex, 1);\n        array.splice(toIndex, 0, item);\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <div class=\"action\">\n        <div class=\"action__inputs-container\">\n            <div\n                class=\"action__input\"\n                [formGroup]=\"photoFormGroup\"\n            >\n                <label cuiLabel>\n                    <input\n                        cuiCheckbox\n                        type=\"checkbox\"\n                        formControlName=\"isEnable\"\n                    />\n                    {{ t('PHOTO') }}\n                </label>\n                <label cuiLabel>\n                    <input\n                        cuiToggle\n                        type=\"checkbox\"\n                        formControlName=\"isRequired\"\n                    />\n                    {{ t('REQUIRED') }}\n                </label>\n            </div>\n            <div\n                class=\"action__input\"\n                [formGroup]=\"commentFormGroup\"\n            >\n                <label cuiLabel>\n                    <input\n                        cuiCheckbox\n                        type=\"checkbox\"\n                        formControlName=\"isEnable\"\n                    />\n                    {{ t('COMMENT') }}\n                </label>\n                <label cuiLabel>\n                    <input\n                        cuiToggle\n                        type=\"checkbox\"\n                        formControlName=\"isRequired\"\n                    />\n                    {{ t('REQUIRED') }}\n                </label>\n            </div>\n        </div>\n        <div class=\"action__criteria-title-container\">\n            <label\n                cuiLabel\n                [isRequired]=\"true\"\n                for=\"evaluationCriteria\"\n            >\n                {{ t('EVALUATION_CRITERIA') }}\n            </label>\n            <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\n        </div>\n        <ul\n            cuiDragList\n            class=\"list\"\n        >\n            @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\n                <li\n                    cuiChecklistBlockListItemEvaluationCriteria\n                    [index]=\"index + 1\"\n                    cuiDragDrop\n                    [disabled]=\"isAddButtonDisabled()\"\n                    (elementDragged)=\"onDrop($event)\"\n                    [criteriaGroup]=\"control\"\n                    [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\n                    [loadingIds]=\"loadingIds()\"\n                    (saveClicked)=\"onSaveEvaluationCriteria($event)\"\n                    (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\n                    (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\n                ></li>\n            } @empty {\n                <li\n                    cuiEmptyState\n                    [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\n                ></li>\n            }\n        </ul>\n        <div class=\"action__footer\">\n            <button\n                cuiButton\n                size=\"xxs\"\n                appearance=\"flat\"\n                icon=\"cuiIconPlus\"\n                type=\"button\"\n                [disabled]=\"isAddButtonDisabled()\"\n                (click)=\"onAddEvaluationCriteriaItem()\"\n            >\n                {{ t('NEW_OPTION') }}\n            </button>\n        </div>\n    </div>\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { Type } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { CuiTreeStructApiService, CuiTreeStructNavigatorApiService, MovingType } from '@cuby-ui/api';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize, switchMap } from 'rxjs';\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\nimport { CuiDragDropData, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule, CuiContextMenuModule, CuiEmptyStateComponent } from '../../../../../components';\nimport { CuiEditorConfig } from '../../../../../editor';\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\nimport { CuiCheckListBlockService } from '../../services';\nimport { CuiCheckListBlockListItemActionWithVerificationComponent } from '../checklist-block-list-item-action-with-verification';\nimport { CuiCheckListBlockListItemActionWithoutVerificationComponent } from '../checklist-block-list-item-action-without-verification';\nimport { CuiChecklistBlockListItemContainerComponent } from '../checklist-block-list-item-container';\nimport { CuiCheckListBlockListItemEvaluationComponent } from '../checklist-block-list-item-evaluation';\n\n@Component({\n    selector: 'cui-checklist-block-list',\n    imports: [\n        CuiChecklistBlockListItemContainerComponent,\n        CuiButtonModule,\n        CuiContextMenuModule,\n        CuiLetDirective,\n        CuiEmptyStateComponent,\n        NgTemplateOutlet,\n        TranslocoDirective,\n        CuiDragDropDirective,\n        CuiHandleScrollDirective,\n        CuiDragListDirective\n    ],\n    standalone: true,\n    templateUrl: './checklist-block-list.component.html',\n    styleUrl: './checklist-block-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiChecklistBlockListComponent {\n    private readonly treeStructApiService = inject(CuiTreeStructApiService);\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\n\n    protected readonly checkListItems = this.checkListBlockService.checkListItems;\n    protected readonly isDragAvailable = this.checkListBlockService.isDragAvailable;\n    protected readonly checkListItemActionWithVerification = CuiCheckListBlockListItemActionWithVerificationComponent;\n    protected readonly checkListItemActionWithoutVerification =\n        CuiCheckListBlockListItemActionWithoutVerificationComponent;\n    protected readonly checkListItemEvaluation = CuiCheckListBlockListItemEvaluationComponent;\n\n    protected readonly componentId = this.checkListBlockService.componentId;\n    protected readonly isLoading = signal<boolean>(false);\n    protected readonly isDragEnabled = computed(() => !this.isLoading() && this.isDragAvailable());\n    protected readonly checkListItemsWithComponents = computed<CuiCheckListBlockItem[]>(() => {\n        if (!this.checkListItems()) {\n            return [];\n        }\n\n        return this.checkListItems()!.map((element) => ({\n            id: element.id,\n            content: element,\n            component: this.getNodeCheckListItemComponent(element)\n        }));\n    });\n\n    public readonly config = input.required<CuiEditorConfig>();\n\n    protected moveTreeStruct(data: CuiDragDropData, element: CuiCheckListBlockItem): void {\n        const { targetElement, pointer, index, prevIndex } = data;\n\n        if (prevIndex === index) {\n            return;\n        }\n\n        this.isLoading.set(true);\n        this.treeStructNavigatorApiService\n            .moveElement({\n                type: MovingType.TARGET_NODE,\n                targetItemId: targetElement.dataset['id']!,\n                treeStructTargetItemId: targetElement.dataset['parentId']!,\n                pointer,\n                movableItemId: element.id,\n                treeStructMovableItemId: this.componentId()!\n            })\n            .pipe(\n                switchMap(() =>\n                    this.treeStructApiService.getById<NodeCheckListItem<NodeCheckListItemContentType>>(\n                        this.componentId()!\n                    )\n                ),\n                finalize(() => this.isLoading.set(false))\n            )\n            .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\n    }\n\n    private getNodeCheckListItemComponent(item: NodeCheckListItem<NodeCheckListItemContentType>): Type<unknown> {\n        if (item.content.actionsApprove !== null) {\n            return this.checkListItemActionWithVerification;\n        }\n\n        if ('acceptanceCriteriaEvaluations' in item.content.actionsAssignee![0]) {\n            return this.checkListItemEvaluation;\n        }\n\n        return this.checkListItemActionWithoutVerification;\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <ng-container *cuiLet=\"checkListItemsWithComponents() as checkListItemsWithComponents\">\n        @if (checkListItemsWithComponents?.length) {\n            <ul\n                class=\"list__items\"\n                #list\n                cuiDragList\n            >\n                <ng-container *ngTemplateOutlet=\"items; context: { $implicit: checkListItemsWithComponents }\" />\n                <ng-template\n                    #items\n                    let-items\n                    let-isHidden=\"isHidden\"\n                >\n                    @for (item of items; track item.id; let index = $index) {\n                        <li\n                            [attr.data-id]=\"item.content.id\"\n                            [attr.data-parent-id]=\"componentId()\"\n                            [hidden]=\"isHidden\"\n                            cuiHandleScroll\n                            cuiDragDrop\n                            class=\"list__item\"\n                            [class.list__item_disabled]=\"isLoading()\"\n                            (elementDragged)=\"moveTreeStruct($event, item)\"\n                        >\n                            <cui-checklist-block-list-item-container\n                                [checkListBlockItem]=\"item\"\n                                [index]=\"index + 1\"\n                                [config]=\"config()\"\n                            />\n                        </li>\n                    }\n                </ng-template>\n            </ul>\n        } @else {\n            <cui-empty-state [subtitle]=\"t('NO_CHECKLIST_ITEMS')\" />\n        }\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CuiElementDirective, CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\nimport {} from '@cuby-ui/api';\nimport {\n    CuiNodeChecklistApiService,\n    CuiTreeStructApiService,\n    NodeCheckListItem,\n    NodeCheckListItemContentType\n} from '@cuby-ui/api';\n\nimport { CuiButtonModule, CuiContextMenuModule, CuiContentWrapperComponent } from '../../../components';\nimport { CuiCheckListBlockItemType } from './checklist-block.options';\nimport { CuiChecklistBlockListComponent } from './components';\nimport { CuiCheckListBlockService } from './services';\nimport { CuiContextMenuItem } from '../../../interfaces';\nimport { CuiEditorConfig } from '../../../editor/interfaces';\n\n@Component({\n    selector: 'cui-checklist-block, [cuiCheckListBlock]',\n    imports: [\n        CuiChecklistBlockListComponent,\n        CuiContentWrapperComponent,\n        CuiButtonModule,\n        CuiContextMenuModule,\n        CuiElementDirective,\n        CuiLetDirective,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './checklist-block.component.html',\n    styleUrls: ['./checklist-block.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CuiCheckListBlockService]\n})\nexport class CuiChecklistBlockComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly treeStructApiService = inject(CuiTreeStructApiService);\n    private readonly translocoService = inject(TranslocoService);\n    private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n    private readonly checkListBlockService = inject(CuiCheckListBlockService);\n\n    protected readonly CHECKLIST_BLOCK_SELECT_OPTIONS: CuiContextMenuItem[] = [\n        {\n            label: this.translocoService.translate('ASSIGNEE_APPROVAL'),\n            command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITHOUT_VERIFICATION)\n        },\n        {\n            label: this.translocoService.translate('DOUBLE_CHECK_APPROVAL'),\n            command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITH_VERIFICATION)\n        },\n        {\n            label: this.translocoService.translate('EVALUATION_OPTIONS'),\n            command: () => this.addCheckListItem(CuiCheckListBlockItemType.EVALUATION)\n        }\n    ];\n\n    protected readonly checkListItems = this.checkListBlockService.checkListItems;\n    protected readonly isLoading = signal<boolean>(false);\n\n    public readonly componentId = input.required<string>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    constructor() {\n        this.initNodeCheckListBlock();\n    }\n\n    private initNodeCheckListBlock(): void {\n        effect(\n            () => {\n                this.checkListBlockService.setComponentId(this.componentId());\n                this.treeStructApiService\n                    .getById<NodeCheckListItem<NodeCheckListItemContentType>>(this.componentId())\n                    .pipe(takeUntilDestroyed(this.destroyRef))\n                    .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private addCheckListItem(type: CuiCheckListBlockItemType): void {\n        this.isLoading.set(true);\n        this.nodeCheckListApiService\n            .addNodeCheckListItem({\n                treeStructContainerCheckListId: this.componentId(),\n                title: 'New checklist item',\n                type_operations: type\n            })\n            .pipe(\n                takeUntilDestroyed(this.destroyRef),\n                finalize(() => this.isLoading.set(false))\n            )\n            .subscribe((checkListItem) => this.checkListBlockService.addCheckListItem(checkListItem));\n    }\n}\n","<cui-content-wrapper\n    *transloco=\"let t\"\n    backgroundColor=\"var(--cui-base-10)\"\n    [gap]=\"16\"\n>\n    <ng-container *cuiLet=\"checkListItems() as checkListItems\">\n        <header class=\"header\">\n            <h2 class=\"heading\">{{ t('CHECKLIST') }}</h2>\n\n            @if (checkListItems) {\n                <span class=\"item\">{{ checkListItems?.length }} {{ t('ITEM_VARIANT') }}</span>\n            }\n        </header>\n        <cui-content-wrapper>\n            <cui-checklist-block-list [config]=\"config()\" />\n        </cui-content-wrapper>\n        <div>\n            <button\n                #actionButton=\"elementRef\"\n                cuiElement\n                cuiButton\n                type=\"button\"\n                appearance=\"flat\"\n                size=\"xxs\"\n                icon=\"cuiIconPlus\"\n            >\n                {{ t('ADD_NEW_ITEM') }}\n            </button>\n            <cui-context-menu\n                [items]=\"CHECKLIST_BLOCK_SELECT_OPTIONS\"\n                [target]=\"actionButton.nativeElement\"\n            />\n        </div>\n    </ng-container>\n</cui-content-wrapper>\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { CuiFrameApiService, Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport type { Subscription } from 'rxjs';\n\nimport type { CuiEditorConfig } from '../../../editor';\nimport { CuiEditorComponent } from '../../../editor';\nimport { CuiEmptyStateComponent } from '../../../components';\n\nimport { CuiImageUrl } from './framer-preview.options';\n\n@Component({\n    selector: 'cui-framer-preview',\n    imports: [TranslocoDirective, CuiEditorComponent, CuiEmptyStateComponent],\n    standalone: true,\n    templateUrl: './framer-preview.component.html',\n    styleUrl: './framer-preview.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFramerPreviewComponent {\n    private readonly hostElement = inject(ElementRef).nativeElement;\n    private readonly frameApiService = inject(CuiFrameApiService);\n\n    private subscription!: Subscription;\n\n    protected isVideo = false;\n    protected editorConfig!: CuiEditorConfig;\n\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\n    protected readonly thumbnailUrl = signal<CuiNullable<CuiImageUrl>>(null);\n\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\n\n    public readonly framerId = input.required<string>();\n    public readonly config = input.required<CuiEditorConfig>();\n    public readonly editorResourceUrl = input.required<string>();\n    public readonly title = input<string>();\n\n    constructor() {\n        this.initConfigEffect();\n        this.initFramerIdEffect();\n    }\n\n    private initConfigEffect(): void {\n        effect(\n            () => {\n                this.editorConfig = {\n                    element: this.hostElement,\n                    ...this.config(),\n                    readOnly: true\n                };\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private initFramerIdEffect(): void {\n        effect(\n            () => {\n                const framerId = this.framerId();\n\n                if (!framerId) {\n                    return;\n                }\n\n                this.subscription?.unsubscribe();\n                this.initFrameFragments();\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private initFrameFragments(): void {\n        const frameId = this.framerId();\n\n        this.jText.set(null);\n        this.thumbnailUrl.set(null);\n\n        if (!frameId) {\n            return;\n        }\n\n        const fragmentActions = {\n            J_TEXT: (fragment: Fragment): void => {\n                this.jText.set(fragment as JTextFragment);\n            },\n            RESOURCE_FILE: (fragment: Fragment): void => {\n                this.setResourceFile(fragment as ResourceFragment);\n            }\n        };\n\n        this.subscription = this.frameApiService\n            .getFrame(frameId, this.editorConfig.requestOptions)\n            .subscribe((frame) => {\n                frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\n            });\n    }\n\n    private setResourceFile(resource: ResourceFragment): void {\n        const url = `${this.editorResourceUrl()}/${resource.fileId}`;\n\n        this.isVideo = resource?.name?.split('.').pop() === 'mp4';\n\n        if (!url) {\n            return;\n        }\n\n        this.thumbnailUrl.set({ src: resource.fileId && url, name: resource.name || resource.type });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (jText()) {\n        @if (!isDescriptionEmpty()) {\n            @let url = thumbnailUrl();\n\n            @if (url?.src; as src) {\n                @if (isVideo) {\n                    <video\n                        class=\"thumbnail\"\n                        [src]=\"src\"\n                        controls\n                    ></video>\n                } @else {\n                    <img\n                        class=\"thumbnail\"\n                        [src]=\"src\"\n                        [alt]=\"url?.name\"\n                    />\n                }\n            }\n\n            <div class=\"content\">\n                @if (title(); as title) {\n                    <div class=\"title\">{{ title }}</div>\n                }\n\n                @if (jText()?.id; as id) {\n                    <div class=\"wrapper\">\n                        <cui-editor\n                            class=\"editor\"\n                            [editorApiId]=\"id\"\n                            [config]=\"editorConfig\"\n                        />\n                    </div>\n                }\n            </div>\n        } @else {\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n        }\n    }\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport type { CuiApiContext, ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { FilesUploader, takeCaptureFromVideo } from '@cuby-ui/cdk';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport { CuiAlertService, CuiButtonModule } from '../../../components';\n\n@Component({\n    selector: 'cui-utility-thumbnail',\n    imports: [TranslocoDirective, CuiButtonModule],\n    standalone: true,\n    templateUrl: './utility-thumbnail.component.html',\n    styleUrl: './utility-thumbnail.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUtilityThumbnailComponent {\n    private readonly cuiAlertService = inject(CuiAlertService);\n    private readonly translocoService = inject(TranslocoService);\n    private readonly frameApiService = inject(CuiFrameApiService);\n\n    protected readonly MAX_FILE_SIZE = 20971520;\n\n    public readonly context = input<CuiApiContext>();\n\n    protected readonly thumbnailUrl = computed(() => {\n        const thumbnail = this.thumbnail();\n\n        if (!thumbnail?.resource) {\n            return null;\n        }\n\n        return thumbnail.resource;\n    });\n    protected readonly uploadButtonName = computed(() => {\n        const thumbnail = this.thumbnail();\n\n        if (thumbnail?.name) {\n            return this.translocoService.translate('REPLACE_FILE');\n        }\n\n        return this.translocoService.translate('UPLOAD_FILE');\n    });\n\n    public readonly thumbnail = model.required<CuiNullable<ResourceFragment>>();\n    public readonly framerId = input.required<string>();\n\n    protected onSelectFile(): void {\n        const types = 'image/jpg, image/jpeg, image/png, video/mp4';\n\n        FilesUploader.uploadFile(types).then((files) => this.getFile(files));\n    }\n\n    protected onRemoveThumbnail(): void {\n        const frameId = this.framerId();\n        const fragmentId = this.thumbnail()?.id;\n\n        if (!frameId || !fragmentId) {\n            return;\n        }\n\n        this.frameApiService.deleteResource(frameId, fragmentId, this.context()).subscribe(() => {\n            this.thumbnail.update((prev) => ({ ...prev!, fileId: null, name: null, resource: null }));\n        });\n    }\n\n    private getFile(files: FileList): void {\n        const file = files.item(0);\n\n        if (!file) {\n            return;\n        }\n\n        if (file.size > this.MAX_FILE_SIZE) {\n            this.cuiAlertService\n                .open(this.translocoService.translate('INVALID_FILE_SIZE'), {\n                    status: 'error'\n                })\n                .subscribe();\n\n            return;\n        }\n\n        const isVideo = file.name.split('.').at(-1) === 'mp4';\n        const url = URL.createObjectURL(file);\n\n        if (isVideo) {\n            this.getCaptureFromVideo(url, file);\n        } else {\n            this.thumbnail.update((prev) => ({ ...prev!, name: file.name, resource: url }));\n        }\n\n        this.uploadFile(file);\n    }\n\n    private uploadFile(file: File): void {\n        const frameId = this.framerId();\n        const fragmentId = this.thumbnail()?.id;\n\n        if (!frameId || !fragmentId) {\n            return;\n        }\n\n        const formData = new FormData();\n        formData.append('resource', file);\n\n        this.frameApiService.uploadResource(formData, frameId, fragmentId, this.context()).subscribe();\n    }\n\n    private getCaptureFromVideo(url: string, file?: File): void {\n        takeCaptureFromVideo(url).then((capture) => {\n            this.thumbnail.update((prev) => ({\n                ...prev!,\n                name: (file?.name || prev?.name)!,\n                resource: capture\n            }));\n        });\n    }\n}\n","<section\n    *transloco=\"let t\"\n    class=\"file\"\n>\n    <span class=\"title\">{{ t('THUMBNAIL') }}</span>\n    <div class=\"upload\">\n        <div class=\"upload-file\">\n            @if (thumbnail()?.name; as fileId) {\n                <div class=\"image\">\n                    <span class=\"image__name\">{{ thumbnail()?.name }}</span>\n                    <!-- TODO: ngSrc -->\n                    <img\n                        class=\"image__view\"\n                        [src]=\"thumbnailUrl()\"\n                        height=\"120\"\n                        width=\"184\"\n                        alt=\"Thumbnail\"\n                    />\n                </div>\n            }\n            <div class=\"info\">\n                <button\n                    type=\"button\"\n                    cuiButton\n                    appearance=\"outlined-gray\"\n                    size=\"xxs\"\n                    icon=\"cuiIconUpload\"\n                    (click)=\"onSelectFile()\"\n                >\n                    {{ uploadButtonName() }}\n                </button>\n                @if (thumbnail()?.name) {\n                    <button\n                        class=\"remove-button\"\n                        cuiButton\n                        appearance=\"link\"\n                        size=\"sm\"\n                        type=\"button\"\n                        (click)=\"onRemoveThumbnail()\"\n                    >\n                        {{ t('REMOVE') }}\n                    </button>\n                }\n\n                <span class=\"accepted\">{{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB</span>\n            </div>\n        </div>\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\nimport type { ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';\n\nimport {\n    CuiAccordionModule,\n    CuiButtonModule,\n    CuiFormFieldModule,\n    CuiHintModule,\n    CuiInputModule,\n    CuiLabelModule\n} from '../../../components';\nimport { cuiCreateDefaultValidators } from '../../../utils';\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\nimport type { CuiEditorConfig } from '../../../editor';\nimport { CuiEditorBlockComponent } from '../../../editor';\nimport { CuiUtilityThumbnailComponent } from '../utility-thumbnail';\n\nimport type { CuiCriterionFormGroup, CuiCriterionFormValues } from './criterion-info-form.options';\n\n@Component({\n    selector: 'cui-criterion-info-form',\n    imports: [\n        CuiAccordionModule,\n        CuiButtonModule,\n        CuiEditorBlockComponent,\n        CuiFormFieldModule,\n        CuiGeneralControlErrorHintComponent,\n        CuiHintModule,\n        CuiInputModule,\n        CuiLabelModule,\n        CuiUtilityThumbnailComponent,\n        ReactiveFormsModule,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './criterion-info-form.component.html',\n    styleUrl: './criterion-info-form.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCriterionInfoFormComponent {\n    private readonly destroy = inject(DestroyRef);\n    private readonly formBuilder = inject(NonNullableFormBuilder);\n    private readonly frameApiService = inject(CuiFrameApiService);\n    private readonly resourceApiService = inject(CuiResourceApiService);\n    private readonly cuiIdService = inject(CuiIdService);\n\n    protected readonly CONTROL_DELAY = 500;\n\n    protected readonly titleId = this.cuiIdService.generate();\n    protected readonly descriptionId = this.cuiIdService.generate();\n    protected readonly form = this.formBuilder.group<CuiCriterionFormGroup>({\n        title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\n        description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\n    });\n\n    protected heading: CuiNullable<string> = null;\n\n    protected readonly isDescriptionEmpty = signal(false);\n    protected readonly editorId = signal<CuiNullable<string>>(null);\n    protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\n\n    public readonly title = input.required<string>();\n    public readonly description = input.required<string>();\n    public readonly framerId = input.required<string>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    public readonly formChanged = output<Partial<CuiCriterionFormValues>>();\n    public readonly isFormValidChanged = output<boolean>();\n\n    protected get controls(): CuiCriterionFormGroup {\n        return this.form.controls;\n    }\n\n    protected get isTitleError(): boolean {\n        return this.controls.title.invalid && this.controls.title.dirty;\n    }\n\n    protected get isDescriptionError(): boolean {\n        return this.controls.description.invalid && this.controls.description.dirty;\n    }\n\n    constructor() {\n        this.initUtilityEffect();\n    }\n\n    protected onEditorEmpty(isEmpty: boolean): void {\n        this.isDescriptionEmpty.set(isEmpty);\n        this.isFormValidChanged.emit(this.checkFormValidation());\n    }\n\n    private initUtilityEffect(): void {\n        const effectRef = effect(() => {\n            const title = this.title();\n\n            if (!title) {\n                return;\n            }\n\n            this.initFormSubscriptions();\n            this.initFrameFragments();\n            effectRef.destroy();\n        });\n    }\n\n    private initFormSubscriptions(): void {\n        this.form.setValue({ title: this.title(), description: this.description() }, { emitEvent: false });\n\n        this.form.statusChanges\n            .pipe(takeUntilDestroyed(this.destroy))\n            .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\n\n        this.form.valueChanges\n            .pipe(\n                takeUntilDestroyed(this.destroy),\n                startWith(this.form.value),\n                pairwise(),\n                debounceTime(this.CONTROL_DELAY),\n                map(([prev, current]) => this.compareFormValues([prev, current]))\n            )\n            .subscribe((value) => {\n                if (!Object.keys(value).length) {\n                    return;\n                }\n\n                this.formChanged.emit(value);\n            });\n    }\n\n    private initFrameFragments(): void {\n        const frameId = this.framerId();\n\n        if (!frameId) {\n            return;\n        }\n\n        this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\n            frame.fragments.forEach((fragment) => {\n                if (fragment.type === FragmentType.jText) {\n                    this.editorId.set(fragment?.id);\n                }\n\n                if (fragment.type === FragmentType.resourceFile) {\n                    this.setResourceFile(fragment as ResourceFragment);\n                }\n            });\n        });\n    }\n\n    private compareFormValues([\n        prevGroup,\n        currentGruop\n    ]: Partial<CuiCriterionFormValues>[]): Partial<CuiCriterionFormValues> {\n        const keys = Object.keys(currentGruop) as (keyof CuiCriterionFormValues)[];\n        const changedFields: Record<string, unknown> = {};\n\n        keys.forEach((key) => {\n            const prev = prevGroup[key];\n            const current = currentGruop[key];\n\n            if (prev === current || this.controls[key].invalid) {\n                return;\n            }\n\n            changedFields[key] = current;\n        });\n\n        return changedFields;\n    }\n\n    private setResourceFile(resource: ResourceFragment): void {\n        if (!resource.fileId) {\n            this.thumbnail.set({ ...resource });\n\n            return;\n        }\n\n        this.resourceApiService.get(resource.fileId, this.config().requestOptions)\n            .pipe(\n                takeUntilDestroyed(this.destroy),\n                map((url) => URL.createObjectURL(url))\n            )\n            .subscribe((url) => {\n                this.thumbnail.set({ ...resource, resource: url });\n\n                if (!url || resource?.name?.split('.').pop() !== 'mp4') {\n                    return;\n                }\n\n                this.getCaptureFromVideo(url);\n            });\n    }\n\n    private getCaptureFromVideo(url: string, file?: File): void {\n        takeCaptureFromVideo(url).then((capture) => {\n            this.thumbnail.update((prev) => ({\n                ...prev!,\n                name: (file?.name ?? prev?.name)!,\n                resource: capture\n            }));\n        });\n    }\n\n    private checkFormValidation(): boolean {\n        return !this.isDescriptionEmpty() && !this.form.invalid;\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <section class=\"content\">\n        <cui-form-field>\n            <label\n                cuiLabel\n                [isRequired]=\"true\"\n                [for]=\"titleId\"\n            >\n                {{ t('TITLE') }}\n            </label>\n\n            <cui-input-text\n                [cuiTextFieldId]=\"titleId\"\n                [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n                [cuiTextFieldIsError]=\"isTitleError\"\n                [formControl]=\"form.controls.title\"\n            />\n\n            @if (isTitleError) {\n                <cui-general-control-error-hint\n                    [control]=\"form.controls.title\"\n                    [isVisible]=\"true\"\n                />\n            }\n        </cui-form-field>\n\n        <cui-form-field>\n            <label\n                cuiLabel\n                [isRequired]=\"true\"\n                [for]=\"descriptionId\"\n            >\n                {{ t('SHORT_DESCRIPTION') }}\n            </label>\n\n            <cui-input-text\n                [cuiTextFieldId]=\"descriptionId\"\n                cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n                [cuiTextFieldIsError]=\"isDescriptionError\"\n                [formControl]=\"form.controls.description\"\n            />\n\n            @if (isDescriptionError) {\n                <cui-general-control-error-hint\n                    [control]=\"form.controls.description\"\n                    [isVisible]=\"true\"\n                />\n            }\n        </cui-form-field>\n\n\n        <cui-utility-thumbnail\n            [context]=\"config().requestOptions\"\n            [framerId]=\"framerId()\"\n            [(thumbnail)]=\"thumbnail\"\n        />\n\n        @if (editorId(); as editorId) {\n            <cui-editor-block\n                [title]=\"form.controls.title.value || title()\"\n                [config]=\"config()\"\n                [editorId]=\"editorId\"\n                [required]=\"true\"\n                class=\"editor\"\n                (editorEmpty)=\"onEditorEmpty($event)\"\n            />\n        }\n    </section>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport type { Instruction, StorageObject, Criterion, CuiApiContext } from '@cuby-ui/api';\n\nexport const UTILITY_MODAL_SERVICE_TOKEN = new InjectionToken<UtilityModalService<UtilityElement>>(\n    'UTILITY_MODAL_SERVICE_TOKEN'\n);\n\nexport interface UtilityModalService<T extends UtilityElement> {\n    createUtility(id: string): Observable<StorageObject<T>>;\n    changeTitle(utilityId: string, title: string, context?: CuiApiContext): Observable<void>;\n    changeDescription?(utilityId: string, shortDescription: string, context?: CuiApiContext): Observable<void>;\n    unbindUtility(id: string): Observable<StorageObject<T>>;\n    deleteUtility(utility: StorageObject<T>): Observable<void>;\n}\n\nexport type UtilityElement = Instruction | Criterion;\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { StorageObject } from '@cuby-ui/api';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\n\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../../components';\nimport { CuiLoaderComponent } from '../../../loader';\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement } from '../../utility-modal.options';\n\n@Component({\n    selector: 'cui-utility-modal-create',\n    imports: [CuiButtonModule, CuiLoaderComponent, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\n    standalone: true,\n    templateUrl: './utility-modal-create.component.html',\n    styleUrl: './utility-modal-create.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUtilityModalCreateComponent implements OnInit, OnDestroy {\n    private readonly window = inject(CUI_WINDOW);\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n    private readonly utilityModalService = inject(UTILITY_MODAL_SERVICE_TOKEN);\n\n    private readonly prevUtility = this.cuiDialogContext.data.utility;\n\n    protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n    protected readonly tools = this.cuiDialogContext.data.tools;\n    protected readonly header = this.cuiDialogContext.data.header;\n\n    private readonly _utility = computed(() => signal(this.initialUtility()));\n\n    protected readonly isFormValid = signal(false);\n    protected readonly utility = computed(() => this._utility()());\n\n    public readonly initialUtility = input.required<StorageObject<UtilityElement>>();\n\n    public ngOnInit(): void {\n        this.initWindowUnloadEvent();\n    }\n\n    public ngOnDestroy(): void {\n        this.window.onbeforeunload = null;\n    }\n\n    protected onSave(): void {\n        this.cuiDialogContext.completeWith(\n            this.initialUtility() ? { prevId: this.prevUtility.id, ...this.utility() } : this.utility()\n        );\n    }\n\n    protected onCancel(): void {\n        this.destroyUtility();\n\n        const returnedValue = this.initialUtility() ? this.utility() : null;\n\n        this.cuiDialogContext.completeWith(returnedValue);\n    }\n\n    private initWindowUnloadEvent(): void {\n        this.window.onbeforeunload = (): void => this.destroyUtility();\n    }\n\n    private destroyUtility(): void {\n        const utility = this.utility();\n\n        if (!utility || this.initialUtility()) {\n            return;\n        }\n\n        this.utilityModalService.deleteUtility(utility).subscribe();\n    }\n}\n","<div\n    class=\"wrapper\"\n    *transloco=\"let t\"\n>\n    <header class=\"header\">\n        <ng-container [ngTemplateOutlet]=\"header\" />\n\n        <div class=\"header__content\">\n            <cui-loader\n                type=\"stated\"\n                color=\"var(--cui-base-500)\"\n            />\n\n            <div class=\"actions\">\n                @if (!initialUtility()) {\n                    <button\n                        type=\"button\"\n                        cuiButton\n                        appearance=\"secondary\"\n                        (click)=\"onCancel()\"\n                    >\n                        {{ t('CANCEL') }}\n                    </button>\n                }\n\n                <button\n                    type=\"button\"\n                    cuiButton\n                    [disabled]=\"!isFormValid()\"\n                    appearance=\"action-violet\"\n                    (click)=\"onSave()\"\n                >\n                    {{ t('DONE') }}\n                </button>\n            </div>\n        </div>\n    </header>\n\n    <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Criterion, StorageObject } from '@cuby-ui/api';\n\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../../components';\nimport { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';\nimport { CuiCriterionInfoComponent } from '../../../criterion-info';\nimport { CuiUtilityModalCreateComponent } from '../utility-modal-create';\nimport { CuiEditorConfig } from '../../../../../editor';\n\n@Component({\n    imports: [CuiButtonModule, CuiSvgModule, CuiCriterionInfoComponent, CuiUtilityModalCreateComponent],\n    standalone: true,\n    templateUrl: './criterion-modal-create.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCriterionModalCreateComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n    private readonly criterionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\n\n    private isCreated = false;\n\n    protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n    protected readonly tools = this.cuiDialogContext.data.tools;\n    protected readonly header = this.cuiDialogContext.data.header;\n\n    private readonly _criterion = computed(() => signal(this.initialUtility()));\n\n    protected readonly isFormValid = signal(false);\n    protected readonly criterion = computed(() => this._criterion()());\n\n    public readonly initialUtility = input.required<StorageObject<Criterion>>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    protected onCriterionCreated(storageNodeId: string): void {\n        if (this.isCreated || this.initialUtility()) {\n            return;\n        }\n\n        this.criterionApiService\n            .createUtility(storageNodeId)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((criterion) => {\n                this.isCreated = true;\n                this._criterion().set(criterion as StorageObject<Criterion>);\n            });\n    }\n}\n","<cui-utility-modal-create [initialUtility]=\"criterion()\">\n    <cui-criterion-info\n        [criterion]=\"criterion()\"\n        [config]=\"config()\"\n        (validationChanged)=\"isFormValid.set($event)\"\n        (criterionCreated)=\"onCriterionCreated($event)\"\n    />\n</cui-utility-modal-create>\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport type { ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\n\nimport {\n    CuiAccordionModule,\n    CuiButtonModule,\n    CuiFormFieldModule,\n    CuiHintModule,\n    CuiInputModule,\n    CuiLabelModule\n} from '../../../components';\nimport type { CuiEditorConfig } from '../../../editor';\nimport { CuiEditorBlockComponent } from '../../../editor';\nimport { cuiCreateDefaultValidators } from '../../../utils';\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\nimport { CuiUtilityThumbnailComponent } from '../utility-thumbnail';\n\nimport type { CuiInstructionFormGroup, CuiInstructionFormValues } from './instruction-info-form.options';\n\n@Component({\n    selector: 'cui-instruction-info-form',\n    imports: [\n        CuiAccordionModule,\n        CuiButtonModule,\n        CuiEditorBlockComponent,\n        CuiFormFieldModule,\n        CuiGeneralControlErrorHintComponent,\n        CuiHintModule,\n        CuiInputModule,\n        CuiLabelModule,\n        CuiUtilityThumbnailComponent,\n        ReactiveFormsModule,\n        TranslocoDirective\n    ],\n    standalone: true,\n    templateUrl: './instruction-info-form.component.html',\n    styleUrl: './instruction-info-form.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiInstructionInfoFormComponent {\n    private readonly destroy = inject(DestroyRef);\n    private readonly formBuilder = inject(NonNullableFormBuilder);\n    private readonly frameApiService = inject(CuiFrameApiService);\n    private readonly resourceApiService = inject(CuiResourceApiService);\n    private readonly cuiIdService = inject(CuiIdService);\n\n    protected readonly CONTROL_DELAY = 500;\n\n    protected readonly titleId = this.cuiIdService.generate();\n    protected readonly descriptionId = this.cuiIdService.generate();\n    protected readonly form = this.formBuilder.group<CuiInstructionFormGroup>({\n        title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\n        description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\n    });\n\n    protected heading: CuiNullable<string> = null;\n\n    protected readonly isDescriptionEmpty = signal(false);\n    protected readonly editorId = signal<CuiNullable<string>>(null);\n    protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\n\n    public readonly title = input.required<string>();\n    public readonly description = input.required<string>();\n    public readonly framerId = input.required<string>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    public readonly formChanged = output<Partial<CuiInstructionFormValues>>();\n    public readonly isFormValidChanged = output<boolean>();\n\n    protected get controls(): CuiInstructionFormGroup {\n        return this.form.controls;\n    }\n\n    protected get isTitleError(): boolean {\n        return this.controls.title.invalid && this.controls.title.dirty;\n    }\n\n    protected get isDescriptionError(): boolean {\n        return this.controls.description.invalid && this.controls.description.dirty;\n    }\n\n    constructor() {\n        this.initUtilityEffect();\n    }\n\n    protected onEditorEmpty(isEmpty: boolean): void {\n        this.isDescriptionEmpty.set(isEmpty);\n        this.isFormValidChanged.emit(this.checkFormValidation());\n    }\n\n    private initUtilityEffect(): void {\n        const effectRef = effect(() => {\n            const title = this.title();\n\n            if (!title) {\n                return;\n            }\n\n            this.initFormSubscriptions();\n            this.initFrameFragments();\n            effectRef.destroy();\n        });\n    }\n\n    private initFormSubscriptions(): void {\n        this.form.setValue({ title: this.title(), description: this.description() }, { emitEvent: false });\n\n        this.form.statusChanges\n            .pipe(takeUntilDestroyed(this.destroy))\n            .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\n\n        this.form.valueChanges\n            .pipe(\n                takeUntilDestroyed(this.destroy),\n                startWith(this.form.value),\n                pairwise(),\n                debounceTime(this.CONTROL_DELAY),\n                map(([prev, current]) => this.compareFormValues([prev, current]))\n            )\n            .subscribe((value) => {\n                if (!Object.keys(value).length) {\n                    return;\n                }\n\n                this.formChanged.emit(value);\n            });\n    }\n\n    private initFrameFragments(): void {\n        const frameId = this.framerId();\n\n        if (!frameId) {\n            return;\n        }\n\n        this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\n            frame.fragments.forEach((fragment) => {\n                if (fragment.type === FragmentType.jText) {\n                    this.editorId.set(fragment?.id);\n                }\n\n                if (fragment.type === FragmentType.resourceFile) {\n                    this.setResourceFile(fragment as ResourceFragment);\n                }\n            });\n        });\n    }\n\n    private compareFormValues([\n        prevGroup,\n        currentGruop\n    ]: Partial<CuiInstructionFormValues>[]): Partial<CuiInstructionFormValues> {\n        const keys = Object.keys(currentGruop) as (keyof CuiInstructionFormValues)[];\n        const changedFields: Record<string, unknown> = {};\n\n        keys.forEach((key) => {\n            const prev = prevGroup[key];\n            const current = currentGruop[key];\n\n            if (prev === current || this.controls[key].invalid) {\n                return;\n            }\n\n            changedFields[key] = current;\n        });\n\n        return changedFields;\n    }\n\n    private setResourceFile(resource: ResourceFragment): void {\n        if (!resource.fileId) {\n            this.thumbnail.set({ ...resource });\n\n            return;\n        }\n\n        this.resourceApiService.get(resource.fileId, this.config().requestOptions)\n            .pipe(\n                takeUntilDestroyed(this.destroy),\n                map((url) => URL.createObjectURL(url))\n            )\n            .subscribe((url) => {\n                this.thumbnail.set({ ...resource, resource: url });\n\n                if (!url || resource?.name?.split('.').pop() !== 'mp4') {\n                    return;\n                }\n\n                this.getCaptureFromVideo(url);\n            });\n    }\n\n    private getCaptureFromVideo(url: string, file?: File): void {\n        takeCaptureFromVideo(url).then((capture) => {\n            this.thumbnail.update((prev) => ({\n                ...prev!,\n                name: (file?.name ?? prev?.name)!,\n                resource: capture\n            }));\n        });\n    }\n\n    private checkFormValidation(): boolean {\n        return !this.isDescriptionEmpty() && !this.form.invalid;\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <section class=\"content\">\n        <cui-form-field>\n            <label\n                cuiLabel\n                [isRequired]=\"true\"\n                [for]=\"titleId\"\n            >\n                {{ t('TITLE') }}\n            </label>\n\n            <cui-input-text\n                [cuiTextFieldId]=\"titleId\"\n                [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n                [cuiTextFieldIsError]=\"isTitleError\"\n                [formControl]=\"form.controls.title\"\n            />\n\n            @if (isTitleError) {\n                <cui-general-control-error-hint\n                    [control]=\"form.controls.title\"\n                    [isVisible]=\"true\"\n                />\n            }\n        </cui-form-field>\n\n        <cui-form-field>\n            <label\n                cuiLabel\n                [isRequired]=\"true\"\n                [for]=\"descriptionId\"\n            >\n                {{ t('SHORT_DESCRIPTION') }}\n            </label>\n\n            <cui-input-text\n                [cuiTextFieldId]=\"descriptionId\"\n                cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n                [cuiTextFieldIsError]=\"isDescriptionError\"\n                [formControl]=\"form.controls.description\"\n            />\n\n            @if (isDescriptionError) {\n                <cui-general-control-error-hint\n                    [control]=\"form.controls.description\"\n                    [isVisible]=\"true\"\n                />\n            }\n        </cui-form-field>\n\n        <cui-utility-thumbnail\n            [context]=\"config().requestOptions\"\n            [framerId]=\"framerId()\"\n            [(thumbnail)]=\"thumbnail\"\n        />\n\n        @if (editorId(); as editorId) {\n            <cui-editor-block\n                [title]=\"form.controls.title.value || title()\"\n                [config]=\"config()\"\n                [editorId]=\"editorId\"\n                [required]=\"true\"\n                class=\"editor\"\n                (editorEmpty)=\"onEditorEmpty($event)\"\n            />\n        }\n    </section>\n</ng-container>\n","import type { ElementRef, OnInit } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    inject,\n    input,\n    model,\n    output,\n    signal,\n    untracked,\n    viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instruction, StorageObject, TreeStruct } from '@cuby-ui/api';\nimport { CuiTreeStructNavigatorApiService, MovingType, TreeStructType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService } from '@cuby-ui/cdk';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport type { Observable, Subscription } from 'rxjs';\nimport { finalize, forkJoin } from 'rxjs';\n\nimport {\n    CuiBadgeModule,\n    CuiButtonModule,\n    CuiDialogModule,\n    CuiFormFieldModule,\n    CuiLabelModule,\n    CuiSvgModule\n} from '../../../components';\nimport { CuiEditorConfig } from '../../../editor';\nimport { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';\nimport type { CuiInstructionFormValues } from '../instruction-info-form';\nimport { CuiInstructionInfoFormComponent } from '../instruction-info-form';\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityModalService } from '../utility-modal';\n\n@Component({\n    selector: 'cui-instruction-info',\n    imports: [\n        CuiBadgeModule,\n        CuiButtonModule,\n        CuiCategoriesComponent,\n        CuiDialogModule,\n        CuiFormFieldModule,\n        CuiInstructionInfoFormComponent,\n        CuiLabelModule,\n        CuiSvgModule,\n        TranslocoModule\n    ],\n    standalone: true,\n    templateUrl: './instruction-info.component.html',\n    styleUrls: ['./instruction-info.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CuiSelectedCategoryService]\n})\nexport class CuiInstructionInfoComponent implements OnInit {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly translocoService = inject(TranslocoService);\n    private readonly cuiIdService = inject(CuiIdService);\n    private readonly cuiCategoriesModalService = inject(CuiSelectedCategoryService);\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n    private readonly instructionApiService = inject<UtilityModalService<Instruction>>(UTILITY_MODAL_SERVICE_TOKEN);\n\n    protected readonly TYPE = TreeStructType.Instruction;\n\n    private subscription!: Subscription;\n    private skipCategoryChange = false;\n\n    protected readonly categoryId = this.cuiIdService.generate();\n\n    protected readonly category = this.cuiCategoriesModalService.category;\n    protected readonly isFormValid = signal(false);\n    protected readonly prevCategoryId = signal<CuiNullable<string>>(null);\n    protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\n    protected readonly labelColor = computed(() =>\n        this.category()?.title ? 'var(--cui-base-900)' : 'var(--cui-base-400)'\n    );\n    protected readonly selectTitle = computed(\n        () => this.category()?.title || this.translocoService.translate('SELECT') + '...'\n    );\n\n    protected readonly element = viewChild<ElementRef<HTMLElement>>('scrollContent');\n\n    public readonly instruction = model<StorageObject<Instruction>>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    public readonly validationChanged = output<boolean>();\n    public readonly instructionCreated = output<string>();\n\n    constructor() {\n        this.initConfigEffect();\n        this.initCategoryEffect();\n    }\n\n    public ngOnInit(): void {\n        this.initCategory();\n    }\n\n    protected onFormChanged(values: Partial<CuiInstructionFormValues>, instructionId: string): void {\n        const actions: Record<keyof CuiInstructionFormValues, (value: string) => Observable<void>> = {\n            title: (title: string) => this.changeTitle(title, instructionId),\n            description: (description: string) => this.changeDescription(description, instructionId)\n        };\n\n        forkJoin(\n            Object.keys(values).map((key) =>\n                actions[key as keyof CuiInstructionFormValues](values[key as keyof CuiInstructionFormValues] || '')\n            )\n        )\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe();\n    }\n\n    protected onFormValidationChanged(isValid: boolean): void {\n        this.isFormValid.set(isValid);\n        this.validationChanged.emit(isValid);\n    }\n\n    private initCategoryEffect(): void {\n        effect(() => {\n            const category = this.category();\n            const storageObjectInstruction = untracked(this.instruction);\n\n            if (!category || this.skipCategoryChange) {\n                this.skipCategoryChange = false;\n\n                return;\n            }\n\n            if (storageObjectInstruction) {\n                this.changeCategory(category.id, storageObjectInstruction.id);\n\n                return;\n            }\n\n            this.createInstruction(category.id);\n        });\n    }\n\n    private initConfigEffect(): void {\n        effect(() => {\n            const element = this.element()?.nativeElement;\n\n            if (!element) {\n                return;\n            }\n\n            this.editorConfig.set({ ...this.config(), element });\n        });\n    }\n\n    private initCategory(): void {\n        const storageObjectId = this.instruction()?.id;\n\n        if (!storageObjectId) {\n            return;\n        }\n\n        this.treeStructNavigatorApiService\n            .getCategory(storageObjectId, TreeStructType.Instruction, this.config().requestOptions)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((category) => {\n                this.skipCategoryChange = true;\n                this.prevCategoryId.set(category.id);\n                this.cuiCategoriesModalService.setCurrentCategory(category as TreeStruct);\n            });\n    }\n\n    private changeCategory(categoryId: string, targetId: string): void {\n        const prevCategoryId = untracked(this.prevCategoryId);\n\n        if (!prevCategoryId) {\n            return;\n        }\n\n        this.subscription?.unsubscribe();\n        this.subscription = this.treeStructNavigatorApiService\n            .moveElement({\n                type: MovingType.TARGET_TREE_STRUCT,\n                movableItemId: targetId,\n                treeStructTargetItemId: categoryId,\n                treeStructMovableItemId: prevCategoryId\n            }, this.config().requestOptions)\n            .subscribe(() => this.prevCategoryId.set(categoryId));\n    }\n\n    private createInstruction(categoryId: string): void {\n        this.instructionCreated.emit(categoryId);\n        this.prevCategoryId.set(categoryId);\n    }\n\n    private changeTitle(value: string, instructionId: string): Observable<void> {\n        return this.instructionApiService.changeTitle(instructionId, value, this.config().requestOptions).pipe(\n            finalize(() =>\n                this.instruction.update((prev) => ({\n                    ...prev!,\n                    storageElement: { ...prev!.storageElement, title: value }\n                }))\n            )\n        );\n    }\n\n    private changeDescription(value: string, instructionId: string): Observable<void> {\n        if (!this.instructionApiService.changeDescription) {\n            throw new Error('Change description not implemented');\n        }\n\n        return this.instructionApiService.changeDescription(instructionId, value, this.config().requestOptions).pipe(\n            finalize(() =>\n                this.instruction.update((prev) => ({\n                    ...prev!,\n                    storageElement: { ...prev!.storageElement, shortDescription: value }\n                }))\n            )\n        );\n    }\n}\n","<div\n    class=\"wrapper\"\n    *transloco=\"let t\"\n>\n    <div\n        #scrollContent\n        class=\"content content_scrollable\"\n    >\n        <div class=\"category\">\n            <cui-form-field>\n                <label\n                    cuiLabel\n                    [for]=\"categoryId\"\n                    [isRequired]=\"true\"\n                >\n                    {{ t('SELECT_CATEGORY') }}\n                </label>\n                <cui-categories\n                    [buttonId]=\"categoryId\"\n                    [treeStructType]=\"TYPE\"\n                >\n                    <div class=\"select\">\n                        <span [style.color]=\"labelColor()\">\n                            {{ selectTitle() }}\n                        </span>\n\n                        <cui-svg icon=\"cuiIconChevronDown\" />\n                    </div>\n                </cui-categories>\n            </cui-form-field>\n        </div>\n\n        @let instructionData = instruction();\n        @let editorConfigData = editorConfig();\n\n        @if (editorConfigData && instructionData) {\n            <cui-instruction-info-form\n                [config]=\"editorConfigData\"\n                [title]=\"instructionData.storageElement.title\"\n                [description]=\"instructionData.storageElement.shortDescription\"\n                [framerId]=\"instructionData.storageElement.framerInstructionId\"\n                class=\"utility\"\n                (isFormValidChanged)=\"onFormValidationChanged($event)\"\n                (formChanged)=\"onFormChanged($event, instructionData.id)\"\n            />\n        }\n    </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instruction, StorageObject } from '@cuby-ui/api';\n\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../../components';\nimport { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';\nimport { CuiUtilityModalCreateComponent } from '../utility-modal-create';\nimport { CuiInstructionInfoComponent } from '../../../instruction-info';\nimport { CuiEditorConfig } from '../../../../../editor';\n\n@Component({\n    imports: [CuiButtonModule, CuiSvgModule, CuiUtilityModalCreateComponent, CuiInstructionInfoComponent],\n    standalone: true,\n    templateUrl: './instruction-modal-create.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiInstructionModalCreateComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n    private readonly instructionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\n\n    private isCreated = false;\n\n    protected readonly tools = this.cuiDialogContext.data.tools;\n    protected readonly header = this.cuiDialogContext.data.header;\n\n    private readonly _instruction = computed(() => signal(this.initialUtility()));\n\n    protected readonly isFormValid = signal(false);\n    protected readonly instruction = computed(() => this._instruction()());\n\n    public readonly initialUtility = input.required<StorageObject<Instruction>>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    protected onInstructionCreated(storageNodeId: string): void {\n        if (this.isCreated || this.initialUtility()) {\n            return;\n        }\n\n        this.instructionApiService\n            .createUtility(storageNodeId)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((instruction) => {\n                this.isCreated = true;\n                this._instruction().set(instruction as StorageObject<Instruction>);\n            });\n    }\n}\n","<cui-utility-modal-create [initialUtility]=\"instruction()\">\n    <cui-instruction-info\n        [instruction]=\"instruction()\"\n        [config]=\"config()\"\n        (validationChanged)=\"isFormValid.set($event)\"\n        (instructionCreated)=\"onInstructionCreated($event)\"\n    />\n</cui-utility-modal-create>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport type { CuiImgUrl } from '../../../interfaces';\n\n@Component({\n    selector: 'cui-utility-readonly-thumbnail',\n    imports: [],\n    standalone: true,\n    templateUrl: './utility-readonly-thumbnail.component.html',\n    styleUrl: './utility-readonly-thumbnail.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUtilityReadonlyThumbnailComponent {\n    public readonly thumbnailUrl = input.required<CuiImgUrl>();\n    public readonly isVideo = input(false);\n}\n","@let url = thumbnailUrl();\n\n@if (url?.src; as src) {\n    @if (isVideo()) {\n        <video\n            class=\"thumbnail\"\n            [src]=\"src\"\n            controls\n        ></video>\n    } @else {\n        <img\n            class=\"thumbnail\"\n            [src]=\"src\"\n            [alt]=\"url?.name\"\n        />\n    }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { map, of, type Subscription } from 'rxjs';\n\nimport { CuiEmptyStateComponent } from '../../../components';\nimport type { CuiEditorConfig } from '../../../editor';\nimport { CuiEditorComponent } from '../../../editor';\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\n\n@Component({\n    selector: 'cui-criterion-readonly-info',\n    imports: [CuiEditorComponent, CuiEmptyStateComponent, AsyncPipe, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\n    standalone: true,\n    templateUrl: './criterion-readonly-info.component.html',\n    styleUrl: './criterion-readonly-info.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCriterionReadonlyInfoComponent {\n    private readonly hostElement = inject(ElementRef).nativeElement;\n    private readonly frameApiService = inject(CuiFrameApiService);\n    private readonly resourceApiService = inject(CuiResourceApiService);\n\n    private subscription!: Subscription;\n\n    protected isVideo = false;\n    protected editorConfig!: CuiEditorConfig;\n\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\n    protected readonly resource = signal<CuiNullable<ResourceFragment>>(null);\n\n    protected readonly thumbnailUrl = computed(() => {\n        const resource = this.resource();\n\n        if (!resource?.fileId) {\n            return of(null);\n        }\n\n        return this.resourceApiService.get(resource.fileId, this.config().requestOptions).pipe(map((url) => {\n            return {\n                src: URL.createObjectURL(url),\n                name: resource.name || resource.type\n            };\n        }));\n    });\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\n\n    public readonly framerId = input.required<string>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    constructor() {\n        this.initConfigEffect();\n        this.initFramerIdEffect();\n    }\n\n    private initConfigEffect(): void {\n        effect(() => {\n            this.editorConfig = { readOnly: true, element: this.hostElement, ...this.config() };\n        });\n    }\n\n    private initFramerIdEffect(): void {\n        effect(() => {\n            const framerId = this.framerId();\n\n            if (!framerId) {\n                return;\n            }\n\n            this.subscription?.unsubscribe();\n            this.initFrameFragments();\n        });\n    }\n\n    private initFrameFragments(): void {\n        const frameId = this.framerId();\n\n        this.jText.set(null);\n        this.resource.set(null);\n\n        if (!frameId) {\n            return;\n        }\n\n        const fragmentActions = {\n            [FragmentType.jText]: (fragment: Fragment): void => {\n                this.jText.set(fragment as JTextFragment);\n            },\n            [FragmentType.resourceFile]: (fragment: Fragment): void => {\n                this.resource.set(fragment as ResourceFragment);\n            }\n        };\n\n        this.subscription = this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\n            frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (jText()) {\n        @if (!isDescriptionEmpty()) {\n            @if (thumbnailUrl() | async; as thumbnailUrl) {\n                <cui-utility-readonly-thumbnail\n                    [thumbnailUrl]=\"thumbnailUrl\"\n                    [isVideo]=\"isVideo\"\n                />\n            }\n\n            @if (jText()?.id; as id) {\n                <div class=\"wrapper\">\n                    <cui-editor\n                        class=\"editor\"\n                        [editorApiId]=\"id\"\n                        [config]=\"editorConfig\"\n                    />\n                </div>\n            }\n        } @else {\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n        }\n    }\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\nimport { StorageObject } from '@cuby-ui/api';\n\nimport { CUI_DIALOG_CONTEXT, CuiBadgeModule, CuiButtonModule, CuiSvgModule } from '../../../../../components';\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement, UtilityModalService } from '../../utility-modal.options';\n\n@Component({\n    selector: 'cui-readonly-utility-modal',\n    imports: [CuiBadgeModule, CuiButtonModule, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\n    standalone: true,\n    templateUrl: './readonly-utility-modal.component.html',\n    styleUrl: './readonly-utility-modal.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiReadonlyUtilityModalComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n    private readonly utilityModalService = inject<UtilityModalService<UtilityElement>>(UTILITY_MODAL_SERVICE_TOKEN);\n\n    protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n    protected readonly tools = this.cuiDialogContext.data.tools;\n    protected readonly header = this.cuiDialogContext.data.header;\n\n    protected readonly isLoading = signal(false);\n\n    public readonly utility = input.required<StorageObject<UtilityElement>>();\n\n    public readonly utilityUnbinded = output<StorageObject<UtilityElement>>();\n\n    protected onClose(): void {\n        this.cuiDialogContext.completeWith();\n    }\n\n    protected onUnbind(): void {\n        this.isLoading.set(true);\n        this.utilityModalService\n            .unbindUtility(this.utility().id)\n            .pipe(\n                takeUntilDestroyed(this.destroyRef),\n                finalize(() => this.isLoading.set(false))\n            )\n            .subscribe((utility: StorageObject<UtilityElement>) => {\n                this.utilityUnbinded.emit(utility);\n            });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <header class=\"header\">\n        <ng-container [ngTemplateOutlet]=\"header\" />\n\n        <cui-badge\n            color=\"violet\"\n            class=\"badge\"\n        >\n            <cui-svg\n                cuiBadgeIcon\n                class=\"icon\"\n                icon=\"cuiIconVariant\"\n            />\n            {{ t('INSERTED') }}\n        </cui-badge>\n\n        <button\n            type=\"button\"\n            cuiButton\n            appearance=\"ghost\"\n            icon=\"cuiIconX\"\n            class=\"button\"\n            (click)=\"onClose()\"\n        ></button>\n    </header>\n\n    <ng-content />\n\n    <div class=\"actions\">\n        <button\n            type=\"button\"\n            #button\n            cuiButton\n            size=\"sm\"\n            icon=\"cuiIconLinkBroken\"\n            appearance=\"action-violet\"\n            [isLoaderShown]=\"isLoading()\"\n            (click)=\"onUnbind()\"\n        >\n            {{ t('UNBIND') }}\n        </button>\n    </div>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal, viewChild } from '@angular/core';\nimport type { Criterion, CuiApiContext, StorageObject } from '@cuby-ui/api';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport {\n    CUI_DIALOG_CONTEXT,\n    CuiBadgeModule,\n    CuiButtonModule,\n    CuiRenderDynamicComponentsService,\n    CuiSvgModule\n} from '../../../../../components';\nimport { CuiCriterionReadonlyInfoComponent } from '../../../criterion-readonly-info';\nimport { UtilityElement } from '../../utility-modal.options';\nimport { CuiCriterionModalCreateComponent } from '../criterion-modal-create';\nimport { CuiReadonlyUtilityModalComponent } from '../readonly-utility-modal';\n\n@Component({\n    selector: 'cui-readonly-criterion-modal',\n    imports: [\n        CuiBadgeModule,\n        CuiButtonModule,\n        CuiSvgModule,\n        TranslocoDirective,\n        CuiReadonlyUtilityModalComponent,\n        CuiCriterionReadonlyInfoComponent\n    ],\n    standalone: true,\n    templateUrl: './readonly-criterion-modal.component.html',\n    styleUrl: './readonly-criterion-modal.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiReadonlyCriterionModalComponent {\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n    private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n    protected readonly tools = this.cuiDialogContext.data.tools;\n    protected readonly header = this.cuiDialogContext.data.header;\n\n    protected readonly isLoading = signal(false);\n    protected readonly config = computed(() => ({\n        tools: this.tools(),\n        requestOptions: this.context(),\n        element: this.element()?.nativeElement\n    }));\n    protected readonly framerId = computed(() => this.criterion().storageElement.framerCriterionId);\n\n    public readonly element = viewChild<ElementRef<HTMLElement>>('scrollContainer');\n\n    public readonly criterion = input.required<StorageObject<Criterion>>();\n    public readonly context = input.required<CuiApiContext>();\n\n    protected onUnbind(criterion: StorageObject<UtilityElement>): void {\n        this.cuiRenderDynamicComponentsService.closeAll();\n        this.cuiRenderDynamicComponentsService.open({\n            component: CuiCriterionModalCreateComponent,\n            inputs: { criterion }\n        });\n    }\n}\n","<cui-readonly-utility-modal\n    [utility]=\"criterion()\"\n    (utilityUnbinded)=\"onUnbind($event)\"\n>\n    <ng-container *transloco=\"let t\">\n        <div\n            #scrollContainer\n            class=\"info\"\n        >\n            <h3 class=\"title\">{{ criterion().storageElement.title }}</h3>\n\n            <cui-criterion-readonly-info\n                [framerId]=\"framerId()\"\n                [config]=\"config()\"\n                class=\"info__block\"\n            />\n        </div>\n    </ng-container>\n</cui-readonly-utility-modal>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService, CuiResourceApiService, FragmentType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { map, of, type Subscription } from 'rxjs';\n\nimport { CuiEmptyStateComponent } from '../../../components';\nimport type { CuiEditorConfig } from '../../../editor';\nimport { CuiEditorComponent } from '../../../editor';\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\n\n@Component({\n    selector: 'cui-instruction-readonly-info',\n    imports: [CuiEditorComponent, CuiEmptyStateComponent, AsyncPipe, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\n    standalone: true,\n    templateUrl: './instruction-readonly-info.component.html',\n    styleUrl: './instruction-readonly-info.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiInstructionReadonlyInfoComponent {\n    private readonly hostElement = inject(ElementRef).nativeElement;\n    private readonly frameApiService = inject(CuiFrameApiService);\n    private readonly resourceApiService = inject(CuiResourceApiService);\n\n    private subscription!: Subscription;\n\n    protected isVideo = false;\n    protected editorConfig!: CuiEditorConfig;\n\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\n    protected readonly resource = signal<CuiNullable<ResourceFragment>>(null);\n\n    protected readonly thumbnailUrl = computed(() => {\n        const resource = this.resource();\n\n        if (!resource?.fileId) {\n            return of(null);\n        }\n\n        return this.resourceApiService.get(resource.fileId, this.config().requestOptions).pipe(map((url) => {\n            return {\n                src: URL.createObjectURL(url),\n                name: resource.name || resource.type\n            };\n        }));\n    });\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\n\n    public readonly framerId = input.required<string>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    constructor() {\n        this.initConfigEffect();\n        this.initFramerIdEffect();\n    }\n\n    private initConfigEffect(): void {\n        effect(() => {\n            this.editorConfig = { readOnly: true, element: this.hostElement, ...this.config() };\n        });\n    }\n\n    private initFramerIdEffect(): void {\n        effect(() => {\n            const framerId = this.framerId();\n\n            if (!framerId) {\n                return;\n            }\n\n            this.subscription?.unsubscribe();\n            this.initFrameFragments();\n        });\n    }\n\n    private initFrameFragments(): void {\n        const frameId = this.framerId();\n\n        this.jText.set(null);\n        this.resource.set(null);\n\n        if (!frameId) {\n            return;\n        }\n\n        const fragmentActions = {\n            [FragmentType.jText]: (fragment: Fragment): void => {\n                this.jText.set(fragment as JTextFragment);\n            },\n            [FragmentType.resourceFile]: (fragment: Fragment): void => {\n                this.resource.set(fragment as ResourceFragment);\n            }\n        };\n\n        this.subscription = this.frameApiService.getFrame(frameId, this.config().requestOptions).subscribe((frame) => {\n            frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (jText()) {\n        @if (!isDescriptionEmpty()) {\n            @if (thumbnailUrl() | async; as thumbnailUrl) {\n                <cui-utility-readonly-thumbnail\n                    [thumbnailUrl]=\"thumbnailUrl\"\n                    [isVideo]=\"isVideo\"\n                />\n            }\n\n            @if (jText()?.id; as id) {\n                <div class=\"wrapper\">\n                    <cui-editor\n                        class=\"editor\"\n                        [editorApiId]=\"id\"\n                        [config]=\"editorConfig\"\n                    />\n                </div>\n            }\n        } @else {\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n        }\n    }\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, signal, viewChild } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { CuiApiContext, Instruction, StorageObject } from '@cuby-ui/api';\n\nimport {\n    CUI_DIALOG_CONTEXT,\n    CuiBadgeModule,\n    CuiButtonModule,\n    CuiRenderDynamicComponentsService,\n    CuiSvgModule\n} from '../../../../../components';\nimport { CuiInstructionReadonlyInfoComponent } from '../../../instruction-readonly-info';\nimport { CuiInstructionModalCreateComponent } from '../instruction-modal-create';\nimport { UtilityElement } from '../../utility-modal.options';\nimport { CuiReadonlyUtilityModalComponent } from '../readonly-utility-modal';\n\n@Component({\n    selector: 'cui-readonly-instruction-modal',\n    imports: [\n        CuiBadgeModule,\n        CuiButtonModule,\n        CuiSvgModule,\n        CuiInstructionReadonlyInfoComponent,\n        TranslocoDirective,\n        CuiReadonlyUtilityModalComponent\n    ],\n    standalone: true,\n    templateUrl: './readonly-instruction-modal.component.html',\n    styleUrl: './readonly-instruction-modal.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiReadonlyInstructionModalComponent {\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n    private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n    protected readonly tools = this.cuiDialogContext.data.tools;\n    protected readonly header = this.cuiDialogContext.data.header;\n\n    protected readonly isLoading = signal(false);\n    protected readonly config = computed(() => ({\n        tools: this.tools(),\n        requestOptions: this.context(),\n        element: this.element()?.nativeElement\n    }));\n    protected readonly framerId = computed(() => this.instruction().storageElement.framerInstructionId);\n\n    public readonly element = viewChild<ElementRef<HTMLElement>>('scrollContainer');\n\n    public readonly instruction = input.required<StorageObject<Instruction>>();\n    public readonly context = input.required<CuiApiContext>();\n\n    protected onUnbind(instruction: StorageObject<UtilityElement>): void {\n        this.cuiRenderDynamicComponentsService.closeAll();\n        this.cuiRenderDynamicComponentsService.open({\n            component: CuiInstructionModalCreateComponent,\n            inputs: { initialUtility: instruction }\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <cui-readonly-utility-modal\n        [utility]=\"instruction()\"\n        (utilityUnbinded)=\"onUnbind($event)\"\n    >\n        <div\n            #scrollContainer\n            class=\"info\"\n        >\n            <h3 class=\"title\">{{ instruction().storageElement.title }}</h3>\n\n            <cui-instruction-readonly-info\n                [framerId]=\"framerId()\"\n                [config]=\"config()\"\n                class=\"info__block\"\n            />\n        </div>\n    </cui-readonly-utility-modal>\n</ng-container>\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport {\n    CUI_DIALOG_CONTEXT,\n    CuiRenderDynamicComponentsComponent,\n    CuiRenderDynamicComponentsService\n} from '../../../components';\n\n@Component({\n    selector: 'cui-utility-modal',\n    imports: [CuiRenderDynamicComponentsComponent],\n    standalone: true,\n    templateUrl: './utility-modal.component.html',\n    styleUrl: './utility-modal.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CuiRenderDynamicComponentsService]\n})\nexport class CuiUtilityModalComponent {\n    private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n    private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n    protected readonly utility = this.cuiDialogContext.data.utility;\n    protected readonly initialComponent = this.cuiDialogContext.data.initialComponent;\n\n    constructor() {\n        this.cuiRenderDynamicComponentsService.open({\n            component: this.initialComponent,\n            inputs: { initialUtility: this.utility }\n        });\n    }\n}\n","<cui-render-dynamic-components />\n","import type { ElementRef, OnInit } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    inject,\n    input,\n    model,\n    output,\n    signal,\n    untracked,\n    viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Criterion, CuiTreeStructNavigatorApiService, MovingType, StorageObject, TreeStruct, TreeStructType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService } from '@cuby-ui/cdk';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport type { Observable, Subscription } from 'rxjs';\nimport { finalize, forkJoin } from 'rxjs';\n\nimport {\n    CuiBadgeModule,\n    CuiButtonModule,\n    CuiDialogModule,\n    CuiFormFieldModule,\n    CuiLabelModule,\n    CuiSvgModule\n} from '../../../components';\nimport type { CuiEditorConfig } from '../../../editor';\nimport { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';\nimport { CuiCriterionFormValues, CuiCriterionInfoFormComponent } from '../criterion-info-form';\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityModalService } from '../utility-modal';\n\n@Component({\n    selector: 'cui-criterion-info',\n    imports: [\n        CuiBadgeModule,\n        CuiButtonModule,\n        CuiCategoriesComponent,\n        CuiDialogModule,\n        CuiFormFieldModule,\n        CuiCriterionInfoFormComponent,\n        CuiLabelModule,\n        CuiSvgModule,\n        TranslocoModule\n    ],\n    standalone: true,\n    templateUrl: './criterion-info.component.html',\n    styleUrls: ['./criterion-info.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [CuiSelectedCategoryService]\n})\nexport class CuiCriterionInfoComponent implements OnInit {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly translocoService = inject(TranslocoService);\n    private readonly cuiIdService = inject(CuiIdService);\n    private readonly cuiCategoriesModalService = inject(CuiSelectedCategoryService);\n    private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n    private readonly criterionApiService = inject<UtilityModalService<Criterion>>(UTILITY_MODAL_SERVICE_TOKEN);\n\n    protected readonly TYPE = TreeStructType.Instruction;\n\n    private subscription!: Subscription;\n    private skipCategoryChange = false;\n\n    protected readonly categoryId = this.cuiIdService.generate();\n\n    protected readonly category = this.cuiCategoriesModalService.category;\n    protected readonly isFormValid = signal(false);\n    protected readonly prevCategoryId = signal<CuiNullable<string>>(null);\n    protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\n    protected readonly labelColor = computed(() =>\n        this.category()?.title ? 'var(--cui-base-900)' : 'var(--cui-base-400)'\n    );\n    protected readonly selectTitle = computed(\n        () => this.category()?.title || this.translocoService.translate('SELECT') + '...'\n    );\n\n    protected readonly element = viewChild<ElementRef<HTMLElement>>('scrollContent');\n\n    public readonly criterion = model<StorageObject<Criterion>>();\n    public readonly config = input.required<CuiEditorConfig>();\n\n    public readonly validationChanged = output<boolean>();\n    public readonly criterionCreated = output<string>();\n\n    constructor() {\n        this.initConfigEffect();\n        this.initCategoryEffect();\n    }\n\n    public ngOnInit(): void {\n        this.initCategory();\n    }\n\n    protected onFormChanged(values: Partial<CuiCriterionFormValues>, criterionId: string): void {\n        const actions: Record<keyof CuiCriterionFormValues, (value: string) => Observable<void>> = {\n            title: (title: string) => this.changeTitle(title, criterionId),\n            description: (description: string) => this.changeDescription(description, criterionId)\n        };\n\n        forkJoin(\n            Object.keys(values).map((key) =>\n                actions[key as keyof CuiCriterionFormValues](values[key as keyof CuiCriterionFormValues] || '')\n            )\n        )\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe();\n    }\n\n    protected onFormValidationChanged(isValid: boolean): void {\n        this.isFormValid.set(isValid);\n        this.validationChanged.emit(isValid);\n    }\n\n    private initCategoryEffect(): void {\n        effect(() => {\n            const category = this.category();\n            const storageObjectCriterion = untracked(this.criterion);\n\n            if (!category || this.skipCategoryChange) {\n                this.skipCategoryChange = false;\n\n                return;\n            }\n\n            if (storageObjectCriterion) {\n                this.changeCategory(category.id, storageObjectCriterion.id);\n\n                return;\n            }\n\n            this.createCriterion(category.id);\n        });\n    }\n\n    private initConfigEffect(): void {\n        effect(() => {\n            const element = this.element()?.nativeElement;\n\n            if (!element) {\n                return;\n            }\n\n            this.editorConfig.set({ ...this.config(), element });\n        });\n    }\n\n    private initCategory(): void {\n        const storageObjectId = this.criterion()?.id;\n\n        if (!storageObjectId) {\n            return;\n        }\n\n        this.treeStructNavigatorApiService\n            .getCategory(storageObjectId, TreeStructType.Criteria, this.config().requestOptions)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((category) => {\n                this.skipCategoryChange = true;\n                this.prevCategoryId.set(category.id);\n                this.cuiCategoriesModalService.setCurrentCategory(category as TreeStruct);\n            });\n    }\n\n    private changeCategory(categoryId: string, targetId: string): void {\n        const prevCategoryId = untracked(this.prevCategoryId);\n\n        if (!prevCategoryId) {\n            return;\n        }\n\n        this.subscription?.unsubscribe();\n        this.subscription = this.treeStructNavigatorApiService\n            .moveElement({\n                type: MovingType.TARGET_TREE_STRUCT,\n                movableItemId: targetId,\n                treeStructTargetItemId: categoryId,\n                treeStructMovableItemId: prevCategoryId\n            }, this.config().requestOptions)\n            .subscribe(() => this.prevCategoryId.set(categoryId));\n    }\n\n    private createCriterion(categoryId: string): void {\n        this.criterionCreated.emit(categoryId);\n        this.prevCategoryId.set(categoryId);\n    }\n\n    private changeTitle(value: string, criterionId: string): Observable<void> {\n        return this.criterionApiService.changeTitle(criterionId, value, this.config().requestOptions).pipe(\n            finalize(() =>\n                this.criterion.update((prev) => ({\n                    ...prev!,\n                    storageElement: { ...prev!.storageElement, title: value }\n                }))\n            )\n        );\n    }\n\n    private changeDescription(value: string, criterionId: string): Observable<void> {\n        if (!this.criterionApiService.changeDescription) {\n            throw new Error('Change description not implemented');\n        }\n\n        return this.criterionApiService.changeDescription(criterionId, value, this.config().requestOptions).pipe(\n            finalize(() =>\n                this.criterion.update((prev) => ({\n                    ...prev!,\n                    storageElement: { ...prev!.storageElement, shortDescription: value }\n                }))\n            )\n        );\n    }\n}\n","<div\n    class=\"wrapper\"\n    *transloco=\"let t\"\n>\n    <div\n        #scrollContent\n        class=\"content content_scrollable\"\n    >\n        <div class=\"category\">\n            <cui-form-field>\n                <label\n                    cuiLabel\n                    [for]=\"categoryId\"\n                    [isRequired]=\"true\"\n                >\n                    {{ t('SELECT_CATEGORY') }}\n                </label>\n                <cui-categories\n                    [buttonId]=\"categoryId\"\n                    [treeStructType]=\"TYPE\"\n                >\n                    <div class=\"select\">\n                        <span [style.color]=\"labelColor()\">\n                            {{ selectTitle() }}\n                        </span>\n\n                        <cui-svg icon=\"cuiIconChevronDown\" />\n                    </div>\n                </cui-categories>\n            </cui-form-field>\n        </div>\n\n        @let criterionData = criterion();\n        @let editorConfigData = editorConfig();\n\n        @if (editorConfigData && criterionData) {\n            <cui-criterion-info-form\n                [config]=\"editorConfigData\"\n                [title]=\"criterionData.storageElement.title\"\n                [description]=\"criterionData.storageElement.shortDescription\"\n                [framerId]=\"criterionData.storageElement.framerCriterionId\"\n                class=\"utility\"\n                (isFormValidChanged)=\"onFormValidationChanged($event)\"\n                (formChanged)=\"onFormChanged($event, criterionData.id)\"\n            />\n        }\n    </div>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { CuiCardWrapperComponent } from '../../../../../components';\nimport { CuiSvgModule } from '../../../../../components';\n\n@Component({\n    selector: 'cui-select-modal-folder',\n    imports: [CuiSvgModule, CuiCardWrapperComponent, NgTemplateOutlet],\n    templateUrl: './select-modal-folder.component.html',\n    styleUrl: './select-modal-folder.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSelectModalFolderComponent {\n    protected readonly icon = computed(() => (this.isOpen() ? 'cuiIconFolderOpen' : 'cuiIconFolder'));\n\n    public readonly title = input.required<string>();\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n    public readonly isOpen = input(false);\n}\n","<cui-card-wrapper class=\"wrapper\">\n    <ng-container [ngTemplateOutlet]=\"buttonSlot()\" />\n\n    <cui-svg\n        [icon]=\"icon()\"\n        class=\"icon\"\n    />\n\n    <span class=\"title\">{{ title() }}</span>\n</cui-card-wrapper>\n","import { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { debounceTime } from 'rxjs';\n\nimport { CuiIconButtonModule } from '../../../../../components';\nimport { CuiInputModule } from '../../../../../components';\n\n@Component({\n    selector: 'cui-select-modal-search',\n    imports: [CuiInputModule, CuiIconButtonModule, ReactiveFormsModule],\n    templateUrl: './select-modal-search.component.html',\n    styleUrl: './select-modal-search.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSelectModalSearchComponent implements OnInit {\n    private readonly destroyRef = inject(DestroyRef);\n\n    public readonly searchControl = input<FormControl>(new FormControl(''));\n    public readonly controlDelay = input<number>(700);\n\n    public readonly searchStringChanged = output<string>();\n\n    public ngOnInit(): void {\n        this.searchControl()\n            .valueChanges.pipe(debounceTime(this.controlDelay()), takeUntilDestroyed(this.destroyRef))\n            .subscribe((value) => this.searchStringChanged.emit(value));\n    }\n}\n","<cui-input-text\n    cuiTextFieldPlaceholder=\"Search...\"\n    cuiTextFieldIconLeft=\"cuiIconSearch\"\n    [formControl]=\"searchControl()\"\n    class=\"search\"\n/>\n<button\n    class=\"filters\"\n    type=\"button\"\n    cuiIconButton\n    icon=\"cuiIconFiltersLines\"\n></button>\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport type { CuiSelectModalDialogData } from './select-modal.interfaces';\n\nimport type { CuiDialogContext } from '../../../components';\nimport { CUI_DIALOG_CONTEXT, CuiDialogModule } from '../../../components';\nimport { CuiButtonModule } from '../../../components';\nimport { CuiIconButtonModule } from '../../../components';\nimport { CuiInputModule } from '../../../components';\n\n@Component({\n    imports: [\n        CuiButtonModule,\n        CuiDialogModule,\n        CuiIconButtonModule,\n        CuiInputModule,\n        NgComponentOutlet,\n        TranslocoDirective\n    ],\n    templateUrl: './select-modal.component.html',\n    styleUrl: './select-modal.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSelectModalComponent {\n    protected readonly context = inject<CuiDialogContext<CuiSelectModalDialogData>>(CUI_DIALOG_CONTEXT);\n\n    private readonly data = this.context.data;\n    protected readonly heading = this.data.heading;\n    protected readonly leftData = this.data.leftData;\n    protected readonly rightData = this.data.rightData;\n\n    protected onCancel(): void {\n        this.context.completeWith();\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <div class=\"content\">\n        <header\n            class=\"header\"\n            cuiDialogHeader\n            [heading]=\"heading\"\n            (closed)=\"onCancel()\"\n        ></header>\n        <div class=\"wrapper\">\n            <div class=\"left-block\">\n                @if (leftData) {\n                    <ng-container\n                        [ngComponentOutlet]=\"leftData.component\"\n                        [ngComponentOutletInputs]=\"leftData.inputs\"\n                    />\n                }\n            </div>\n            <div class=\"right-block\">\n                @if (rightData) {\n                    <ng-container\n                        [ngComponentOutlet]=\"rightData.component\"\n                        [ngComponentOutletInputs]=\"rightData.inputs\"\n                    />\n                }\n            </div>\n        </div>\n    </div>\n</ng-container>\n","import type { Signal } from '@angular/core';\nimport { Injectable, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport type { CuiSelectModalElement } from './select-modal.interfaces';\n\n@Injectable()\nexport class CuiSelectModalService {\n    private readonly selectedElementSignal = signal<CuiNullable<CuiSelectModalElement>>(null);\n\n    public readonly selectedElement = this.selectedElementSignal.asReadonly();\n\n    public getSelectedData<T>(): Signal<CuiNullable<T>> {\n        return this.selectedElementSignal.asReadonly() as Signal<CuiNullable<T>>;\n    }\n\n    public set(element: CuiSelectModalElement): void {\n        this.selectedElementSignal.set(element);\n    }\n\n    public delete(): void {\n        this.selectedElementSignal.set(null);\n    }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Observable } from 'rxjs';\n\nexport const CUI_STORAGE_LIST_SERVICE_TOKEN = new InjectionToken<CuiStorageListService>('STORAGE_LIST_SERVICE_TOKEN');\n\nexport interface CuiStorageListService<T = CuiStorageBase> {\n    getChildren?(children: CuiStorage<T>, prevChildrens: CuiStorage<T>[]): Observable<CuiStorage<T>[]>;\n    getElements?(element: CuiStorage<T>, prevElements: T[]): Observable<T[]>;\n}\n\nexport interface CuiStorageBase {\n    readonly id: string;\n    readonly name?: string;\n    readonly title?: string;\n}\n\nexport interface CuiStorage<T = CuiStorageBase> extends CuiStorageBase {\n    readonly elements?: T[];\n    readonly children: CuiStorage<T>[] | string[];\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    effect,\n    forwardRef,\n    inject,\n    input,\n    signal,\n    untracked\n} from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { finalize } from 'rxjs';\n\nimport { CuiSvgModule } from '../../../../../components';\nimport { CuiStorageListComponent } from '../../index';\nimport type { CuiStorage, CuiStorageBase } from '../../storage-list.options';\nimport { CUI_STORAGE_LIST_SERVICE_TOKEN } from '../../storage-list.options';\n\n@Component({\n    selector: 'li[cuiStorageListItem]',\n    imports: [CuiLetDirective, CuiSvgModule, NgTemplateOutlet, forwardRef(() => CuiStorageListComponent)],\n    templateUrl: './storage-list-item.component.html',\n    styleUrl: './storage-list-item.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiStorageListItemComponent<T = CuiStorageBase> {\n    private readonly storageListService = inject(CUI_STORAGE_LIST_SERVICE_TOKEN);\n\n    private isLoadingChildren = false;\n    private isLoadingElements = false;\n\n    protected readonly storageChildren = signal<CuiStorage[]>([]);\n    protected readonly storageElements = signal<CuiStorageBase[]>([]);\n    protected readonly areContentOpened = signal(false);\n    protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\n        this.areContentOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\n    );\n    protected readonly hasContent = computed(\n        () => this.storage().children.length || this.storageChildren().length || this.storageElements().length\n    );\n\n    public readonly storage = input.required<CuiStorage<T>>();\n    public readonly elementSlot = input<TemplateRef<unknown>>();\n    public readonly itemSlot = input<TemplateRef<unknown>>();\n\n    constructor() {\n        this.initStorageChildrenEffect();\n        this.initStorageElementsEffect();\n    }\n\n    protected onToggleChildren(event: MouseEvent): void {\n        event.preventDefault();\n\n        this.areContentOpened.update((prevAreChildrenOpened) => !prevAreChildrenOpened);\n    }\n\n    private initStorageChildrenEffect(): void {\n        effect(() => {\n            const storage = this.storage() as CuiStorage<CuiStorageBase>;\n\n            this.areContentOpened();\n            untracked(this.setChildren.bind(this, storage));\n        });\n    }\n\n    private initStorageElementsEffect(): void {\n        effect(() => {\n            const storage = this.storage() as CuiStorage<CuiStorageBase>;\n\n            untracked(this.setElements.bind(this, storage));\n        });\n    }\n\n    private setChildren(storage: CuiStorage<CuiStorageBase>): void {\n        const storageChildren = storage.children;\n\n        if (!storageChildren.length) {\n            this.storageChildren.set([]);\n        }\n\n        if (this.isLoadingChildren || !this.areContentOpened()) {\n            return;\n        }\n\n        if (typeof storageChildren[0] !== 'string') {\n            this.storageChildren.set(storageChildren as CuiStorage[]);\n\n            return;\n        }\n\n        this.isLoadingChildren = true;\n        this.storageListService\n            .getChildren?.(storage, this.storageChildren())\n            .pipe(finalize(() => (this.isLoadingChildren = false)))\n            .subscribe((response) => this.storageChildren.set(response));\n    }\n\n    private setElements(storage: CuiStorage<CuiStorageBase>): void {\n        const storageElements = storage.elements;\n\n        if (this.isLoadingElements) {\n            return;\n        }\n\n        if (!storageElements?.length) {\n            this.storageElements.set([]);\n\n            return;\n        }\n\n        if (this.storageElements().length) {\n            this.storageElements.set(storageElements);\n\n            return;\n        }\n\n        this.isLoadingElements = true;\n        this.storageListService\n            .getElements?.(storage, this.storageElements())\n            .pipe(finalize(() => (this.isLoadingElements = false)))\n            .subscribe((response) => this.storageElements.set(response));\n    }\n}\n","<ng-container *cuiLet=\"storage() as storage\">\n    <div class=\"wrapper\">\n        <ng-template #openCloseButton>\n            @if (hasContent()) {\n                <button\n                    type=\"button\"\n                    class=\"button\"\n                    (click)=\"onToggleChildren($event)\"\n                >\n                    <cui-svg\n                        [icon]=\"openCloseButtonIcon()\"\n                        color=\"var(--cui-base-500)\"\n                    />\n                </button>\n            }\n        </ng-template>\n\n        @if (itemSlot(); as item) {\n            <ng-container\n                *ngTemplateOutlet=\"\n                    item;\n                    context: {\n                        $implicit: storage,\n                        openCloseButton,\n                        areContentOpened: areContentOpened(),\n                        hasContent: hasContent()\n                    }\n                \"\n            />\n        }\n\n        <div\n            class=\"content\"\n            [class.content_hidden]=\"!areContentOpened()\"\n        >\n            <div class=\"lists\">\n                @if (storageChildren().length) {\n                    <cui-storage-list\n                        [storages]=\"storageChildren()\"\n                        [elementSlot]=\"elementSlot()\"\n                        [itemSlot]=\"itemSlot()\"\n                    />\n                }\n                @if (storageElements().length && elementSlot()) {\n                    <ul class=\"list\">\n                        @for (element of storageElements(); track element.id) {\n                            <li class=\"item\">\n                                <ng-container\n                                    *ngTemplateOutlet=\"\n                                        elementSlot()!;\n                                        context: { $implicit: element, storage: storage }\n                                    \"\n                                />\n                            </li>\n                        }\n                    </ul>\n                }\n            </div>\n        </div>\n    </div>\n</ng-container>\n","import type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { CuiStorageListItemComponent } from './components';\nimport type { CuiStorage } from './storage-list.options';\n\n@Component({\n    selector: 'cui-storage-list',\n    imports: [CuiStorageListItemComponent],\n    templateUrl: './storage-list.component.html',\n    styleUrl: './storage-list.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiStorageListComponent<T> {\n    public readonly storages = input.required<CuiStorage<T>[]>();\n    public readonly elementSlot = input<TemplateRef<unknown>>();\n    public readonly itemSlot = input<TemplateRef<unknown>>();\n}\n","<ul class=\"list\">\n    @for (storage of storages(); track storage.id) {\n        <li\n            cuiStorageListItem\n            [storage]=\"storage\"\n            [elementSlot]=\"elementSlot()\"\n            [itemSlot]=\"itemSlot()\"\n            class=\"item\"\n        ></li>\n    }\n</ul>\n","import { computed, inject, Injectable, Signal, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport type { CuiUserCompany } from '@cuby-ui/api';\nimport { UserCompanyApiService } from '@cuby-ui/api';\nimport { CuiActivityService } from '../user-action-context.option';\nimport { CuiUserCompanyActivity } from '@cuby-ui/api/platform/models/user-company-api.options';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CuiActivityBaseService implements CuiActivityService {\n    private readonly userCompanyApiService = inject(UserCompanyApiService);\n\n    private readonly companiesSignal = signal<CuiUserCompany[]>([]);\n\n    public readonly companies = this.companiesSignal.asReadonly();\n\n    public initActivityData(): void {\n        this.userCompanyApiService\n            .getMyCompanies()\n            .pipe(takeUntilDestroyed())\n            .subscribe((response) => this.companiesSignal.set(response));\n    }\n\n    public checkIsCurrentActivity(activityId: string): boolean {\n        return false;\n    }\n\n    public checkIsCurrentCompany(companyId: string): boolean {\n        return false;\n    }\n}\n","import { inject, Injectable, signal } from '@angular/core';\n\nimport type { CuiActivityService } from '../user-action-context.option';\nimport { CuiAuthService } from '../../../../providers';\nimport type { CuiExchangeTokenSession } from '../../../../services';\nimport { CuiActivityBaseService } from './activity-base.service';\n\n@Injectable({\n    providedIn: 'any'\n})\nexport class CuiActivityImplService extends CuiActivityBaseService implements CuiActivityService {\n    private readonly cuiAuthService = inject(CuiAuthService);\n\n    private readonly authData = this.cuiAuthService.getAccessTokenData<CuiExchangeTokenSession>();\n    private readonly currentActivityId = this.authData.employee_session?.activityId;\n    private readonly currentCompanyId = this.authData.employee_session?.companyId;\n    private isCheckActivity = false;\n\n    public override checkIsCurrentActivity(activityId: string): boolean {\n        if (this.currentActivityId === activityId) {\n            this.isCheckActivity = true;\n        }\n\n        return this.currentActivityId === activityId;\n    }\n\n    public override checkIsCurrentCompany(companyId: string): boolean {\n        if (this.isCheckActivity) {\n            return false;\n        }\n\n        return this.currentCompanyId === companyId;\n    }\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { CuiUserCompany } from '@cuby-ui/api';\nimport { CuiUserCompanyActivity } from '@cuby-ui/api/platform/models/user-company-api.options';\n\nexport const CUI_ACTIVITY_SERVICE_TOKEN = new InjectionToken<CuiActivityService>('ACTIVITY_SERVICE_TOKEN');\n\nexport interface CuiActivityData {\n    readonly companies: Signal<CuiUserCompany[]>;\n}\n\nexport interface CuiActivityService extends CuiActivityData {\n    initActivityData(): void;\n    checkIsCurrentActivity(activityId: string): boolean;\n    checkIsCurrentCompany(companyId: string): boolean;\n}\n\nexport interface LinkConfig {\n    userLink: string;\n    adminLink: string;\n}\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input } from '@angular/core';\nimport { CuiApiUrl, CuiTokenExchangeType, CuiUserCompanyActivity, CuiUserCompanyActivityType } from '@cuby-ui/api';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CuiLetterBoxComponent } from '../../../../components';\nimport { CuiSvgModule } from '../../../../components';\nimport { CuiAuthService } from '../../../../providers';\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from '../user-action-context.option';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { CuiTooltipDirective } from '../../../../directives';\n\n@Component({\n    selector: 'cui-activity-item',\n    standalone: true,\n    imports: [CuiLetterBoxComponent, CuiSvgModule, CuiTooltipDirective],\n    templateUrl: './activity-item.component.html',\n    styleUrl: './activity-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.selected]': 'isSelected()'\n    }\n})\nexport class CuiActivityItemComponent {\n    private readonly transloco = inject(TranslocoService);\n    private readonly destroy = inject(DestroyRef);\n    private readonly cuiAuthService = inject(CuiAuthService);\n    private readonly cuiActivityService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\n\n    protected readonly isSelected = computed(() =>\n        this.cuiActivityService.checkIsCurrentActivity(this.activity().activityId)\n    );\n    protected readonly letterBackgroundColor = computed(() => {\n        const licenseType = this.activity().type;\n\n        return licenseType === CuiUserCompanyActivityType.Manufacture\n            ? 'var(--cui-orange-500)'\n            : 'var(--cui-light-blue-500)';\n    });\n\n    public readonly activity = input.required<CuiUserCompanyActivity>();\n    public readonly companyId = input.required<string>();\n\n    protected readonly typeCompany = computed(() => {\n        return this.transloco.translate(this.activity().type);\n    });\n\n    protected onGoToActivity(): void {\n        if (this.isSelected()) {\n            return;\n        }\n\n        this.cuiAuthService\n            .exchangeToken({\n                type: CuiTokenExchangeType.Activity,\n                activityId: this.activity().activityId,\n                companyId: this.companyId()\n            })\n            .pipe(takeUntilDestroyed(this.destroy))\n            .subscribe(() => {\n                const type = this.activity().type;\n                const activityMap = {\n                    [CuiUserCompanyActivityType.Developer]: CuiApiUrl.Project,\n                    [CuiUserCompanyActivityType.Manufacture]: CuiApiUrl.Manufacturing\n                };\n\n                window.location.href = `${window.location.origin}/${activityMap[type]}`;\n            });\n    }\n}\n","<div\n    class=\"wrapper\"\n    (click)=\"onGoToActivity()\"\n    [cuiTooltip]=\"activity().description\"\n>\n    <button\n        type=\"button\"\n        class=\"activity-button\"\n    >\n        <cui-letter-box\n            [letter]=\"activity().description[0]\"\n            [shape]=\"'rounded'\"\n            [backgroundColor]=\"letterBackgroundColor()\"\n            size=\"md\"\n        />\n        <div class=\"text\">\n            <span class=\"title\">{{ activity().description }}</span>\n            <span class=\"sub-title\">{{ typeCompany() }}</span>\n        </div>\n    </button>\n\n    @if (isSelected()) {\n        <div class=\"icon-wrapper\">\n            <cui-svg\n                [icon]=\"'cuiIconCheck'\"\n                color=\"var(--cui-info)\"\n            />\n        </div>\n    }\n</div>\n","import { Component, computed, DestroyRef, inject, input } from '@angular/core';\nimport { CuiTokenExchangeType, CuiUserCompany } from '@cuby-ui/api';\nimport { CuiLetterBoxComponent, CuiSvgModule } from '../../../../components';\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from '../user-action-context.option';\n\nimport { CuiAuthService } from '../../../../providers';\nimport { CuiTokenData, CuiTokenRole } from '../../../../services';\nimport { TranslocoPipe } from '@jsverse/transloco';\nimport { CuiTooltip } from '../../../../directives';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'cui-company-item',\n    standalone: true,\n    imports: [CuiLetterBoxComponent, CuiSvgModule, TranslocoPipe, CuiTooltip],\n    templateUrl: './company-item.component.html',\n    styleUrl: './company-item.component.scss',\n    host: {\n        '[class.selected]': 'isSelected()'\n    }\n})\nexport class CompanyItemComponent {\n    private readonly cuiAuthService = inject(CuiAuthService);\n    private readonly cuiActivityCompanyService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\n\n    private readonly COMPANY: string = 'company';\n    private readonly destroy = inject(DestroyRef);\n\n    protected readonly isSelected = computed(() =>\n        this.cuiActivityCompanyService.checkIsCurrentCompany(this.company().companyId)\n    );\n\n    protected readonly urlCompanyTemplate = computed(() => {\n        const origin = window.location.origin;\n        const userBasePath = '/cuby-platform/user/works';\n        const adminBasePath = '/cuby-platform/admin/companies/edit';\n\n        return {\n            userLink: `${origin}${userBasePath}/${this.COMPANY}/{id}/company-structure`,\n            adminLink: `${origin}${adminBasePath}/{id}`\n        };\n    });\n\n    public readonly company = input.required<CuiUserCompany>();\n    public readonly selected = input(false);\n\n    public getRoles(): string[] {\n        const token = this.cuiAuthService.getAccessTokenData<CuiTokenData>();\n\n        return token.realm_access.roles;\n    }\n\n    public checkIsAdmin(): boolean {\n        const roles = this.getRoles();\n\n        return roles.includes(CuiTokenRole.Admin);\n    }\n\n    protected onGoToCompany(): void {\n        if (this.isSelected()) {\n            return;\n        }\n\n        this.cuiAuthService\n            .exchangeToken({\n                type: CuiTokenExchangeType.Company,\n                companyId: this.company().companyId\n            })\n            .pipe(takeUntilDestroyed(this.destroy))\n            .subscribe(() => {\n                const userBasePath = '/cuby-platform/user/works';\n                const adminBasePath = '/cuby-platform/admin/companies/edit';\n\n                const basePath = this.checkIsAdmin() ? adminBasePath : userBasePath;\n                const companyPath = this.checkIsAdmin()\n                    ? `/${this.company().companyId}`\n                    : `/${this.COMPANY}/${this.company().companyId}/company-structure`;\n\n                window.location.href = `${window.location.origin}${basePath}${companyPath}`;\n            });\n    }\n}\n","<div\n    class=\"title-company\"\n    (click)=\"onGoToCompany()\"\n    [cuiTooltip]=\"company().name\"\n>\n    <button\n        type=\"button\"\n        class=\"company-button\"\n    >\n        <cui-letter-box\n            [letter]=\"company().name[0]\"\n            [backgroundColor]=\"'var(--cui-orange-500)'\"\n            size=\"md\"\n        />\n        <div class=\"text\">\n            <span class=\"title\">{{ company().name }}</span>\n            <span class=\"sub-title\">{{ 'COMPANY' | transloco }}</span>\n        </div>\n    </button>\n\n    @if (isSelected()) {\n        <div class=\"icon-wrapper\">\n            <cui-svg\n                [icon]=\"'cuiIconCheck'\"\n                color=\"var(--cui-info)\"\n            />\n        </div>\n    }\n</div>\n","import {Component, inject} from '@angular/core';\nimport {CuiSvgModule} from \"../../../components/svg\";\nimport {CuiTheme, CuiThemeService} from \"../../../services\";\nimport {AsyncPipe} from \"@angular/common\";\nimport {TranslocoDirective} from \"@jsverse/transloco\";\n\n@Component({\n  selector: 'cui-button-change-theme',\n  standalone: true,\n    imports: [\n        CuiSvgModule,\n        AsyncPipe,\n        TranslocoDirective\n    ],\n  templateUrl: './button-change-theme.component.html',\n  styleUrl: './button-change-theme.component.scss'\n})\nexport class ButtonChangeThemeComponent {\n    private readonly cuiThemeService = inject(CuiThemeService);\n    protected readonly theme$ = this.cuiThemeService.asObservable();\n\n    protected onChangeTheme(theme: CuiTheme): void {\n        this.cuiThemeService.next(theme);\n    }\n}\n","@let currentTheme = theme$ | async;\n\n<ng-container *transloco=\"let t\">\n<button type=\"button\"\n        class=\"custom-button\">\n    <div class=\"content-button\">\n        <cui-svg icon=\"cuiIconPaletteSm\" />\n        <div class=\"text-and-sub-button\">\n            {{ t('SWITCH_THEME') }}\n            <div class=\"group-sub-button\">\n                <div\n                    [class.button-select]=\"currentTheme === 'dark'\"\n                    class=\"container-sub-button\"\n                >\n                    <cui-svg\n                        icon=\"cuiIconMoon\"\n                        color=\"var(--cui-base-500)\"\n                        (click)=\"onChangeTheme('dark')\"\n                    />\n                </div>\n                <div\n                    [class.button-select]=\"currentTheme === 'light'\"\n                    class=\"container-sub-button\"\n                >\n                    <cui-svg\n                        icon=\"cuiIconSun\"\n                        color=\"var(--cui-base-500)\"\n                        (click)=\"onChangeTheme('light')\"\n                    />\n                </div>\n            </div>\n        </div>\n    </div>\n</button>\n</ng-container>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, output, signal } from '@angular/core';\nimport { LangDefinition, TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\nimport { CuiApiUrl } from '@cuby-ui/api';\n\nimport {\n    CuiButtonModule,\n    CuiContextMenuModule,\n    CuiDropdownDirective,\n    CuiDropdownWrapperComponent,\n    CuiLetterBoxComponent,\n    CuiSvgModule\n} from '../../../components';\nimport type { CuiExchangeTokenSession } from '../../../services';\nimport { CuiActivityItemComponent } from './activity-item';\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from './user-action-context.option';\nimport { CuiAuthService } from '../../../providers';\nimport { CompanyItemComponent } from './company-item';\nimport { CuiUserCompanyActivity } from '@cuby-ui/api/platform/models/user-company-api.options';\nimport { ButtonChangeThemeComponent } from \"../button-change-theme\";\n\n@Component({\n    selector: 'cui-user-action-context-menu',\n    standalone: true,\n    imports: [\n        TranslocoDirective,\n        CuiSvgModule,\n        CuiDropdownDirective,\n        CuiDropdownWrapperComponent,\n        CuiLetterBoxComponent,\n        CuiButtonModule,\n        CuiContextMenuModule,\n        CuiActivityItemComponent,\n        AsyncPipe,\n        CompanyItemComponent,\n        CuiActivityItemComponent,\n        ButtonChangeThemeComponent,\n        ButtonChangeThemeComponent\n    ],\n    templateUrl: './user-action-context-menu.component.html',\n    styleUrl: './user-action-context-menu.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUserActionContextMenuComponent {\n    private readonly translocoService = inject(TranslocoService);\n    private readonly cuiWindow = inject(CUI_WINDOW);\n    private readonly cuiAuthService = inject(CuiAuthService);\n    private readonly cuiActivityService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\n\n    private readonly authData = this.cuiAuthService.getAccessTokenData<CuiExchangeTokenSession>();\n\n    protected readonly langs = this.translocoService.getAvailableLangs();\n    protected readonly email = this.authData.email;\n    protected readonly fullName = this.authData.name;\n\n    protected readonly lang$ = this.translocoService.langChanges$;\n\n    protected readonly isOpen = signal(false);\n    protected readonly companies = this.cuiActivityService.companies;\n\n    public readonly currentActivityChange = output<CuiUserCompanyActivity | null>();\n\n    constructor() {\n        this.cuiActivityService.initActivityData();\n        this.findCurrentActivity();\n    }\n\n    protected onLogout(): void {\n        this.cuiAuthService.logOut();\n    }\n\n    protected onToggleOpenState(open: boolean): void {\n        this.isOpen.set(open);\n    }\n\n    protected onGoToPlatform(): void {\n        this.cuiWindow.location.href = `${this.cuiWindow.location.origin}/${CuiApiUrl.Platform}`;\n    }\n\n    protected onChangeLang(lang: string | LangDefinition): void {\n        if (typeof lang === 'string') {\n            this.translocoService.setActiveLang(lang);\n\n            return;\n        }\n\n        this.translocoService.setActiveLang(lang.label);\n    }\n\n    protected findCurrentActivity(): void {\n        effect(() => {\n            const companies = this.companies();\n            for (const company of companies) {\n                for (const activity of company.contexts) {\n                    if (this.cuiActivityService.checkIsCurrentActivity(activity.activityId)) {\n                        return this.currentActivityChange.emit(activity);\n                    }\n                }\n            }\n            this.currentActivityChange.emit(null);\n        });\n    }\n}\n","@let currentLang = lang$ | async;\n\n<ng-container *transloco=\"let t\">\n    <button\n        type=\"button\"\n        [cuiDropdown]=\"content\"\n        class=\"select\"\n        (isOpened)=\"onToggleOpenState($event)\"\n    >\n        <ng-content />\n    </button>\n\n    <ng-template #content>\n        @if (isOpen()) {\n            <cui-dropdown-wrapper\n                width=\"300px\"\n                maxHeight=\"500px\"\n            >\n                <div\n                    #dropdownContainer\n                    class=\"wrapper\"\n                >\n                    <div class=\"block-name\">\n                        <div>\n                            <cui-letter-box\n                                [letter]=\"fullName[0]\"\n                                [shape]=\"'rounded'\"\n                                size=\"md\"\n                            />\n                        </div>\n                        <div>\n                            <ul class=\"title-text\">\n                                {{\n                                    fullName\n                                }}\n                            </ul>\n                            <ul class=\"subtitle-text\">\n                                {{\n                                    email\n                                }}\n                            </ul>\n                        </div>\n                    </div>\n                    <div\n                        class=\"wrapper-platform block-platform\"\n                        (click)=\"onGoToPlatform()\"\n                    >\n                        <cui-svg\n                            icon=\"cuiIconLogo\"\n                            color=\"var(--cui-base-900)\"\n                        />\n                        <div>{{ t('CUBY_PLATFORM') }}</div>\n                    </div>\n                    <div class=\"list-company\">\n                        @for (company of companies(); track company.id) {\n                            <cui-company-item [company]=\"company\" />\n\n                            <div class=\"list-activity\">\n                                @for (activity of company.contexts; track activity) {\n                                    <cui-activity-item\n                                        class=\"activity-item\"\n                                        [activity]=\"activity\"\n                                        [companyId]=\"company.companyId\"\n                                    />\n                                } @empty {\n                                    <div class=\"sub-title-text\">{{ t('YOU_DONT_HAVE_ACTIVITY_IN_THIS_COMPANY') }}</div>\n                                }\n                            </div>\n                        } @empty {\n                            <div class=\"sub-title-text\">{{ t('YOU_DONT_HAVE_COMPANY') }}</div>\n                        }\n                    </div>\n                    <div class=\"block-button\">\n                       <cui-button-change-theme />\n                        <button type=\"button\">\n                            <div class=\"content-button\">\n                                <cui-svg icon=\"cuiIconGlobeSm\" />\n                                <div class=\"text-and-sub-button\">\n                                    {{ t('LANGUAGE') }}\n                                    <div class=\"group-sub-button\">\n                                        @for (lang of langs; track lang) {\n                                            <div\n                                                [class.container-sub-button__select]=\"currentLang === lang\"\n                                                class=\"container-sub-button\"\n                                                (click)=\"onChangeLang(lang)\"\n                                            >\n                                                {{ lang }}\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        </button>\n                        <button\n                            type=\"button\"\n                            (click)=\"onLogout()\"\n                        >\n                            <div class=\"content-button\">\n                                <cui-svg icon=\"cuiIconLogOutSm\" />\n                                <div class=\"text-and-sub-button\">{{ t('LOG_OUT') }}</div>\n                            </div>\n                        </button>\n                    </div>\n                </div>\n            </cui-dropdown-wrapper>\n        }\n    </ng-template>\n</ng-container>\n","import { Component, inject, input, output } from '@angular/core';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { CuiContextMenuItem } from '../../../interfaces';\nimport { CuiTooltip } from '../../../directives';\nimport { AlertHintComponent } from '../../../components/alert-hint/alert-hint.component';\nimport { OptionsButtonComponent } from '../../../components/options-button/options-button.component';\n\n@Component({\n    selector: 'cui-assignee-role-item',\n    standalone: true,\n    imports: [CuiTooltip, AlertHintComponent, TranslocoDirective, OptionsButtonComponent],\n    templateUrl: './assignee-role-item.component.html',\n    styleUrl: './assignee-role-item.component.scss'\n})\nexport class AssigneeRoleItemComponent {\n    private readonly translocoService = inject(TranslocoService);\n\n    protected readonly OPTIONS: CuiContextMenuItem[] = [\n        {\n            label: this.translocoService.translate('DELETE'),\n            icon: 'cuiIconTrash',\n            color: 'var(--cui-danger)',\n            command: () => this.deleteClicked.emit()\n        }\n    ];\n\n    public readonly role = input.required<string>();\n    public readonly readonly = input(false);\n    public readonly empty = input(false);\n\n    public readonly deleteClicked = output();\n}\n","<ng-container *transloco=\"let t\">\n    <span></span>\n    <span\n        class=\"title\"\n        [cuiTooltip]=\"role()\"\n    >\n        {{ role() }}\n    </span>\n\n    @if (!readonly()) {\n        @if (empty()) {\n            <cui-alert-hint\n                status=\"warning\"\n                [tooltipText]=\"t('NO_ENTITIES_ADDED')\"\n            />\n        }\n        <cui-options-button [options]=\"OPTIONS\" />\n    } @else {\n        <span></span>\n    }\n</ng-container>\n","import { Component, ElementRef, input, output, TemplateRef, viewChild } from '@angular/core';\nimport {\n    CuiButtonModule,\n    CuiTabDirective,\n    CuiTabsComponent,\n    CuiTabsServiceImpl,\n    provideCuiTabs\n} from '../../../components';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n    selector: 'cui-assignee-roles-tabs',\n    standalone: true,\n    imports: [CuiTabsComponent, CuiTabDirective, TranslocoDirective, CuiButtonModule, NgTemplateOutlet],\n    templateUrl: './assignee-roles-tabs.component.html',\n    styleUrl: './assignee-roles-tabs.component.scss',\n    providers: [provideCuiTabs(CuiTabsServiceImpl)]\n})\nexport class AssigneeRolesTabsComponent {\n    protected readonly SCROLL_LENGTH = 200;\n\n    protected readonly buttons = viewChild.required<ElementRef<HTMLDivElement>>('buttons');\n\n    public readonly tabs = input.required<unknown[]>();\n    public readonly itemSlot = input.required<TemplateRef<unknown>>();\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n    public readonly contentSlot = input.required<TemplateRef<unknown>>();\n    public readonly selectedIndex = input(0);\n    public readonly selectedIndexChange = output<number>();\n\n    protected trackTab(index: number, tab: unknown): unknown {\n        if (tab && typeof tab === 'object' && 'id' in (tab as object)) {\n            return (tab as { id: unknown }).id;\n        }\n\n        return `tab_${index}`;\n    }\n\n    protected onSelectTab(index: number): void {\n        this.selectedIndexChange.emit(index);\n    }\n\n    protected onScrollLeft(): void {\n        const buttonsElement = this.buttons().nativeElement;\n\n        buttonsElement.scrollTo({\n            left: buttonsElement.scrollLeft - this.SCROLL_LENGTH,\n            behavior: 'smooth'\n        });\n    }\n\n    protected onScrollRight(): void {\n        const buttonsElement = this.buttons().nativeElement;\n\n        buttonsElement.scrollTo({\n            left: buttonsElement.scrollLeft + this.SCROLL_LENGTH,\n            behavior: 'smooth'\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <cui-tabs\n        class=\"tabs\"\n        [selectedIndex]=\"selectedIndex()\"\n        [headerSlot]=\"headerSlot\"\n    >\n        <ng-template\n            #headerSlot\n            let-buttons\n        >\n            <header class=\"header\">\n                <div\n                    #buttons\n                    class=\"buttons\"\n                >\n                    <ng-container [ngTemplateOutlet]=\"buttons\" />\n                </div>\n                <div class=\"actions\">\n                    @if (tabs().length > 4) {\n                        <button\n                            cuiButton\n                            type=\"button\"\n                            appearance=\"ghost\"\n                            size=\"xxs\"\n                            icon=\"cuiIconChevronLeft\"\n                            (click)=\"onScrollLeft()\"\n                        ></button>\n                        <button\n                            cuiButton\n                            type=\"button\"\n                            appearance=\"ghost\"\n                            size=\"xxs\"\n                            icon=\"cuiIconChevronRight\"\n                            (click)=\"onScrollRight()\"\n                        ></button>\n                    }\n\n                    <ng-container [ngTemplateOutlet]=\"buttonSlot()\" />\n                </div>\n            </header>\n        </ng-template>\n\n        @for (tab of tabs(); track trackTab($index, tab); let i = $index) {\n            <cui-tab\n                [data]=\"tab\"\n                [buttonSlot]=\"cuiButtonSlot\"\n                [contentSlot]=\"cuiContentSlot\"\n                class=\"tab\"\n            >\n                <ng-template\n                    #cuiButtonSlot\n                    let-isActive=\"isActive\"\n                    let-element\n                >\n                    <div\n                        class=\"button\"\n                        [class.button_active]=\"isActive\"\n                        (click)=\"onSelectTab(i)\"\n                        (keyup.enter)=\"onSelectTab(i)\"\n                        role=\"button\"\n                        tabindex=\"0\"\n                    >\n                        <ng-container\n                            [ngTemplateOutlet]=\"itemSlot()\"\n                            [ngTemplateOutletContext]=\"{ $implicit: element }\"\n                        />\n                    </div>\n                </ng-template>\n                <ng-template\n                    #cuiContentSlot\n                    let-element\n                >\n                    <div class=\"content\">\n                        <ng-container\n                            [ngTemplateOutlet]=\"contentSlot()\"\n                            [ngTemplateOutletContext]=\"{ $implicit: element }\"\n                        />\n                    </div>\n                </ng-template>\n            </cui-tab>\n        }\n    </cui-tabs>\n</ng-container>\n","import { Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport { createEditorTools, CuiEditorComponent, CuiEditorConfig } from '../../../editor';\nimport { Subscription } from 'rxjs';\nimport { CuiNullable } from '@cuby-ui/cdk';\nimport {\n    CuiApiContext,\n    CuiFrameApiService,\n    Fragment,\n    FragmentType,\n    JTextFragment,\n    ResourceFragment,\n    SHARED_INSTRUCTION_HTTP_OPTIONS,\n    SHARED_CONSTRUCTION_HTTP_OPTIONS\n} from '@cuby-ui/api';\nimport { ImgUrl } from './utility-info-readonly.options';\nimport { CuiEmptyStateComponent } from '../../../components';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\n@Component({\n    selector: 'cui-utility-info-readonly',\n    standalone: true,\n    imports: [CuiEditorComponent, CuiEmptyStateComponent, TranslocoDirective],\n    templateUrl: './utility-info-readonly.component.html',\n    styleUrl: './utility-info-readonly.component.scss'\n})\nexport class UtilityInfoReadonlyComponent {\n    private readonly hostElement = inject(ElementRef).nativeElement;\n    private readonly frameApiService = inject(CuiFrameApiService);\n\n    private subscription!: Subscription;\n\n    protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\n    protected readonly thumbnailUrl = signal<CuiNullable<ImgUrl>>(null);\n\n    protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\n\n    public readonly environmentUrlForResources = input<string>();\n    public readonly environmentUrlForInstruction = input<string>();\n    public readonly context = signal<CuiApiContext>(SHARED_CONSTRUCTION_HTTP_OPTIONS);\n\n    protected isVideo = false;\n    protected editorConfig!: CuiEditorConfig;\n\n    public readonly framerId = input.required<string>();\n    public readonly element = input<HTMLElement>(this.hostElement);\n\n    constructor() {\n        this.initConfigEffect();\n        this.initFramerIdEffect();\n    }\n\n    private initConfigEffect(): void {\n        effect(\n            () => {\n                this.editorConfig = {\n                    readOnly: true,\n                    tools: createEditorTools(this.checkCurrentTypeUtility()),\n                    element: this.element(),\n                    requestOptions: this.context()\n                };\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private checkCurrentTypeUtility(): string {\n        if (this.environmentUrlForInstruction()) {\n            return this.environmentUrlForInstruction() ?? '';\n        }\n\n        return this.environmentUrlForResources() ?? '';\n    }\n\n    private initFramerIdEffect(): void {\n        effect(\n            () => {\n                const framerId = this.framerId();\n\n                if (!framerId) {\n                    return;\n                }\n\n                this.setContext();\n\n                this.subscription?.unsubscribe();\n                this.initFrameFragments();\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private setContext(): void {\n        if (this.environmentUrlForInstruction()) {\n            this.context.set(SHARED_INSTRUCTION_HTTP_OPTIONS);\n        } else {\n            this.context.set(SHARED_CONSTRUCTION_HTTP_OPTIONS);\n        }\n    }\n\n    private initFrameFragments(): void {\n        const frameId = this.framerId();\n\n        this.jText.set(null);\n        this.thumbnailUrl.set(null);\n\n        if (!frameId) {\n            return;\n        }\n\n        const fragmentActions = {\n            [FragmentType.jText]: (fragment: Fragment): void => {\n                this.jText.set(fragment as JTextFragment);\n            },\n            [FragmentType.resourceFile]: (fragment: Fragment): void => {\n                this.setResourceFile(fragment as ResourceFragment);\n            }\n        };\n\n        this.subscription = this.frameApiService.getFrame(frameId, this.context()).subscribe((frame) => {\n            frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\n        });\n    }\n\n    private setResourceFile(resource: ResourceFragment): void {\n        this.isVideo = resource?.name?.split('.').pop() === 'mp4';\n\n        if (!resource.fileId) {\n            return;\n        }\n\n        this.thumbnailUrl.set({\n            src: `${this.checkCurrentTypeUtility()}/${resource.fileId}`,\n            name: resource.name || resource.type\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (jText()) {\n        @if (!isDescriptionEmpty()) {\n            @if (thumbnailUrl(); as url) {\n                @if (url?.src; as src) {\n                    @if (isVideo) {\n                        <video\n                            class=\"thumbnail\"\n                            [src]=\"src\"\n                            controls\n                        ></video>\n                    } @else {\n                        <img\n                            class=\"thumbnail\"\n                            [src]=\"src\"\n                            [alt]=\"url?.name\"\n                        />\n                    }\n                }\n            }\n            @if (jText()?.id; as id) {\n                <div class=\"wrapper\">\n                    <cui-editor\n                        class=\"editor\"\n                        [editorApiId]=\"id\"\n                        [config]=\"editorConfig\"\n                    />\n                </div>\n            }\n        } @else {\n            <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n        }\n    }\n</ng-container>\n","import { Component, computed, input, OnInit, signal } from '@angular/core';\nimport { Criterion, CuiApiContext, Instruction } from '@cuby-ui/api';\nimport { CuiNullable } from '@cuby-ui/cdk';\nimport {\n    EmptyStateTitle,\n    GetFramerId,\n    SectionStorageElementTypeName,\n    SectionStorageObject\n} from './modal-divided-section.interfaces';\nimport {\n    CuiCardWrapperComponent,\n    CuiEmptyStateComponent,\n    CuiLetterBoxComponent,\n    CuiSvgModule\n} from '../../../components';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { UtilityInfoReadonlyComponent } from '../utility-info-readonly';\n\n@Component({\n    selector: 'cui-modal-divided-section',\n    standalone: true,\n    imports: [\n        CuiSvgModule,\n        CuiEmptyStateComponent,\n        CuiLetterBoxComponent,\n        CuiCardWrapperComponent,\n        TranslocoDirective,\n        UtilityInfoReadonlyComponent\n    ],\n    templateUrl: './modal-divided-section.component.html',\n    styleUrl: './modal-divided-section.component.scss'\n})\nexport class ModalDividedSectionComponent implements OnInit {\n    protected readonly EMPTY_STATE_TITLE: EmptyStateTitle = {\n        CRITERIA: 'ACCEPTANCE_CRITERIA',\n        INSTRUCTION: 'INSTRUCTIONS'\n    };\n    protected readonly GET_FRAMER_ID: GetFramerId = {\n        CRITERIA: (value) => (value as Criterion).framerCriterionId,\n        INSTRUCTION: (value) => (value as Instruction).framerInstructionId\n    };\n\n    protected readonly selectedStorageObject = signal<CuiNullable<SectionStorageObject>>(null);\n    protected readonly selectedFramerId = computed(() => {\n        const selectedStorageObject = this.selectedStorageObject();\n\n        if (!selectedStorageObject) {\n            return;\n        }\n\n        return this.GET_FRAMER_ID[this.storageElementTypeName()](selectedStorageObject.storageElement);\n    });\n\n    protected readonly emptyStateSubtitle = computed(\n        () => `NO_${this.EMPTY_STATE_TITLE[this.storageElementTypeName()]}_TO_VIEW_YET`\n    );\n\n    public readonly storageElementTypeName = input.required<SectionStorageElementTypeName>();\n    public readonly storageObjects = input.required<SectionStorageObject[]>();\n    public readonly environmentUrlForResources = input<string>();\n    public readonly environmentUrlForInstruction = input<string>();\n    public readonly context = input<CuiApiContext>();\n\n    public ngOnInit(): void {\n        this.initSelectedStorageObject();\n    }\n\n    protected onSelect(sectionStorageObject: SectionStorageObject): void {\n        this.selectedStorageObject.set(sectionStorageObject);\n    }\n\n    private initSelectedStorageObject(): void {\n        if (!this.storageObjects().length) {\n            return;\n        }\n\n        this.selectedStorageObject.set(this.storageObjects()?.[0]);\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (storageObjects(); as storageObjects) {\n        @if (storageObjects.length) {\n            <div class=\"block block_left\">\n                <ul class=\"list\">\n                    @for (storageObject of storageObjects; track storageObject.id) {\n                        @if (storageObject.storageElement; as storageElement) {\n                            <li>\n                                <button\n                                    type=\"button\"\n                                    [title]=\"storageElement.title\"\n                                    cuiCardWrapper\n                                    [isSelected]=\"selectedStorageObject()?.id === storageObject.id\"\n                                    (click)=\"onSelect(storageObject)\"\n                                >\n                                    <div class=\"button__content\">\n                                        @switch (storageElementTypeName()) {\n                                            @case ('CRITERIA') {\n                                                <cui-letter-box\n                                                    letter=\"c\"\n                                                    backgroundColor=\"var(--cui-violet-400)\"\n                                                />\n                                            }\n                                            @case ('INSTRUCTION') {\n                                                <cui-svg\n                                                    icon=\"cuiIconFileText\"\n                                                    color=\"var(--cui-base-500)\"\n                                                />\n                                            }\n                                        }\n                                        <span class=\"button__text\">{{ storageElement.title }}</span>\n                                    </div>\n                                </button>\n                            </li>\n                        }\n                    }\n                </ul>\n            </div>\n            <div class=\"block block_right\">\n                @if (selectedStorageObject()?.storageElement; as selectedStorageElement) {\n                    <header class=\"header\">{{ selectedStorageElement.title }}</header>\n                    <cui-utility-info-readonly\n                        [framerId]=\"selectedFramerId()!\"\n                        [environmentUrlForResources]=\"environmentUrlForResources()\"\n                        [environmentUrlForInstruction]=\"environmentUrlForInstruction()\"\n                        class=\"utility-info\"\n                    />\n                }\n            </div>\n        } @else {\n            <cui-empty-state [subtitle]=\"t(emptyStateSubtitle())\" />\n        }\n    }\n</ng-container>\n","import { Component, output } from '@angular/core';\nimport { CuiButtonModule } from '../../../components';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { CuiTooltip } from '../../../directives';\n\n@Component({\n    selector: 'cui-modal-header-inserted-buttons',\n    standalone: true,\n    imports: [CuiButtonModule, TranslocoDirective, CuiTooltip],\n    templateUrl: './modal-header-inserted-buttons.component.html',\n    styleUrl: './modal-header-inserted-buttons.component.scss'\n})\nexport class ModalHeaderInsertedButtonsComponent {\n    public readonly unbindClicked = output();\n\n    protected onUnbind(): void {\n        this.unbindClicked.emit();\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <!-- TODO: добавить переход на категории когда появится страница -->\n    <button\n        cuiButton\n        [cuiTooltip]=\"t('IN_DEVELOPMENT')\"\n        type=\"button\"\n        size=\"sm\"\n        appearance=\"outlined-gray\"\n        iconRight=\"cuiIconExternalLinkSm\"\n        [disabled]=\"true\"\n    >\n        {{ t('VIEW') }}\n    </button>\n    <button\n        cuiButton\n        type=\"button\"\n        size=\"sm\"\n        icon=\"cuiIconLinkBroken\"\n        appearance=\"action\"\n        class=\"cc-violet-action-button\"\n        (click)=\"onUnbind()\"\n    >\n        {{ t('UNBIND') }}\n    </button>\n</ng-container>\n","import { Component, input } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { KeyValuePipe, NgTemplateOutlet } from '@angular/common';\nimport { Content } from './modal-info-tab.options';\n\n@Component({\n    selector: 'cui-modal-info-tab',\n    standalone: true,\n    imports: [TranslocoDirective, NgTemplateOutlet, KeyValuePipe],\n    templateUrl: './modal-info-tab.component.html',\n    styleUrl: './modal-info-tab.component.scss'\n})\nexport class ModalInfoTabComponent {\n    public readonly content = input.required<Content>();\n\n    protected compareFn(): number {\n        return 0;\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <h3 class=\"heading\">{{ t('INFO') }}</h3>\n    <div class=\"wrapper\">\n        @for (option of content() | keyvalue: compareFn; track option.key) {\n            <span class=\"category-title\">{{ t(option.key) }}:</span>\n            <ng-container *ngTemplateOutlet=\"option.value\" />\n        }\n    </div>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport type { ResourceStateService } from './resource-state-service.interface';\n\nexport const CUI_RESOURCE_STATE_SERVICE_TOKEN = new InjectionToken<ResourceStateService>(\n    'CUI_RESOURCE_STATE_SERVICE_TOKEN'\n);\n","import { InjectionToken } from '@angular/core';\nimport { SubjectModalService } from './subject-modal-service.interface';\n\nexport const CUI_SUBJECT_MODAL_SERVICE_TOKEN = new InjectionToken<SubjectModalService>('SubjectModalService');\n","import { InjectionToken } from '@angular/core';\nimport type { UsedElementsService } from './used-elements-service.interface';\n\nexport const CUI_USED_ELEMENTS_SERVICE_TOKEN = new InjectionToken<UsedElementsService>('USED_ELEMENTS_SERVICE');\n","import { InjectionToken } from '@angular/core';\nimport type { UtilityService } from './utility-service.interface';\n\nexport const CUI_UTILITY_SERVICE_TOKEN = new InjectionToken<UtilityService>('CUI_UTILITY_SERVICE_TOKEN');\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiBadgeModule } from '../../../../../components';\nimport { ResourceUtilityTool } from '../../../resources-block';\n\n@Component({\n    selector: 'cc-tool-form-readonly',\n    imports: [CuiBadgeModule, TranslocoDirective],\n    templateUrl: './tool-form-readonly.component.html',\n    styleUrl: './tool-form-readonly.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class._disabled]': 'tool().isDelete'\n    },\n    standalone: true\n})\nexport class ToolFormReadonlyComponent {\n    public readonly tool = input.required<ResourceUtilityTool>();\n}\n","<ng-container *transloco=\"let t\">\n    <td class=\"cc-table__td info custom\">\n        {{ tool().name }}\n\n        @if (tool().isDelete) {\n            <cui-badge\n                class=\"badge\"\n                [size]=\"'sm'\"\n                color=\"red\"\n            >\n                {{ t('DELETED') }}\n            </cui-badge>\n        }\n    </td>\n    <td class=\"cc-table__td custom\">\n        {{ tool().quantity }}\n    </td>\n    <td class=\"cc-table__td custom\">\n        {{ tool().unit }}\n    </td>\n</ng-container>\n","import { LowerCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport type { ConsumableFormValues } from '../../consumable-form.options';\n\n@Component({\n    selector: 'cui-consumable-form-item-readonly',\n    imports: [TranslocoDirective, LowerCasePipe],\n    templateUrl: './consumable-form-item-readonly.component.html',\n    styleUrl: './consumable-form-item-readonly.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ConsumableFormItemReadonlyComponent {\n    public readonly title = input.required<string>();\n    public readonly consumable = input.required<ConsumableFormValues>();\n}\n","@let consumableData = consumable();\n\n<form\n    *transloco=\"let t\"\n    class=\"form\"\n>\n    <span class=\"title\">{{ title() }}</span>\n\n    <div class=\"content\">\n        <div class=\"field\">\n            <span class=\"readonly-item\">{{ t('AMOUNT') }}:</span>\n            <span class=\"readonly-item\">{{ consumableData.quantity }}</span>\n            <span class=\"readonly-item\">{{ consumableData.unit | lowercase }}</span>\n        </div>\n\n        <div class=\"field\">\n            <span class=\"readonly-item\">{{ t('MEASURE') }}:</span>\n            <span class=\"readonly-item\">{{ consumableData.measure.value }}</span>\n            <span class=\"readonly-item\">{{ consumableData.measure.unit | lowercase }}</span>\n        </div>\n    </div>\n</form>\n","export const CUI_DEFAULT_CONTROL_DELAY = 700;\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, input, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { FormGroup } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CuiConsumptionUnitsService, CuiIdService, UnitsAmount } from '@cuby-ui/cdk';\n\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { debounceTime } from 'rxjs';\n\nimport type { ConsumableFormGroup, ConsumableFormValues } from '../../consumable-form.options';\nimport { ConsumableFormItemReadonlyComponent } from '../consumable-form-item-readonly';\nimport { CUI_DEFAULT_CONTROL_DELAY } from './default-control-delay';\nimport {\n    CuiAccordionModule,\n    CuiButtonModule,\n    CuiContextMenuModule,\n    CuiFormFieldModule,\n    CuiInputNumberModule,\n    CuiLabelModule,\n    CuiSelectModule,\n    CuiSvgModule\n} from '../../../../../components';\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\nimport { CuiOption } from '../../../../../interfaces';\n\n@Component({\n    selector: 'cc-consumable-form-item',\n    imports: [\n        CuiAccordionModule,\n        CuiButtonModule,\n        CuiContextMenuModule,\n        ReactiveFormsModule,\n        TranslocoDirective,\n        CuiInputNumberModule,\n        CuiSvgModule,\n        CuiFormFieldModule,\n        CuiLabelModule,\n        CuiSelectModule,\n        ConsumableFormItemReadonlyComponent,\n        CuiGeneralControlErrorHintComponent\n    ],\n    templateUrl: './consumable-form-item.component.html',\n    styleUrl: './consumable-form-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ConsumableFormItemComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cuiIdService = inject(CuiIdService);\n    private readonly cuiConsumptionUnitsService = inject(CuiConsumptionUnitsService);\n\n    protected readonly quantityId = this.cuiIdService.generate();\n    protected readonly consumptionId = this.cuiIdService.generate();\n    protected readonly consumable = computed(() => this.form().getRawValue());\n    protected readonly piecesOptions = computed<CuiOption[]>(() =>\n        UnitsAmount.map((unit) => ({ label: unit.abbreviation, value: unit.value }))\n    );\n\n    public readonly title = input.required<string>();\n    public readonly consumptionOptions = input.required<CuiOption[]>();\n    public readonly form = input.required<FormGroup<ConsumableFormGroup>>();\n    public readonly readonly = input(false);\n\n    public readonly consumableChanged = output<Partial<ConsumableFormValues>>();\n\n    constructor() {\n        this.initFormChangesEffect();\n    }\n\n    protected hasFormError(): boolean {\n        const form = this.form();\n\n        return form.invalid && form.touched;\n    }\n\n    private initFormChangesEffect(): void {\n        effect(() => {\n            const form = this.form();\n\n            form.valueChanges\n                .pipe(debounceTime(CUI_DEFAULT_CONTROL_DELAY), takeUntilDestroyed(this.destroyRef))\n                .subscribe((value) => {\n                    if (form.invalid) {\n                        return;\n                    }\n\n                    this.consumableChanged.emit(value as Partial<ConsumableFormValues>);\n                });\n\n            const measureFormGroup = form.controls.measure;\n            const measureMeasureControl = measureFormGroup.controls.measure;\n            const measureUnitControl = measureFormGroup.controls.unit;\n\n            measureUnitControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((unit) => {\n                const measure = this.cuiConsumptionUnitsService.getConsumptionByUnit(unit);\n                measureMeasureControl.patchValue(measure, { emitEvent: false });\n            });\n        });\n    }\n}\n","@let formData = form();\n\n@if (readonly()) {\n    <cui-consumable-form-item-readonly\n        [title]=\"title()\"\n        [consumable]=\"consumable()\"\n    />\n} @else {\n    <form\n        [formGroup]=\"formData\"\n        *transloco=\"let t\"\n        class=\"form\"\n    >\n        <span class=\"title\">{{ title() }}</span>\n\n        <div class=\"wrapper-input\">\n            <div class=\"form__input\">\n                @let quantity = formData.controls.quantity;\n\n                <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\n                <div class=\"field\">\n                    <cui-input-number\n                        [cuiTextFieldId]=\"quantityId\"\n                        cuiTextFieldPlaceholder=\"0\"\n                        formControlName=\"quantity\"\n                        [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\n                        class=\"input\"\n                    />\n\n                    <cui-select\n                        [options]=\"piecesOptions()\"\n                        [class.options--error]=\"hasFormError()\"\n                        formControlName=\"unit\"\n                        class=\"options\"\n                    />\n                </div>\n                <cui-general-control-error-hint\n                    [control]=\"quantity\"\n                    [isVisible]=\"!!quantity.errors && quantity.dirty\"\n                />\n            </div>\n\n            <div class=\"form__input\">\n                @let measureFormGroup = formData.controls.measure;\n                @let consumption = measureFormGroup.controls.value;\n\n                <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\n                <div\n                    class=\"field\"\n                    [formGroup]=\"measureFormGroup\"\n                >\n                    <cui-input-number\n                        [cuiTextFieldId]=\"consumptionId\"\n                        cuiTextFieldPlaceholder=\"0\"\n                        formControlName=\"value\"\n                        [precision]=\"3\"\n                        [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\n                        class=\"input\"\n                    />\n\n                    <cui-select\n                        [options]=\"consumptionOptions()\"\n                        [class.options--error]=\"hasFormError()\"\n                        formControlName=\"unit\"\n                        class=\"options\"\n                    />\n                </div>\n                <cui-general-control-error-hint\n                    [control]=\"consumption\"\n                    [isVisible]=\"!!consumption.errors && consumption.dirty\"\n                />\n            </div>\n        </div>\n    </form>\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    inject,\n    input,\n    output,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { FormGroup } from '@angular/forms';\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { UnitsAmount } from '@cuby-ui/cdk';\n\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { debounceTime, finalize, switchMap, tap } from 'rxjs';\n\nimport { ToolFormReadonlyComponent } from './components';\nimport type { ToolboxFormControls } from './tool-form.options';\nimport {\n    CuiSelectModule,\n    CuiAlertService,\n    CuiBadgeModule,\n    CuiButtonModule,\n    CuiInputNumberModule\n} from '../../../components';\nimport { ResourceContentType, ResourceRequestType, CuiQuantumGroupResourcesStructureApiService } from '@cuby-ui/api';\nimport { CUI_DEFAULT_CONTROL_DELAY } from '../consumable-form/components';\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\nimport { ResourceUtilityTool } from '../resources-block';\n\n@Component({\n    selector: 'cui-tool-form',\n    imports: [\n        ToolFormReadonlyComponent,\n        CuiSelectModule,\n        ReactiveFormsModule,\n        CuiBadgeModule,\n        TranslocoDirective,\n        CuiInputNumberModule,\n        CuiButtonModule,\n        CuiGeneralControlErrorHintComponent\n    ],\n    templateUrl: './tool-form.component.html',\n    styleUrl: './tool-form.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class._disabled]': 'isLoading() || tool().isDelete'\n    },\n    standalone: true\n})\nexport class ToolFormComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly cuiAlertService = inject(CuiAlertService);\n    private readonly translocoService = inject(TranslocoService);\n    private readonly quantumGroupResourcesStructureApiService = inject(CuiQuantumGroupResourcesStructureApiService);\n    private readonly formBuilder = inject(NonNullableFormBuilder);\n\n    protected readonly TOOLBOX_WAS_DELETED = 'TOOLBOX_WAS_SUCCESSFULLY_DELETED';\n    protected readonly PART_WAS_DELETED = 'PART_WAS_SUCCESSFULLY_DELETED';\n\n    protected readonly isLoading = signal(false);\n    protected readonly toolForm = signal<CuiNullable<FormGroup<ToolboxFormControls>>>(null);\n    protected readonly controls = computed(() => this.toolForm()?.controls);\n    protected readonly toolboxOptions = computed(() =>\n        UnitsAmount.map((unit) => ({ label: unit.abbreviation, value: unit.value }))\n    );\n\n    public readonly utilityId = input.required<string>();\n    public readonly tool = input.required<ResourceUtilityTool>();\n    public readonly readonly = input(false);\n    public readonly resourceType = input<ResourceContentType>(ResourceContentType.Toolbox);\n\n    public readonly toolChanged = output<ResourceUtilityTool>();\n    public readonly toolDeleted = output<string>();\n\n    constructor() {\n        this.initFormEffect();\n    }\n\n    protected onDeleteToolbox(): void {\n        const { id } = this.tool();\n\n        this.isLoading.set(true);\n        this.quantumGroupResourcesStructureApiService\n            .deleteElementInStructure(this.utilityId(), this.resourceType().toLowerCase(), id)\n            .pipe(\n                tap(() => this.toolDeleted.emit(id)),\n                finalize(() => this.isLoading.set(false)),\n                switchMap(() => {\n                    const message =\n                        this.resourceType() === ResourceContentType.Part\n                            ? this.PART_WAS_DELETED\n                            : this.TOOLBOX_WAS_DELETED;\n\n                    return this.cuiAlertService.open(this.translocoService.translate(message), {\n                        status: 'success'\n                    });\n                })\n            )\n            .subscribe();\n    }\n\n    private initFormEffect(): void {\n        const effectRef = effect(\n            () => {\n                const toolForm = this.createForm();\n\n                this.toolForm.set(toolForm);\n                toolForm.valueChanges\n                    .pipe(debounceTime(CUI_DEFAULT_CONTROL_DELAY), takeUntilDestroyed(this.destroyRef))\n                    .subscribe((value) => {\n                        if (toolForm.invalid) {\n                            return;\n                        }\n\n                        const updatedTool = {\n                            ...this.tool(),\n                            ...value,\n                            type: ResourceRequestType.Toolbox\n                        };\n\n                        this.quantumGroupResourcesStructureApiService\n                            .updateElementInStructure(this.utilityId(), this.resourceType(), updatedTool)\n                            .pipe(takeUntilDestroyed(this.destroyRef))\n                            .subscribe(() => this.toolChanged.emit(updatedTool));\n                    });\n                effectRef.destroy();\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private createForm(): FormGroup<ToolboxFormControls> {\n        return this.formBuilder.group<ToolboxFormControls>({\n            quantity: this.formBuilder.control(this.tool().quantity, [\n                Validators.required,\n                Validators.min(1),\n                Validators.max(100)\n            ]),\n            unit: this.formBuilder.control(this.tool().unit, [Validators.required])\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @let controlsData = controls();\n\n    @if (readonly()) {\n        <cc-tool-form-readonly [tool]=\"tool()\" />\n    } @else if (controlsData) {\n        <td class=\"cc-table__td info custom\">\n            {{ tool().name }}\n\n            @if (tool().isDelete) {\n                <cui-badge\n                    class=\"badge\"\n                    [size]=\"'sm'\"\n                    color=\"red\"\n                >\n                    {{ t('DELETED') }}\n                </cui-badge>\n            }\n        </td>\n        <td class=\"cc-table__td custom\">\n            <cui-input-number\n                type=\"text\"\n                [formControl]=\"controlsData.quantity\"\n                [cuiTextFieldIsError]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\n            />\n            <cui-general-control-error-hint\n                [control]=\"controlsData.quantity\"\n                [isVisible]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\n            />\n        </td>\n        <td class=\"cc-table__td custom\">\n            <cui-select\n                [formControl]=\"controlsData.unit\"\n                [options]=\"toolboxOptions()\"\n            />\n        </td>\n        <td class=\"cc-table__td button custom\">\n            <button\n                type=\"button\"\n                cuiButton\n                icon=\"cuiIconTrash\"\n                size=\"xxs\"\n                appearance=\"ghost\"\n                [isLoaderShown]=\"isLoading()\"\n                (click)=\"onDeleteToolbox()\"\n            ></button>\n        </td>\n    }\n</ng-container>\n","import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { Observable } from 'rxjs';\nimport { EMPTY, map } from 'rxjs';\n\nimport { ToolFormComponent } from '../../../toolbox-form';\n\nimport type { ResourceUtilityPart } from './resources-block-part.options';\nimport { CuiFactoryApiService, ResourceContentType, UtilitySubject } from '@cuby-ui/api';\nimport { CuiButtonModule } from '../../../../../components';\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../../../model';\n\n@Component({\n    selector: 'cui-resources-block-part',\n    imports: [TranslocoDirective, CuiButtonModule, ToolFormComponent],\n    templateUrl: './resources-block-part.component.html',\n    styleUrl: './resources-block-part.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ResourcesBlockPartComponent {\n    private readonly factoryApiService = inject(CuiFactoryApiService);\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\n\n    public readonly utilityId = input.required<string>();\n    public readonly containerId = input.required<string>();\n    public readonly elements = input.required<ResourceUtilityPart[]>();\n    public readonly readonly = input(false);\n\n    constructor() {\n        this.initPartsStructure();\n    }\n\n    protected onPartChanged(part: ResourceUtilityPart): void {\n        this.utilityService.updateResource(part, this.containerId());\n    }\n\n    protected onPartDeleted(partId: string): void {\n        this.utilityService.removeResource(partId, this.containerId());\n    }\n\n    private initPartsStructure(): void {\n        const effectRef = effect(() => {\n            const parts = this.elements();\n            const arePartsWithFullInfo = parts.every((part) => part.name);\n\n            if (arePartsWithFullInfo) {\n                return;\n            }\n\n            this.getAddintionalResourceInfo(parts).subscribe((part) => {\n                this.utilityService.updateResource(part, this.containerId());\n            });\n\n            effectRef.destroy();\n        });\n    }\n\n    private getAddintionalResourceInfo(resources: UtilitySubject[]): Observable<ResourceUtilityPart> {\n        if (!resources.length) {\n            return EMPTY;\n        }\n\n        const ids = resources.map((resource) => resource.id);\n\n        return this.factoryApiService.getPartsByIdsStream(ids).pipe(\n            map(\n                (factoryElement) =>\n                    ({\n                        ...resources.find((resource) => factoryElement.id === resource.id),\n                        isDelete: factoryElement.isDelete,\n                        name: factoryElement.name\n                    }) as ResourceUtilityPart\n            )\n        );\n    }\n\n    protected readonly ResourceContentType = ResourceContentType;\n}\n","<table\n    *transloco=\"let t\"\n    class=\"cc-table table\"\n    [class.table_readonly]=\"readonly()\"\n>\n    <thead class=\"cc-table__thead\">\n        <tr class=\"cc-table__tr\">\n            <th class=\"cc-table__th custom\">{{ t('TITLE') }}</th>\n            <th class=\"cc-table__th custom\">{{ t('QUANTITY') }}</th>\n            <th class=\"cc-table__th custom\">{{ t('UNIT') }}</th>\n        </tr>\n    </thead>\n    <tbody class=\"cc-table__tbody\">\n        @for (part of elements(); track part.id) {\n            <tr class=\"cc-table__tr custom-row\">\n                <cui-tool-form\n                    [tool]=\"part\"\n                    [utilityId]=\"utilityId()\"\n                    [readonly]=\"readonly()\"\n                    [resourceType]=\"ResourceContentType.Part\"\n                    (toolChanged)=\"onPartChanged($event)\"\n                    (toolDeleted)=\"onPartDeleted($event)\"\n                />\n            </tr>\n        }\n    </tbody>\n</table>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    effect,\n    inject,\n    input,\n    output,\n    signal,\n    untracked\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { FormGroup } from '@angular/forms';\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { Consumption, CuiConsumptionUnitsService, CuiElementDirective, UnitsAmount } from '@cuby-ui/cdk';\n\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { finalize, switchMap, tap } from 'rxjs/operators';\n\nimport type { ResourceUtilityMaterial } from '../resources-block/components';\n\nimport { ConsumableFormItemComponent } from './components';\nimport type { ConsumableFormValues, SeasonForm } from './consumable-form.options';\nimport { ResourceContentType, ResourceRequestType } from '@cuby-ui/api';\nimport { OptionsButtonComponent } from '../../../components/options-button/options-button.component';\nimport {\n    CuiQuantumGroupResourcesStructureApiService,\n    MaterialTypeDefoliate,\n    MaterialTypeSupply,\n    SeasonType\n} from '@cuby-ui/api';\nimport { CuiContextMenuItem } from '../../../interfaces';\nimport {\n    CuiAccordionModule,\n    CuiAlertService,\n    CuiButtonModule,\n    CuiContextMenuModule,\n    CuiFormFieldModule,\n    CuiInputNumberModule,\n    CuiLabelModule,\n    CuiSvgModule\n} from '../../../components';\n\n@Component({\n    selector: 'cui-consumable-form',\n    imports: [\n        CuiAccordionModule,\n        CuiButtonModule,\n        CuiContextMenuModule,\n        CuiElementDirective,\n        ReactiveFormsModule,\n        TranslocoDirective,\n        OptionsButtonComponent,\n        CuiInputNumberModule,\n        CuiSvgModule,\n        CuiFormFieldModule,\n        CuiLabelModule,\n        ConsumableFormItemComponent,\n        ConsumableFormItemComponent,\n        ConsumableFormItemComponent\n    ],\n    templateUrl: './consumable-form.component.html',\n    styleUrl: './consumable-form.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ConsumableFormComponent {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly translocoService = inject(TranslocoService);\n    private readonly formBuilder = inject(NonNullableFormBuilder);\n    private readonly cuiAlertService = inject(CuiAlertService);\n    private readonly cuiConsumptionUnitsService = inject(CuiConsumptionUnitsService);\n    private readonly quantumGroupResourcesStructureApiService = inject(CuiQuantumGroupResourcesStructureApiService);\n\n    private static readonly CONSUMABLE_WAS_DELETED = 'CONSUMABLE_WAS_SUCCESSFULLY_DELETED';\n\n    protected readonly CONSUMABLE_OPTIONS: CuiContextMenuItem[] = [\n        {\n            label: 'Delete',\n            icon: 'cuiIconTrash',\n            color: 'var(--cui-danger)',\n            command: this.onDeleteConsumable.bind(this)\n        }\n    ];\n    protected readonly seasons = Object.values(SeasonType);\n\n    protected readonly allSeasonForm = signal<CuiNullable<FormGroup>>(null);\n    protected readonly seasonForms = signal<SeasonForm[]>([]);\n    protected readonly isLoading = signal(false);\n\n    protected readonly availableSeasons = computed(() => {\n        const usedSeasons = this.seasonForms().map((form) => form.type);\n\n        return this.seasons.filter((season) => !usedSeasons.includes(season));\n    });\n    protected readonly consumptionOptions = computed(() => {\n        const consumable = this.consumable();\n\n        if (!(consumable.specifications || consumable.parameters)) {\n            return [];\n        }\n\n        const consumableUnits = this.cuiConsumptionUnitsService.getConsumptionsUnits(consumable);\n\n        return Object.values(consumableUnits)\n            .reduce((accumulator, value) => accumulator.concat(value), [])\n            .map((unit) => ({ label: unit.abbreviation, value: unit.value }));\n    });\n\n    protected readonly SEASON_OPTIONS = computed(() =>\n        this.availableSeasons().map((season) => ({\n            label: season,\n            command: (): void => this.addSeason(season, this.createForm())\n        }))\n    );\n\n    public readonly utilityId = input.required<string>();\n    public readonly consumable = input.required<ResourceUtilityMaterial>();\n    public readonly readonly = input(false);\n\n    public readonly consumableChanged = output<ResourceUtilityMaterial>();\n    public readonly consumableDeleted = output<string>();\n\n    constructor() {\n        this.initFormValuesEffect();\n    }\n\n    protected onConsumableChanged(): void {\n        this.updateConsumable();\n    }\n\n    protected onRemoveSeason(type: SeasonType): void {\n        this.seasonForms.update((forms) => forms.filter((form) => form.type !== type));\n        this.updateConsumable();\n    }\n\n    protected onDeleteConsumable(): void {\n        const { id } = this.consumable();\n\n        this.isLoading.set(true);\n        this.quantumGroupResourcesStructureApiService\n            .deleteElementInStructure(this.utilityId(), ResourceContentType.Consumables.toLowerCase(), id)\n            .pipe(\n                takeUntilDestroyed(this.destroyRef),\n                tap(() => this.consumableDeleted.emit(id)),\n                finalize(() => this.isLoading.set(false)),\n                switchMap(() =>\n                    this.cuiAlertService.open(\n                        this.translocoService.translate(ConsumableFormComponent.CONSUMABLE_WAS_DELETED),\n                        {\n                            status: 'success'\n                        }\n                    )\n                )\n            )\n            .subscribe();\n    }\n\n    private initFormValuesEffect(): void {\n        effect(\n            () => {\n                const seasonForms = untracked(this.seasonForms);\n\n                this.consumable().supply?.forEach((season) => {\n                    const isExist = seasonForms.find((form) => form.type === season.season);\n\n                    if (isExist) {\n                        return;\n                    }\n\n                    this.addSeason(season.season, this.createForm(season));\n                });\n\n                if (this.allSeasonForm()) {\n                    return;\n                }\n\n                this.allSeasonForm.set(this.createForm(this.consumable().supplyDefoliate));\n            },\n            { allowSignalWrites: true }\n        );\n    }\n\n    private addSeason(seasonType: SeasonType, form: FormGroup): void {\n        this.seasonForms.update((forms) => [\n            ...forms,\n            {\n                type: seasonType,\n                form\n            }\n        ]);\n    }\n\n    private updateConsumable(): void {\n        const allSeasonForm = this.allSeasonForm();\n\n        if (!allSeasonForm?.valid) {\n            return;\n        }\n\n        const supply = this.seasonForms()\n            .filter((season) => season.form.valid)\n            .map(\n                (season) =>\n                    this.formatMeasureUnits({ season: season.type, ...season.form.getRawValue() }) as MaterialTypeSupply\n            );\n\n        const requestBody = {\n            id: this.consumable().id,\n            type: ResourceRequestType.Consumables,\n            supplyDefoliate: this.formatMeasureUnits(allSeasonForm.value) as MaterialTypeDefoliate,\n            supply\n        };\n        const updatedConsumable = {\n            ...this.consumable(),\n            ...requestBody\n        };\n\n        this.quantumGroupResourcesStructureApiService\n            .updateElementInStructure(this.utilityId(), ResourceContentType.Consumables, requestBody)\n            .pipe(\n                takeUntilDestroyed(this.destroyRef),\n                tap(() => this.consumableChanged.emit(updatedConsumable))\n            )\n            .subscribe();\n    }\n\n    private createForm(values?: ConsumableFormValues): FormGroup {\n        return this.formBuilder.group({\n            quantity: this.formBuilder.control(values?.quantity, [\n                Validators.required,\n                Validators.min(1),\n                Validators.max(99999)\n            ]),\n            unit: this.formBuilder.control(UnitsAmount[0].value, [Validators.required]),\n            measure: this.formBuilder.group({\n                measure: this.formBuilder.control(\n                    values?.measure?.measure ??\n                        (this.consumptionOptions?.()[0]?.value\n                            ? this.cuiConsumptionUnitsService.getConsumptionByUnit(this.consumptionOptions()[0].value)\n                            : Consumption.Length),\n                    [Validators.required]\n                ),\n                value: this.formBuilder.control(values?.measure?.value, [\n                    Validators.required,\n                    Validators.min(0.001),\n                    Validators.max(99999)\n                ]),\n                unit: this.formBuilder.control(\n                    values?.measure?.measure === 'AMOUNT'\n                        ? 'PIECES'\n                        : (values?.measure?.unit ?? this.consumptionOptions?.()[0].value),\n                    [Validators.required]\n                )\n            })\n        });\n    }\n\n    private formatMeasureUnits(\n        material: MaterialTypeDefoliate | MaterialTypeSupply\n    ): MaterialTypeDefoliate | MaterialTypeSupply {\n        return {\n            ...material,\n            measure: {\n                ...material.measure,\n                unit:\n                    material.measure.measure === 'AMOUNT'\n                        ? null\n                        : (material?.measure?.unit ?? this.consumptionOptions?.()[0].value)\n            }\n        };\n    }\n}\n","<cui-accordion-item\n    *transloco=\"let t\"\n    class=\"accordion\"\n>\n    <div class=\"header\">\n        {{ consumable().name }}\n\n        @if (!readonly()) {\n            <cui-options-button [options]=\"CONSUMABLE_OPTIONS\" />\n        }\n    </div>\n\n    <div\n        cuiAccordionItemContent\n        class=\"content\"\n    >\n        <div class=\"info\">\n            <div class=\"title\">{{ t('SEASON_CONSUMPTION') }}</div>\n\n            @if (allSeasonForm() && consumptionOptions().length) {\n                <cc-consumable-form-item\n                    title=\"{{ t('ALL_SEASON') }}:\"\n                    [consumptionOptions]=\"consumptionOptions()\"\n                    [form]=\"allSeasonForm()!\"\n                    [readonly]=\"readonly()\"\n                    (consumableChanged)=\"onConsumableChanged()\"\n                />\n            }\n        </div>\n\n        <div>\n            @for (season of seasonForms(); track season) {\n                <div class=\"season\">\n                    @if (consumptionOptions().length) {\n                        <cc-consumable-form-item\n                            title=\"{{ t(season.type) }}:\"\n                            [consumptionOptions]=\"consumptionOptions()\"\n                            [form]=\"season.form\"\n                            [readonly]=\"readonly()\"\n                            (consumableChanged)=\"onConsumableChanged()\"\n                        />\n                    }\n\n                    @if (!readonly()) {\n                        <div class=\"container-trash\">\n                            <button\n                                type=\"button\"\n                                cuiButton\n                                size=\"xxs\"\n                                appearance=\"ghost\"\n                                icon=\"cuiIconTrash\"\n                                (click)=\"onRemoveSeason(season.type)\"\n                            ></button>\n                        </div>\n                    }\n                </div>\n            }\n        </div>\n        @if (!readonly()) {\n            <button\n                #seasonButton=\"elementRef\"\n                cuiButton\n                cuiElement\n                type=\"button\"\n                appearance=\"flat\"\n                size=\"xxs\"\n                icon=\"cuiIconPlus\"\n                [disabled]=\"!availableSeasons().length\"\n                class=\"add-button\"\n            >\n                {{ t('ADD_SEASON') }}\n            </button>\n            <cui-context-menu\n                [items]=\"SEASON_OPTIONS()\"\n                [target]=\"seasonButton.nativeElement\"\n            />\n        }\n    </div>\n</cui-accordion-item>\n","import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core';\nimport type { Observable } from 'rxjs';\nimport { EMPTY, map } from 'rxjs';\n\nimport type { ResourceUtilityMaterial } from './resources-block-consumables.options';\nimport { ConsumableFormComponent } from '../../../consumable-form';\nimport { CuiFactoryApiService, UtilitySubject } from '@cuby-ui/api';\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../../../model';\n\n@Component({\n    selector: 'cui-resources-block-consumables',\n    imports: [ConsumableFormComponent],\n    templateUrl: './resources-block-consumables.component.html',\n    styleUrl: './resources-block-consumables.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ResourcesBlockConsumablesComponent {\n    private readonly factoryApiService = inject(CuiFactoryApiService);\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\n\n    public readonly utilityId = input.required<string>();\n    public readonly containerId = input.required<string>();\n    public readonly elements = input.required<ResourceUtilityMaterial[]>();\n    public readonly readonly = input(false);\n\n    constructor() {\n        this.initConsumablesStructure();\n    }\n\n    protected onConsumableChanged(consumable: ResourceUtilityMaterial): void {\n        this.utilityService.updateResource(consumable, this.containerId());\n    }\n\n    protected onConsumableDeleted(consumableId: string): void {\n        this.utilityService.removeResource(consumableId, this.containerId());\n    }\n\n    private initConsumablesStructure(): void {\n        const effectRef = effect(() => {\n            const materials = this.elements();\n            const areMaterialsWithFullInfo = materials.every((material) => material.name);\n\n            if (areMaterialsWithFullInfo) {\n                return;\n            }\n\n            this.getAddintionalResourceInfo(materials).subscribe((consumable) => {\n                this.utilityService.updateResource(consumable, this.containerId());\n            });\n\n            effectRef.destroy();\n        });\n    }\n\n    private getAddintionalResourceInfo(\n        resources: UtilitySubject[] | ResourceUtilityMaterial[]\n    ): Observable<ResourceUtilityMaterial> {\n        if (!resources.length) {\n            return EMPTY;\n        }\n\n        const ids = resources.map((resource) => resource.id);\n\n        return this.factoryApiService.getMaterialsByIds(ids).pipe(\n            map(\n                (factoryElement) =>\n                    ({\n                        ...resources.find((resource) => factoryElement.id === resource.id),\n                        ...factoryElement\n                    }) as ResourceUtilityMaterial\n            )\n        );\n    }\n}\n","@for (consumable of elements(); track consumable.id) {\n    <cui-consumable-form\n        [utilityId]=\"utilityId()\"\n        [consumable]=\"consumable\"\n        [readonly]=\"readonly()\"\n        (consumableChanged)=\"onConsumableChanged($event)\"\n        (consumableDeleted)=\"onConsumableDeleted($event)\"\n    />\n}\n","import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { Observable } from 'rxjs';\nimport { EMPTY, map } from 'rxjs';\nimport { CuiFactoryApiService, UtilitySubject } from '@cuby-ui/api';\n\nimport { ToolFormComponent } from '../../../toolbox-form';\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../../../model';\nimport { CuiButtonModule } from '../../../../../components';\nimport { ResourceUtilityTool } from './resources-block-toolbox.options';\n\n@Component({\n    selector: 'cui-resources-block-toolbox',\n    imports: [TranslocoDirective, CuiButtonModule, ToolFormComponent],\n    templateUrl: './resources-block-toolbox.component.html',\n    styleUrl: './resources-block-toolbox.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ResourcesBlockToolboxComponent {\n    private readonly factoryApiService = inject(CuiFactoryApiService);\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\n\n    public readonly utilityId = input.required<string>();\n    public readonly containerId = input.required<string>();\n    public readonly elements = input.required<ResourceUtilityTool[]>();\n    public readonly readonly = input(false);\n\n    constructor() {\n        this.initToolsStructure();\n    }\n\n    protected onToolChanged(tool: ResourceUtilityTool): void {\n        this.utilityService.updateResource(tool, this.containerId());\n    }\n\n    protected onToolDeleted(toolId: string): void {\n        this.utilityService.removeResource(toolId, this.containerId());\n    }\n\n    private initToolsStructure(): void {\n        const effectRef = effect(() => {\n            const tools = this.elements();\n            const areToolsWithFullInfo = tools.every((tool) => tool.name);\n\n            if (areToolsWithFullInfo) {\n                return;\n            }\n\n            this.getAddintionalResourceInfo(tools).subscribe((tool) => {\n                this.utilityService.updateResource(tool, this.containerId());\n            });\n\n            effectRef.destroy();\n        });\n    }\n\n    private getAddintionalResourceInfo(resources: UtilitySubject[]): Observable<ResourceUtilityTool> {\n        if (!resources.length) {\n            return EMPTY;\n        }\n\n        const ids = resources.map((resource) => resource.id);\n\n        return this.factoryApiService.getToolsByIdsStream(ids).pipe(\n            map(\n                (factoryElement) =>\n                    ({\n                        ...resources.find((resource) => factoryElement.id === resource.id),\n                        isDelete: factoryElement.isDelete,\n                        name: factoryElement.name\n                    }) as ResourceUtilityTool\n            )\n        );\n    }\n}\n","<table\n    *transloco=\"let t\"\n    class=\"cc-table table\"\n    [class.table_readonly]=\"readonly()\"\n>\n    <thead class=\"cc-table__thead\">\n        <tr class=\"cc-table__tr\">\n            <th class=\"cc-table__th custom\">{{ t('TITLE') }}</th>\n            <th class=\"cc-table__th custom\">{{ t('QUANTITY') }}</th>\n            <th class=\"cc-table__th custom\">{{ t('UNIT') }}</th>\n        </tr>\n    </thead>\n    <tbody class=\"cc-table__tbody\">\n        @for (tool of elements(); track tool.id) {\n            <tr class=\"cc-table__tr custom-row\">\n                <cui-tool-form\n                    [tool]=\"tool\"\n                    [utilityId]=\"utilityId()\"\n                    [readonly]=\"readonly()\"\n                    (toolChanged)=\"onToolChanged($event)\"\n                    (toolDeleted)=\"onToolDeleted($event)\"\n                />\n            </tr>\n        }\n    </tbody>\n</table>\n","import { ResourcesBlockConsumablesComponent } from '../resources-block-consumables';\nimport { ResourcesBlockPartComponent } from '../resources-block-part';\nimport { ResourcesBlockToolboxComponent } from '../resources-block-toolbox';\n\nimport { Resource, ResourceContentType, UtilitySubject } from '@cuby-ui/api';\n\nexport const COMPONENTS_CONTENT = {\n    [ResourceContentType.Consumables]: ResourcesBlockConsumablesComponent,\n    [ResourceContentType.Toolbox]: ResourcesBlockToolboxComponent,\n    [ResourceContentType.Part]: ResourcesBlockPartComponent\n};\n\nexport interface ResourceDeleteOutput {\n    readonly resources: UtilitySubject[];\n    readonly container: Resource;\n}\n","import { TitleCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { ResourceContentType, SHARED_FACTORY_HTTP_OPTIONS } from '@cuby-ui/api';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CUI_SUBJECT_MODAL_SERVICE_TOKEN } from '../../../../model';\nimport { UtilitySubject } from '@cuby-ui/api';\nimport { CuiButtonModule, CuiEmptyStateComponent } from '../../../../../components';\n\n@Component({\n    selector: 'cui-resources-block-content',\n    imports: [\n        TranslocoDirective,\n        CuiEmptyStateComponent,\n        CuiButtonModule,\n        TitleCasePipe,\n        CuiButtonModule,\n        CuiEmptyStateComponent\n    ],\n    templateUrl: './resources-block-content.component.html',\n    styleUrl: './resources-block-content.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ResourcesBlockContentComponent {\n    private subjectModalBase = inject(CUI_SUBJECT_MODAL_SERVICE_TOKEN);\n    public readonly config = SHARED_FACTORY_HTTP_OPTIONS;\n    public readonly isLoading = signal(false);\n\n    protected readonly emptyState = computed(() => `NO_${this.type().toUpperCase()}_TO_VIEW_YET`);\n\n    public readonly resourcesAdded = output<UtilitySubject[]>();\n\n    public readonly type = input.required<ResourceContentType>();\n    public readonly utilityId = input.required<string>();\n    public readonly empty = input(true);\n    public readonly readonly = input(false);\n\n    protected onAddResource(): void {\n        this.subjectModalBase.addResource(this.utilityId());\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (!empty()) {\n        <ng-content />\n    } @else {\n        <cui-empty-state [subtitle]=\"t(emptyState())\" />\n    }\n\n    @if (!readonly()) {\n        <button\n            type=\"button\"\n            cuiButton\n            appearance=\"flat\"\n            size=\"xxs\"\n            icon=\"cuiIconPlus\"\n            (click)=\"onAddResource()\"\n        >\n            {{ t('ADD') }} {{ type() | titlecase }}\n        </button>\n    }\n</ng-container>\n","import { NgComponentOutlet, TitleCasePipe } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, input, output } from '@angular/core';\nimport { CuiTemplateContext, CuiTypedTemplateDirective } from '@cuby-ui/cdk';\n\nimport type { ResourceDeleteOutput } from './resources-block-tabs.options';\nimport { COMPONENTS_CONTENT } from './resources-block-tabs.options';\nimport { AssigneeRoleItemComponent } from '../../../assignee-role-item';\nimport { AssigneeRolesTabsComponent } from '../../../assignee-roles-tabs';\nimport { CuiButtonModule, CuiDialogService } from '../../../../../components';\nimport { Resource, UtilityApiService, UtilityComponentType, UtilityComponentWithResources } from '@cuby-ui/api';\nimport { UtilitySubject } from '@cuby-ui/api';\nimport { CuiDeleteModalComponent } from '../../../delete-modal';\nimport { ResourcesBlockContentComponent } from '../resources-block-content';\n\n@Component({\n    selector: 'cui-resources-block-tabs',\n    imports: [\n        CuiButtonModule,\n        TitleCasePipe,\n        NgComponentOutlet,\n        CuiTypedTemplateDirective,\n        AssigneeRoleItemComponent,\n        AssigneeRolesTabsComponent,\n        ResourcesBlockContentComponent\n    ],\n    templateUrl: './resources-block-tabs.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ResourcesBlockTabsComponent {\n    private readonly utilityApiService = inject(UtilityApiService);\n    private readonly cuiDialogService = inject(CuiDialogService);\n\n    protected readonly UTILITY_TEMPLATE_CONTEXT!: CuiTemplateContext<Resource>;\n    protected readonly COMPONENTS_CONTENT = COMPONENTS_CONTENT;\n\n    public readonly resourceComponent = input.required<UtilityComponentWithResources>();\n    public readonly utilityId = input.required<string>();\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n    public readonly readonly = input(false);\n    public readonly selectedIndex = input(0);\n\n    public readonly resourceAdded = output<ResourceDeleteOutput>();\n    public readonly resourceDeleted = output<Resource>();\n    public readonly selectedIndexChange = output<number>();\n\n    protected onOpenDeleteResourceModal(resource: Resource): void {\n        const content = [`ACTION_WILL_DELETE_${resource.contentType}_FROM_RESOURCES`];\n\n        this.cuiDialogService\n            .open(CuiDeleteModalComponent, {\n                data: {\n                    title: `DELETE_${resource.contentType}_QUESTION`,\n                    content,\n                    delete: () =>\n                        this.utilityApiService.deleteStructure(\n                            this.utilityId(),\n                            UtilityComponentType.Resources,\n                            resource.id\n                        )\n                }\n            })\n            .subscribe((data) => data?.canceled || this.resourceDeleted.emit(resource));\n    }\n\n    protected onResourcesAdded(resources: UtilitySubject[], container: Resource): void {\n        this.resourceAdded.emit({ resources, container });\n    }\n}\n","<cui-assignee-roles-tabs\n    [tabs]=\"resourceComponent().structure\"\n    [itemSlot]=\"itemSlot\"\n    [buttonSlot]=\"buttonSlot()\"\n    [contentSlot]=\"contentSlot\"\n    [selectedIndex]=\"selectedIndex()\"\n    (selectedIndexChange)=\"selectedIndexChange.emit($event)\"\n>\n    <ng-template\n        #itemSlot\n        let-element\n    >\n        <cui-assignee-role-item\n            [role]=\"element.contentType | titlecase\"\n            [readonly]=\"readonly()\"\n            [empty]=\"!element.elements.length\"\n            (deleteClicked)=\"onOpenDeleteResourceModal(element)\"\n        />\n    </ng-template>\n\n    <ng-template\n        #contentSlot\n        let-element\n        [cuiTypedTemplate]=\"UTILITY_TEMPLATE_CONTEXT\"\n    >\n        <cui-resources-block-content\n            [type]=\"element.contentType\"\n            [utilityId]=\"utilityId()\"\n            [empty]=\"!element.elements.length\"\n            [readonly]=\"readonly()\"\n            (resourcesAdded)=\"onResourcesAdded($event, element)\"\n        >\n            <ng-container\n                [ngComponentOutlet]=\"COMPONENTS_CONTENT[element.contentType]\"\n                [ngComponentOutletInputs]=\"{\n                    elements: element.elements,\n                    containerId: element.id,\n                    utilityId: utilityId(),\n                    readonly: readonly()\n                }\"\n            />\n        </cui-resources-block-content>\n    </ng-template>\n</cui-assignee-roles-tabs>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { CuiClickOutsideDirective, CuiElementDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\nimport { CuiQuantumGroupResourcesStructureApiService, Resource, ResourceContentType } from '@cuby-ui/api';\n\nimport { CuiButtonModule, CuiContextMenuModule } from '../../../../../components';\n\n@Component({\n    selector: 'cui-resources-options',\n    imports: [CuiButtonModule, CuiElementDirective, CuiContextMenuModule, TranslocoDirective],\n    templateUrl: './resources-options.component.html',\n    styleUrl: './resources-options.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [CuiClickOutsideDirective],\n    host: {\n        '[class._flat]': \"appearance() === 'flat'\"\n    },\n    standalone: true\n})\nexport class ResourcesOptionsComponent {\n    private readonly quantumGroupResourcesStructureApiService = inject(CuiQuantumGroupResourcesStructureApiService);\n\n    protected readonly options = computed(() =>\n        this.types().map((type) => ({\n            label: type,\n            command: (): void => this.addResource(type)\n        }))\n    );\n    protected readonly isWithTitle = computed(() => this.appearance() === 'flat');\n    public readonly isLoading = signal(false);\n\n    public readonly types = input.required<ResourceContentType[]>();\n    public readonly utilityId = input.required<string>();\n    public readonly appearance = input<'ghost' | 'flat'>('flat');\n    public readonly disabled = input(false);\n\n    public readonly resourceAdded = output<Resource>();\n\n    protected addResource(type: ResourceContentType): void {\n        this.isLoading.set(true);\n        this.quantumGroupResourcesStructureApiService\n            .addElementForStructure(this.utilityId(), type)\n            .pipe(finalize(() => this.isLoading.set(false)))\n            .subscribe((resource) => this.resourceAdded.emit(resource));\n    }\n}\n","<ng-container *transloco=\"let t\">\n    <div class=\"utility\">\n        <button\n            #actionButton=\"elementRef\"\n            cuiElement\n            cuiButton\n            type=\"button\"\n            [appearance]=\"appearance()\"\n            [isLoaderShown]=\"isLoading()\"\n            [disabled]=\"disabled()\"\n            size=\"xxs\"\n            icon=\"cuiIconPlus\"\n        >\n            @if (isWithTitle()) {\n                {{ t('ADD_UTILITY') }}\n            }\n        </button>\n\n        <cui-context-menu\n            [items]=\"options()\"\n            [target]=\"actionButton.nativeElement\"\n        />\n    </div>\n</ng-container>\n","import {\n    AfterViewInit,\n    Component,\n    computed,\n    effect,\n    ElementRef,\n    inject,\n    input,\n    OnDestroy,\n    output,\n    Renderer2,\n    signal\n} from '@angular/core';\nimport { CuiContentWrapperComponent, CuiDialogService } from '../../../components';\nimport { AlertHintComponent } from '../../../components/alert-hint/alert-hint.component';\nimport { OptionsButtonComponent } from '../../../components/options-button/options-button.component';\nimport { ResourcesBlockTabsComponent } from '../resources-block-tabs';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { ResourcesOptionsComponent, ResourceUtilityMaterial } from './components';\nimport {\n    CuiFactoryApiService,\n    Resource,\n    ResourceContentType,\n    ResourceMaterialElement,\n    UtilityApiService,\n    UtilityComponentType,\n    UtilityComponentWithResources,\n    UtilitySubject\n} from '@cuby-ui/api';\nimport { CuiContextMenuItem } from '../../../interfaces';\nimport { map, Observable, toArray } from 'rxjs';\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../model';\nimport { CUI_USED_ELEMENTS_SERVICE_TOKEN } from '../../model/used-elements-service.token';\nimport { CUI_RESOURCE_STATE_SERVICE_TOKEN } from '../../model/resource-state-service.token';\nimport { CuiDeleteModalComponent } from '../delete-modal';\nimport { ContentHeaderComponent } from '../../../components/content-header';\n\n@Component({\n    selector: 'cui-resources-block',\n    standalone: true,\n    imports: [\n        CuiContentWrapperComponent,\n        AlertHintComponent,\n        OptionsButtonComponent,\n        ResourcesBlockTabsComponent,\n        TranslocoDirective,\n        ResourcesOptionsComponent,\n        ContentHeaderComponent\n    ],\n    templateUrl: './resources-block.component.html',\n    styleUrl: './resources-block.component.scss'\n})\nexport class ResourcesBlockComponent implements AfterViewInit, OnDestroy {\n    private readonly el = inject(ElementRef<HTMLElement>);\n    private readonly r2 = inject(Renderer2);\n    private readonly factoryApiService = inject(CuiFactoryApiService);\n    private readonly cuiDialogService = inject(CuiDialogService);\n    private readonly utilityApiService = inject(UtilityApiService);\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\n    private readonly usedElementsService = inject(CUI_USED_ELEMENTS_SERVICE_TOKEN);\n    private readonly resourceStateService = inject(CUI_RESOURCE_STATE_SERVICE_TOKEN);\n    private ro?: ResizeObserver;\n\n    protected readonly TYPES = [ResourceContentType.Consumables, ResourceContentType.Toolbox, ResourceContentType.Part];\n    protected readonly RESOURCES_COMPONENT_OPTIONS: CuiContextMenuItem[] = [\n        {\n            label: 'Delete',\n            icon: 'cuiIconTrash',\n            color: 'var(--cui-danger)',\n            command: this.openDeleteResourceComponentModal.bind(this)\n        }\n    ];\n\n    protected readonly currentTabIndex = signal(0);\n    protected readonly resources = computed(() => this.resourceComponent().structure);\n    protected readonly availableTypes = computed(() =>\n        this.TYPES.filter(\n            (type) => !this.resourceComponent().structure.find((resource) => resource.contentType === type)\n        )\n    );\n\n    public readonly title = input.required<string>();\n    public readonly resourceComponent = input.required<UtilityComponentWithResources>();\n    public readonly utilityId = input.required<string>();\n\n    public readonly resourceComponentDeleted = output<UtilityComponentType>();\n\n    constructor() {\n        this.initUsedElementsEffect();\n\n        effect(() => {\n            const length = this.resourceComponent().structure.length;\n            const idx = this.currentTabIndex();\n\n            if (length > 0 && idx >= length) {\n                this.currentTabIndex.set(length - 1);\n            }\n        });\n    }\n\n    public ngAfterViewInit(): void {\n        const host = this.el.nativeElement;\n        const targetWrapper = host.querySelector('cui-content-wrapper.custom-wrapper:last-child') as HTMLElement;\n\n        const update = (): void => {\n            if (host.offsetWidth > 600 && targetWrapper) {\n                this.r2.addClass(targetWrapper, 'wide');\n            } else if (targetWrapper) {\n                this.r2.removeClass(targetWrapper, 'wide');\n            }\n        };\n\n        this.ro = new ResizeObserver(update);\n        this.ro.observe(host);\n        update();\n    }\n\n    public ngOnDestroy(): void {\n        this.ro?.disconnect();\n    }\n\n    protected onAddResourcesType(resource: Resource): void {\n        this.utilityService.addResourceStructure(resource);\n    }\n\n    protected onResourcesAdded(resources: UtilitySubject[], container: Resource): void {\n        this.getAddintionalResourceInfo(resources, container.contentType).subscribe((structure) => {\n            this.utilityService.addResources(structure, container.id);\n\n            const updatedResources = this.resourceComponent().structure.map((resource) =>\n                resource.id === container.id\n                    ? {\n                          ...resource,\n                          elements: [\n                              ...resource.elements,\n                              ...structure.filter((s) => !resource.elements.some((e) => e.id === s.id))\n                          ] as ResourceMaterialElement[]\n                      }\n                    : resource\n            );\n\n            this.resourceStateService.updateResources(this.utilityId(), updatedResources);\n        });\n    }\n\n    protected onResourceStructureRemoved(resource: Resource): void {\n        this.utilityService.removeResourceStructure(resource.id);\n\n        const updatedResources = this.resourceComponent().structure.filter((r) => r.id !== resource.id);\n        this.resourceStateService.updateResources(this.utilityId(), updatedResources);\n    }\n\n    private initUsedElementsEffect(): void {\n        effect(() => {\n            this.usedElementsService.setAll(\n                this.resourceComponent().structure.flatMap((structure) => structure.elements)\n            );\n        });\n    }\n\n    private openDeleteResourceComponentModal(): void {\n        const content = ['ACTION_WILL_DELETE_RESOURCE_COMPONENT'];\n        const componentId = this.resourceComponent().id;\n\n        this.cuiDialogService\n            .open(CuiDeleteModalComponent, {\n                data: {\n                    title: 'DELETE_RESOURCE_COMPONENT_QUESTION',\n                    content,\n                    delete: () => this.utilityApiService.deleteComponent(this.utilityId(), componentId)\n                }\n            })\n            .subscribe((data) => data?.canceled || this.resourceComponentDeleted.emit(UtilityComponentType.Resources));\n    }\n\n    private getAddintionalResourceInfo(\n        resources: UtilitySubject[],\n        contentType: ResourceContentType\n    ): Observable<ResourceUtilityMaterial[]> {\n        const ids = resources.map((resource) => resource.id);\n        const requests = {\n            [ResourceContentType.Consumables]: this.factoryApiService.getMaterialsByIds(ids),\n            [ResourceContentType.Toolbox]: this.factoryApiService.getToolsByIdsStream(ids),\n            [ResourceContentType.Part]: this.factoryApiService.getPartsByIdsStream(ids)\n        };\n\n        return requests[contentType].pipe(\n            toArray(),\n            map((factoryElements) =>\n                factoryElements.map(\n                    (element, index) =>\n                        ({\n                            ...resources[index],\n                            ...element\n                        }) as ResourceUtilityMaterial\n                )\n            )\n        );\n    }\n}\n","@let structure = resourceComponent().structure;\n\n<cui-content-wrapper\n    class=\"custom-wrapper\"\n    *transloco=\"let t\"\n    backgroundColor=\"var(--cui-base-10)\"\n    [gap]=\"16\"\n>\n    <header\n        cuiContentHeader\n        [heading]=\"title()\"\n    >\n        <div class=\"content\">\n            @if (!structure.length) {\n                <cui-alert-hint\n                    status=\"warning\"\n                    [tooltipText]=\"t('NO_ENTITIES_ADDED')\"\n                />\n            }\n            <cui-options-button [options]=\"RESOURCES_COMPONENT_OPTIONS\" />\n        </div>\n    </header>\n\n    <cui-content-wrapper class=\"custom-wrapper\">\n        @if (structure.length) {\n            <cui-resources-block-tabs\n                [utilityId]=\"utilityId()\"\n                [buttonSlot]=\"buttonSlot\"\n                [resourceComponent]=\"resourceComponent()\"\n                [selectedIndex]=\"currentTabIndex()\"\n                (selectedIndexChange)=\"currentTabIndex.set($event)\"\n                (resourceAdded)=\"onResourcesAdded($event.resources, $event.container)\"\n                (resourceDeleted)=\"onResourceStructureRemoved($event)\"\n            />\n        } @else {\n            <cui-resources-options\n                [utilityId]=\"utilityId()\"\n                [types]=\"availableTypes()\"\n                (resourceAdded)=\"onAddResourcesType($event)\"\n            />\n        }\n    </cui-content-wrapper>\n</cui-content-wrapper>\n\n<ng-template #buttonSlot>\n    <cui-resources-options\n        [utilityId]=\"utilityId()\"\n        [types]=\"availableTypes()\"\n        [disabled]=\"!availableTypes().length\"\n        appearance=\"ghost\"\n        (resourceAdded)=\"onAddResourcesType($event)\"\n    />\n</ng-template>\n","import { ResourcesBlockPartComponent } from '../resources-block';\nimport { Resource, ResourceContentType } from '@cuby-ui/api';\nimport { ResourcesBlockConsumablesComponent } from '../resources-block/components/resources-block-consumables';\nimport { ResourcesBlockToolboxComponent } from '../resources-block/components/resources-block-toolbox';\nimport { UtilitySubject } from '@cuby-ui/api';\n\nexport const COMPONENTS_CONTENT = {\n    [ResourceContentType.Consumables]: ResourcesBlockConsumablesComponent,\n    [ResourceContentType.Toolbox]: ResourcesBlockToolboxComponent,\n    [ResourceContentType.Part]: ResourcesBlockPartComponent\n};\n\nexport interface ResourceDeleteOutput {\n    readonly resources: UtilitySubject[];\n    readonly container: Resource;\n}\n","import { Component, inject, input, output, TemplateRef } from '@angular/core';\nimport { CuiDialogService } from '../../../components';\nimport { COMPONENTS_CONTENT, ResourceDeleteOutput } from './resources-block-tabs.options';\nimport { NgComponentOutlet, TitleCasePipe } from '@angular/common';\nimport { AssigneeRolesTabsComponent } from '../assignee-roles-tabs/assignee-roles-tabs.component';\n\nimport { AssigneeRoleItemComponent } from '../assignee-role-item/assignee-role-item.component';\nimport { CuiDeleteModalComponent } from '../delete-modal';\nimport { Resource, UtilityComponentType, UtilityComponentWithResources, UtilityApiService } from '@cuby-ui/api';\nimport { CUI_SUBJECT_MODAL_SERVICE_TOKEN } from '../../model';\nimport { CuiTemplateContext, CuiTypedTemplateDirective } from '@cuby-ui/cdk';\nimport { ResourcesBlockContentComponent } from '../resources-block/components/resources-block-content';\n\n@Component({\n    selector: 'cui-resources-block-tabs',\n    standalone: true,\n    imports: [\n        TitleCasePipe,\n        AssigneeRolesTabsComponent,\n        AssigneeRoleItemComponent,\n        NgComponentOutlet,\n        ResourcesBlockContentComponent,\n        CuiTypedTemplateDirective\n    ],\n    templateUrl: './resources-block-tabs.component.html'\n})\nexport class ResourcesBlockTabsComponent {\n    private readonly utilityApiService = inject(UtilityApiService);\n    private readonly cuiDialogService = inject(CuiDialogService);\n    private readonly subjectModalService = inject(CUI_SUBJECT_MODAL_SERVICE_TOKEN);\n\n    protected readonly UTILITY_TEMPLATE_CONTEXT!: CuiTemplateContext<Resource>;\n    protected readonly COMPONENTS_CONTENT = COMPONENTS_CONTENT;\n\n    public readonly resourceComponent = input.required<UtilityComponentWithResources>();\n    public readonly utilityId = input.required<string>();\n    public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n    public readonly readonly = input(false);\n    public readonly selectedIndex = input(0);\n\n    public readonly resourceAdded = output<ResourceDeleteOutput>();\n    public readonly resourceDeleted = output<Resource>();\n    public readonly selectedIndexChange = output<number>();\n\n    protected onOpenDeleteResourceModal(resource: Resource): void {\n        const content = [`ACTION_WILL_DELETE_${resource.contentType}_FROM_RESOURCES`];\n\n        this.cuiDialogService\n            .open(CuiDeleteModalComponent, {\n                data: {\n                    title: `DELETE_${resource.contentType}_QUESTION`,\n                    content,\n                    delete: () =>\n                        this.utilityApiService.deleteStructure(\n                            this.utilityId(),\n                            UtilityComponentType.Resources,\n                            resource.id\n                        )\n                }\n            })\n            .subscribe((data) => data?.canceled || this.resourceDeleted.emit(resource));\n    }\n\n    protected onResourcesAdded(): void {\n        this.subjectModalService.addResource(this.utilityId());\n    }\n}\n","<cui-assignee-roles-tabs\n    [tabs]=\"resourceComponent().structure\"\n    [itemSlot]=\"itemSlot\"\n    [buttonSlot]=\"buttonSlot()\"\n    [contentSlot]=\"contentSlot\"\n    [selectedIndex]=\"selectedIndex()\"\n    (selectedIndexChange)=\"selectedIndexChange.emit($event)\"\n>\n    <ng-template\n        #itemSlot\n        let-element\n    >\n        <cui-assignee-role-item\n            [role]=\"element.contentType | titlecase\"\n            [readonly]=\"readonly()\"\n            [empty]=\"!element.elements.length\"\n            (deleteClicked)=\"onOpenDeleteResourceModal(element)\"\n        />\n    </ng-template>\n\n    <ng-template\n        #contentSlot\n        let-element\n        [cuiTypedTemplate]=\"UTILITY_TEMPLATE_CONTEXT\"\n    >\n        <cui-resources-block-content\n            [type]=\"element.contentType\"\n            [utilityId]=\"utilityId()\"\n            [empty]=\"!element.elements.length\"\n            [readonly]=\"readonly()\"\n            (resourcesAdded)=\"onResourcesAdded()\"\n        >\n            <ng-container\n                [ngComponentOutlet]=\"COMPONENTS_CONTENT[element.contentType]\"\n                [ngComponentOutletInputs]=\"{\n                    elements: element.elements,\n                    containerId: element.id,\n                    utilityId: utilityId(),\n                    readonly: readonly()\n                }\"\n            />\n        </cui-resources-block-content>\n    </ng-template>\n</cui-assignee-roles-tabs>\n","import { Component, inject, input, OnInit, signal } from '@angular/core';\nimport { CuiEmptyStateComponent } from '../../../components';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { UtilityApiService, UtilityComponentType, UtilityComponentWithResources } from '@cuby-ui/api';\nimport { CUI_UTILITY_SERVICE_TOKEN } from '../../model';\nimport { ResourcesBlockTabsComponent } from '../resources-block-tabs';\n\n@Component({\n    selector: 'cui-modal-resources-tab',\n    standalone: true,\n    imports: [CuiEmptyStateComponent, TranslocoDirective, ResourcesBlockTabsComponent],\n    templateUrl: './modal-resources-tab.component.html',\n    styleUrl: './modal-resources-tab.component.scss'\n})\nexport class ModalResourcesTabComponent implements OnInit {\n    private readonly utilityApiService = inject(UtilityApiService);\n    private readonly utilityService = inject(CUI_UTILITY_SERVICE_TOKEN);\n\n    protected readonly isLoaded = signal(false);\n    protected readonly utilityComponentWithResources = this.utilityService.resourcesComponent;\n\n    public readonly utilityId = input.required<string>();\n\n    public ngOnInit(): void {\n        this.initResources();\n    }\n\n    private initResources(): void {\n        this.utilityApiService.getById(this.utilityId()).subscribe((utility) => {\n            this.isLoaded.set(true);\n\n            const utilityComponentWithResources =\n                (utility.components.find(\n                    (utilityComponent) => utilityComponent.componentType === UtilityComponentType.Resources\n                ) as UtilityComponentWithResources) ?? null;\n\n            this.utilityService.setComponent(utilityComponentWithResources);\n        });\n    }\n}\n","<ng-container *transloco=\"let t\">\n    @if (isLoaded()) {\n        @if (utilityComponentWithResources(); as utilityComponentWithResources) {\n            <cui-resources-block-tabs\n                [resourceComponent]=\"utilityComponentWithResources\"\n                [utilityId]=\"utilityId()\"\n                [buttonSlot]=\"button\"\n                [readonly]=\"true\"\n            />\n            <ng-template #button />\n        } @else {\n            <cui-empty-state [subtitle]=\"t('NO_RESOURCES_TO_VIEW_YET')\" />\n        }\n    }\n</ng-container>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, input, signal } from '@angular/core';\nimport {\n    CuiApiContext,\n    StorageObjectInstruction,\n    UtilityApiService,\n    UtilityComponentType,\n    UtilityComponentWithInstructions\n} from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { ModalDividedSectionComponent } from '../modal-divided-section';\n\n@Component({\n    imports: [ModalDividedSectionComponent],\n    templateUrl: './modal-instructions-tab.component.html',\n    styleUrl: './modal-instructions-tab.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ModalInstructionsTabComponent implements OnInit {\n    private readonly utilityApiService = inject(UtilityApiService);\n\n    public readonly utilityId = input.required<string>();\n    public readonly environmentUrlForInstruction = input.required<string>();\n    public readonly context = input.required<CuiApiContext>();\n    protected readonly storageObjectInstructions = signal<CuiNullable<StorageObjectInstruction[]>>(null);\n\n    public ngOnInit(): void {\n        this.initInstructions();\n    }\n\n    private initInstructions(): void {\n        this.utilityApiService.getById(this.utilityId()).subscribe((utility) => {\n            const utilityComponentWithInstructions = utility.components.find(\n                (utilityComponent) => utilityComponent.componentType === UtilityComponentType.Instructions\n            ) as CuiNullable<UtilityComponentWithInstructions>;\n\n            this.storageObjectInstructions.set(\n                utilityComponentWithInstructions\n                    ? utilityComponentWithInstructions.structure.map(\n                          (listObjectInstruction) => listObjectInstruction.instruction\n                      )\n                    : []\n            );\n        });\n    }\n}\n","@if (storageObjectInstructions(); as storageObjectInstructions) {\n    <cui-modal-divided-section\n        storageElementTypeName=\"INSTRUCTION\"\n        [context]=\"context()\"\n        [environmentUrlForInstruction]=\"environmentUrlForInstruction()\"\n        [storageObjects]=\"storageObjectInstructions\"\n    />\n}\n","import { Component, input } from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { CuiTabsComponent } from '../../../components/tabs';\nimport { CuiTabDirective } from '../../../components/tab';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { ModalHeaderTab } from '@cuby-ui/api';\n\n@Component({\n    selector: 'cui-modal-header-tabs',\n    standalone: true,\n    imports: [CuiTabsComponent, NgTemplateOutlet, CuiTabDirective, NgComponentOutlet, TranslocoDirective],\n    templateUrl: './modal-header-tabs.component.html',\n    styleUrl: './modal-header-tabs.component.scss'\n})\nexport class ModalHeaderTabsComponent {\n    public readonly tabs = input.required<ModalHeaderTab[]>();\n    public readonly selectedIndex = input(0);\n}\n","<ng-container *transloco=\"let t\">\n    <cui-tabs\n        class=\"tabs\"\n        [selectedIndex]=\"selectedIndex()\"\n        [headerSlot]=\"headerSlot\"\n    >\n        <ng-template\n            #headerSlot\n            let-buttons\n        >\n            <header class=\"header\">\n                <div\n                    #buttons\n                    class=\"buttons\"\n                >\n                    <ng-container [ngTemplateOutlet]=\"buttons\" />\n                </div>\n            </header>\n        </ng-template>\n\n        @for (tab of tabs(); track tab) {\n            <cui-tab\n                [data]=\"tab\"\n                [buttonSlot]=\"cuiButtonSlot\"\n                [contentSlot]=\"cuiContentSlot\"\n                class=\"tab\"\n            >\n                <ng-template\n                    #cuiButtonSlot\n                    let-isActive=\"isActive\"\n                    let-element\n                >\n                    <div\n                        class=\"button\"\n                        [class.button_active]=\"isActive\"\n                    >\n                        {{ t(element.title) }}\n                    </div>\n                </ng-template>\n                <ng-template\n                    #cuiContentSlot\n                    let-element\n                >\n                    <div class=\"content\">\n                        <ng-container\n                            [ngComponentOutlet]=\"element.component\"\n                            [ngComponentOutletInputs]=\"element.inputs\"\n                        />\n                    </div>\n                </ng-template>\n            </cui-tab>\n        }\n    </cui-tabs>\n</ng-container>\n","import type { AfterViewInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, input, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { ModalDividedSectionComponent } from '../modal-divided-section/modal-divided-section.component';\nimport { CuiCriterionApiService, CuiStorageObjectType, StorageObjectCriterion } from '@cuby-ui/api';\n\n@Component({\n    imports: [ModalDividedSectionComponent],\n    templateUrl: './modal-criteria-tab.component.html',\n    styleUrl: './modal-criteria-tab.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ModalCriteriaTabComponent implements AfterViewInit {\n    private readonly criterionApiService = inject(CuiCriterionApiService);\n\n    protected readonly storageObjectCriteria = signal<CuiNullable<StorageObjectCriterion[]>>(null);\n\n    public readonly acceptanceCriteriaContainerId = input<string>();\n    public readonly acceptanceCriteriaIds = input<string[]>();\n    public readonly environmentUrlForResources = input.required<string>();\n\n    public ngAfterViewInit(): void {\n        this.initCriteriaSubscription();\n    }\n\n    private initCriteriaSubscription(): void {\n        const acceptanceCriteriaContainerId = this.acceptanceCriteriaContainerId();\n        const acceptanceCriteriaIds = this.acceptanceCriteriaIds();\n\n        if (acceptanceCriteriaContainerId) {\n            this.criterionApiService\n                .getAll(acceptanceCriteriaContainerId)\n                .subscribe((criteria) => this.storageObjectCriteria.set(criteria));\n\n            return;\n        }\n\n        if (!acceptanceCriteriaIds) {\n            return;\n        }\n\n        if (acceptanceCriteriaIds.length) {\n            this.criterionApiService.getSelection(acceptanceCriteriaIds).subscribe((criteria) =>\n                this.storageObjectCriteria.set(\n                    criteria.map((criterion) => ({\n                        id: criterion.id,\n                        storageElement: criterion,\n                        storageObjectType: CuiStorageObjectType.CREATED\n                    }))\n                )\n            );\n\n            return;\n        }\n\n        this.storageObjectCriteria.set([]);\n    }\n}\n","@if (storageObjectCriteria(); as storageObjectCriteria) {\n    <cui-modal-divided-section\n        storageElementTypeName=\"CRITERIA\"\n        [environmentUrlForResources]=\"environmentUrlForResources()\"\n        [storageObjects]=\"storageObjectCriteria\"\n    />\n}\n","import { AfterViewInit, Component, computed, inject, input, signal, TemplateRef, viewChild } from '@angular/core';\nimport { CUI_DIALOG_CONTEXT, CuiDialogContext, CuiLetterBoxComponent } from '../../../components';\nimport { createEditorTools, CuiEditorComponent, CuiEditorConfig } from '../../../editor';\nimport { CuiNullable, CuiTime } from '@cuby-ui/cdk';\nimport {\n    CuiJobApiService,\n    JobType,\n    ModalHeaderTab,\n    Operation,\n    SHARED_CONSTRUCTION_HTTP_OPTIONS,\n    SHARED_INSTRUCTION_HTTP_OPTIONS,\n    StorageObject\n} from '@cuby-ui/api';\nimport { ModalInfoTabComponent } from '../modal-info-tab';\nimport { ModalResourcesTabComponent } from '../modal-resources-tab';\nimport { ModalInstructionsTabComponent } from '../modal-instructions-tab';\nimport { ModalHeaderTabsComponent } from '../modal-header-tabs';\nimport { ModalHeaderInsertedButtonsComponent } from '../modal-header-inserted-buttons';\nimport { ModalCriteriaTabComponent } from '../modal-criteria-tab';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { ModalHeaderComponent } from '../modal-header';\n\n@Component({\n    selector: 'cui-modal-operation-part',\n    standalone: true,\n    imports: [\n        CuiLetterBoxComponent,\n        CuiEditorComponent,\n        ModalHeaderTabsComponent,\n        ModalHeaderInsertedButtonsComponent,\n        ModalHeaderTabsComponent,\n        ModalHeaderTabsComponent,\n        ModalHeaderTabsComponent,\n        ModalHeaderComponent,\n        TranslocoDirective\n    ],\n    templateUrl: './modal-operation-part.component.html',\n    styleUrl: './modal-operation-part.component.scss'\n})\nexport class ModalOperationPartComponent implements AfterViewInit {\n    private readonly context = inject<CuiDialogContext>(CUI_DIALOG_CONTEXT);\n    private readonly jobApiService = inject(CuiJobApiService);\n\n    protected readonly tabs = signal<ModalHeaderTab[]>([]);\n\n    protected readonly ptFormat = computed(() =>\n        CuiTime.fromPT(this.storageObjectOperation().storageElement.estimatedTime).toString('HH:MM:SS')\n    );\n\n    protected editorConfig = computed<CuiEditorConfig>(() => ({\n        readOnly: true,\n        requestOptions: SHARED_CONSTRUCTION_HTTP_OPTIONS,\n        tools: createEditorTools(this.environmentUrlForResources())\n    }));\n\n    public readonly isInserted = input(false);\n    public readonly containerId = input<CuiNullable<string>>();\n    public readonly quantumId = input<CuiNullable<string>>();\n    public readonly jobId = input<CuiNullable<string>>();\n\n    public readonly storageObjectOperation = input.required<StorageObject<Operation>>();\n    public readonly environmentUrlForResources = input.required<string>();\n    public readonly environmentUrlForInstruction = input.required<string>();\n\n    protected readonly estimatedTime = viewChild.required('estimatedTime');\n    public readonly editor = viewChild.required<TemplateRef<unknown>>('editor');\n\n    public ngAfterViewInit() {\n        this.initSectionComponent();\n    }\n\n    protected onUnbindOperation(): void {\n        const containerId = this.containerId();\n        const operationId = this.storageObjectOperation().id;\n        const quantumId = this.quantumId();\n        const jobId = this.jobId();\n\n        if (!containerId) {\n            return;\n        }\n\n        if (!quantumId) {\n            const requestBody = {\n                jobId: jobId!,\n                pointerOperationsId: containerId,\n                selectOperation: operationId,\n                type: JobType.JobCorrective\n            };\n\n            this.jobApiService.unbindOperation(requestBody).subscribe((response) => {\n                this.context.completeWith(response);\n            });\n\n            return;\n        }\n\n        this.jobApiService\n            .unbindOperation({\n                jobId: jobId!,\n                pointerOperationsId: containerId,\n                selectOperation: operationId,\n                type: JobType.JobMain\n            })\n            .subscribe((response) => {\n                this.context.completeWith(response);\n            });\n    }\n\n    private initSectionComponent(): void {\n        const {\n            storageElement: { utilityId, acceptancesCriteria }\n        } = this.storageObjectOperation();\n\n        this.tabs.set([\n            {\n                title: 'INFO',\n                component: ModalInfoTabComponent,\n                inputs: { content: { ESTIMATED_TIME: this.estimatedTime(), DESCRIPTION: this.editor() } }\n            },\n            {\n                title: 'RESOURCES',\n                component: ModalResourcesTabComponent,\n                inputs: { utilityId }\n            },\n            {\n                title: 'INSTRUCTIONS',\n                component: ModalInstructionsTabComponent,\n                inputs: {\n                    utilityId,\n                    environmentUrlForInstruction: this.environmentUrlForInstruction(),\n                    context: SHARED_INSTRUCTION_HTTP_OPTIONS\n                }\n            },\n            {\n                title: 'CRITERIA',\n                component: ModalCriteriaTabComponent,\n                inputs: {\n                    acceptanceCriteriaContainerId: acceptancesCriteria,\n                    environmentUrlForResources: this.environmentUrlForResources()\n                }\n            }\n        ]);\n    }\n}\n","@if (storageObjectOperation().storageElement; as operation) {\n    <ng-container *transloco=\"let t\">\n        <cui-modal-header\n            [heading]=\"operation.title\"\n            [isInserted]=\"isInserted()\"\n        >\n            <cui-letter-box\n                cuiModalHeaderIcon\n                letter=\"o\"\n                backgroundColor=\"var(--cui-success)\"\n            />\n\n            @if (isInserted()) {\n                <cui-modal-header-inserted-buttons\n                    cuiModalHeaderButtons\n                    (unbindClicked)=\"onUnbindOperation()\"\n                />\n            }\n        </cui-modal-header>\n\n        @if (tabs().length) {\n            <cui-modal-header-tabs [tabs]=\"tabs()\" />\n        }\n    </ng-container>\n\n    <ng-template #estimatedTime>\n        {{ ptFormat() }}\n    </ng-template>\n\n    <ng-template #editor>\n        <cui-editor\n            [editorApiId]=\"operation.textContainerId\"\n            [config]=\"editorConfig()\"\n        />\n    </ng-template>\n}\n","import { Component, HostBinding, inject } from '@angular/core';\nimport {\n    CUI_DIALOG_CONTEXT,\n    CuiDialogContext,\n    CuiDialogSize,\n    CuiRenderDynamicComponentsComponent,\n    CuiRenderDynamicComponentsService\n} from '../../../components';\nimport { CuiRenderDynamicModalDialogData } from './render-dynamic-modal.option';\n\n@Component({\n    selector: 'cui-render-dynamic-modal',\n    standalone: true,\n    imports: [CuiRenderDynamicComponentsComponent],\n    templateUrl: './render-dynamic-modal.component.html',\n    styleUrl: './render-dynamic-modal.component.scss'\n})\nexport class RenderDynamicModalComponent {\n    private readonly cuiDialogContext = inject<CuiDialogContext<CuiRenderDynamicModalDialogData>>(CUI_DIALOG_CONTEXT);\n    private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n    @HostBinding('attr.data-size')\n    protected get size(): CuiDialogSize {\n        return this.cuiDialogContext.size;\n    }\n\n    public ngOnInit(): void {\n        this.initParentParentOfModal();\n    }\n\n    private initParentParentOfModal(): void {\n        const { component, inputs } = this.cuiDialogContext.data;\n\n        this.renderDynamicComponentsService.open({ component, inputs });\n    }\n}\n","<div class=\"wrapper\">\n    <cui-render-dynamic-components />\n</div>\n","import { computed, Injectable, signal } from '@angular/core';\nimport { UtilityService } from '../model';\nimport { CuiNullable } from '@cuby-ui/cdk';\n\nimport {\n    ListObjectInstruction,\n    Resource,\n    StorageObjectInstruction,\n    Utility,\n    UtilityComponent,\n    UtilityComponentType,\n    UtilityComponentWithInstructions,\n    UtilityComponentWithResources,\n    UtilitySubject\n} from '@cuby-ui/api';\nimport type { ResourceUtilityMaterial } from '../ui/resources-block/components';\n\n@Injectable()\nexport class UtilityBaseService implements UtilityService {\n    private readonly utilitySignal = signal<CuiNullable<Utility>>(null);\n    private readonly instructionComponentSignal = signal<CuiNullable<UtilityComponentWithInstructions>>(null);\n    private readonly resourcesComponentSignal = signal<CuiNullable<UtilityComponentWithResources>>(null);\n\n    public readonly instructions = computed(() => {\n        const structure = this.instructionComponentSignal()?.structure || [];\n        return structure.map(({ instruction }) => instruction);\n    });\n\n    public readonly resources = computed(() => this.resourcesComponentSignal()?.structure ?? []);\n    public readonly instructionComponent = this.instructionComponentSignal.asReadonly();\n    public readonly resourcesComponent = this.resourcesComponentSignal.asReadonly();\n    public readonly utility = this.utilitySignal.asReadonly();\n\n    public setUtility(utility: Utility): void {\n        this.utilitySignal.set(utility);\n    }\n\n    public setComponent(component: UtilityComponent): void {\n        const actions = {\n            [UtilityComponentType.Instructions]: (): void =>\n                this.instructionComponentSignal.set(component as UtilityComponentWithInstructions),\n            [UtilityComponentType.Resources]: (): void =>\n                this.resourcesComponentSignal.set(component as UtilityComponentWithResources)\n        };\n\n        actions[component.componentType]();\n    }\n\n    public removeComponent(componentType: UtilityComponentType): void {\n        const actions = {\n            [UtilityComponentType.Instructions]: (): void => this.instructionComponentSignal.set(null),\n            [UtilityComponentType.Resources]: (): void => this.resourcesComponentSignal.set(null)\n        };\n\n        actions[componentType]();\n    }\n\n    public addInstructions(instructions: ListObjectInstruction[]): void {\n        this.instructionComponentSignal.update((prev) => ({\n            ...prev!,\n            structure: [...(prev?.structure ?? []), ...instructions]\n        }));\n    }\n\n    public updateInstruction(instruction: StorageObjectInstruction, id?: string): void {\n        const updatedInstructionId = id ?? instruction?.id;\n\n        this.instructionComponentSignal.update((prev) => ({\n            ...prev!,\n            structure:\n                prev?.structure.map((item) =>\n                    updatedInstructionId === item.instruction.id ? { ...item, id: instruction.id, instruction } : item\n                ) ?? []\n        }));\n    }\n\n    public removeInstruction(instructionStorageId: string): void {\n        this.instructionComponentSignal.update((prev) => ({\n            ...prev!,\n            structure: prev?.structure.filter((instruction) => instruction.id !== instructionStorageId) ?? []\n        }));\n    }\n\n    public updateInstructionTitle(instructionId: string, title: string): void {\n        this.instructionComponentSignal.update((prev) => ({\n            ...prev!,\n            structure:\n                prev?.structure.map((item) => {\n                    if (item.instruction.id !== instructionId) {\n                        return item;\n                    }\n\n                    const updatedStorageElement = {\n                        ...item.instruction.storageElement,\n                        title\n                    };\n\n                    const updatedInstruction = {\n                        ...item.instruction,\n                        storageElement: updatedStorageElement\n                    };\n\n                    return { ...item, instruction: updatedInstruction };\n                }) ?? []\n        }));\n    }\n\n    public addResourceStructure(resource: Resource): void {\n        this.resourcesComponentSignal.update((prev) => ({\n            ...prev!,\n            structure: [...prev!.structure, resource]\n        }));\n    }\n\n    public removeResourceStructure(resourceId: string): void {\n        this.resourcesComponentSignal.update((prev) => ({\n            ...prev!,\n            structure: prev!.structure.filter((resource) => resource.id !== resourceId)\n        }));\n    }\n\n    public addResources(resources: UtilitySubject[], containerId: string): void {\n        this.resourcesComponentSignal.update((prev) => ({\n            ...prev!,\n            structure: prev!.structure.map((container) => {\n                if (container.id !== containerId) {\n                    return container;\n                }\n\n                container.elements = [...container.elements, ...(resources as any[])];\n                return container;\n            })\n        }));\n    }\n\n    public updateResource(resource: UtilitySubject | ResourceUtilityMaterial, containerId: string): void {\n        this.resourcesComponentSignal.update((prev) => ({\n            ...prev!,\n            structure: prev!.structure.map((container) => {\n                if (container.id !== containerId) {\n                    return container;\n                }\n\n                container.elements =\n                    container.elements.map((item) => (resource.id === item.id ? { ...item, ...resource } : item)) ?? [];\n\n                return container;\n            })\n        }));\n    }\n\n    public removeResource(resourceId: string, containerId: string): void {\n        this.resourcesComponentSignal.update((prev) => {\n            return {\n                ...prev!,\n                structure: prev!.structure.map((container) => {\n                    if (container.id !== containerId) {\n                        return container;\n                    }\n\n                    container.elements = container.elements.filter((resource) => resource.id !== resourceId);\n\n                    return container;\n                })\n            };\n        });\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { UtilitySubject } from '@cuby-ui/api';\nimport { SubjectModalService } from '../model';\nimport { TreeStructCategoryElement } from '../model/resources-block.options';\n\n@Injectable()\nexport class SubjectModalBaseService implements SubjectModalService {\n    public addResource(utilityId: string): void {}\n\n    public handleAddedResource(\n        ids: Record<string, TreeStructCategoryElement>,\n        type: string\n    ): Observable<UtilitySubject[]> {\n        return of([]);\n    }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { UsedElementsService } from '../model/used-elements-service.interface';\n\n@Injectable()\nexport class UsedElementsBaseService<T extends { id: string }> implements UsedElementsService<T> {\n    protected readonly usedElementsSignal = signal<Record<string, T>>({});\n\n    public readonly usedElements = this.usedElementsSignal.asReadonly();\n\n    public setAll(elements: T[]): void {\n        this.usedElementsSignal.set(Object.fromEntries(elements.map((e) => [e.id, e])));\n    }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { ResourceStateService } from '../model/resource-state-service.interface';\nimport { Resource } from '@cuby-ui/api';\n\n@Injectable()\nexport class ResourceStateBaseService implements ResourceStateService {\n    protected readonly resourcesMapSignal = signal<Map<string, Resource[]>>(new Map());\n    public readonly resourcesMap = this.resourcesMapSignal.asReadonly();\n\n    public updateResources(utilityId: string, resources: Resource[]): void {\n        const newMap = new Map(this.resourcesMap());\n        newMap.set(utilityId, resources);\n        this.resourcesMapSignal.set(newMap);\n    }\n}\n","import { Translation } from '@jsverse/transloco';\n\nexport const CuiLibTranslations: Record<string, Promise<Translation>> = {\n    en: import('../i18n/en.json'),\n    ru: import('../i18n/ru.json')\n} as const;\n","import type { HttpErrorResponse } from '@angular/common/http';\nimport type { OperatorFunction } from 'rxjs';\nimport { catchError, of } from 'rxjs';\n\nexport function handleError<T, R>(handler: (error: unknown) => R, useDefaultError = true): OperatorFunction<T, R | T> {\n    return catchError((error: HttpErrorResponse) => {\n        if (useDefaultError) {\n            setTimeout(() => {\n                throw error;\n            });\n        }\n\n        return of(handler(error));\n    });\n}\n","import { Translation } from '@jsverse/transloco';\n\nexport const CuiTranslations: Record<string, Promise<Translation>> = {\n    en: import('./en.json'),\n    ru: import('./ru.json')\n} as const;\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.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","i5","i2.CuiInputNumberComponent","i1.CuiCheckboxComponent","i3.CuiInputTextComponent","i4.CuiTextFieldIdDirective","i5.CuiTextFieldPlaceholderDirective","i3.CuiFormFieldComponent","i4.CuiHintComponent","i9.CuiLabelComponent","i10.CuiSvgComponent","i11","i3.CuiHintComponent","handleResponse","readStream","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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"}