@cuby-ui/core 0.0.232 → 0.0.233
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/banner/banner.component.d.ts +2 -1
- package/components/button/button.component.d.ts +1 -1
- package/components/notification/notification.component.d.ts +2 -2
- package/directives/tooltip/tooltip.component.d.ts +1 -1
- package/esm2022/components/banner/banner.component.mjs +3 -3
- package/esm2022/widgets/index.mjs +2 -2
- package/fesm2022/cuby-ui-core.mjs +3 -3
- package/fesm2022/cuby-ui-core.mjs.map +1 -1
- package/package.json +3 -3
- package/widgets/index.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/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/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/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/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/animations/animations.ts","../../../projects/core/directives/tooltip/tooltip.service.ts","../../../projects/core/directives/tooltip/tooltips.component.ts","../../../projects/core/directives/tooltip/tooltips.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/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/viewport.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/directives/tooltip/tooltip.providers.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/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/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/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/radio/radio.component.ts","../../../projects/core/components/radio/radio.module.ts","../../../projects/core/components/select/select.component.ts","../../../projects/core/components/select/select.template.html","../../../projects/core/components/select/select.module.ts","../../../projects/core/components/empty-state/empty-state.component.ts","../../../projects/core/components/empty-state/empty-state.component.html","../../../projects/core/components/sidebar/sidebar.options.ts","../../../projects/core/components/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/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/tab/tab.component.ts","../../../projects/core/components/tabs/tab/tab.template.html","../../../projects/core/components/tabs/tabs.component.ts","../../../projects/core/components/tabs/tabs.template.html","../../../projects/core/components/tabs/tabs.module.ts","../../../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/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/jtext-api.service.ts","../../../projects/core/editor/services/editor.service.ts","../../../projects/core/editor/services/markers.service.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.html","../../../projects/core/editor/components/marker-select/marker-select.component.ts","../../../projects/core/editor/components/marker-select/marker-select.component.html","../../../projects/core/editor/components/marker-select/marker-select.options.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.html","../../../projects/core/editor/components/marker-modal/marker-modal.options.ts","../../../projects/core/editor/utils/create-link-modal.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.html","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.options.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.html","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.options.ts","../../../projects/core/editor/components/editor-tool/editor-tool.component.ts","../../../projects/core/editor/pipes/file-size.pipe.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/remove-element-tag-wrapper.ts","../../../projects/core/editor/utils/create-tooltip.ts","../../../projects/core/editor/utils/file-uploader.ts","../../../projects/core/editor/utils/recalculate-indexes.ts","../../../projects/core/editor/utils/split-html.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/config/custom-elements.ts","../../../projects/core/editor/config/editor.provider.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-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/interceptors/x-ndjson.interceptor.ts","../../../projects/core/interceptors/loader.interceptor.ts","../../../projects/core/widgets/loader/loader.component.ts","../../../projects/core/widgets/loader/loader.component.html","../../../projects/core/widgets/delete-modal/delete-modal.component.ts","../../../projects/core/widgets/delete-modal/delete-modal.component.html","../../../projects/core/widgets/categories/services/selected-category.service.ts","../../../projects/core/widgets/general-control-error-hint/general-control-error-hint.component.ts","../../../projects/core/widgets/general-control-error-hint/general-control-error-hint.component.html","../../../projects/core/widgets/categories/components/category-form/category-form.component.ts","../../../projects/core/widgets/categories/components/category-form/category-form.component.html","../../../projects/core/widgets/categories/components/create-category-item/create-category-item.component.ts","../../../projects/core/widgets/categories/components/create-category-item/create-category-item.component.html","../../../projects/core/widgets/categories/components/category-item/category-item.component.ts","../../../projects/core/widgets/categories/components/category-item/category-item.component.html","../../../projects/core/widgets/categories/components/categories-list/categories-list.component.ts","../../../projects/core/widgets/categories/components/categories-list/categories-list.component.html","../../../projects/core/widgets/categories/categories.component.ts","../../../projects/core/widgets/categories/categories.component.html","../../../projects/core/widgets/utility-info/utility-info.component.ts","../../../projects/core/widgets/utility-info/utility-info.component.html","../../../projects/core/widgets/checklist-block/services/checklist-block.service.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.html","../../../projects/core/widgets/checklist-block/checklist-block.component.ts","../../../projects/core/widgets/checklist-block/checklist-block.component.html","../../../projects/core/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-accordion',\r\n templateUrl: './accordion.template.html',\r\n styleUrls: ['./accordion.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionComponent {\r\n}\r\n","<ng-content select=\"cui-accordion-item\"></ng-content>\r\n","import { Directive, effect, inject, input, model, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cuiAccordion]',\r\n standalone: true,\r\n host: {\r\n '(click)': 'onToggle($event)'\r\n }\r\n})\r\nexport class CuiAccordionDirective {\r\n private readonly renderer = inject(Renderer2);\r\n\r\n private wrapper!: HTMLElement;\r\n\r\n public readonly content = input.required<HTMLElement>();\r\n public readonly isOpen = model(true);\r\n\r\n constructor() {\r\n this.initWrapperEffect();\r\n this.initOpenChangesEffect();\r\n }\r\n\r\n protected onToggle(event: Event): void {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n\r\n this.isOpen.update((prev) => !prev);\r\n }\r\n\r\n private initWrapperEffect(): void {\r\n const effectRef = effect(() => {\r\n const content = this.content();\r\n\r\n this.wrapper = this.renderer.createElement('div');\r\n\r\n content.after(this.wrapper);\r\n this.renderer.appendChild(this.wrapper, content);\r\n\r\n effectRef.destroy();\r\n });\r\n }\r\n\r\n private initOpenChangesEffect(): void {\r\n effect(() => {\r\n const isOpen = this.isOpen();\r\n const doAction = isOpen ? this.close : this.open;\r\n\r\n doAction.call(this, this.wrapper);\r\n });\r\n }\r\n\r\n private open(wrapper: HTMLElement): void {\r\n this.renderer.setStyle(wrapper, 'visibility', 'hidden');\r\n this.renderer.setStyle(wrapper, 'height', '0');\r\n this.renderer.setStyle(wrapper, 'overflow', 'hidden')\r\n }\r\n\r\n private close(wrapper: HTMLElement): void {\r\n this.renderer.setStyle(wrapper, 'visibility', 'visible');\r\n this.renderer.setStyle(wrapper, 'height', '');\r\n this.renderer.setStyle(wrapper, 'overflow', '');\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type {\r\n CuiAppearanceAction,\r\n CuiAppearanceDestructive,\r\n CuiAppearanceFlat,\r\n CuiAppearanceGhost,\r\n CuiAppearanceLink,\r\n CuiAppearanceOutlined,\r\n CuiAppearanceOutlinedGray,\r\n CuiAppearanceSecondary,\r\n CuiShapeRounded,\r\n CuiSizeMd,\r\n CuiSizeSm,\r\n CuiSizeXs,\r\n CuiSizeXxs\r\n} from '../../types';\r\n\r\nexport interface CuiButtonOptions {\r\n readonly appearance:\r\n | CuiAppearanceAction\r\n | CuiAppearanceSecondary\r\n | CuiAppearanceOutlined\r\n | CuiAppearanceOutlinedGray\r\n | CuiAppearanceGhost\r\n | CuiAppearanceFlat\r\n | CuiAppearanceDestructive\r\n | CuiAppearanceLink\r\n readonly shape: CuiShapeRounded | null;\r\n readonly size:\r\n | CuiSizeXxs\r\n | CuiSizeXs\r\n | CuiSizeSm\r\n | CuiSizeMd;\r\n}\r\n\r\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\r\n appearance: 'action',\r\n shape: null,\r\n size: 'sm'\r\n};\r\n\r\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\r\n factory: () => CUI_BUTTON_DEFAULT_OPTIONS\r\n});\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CUI_ICONS, cuiIsIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n selector: 'cui-svg[icon]',\r\n templateUrl: './svg.template.html',\r\n styleUrls: ['./svg.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSvgComponent {\r\n private readonly domSanitizer = inject(DomSanitizer);\r\n\r\n protected safeSvgContent!: SafeHtml;\r\n\r\n @Input()\r\n public width?: number;\r\n\r\n @Input()\r\n public height?: number;\r\n\r\n @Input()\r\n @HostBinding('style.--stroke-width')\r\n public strokeWidth?: number;\r\n\r\n @Input()\r\n @HostBinding('style.--color')\r\n public color?: string;\r\n\r\n @Input()\r\n public set icon(icon: CuiIcon | string) {\r\n // TODO: В данном случае подключаются все иконки (вероятно, можно как-то оптимизировано их подключать)\r\n this.safeSvgContent = this.domSanitizer.bypassSecurityTrustHtml(cuiIsIcon(icon)\r\n ? CUI_ICONS[icon]\r\n : icon);\r\n }\r\n\r\n @HostBinding('class._with-stroke-width')\r\n public get isWithStrokeWidth(): boolean {\r\n return !!this.strokeWidth;\r\n }\r\n\r\n @HostBinding('class._with-color')\r\n public get isWithColor(): boolean {\r\n return !!this.color;\r\n }\r\n}\r\n","<span\r\n [innerHTML]=\"safeSvgContent\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n></span>","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n Input,\r\n ViewChild,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_BUTTON_OPTIONS, CuiButtonOptions } from './button.options';\r\n\r\n@Component({\r\n selector: 'button[cuiButton], a[cuiButton]',\r\n templateUrl: './button.template.html',\r\n styleUrls: ['./button.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\r\n\r\n protected readonly AppearanceIconColors: Record<CuiButtonOptions['appearance'], string> = {\r\n action: '--c-action-icon-color',\r\n secondary: '--c-secondary-icon-color',\r\n outlined: '--c-outlined-icon-color',\r\n 'outlined-gray': '--c-outlined-gray-icon-color',\r\n ghost: '--c-ghost-icon-color',\r\n flat: '--c-flat-icon-color',\r\n destructive: '--c-destructive-icon-color',\r\n link: '--c-link-icon-color'\r\n };\r\n protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\r\n protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonOptions['appearance'][] = [\r\n 'secondary',\r\n 'outlined',\r\n 'outlined-gray',\r\n 'ghost'\r\n ];\r\n\r\n protected _appearance = this.cuiButtonOptions.appearance;\r\n protected iconColor = this.getIconColor(this._appearance);\r\n protected _size = this.cuiButtonOptions.size;\r\n protected iconDimensions = {\r\n width: 20,\r\n height: 20\r\n };\r\n\r\n @Input()\r\n @HostBinding('attr.data-shape')\r\n public shape = this.cuiButtonOptions.shape;\r\n\r\n @Input()\r\n @HostBinding('class._disabled')\r\n public disabled = false;\r\n\r\n @Input()\r\n @HostBinding('class._loading')\r\n public isLoaderShown = false;\r\n\r\n @Input()\r\n public icon?: CuiIcon | string;\r\n\r\n @Input()\r\n public iconRight?: CuiIcon | string;\r\n\r\n @Input()\r\n @HostBinding('attr.data-appearance')\r\n public get appearance(): CuiButtonOptions['appearance'] {\r\n return this._appearance;\r\n }\r\n\r\n public set appearance(appearance: CuiButtonOptions['appearance']) {\r\n this._appearance = appearance;\r\n\r\n this.changeIconColor();\r\n }\r\n\r\n @Input()\r\n @HostBinding('attr.data-size')\r\n public get size(): CuiButtonOptions['size'] {\r\n return this._size;\r\n }\r\n\r\n public set size(size: CuiButtonOptions['size']) {\r\n this._size = size;\r\n\r\n if (size === 'xxs') {\r\n this.iconDimensions = {\r\n width: 16,\r\n height: 16\r\n };\r\n\r\n return;\r\n }\r\n\r\n this.iconDimensions = {\r\n width: 20,\r\n height: 20\r\n };\r\n }\r\n\r\n @HostBinding('class._only-icon')\r\n protected containsOnlyIcon = false;\r\n\r\n @HostBinding('disabled')\r\n protected get isDisabled(): boolean {\r\n return this.disabled || this.isLoaderShown;\r\n }\r\n\r\n @ViewChild('content')\r\n protected content!: ElementRef<HTMLSpanElement>;\r\n\r\n public ngOnInit(): void {\r\n this.initIconColor();\r\n }\r\n\r\n private initIconColor(): void {\r\n this.changeIconColor();\r\n }\r\n\r\n private changeIconColor(): void {\r\n Promise.resolve().then(() => {\r\n this.iconColor = this.getIconColor(this._appearance);\r\n\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private getIconColor(appearance: CuiButtonOptions['appearance']): string {\r\n const customIconColor = this.window\r\n .getComputedStyle(this.element)\r\n .getPropertyValue(this.AppearanceIconColors[appearance]);\r\n\r\n if (customIconColor) {\r\n return customIconColor;\r\n }\r\n\r\n if (this.BUTTON_ICONS_COLOR_BASE_500.includes(appearance)) {\r\n return this.COLOR_BASE_500;\r\n }\r\n\r\n return 'currentColor';\r\n }\r\n}\r\n","<span\r\n class=\"c-wrapper\"\r\n [class.c-wrapper_invisible]=\"isLoaderShown\"\r\n>\r\n <cui-svg\r\n *ngIf=\"icon\"\r\n [icon]=\"icon\"\r\n [width]=\"iconDimensions.width\"\r\n [height]=\"iconDimensions.height\"\r\n [color]=\"iconColor\"\r\n ></cui-svg>\r\n <span\r\n #content\r\n class=\"c-content\"\r\n ><ng-content></ng-content></span>\r\n <cui-svg\r\n *ngIf=\"iconRight\"\r\n [icon]=\"iconRight\"\r\n [width]=\"iconDimensions.width\"\r\n [height]=\"iconDimensions.height\"\r\n [color]=\"iconColor\"\r\n ></cui-svg>\r\n</span>\r\n<cui-svg\r\n *ngIf=\"isLoaderShown\"\r\n icon=\"cuiIconLoading\"\r\n class=\"c-loader\"\r\n></cui-svg>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CuiAccordionAppearance } from './accordion-item.options';\r\n\r\n@Component({\r\n selector: 'cui-accordion-item',\r\n templateUrl: './accordion-item.template.html',\r\n styleUrls: ['./accordion-item.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionItemComponent {\r\n @Input()\r\n public isOpen = true;\r\n\r\n @Input()\r\n public appearance: CuiAccordionAppearance = 'default';\r\n\r\n @Output()\r\n public readonly isOpenChange = new EventEmitter<boolean>();\r\n\r\n protected get buttonIcon(): CuiIcon {\r\n return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';\r\n }\r\n\r\n @HostBinding('attr.appearance')\r\n public get _appearance(): string {\r\n return this.appearance;\r\n }\r\n\r\n protected onRowToggle(): void {\r\n this.isOpen = !this.isOpen;\r\n\r\n this.isOpenChange.emit(this.isOpen);\r\n }\r\n}\r\n","<header class=\"c-header\">\r\n <button\r\n cuiButton\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"buttonIcon\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <div class=\"c-header__wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</header>\r\n<div *ngIf=\"isOpen\" class=\"c-content\">\r\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSvgComponent } from './svg.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiSvgComponent],\r\n exports: [CuiSvgComponent]\r\n})\r\nexport class CuiSvgModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiButtonComponent } from './button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiButtonComponent],\r\n exports: [CuiButtonComponent]\r\n})\r\nexport class CuiButtonModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiAccordionComponent } from './accordion.component';\r\nimport { CuiAccordionItemComponent } from './accordion-item/accordion-item.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule,\r\n CuiButtonModule\r\n ],\r\n declarations: [\r\n CuiAccordionComponent,\r\n CuiAccordionItemComponent\r\n ],\r\n exports: [\r\n CuiAccordionComponent,\r\n CuiAccordionItemComponent\r\n ]\r\n})\r\nexport class CuiAccordionModule {\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiStatus } from '../../types';\r\n\r\nexport type CuiNotificationIcons = Record<CuiStatus, { icon: string }>;\r\n\r\nexport type CuiNotificationIconOptions = Record<CuiStatus, { color: string }>;\r\n\r\nexport interface CuiNotificationOptions {\r\n readonly status: CuiStatus;\r\n readonly mode: 'default' | 'light';\r\n}\r\n\r\nexport const CUI_NOTIFICATION_DEFAULT_OPTIONS: CuiNotificationOptions = {\r\n status: 'info',\r\n mode: 'default'\r\n};\r\n\r\nexport const CUI_NOTIFICATION_OPTIONS = cuiCreateToken(CUI_NOTIFICATION_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_NOTIFICATION_ICONS: CuiNotificationIcons = {\r\n info: {\r\n icon: 'cuiIconInfo'\r\n },\r\n success: {\r\n icon: 'cuiIconCheckCircle'\r\n },\r\n alert: {\r\n icon: 'cuiIconAlertTriangle'\r\n },\r\n error: {\r\n icon: 'cuiIconXCircle'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE: CuiNotificationIconOptions = {\r\n info: {\r\n color: 'var(--c-info-icon-color)'\r\n },\r\n success: {\r\n color: 'var(--cui-green-500)'\r\n },\r\n alert: {\r\n color: 'var(--cui-yellow-400)'\r\n },\r\n error: {\r\n color: 'var(--cui-danger)'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE: CuiNotificationIconOptions = {\r\n info: {\r\n color: 'var(--cui-info)'\r\n },\r\n success: {\r\n color: 'var(--cui-green-700)'\r\n },\r\n alert: {\r\n color: 'var(--cui-yellow-400)'\r\n },\r\n error: {\r\n color: 'var(--cui-danger)'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS: Record<CuiNotificationOptions['mode'], CuiNotificationIconOptions> = {\r\n default: CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE,\r\n light: CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE\r\n}","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n CUI_NOTIFICATION_ICON_OPTIONS,\r\n CuiNotificationIconOptions,\r\n CuiNotificationOptions\r\n} from './notification.options';\r\nimport { CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS } from './notification.options';\r\n\r\n@Component({\r\n selector: 'cui-notification',\r\n templateUrl: './notification.template.html',\r\n styleUrls: ['./notification.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiNotificationComponent implements CuiNotificationOptions, OnInit {\r\n private readonly cuiNotificationOptions = inject(CUI_NOTIFICATION_OPTIONS);\r\n\r\n protected readonly ICONS = CUI_NOTIFICATION_ICONS;\r\n protected readonly ICON_OPTIONS = CUI_NOTIFICATION_ICON_OPTIONS;\r\n\r\n protected iconOptions!: CuiNotificationIconOptions;\r\n\r\n @Input()\r\n @HostBinding('attr.data-status')\r\n public status = this.cuiNotificationOptions.status;\r\n\r\n @Input()\r\n @HostBinding('attr.data-mode')\r\n public mode = this.cuiNotificationOptions.mode;\r\n\r\n @Input()\r\n public isCloseable = false;\r\n\r\n @Output()\r\n public readonly closed = new EventEmitter<void>();\r\n\r\n public ngOnInit(): void {\r\n this.initIconOptions();\r\n }\r\n\r\n protected onClose(): void {\r\n this.closed.next();\r\n }\r\n\r\n private initIconOptions(): void {\r\n this.iconOptions = this.ICON_OPTIONS[this.mode];\r\n }\r\n}\r\n","<cui-svg\r\n class=\"c-icon\"\r\n [icon]=\"ICONS[status].icon\"\r\n [color]=\"iconOptions[status].color\"\r\n></cui-svg>\r\n<div class=\"c-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n<button\r\n *ngIf=\"isCloseable\"\r\n class=\"c-button\"\r\n (click)=\"onClose()\"\r\n>\r\n <cui-svg\r\n icon=\"cuiIconX\"\r\n color=\"var(--cui-gray-0)\"\r\n />\r\n</button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiNotificationComponent } from './notification.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiNotificationComponent],\r\n exports: [CuiNotificationComponent]\r\n})\r\nexport class CuiNotificationModule {\r\n}\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory, CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\nimport { CUI_NOTIFICATION_OPTIONS } from '../notification';\r\n\r\nexport const CUI_ALERTS = cuiCreateToken(\r\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([])\r\n);\r\n\r\nexport const CUI_ALERT_DEFAULT_OPTIONS: Omit<CuiAlertOptions, 'status'> = {\r\n label: '',\r\n needAutoClose: true,\r\n isCloseable: true,\r\n mode: 'default',\r\n position: 'right',\r\n resizing: 'fixed'\r\n};\r\n\r\nexport const CUI_ALERT_OPTIONS = cuiCreateTokenFromFactory(\r\n () => ({\r\n ...CUI_ALERT_DEFAULT_OPTIONS,\r\n ...inject(CUI_NOTIFICATION_OPTIONS)\r\n })\r\n);\r\n\r\nexport const CUI_ALERT_CONTEXT = new InjectionToken<CuiPopover<CuiAlertOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, HostBinding } from '@angular/core';\r\n\r\nimport { CUI_ALERT_CONTEXT } from './alert.tokens';\r\nimport type { CuiAlertResizing } from './alert.types';\r\n\r\n@Component({\r\n selector: 'cui-alert',\r\n templateUrl: './alert.template.html',\r\n styleUrls: ['./alert.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAlertComponent implements OnInit {\r\n protected readonly context = inject(CUI_ALERT_CONTEXT);\r\n\r\n protected readonly AUTO_CLOSE_DURATION_IN_MILLISECONDS = 3000;\r\n\r\n @HostBinding('attr.data-resizing')\r\n protected get resizing(): CuiAlertResizing {\r\n return this.context.resizing;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initAutoClose();\r\n }\r\n\r\n protected onClosed(): void {\r\n this.context.$implicit.complete();\r\n }\r\n\r\n private initAutoClose(): void {\r\n if (!this.context.needAutoClose) {\r\n return;\r\n }\r\n\r\n setTimeout(this.onClosed.bind(this), this.AUTO_CLOSE_DURATION_IN_MILLISECONDS);\r\n }\r\n}\r\n","<cui-notification\r\n [status]=\"context.status\"\r\n [mode]=\"context.mode\"\r\n [isCloseable]=\"context.isCloseable\"\r\n (closed)=\"onClosed()\"\r\n>\r\n <h2\r\n *ngIf=\"context.label\"\r\n class=\"c-heading\"\r\n >\r\n {{ context.label }}\r\n </h2>\r\n {{ context.content }}\r\n</cui-notification>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_ALERT_CONTEXT, CUI_ALERTS } from './alert.tokens';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-alerts',\r\n templateUrl: './alerts.template.html',\r\n styleUrls: ['./alerts.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiAlertsComponent implements OnInit {\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n protected readonly alerts$: Observable<ReadonlyArray<CuiPopover<CuiAlertOptions>>> = inject(CUI_ALERTS);\r\n protected alertInjectors!: ReadonlyArray<Injector>;\r\n\r\n public ngOnInit(): void {\r\n this.initAlertInjectorsSubscription();\r\n }\r\n\r\n protected trackByFn(_: number, alert: CuiPopover<CuiAlertOptions>): string {\r\n return alert.id;\r\n }\r\n\r\n protected alertsMatcher(alert: CuiPopover<CuiAlertOptions>, position: string): boolean {\r\n return alert.position === position;\r\n }\r\n\r\n protected initAlertInjectorsSubscription(): void {\r\n this.alerts$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(dialogs => this.alertInjectors = dialogs.map(useValue => Injector.create({\r\n providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\r\n })));\r\n }\r\n}\r\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\r\n <div class=\"c-wrapper c-wrapper_position_center\">\r\n <ng-container *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'center'; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n </ng-container>\r\n </div>\r\n <div class=\"c-wrapper c-wrapper_position_right\">\r\n <ng-container *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'right'; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiFilterPipe, CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport { CuiAlertsComponent } from './alerts.component';\r\nimport { CuiNotificationModule } from '../notification';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiFilterPipe,\r\n CuiNotificationModule,\r\n CuiLetDirective\r\n ],\r\n declarations: [\r\n CuiAlertComponent,\r\n CuiAlertsComponent\r\n ],\r\n exports: [\r\n CuiAlertComponent,\r\n CuiAlertComponent,\r\n CuiAlertsComponent\r\n ]\r\n})\r\nexport class CuiAlertModule {\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_ALERT_OPTIONS, CUI_ALERTS } from './alert.tokens';\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n useFactory: () => new CuiAlertService(CUI_ALERTS, CuiAlertComponent, inject(CUI_ALERT_OPTIONS))\r\n})\r\nexport class CuiAlertService extends CuiPopoverService<CuiAlertOptions> {\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport interface CuiBadgeOptions {\r\n readonly color: 'light-blue' | 'yellow' | 'green' | 'gray' | 'dark-gray' | 'red' | 'violet';\r\n readonly size: CuiSizeSm | CuiSizeMd;\r\n readonly isWithDot: boolean;\r\n}\r\n\r\nexport const CUI_BADGE_DEFAULT_OPTIONS: CuiBadgeOptions = {\r\n color: 'light-blue',\r\n size: 'sm',\r\n isWithDot: false\r\n};\r\n\r\nexport const CUI_BADGE_OPTIONS = cuiCreateToken(CUI_BADGE_DEFAULT_OPTIONS);","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\n\r\nimport type { CuiBadgeOptions } from './badge.options';\r\nimport { CUI_BADGE_OPTIONS } from './badge.options';\r\n\r\n@Component({\r\n selector: 'cui-badge',\r\n templateUrl: './badge.template.html',\r\n styleUrls: ['./badge.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBadgeComponent implements CuiBadgeOptions {\r\n private readonly options = inject(CUI_BADGE_OPTIONS);\r\n\r\n @Input()\r\n @HostBinding('attr.data-color')\r\n public color = this.options.color;\r\n\r\n @Input()\r\n @HostBinding('attr.data-size')\r\n public size = this.options.size;\r\n\r\n @Input()\r\n public isWithDot = this.options.isWithDot;\r\n}\r\n","<span\r\n *ngIf=\"isWithDot\"\r\n class=\"c-dots\"\r\n></span>\r\n<ng-content />","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiBadgeComponent],\r\n exports: [CuiBadgeComponent]\r\n})\r\nexport class CuiBadgeModule {\r\n}\r\n","import type { CuiStatus } from '../../types';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type CuiBannerIconOptions = {\r\n [k in CuiStatus]: {\r\n icon: CuiIcon;\r\n color: string;\r\n }\r\n}\r\n\r\nexport interface CuiBannerOptions {\r\n readonly status: CuiStatus;\r\n}\r\n\r\nexport const CUI_BANNER_DEFAULT_OPTIONS: CuiBannerOptions = {\r\n status: 'info'\r\n};\r\n\r\nexport const CUI_BANNER_OPTIONS = cuiCreateToken(CUI_BANNER_DEFAULT_OPTIONS);\r\n","import type {AbstractType, ExistingProvider, FactoryProvider, Type} from '@angular/core';\r\nimport {Optional, SkipSelf} from '@angular/core';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\nimport type {CuiPoint} from '../types';\r\n\r\nexport abstract class CuiAccessor {\r\n public abstract readonly type: string;\r\n}\r\n\r\nexport abstract class CuiPositionAccessor extends CuiAccessor {\r\n /*\r\n * TODO @deprecated switching from DOMRect to HTMLElement in v5\r\n */\r\n public abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint;\r\n}\r\n\r\nexport abstract class CuiRectAccessor extends CuiAccessor {\r\n public abstract getClientRect(): DOMRect;\r\n}\r\n\r\nexport function cuiProvideAccessor<T extends CuiAccessor>(\r\n provide: AbstractType<T>,\r\n type: string,\r\n fallback: Type<T>,\r\n): FactoryProvider {\r\n return {\r\n provide,\r\n deps: [[new SkipSelf(), new Optional(), provide], fallback],\r\n useFactory: cuiFallbackAccessor<T>(type),\r\n };\r\n}\r\n\r\nexport function cuiFallbackAccessor<T extends CuiAccessor>(\r\n type: string,\r\n): (accessors: readonly T[] | null, fallback: T) => T {\r\n return (accessors, fallback) =>\r\n accessors?.find?.(\r\n (accessor) => accessor !== fallback && accessor.type === type,\r\n ) || fallback;\r\n}\r\n\r\nexport function cuiPositionAccessorFor(\r\n type: string,\r\n fallback: Type<CuiPositionAccessor>,\r\n): FactoryProvider {\r\n return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiRectAccessorFor(\r\n type: string,\r\n fallback: Type<CuiRectAccessor>,\r\n): FactoryProvider {\r\n return cuiProvideAccessor(CuiRectAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiAsPositionAccessor(\r\n accessor: Type<CuiPositionAccessor>,\r\n): ExistingProvider {\r\n return cuiProvide(CuiPositionAccessor, accessor, true);\r\n}\r\n\r\nexport function cuiAsRectAccessor(accessor: Type<CuiRectAccessor>): ExistingProvider {\r\n return cuiProvide(CuiRectAccessor, accessor, true);\r\n}\r\n","import type {ExistingProvider, Type} from '@angular/core';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\n\r\nexport abstract class CuiVehicle {\r\n public abstract readonly type: string;\r\n public abstract toggle(value: boolean): void;\r\n}\r\n\r\nexport function cuiAsVehicle(vehicle: Type<CuiVehicle>): ExistingProvider {\r\n return cuiProvide(CuiVehicle, vehicle, true);\r\n}\r\n","import type {AfterViewInit, ExistingProvider, Type} from '@angular/core';\r\nimport {DestroyRef, Directive, inject} from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\nimport {distinctUntilChanged, merge, Observable} from 'rxjs';\r\n\r\nimport {CuiVehicle} from './vehicle';\r\n\r\nexport abstract class CuiDriver extends Observable<boolean> {\r\n public abstract readonly type: string;\r\n}\r\n\r\nexport function cuiAsDriver(driver: Type<CuiDriver>): ExistingProvider {\r\n return cuiProvide(CuiDriver, driver, true);\r\n}\r\n\r\n@Directive()\r\nexport abstract class CuiDriverDirective implements AfterViewInit {\r\n public abstract type: string;\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly drivers: readonly CuiDriver[] =\r\n inject<any>(CuiDriver, {self: true, optional: true}) || [];\r\n\r\n private readonly vehicles: readonly CuiVehicle[] = inject<any>(CuiVehicle, {\r\n self: true,\r\n optional: true,\r\n });\r\n\r\n public ngAfterViewInit(): void {\r\n const vehicle = this.vehicles?.find(({type}) => type === this.type);\r\n\r\n merge(...this.drivers.filter(({type}) => type === this.type))\r\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n .subscribe((value) => {\r\n vehicle?.toggle(value);\r\n });\r\n }\r\n}\r\n","import {inject, Injectable, NgZone} from '@angular/core';\r\nimport {CUI_ANIMATION_FRAME} from '@cuby-ui/cdk';\r\nimport {EMPTY_CLIENT_RECT, cuiInjectElement, cuiZonefree} from '@cuby-ui/cdk';\r\nimport {CuiPositionAccessor} from '../classes';\r\nimport type {CuiPoint} from '../types';\r\nimport {finalize, map, Observable, startWith} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CuiPositionService extends Observable<CuiPoint> {\r\n private readonly el = cuiInjectElement();\r\n private readonly accessor = inject(CuiPositionAccessor);\r\n\r\n constructor() {\r\n const animationFrame$ = inject(CUI_ANIMATION_FRAME);\r\n const zone = inject(NgZone);\r\n\r\n super((subscriber) =>\r\n animationFrame$\r\n .pipe(\r\n startWith(null),\r\n map(() =>\r\n this.accessor.getPosition(\r\n this.el.getBoundingClientRect(),\r\n this.el,\r\n ),\r\n ),\r\n cuiZonefree(zone),\r\n finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT)),\r\n )\r\n .subscribe(subscriber),\r\n );\r\n }\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nexport type CuiTheme = 'light' | 'dark';\r\n\r\nexport const CUI_THEME_STORAGE_DEFAULT_KEY = 'cuiTheme';\r\n\r\nexport const CUI_DEFAULT_THEME: CuiTheme = 'light';\r\n\r\nexport const CUI_THEME_STORAGE_KEY = cuiCreateToken(CUI_THEME_STORAGE_DEFAULT_KEY);\r\n\r\nexport const CUI_THEME = cuiCreateToken<CuiTheme>(CUI_DEFAULT_THEME);","import { inject, Injectable } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiTheme } from './theme.options';\r\nimport { CUI_THEME, CUI_THEME_STORAGE_KEY } from './theme.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiThemeService extends BehaviorSubject<CuiTheme> {\r\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n private readonly key = inject(CUI_THEME_STORAGE_KEY);\r\n\r\n constructor() {\r\n super(\r\n inject(CUI_LOCAL_STORAGE).getItem(inject(CUI_THEME_STORAGE_KEY)) as CuiNullable<CuiTheme>\r\n ?? inject(CUI_THEME)\r\n );\r\n }\r\n\r\n public override next(theme: CuiTheme): void {\r\n this.localStorage.setItem(this.key, theme);\r\n super.next(theme);\r\n }\r\n\r\n // При работе только двух тем\r\n public switch(): void {\r\n this.next(this.value === 'light' ? 'dark' : 'light');\r\n }\r\n}","import type { CuiValueOf } from '@cuby-ui/cdk';\r\n\r\nexport const CuiLoadingState = {\r\n LOADING: 'loading',\r\n COMPLETED: 'completed',\r\n INITIAL: 'initial'\r\n} as const;\r\n\r\nexport type CuiLoadingState = CuiValueOf<typeof CuiLoadingState>;\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nimport { CuiLoadingState } from './loader.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiLoaderService {\r\n private readonly RESET_TO_INITIAL_TIME = 1000;\r\n\r\n private readonly loaderStateSignal = signal<CuiLoadingState>(CuiLoadingState.INITIAL);\r\n\r\n private requestCount = 0;\r\n private resetLoadingStateTimerId?: ReturnType<typeof setTimeout>;\r\n\r\n public readonly loaderState = this.loaderStateSignal.asReadonly();\r\n\r\n constructor() {\r\n AngularOutsideLoaderService.setInstance(this);\r\n }\r\n\r\n public setLoading(): void {\r\n this.requestCount++;\r\n // need to use without queueMicrotask (error)\r\n queueMicrotask(() => this.loaderStateSignal.set(CuiLoadingState.LOADING));\r\n }\r\n\r\n public setCompleted(): void {\r\n this.requestCount = this.requestCount && this.requestCount - 1;\r\n\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n return this.loaderStateSignal.set(CuiLoadingState.COMPLETED);\r\n }\r\n\r\n public handleCompletedRequest(): void {\r\n this.setCompleted();\r\n clearTimeout(this.resetLoadingStateTimerId);\r\n\r\n this.resetLoadingStateTimerId = setTimeout(() => {\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }, this.RESET_TO_INITIAL_TIME);\r\n }\r\n\r\n public reset(): void {\r\n this.requestCount = 0;\r\n this.resetLoadingStateTimerId = undefined;\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }\r\n}\r\n\r\n// NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT\r\nexport class AngularOutsideLoaderService {\r\n private static instance: CuiLoaderService;\r\n\r\n public static getInstance(): CuiLoaderService {\r\n if (!this.instance) {\r\n throw new Error(\"The instance hasn't been initialized yet\");\r\n }\r\n\r\n return this.instance;\r\n }\r\n\r\n public static setInstance(instance: CuiLoaderService): void {\r\n this.instance = instance;\r\n }\r\n}\r\n","import {inject, Injectable} from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport {CUI_IS_WEBKIT} from '@cuby-ui/cdk';\r\nimport type {CuiPoint} from '../types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CuiVisualViewportService {\r\n private readonly isWebkit = inject(CUI_IS_WEBKIT);\r\n private readonly win = inject(CUI_WINDOW);\r\n\r\n // https://bugs.webkit.org/show_bug.cgi?id=207089\r\n public correct(point: CuiPoint): CuiPoint {\r\n return this.isWebkit\r\n ? [\r\n point[0] + (this.win.visualViewport?.offsetTop ?? 0),\r\n point[1] + (this.win.visualViewport?.offsetLeft ?? 0),\r\n ]\r\n : point;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\r\n\r\nimport type { CuiBannerIconOptions, CuiBannerOptions } from './banner.options';\r\nimport { CUI_BANNER_OPTIONS } from './banner.options';\r\nimport type { CuiTheme } from '../../services';\r\nimport { CuiThemeService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-banner',\r\n templateUrl: './banner.template.html',\r\n styleUrls: ['./banner.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBannerComponent implements CuiBannerOptions {\r\n private readonly options = inject(CUI_BANNER_OPTIONS);\r\n protected readonly theme$ = inject(CuiThemeService);\r\n\r\n protected readonly ICON_OPTIONS: CuiBannerIconOptions = {\r\n info: {\r\n icon: 'cuiIconInfo',\r\n color: 'var(--c-info-icon-color)'\r\n },\r\n success: {\r\n icon: 'cuiIconCheckCircle',\r\n color: 'var(--cui-success)'\r\n },\r\n alert: {\r\n icon: 'cuiIconAlertTriangle',\r\n color: 'var(--c-alert-icon-color)'\r\n },\r\n error: {\r\n icon: 'cuiIconAlertCircle',\r\n color: 'var(--cui-danger)'\r\n },\r\n };\r\n protected readonly THEME_CLOSE_BUTTON_ICON_COLORS: Record<string, string> = {\r\n light: 'var(--cui-gray-500)',\r\n dark: 'var(--cui-gray-0)'\r\n }\r\n\r\n @Input()\r\n @HostBinding('attr.data-status')\r\n public status = this.options.status;\r\n\r\n @Input()\r\n public isCloseable = true;\r\n\r\n @Input()\r\n public label?: string;\r\n\r\n @Input()\r\n public actionButtonText?: string;\r\n\r\n @Output()\r\n public actionButtonClicked = new EventEmitter<void>();\r\n\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n protected onAction(): void {\r\n this.actionButtonClicked.emit();\r\n }\r\n\r\n protected onClose(): void {\r\n this.closed.emit();\r\n }\r\n}\r\n","<cui-svg\r\n *cuiLet=\"ICON_OPTIONS[status] as iconOption\"\r\n [icon]=\"iconOption.icon\"\r\n [color]=\"iconOption.color\"\r\n class=\"c-icon\"\r\n></cui-svg>\r\n<div class=\"c-wrapper\">\r\n <h2\r\n *ngIf=\"label\"\r\n class=\"c-heading\"\r\n >\r\n {{ label }}\r\n </h2>\r\n <ng-content></ng-content>\r\n <button\r\n cuiButton\r\n *ngIf=\"actionButtonText\"\r\n appearance=\"link\"\r\n class=\"c-action\"\r\n (click)=\"onAction()\"\r\n >\r\n {{ actionButtonText }}\r\n </button>\r\n</div>\r\n<button\r\n *ngIf=\"isCloseable\"\r\n class=\"c-button\"\r\n (click)=\"onClose()\"\r\n>\r\n <cui-svg\r\n *cuiLet=\"theme$ | async as theme\"\r\n icon=\"cuiIconX\"\r\n [color]=\"THEME_CLOSE_BUTTON_ICON_COLORS[theme]\"\r\n />\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiBannerComponent } from './banner.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiButtonModule\r\n ],\r\n declarations: [CuiBannerComponent],\r\n exports: [CuiBannerComponent]\r\n})\r\nexport class CuiBannerModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\r\n\r\nimport { CuiItemDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n selector: 'cui-breadcrumbs',\r\n templateUrl: './breadcrumbs.template.html',\r\n styleUrls: ['./breadcrumbs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbsComponent {\r\n @ContentChildren(CuiItemDirective, { read: TemplateRef })\r\n protected readonly breadcrumbs!: QueryList<TemplateRef<unknown>>;\r\n}\r\n","<ng-container *ngIf=\"breadcrumbs.changes | async\"/>\r\n<ng-container *ngFor=\"let breadcrumb of breadcrumbs; let isLast = last\">\r\n <ng-container *ngTemplateOutlet=\"breadcrumb\" />\r\n <cui-svg\r\n *ngIf=\"!isLast\"\r\n icon=\"cuiIconSlashDivider\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: '[cuiBreadcrumb]',\r\n templateUrl: './breadcrumb.template.html',\r\n styleUrls: ['./breadcrumb.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbComponent {\r\n @Input()\r\n public isLast = false;\r\n}\r\n","<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBreadcrumbsComponent } from './breadcrumbs.component';\r\nimport { CuiBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [\r\n CuiBreadcrumbsComponent,\r\n CuiBreadcrumbComponent\r\n ],\r\n exports: [\r\n CuiBreadcrumbsComponent,\r\n CuiBreadcrumbComponent\r\n ]\r\n})\r\nexport class CuiBreadcrumbsModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-button-group',\r\n templateUrl: './button-group.template.html',\r\n styleUrls: ['./button-group.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonGroupComponent {\r\n}\r\n","<ng-content select=\"button[cuiButton], a[cuiButton]\"></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiButtonGroupComponent } from './button-group.component';\r\n\r\n@NgModule({\r\n declarations: [CuiButtonGroupComponent],\r\n exports: [CuiButtonGroupComponent]\r\n})\r\nexport class CuiButtonGroupModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"checkbox\"][cuiCheckbox]',\r\n template: '',\r\n styleUrls: ['./checkbox.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckboxComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiCheckboxComponent } from './checkbox.component';\r\n\r\n@NgModule({\r\n declarations: [CuiCheckboxComponent],\r\n exports: [CuiCheckboxComponent]\r\n})\r\nexport class CuiCheckboxModule {\r\n}\r\n","export const CUI_ROOT_SELECTOR = 'cui-root';","import { InjectionToken } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\nexport const CUI_DIALOGS = cuiCreateToken(\r\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([])\r\n);\r\n\r\nexport const CUI_DIALOG_DEFAULT_OPTIONS: CuiDialogOptions = {\r\n size: 'auto',\r\n data: undefined,\r\n dismissible: true\r\n};\r\n\r\nexport const CUI_DIALOG_OPTIONS = cuiCreateToken(CUI_DIALOG_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_DIALOG_CONTEXT = new InjectionToken<CuiPopover<CuiDialogOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CUI_DIALOGS } from './dialog.tokens';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-dialogs',\r\n templateUrl: './dialogs.template.html',\r\n styleUrls: ['./dialogs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiDialogsComponent implements OnInit {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n protected readonly dialogs$: Observable<ReadonlyArray<CuiPopover<CuiDialogOptions>>> = inject(CUI_DIALOGS);\r\n protected dialogInjectorCache = new Map<string, Injector>();\r\n protected dialogInjectors!: ReadonlyArray<Injector>;\r\n\r\n public ngOnInit(): void {\r\n this.initDialogsSubscription();\r\n }\r\n\r\n protected trackByFn(_: number, dialog: CuiPopover<CuiDialogOptions>): string {\r\n return dialog.id;\r\n }\r\n\r\n protected initDialogsSubscription(): void {\r\n this.dialogs$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(dialogs => {\r\n this.document.body.style.overflow = dialogs.length ? 'hidden' : '';\r\n this.dialogInjectors = dialogs.map(dialog => {\r\n if (!this.dialogInjectorCache.has(dialog.id)) {\r\n this.dialogInjectorCache.set(dialog.id, Injector.create({\r\n providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\r\n parent: dialog.injector\r\n }));\r\n }\r\n\r\n return this.dialogInjectorCache.get(dialog.id)!;\r\n });\r\n\r\n this.dialogInjectorCache.forEach((_, dialogId) => {\r\n if (dialogs.find(dialog => dialog.id === dialogId)) {\r\n return;\r\n }\r\n\r\n this.dialogInjectorCache.delete(dialogId);\r\n });\r\n });\r\n }\r\n}\r\n","<ng-container *cuiLet=\"dialogs$ | async as dialogs\">\r\n <ng-container *ngFor=\"let dialog of dialogs; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"dialog.component; injector: dialogInjectors[i]\"></ng-container>\r\n </ng-container>\r\n <div\r\n *ngIf=\"dialogs!.length\"\r\n class=\"c-overlay\"\r\n ></div>\r\n</ng-container>\r\n","import {\r\n animate,\r\n animateChild,\r\n query,\r\n stagger,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nconst TRANSITION = '{{duration}}ms ease-in-out';\r\nconst DURATION = {params: {duration: 300}};\r\nconst STAGGER = 300;\r\n\r\nexport interface CuiDurationOptions {\r\n params: {duration: number};\r\n value: string;\r\n}\r\n\r\n/**\r\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\r\n */\r\nexport const cuiParentAnimation = trigger('cuiParentAnimation', [\r\n transition(':leave', [query(':scope > *', [animateChild()], {optional: true})]),\r\n]);\r\n\r\n/**\r\n * Add on parent to stop initial :enter animation for children\r\n */\r\nexport const cuiParentStop = trigger('cuiParentStop', [transition(':enter', [])]);\r\n\r\nexport const cuiHost = trigger('cuiHost', [\r\n transition(':enter', [\r\n style({overflow: 'clip'}),\r\n query(':scope > *', [animateChild()], {optional: true}),\r\n ]),\r\n transition(':leave', [query(':scope > *', [animateChild()], {optional: true})]),\r\n]);\r\n\r\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\r\n transition(\r\n ':enter',\r\n [style({height: 0}), animate(TRANSITION, style({height: '*'}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({height: '*'}), animate(TRANSITION, style({height: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({height: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({height: '*'}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({height: '*'}),\r\n stagger(STAGGER, [animate(TRANSITION, style({height: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\r\n transition(\r\n ':enter',\r\n [style({width: 0}), animate(TRANSITION, style({width: '*'}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({width: '*'}), animate(TRANSITION, style({width: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({width: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({width: '*'}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({width: '*'}),\r\n stagger(STAGGER, [animate(TRANSITION, style({width: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeIn = trigger('cuiFadeIn', [\r\n transition(\r\n ':enter',\r\n [style({opacity: 0}), animate(TRANSITION, style({opacity: 1}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({opacity: 1}), animate(TRANSITION, style({opacity: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInList = trigger('cuiFadeInList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({opacity: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 1}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({opacity: 1}),\r\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInTop = trigger('cuiFadeInTop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInBottom = trigger('cuiFadeInBottom', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY({{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY({{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiDropdownAnimation = trigger('cuiDropdownAnimation', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiScaleIn = trigger('cuiScaleIn', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n animate('{{duration}}ms {{easing}}', style({transform: 'scale({{end}})'})),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300, easing: 'ease-in-out'}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiPop = trigger('cuiPop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{middle}})'})),\r\n animate(TRANSITION, style({transform: 'scale({{end}})'})),\r\n ],\r\n {params: {end: 1, middle: 1.1, start: 0, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{middle}})'})),\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ],\r\n {params: {end: 1, middle: 1.1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiScaleInList = trigger('cuiScaleInList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'scale({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideIn = trigger('cuiSlideIn', [\r\n transition(\r\n '* => left',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n 'left => *',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n '* => right',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n 'right => *',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInLeft = trigger('cuiSlideInLeft', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInLeftList = trigger('cuiSlideInLeftList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInRight = trigger('cuiSlideInRight', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInRightList = trigger('cuiSlideInRightList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInTop = trigger('cuiSlideInTop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translate3d(0,{{start}},0)', pointerEvents: 'none'}),\r\n animate(TRANSITION, style({transform: 'translate3d(0,{{end}},0)'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translate3d(0,{{end}},0)'}),\r\n animate(TRANSITION, style({transform: 'translate3d(0,{{start}},0)'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInTopList = trigger('cuiSlideInTopList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateY({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInBottom = trigger('cuiSlideInBottom', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateY(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInBottomList = trigger('cuiSlideInBottomList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY(-{{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);","import {Injectable} from '@angular/core';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\n/**\r\n * Service for displaying hints/tooltips\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CuiTooltipService extends BehaviorSubject<readonly CuiPortalItem[]> {\r\n constructor() {\r\n super([]);\r\n }\r\n\r\n public add(directive: CuiPortalItem): void {\r\n this.next(this.value.concat(directive));\r\n }\r\n\r\n public remove(directive: CuiPortalItem): void {\r\n if (this.value.includes(directive)) {\r\n this.next(this.value.filter((hint) => hint !== directive));\r\n }\r\n }\r\n}\r\n","import {NgForOf} from '@angular/common';\r\nimport type {OnInit} from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n inject,\r\n} from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {CuiActiveZone} from '@cuby-ui/cdk';\r\nimport {cuiParentAnimation} from '../../animations';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\r\n\r\nimport {CuiTooltipService} from './tooltip.service';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'cui-tooltips',\r\n imports: [NgForOf, PolymorpheusTemplate, CuiActiveZone, PolymorpheusOutlet],\r\n templateUrl: './tooltips.template.html',\r\n styleUrls: ['./tooltips.style.scss'],\r\n // So that we do not force OnPush on custom hints\r\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n animations: [cuiParentAnimation],\r\n host: {\r\n 'aria-live': 'polite',\r\n },\r\n})\r\nexport class CuiTooltips implements OnInit {\r\n private readonly hints$ = inject(CuiTooltipService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n protected hints: readonly CuiPortalItem[] = [];\r\n\r\n public ngOnInit(): void {\r\n // Due to this view being parallel to app content, `markForCheck` from `async` pipe\r\n // can happen after view was checked, so calling `detectChanges` instead\r\n this.hints$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hints) => {\r\n this.hints = hints;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n}\r\n","<div\r\n *ngFor=\"let hint of hints\"\r\n role=\"tooltip\"\r\n @cuiParentAnimation\r\n [cuiActiveZoneParent]=\"hint.activeZone || null\"\r\n\r\n>\r\n <ng-container *polymorpheusOutlet=\"hint.component; context: {$implicit: hint}\" />\r\n</div>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CuiThemeService } from '../../services';\r\nimport { CUI_ROOT_SELECTOR } from './root.options';\r\n\r\n@Component({\r\n selector: CUI_ROOT_SELECTOR,\r\n templateUrl: './root.template.html',\r\n styleUrls: ['./root.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService],\r\n})\r\nexport class CuiRootComponent implements OnInit {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly theme$ = inject(CuiThemeService);\r\n private readonly destroy$ = inject(CuiDestroyService);\r\n\r\n public ngOnInit(): void {\r\n this.initThemeSubscription();\r\n }\r\n\r\n private initThemeSubscription(): void {\r\n this.theme$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(theme => this.document.documentElement.setAttribute('cuiTheme', theme));\r\n }\r\n}\r\n","<div class=\"c-content\">\r\n <ng-content />\r\n</div>\r\n<cui-dialogs />\r\n<cui-alerts />\r\n<cui-tooltips />\r\n","import type { OnInit } from '@angular/core';\r\nimport { HostBinding, HostListener, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ElementRef } from '@angular/core';\r\nimport type { CuiValueOf } from '@cuby-ui/cdk';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiDialogSize } from './dialog.interfaces';\r\nimport { CUI_DIALOG_CONTEXT } from './dialog.tokens';\r\n\r\n// TODO: сделать структурную директиву\r\nconst ContentType = {\r\n String: 'string',\r\n Template: 'template',\r\n Component: 'component'\r\n} as const;\r\n\r\ntype IContentType = CuiValueOf<typeof ContentType>;\r\n\r\n@Component({\r\n selector: 'cui-dialog',\r\n templateUrl: './dialog.template.html',\r\n styleUrls: ['./dialog.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDialogComponent implements OnInit {\r\n protected readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n protected readonly context = inject(CUI_DIALOG_CONTEXT);\r\n\r\n protected readonly LAST_OF_TYPE_SELECTOR = ':last-of-type';\r\n\r\n protected readonly ContentType = ContentType;\r\n\r\n protected contentType: IContentType = ContentType.Component;\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiDialogSize {\r\n return this.context.size;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initContentType();\r\n }\r\n\r\n protected get contentTemplateRef(): TemplateRef<unknown> {\r\n return this.context.content as TemplateRef<unknown>;\r\n }\r\n\r\n protected get componentType(): Type<unknown> {\r\n return this.context.content as Type<unknown>;\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n protected onEscape(): void {\r\n if (!this.context.dismissible) {\r\n return\r\n }\r\n\r\n if (!this.element.matches(this.LAST_OF_TYPE_SELECTOR)) {\r\n return;\r\n }\r\n\r\n this.context.completeWith();\r\n }\r\n\r\n private initContentType(): void {\r\n const content = this.context.content;\r\n\r\n switch (true) {\r\n case (typeof content === 'string'):\r\n this.contentType = ContentType.String;\r\n\r\n return;\r\n\r\n case (content instanceof TemplateRef):\r\n this.contentType = ContentType.Template;\r\n\r\n return;\r\n }\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"contentType\">\r\n <ng-container *ngSwitchCase=\"ContentType.String\">\r\n {{ context.content }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ContentType.Template\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: context\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ContentType.Component\">\r\n <div class=\"c-component-container\">\r\n <ng-container *ngComponentOutlet=\"componentType\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-dialog-actions',\r\n templateUrl: './dialog-actions.template.html',\r\n styleUrls: ['./dialog-actions.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogActionsComponent {\r\n}\r\n","<div class=\"c-divider\"></div>\r\n<div class=\"c-content\">\r\n <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\r\nimport { PolymorpheusContext } from '@taiga-ui/polymorpheus/classes/context';\r\n\r\n@Component({\r\n selector: 'header[cuiDialogHeader][heading]',\r\n templateUrl: './dialog-header.template.html',\r\n styleUrls: ['./dialog-header.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogHeaderComponent {\r\n @Input()\r\n public heading!: PolymorpheusContent;\r\n\r\n @Input()\r\n public headingContext?: PolymorpheusContext<any>['$implicit'];\r\n\r\n @Input()\r\n public subheading?: string;\r\n\r\n @Output()\r\n public readonly closed = new EventEmitter<MouseEvent>();\r\n\r\n protected onClose(event: MouseEvent): void {\r\n this.closed.emit(event);\r\n }\r\n}\r\n","<div class=\"c-heading\">\r\n <ng-container *polymorpheusOutlet=\"heading as heading; context: headingContext\">{{ heading }}</ng-container>\r\n</div>\r\n<button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n icon=\"cuiIconClearSm\"\r\n class=\"c-button\"\r\n (click)=\"onClose($event)\"\r\n></button>\r\n<span *ngIf=\"subheading\">{{ subheading }}</span>\r\n<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule } from '../button';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport { CuiDialogsComponent } from './dialogs.component';\r\nimport { CuiDialogActionsComponent } from './dialog-actions/dialog-actions.component';\r\nimport { CuiDialogHeaderComponent } from './dialog-header/dialog-header.component';\r\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n PolymorpheusOutlet,\r\n CuiLetDirective,\r\n CuiButtonModule\r\n ],\r\n declarations: [\r\n CuiDialogComponent,\r\n CuiDialogsComponent,\r\n CuiDialogActionsComponent,\r\n CuiDialogHeaderComponent\r\n ],\r\n exports: [\r\n CuiDialogComponent,\r\n CuiDialogsComponent,\r\n CuiDialogActionsComponent,\r\n CuiDialogHeaderComponent\r\n ]\r\n})\r\nexport class CuiDialogModule {\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_DIALOG_OPTIONS, CUI_DIALOGS } from './dialog.tokens';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n useFactory: () => new CuiDialogService(CUI_DIALOGS, CuiDialogComponent, inject(CUI_DIALOG_OPTIONS))\r\n})\r\nexport class CuiDialogService extends CuiPopoverService<CuiDialogOptions> {\r\n}\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {inject} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nexport const CUI_REDUCED_MOTION = cuiCreateTokenFromFactory(\r\n () =>\r\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\r\n .matches ?? false,\r\n);\r\n","import {inject} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nimport {CUI_REDUCED_MOTION} from './reduced-motion';\r\n\r\n/**\r\n * Speed of all Taiga UI animations. 1 equals 300ms.\r\n */\r\nexport const CUI_ANIMATIONS_SPEED = cuiCreateTokenFromFactory<number>(() =>\r\n inject(CUI_REDUCED_MOTION) ? 0 : 1,\r\n);\r\n","import type {Provider, Type} from '@angular/core';\r\nimport {inject} from '@angular/core';\r\nimport { CUI_WINDOW, cuiCreateTokenFromFactory, cuiProvide } from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor} from '../classes';\r\n\r\n/**\r\n * Viewport accessor\r\n */\r\nexport const CUI_VIEWPORT = cuiCreateTokenFromFactory<CuiRectAccessor>(() => {\r\n const win = inject(CUI_WINDOW);\r\n\r\n return {\r\n type: 'viewport',\r\n getClientRect() {\r\n const rect = {\r\n top: 0,\r\n left: 0,\r\n right: win.innerWidth,\r\n bottom: win.innerHeight,\r\n width: win.innerWidth,\r\n height: win.innerHeight,\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n return {\r\n ...rect,\r\n toJSON: () => JSON.stringify(rect),\r\n };\r\n },\r\n };\r\n});\r\n\r\nexport function cuiAsViewport(accessor: Type<CuiRectAccessor>): Provider {\r\n return cuiProvide(CUI_VIEWPORT, accessor);\r\n}\r\n","export function cuiRemoveSpaces(value: string): string {\r\n return value.replace(/\\s+/g, '');\r\n}\r\n","export function cuiReplace(value: string, search: string, replace: string): string {\r\n const regex = new RegExp(search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\r\n\r\n return value.replace(regex, replace);\r\n}\r\n","import {cuiGetElementObscures} from '@cuby-ui/cdk';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function cuiIsObscured(el: HTMLElement, exceptSelector = 'cui-hints'): boolean {\r\n return !!cuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\r\n}\r\n","export function cuiOverrideOptions<T>(\r\n override: Partial<T>,\r\n fallback: T,\r\n): (directive: T | null, options: T | null) => T {\r\n return (directive, options) => {\r\n const result: T = directive || {...(options || fallback)};\r\n\r\n Object.keys(override).forEach((key) => {\r\n // Update directive props with new defaults before inputs are processed\r\n (result as Record<string, unknown>)[key] = override[key as keyof T];\r\n });\r\n\r\n return result;\r\n };\r\n}\r\n","import type {AnimationOptions} from '@angular/animations';\r\n\r\nexport const CUI_ANIMATIONS_DEFAULT_DURATION = 300;\r\n\r\nexport function cuiToAnimationOptions(speed: number, easing?: string): AnimationOptions {\r\n return {\r\n value: '',\r\n params: {\r\n duration: cuiGetDuration(speed),\r\n easing,\r\n },\r\n } as unknown as AnimationOptions;\r\n}\r\n\r\nexport function cuiGetDuration(speed: number): number {\r\n return speed && CUI_ANIMATIONS_DEFAULT_DURATION / speed;\r\n}\r\n","import type { ValidationErrors } from '@angular/forms';\r\n\r\nconst LEADING_TRAILING_SPACES_REGEX = /^\\s|\\s$/;\r\nconst MULTIPLE_SPACES_REGEX = /\\s{2,}/;\r\n\r\nexport function hasExtraSpaces(value: string): ValidationErrors | null {\r\n const hasLeadingOrTrailingSpaces = LEADING_TRAILING_SPACES_REGEX.test(value);\r\n const hasMultipleSpaces = MULTIPLE_SPACES_REGEX.test(value);\r\n\r\n if (hasLeadingOrTrailingSpaces || hasMultipleSpaces) {\r\n return { extraSpaces: true };\r\n }\r\n\r\n return null;\r\n}\r\n","import type { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport type { Observable } from 'rxjs';\r\nimport { map, timer } from 'rxjs';\r\n\r\nimport { hasExtraSpaces } from './extra-spaces.options';\r\n\r\nexport function asyncExtraSpacesValidators(delay: number): AsyncValidatorFn {\r\n return ({ value }: AbstractControl): Observable<ValidationErrors | null> => {\r\n return timer(delay).pipe(map(() => hasExtraSpaces(value)));\r\n };\r\n}\r\n\r\nexport function syncExtraSpacesValidator(): ValidatorFn {\r\n return ({ errors, value }: AbstractControl): ValidationErrors | null => {\r\n if (!errors?.['extraSpaces']) {\r\n return null;\r\n }\r\n\r\n return hasExtraSpaces(value);\r\n };\r\n}\r\n","import type { AbstractControlOptions } from '@angular/forms';\r\nimport { Validators } from '@angular/forms';\r\nimport { asyncExtraSpacesValidators, syncExtraSpacesValidator } from './extra-spaces.validators';\r\n\r\nexport function cuiCreateDefaultValidators({ maxLength = 100, asyncDelay = 700 } = {}): AbstractControlOptions {\r\n // Need to offset because this delay must be before changing value\r\n const OFFSET = 1;\r\n\r\n const adjustedAsyncDelay = asyncDelay - OFFSET;\r\n\r\n return {\r\n validators: [Validators.required, Validators.maxLength(maxLength), syncExtraSpacesValidator()],\r\n asyncValidators: [asyncExtraSpacesValidators(adjustedAsyncDelay)]\r\n };\r\n}\r\n","import type {Type} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nimport {CuiTooltipComponent} from './tooltip.component';\r\n\r\n/**\r\n * A component to display a tooltip\r\n */\r\nexport const CUI_TOOLTIP_COMPONENT = cuiCreateTokenFromFactory<Type<unknown>>(\r\n () => CuiTooltipComponent,\r\n);\r\n","import {Directive} from '@angular/core';\r\nimport {CuiDriverDirective} from '../../classes';\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class CuiTooltipDriver extends CuiDriverDirective {\r\n public readonly type = 'hint';\r\n}\r\n","import type {FactoryProvider, OnChanges} from '@angular/core';\r\nimport {Directive, inject, Input, Optional, Self, SkipSelf} from '@angular/core';\r\nimport { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';\r\nimport {cuiOverrideOptions} from '../../utils';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {Subject} from 'rxjs';\r\n\r\nexport type CuiTooltipDirection =\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n | 'bottom'\r\n | 'left-bottom'\r\n | 'left-top'\r\n | 'left'\r\n | 'right-bottom'\r\n | 'right-top'\r\n | 'right'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'top';\r\n\r\nexport const CUI_TOOLTIP_DIRECTIONS: readonly CuiTooltipDirection[] = [\r\n 'top',\r\n 'top-left',\r\n 'top-right',\r\n 'bottom',\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'left-top',\r\n 'left',\r\n 'left-bottom',\r\n 'right-top',\r\n 'right',\r\n 'right-bottom',\r\n];\r\n\r\nexport interface CuiTooltipOptions {\r\n readonly appearance: string;\r\n readonly direction: CuiTooltipDirection | CuiTooltipDirection[];\r\n readonly hideDelay: number;\r\n readonly icon: string;\r\n readonly showDelay: number;\r\n}\r\n\r\n/** Default values for tooltip options */\r\nexport const CUI_TOOLTIP_DEFAULT_OPTIONS: CuiTooltipOptions = {\r\n direction: 'top',\r\n showDelay: 500,\r\n hideDelay: 200,\r\n appearance: '',\r\n /** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/\r\n icon: '@cui.circle-help',\r\n};\r\n\r\n/**\r\n * Default parameters for tooltip directive\r\n */\r\nexport const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);\r\n\r\nexport const cuiTooltipOptionsProvider: (\r\n options: Partial<CuiTooltipOptions>,\r\n) => FactoryProvider = (override: Partial<CuiTooltipOptions>) => ({\r\n provide: CUI_TOOLTIP_OPTIONS,\r\n deps: [\r\n [new Optional(), new Self(), CuiTooltipOptionsDirective],\r\n [new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS],\r\n ],\r\n useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS),\r\n});\r\n\r\n/**\r\n * @deprecated: drop in 5.0\r\n */\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipContent]',\r\n providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)],\r\n})\r\nexport class CuiTooltipOptionsDirective implements CuiTooltipOptions, OnChanges {\r\n private readonly options = inject(CUI_TOOLTIP_OPTIONS, {skipSelf: true});\r\n\r\n @Input('cuiTooltipContent')\r\n public content: PolymorpheusContent;\r\n\r\n @Input('cuiTooltipDirection')\r\n public direction = this.options.direction;\r\n\r\n @Input('cuiTooltipAppearance')\r\n public appearance = this.options.appearance;\r\n\r\n @Input('cuiTooltipShowDelay')\r\n public showDelay = this.options.showDelay;\r\n\r\n @Input('cuiTooltipHideDelay')\r\n public hideDelay = this.options.hideDelay;\r\n\r\n public icon = this.options.icon;\r\n\r\n public readonly change$ = new Subject<void>();\r\n\r\n public ngOnChanges(): void {\r\n this.change$.next();\r\n }\r\n}\r\n","import {Directive, inject, Input} from '@angular/core';\r\nimport {CuiHoveredService, CUI_IS_MOBILE, cuiInjectElement} from '@cuby-ui/cdk';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {cuiIsObscured} from '../../utils';\r\nimport {\r\n delay,\r\n filter,\r\n map,\r\n merge,\r\n of,\r\n repeat,\r\n Subject,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs';\r\n\r\nimport type {CuiTooltipOptions} from './tooltip-options.directive';\r\nimport {CUI_TOOLTIP_OPTIONS} from './tooltip-options.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n providers: [cuiAsDriver(CuiTooltipHover), CuiHoveredService],\r\n exportAs: 'cuiTooltipHover',\r\n})\r\nexport class CuiTooltipHover extends CuiDriver {\r\n private readonly isMobile = inject(CUI_IS_MOBILE);\r\n private readonly el = cuiInjectElement();\r\n private readonly hovered$ = inject(CuiHoveredService);\r\n private readonly options = inject(CUI_TOOLTIP_OPTIONS);\r\n private visible = false;\r\n private readonly toggle$ = new Subject<boolean>();\r\n private readonly stream$ = merge(\r\n this.toggle$.pipe(\r\n switchMap((visible) =>\r\n this.isMobile\r\n ? of(visible)\r\n : of(visible).pipe(delay(visible ? 0 : this.cuiTooltipHideDelay)),\r\n ),\r\n takeUntil(this.hovered$),\r\n repeat(),\r\n ),\r\n this.hovered$.pipe(\r\n switchMap((visible) =>\r\n this.isMobile\r\n ? of(visible)\r\n : of(visible).pipe(\r\n delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay),\r\n ),\r\n ),\r\n takeUntil(this.toggle$),\r\n repeat(),\r\n ),\r\n ).pipe(\r\n filter(() => this.enabled),\r\n map(\r\n (value) =>\r\n value &&\r\n (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el)),\r\n ),\r\n tap((visible) => {\r\n this.visible = visible;\r\n }),\r\n );\r\n\r\n private readonly parent = inject(CuiTooltipHover, {\r\n optional: true,\r\n skipSelf: true,\r\n });\r\n\r\n @Input()\r\n public cuiTooltipShowDelay: CuiTooltipOptions['showDelay'] = this.options.showDelay;\r\n\r\n @Input()\r\n public cuiTooltipHideDelay: CuiTooltipOptions['hideDelay'] = this.options.hideDelay;\r\n\r\n public readonly type = 'hint';\r\n\r\n public enabled = true;\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n\r\n public toggle(visible = !this.visible): void {\r\n this.toggle$.next(visible);\r\n this.parent?.toggle(visible);\r\n }\r\n}\r\n","import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';\r\nimport {\r\n cuiFallbackAccessor,\r\n CuiPositionAccessor,\r\n CuiRectAccessor,\r\n} from '../../classes';\r\nimport { CUI_VIEWPORT } from '../../tokens';\r\nimport type { CuiPoint } from '../../types';\r\n\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\nimport type { CuiTooltipDirection, CuiTooltipOptions } from './tooltip-options.directive';\r\nimport { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\r\n\r\nconst GAP = 8;\r\nconst ARROW_OFFSET = 24;\r\nconst TOP = 0;\r\nconst LEFT = 1;\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class CuiTooltipPosition extends CuiPositionAccessor {\r\n private readonly offset = inject(CUI_IS_MOBILE) ? 16 : 5;\r\n private readonly viewport = inject(CUI_VIEWPORT);\r\n private readonly accessor = cuiFallbackAccessor<CuiRectAccessor>('hint')(\r\n inject<any>(CuiRectAccessor),\r\n inject(CuiTooltipDirective),\r\n );\r\n\r\n private readonly points: Record<CuiTooltipDirection, [number, number]> =\r\n CUI_TOOLTIP_DIRECTIONS.reduce(\r\n (acc, direction) => ({ ...acc, [direction]: [0, 0] }),\r\n {} as Record<CuiTooltipDirection, [number, number]>,\r\n );\r\n\r\n @Input('cuiTooltipDirection')\r\n public direction: CuiTooltipOptions['direction'] = inject(CUI_TOOLTIP_OPTIONS).direction;\r\n\r\n @Output('cuiTooltipDirectionChange')\r\n public readonly directionChange = new EventEmitter<CuiTooltipDirection>();\r\n\r\n public readonly type = 'hint';\r\n\r\n @cuiPure\r\n public emitDirection(direction: CuiTooltipDirection): void {\r\n this.directionChange.emit(direction);\r\n }\r\n\r\n public getPosition(rect: DOMRect, el?: HTMLElement): CuiPoint {\r\n const width = el?.clientWidth ?? rect.width;\r\n const height = el?.clientHeight ?? rect.height;\r\n const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;\r\n const leftCenter = hostRect.left + hostRect.width / 2;\r\n const topCenter = hostRect.top + hostRect.height / 2;\r\n\r\n this.points['top-left'][TOP] = hostRect.top - height - this.offset;\r\n this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\r\n this.points.top[TOP] = this.points['top-left'][TOP];\r\n this.points.top[LEFT] = leftCenter - width / 2;\r\n this.points['top-right'][TOP] = this.points['top-left'][TOP];\r\n this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\r\n\r\n this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\r\n this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\r\n this.points.bottom[TOP] = this.points['bottom-left'][TOP];\r\n this.points.bottom[LEFT] = this.points.top[LEFT];\r\n this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\r\n this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\r\n\r\n this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\r\n this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\r\n this.points.left[TOP] = topCenter - height / 2;\r\n this.points.left[LEFT] = this.points['left-top'][LEFT];\r\n this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\r\n this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\r\n\r\n this.points['right-top'][TOP] = this.points['left-top'][TOP];\r\n this.points['right-top'][LEFT] = hostRect.right + this.offset;\r\n this.points.right[TOP] = this.points.left[TOP];\r\n this.points.right[LEFT] = this.points['right-top'][LEFT];\r\n this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\r\n this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\r\n\r\n const priorityDirections = Array.isArray(this.direction)\r\n ? this.direction\r\n : [this.direction];\r\n const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);\r\n\r\n const direction = sortedDirections.find((direction) =>\r\n this.checkPosition(this.points[direction], width, height),\r\n );\r\n\r\n this.emitDirection(direction || this.fallback);\r\n\r\n return this.points[direction || this.fallback];\r\n }\r\n\r\n private get fallback(): CuiTooltipDirection {\r\n return this.points.top[TOP] >\r\n this.viewport.getClientRect().bottom - this.points.bottom[TOP]\r\n ? 'top'\r\n : 'bottom';\r\n }\r\n\r\n private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\r\n const viewport = this.viewport.getClientRect();\r\n\r\n return (\r\n top > GAP &&\r\n left > GAP &&\r\n top + height < viewport.bottom - GAP &&\r\n left + width < viewport.right - GAP\r\n );\r\n }\r\n}\r\n","import type {OnDestroy} from '@angular/core';\r\nimport {Directive, inject, INJECTOR, Input, signal} from '@angular/core';\r\nimport {cuiInjectElement, CuiActiveZone} from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor, CuiVehicle } from '../../classes';\r\nimport {cuiAsRectAccessor, cuiAsVehicle } from '../../classes';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\r\n\r\nimport {CUI_TOOLTIP_COMPONENT} from './tooltip.providers';\r\nimport {CuiTooltipService} from './tooltip.service';\r\nimport {CuiTooltipDriver} from './tooltip-driver.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CUI_TOOLTIP_OPTIONS} from './tooltip-options.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip]:not(ng-container):not(ng-template)',\r\n providers: [\r\n cuiAsRectAccessor(CuiTooltipDirective),\r\n cuiAsVehicle(CuiTooltipDirective),\r\n {\r\n provide: PolymorpheusComponent,\r\n deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],\r\n useClass: PolymorpheusComponent,\r\n },\r\n ],\r\n hostDirectives: [\r\n CuiTooltipDriver,\r\n {\r\n directive: CuiTooltipHover,\r\n inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay'],\r\n },\r\n {\r\n directive: CuiTooltipPosition,\r\n inputs: ['cuiTooltipDirection'],\r\n outputs: ['cuiTooltipDirectionChange'],\r\n },\r\n ],\r\n})\r\nexport class CuiTooltipDirective<C>\r\n implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle\r\n{\r\n private readonly service = inject(CuiTooltipService);\r\n\r\n @Input('cuiTooltipContext')\r\n public context?: C;\r\n\r\n @Input('cuiTooltipAppearance')\r\n public appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;\r\n\r\n public content = signal<PolymorpheusContent<C>>(null);\r\n public component = inject(PolymorpheusComponent<unknown>);\r\n public readonly el = cuiInjectElement();\r\n public readonly activeZone? = inject(CuiActiveZone, {optional: true});\r\n public readonly type = 'hint';\r\n\r\n @Input()\r\n public set cuiTooltip(content: PolymorpheusContent<C>) {\r\n this.content.set(content);\r\n\r\n if (!content) {\r\n this.toggle(false);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.toggle(false);\r\n }\r\n\r\n public getClientRect(): DOMRect {\r\n return this.el.getBoundingClientRect();\r\n }\r\n\r\n public toggle(show: boolean): void {\r\n if (show && this.content()) {\r\n this.service.add(this);\r\n } else {\r\n this.service.remove(this);\r\n }\r\n }\r\n}\r\n","import {Directive} from '@angular/core';\r\nimport {EMPTY_CLIENT_RECT, cuiPointToClientRect} from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor} from '../../classes';\r\nimport {cuiAsDriver, cuiAsRectAccessor} from '../../classes';\r\n\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipPointer]',\r\n providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],\r\n host: {\r\n '(mousemove.silent)': 'onMove($event)',\r\n },\r\n})\r\nexport class CuiTooltipPointer extends CuiTooltipHover implements CuiRectAccessor {\r\n private currentRect = EMPTY_CLIENT_RECT;\r\n\r\n public getClientRect(): DOMRect {\r\n return this.currentRect;\r\n }\r\n\r\n protected onMove({clientX, clientY}: MouseEvent): void {\r\n this.currentRect = cuiPointToClientRect(clientX, clientY);\r\n }\r\n}\r\n","import type {WritableSignal} from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n inject,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport type {CuiContext} from '@cuby-ui/cdk';\r\nimport {cuiParentAnimation} from '../../animations';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {\r\n injectContext,\r\n PolymorpheusComponent,\r\n PolymorpheusOutlet,\r\n} from '@taiga-ui/polymorpheus';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [PolymorpheusOutlet],\r\n template: '<ng-container *polymorpheusOutlet=\"context.$implicit.content()\" />',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [cuiParentAnimation],\r\n host: {'[@cuiParentAnimation]': ''},\r\n})\r\nexport class CuiTooltipUnstyledComponent {\r\n protected readonly context =\r\n injectContext<\r\n CuiContext<CuiPortalItem & {content: WritableSignal<PolymorpheusContent>}>\r\n >();\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'ng-template[cuiTooltip]',\r\n})\r\nexport class CuiTooltipUnstyled<C> {\r\n constructor() {\r\n const hint = inject(CuiTooltipDirective<C>);\r\n\r\n hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);\r\n hint.content.set(inject(TemplateRef<C>));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {EMPTY_CLIENT_RECT,CuiHoveredService, CuiContext} from '@cuby-ui/cdk';\r\nimport {cuiFadeIn, cuiScaleIn} from '../../animations';\r\nimport {\r\n cuiPositionAccessorFor,\r\n CuiRectAccessor,\r\n cuiRectAccessorFor,\r\n} from '../../classes';\r\nimport {CuiPositionService, CuiVisualViewportService} from '../../services';\r\nimport {CUI_ANIMATIONS_SPEED, CUI_VIEWPORT} from '../../tokens';\r\nimport {cuiIsObscured, cuiToAnimationOptions} from '../../utils';\r\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\r\nimport {map, takeWhile} from 'rxjs';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CuiTooltipPointer} from './tooltip-pointer.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\nimport {CuiTooltipUnstyledComponent} from './tooltip-unstyled.component';\r\nimport { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';\r\n\r\nconst GAP = 8;\r\n\r\nexport const CUI_TOOLTIP_PROVIDERS = [\r\n CuiPositionService,\r\n CuiHoveredService,\r\n cuiPositionAccessorFor('hint', CuiTooltipPosition),\r\n cuiRectAccessorFor('hint', forwardRef(() => CuiTooltipDirective)),\r\n];\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'cui-tooltip',\r\n imports: [PolymorpheusOutlet],\r\n template: `\r\n <ng-content />\r\n <span\r\n *polymorpheusOutlet=\"content() as text; context: hint.context\"\r\n [innerHTML]=\"text\"\r\n ></span>\r\n `,\r\n styleUrls: ['./tooltip.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: CUI_TOOLTIP_PROVIDERS,\r\n animations: [cuiFadeIn, cuiScaleIn],\r\n host: {\r\n '[@cuiScaleIn]': 'isMobile ? options : desktop',\r\n '[@cuiFadeIn]': 'options',\r\n '[class._untouchable]': 'pointer',\r\n '[class._mobile]': 'isMobile',\r\n '[attr.data-appearance]': 'appearance',\r\n '[attr.cuiTheme]': 'appearance',\r\n '(document:click)': 'onClick($event.target)',\r\n },\r\n})\r\nexport class CuiTooltipComponent<C = any> {\r\n private readonly el = cuiInjectElement();\r\n private readonly hover = inject(CuiTooltipHover);\r\n private readonly vvs = inject(CuiVisualViewportService);\r\n private readonly viewport = inject(CUI_VIEWPORT);\r\n\r\n protected readonly desktop = {value: '', params: {end: 1, start: 1}};\r\n protected readonly options = cuiToAnimationOptions(\r\n inject(CUI_ANIMATIONS_SPEED),\r\n 'cubic-bezier(0.35, 1.3, 0.25, 1)',\r\n );\r\n\r\n protected readonly pointer = inject(CuiTooltipPointer, {optional: true});\r\n protected readonly accessor = inject(CuiRectAccessor);\r\n protected readonly hint = injectContext<CuiContext<CuiTooltipDirective<C>>>().$implicit;\r\n protected readonly isMobile = inject(CUI_IS_MOBILE);\r\n\r\n protected readonly content =\r\n this.hint.component.component === CuiTooltipUnstyledComponent\r\n ? signal('')\r\n : this.hint.content;\r\n\r\n protected readonly appearance =\r\n this.hint.appearance ||\r\n this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');\r\n\r\n constructor() {\r\n inject(CuiPositionService)\r\n .pipe(\r\n takeWhile(() => this.hint.el.isConnected),\r\n map((point) => this.vvs.correct(point)),\r\n takeUntilDestroyed(),\r\n )\r\n .subscribe({\r\n next: ([top, left]) => this.update(top, left),\r\n complete: () => this.hover.toggle(false),\r\n });\r\n\r\n inject(CuiHoveredService)\r\n .pipe(takeUntilDestroyed())\r\n .subscribe((hover) => this.hover.toggle(hover));\r\n }\r\n\r\n protected onClick(target: HTMLElement): void {\r\n if (\r\n (!target.closest('cui-hint') && !this.hint.el.contains(target)) ||\r\n cuiIsObscured(this.hint.el)\r\n ) {\r\n this.hover.toggle(false);\r\n }\r\n }\r\n\r\n @cuiPure\r\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\r\n this.el.style.top = top;\r\n this.el.style.left = left;\r\n this.el.style.setProperty('--top', `${beakTop}%`);\r\n this.el.style.setProperty('--left', `${beakLeft}%`);\r\n this.el.style.setProperty(\r\n '--rotate',\r\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\r\n );\r\n }\r\n\r\n private update(top: number, left: number): void {\r\n const {clientHeight, clientWidth} = this.el;\r\n const rect = this.accessor.getClientRect();\r\n const viewport = this.viewport.getClientRect();\r\n\r\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\r\n return;\r\n }\r\n\r\n const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);\r\n const [beakTop, beakLeft] = this.vvs.correct([\r\n rect.top + rect.height / 2 - top,\r\n rect.left + rect.width / 2 - safeLeft,\r\n ]);\r\n\r\n this.apply(\r\n cuiPx(Math.round(top)),\r\n cuiPx(Math.round(safeLeft)),\r\n Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\r\n Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100),\r\n );\r\n }\r\n}\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {Directive, inject, Input, NgZone} from '@angular/core';\r\nimport {\r\n cuiIfMap,\r\n cuiTypedFromEvent,\r\n cuiZonefreeScheduler,\r\n cuiZoneOptimized,\r\n cuiInjectElement,\r\n cuiIsPresent, cuiPure,\r\n cuiIsNativeFocused\r\n} from '@cuby-ui/cdk';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {\r\n BehaviorSubject,\r\n debounce,\r\n distinctUntilChanged,\r\n fromEvent,\r\n map,\r\n merge,\r\n of,\r\n skip,\r\n startWith,\r\n switchMap,\r\n timer,\r\n} from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipDescribe]',\r\n providers: [cuiAsDriver(CuiTooltipDescribe)],\r\n})\r\nexport class CuiTooltipDescribe extends CuiDriver {\r\n private readonly doc = inject(DOCUMENT);\r\n private readonly el = cuiInjectElement();\r\n private readonly zone = inject(NgZone);\r\n private readonly id$ = new BehaviorSubject('');\r\n private readonly stream$ = this.id$.pipe(\r\n distinctUntilChanged(),\r\n cuiIfMap(() => fromEvent(this.doc, 'keydown', {capture: true}), cuiIsPresent),\r\n switchMap(() =>\r\n this.focused\r\n ? of(false)\r\n : merge(\r\n cuiTypedFromEvent(this.doc, 'keyup'),\r\n cuiTypedFromEvent(this.element, 'blur'),\r\n ).pipe(map(() => this.focused)),\r\n ),\r\n debounce((visible) =>\r\n visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null),\r\n ),\r\n startWith(false),\r\n distinctUntilChanged(),\r\n skip(1),\r\n cuiZoneOptimized(),\r\n );\r\n\r\n public readonly type = 'hint';\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n\r\n @Input()\r\n public set cuiTooltipDescribe(id: string | null | undefined) {\r\n this.id$.next(id || '');\r\n }\r\n\r\n @cuiPure\r\n private get element(): HTMLElement {\r\n return this.doc.getElementById(this.id$.value || '') || this.el;\r\n }\r\n\r\n private get focused(): boolean {\r\n return cuiIsNativeFocused(this.element);\r\n }\r\n}\r\n","import {Directive, Input} from '@angular/core';\r\nimport {EMPTY_CLIENT_RECT} from '@cuby-ui/cdk';\r\nimport {cuiAsRectAccessor, CuiRectAccessor} from '../../classes';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipHost]',\r\n providers: [cuiAsRectAccessor(CuiTooltipHost)],\r\n})\r\nexport class CuiTooltipHost extends CuiRectAccessor {\r\n @Input()\r\n public cuiTooltipHost?: HTMLElement;\r\n\r\n public readonly type = 'hint';\r\n\r\n public getClientRect(): DOMRect {\r\n return this.cuiTooltipHost?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\r\n }\r\n}\r\n","import type {OnChanges} from '@angular/core';\r\nimport {Directive, inject, Input} from '@angular/core';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipManual]',\r\n providers: [cuiAsDriver(CuiTooltipManual)],\r\n})\r\nexport class CuiTooltipManual extends CuiDriver implements OnChanges {\r\n private readonly hover = inject(CuiTooltipHover);\r\n private readonly stream$ = new BehaviorSubject(false);\r\n\r\n @Input()\r\n public cuiTooltipManual = false;\r\n\r\n public readonly type = 'hint';\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n this.hover.enabled = false;\r\n }\r\n\r\n public ngOnChanges(): void {\r\n this.stream$.next(this.cuiTooltipManual);\r\n }\r\n}\r\n","import {Directive, inject} from '@angular/core';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipOverflow]',\r\n hostDirectives: [\r\n {\r\n directive: CuiTooltipDirective,\r\n inputs: ['cuiTooltipAppearance'],\r\n },\r\n ],\r\n host: {\r\n '(mouseenter)': 'onMouseEnter($event.currentTarget)',\r\n },\r\n})\r\nexport class CuiTooltipOverflow {\r\n private readonly hint = inject(CuiTooltipDirective);\r\n\r\n protected onMouseEnter({scrollWidth, clientWidth, textContent}: Element): void {\r\n this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';\r\n }\r\n}\r\n","import {CuiTooltipComponent} from './tooltip.component';\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\nimport {CuiTooltipDescribe} from './tooltip-describe.directive';\r\nimport {CuiTooltipDriver} from './tooltip-driver.directive';\r\nimport {CuiTooltipHost} from './tooltip-host.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CuiTooltipManual} from './tooltip-manual.directive';\r\nimport {CuiTooltipOptionsDirective} from './tooltip-options.directive';\r\nimport {CuiTooltipOverflow} from './tooltip-overflow.directive';\r\nimport {CuiTooltipPointer} from './tooltip-pointer.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\nimport {CuiTooltipUnstyled} from './tooltip-unstyled.component';\r\n\r\nexport const CuiTooltip = [\r\n CuiTooltipComponent,\r\n CuiTooltipDirective,\r\n CuiTooltipOptionsDirective,\r\n CuiTooltipUnstyled,\r\n CuiTooltipDriver,\r\n CuiTooltipPosition,\r\n CuiTooltipHover,\r\n CuiTooltipOverflow,\r\n CuiTooltipDescribe,\r\n CuiTooltipHost,\r\n CuiTooltipManual,\r\n CuiTooltipPointer,\r\n] as const;\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiRootComponent } from './root.component';\r\nimport { CuiDialogModule } from '../dialog';\r\nimport { CuiAlertModule } from '../alert';\r\nimport { CuiTooltips } from '../../directives/tooltip';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiDialogModule,\r\n CuiAlertModule,\r\n CuiTooltips\r\n ],\r\n declarations: [CuiRootComponent],\r\n exports: [CuiRootComponent]\r\n})\r\nexport class CuiRootModule {\r\n}\r\n","import type { OnInit, AfterViewInit, TemplateRef, OnDestroy } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewContainerRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CuiDestroyService, CuiClickOutsideDirective, CuiTargetDirective, CUI_WINDOW, cuiGetClosestFocusable } from '@cuby-ui/cdk';\r\nimport { fromEvent, take, takeUntil } from 'rxjs';\r\n\r\nimport type { CuiContextMenuItem } from '../../interfaces';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n selector: 'cui-context-menu[items][target]',\r\n templateUrl: './context-menu.component.html',\r\n styleUrls: ['./context-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService],\r\n hostDirectives: [\r\n CuiClickOutsideDirective,\r\n {\r\n directive: CuiTargetDirective,\r\n inputs: ['ccTarget: target']\r\n }\r\n ]\r\n})\r\nexport class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly documentElement = this.document.documentElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly cuiTargetDirective = inject(CuiTargetDirective, { self: true });\r\n\r\n protected readonly EXTRA_OFFSET_LEFT = 0;\r\n protected readonly EXTRA_OFFSET_TOP = 0;\r\n\r\n protected isVisible = false;\r\n protected node?: HTMLDivElement;\r\n\r\n @Input()\r\n public items!: CuiContextMenuItem[];\r\n\r\n @Input()\r\n public target!: HTMLElement;\r\n\r\n @ViewChild('list')\r\n protected readonly list!: TemplateRef<any>;\r\n\r\n @ViewChild('backdrop')\r\n protected readonly backdrop!: TemplateRef<any>;\r\n\r\n public ngOnInit(): void {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearViewContainerRef();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.initTargetElementListener();\r\n }\r\n\r\n protected onSelect(item: CuiContextMenuItem): void {\r\n this.close();\r\n\r\n item.command?.();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onClose(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n protected onStopClickPropagation(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected trackByFn(_: number, item: CuiContextMenuItem): string {\r\n return item.label;\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((target) => {\r\n if (this.target.contains(target)) {\r\n return;\r\n }\r\n\r\n this.close();\r\n })\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.cuiTargetDirective.clicked\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(this.targetEventListener.bind(this));\r\n }\r\n\r\n private initHidingSubscription(): void {\r\n this.initHidingFromWindowEvent('scroll');\r\n this.initHidingFromWindowEvent('resize');\r\n }\r\n\r\n private initHidingFromWindowEvent(eventName: keyof WindowEventMap): void {\r\n fromEvent(this.window, eventName)\r\n .pipe(take(1))\r\n .subscribe(() => this.close());\r\n }\r\n\r\n private targetEventListener(event: MouseEvent): void {\r\n event.stopPropagation();\r\n // TODO: нужен для перерисовки ngFor\r\n this.document.body.click();\r\n\r\n this.isVisible = !this.isVisible;\r\n\r\n this.clearViewContainerRef();\r\n\r\n if (!this.isVisible) {\r\n return;\r\n }\r\n\r\n this.renderList();\r\n this.changePosition(event.clientX, event.clientY);\r\n this.initHidingSubscription();\r\n };\r\n\r\n private close(): void {\r\n this.isVisible = false;\r\n\r\n this.clearViewContainerRef();\r\n }\r\n\r\n private renderList(): void {\r\n const root = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n const backdropViewRef = this.viewContainerRef.createEmbeddedView(this.backdrop);\r\n const listViewRef = this.viewContainerRef.createEmbeddedView(this.list);\r\n\r\n this.node = listViewRef.rootNodes[0];\r\n\r\n root.append(backdropViewRef.rootNodes[0], this.node!);\r\n }\r\n\r\n private changePosition(x: number, y: number): void {\r\n this.node!.style.visibility = 'hidden';\r\n\r\n setTimeout(() => {\r\n const { clientWidth, clientHeight } = this.documentElement;\r\n const width = this.node!.offsetWidth;\r\n const height = this.node!.offsetHeight;\r\n let left = x;\r\n let top = y;\r\n\r\n if (left + width > clientWidth) {\r\n left -= width;\r\n }\r\n\r\n if (top + height > clientHeight) {\r\n top -= height;\r\n }\r\n\r\n left = Math.max(left, this.EXTRA_OFFSET_LEFT);\r\n top = Math.max(top, this.EXTRA_OFFSET_TOP);\r\n\r\n this.node!.style.left = left + 'px';\r\n this.node!.style.top = top + 'px';\r\n this.node!.style.visibility = '';\r\n\r\n cuiGetClosestFocusable({ initial: this.node!, root: this.node! })?.focus();\r\n });\r\n }\r\n\r\n private clearViewContainerRef(): void {\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","<ng-template #backdrop>\r\n <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n\r\n<ng-template #list>\r\n <div class=\"c-container\">\r\n <ul class=\"c-ul\">\r\n <li\r\n *ngFor=\"let item of items; trackBy: trackByFn\"\r\n [style.color]=\"item.color\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"c-button\"\r\n (click)=\"onSelect(item)\"\r\n >\r\n <cui-svg\r\n *ngIf=\"item.icon\"\r\n [icon]=\"item.icon\"\r\n [color]=\"item.color\"\r\n ></cui-svg>\r\n <span>{{ item.label }}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiContextMenuComponent } from './context-menu.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiContextMenuComponent],\r\n exports: [CuiContextMenuComponent]\r\n})\r\nexport class CuiContextMenuModule {\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, signal, ViewContainerRef } 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\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.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.element?.remove();\r\n this.backdrop?.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 this.element = this.document.createElement(this.DROPDOWN_SELECTOR);\r\n this.backdrop = this.document.createElement('div');\r\n\r\n this.element.style.top = '0';\r\n this.element.style.position = 'absolute';\r\n this.backdrop.style.position = 'fixed';\r\n this.backdrop.style.inset = '0';\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\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 });\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 }: ChangePositionYParams): void {\r\n const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;\r\n\r\n if (shouldListOpenAbove) {\r\n this.element.style.top = `${this.window.scrollY + visibleTop - dropdownHeight - offset}px`;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = `${this.window.scrollY + 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","<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-form-field',\r\n templateUrl: './form-field.template.html',\r\n styleUrls: ['./form-field.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFormFieldComponent {\r\n}\r\n","<ng-content select=\"label[cuiLabel]\" />\r\n<ng-content />\r\n<div class=\"c-hint-container\">\r\n <ng-content select=\"cui-hint\" />\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n declarations: [CuiFormFieldComponent],\r\n exports: [CuiFormFieldComponent]\r\n})\r\nexport class CuiFormFieldModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiHintType } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-hint',\r\n templateUrl: './hint.template.html',\r\n styleUrls: ['./hint.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiHintComponent {\r\n @Input()\r\n @HostBinding('attr.data-hint-type')\r\n public hintType: CuiHintType = 'info';\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiHintComponent } from './hint.component';\r\n\r\n@NgModule({\r\n declarations: [CuiHintComponent],\r\n exports: [CuiHintComponent]\r\n})\r\nexport class CuiHintModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n selector: 'button[cuiIconButton][icon], a[cuiIconButton][icon]',\r\n templateUrl: './icon-button.template.html',\r\n styleUrls: ['./icon-button.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiIconButtonComponent {\r\n protected readonly ICON_WIDTH = 16;\r\n protected readonly ICON_HEIGHT = 16;\r\n protected readonly ICON_STROKE_WIDTH = 1.5;\r\n\r\n @Input()\r\n public icon!: CuiIcon | string;\r\n\r\n @Input()\r\n public color?: string;\r\n\r\n @Input()\r\n @HostBinding('style.--icon-hover-color')\r\n public hoverColor?: string;\r\n\r\n @HostBinding('class._with-hover-color')\r\n protected get isWithHoverColor(): boolean {\r\n return !!this.hoverColor;\r\n }\r\n}\r\n","<cui-svg\r\n [icon]=\"icon\"\r\n [width]=\"ICON_WIDTH\"\r\n [height]=\"ICON_HEIGHT\"\r\n [color]=\"color\"\r\n [strokeWidth]=\"ICON_STROKE_WIDTH\"\r\n class=\"c-icon\"\r\n></cui-svg>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiIconButtonComponent } from './icon-button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiIconButtonComponent],\r\n exports: [CuiIconButtonComponent]\r\n})\r\nexport class CuiIconButtonModule {\r\n}\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport class CuiTextFieldController {\r\n constructor(private readonly iconLeftDirective: CuiTextFieldIconLeftDirective,\r\n private readonly idDirective: CuiTextFieldIdDirective,\r\n private readonly isErrorDirective: CuiTextFieldIsErrorDirective,\r\n private readonly placeholderDirective: CuiTextFieldPlaceholderDirective,\r\n private readonly sizeDirective: CuiTextFieldSizeDirective) {\r\n }\r\n\r\n public get iconLeft(): CuiIcon | string | undefined {\r\n return this.iconLeftDirective.iconLeft;\r\n }\r\n\r\n public get id(): string | undefined {\r\n return this.idDirective.id;\r\n }\r\n\r\n public get isError(): boolean {\r\n return this.isErrorDirective.isError;\r\n }\r\n\r\n public get placeholder(): string | undefined {\r\n return this.placeholderDirective.placeholder;\r\n }\r\n\r\n public get size(): CuiSizeSm | CuiSizeMd {\r\n return this.sizeDirective.size;\r\n }\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport const CUI_TEXT_FIELD_ICON_LEFT = new InjectionToken<CuiTextFieldIconLeftDirective>('', {\r\n factory: () => new CuiTextFieldIconLeftDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldIconLeft]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_ICON_LEFT, CuiTextFieldIconLeftDirective)]\r\n})\r\nexport class CuiTextFieldIconLeftDirective {\r\n @Input('cuiTextFieldIconLeft')\r\n public iconLeft?: CuiIcon | string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_ID = new InjectionToken<CuiTextFieldIdDirective>('', {\r\n factory: () => new CuiTextFieldIdDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldId]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_ID, CuiTextFieldIdDirective)]\r\n})\r\nexport class CuiTextFieldIdDirective {\r\n @Input('cuiTextFieldId')\r\n public id?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_IS_ERROR = new InjectionToken<CuiTextFieldIsErrorDirective>('', {\r\n factory: () => new CuiTextFieldIsErrorDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldIsError]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_IS_ERROR, CuiTextFieldIsErrorDirective)]\r\n})\r\nexport class CuiTextFieldIsErrorDirective {\r\n @Input('cuiTextFieldIsError')\r\n public isError = false;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_PLACEHOLDER = new InjectionToken<CuiTextFieldPlaceholderDirective>('', {\r\n factory: () => new CuiTextFieldPlaceholderDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldPlaceholder]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_PLACEHOLDER, CuiTextFieldPlaceholderDirective)]\r\n})\r\nexport class CuiTextFieldPlaceholderDirective {\r\n @Input('cuiTextFieldPlaceholder')\r\n public placeholder?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport const CUI_TEXT_FIELD_SIZE = new InjectionToken<CuiTextFieldSizeDirective>('', {\r\n factory: () => new CuiTextFieldSizeDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldSize]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_SIZE, CuiTextFieldSizeDirective)]\r\n})\r\nexport class CuiTextFieldSizeDirective {\r\n @Input('cuiTextFieldSize')\r\n public size: CuiSizeSm | CuiSizeMd = 'sm';\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldSizeDirective\r\n ],\r\n exports: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldSizeDirective\r\n ]\r\n})\r\nexport class CuiTextFieldControllerModule {\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nimport { CuiTextFieldController } from './text-field.controller';\r\n\r\nimport { CUI_TEXT_FIELD_SIZE } from './text-field-size.directive';\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport { CUI_TEXT_FIELD_ID } from './text-field-id.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CUI_TEXT_FIELD_IS_ERROR } from './text-field-is-error.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CUI_TEXT_FIELD_PLACEHOLDER } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CUI_TEXT_FIELD_ICON_LEFT } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\n\r\nexport const CUI_TEXT_FIELD_CONTROLLER = new InjectionToken<CuiTextFieldController>('');\r\n\r\nexport const CUI_TEXT_FILED_CONTROLLER_PROVIDER: Provider = [\r\n {\r\n provide: CUI_TEXT_FIELD_CONTROLLER,\r\n useFactory: (...controllers: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldSizeDirective\r\n ]) => {\r\n return new CuiTextFieldController(...controllers);\r\n },\r\n deps: [\r\n CUI_TEXT_FIELD_ICON_LEFT,\r\n CUI_TEXT_FIELD_ID,\r\n CUI_TEXT_FIELD_IS_ERROR,\r\n CUI_TEXT_FIELD_PLACEHOLDER,\r\n CUI_TEXT_FIELD_SIZE\r\n ]\r\n }\r\n];\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';\r\nimport { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-number',\r\n templateUrl: './input-number.template.html',\r\n styleUrls: ['./input-number.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)\r\n ]\r\n})\r\nexport class CuiInputNumberComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected maskOptions = this.generateMask();\r\n protected _precision = 0;\r\n protected _min = Number.MIN_SAFE_INTEGER;\r\n protected _max = Number.MAX_SAFE_INTEGER;\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<CuiNullable<number>>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @Input()\r\n public set precision(value: number) {\r\n this._precision = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @Input()\r\n public set min(value: number) {\r\n this._min = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @Input()\r\n public set max(value: number) {\r\n this._max = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<number>): void {\r\n this.value = value?.toString();\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<CuiNullable<number>>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n this.changeModel((target as HTMLInputElement).value);\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private changeModel(value: string): void {\r\n const parsedValue = maskitoParseNumber(value);\r\n\r\n this.value = value;\r\n\r\n this.onChange(Number.isNaN(parsedValue) ? null : parsedValue);\r\n }\r\n\r\n private generateMask(): MaskitoOptions {\r\n return maskitoNumberOptionsGenerator({\r\n precision: this._precision,\r\n min: this._min,\r\n max: this._max\r\n });\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [maskito]=\"maskOptions\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputNumberComponent } from './input-number.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaskitoDirective,\r\n CuiSvgModule,\r\n ],\r\n declarations: [CuiInputNumberComponent],\r\n exports: [\r\n CuiInputNumberComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputNumberModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-content-wrapper, [cuiContentWrapper]',\r\n standalone: true,\r\n templateUrl: './content-wrapper.component.html',\r\n styleUrl: './content-wrapper.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiContentWrapperComponent {\r\n private readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-base-0)';\r\n private readonly DEFAULT_GAP = 8;\r\n\r\n public readonly backgroundColor = input(this.DEFAULT_BACKGROUND_COLOR);\r\n public readonly gap = input(this.DEFAULT_GAP);\r\n\r\n @HostBinding('style.background')\r\n protected get _backgroundColor(): string {\r\n return this.backgroundColor();\r\n }\r\n\r\n @HostBinding('style.gap.px')\r\n protected get _gap(): number {\r\n return this.gap();\r\n }\r\n}\r\n","<ng-content />\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input [cuiGhostInput]',\r\n standalone: true,\r\n template: '',\r\n styleUrl: './ghost-input.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-error]': 'isError()'\r\n }\r\n})\r\nexport class CuiGhostInputComponent {\r\n public isError = input(false, { transform: booleanAttribute });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n inject\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiInputType, CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-password',\r\n templateUrl: './input-password.template.html',\r\n styleUrls: ['./input-password.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)\r\n ]\r\n})\r\nexport class CuiInputPasswordComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected isPasswordHidden = true;\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n protected get isToggleButtonShown(): boolean {\r\n return !this.isDisabled;\r\n }\r\n\r\n protected get icon(): CuiIcon {\r\n return this.isPasswordHidden ? 'cuiIconEye' : 'cuiIconEyeOff';\r\n }\r\n\r\n protected get type(): CuiInputType {\r\n return this.isPasswordHidden ? 'password' : 'text';\r\n }\r\n\r\n protected get buttonTitle(): string {\r\n return this.isPasswordHidden ? 'Reveal password' : 'Hide password';\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n if (this.isDisabled) {\r\n this.isPasswordHidden = true;\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n const value = (target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n }\r\n\r\n protected onTogglePasswordVisibility(): void {\r\n this.isPasswordHidden = !this.isPasswordHidden;\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n [type]=\"type\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n<button\r\n *ngIf=\"isToggleButtonShown\"\r\n [title]=\"buttonTitle\"\r\n class=\"c-button\"\r\n (click)=\"onTogglePasswordVisibility()\"\r\n>\r\n <cui-svg\r\n [icon]=\"icon\"\r\n [width]=\"16\"\r\n [height]=\"16\"\r\n color=\"var(--cui-base-500)\"\r\n ></cui-svg>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiInputPasswordComponent } from './input-password.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputPasswordComponent],\r\n exports: [\r\n CuiInputPasswordComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputPasswordModule {\r\n}\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-text',\r\n templateUrl: './input-text.template.html',\r\n styleUrls: ['./input-text.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)\r\n ]\r\n})\r\nexport class CuiInputTextComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n protected get isClearButtonHidden(): boolean {\r\n return !(this.value && !this.isDisabled);\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n this.changeModel((target as HTMLInputElement).value);\r\n }\r\n\r\n protected onClear(): void {\r\n this.changeModel('');\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private changeModel(value: string): void {\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n<button\r\n type=\"button\"\r\n class=\"c-button\"\r\n [class.c-button_hidden]=\"isClearButtonHidden\"\r\n (click)=\"onClear()\"\r\n>\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"c-close-icon\"\r\n />\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiInputTextComponent } from './input-text.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputTextComponent],\r\n exports: [\r\n CuiInputTextComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputModule {\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { CuiTimeMode } from '@cuby-ui/cdk';\r\n\r\nexport interface CuiInputTimeOptions {\r\n readonly mode: CuiTimeMode;\r\n}\r\n\r\nexport const CUI_INPUT_TIME_DEFAULT_OPTIONS: CuiInputTimeOptions = {\r\n mode: 'HH:MM'\r\n};\r\n\r\nexport const CUI_INPUT_TIME_OPTIONS = new InjectionToken('', {\r\n factory: () => CUI_INPUT_TIME_DEFAULT_OPTIONS\r\n});","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoTimeMode } from '@maskito/kit';\r\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiTime } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_INPUT_TIME_OPTIONS, CuiInputTimeOptions } from './input-time.options';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n selector: 'cui-input-time',\r\n templateUrl: './input-time.template.html',\r\n styleUrls: ['./input-time.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)\r\n ]\r\n})\r\nexport class CuiInputTimeComponent implements CuiInputTimeOptions, ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n private readonly options = inject(CUI_INPUT_TIME_OPTIONS);\r\n\r\n protected _mode = this.options.mode\r\n protected maskOptions = this.generateMask(this._mode);\r\n protected defaultPlaceholder = this._mode.toLowerCase();\r\n protected value!: CuiNullable<CuiTime>;\r\n protected onChange!: CuiOnChange<CuiNullable<CuiTime>>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @Input()\r\n public set mode(value: CuiInputTimeOptions['mode']) {\r\n this._mode = value;\r\n this.maskOptions = this.generateMask(value);\r\n this.defaultPlaceholder = value.toLowerCase();\r\n }\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder ?? this.defaultPlaceholder;\r\n }\r\n\r\n public get computedValue(): string {\r\n return this.value ? this.value.toString(this._mode) : '';\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<CuiTime>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<CuiNullable<CuiTime>>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput(event: Event): void {\r\n const value = (event.target as HTMLInputElement).value;\r\n\r\n if (value.length !== this._mode.length) {\r\n this.onChange(null);\r\n\r\n return;\r\n }\r\n\r\n const time = CuiTime.fromString(value);\r\n\r\n this.onChange(time);\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private generateMask(mode: MaskitoTimeMode): MaskitoOptions {\r\n return maskitoTimeOptionsGenerator({ mode });\r\n }\r\n}\r\n","<cui-svg\r\n icon=\"cuiIconClock\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"computedValue\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [maskito]=\"maskOptions\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputTimeComponent } from './input-time.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaskitoDirective,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputTimeComponent],\r\n exports: [\r\n CuiInputTimeComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputTimeModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'label[cuiLabel]',\r\n templateUrl: './label.template.html',\r\n styleUrls: ['./label.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLabelComponent {\r\n @Input()\r\n public isRequired = false;\r\n}\r\n","<span class=\"c-wrapper\">\r\n <ng-content></ng-content>\r\n</span>\r\n<span\r\n *ngIf=\"isRequired\"\r\n class=\"c-star\"\r\n>\r\n *\r\n</span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiLabelComponent } from './label.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiLabelComponent],\r\n exports: [CuiLabelComponent]\r\n})\r\nexport class CuiLabelModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiShape, CuiSize } from './letter-box.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-letter-box',\r\n standalone: true,\r\n templateUrl: './letter-box.component.html',\r\n styleUrls: ['./letter-box.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLetterBoxComponent {\r\n protected readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-magenta-500)';\r\n\r\n @Input({ required: true })\r\n public letter!: string;\r\n\r\n @Input()\r\n public backgroundColor?: string;\r\n\r\n @Input()\r\n public size: CuiSize = 'sm';\r\n\r\n @Input()\r\n public shape: CuiShape = null;\r\n\r\n @HostBinding('style.background-color')\r\n protected get _backgroundColor(): string {\r\n return this.backgroundColor ?? this.DEFAULT_BACKGROUND_COLOR;\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get _size(): CuiSize {\r\n return this.size;\r\n }\r\n\r\n @HostBinding('attr.data-shape')\r\n protected get _shape(): CuiShape {\r\n return this.shape;\r\n }\r\n}\r\n","{{ letter }}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"radio\"][cuiRadio]',\r\n template: '',\r\n styleUrls: ['./radio.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRadioComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiRadioComponent } from './radio.component';\r\n\r\n@NgModule({\r\n declarations: [CuiRadioComponent],\r\n exports: [CuiRadioComponent]\r\n})\r\nexport class CuiRadioModule {\r\n}\r\n","import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n ElementRef,\r\n ViewChild,\r\n HostBinding,\r\n ViewContainerRef,\r\n HostListener\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport type { CuiOption } from '../../interfaces';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n selector: 'cui-select[options]',\r\n templateUrl: './select.template.html',\r\n styleUrls: ['./select.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),\r\n CuiDestroyService\r\n ],\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class CuiSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly document = inject(DOCUMENT);\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly destroy$ = inject(CuiDestroyService, {self: true});\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, {self: true});\r\n\r\n protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;\r\n\r\n protected isOpened = false;\r\n protected isOptionsListAbove = false;\r\n protected value!: CuiNullable<unknown>;\r\n protected onChange!: CuiOnChange<unknown>;\r\n protected onTouched!: CuiOnTouched;\r\n protected isDisabled!: boolean;\r\n protected selectedOption?: CuiOption;\r\n\r\n @Input()\r\n public options!: CuiOption[];\r\n\r\n @Input()\r\n public defaultOptionText?: string;\r\n\r\n @ViewChild('button')\r\n protected readonly button!: ElementRef<HTMLButtonElement>;\r\n\r\n @ViewChild('getOptionsListHeightContainer')\r\n protected readonly getOptionsListHeightContainer!: ElementRef<HTMLUListElement>;\r\n\r\n @ViewChild('backdrop')\r\n protected readonly backdrop!: TemplateRef<unknown>;\r\n\r\n @ViewChild('optionsWrapper')\r\n protected readonly optionsWrapper!: TemplateRef<unknown>;\r\n\r\n @HostBinding('style.--c-gap')\r\n protected gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n protected trackByFn(_: number, item: CuiOption): string {\r\n return item.label;\r\n }\r\n\r\n public writeValue(value: unknown): void {\r\n this.value = value;\r\n // TODO: Непонятно, зачем нужно в construction вторая часть выражения\r\n this.selectedOption = this.options.find(option => option.value === value) ?? value as CuiOption;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearViewContainerRef();\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onSelect(event: Event, option: CuiOption): void {\r\n event.stopPropagation();\r\n\r\n if (option.isDisabled) {\r\n return\r\n }\r\n\r\n this.value = option.value;\r\n this.selectedOption = option;\r\n\r\n this.onChange(this.value);\r\n this.onSwitch();\r\n this.onTouched();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onSwitch(): void {\r\n if (!this.options.length && !this.defaultOptionText) {\r\n return;\r\n }\r\n\r\n if (!this.isOpened) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.close();\r\n }\r\n\r\n protected onClose(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onWindowResize(): void {\r\n this.button.nativeElement.blur();\r\n this.close();\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n if (this.isOpened) {\r\n this.onTouched();\r\n }\r\n\r\n this.close();\r\n });\r\n }\r\n\r\n private open(): void {\r\n this.isOpened = true;\r\n\r\n const rootElement = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n const {\r\n top: elementRectTop,\r\n left: elementRectLeft,\r\n bottom: elementRectBottom\r\n } = this.element.getBoundingClientRect();\r\n const distanceToBottom = this.document.documentElement.clientHeight\r\n - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);\r\n const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);\r\n const node = embeddedViewRef.rootNodes[0];\r\n const nodeStyles = node.style;\r\n\r\n this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;\r\n\r\n embeddedViewRef.detectChanges();\r\n\r\n nodeStyles.width = this.element.offsetWidth + 'px';\r\n nodeStyles.left = window.scrollX + elementRectLeft + 'px';\r\n\r\n if (this.isOptionsListAbove) {\r\n nodeStyles.top = window.scrollY + elementRectTop\r\n - this.getOptionsListHeightContainer.nativeElement.offsetHeight\r\n - this.SPACE_BETWEEN_BUTTON_AND_OPTIONS\r\n + 'px';\r\n } else {\r\n nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';\r\n }\r\n\r\n rootElement.appendChild(this.viewContainerRef.createEmbeddedView(this.backdrop).rootNodes[0]);\r\n rootElement.appendChild(embeddedViewRef.rootNodes[0]);\r\n }\r\n\r\n private close(): void {\r\n this.isOpened = false;\r\n\r\n this.clearViewContainerRef();\r\n }\r\n\r\n private clearViewContainerRef(): void {\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","<button\r\n #button\r\n type=\"button\"\r\n [attr.id]=\"id\"\r\n [attr.data-size]=\"size\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-button\"\r\n [class.c-button_active]=\"isOpened\"\r\n [class.c-button_with-error]=\"isError\"\r\n (click)=\"onSwitch()\"\r\n>\r\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\r\n {{ selectedOption.label }}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <span class=\"c-placeholder\">{{ placeholder }}</span>\r\n </ng-template>\r\n <cui-svg\r\n icon=\"cuiIconChevronDown\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</button>\r\n<ng-template #backdrop>\r\n <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n<ng-template #optionsWrapper>\r\n <div\r\n cuiFocusTrap\r\n class=\"c-options__wrapper\"\r\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n </div>\r\n</ng-template>\r\n<div\r\n #getOptionsListHeightContainer\r\n class=\"c-get-options-list-height-container\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n</div>\r\n<ng-template #optionsList>\r\n <ul\r\n class=\"c-options\"\r\n [class.c-options_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngIf=\"options.length; else empty\">\r\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n [class.c-option-button_selected]=\"selectedOption === option\"\r\n [disabled]=\"option.isDisabled\"\r\n (click)=\"onSelect($event, option)\"\r\n >\r\n <span>{{ option.label }}</span>\r\n <cui-svg\r\n *ngIf=\"selectedOption === option\"\r\n icon=\"cuiIconCheckSm\"\r\n color=\"var(--cui-info)\"\r\n class=\"c-option-button__icon\"\r\n />\r\n </button>\r\n </li>\r\n </ng-container>\r\n <ng-template #empty>\r\n <li *ngIf=\"defaultOptionText\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n (click)=\"onClose()\"\r\n >\r\n {{ defaultOptionText }}\r\n </button>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSelectComponent } from './select.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule,\r\n CuiFocusTrapDirective\r\n ],\r\n declarations: [CuiSelectComponent],\r\n exports: [\r\n CuiSelectComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiSelectModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-empty-state, [cuiEmptyState]',\r\n standalone: true,\r\n templateUrl: './empty-state.component.html',\r\n styleUrl: './empty-state.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-title]': '!!this.title()'\r\n }\r\n})\r\nexport class CuiEmptyStateComponent {\r\n public readonly title = input<string>();\r\n public readonly subtitle = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n <p class=\"title\">{{ title }}</p>\r\n}\r\n@if (subtitle(); as subtitle) {\r\n <p class=\"subtitle\">{{ subtitle }}</p>\r\n}\r\n<ng-content />\r\n","export const IS_SIDEBAR_OPENED_STORAGE_KEY = 'is-sidebar-opened';\r\n\r\nexport interface CuiSidebarLink {\r\n readonly text: string;\r\n}","import { Injectable, signal } from '@angular/core';\r\n\r\nimport type { CuiDynamicComponent } from './render-dynamic-components.options';\r\n\r\n@Injectable()\r\nexport class CuiRenderDynamicComponentsService {\r\n private readonly dynamicComponentsSignal = signal<CuiDynamicComponent[]>([]);\r\n\r\n public readonly dynamicComponents = this.dynamicComponentsSignal.asReadonly();\r\n\r\n public open(dynamicComponent: CuiDynamicComponent): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => [...prevDynamicComponents, dynamicComponent]);\r\n }\r\n\r\n public closeLast(): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => prevDynamicComponents.slice(0, -1));\r\n }\r\n\r\n public closeAllExceptFirst(): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => {\r\n const firstDynamicComponent = prevDynamicComponents[0];\r\n\r\n return firstDynamicComponent ? [firstDynamicComponent] : [];\r\n });\r\n }\r\n\r\n public closeAll(): void {\r\n this.dynamicComponentsSignal.set([]);\r\n }\r\n}\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\n\r\nimport { CuiRenderDynamicComponentsService } from './render-dynamic-components.service';\r\n\r\n@Component({\r\n selector: 'cui-render-dynamic-components',\r\n imports: [NgComponentOutlet],\r\n standalone: true,\r\n templateUrl: './render-dynamic-components.component.html',\r\n styleUrl: './render-dynamic-components.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRenderDynamicComponentsComponent {\r\n private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n protected readonly dynamicComponents = this.renderDynamicComponentsService.dynamicComponents;\r\n}\r\n","@for (dynamicComponent of dynamicComponents(); let isLast = $last; track $index) {\r\n <div\r\n class=\"container\"\r\n [class.container_hidden]=\"!isLast\"\r\n >\r\n <ng-container *ngComponentOutlet=\"dynamicComponent.component; inputs: dynamicComponent.inputs\" />\r\n </div>\r\n}\r\n","import { inject, Injectable, signal } from '@angular/core';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\n\r\nimport { IS_SIDEBAR_OPENED_STORAGE_KEY } from './sidebar.options';\r\nimport { CuiRenderDynamicComponentsService } from '../render-dynamic-components';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiSidebarService extends CuiRenderDynamicComponentsService {\r\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n\r\n private readonly isOpenedSignal = signal(this.localStorage.getItem(IS_SIDEBAR_OPENED_STORAGE_KEY) === 'true');\r\n private readonly widthSignal = signal<number>(0);\r\n\r\n public readonly isOpened = this.isOpenedSignal.asReadonly();\r\n public readonly width = this.widthSignal.asReadonly();\r\n\r\n public switch(): void {\r\n this.isOpenedSignal.update((value) => !value);\r\n this.localStorage.setItem(IS_SIDEBAR_OPENED_STORAGE_KEY, this.isOpenedSignal().toString());\r\n }\r\n\r\n public setWidth(value: number): void {\r\n this.widthSignal.set(value);\r\n }\r\n}\r\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n selector: 'header[cuiSidebarHeader]',\r\n imports: [CuiSvgModule, NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-header.component.html',\r\n styleUrl: 'sidebar-header.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarHeaderComponent {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n protected readonly isOpened = this.sidebarService.isOpened;\r\n protected readonly buttonIcon = computed<CuiIcon>(() =>\r\n this.isOpened() ? 'cuiIconChevronsLeft' : 'cuiIconChevronsRight'\r\n );\r\n\r\n public readonly headerSlot = input.required<TemplateRef<unknown>>();\r\n\r\n protected onSwitch(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.document.body.click();\r\n this.sidebarService.switch();\r\n }\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"headerSlot()\" [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\" />\r\n<button type=\"button\" class=\"button\" [class.button_opened]=\"isOpened()\" (click)=\"onSwitch($event)\">\r\n <cui-svg [icon]=\"buttonIcon()\" color=\"var(--cui-base-500)\" />\r\n</button>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { CuiDimensionsObserverDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-container',\r\n standalone: true,\r\n templateUrl: 'sidebar-container.component.html',\r\n styleUrl: 'sidebar-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [\r\n {\r\n directive: CuiDimensionsObserverDirective,\r\n outputs: ['cuiResizeObserver']\r\n }\r\n ],\r\n host: {\r\n '(cuiResizeObserver)': 'onResize($event.width)',\r\n '[class._opened]': 'isOpened()'\r\n }\r\n})\r\nexport class CuiSidebarContainerComponent {\r\n private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n protected readonly isOpened = this.sidebarService.isOpened;\r\n\r\n protected onResize(width: number): void {\r\n this.sidebarService.setWidth(width);\r\n }\r\n}\r\n","<ng-content />\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiSidebarLink } from '../sidebar.options';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-navigation',\r\n imports: [NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation.component.html',\r\n styleUrl: 'sidebar-navigation.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationComponent {\r\n public readonly links = input.required<CuiSidebarLink[]>();\r\n public readonly slot = input.required<TemplateRef<unknown>>();\r\n}\r\n","<nav class=\"nav\">\r\n <ul class=\"list\">\r\n @for (link of links(); track link.text; let isLast = $last) {\r\n <ng-container [ngTemplateOutlet]=\"slot()\" [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\" />\r\n }\r\n </ul>\r\n</nav>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\n\r\n@Component({\r\n selector: '[cuiSidebarNavigationItem]',\r\n imports: [CuiSvgModule],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation-item.component.html',\r\n styleUrl: 'sidebar-navigation-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._active]': 'active()'\r\n }\r\n})\r\nexport class CuiSidebarNavigationItemComponent {\r\n public readonly text = input.required<string>();\r\n public readonly icon = input<CuiIcon>();\r\n public readonly active = input<boolean>();\r\n public readonly isOpen = input<boolean>();\r\n}\r\n","@if (icon(); as icon) {\r\n<cui-svg [icon]=\"icon\" color=\"var(--cui-base-500)\" />\r\n}\r\n@if (isOpen()) {\r\n{{ text() }}\r\n}","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-navigation-container',\r\n imports: [NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation-container.component.html',\r\n styleUrl: 'sidebar-navigation-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationContainerComponent {\r\n public readonly slot = input.required<TemplateRef<unknown>>();\r\n public readonly title = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n <h3 class=\"title\">{{ title }}</h3>\r\n}\r\n\r\n<ng-container [ngTemplateOutlet]=\"slot()\" />\r\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-card-wrapper, [cuiCardWrapper]',\r\n standalone: true,\r\n templateUrl: 'card-wrapper.component.html',\r\n styleUrl: 'card-wrapper.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-border]': 'withBorder()'\r\n }\r\n})\r\nexport class CuiCardWrapperComponent {\r\n public readonly withBorder = input(true);\r\n}\r\n","<ng-content />\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-layout',\r\n standalone: true,\r\n templateUrl: './layout.component.html',\r\n styleUrl: './layout.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[style.marginLeft.px]': 'sidebarWidth()'\r\n }\r\n})\r\nexport class CuiLayoutComponent {\r\n public readonly sidebarWidth = input.required<number>();\r\n}\r\n","<div class=\"content\">\r\n <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\nexport const CUI_TAB_ACTIVATE = 'cui-tab-activate';\r\n\r\n@Component({\r\n selector: 'button[cuiTab]',\r\n templateUrl: './tab.template.html',\r\n styleUrls: ['./tab.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiTabComponent {\r\n protected readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\r\n\r\n @HostListener('click')\r\n protected onClick(): void {\r\n this.element.dispatchEvent(new CustomEvent(CUI_TAB_ACTIVATE, { bubbles: true }));\r\n }\r\n}\r\n","<ng-content />\r\n","import type { AfterViewChecked } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { CUI_TAB_ACTIVATE } from './tab';\r\n\r\n@Component({\r\n selector: 'cui-tabs',\r\n templateUrl: './tabs.template.html',\r\n styleUrls: ['./tabs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiTabsComponent implements AfterViewChecked {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n private readonly activeElementClass = '_active';\r\n\r\n protected get tabs(): readonly HTMLElement[] {\r\n return Array.from(this.element.querySelectorAll<HTMLElement>('[cuiTab]'));\r\n }\r\n\r\n public get activeElement(): HTMLElement | null {\r\n return this.tabs[this.activeItemIndex] || null;\r\n }\r\n\r\n public ngAfterViewChecked(): void {\r\n this.changeActiveItem();\r\n }\r\n\r\n @Input()\r\n public activeItemIndex = 0;\r\n\r\n @Output()\r\n public readonly activeItemIndexChange = new EventEmitter<number>();\r\n\r\n @HostListener(CUI_TAB_ACTIVATE, ['$event'])\r\n protected onActivate(event: CustomEvent): void {\r\n event.stopPropagation();\r\n\r\n const index = this.tabs.findIndex((tab) => tab === event.target);\r\n\r\n if (index === this.activeItemIndex) {\r\n return;\r\n }\r\n\r\n this.activeItemIndexChange.emit(index);\r\n this.activeItemIndex = index;\r\n }\r\n\r\n private changeActiveItem(): void {\r\n this.tabs.forEach(nativeElement => {\r\n const active = nativeElement === this.activeElement;\r\n\r\n nativeElement.classList.toggle(this.activeElementClass, active);\r\n });\r\n }\r\n}\r\n","<ng-content select=\"[cuiTab]\" />\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTabsComponent } from './tabs.component';\r\nimport { CuiTabComponent } from './tab';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [CuiTabsComponent, CuiTabComponent],\r\n exports: [CuiTabsComponent, CuiTabComponent]\r\n})\r\nexport class CuiTabsModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { CuiAutoResizingDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n selector: 'textarea[cuiTextarea]',\r\n template: '',\r\n styleUrls: ['./textarea.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER],\r\n hostDirectives: [CuiAutoResizingDirective]\r\n})\r\nexport class CuiTextareaComponent {\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n @Input()\r\n @HostBinding('rows')\r\n public rows = 4;\r\n\r\n @Input()\r\n @HostBinding('class._no-borders-and-paddings')\r\n public noBordersAndPaddings = false;\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n declarations: [CuiTextareaComponent],\r\n exports: [CuiTextareaComponent]\r\n})\r\nexport class CuiTextareaModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"checkbox\"][cuiToggle]',\r\n template: '',\r\n styleUrls: ['./toggle.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiToggleComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiToggleComponent } from './toggle.component';\r\n\r\n@NgModule({\r\n declarations: [CuiToggleComponent],\r\n exports: [CuiToggleComponent]\r\n})\r\nexport class CuiToggleModule {\r\n}\r\n","import { Translation } from '@jsverse/transloco';\r\n\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\n\r\nexport const EDITOR_SELECTOR = '[data-editor]';\r\nexport const DEFAULT_PLACEHOLDER = \"Type text or '/' for commands...\";\r\nexport const DEFAULT_READONLY_PLACEHOLDER = \"No 'Description' was provided\";\r\nexport const DEFAULT_CONFIG: CuiEditorConfig = {\r\n tools: {},\r\n readOnly: false,\r\n autofocus: false\r\n};\r\n\r\nexport const CuiEditorTranslations: Record<string, Promise<Translation>> = {\r\n en: import('../i18n/en.json'),\r\n} as const;\r\n","import type { BlockToolData } from '@editorjs/editorjs';\r\nimport Header from '@editorjs/header';\r\n\r\nexport class CuiHeaderTool extends Header {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override validate(): boolean {\r\n return true;\r\n }\r\n\r\n public override render(): HTMLHeadingElement {\r\n return super.render();\r\n }\r\n\r\n public override save(block: HTMLHeadingElement): BlockToolData {\r\n return super.save(block);\r\n }\r\n}\r\n","import List from '@editorjs/list';\r\n\r\nexport class CuiListTool extends List {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLElement {\r\n return super.render() as HTMLElement;\r\n }\r\n}\r\n","import type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport type { CuiParent } from '../interfaces/parent';\r\n\r\nexport class CuiSelectionBase {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n private readonly SELECTED_TEXT_CLASS = '_selected';\r\n\r\n public TAG = 'B';\r\n public COMMAND = 'bold';\r\n\r\n protected readonly api!: API;\r\n protected button!: HTMLButtonElement;\r\n protected _state = false;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n this.addSelectionToDOM(range, startContainer, endContainer);\r\n }\r\n\r\n public unwrap(): void {\r\n document.execCommand(this.COMMAND);\r\n }\r\n\r\n public checkState(): boolean {\r\n this.state = document.queryCommandState(this.COMMAND);\r\n\r\n return this.state;\r\n }\r\n\r\n public surround(range: Range): void {\r\n if (this.state) {\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.wrap(range);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addSelectionToDOM(range: Range, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n this.addSelectionForOnlyChild(range);\r\n\r\n return;\r\n }\r\n\r\n this.addSelectionForChildren(startParent, endParent);\r\n }\r\n\r\n private addSelectionForOnlyChild(range: Range): void {\r\n const selectedText = range.extractContents();\r\n const selection = this.createElement();\r\n\r\n selection.appendChild(selectedText);\r\n range.insertNode(selection);\r\n }\r\n\r\n private addSelectionForChildren(startParent: Element, endParent: Element): void {\r\n const nodes = this.getSelectedNodesFromDOM(startParent, endParent);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.add(this.SELECTED_TEXT_CLASS));\r\n\r\n document.execCommand(this.COMMAND);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.remove(this.SELECTED_TEXT_CLASS));\r\n }\r\n\r\n private getSelectedNodesFromDOM(startParent: Element, endParent: Element): Element[] {\r\n const nodes = [startParent];\r\n let next = startParent.nextSibling;\r\n\r\n while (next && next !== endParent) {\r\n nodes.push(next as Element);\r\n\r\n next = next?.nextSibling || null;\r\n }\r\n\r\n nodes.push(endParent);\r\n\r\n return nodes;\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiBoldInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'bold';\r\n\r\n public static title = 'Bold';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n b: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--bold'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 10.0002V5.91683C7.5 5.8708 7.53731 5.8335 7.58333 5.8335H8.66667C9.58333 5.8335 11.6667 5.91683 11.6667 7.91683C11.6667 7.91683 11.6667 10.0002 9.16667 10.0002M7.5 10.0002V14.0002C7.5 14.0922 7.57462 14.1668 7.66667 14.1668H10.4167C11.6667 14.1668 12.5 13.3335 12.5 12.0835C12.5 9.754 9.16667 10.0002 9.16667 10.0002M7.5 10.0002H9.16667\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+B';\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiItalicInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'italic';\r\n\r\n public override readonly TAG = 'I';\r\n public static title = 'Italic';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n i: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--italic'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.118 8.3335C10.3532 10.6116 9.16797 14.1668 9.16797 14.1668\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n <path d=\"M11.8404 5.8335H11.832\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+I';\r\n }\r\n}\r\n","import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return ({ value }: AbstractControl): ValidationErrors | null => {\r\n try {\r\n new URL(value);\r\n\r\n return null;\r\n } catch {\r\n return { url: true };\r\n }\r\n };\r\n}\r\n","export const BlockConversionToCombined = {\r\n paragraph: 'combinedTextBlock'\r\n};\r\n\r\nexport const enum EventActions {\r\n add = 'block-added',\r\n update = 'block-changed',\r\n remove = 'block-removed'\r\n}\r\n","export function generateId(): string {\r\n return '_' + Math.random().toString(36).substring(2, 9);\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport type { Block, JTextCreateBlockRequestBody, JTextCreateBlocksRequestBody } from './jtext-api.options';\r\nimport { CuiRequestOptions } from '../interfaces';\r\n\r\n@Injectable()\r\nexport class CuiJTextApiService {\r\n private readonly httpClient = inject(HttpClient);\r\n\r\n private readonly GET_BLOCK_DEFAULT_SIZE = 40;\r\n private readonly JTEXT_URL = 'framer/jtext';\r\n private readonly BLOCK_URL = 'block';\r\n private readonly BLOCKS_URL = 'blocks';\r\n private readonly JTEXT_BLOCK_URL = this.JTEXT_URL + '/' + this.BLOCK_URL;\r\n private readonly JTEXT_BLOCKS_URL = this.JTEXT_URL + '/' + this.BLOCKS_URL;\r\n\r\n private options: CuiRequestOptions = {};\r\n\r\n public addOptions(options?: CuiRequestOptions): void {\r\n this.options = options ?? {};\r\n }\r\n\r\n public createBlock(body: JTextCreateBlockRequestBody): Observable<string> {\r\n return this.httpClient.post<string>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public updateBlock(body: Block): Observable<Block> {\r\n return this.httpClient.patch<Block>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public getBlocks(fragmentId: string, page = 0, sizeBlock = this.GET_BLOCK_DEFAULT_SIZE): Observable<Block> {\r\n return this.httpClient.get(`${this.JTEXT_URL}/${fragmentId}`, {\r\n params: { page, sizeBlock },\r\n headers: { 'Content-Type': 'application/x-ndjson' },\r\n observe: 'events',\r\n ...this.options\r\n }) as unknown as Observable<Block>;\r\n }\r\n\r\n public createBlocks(body: JTextCreateBlocksRequestBody): Observable<string[]> {\r\n return this.httpClient.post<string[]>(this.JTEXT_BLOCKS_URL, body, this.options);\r\n }\r\n\r\n public deleteBlock(containerId: string, blockId: string): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCK_URL}/${blockId}`, this.options);\r\n }\r\n\r\n public deleteBlocks(containerId: string, blocksIds: string[]): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCKS_URL}`, {\r\n params: { blocksIds },\r\n ...this.options\r\n });\r\n }\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\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 type { Block } from './jtext-api.options';\r\nimport { CuiJTextApiService } from './jtext-api.service';\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(CuiJTextApiService);\r\n\r\n public sortEventsByTypes(events: BlockMutationEvent[]): CuiEventActionData {\r\n const blocks: CuiEventActionData = {\r\n 'block-removed': [],\r\n 'block-added': [],\r\n 'block-changed': []\r\n };\r\n\r\n events.forEach((editorEvent) => {\r\n if (editorEvent.detail.target.name === COMBINED_TEXT_BLOCK_NAME) {\r\n return;\r\n }\r\n\r\n const eventType = editorEvent.type;\r\n\r\n if (eventType === EventActions.update) {\r\n const changedBlock = blocks[EventActions.add].find(\r\n (block) => block.detail.target.id === editorEvent.detail.target.id\r\n );\r\n\r\n if (changedBlock) {\r\n return;\r\n }\r\n }\r\n\r\n if (eventType === EventActions.remove) {\r\n const len = blocks[EventActions.add].length;\r\n\r\n blocks[EventActions.add] = blocks[EventActions.add].filter(\r\n (block) => block.detail.target.id !== editorEvent.detail.target.id\r\n );\r\n\r\n if (len > blocks[EventActions.add].length) {\r\n return;\r\n }\r\n }\r\n\r\n blocks[eventType as EventActions].push(editorEvent);\r\n });\r\n\r\n return blocks;\r\n }\r\n\r\n public collectAddedBlocksRequest(editorId: string, addedBlocks: CuiFullBlockData[]): Observable<string[]> {\r\n const addBlocksBody = {\r\n jtextContainerId: editorId,\r\n position: addedBlocks[0]?.index,\r\n block: addedBlocks.map((e) => e.block)\r\n };\r\n const addBlocks$ = addedBlocks.length ? this.jtextService.createBlocks(addBlocksBody) : of([]);\r\n\r\n return addBlocks$;\r\n }\r\n\r\n public collectUpdatedBlocksRequest(updatedBlocks: Block[], blockIdsMap: Map<string, string>): Observable<Block[]> {\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 Block[]);\r\n\r\n const updateBlocksArray = updatedBlocksWithId.map((block) => this.jtextService.updateBlock(block));\r\n const updateBlocks$ = updatedBlocksWithId.length ? forkJoin(updateBlocksArray) : of([]);\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n public collectRemovedBlocksRequest(\r\n editorId: string,\r\n removedBlocksIds: string[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<void> {\r\n const removedBlocks: string[] = removedBlocksIds.reduce((blockIds, blockId) => {\r\n const backendID = blockIdsMap.get(blockId) as string;\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 removeBlocks$ = removedBlocks.length ? this.jtextService.deleteBlocks(editorId, removedBlocks) : 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: Block[]) => 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(editorId: string, callback: (block: Block<CuiCombinedBlockToolData>, id: string) => void): void {\r\n const blockId = generateId();\r\n const emptyBlock: CuiCombinedPartBlock = {\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: '',\r\n parentId: blockId,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n const body = {\r\n position: 0,\r\n block: emptyBlock,\r\n jtextContainerId: editorId\r\n };\r\n\r\n this.jtextService\r\n .createBlock(body)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((id) => {\r\n emptyBlock.id = id;\r\n\r\n const block: Block<CuiCombinedBlockToolData> = {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: blockId,\r\n textBlocks: [emptyBlock]\r\n }\r\n };\r\n\r\n callback(block, id);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { Tool } from '../components/editor-tool-modal';\r\n\r\nimport { MarkerType } from './markers-service.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiMarkersService {\r\n protected roles: Tool[] = [];\r\n protected tools: Tool[] = [\r\n {\r\n id: '0',\r\n image: 'blob:https://www.figma.com/f985f4fc-abc6-4727-857e-80633836e2b2',\r\n title: 'Шуруповерт',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '1',\r\n image: 'blob:https://www.figma.com/92ad9b38-566c-4ff6-84ba-0b20b24fef39',\r\n title: 'Молоток',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '2',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '3',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '4',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '5',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '6',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '7',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '8',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n }\r\n ];\r\n\r\n public getMarkersByType(type: MarkerType): Tool[] {\r\n return type === MarkerType.role ? this.roles : this.tools;\r\n }\r\n\r\n public getMarkerObjectByType(type: MarkerType, id: string): Tool | undefined {\r\n const markersArray = this.getMarkersByType(type);\r\n\r\n return markersArray.find((marker) => marker.id === id);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\n\r\nimport type { Tool } from '../../../editor-tool-modal';\r\n\r\n@Component({\r\n selector: 'cc-select-option',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './select-option.component.html',\r\n styleUrls: ['./select-option.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SelectOptionComponent {\r\n @Input({ required: true })\r\n public tool!: Tool;\r\n}\r\n","<ng-container *ngIf=\"tool\">\r\n <img\r\n *ngIf=\"tool.image\"\r\n class=\"image\"\r\n [src]=\"tool.image\"\r\n alt=\"\"\r\n />\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n</ng-container>\r\n","import { DOCUMENT, NgFor, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n forwardRef,\r\n HostBinding,\r\n inject,\r\n Input,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';\r\n\r\nimport type { Tool } from '../editor-tool-modal/editor-tool-modal.options';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { MarkerType } from '../../services/markers-service.options';\r\nimport { CuiMarkersService } from '../../services/markers.service';\r\n\r\nimport { SelectOptionComponent } from './component/select-item/select-option.component';\r\n\r\n@Component({\r\n selector: 'cc-marker-select',\r\n imports: [\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SelectOptionComponent,\r\n NgIf,\r\n NgFor\r\n ],\r\n standalone: true,\r\n templateUrl: './marker-select.component.html',\r\n styleUrls: ['./marker-select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MarkerSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MarkerSelectComponent implements OnInit, OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly markersService = inject(CuiMarkersService);\r\n\r\n private SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n\r\n @Input()\r\n public target!: HTMLButtonElement;\r\n\r\n @Input()\r\n public set space(value: number) {\r\n this.SPACE_BETWEEN_TARGET_AND_LIST = value;\r\n }\r\n\r\n protected isVisible = signal(false);\r\n protected isHidden = signal(true);\r\n protected editor!: HTMLElement;\r\n protected value!: CuiNullable<Tool>;\r\n // TODO: set current type\r\n protected elements = this.markersService.getMarkersByType(MarkerType.tool);\r\n protected onChange!: CuiOnChange<unknown>;\r\n protected onTouched!: CuiOnTouched;\r\n protected readonly targetToggleEventListener = (): void => {\r\n this.isVisible.update((prev) => !prev);\r\n\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.calculateDropdownPosition();\r\n };\r\n\r\n @HostBinding('class._hidden')\r\n protected get hide(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n public writeValue(value: Tool): void {\r\n this.value = value;\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n protected onScroll(): void {\r\n this.isVisible.set(false);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initTargetElementListener();\r\n this.initClickOutsideSubscription();\r\n this.initOnCloseWhenEditorScroll();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEventListeners();\r\n }\r\n\r\n protected onToolClick(tool: Tool): void {\r\n this.value = tool;\r\n\r\n this.onChange(this.value);\r\n this.onTouched();\r\n\r\n // this.isVisible.set(false);\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n if (this.target.contains(target) || !this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n });\r\n }\r\n\r\n private initOnCloseWhenEditorScroll(): void {\r\n this.editor = this.element.closest(EDITOR_SELECTOR);\r\n\r\n this.editor?.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n private destroyEventListeners(): void {\r\n this.editor?.removeEventListener('scroll', this.onScroll.bind(this));\r\n this.target?.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.isHidden.set(true);\r\n\r\n setTimeout(() => {\r\n const target = this.target;\r\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n this.document.documentElement;\r\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);\r\n const distanceToRight = documentClientWidth - targetRectLeft;\r\n const isListRight = distanceToRight < this.element.offsetWidth;\r\n const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n this.isHidden.set(false);\r\n });\r\n }\r\n\r\n private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n if (isListRight) {\r\n this.element.style.right = 'auto';\r\n this.element.style.left = left;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.right = left - this.element.offsetWidth + width;\r\n this.element.style.left = 'auto';\r\n }\r\n\r\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (isListAbove) {\r\n this.element.style.top =\r\n bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n }\r\n}\r\n","<ng-container *ngIf=\"isVisible()\">\r\n <div\r\n #dropdown\r\n class=\"dropdown\"\r\n >\r\n <header class=\"header\">\r\n <cui-input-text\r\n class=\"header__input\"\r\n cuiTextFieldId=\"estimated\"\r\n cuiTextFieldPlaceholder=\"Search...\"\r\n />\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconFiltersLines\"\r\n ></button>\r\n </header>\r\n <div class=\"scrollable-content\">\r\n <cc-select-option\r\n *ngFor=\"let element of elements\"\r\n [class._selected]=\"element.id === value?.id\"\r\n (click)=\"onToolClick(element)\"\r\n [tool]=\"element\"\r\n />\r\n </div>\r\n </div>\r\n</ng-container>\r\n","export const MARKER_SELECT_SELECTOR = 'marker-select';\r\n","import { DOCUMENT, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n computed,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport {\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiSvgModule\r\n} from '../../../components';\r\n\r\nimport { urlValidator } from '../../utils/url.validator';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { CuiMarkersService } from '../../services';\r\nimport type { Tool } from '../editor-tool-modal';\r\nimport { MarkerSelectComponent } from '../marker-select';\r\n\r\nimport type { MarkerData, MarkerDataControl } from './marker-modal.interfaces';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n CuiButtonModule,\r\n CuiElementDirective,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiSvgModule,\r\n FormsModule,\r\n MarkerSelectComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n NgIf\r\n ],\r\n templateUrl: './marker-modal.component.html',\r\n styleUrls: ['./marker-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class MarkerModalComponent implements OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly markersService = inject(CuiMarkersService);\r\n\r\n protected readonly TITLE_MAX_LENGTH = 100;\r\n\r\n protected readonly formTitle = signal('');\r\n protected readonly isTitleEmpty = computed(() => !this.formTitle().length);\r\n protected readonly isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);\r\n protected readonly isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());\r\n protected readonly titleId = this.cuiIdService.generate();\r\n protected readonly dataId = this.cuiIdService.generate();\r\n\r\n protected dynamicDataControl!: MarkerDataControl;\r\n protected spaceBetweenTargetAndList = 5;\r\n protected startTitle = '';\r\n\r\n @Input()\r\n public set title(value: string) {\r\n this.startTitle = value;\r\n this.formTitle.set(value);\r\n }\r\n\r\n @Input()\r\n public set url(value: string) {\r\n this.dynamicDataControl = new FormControl(value, {\r\n nonNullable: true,\r\n validators: [Validators.required, urlValidator()]\r\n });\r\n }\r\n\r\n @Input()\r\n public set tool(value: Tool) {\r\n const tool = this.markersService.getMarkerObjectByType(value.type!, value.id);\r\n this.dynamicDataControl = new FormControl(tool, {\r\n nonNullable: true,\r\n validators: [Validators.required]\r\n });\r\n }\r\n\r\n @Input()\r\n public isGlobal = false;\r\n\r\n @Input()\r\n public isTool = false;\r\n\r\n @Input()\r\n public target!: HTMLButtonElement;\r\n\r\n @Input()\r\n public set space(value: number) {\r\n this.spaceBetweenTargetAndList = value;\r\n }\r\n\r\n @Output()\r\n public saveClicked = new EventEmitter<MarkerData>();\r\n\r\n @Output()\r\n public cancelClicked = new EventEmitter();\r\n\r\n protected isVisible = signal(false);\r\n protected isHidden = signal(true);\r\n protected editor!: HTMLElement;\r\n protected currentTool?: Tool;\r\n protected readonly targetToggleEventListener = (): void => {\r\n this.isVisible.update((prev) => !prev);\r\n\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.calculateDropdownPosition();\r\n };\r\n\r\n protected get isFormInvalid(): boolean {\r\n return this.dynamicDataControl.invalid || this.isTitleInvalid();\r\n }\r\n\r\n protected get isDynamicDataErrorShown(): boolean {\r\n return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;\r\n }\r\n\r\n @HostBinding('class._hidden')\r\n protected get hide(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n @HostBinding('class._fixed')\r\n protected get fixed(): boolean {\r\n return this.isGlobal;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initTargetElementListener();\r\n this.initClickOutsideSubscription();\r\n this.initOnCloseWhenEditorScroll();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEventListeners();\r\n }\r\n\r\n protected onTitleLabelClick(element: HTMLDivElement): void {\r\n const range = document.createRange();\r\n const selection = window.getSelection();\r\n\r\n range.selectNodeContents(element);\r\n range.collapse(false);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n\r\n protected onSave(): void {\r\n if (this.isFormInvalid) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });\r\n }\r\n\r\n protected onScroll(): void {\r\n this.isVisible.set(false);\r\n }\r\n\r\n protected onCancel(): void {\r\n this.isVisible.set(false);\r\n this.cancelClicked.emit();\r\n }\r\n\r\n protected onClearTitle(titleElement: HTMLElement): void {\r\n this.formTitle.set('');\r\n\r\n titleElement.textContent = '';\r\n titleElement.focus();\r\n }\r\n\r\n protected onTitleChange(event: KeyboardEvent): void {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLInputElement;\r\n const value = target.textContent!;\r\n\r\n this.formTitle.set(value);\r\n }\r\n\r\n protected async onTitlePaste(event: Event): Promise<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 = await window.navigator.clipboard.readText();\r\n const target = event.target as HTMLElement;\r\n\r\n this.document.execCommand('insertText', false, value);\r\n setTimeout(() => this.formTitle.set(target.textContent!));\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n });\r\n }\r\n\r\n private initOnCloseWhenEditorScroll(): void {\r\n this.editor = this.document.querySelector(EDITOR_SELECTOR) as HTMLElement;\r\n\r\n this.editor.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n private destroyEventListeners(): void {\r\n this.editor.removeEventListener('scroll', this.onScroll.bind(this));\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.isHidden.set(true);\r\n\r\n setTimeout(() => {\r\n const target = this.target;\r\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n this.document.documentElement;\r\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);\r\n const distanceToRight = documentClientWidth - targetRectLeft;\r\n const isListRight = distanceToRight < this.element.offsetWidth;\r\n const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n\r\n this.isHidden.set(false);\r\n });\r\n }\r\n\r\n private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n if (this.isGlobal) {\r\n this.changeGlobalPositionX(isListRight, width, left);\r\n\r\n return;\r\n }\r\n\r\n if (isListRight) {\r\n this.element.style.right = '0';\r\n this.element.style.left = 'auto';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.right = 'auto';\r\n this.element.style.left = '0';\r\n }\r\n\r\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (this.isGlobal) {\r\n this.changeGlobalPositionY(isListAbove, height, bottom);\r\n\r\n return;\r\n }\r\n\r\n if (isListAbove) {\r\n this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';\r\n this.element.style.top = 'auto';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';\r\n this.element.style.bottom = 'auto';\r\n }\r\n\r\n private changeGlobalPositionX(isListRight: boolean, width: number, left: number): void {\r\n if (isListRight) {\r\n this.element.style.left = left - this.element.offsetWidth + width + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.left = left + 'px';\r\n }\r\n\r\n private changeGlobalPositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (isListAbove) {\r\n this.element.style.top =\r\n bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"isVisible()\">\r\n <form\r\n autocomplete=\"off\"\r\n class=\"wrapper\"\r\n >\r\n <cui-form-field>\r\n <!-- eslint-disable-next-line -->\r\n <label\r\n [for]=\"titleId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n (click)=\"onTitleLabelClick(titleElement)\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <!-- TODO: если найдется варик сделать через форму -->\r\n <div\r\n class=\"title\"\r\n [class.title_invalid]=\"isTitleInvalid()\"\r\n >\r\n <div\r\n #titleElement\r\n class=\"title__text\"\r\n contenteditable\r\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"startTitle\"\r\n ></div>\r\n <button\r\n type=\"button\"\r\n class=\"title__clear\"\r\n (click)=\"onClearTitle(titleElement)\"\r\n >\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"title__icon\"\r\n />\r\n </button>\r\n </div>\r\n\r\n <cui-hint *ngIf=\"isTitleInvalid()\" hintType=\"error\">\r\n <ng-container *ngIf=\"isTitleEmpty()\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS') }}\r\n </ng-container>\r\n </cui-hint>\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label\r\n [for]=\"dataId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n >\r\n {{ isTool ? t('TOOL') : t('URL') }}\r\n </label>\r\n <ng-container *ngIf=\"dynamicDataControl\">\r\n <ng-container *ngIf=\"isTool; else input\">\r\n <div>\r\n <button\r\n #target=\"elementRef\"\r\n class=\"button tool-button\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n >\r\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\r\n </button>\r\n </div>\r\n <cc-marker-select\r\n [formControl]=\"dynamicDataControl\"\r\n [target]=\"target.nativeElement\"\r\n />\r\n </ng-container>\r\n <ng-template #input>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"dataId\"\r\n [formControl]=\"dynamicDataControl\"\r\n autocomplete=\"off\"\r\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\r\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\r\n />\r\n <cui-hint *ngIf=\"isDynamicDataErrorShown\" hintType=\"error\">\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\r\n {{ t('INVALID_URL') }}\r\n </ng-container>\r\n </cui-hint>\r\n </ng-template>\r\n </ng-container>\r\n </cui-form-field>\r\n <div class=\"buttons\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n cuiButton\r\n type=\"submit\"\r\n appearance=\"action\"\r\n size=\"sm\"\r\n [disabled]=\"isFormInvalid\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ t('SAVE') }}\r\n </button>\r\n </div>\r\n </form>\r\n </ng-container>\r\n</ng-container>\r\n\r\n","export const MARKER_MODAL_SELECTOR = 'cc-marker-modal';\r\n","import { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, MarkerModalComponent } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal';\r\n\r\nexport function createLinkModal(tooltip: HTMLElement, link: HTMLLinkElement): CuiAngularElement<MarkerModalComponent> {\r\n const linkModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n linkModal.url = link.href;\r\n linkModal.title = link.innerText;\r\n linkModal.target = button;\r\n linkModal.space = 15;\r\n\r\n linkModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n\r\n if (typeof customEvent.detail.data === 'string') {\r\n link.setAttribute('href', customEvent.detail.data);\r\n }\r\n\r\n link.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n linkModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return linkModal;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { skip } from 'rxjs';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { Tool } from './editor-tool-modal.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule],\r\n templateUrl: './editor-tool-modal.component.html',\r\n styleUrls: ['./editor-tool-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class EditorToolModalComponent {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n\r\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 10;\r\n\r\n public isFullscreen = signal(false);\r\n public isHidden = signal(true);\r\n\r\n @Input({ required: true })\r\n public tool!: Tool;\r\n\r\n @Input()\r\n public set marker(value: HTMLElement) {\r\n this.calculateModalPosition(value);\r\n }\r\n\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n @HostBinding('class._hidden')\r\n protected get _isHidden(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n @HostBinding('class._fullscreen')\r\n protected get _isFullscreen(): boolean {\r\n return this.isFullscreen();\r\n }\r\n\r\n constructor() {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n protected onCloseModal(): void {\r\n this.closed.emit();\r\n }\r\n\r\n protected onMaximizeModal(): void {\r\n this.isFullscreen.update((prev) => !prev);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(skip(1), takeUntilDestroyed())\r\n .subscribe(() => this.onCloseModal());\r\n }\r\n\r\n private calculateModalPosition(marker: HTMLElement): void {\r\n const { bottom, left } = marker.getBoundingClientRect();\r\n\r\n setTimeout(() => {\r\n const modalWidth = this.element.offsetWidth;\r\n\r\n this.element.style.top = bottom + this.window.scrollY + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n this.element.style.left = left + this.window.scrollX + marker.offsetWidth / 2 - modalWidth / 2 + 'px';\r\n\r\n this.isHidden.set(false);\r\n });\r\n }\r\n}\r\n","<div class=\"triangle\"></div>\r\n<div class=\"wrapper\">\r\n <header class=\"header\">\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n <div class=\"header__buttons\">\r\n <!-- TODO: replace icon with 'maximize' -->\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconArrowSortSm\"\r\n (click)=\"onMaximizeModal()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconX\"\r\n (click)=\"onCloseModal()\"\r\n ></button>\r\n </div>\r\n </header>\r\n <div class=\"content\">\r\n <div class=\"info\">\r\n <!-- TODO: будет картинка-->\r\n <p class=\"info__item\">\r\n <span class=\"info__field\">Тип:</span>\r\n <span class=\"info__title\">{{ tool.title }}</span>\r\n </p>\r\n <p class=\"info__item\">\r\n <span class=\"info__field\">Страна производитель:</span>\r\n <span class=\"info__title\">{{ tool.title }}</span>\r\n </p>\r\n </div>\r\n </div>\r\n</div>\r\n","import type { MarkerType } from '../../services/markers-service.options';\r\n\r\nexport interface Tool {\r\n id: string;\r\n image?: string;\r\n title?: string;\r\n type?: MarkerType;\r\n}\r\n\r\nexport const EDITOR_TOOL_MODAL_SELECTOR = 'cc-editor-tool-modal';\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgFor } from '@angular/common';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { EditorTooltipButton, EditorTooltipOption, EditorTooltipOptions } from './editor-tooltip.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule, NgFor],\r\n templateUrl: './editor-tooltip.component.html',\r\n styleUrls: ['./editor-tooltip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorTooltipComponent {\r\n // TODO: Удалить класс\r\n protected readonly BUTTONS_OPTIONS = new Map<EditorTooltipOption, EditorTooltipButton>([\r\n ['copy', { icon: 'cuiIconCopy', handler: (event): void => this.copyClicked.emit(event) }],\r\n ['edit', { icon: 'cuiIconEdit', handler: (event): void => this.editClicked.emit(event), class: 'edit' }],\r\n ['delete', { icon: 'cuiIconTrash', handler: (event): void => this.deleteClicked.emit(event) }]\r\n ]);\r\n\r\n protected _options: EditorTooltipOptions = ['edit', 'delete'];\r\n protected buttons = this.getButtonsFromOptions(this._options);\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n @Input()\r\n public set options(value: EditorTooltipOptions) {\r\n this._options = value;\r\n this.buttons = this.getButtonsFromOptions(value);\r\n }\r\n\r\n @Output()\r\n public readonly copyClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly editClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly deleteClicked = new EventEmitter<MouseEvent>();\r\n\r\n private getButtonsFromOptions(options: EditorTooltipOptions): EditorTooltipButton[] {\r\n return options.map((option) => this.BUTTONS_OPTIONS.get(option)!);\r\n }\r\n}\r\n","<h3 class=\"title\">{{ title }}</h3>\r\n<div class=\"buttons-container\">\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <div class=\"divider\"></div>\r\n <!-- TODO: class должен быть удалён в будущем-->\r\n <button\r\n class=\"button\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"button.icon\"\r\n [class]=\"button.class\"\r\n (click)=\"button.handler($event)\"\r\n ></button>\r\n </ng-container>\r\n</div>\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type EditorTooltipOption = 'copy' | 'edit' | 'delete';\r\n\r\nexport type EditorTooltipOptions = EditorTooltipOption[];\r\n\r\n// TODO: class должен быть удалён в будущем\r\nexport interface EditorTooltipButton {\r\n readonly icon: CuiIcon;\r\n readonly handler: (event: MouseEvent) => void;\r\n readonly class?: string;\r\n}\r\n\r\nexport const EDITOR_TOOLTIP_SELECTOR = 'cc-editor-tooltip';\r\n","import { 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 async onTitlePaste(event: Event): Promise<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 = await this.window.navigator.clipboard.readText();\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 type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n standalone: true\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\r\n private readonly BYTES_IN_KILOBYTE = 1024;\r\n\r\n public transform(bytes: number): string {\r\n if (isNaN(bytes) || bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n\r\n const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\r\n\r\n return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\r\n }\r\n}\r\n","import { NgIf, UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FileSizePipe, FormsModule, UpperCasePipe, NgIf, TranslocoDirective],\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 protected readonly Extensions = {\r\n doc: '#1483E9',\r\n docx: '#1483E9',\r\n odt: '#1483E9',\r\n pdf: '#DB2F2F',\r\n rtf: '#744FDC',\r\n tex: '#5a5a5b',\r\n txt: '#5a5a5b',\r\n pptx: '#E35200',\r\n ppt: '#E35200',\r\n mp3: '#eab456',\r\n mp4: '#f676a6',\r\n xls: '#11AE3D',\r\n html: '#2988f0',\r\n htm: '#2988f0',\r\n png: '#AA2284',\r\n jpg: '#D13359',\r\n jpeg: '#D13359',\r\n gif: '#f6af76',\r\n zip: '#4f566f',\r\n rar: '#4f566f',\r\n exe: '#e26f6f',\r\n svg: '#bf5252',\r\n key: '#00B2FF',\r\n sketch: '#FFC700',\r\n ai: '#FB601D',\r\n psd: '#388ae5',\r\n dmg: '#e26f6f',\r\n json: '#2988f0',\r\n csv: '#11AE3D'\r\n };\r\n\r\n @Input({ required: true })\r\n public file?: CuiFileData;\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n protected get color(): string {\r\n return this.Extensions[this.file?.extension as keyof typeof this.Extensions];\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.file && !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.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 *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\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 *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\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 {{ 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\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}\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 {{ 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\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 ></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 {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\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\r\n\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","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","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\n\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', () => {\r\n window?.navigator.clipboard.writeText(linkUrl);\r\n });\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 type { CuiFileResponseData } 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: CuiFileResponseData, 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())\r\n .then((response) => this.onUpload(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({ success: 1, file: { url } });\r\n }\r\n}\r\n","import type { Blocks } from '@editorjs/editorjs/types/api';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nexport function recalculateIndexes(blocksApi: Blocks): void {\r\n if (!blocksApi) {\r\n return;\r\n }\r\n\r\n const blocks = blocksApi.getBlocksCount();\r\n let index = 0;\r\n\r\n for (let i = 0; i < blocks; i++) {\r\n const block = blocksApi.getBlockByIndex(i);\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n const blockElement = block?.holder;\r\n const subblocks = blockElement.querySelectorAll('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n blockElement.setAttribute('data-index', String(index));\r\n\r\n if (!subblocks.length) {\r\n index++;\r\n\r\n continue;\r\n }\r\n\r\n subblocks.forEach((subblock) => {\r\n const subBlockIndex = subblock.getAttribute('data-index');\r\n const indexAsNumber = subBlockIndex ? Number(subBlockIndex) : null;\r\n\r\n if (indexAsNumber !== null && indexAsNumber === index) {\r\n index++;\r\n\r\n return;\r\n }\r\n\r\n subblock.setAttribute('data-index', String(index));\r\n index++;\r\n });\r\n }\r\n}\r\n","import { SPLIT_LENGTH } from '../constants';\r\n\r\ninterface TagInfo {\r\n tag: string;\r\n tagName: string;\r\n newIndex: number;\r\n}\r\n\r\nconst unsplittableTags: { [key: string]: boolean } = { mark: true, a: true };\r\nconst PART_LENGTH_MEASUREMENT_ERROR = 20;\r\nconst BR_TAG = '<br>';\r\n\r\nexport function splitHTML(input: string, maxLength: number = SPLIT_LENGTH): string[] {\r\n const parts: string[] = [];\r\n const tagNames: string[] = [];\r\n const tags: string[] = [];\r\n let currentPart = '';\r\n let index = 0;\r\n // remove specsymbols\r\n input = input.replaceAll(' ', ' ');\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 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, CuiFileResponseData, CuiTune, CuiAngularElement } 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<CuiImageToolData, Partial<CuiImageToolConfig>>;\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(EDITOR_IMAGE_TOOL_SELECTOR) 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: CuiFileResponseData): 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, EditorVideoToolComponent, CuiVideoToolData } from '../components/editor-video-tool';\r\nimport { EDITOR_VIDEO_TOOL_SELECTOR } from '../components/editor-video-tool/editor-video-tool.options';\r\nimport type { CuiFileData, CuiFileResponseData } 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<CuiVideoToolData, CuiVideoToolConfig>;\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(EDITOR_VIDEO_TOOL_SELECTOR) 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: CuiFileResponseData): 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, CuiFileResponseData } 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 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 private attachesTool!: CuiAngularElement<EditorAttachesToolComponent>;\r\n private selectedFile: CuiNullable<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.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<CuiAttachesToolData, CuiAttachesToolConfig>;\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 ?? '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 };\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 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 appendCallback(): void {\r\n this.onSelectFile();\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.onSelectFile);\r\n this.attachesTool.addEventListener('captionChanged', this.changeCaption.bind(this));\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.attachesTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.attachesTool.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.title = value;\r\n\r\n this.blockApi?.dispatchChange();\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: CuiFileResponseData): 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 { CuiAngularElement } from 'projects/core/editor/interfaces/angular-element';\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\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiLinkMarker extends CuiMarkerTool {\r\n protected override readonly TAG = 'A';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n a: {\r\n href: true,\r\n class: true,\r\n target: true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg width=\"20\" height=\"15\" viewBox=\"-3 -3 24 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M18.2813 1.22405C17.9329 0.874451 17.5189 0.597062 17.0631 0.407792C16.6073 0.218522 16.1186 0.121094 15.625 0.121094C15.1315 0.121094 14.6428 0.218522 14.187 0.407792C13.7312 0.597062 13.3172 0.874451 12.9688 1.22405L13.8563 2.11155C14.089 1.87886 14.3652 1.69429 14.6692 1.56836C14.9733 1.44243 15.2991 1.37762 15.6282 1.37762C15.9572 1.37762 16.2831 1.44243 16.5871 1.56836C16.8911 1.69429 17.1674 1.87886 17.4 2.11155C17.6327 2.34424 17.8173 2.62047 17.9432 2.92449C18.0692 3.22851 18.134 3.55436 18.134 3.88343C18.134 4.21249 18.0692 4.53834 17.9432 4.84236C17.8173 5.14638 17.6327 5.42261 17.4 5.6553L12.4 10.6553C11.9309 11.1252 11.2944 11.3896 10.6304 11.3901C9.96638 11.3907 9.32935 11.1275 8.85942 10.6584C8.38949 10.1893 8.12515 9.55275 8.12457 8.88876C8.12398 8.22476 8.38719 7.58773 8.85629 7.1178L9.73754 6.2303L8.85629 5.3428L7.96879 6.2303C7.61919 6.57869 7.3418 6.99266 7.15253 7.44848C6.96326 7.9043 6.86583 8.393 6.86583 8.88655C6.86583 9.3801 6.96326 9.8688 7.15253 10.3246C7.3418 10.7804 7.61919 11.1944 7.96879 11.5428C8.67597 12.2409 9.63134 12.6298 10.625 12.624C11.1205 12.6261 11.6114 12.5299 12.0695 12.3411C12.5276 12.1523 12.9437 11.8746 13.2938 11.524L18.2938 6.52405C18.9944 5.81927 19.3866 4.86522 19.3842 3.87146C19.3819 2.87771 18.9852 1.92552 18.2813 1.22405Z\" fill=\"#595E6A\"/>\r\n <path d=\"M2.61879 12.5115C2.38541 12.2793 2.20022 12.0031 2.07386 11.6991C1.94749 11.395 1.88244 11.069 1.88244 10.7397C1.88244 10.4104 1.94749 10.0844 2.07386 9.78028C2.20022 9.47621 2.38541 9.2001 2.61879 8.9678L7.61879 3.9678C7.85109 3.73442 8.1272 3.54923 8.43127 3.42287C8.73534 3.2965 9.06138 3.23145 9.39067 3.23145C9.71995 3.23145 10.046 3.2965 10.3501 3.42287C10.6541 3.54923 10.9302 3.73442 11.1625 3.9678C11.3944 4.20193 11.577 4.48022 11.6994 4.78619C11.8218 5.09215 11.8815 5.41958 11.875 5.74905C11.8769 6.07955 11.8133 6.40715 11.6878 6.7129C11.5623 7.01865 11.3774 7.29647 11.1438 7.5303L9.81879 8.87405L10.7063 9.76155L12.0313 8.43655C12.7366 7.73124 13.1328 6.77463 13.1328 5.77718C13.1328 4.77972 12.7366 3.82311 12.0313 3.1178C11.326 2.41249 10.3694 2.01625 9.37192 2.01625C8.37446 2.01625 7.41785 2.41249 6.71254 3.1178L1.71254 8.1178C1.362 8.4663 1.08382 8.88066 0.893994 9.33706C0.704168 9.79346 0.606445 10.2829 0.606445 10.7772C0.606445 11.2715 0.704168 11.7609 0.893994 12.2173C1.08382 12.6737 1.362 13.088 1.71254 13.4365C2.42431 14.1293 3.38185 14.5115 4.37504 14.499C5.37698 14.5 6.33862 14.1046 7.05004 13.399L6.16254 12.5115C5.93025 12.7449 5.65413 12.9301 5.35006 13.0565C5.04599 13.1829 4.71995 13.2479 4.39067 13.2479C4.06138 13.2479 3.73534 13.1829 3.43127 13.0565C3.1272 12.9301 2.85109 12.7449 2.61879 12.5115Z\" fill=\"#595E6A\"/>\r\n </svg>\r\n `;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const linkModal = this.createLinkModal();\r\n\r\n this.dropdown.append(linkModal);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public wrapLink(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n const url = markerData.data?.toString();\r\n const link = this.createElement(url, markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.addMarkerToDOM(range, link, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(link);\r\n }\r\n\r\n public override unwrap(): void {\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n\r\n if (!mark) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(mark);\r\n }\r\n\r\n public override createElement(url = '', text = ''): HTMLLinkElement {\r\n const link = super.createElement(text) as HTMLLinkElement;\r\n\r\n link.href = url;\r\n link.contentEditable = 'false';\r\n link.target = '_blank';\r\n\r\n return link;\r\n }\r\n\r\n public checkState(): void {\r\n const link = this.api.selection.findParentTag(this.TAG);\r\n\r\n this.state = !!link;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.url = '';\r\n this.markerModal.target = this.button;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapLink(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent, MarkerData } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiCustomMarkerTool extends CuiMarkerTool {\r\n protected id!: string;\r\n protected type!: string;\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n mark: {\r\n class: true,\r\n 'data-id': true,\r\n 'data-type': true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public wrapTool(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n if (markerData.data && typeof markerData.data !== 'string') {\r\n this.id = markerData.data.id!;\r\n this.type = markerData.data.type!;\r\n }\r\n\r\n const mark = this.createElement(markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(mark);\r\n }\r\n\r\n private onToolButtonClick(event: MouseEvent): void {\r\n const range = window.getSelection()?.getRangeAt(0);\r\n\r\n if (range) {\r\n return;\r\n }\r\n\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.onclick = this.onToolButtonClick.bind(this);\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const markerSelect = this.createLinkModal();\r\n\r\n this.dropdown.append(markerSelect);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public override createElement(text = ''): HTMLElement {\r\n const element = super.createElement(text);\r\n\r\n element.contentEditable = 'false';\r\n element.classList.add(this.CLASS);\r\n element.setAttribute('data-id', this.id);\r\n element.setAttribute('data-type', this.type);\r\n\r\n return element;\r\n }\r\n\r\n public checkState(select: Selection): void {\r\n const range = select.getRangeAt(0);\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n const isCorrectTool = mark?.classList.contains(this.CLASS);\r\n\r\n if (!mark || !isCorrectTool) {\r\n this.state = false;\r\n\r\n return;\r\n }\r\n\r\n const startContainer = range.startContainer;\r\n const endContainer = range.endContainer;\r\n\r\n const isStartMarker = mark.contains(startContainer);\r\n const isEndMarker = mark.contains(endContainer);\r\n\r\n this.state = isStartMarker && isEndMarker && isStartMarker === isEndMarker;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.tool = { id: '', title: '', type: undefined };\r\n this.markerModal.target = this.button;\r\n this.markerModal.isTool = true;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapTool(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiRoleMarker extends CuiCustomMarkerTool {\r\n protected override readonly CLASS = 'role-marker';\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"-3 -3 24 24\" fill=\"none\">\r\n <path d=\"M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiToolMarker extends CuiCustomMarkerTool {\r\n protected override readonly CLASS = 'tool-marker';\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.innerHTML =\r\n '<svg width=\"20\" height=\"20\" viewBox=\"-2 -3 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"technologies-tools\"><path id=\"Vector\" d=\"M16.3581 15.3966L16.3581 11.4729C16.3581 11.4158 16.3469 11.3592 16.325 11.3064C16.3031 11.2536 16.2711 11.2056 16.2307 11.1652C16.1903 11.1248 16.1423 11.0928 16.0895 11.0709C16.0368 11.0491 15.9802 11.0378 15.923 11.0378H13.2574L13.2593 11.0372C13.2007 11.0348 13.1422 11.0443 13.0874 11.0651C13.0326 11.0859 12.9825 11.1176 12.9402 11.1582C12.898 11.1989 12.8643 11.2476 12.8414 11.3016C12.8184 11.3556 12.8066 11.4136 12.8067 11.4723L12.8067 15.3972M14.584 11.0334V5.8334M16.3582 15.1022L16.3582 17.0647C16.3583 17.1234 16.3465 17.1814 16.3235 17.2354C16.3006 17.2893 16.2669 17.3381 16.2247 17.3787C16.1824 17.4194 16.1323 17.4511 16.0775 17.4719C16.0227 17.4927 15.9642 17.5022 15.9056 17.4998L15.9075 17.4992H13.2419C13.1847 17.4992 13.1282 17.4879 13.0754 17.466C13.0226 17.4442 12.9746 17.4121 12.9342 17.3717C12.8938 17.3313 12.8618 17.2834 12.8399 17.2306C12.818 17.1778 12.8068 17.1212 12.8068 17.0641L12.8068 15.1022M5.59636 9.88719L5.59636 15.9284C5.59627 16.0872 5.62748 16.2445 5.68821 16.3912C5.74895 16.5379 5.838 16.6713 5.9503 16.7836C6.06259 16.8959 6.19591 16.9849 6.34265 17.0456C6.48938 17.1064 6.64665 17.1376 6.80545 17.1375C7.12589 17.1375 7.43318 17.0101 7.65976 16.7836C7.88634 16.557 8.01365 16.2497 8.0137 15.9293L8.01284 9.88719C9.29329 9.32793 10.4298 8.05047 10.4298 6.56367C10.4302 5.07729 9.22194 3.54264 8.01284 3.241L8.01327 5.83907L6.8046 7.2887L5.59636 5.83864L5.59636 3.241C4.38769 3.54306 3.17902 5.07729 3.17902 6.5641C3.17944 8.05048 4.31591 9.32793 5.59636 9.88719ZM14.9916 5.56545L14.1253 5.56545L13.2589 4.69909L13.6921 2.5332L15.4248 2.5332L15.858 4.69909L14.9916 5.56545Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>';\r\n\r\n return this.button;\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockTool, BlockToolConstructorOptions, ToolConfig } from '@editorjs/editorjs';\r\n\r\nimport {\r\n COMBINED_TEXT_BLOCK,\r\n COMBINED_TEXT_BLOCK_ADDED,\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n COMBINED_TEXT_BLOCK_REMOVED,\r\n COMBINED_TEXT_BLOCK_UPDATED,\r\n DEFAULT_PLACEHOLDER,\r\n DEFAULT_READONLY_PLACEHOLDER,\r\n SPLIT_MAX_LENGTH\r\n} from '../constants';\r\nimport type { CuiCombinedBlockToolData, CuiCombinedPartBlock, CuiMutationActions, CuiMutationCallback } from '../interfaces';\r\nimport { recalculateIndexes, splitHTML, generateId } from '../utils';\r\n\r\nexport class CuiCombinedTextBlockTool implements BlockTool {\r\n private readonly TAG = 'span';\r\n private readonly DEBOUNCE_TIME = 350;\r\n private readonly MAX_CHILD_COUNT_FOR_EMPTY = 1;\r\n private readonly PLACEHOLDER_ATTRIBUTE_NAME = 'placeholderActive';\r\n\r\n private mutationConfig = {\r\n subtree: true,\r\n childList: true,\r\n characterData: true\r\n };\r\n private api: API;\r\n private data: CuiCombinedBlockToolData;\r\n private placeholder: string;\r\n private wrapper?: HTMLElement;\r\n private observer?: MutationObserver;\r\n private lastBlockElement?: HTMLElement;\r\n private readOnly?: boolean;\r\n private changes = new Map();\r\n\r\n constructor(options: unknown) {\r\n const body = options as BlockToolConstructorOptions;\r\n const data = body.data;\r\n\r\n this.readOnly = body.readOnly;\r\n this.placeholder = this.getPlaceholder(body.config);\r\n this.api = body.api;\r\n this.data = {\r\n id: data.id || generateId(),\r\n textBlocks: data.textBlocks || []\r\n };\r\n\r\n this.convertDefaultDataToCustom(data);\r\n }\r\n\r\n public static get isInline(): boolean {\r\n return false;\r\n }\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get enableLineBreaks(): boolean {\r\n return false;\r\n }\r\n\r\n public static get toolbox(): { icon: string; title: string } {\r\n return {\r\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\" d=\"M8 9V7.2C8 7.08954 8.08954 7 8.2 7L12 7M16 9V7.2C16 7.08954 15.9105 7 15.8 7L12 7M12 7L12 17M12 17H10M12 17H14\"></path></svg>',\r\n title: 'Text'\r\n };\r\n }\r\n\r\n public static get pasteConfig(): object {\r\n return {\r\n tags: ['P']\r\n };\r\n }\r\n\r\n public onPaste(event: CustomEvent): void {\r\n if (event.type !== 'tag') {\r\n return;\r\n }\r\n\r\n const text = event.detail.data.textContent;\r\n\r\n this.data.textBlocks.splice(this.data.textBlocks.length - 1, 1, this.getBlockPartObject(generateId(), text));\r\n this.update(this.data.textBlocks);\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.wrapper = document.createElement('div');\r\n this.wrapper.classList.add(COMBINED_TEXT_BLOCK);\r\n this.wrapper.dataset[this.PLACEHOLDER_ATTRIBUTE_NAME] = this.api.i18n.t(this.placeholder);\r\n\r\n if (!this.readOnly) {\r\n this.wrapper.contentEditable = 'true';\r\n }\r\n\r\n if (!this.data.textBlocks.length) {\r\n this.data.textBlocks.push(this.getBlockPartObject(generateId(), ''));\r\n }\r\n\r\n this.update(this.data.textBlocks);\r\n this.checkIsEditorEmpty();\r\n\r\n if (!this.readOnly) {\r\n const callback = this.getMutationCallback(this.DEBOUNCE_TIME);\r\n\r\n this.observer = new MutationObserver(this.onMutationEvent.bind(this, callback));\r\n this.observer.observe(this.wrapper, this.mutationConfig);\r\n }\r\n\r\n return this.wrapper;\r\n }\r\n\r\n public merge(blocksData: CuiCombinedPartBlock[]): void {\r\n if (!this.wrapper) {\r\n return;\r\n }\r\n\r\n let blocksTextContent = '';\r\n this.data.textBlocks = [];\r\n\r\n blocksData.forEach((block) => {\r\n blocksTextContent += block.data.text;\r\n });\r\n\r\n for (let i = 0; i < this.wrapper.childNodes.length; i++) {\r\n const node = this.wrapper.childNodes.item(i);\r\n\r\n if (!(node instanceof HTMLSpanElement)) {\r\n return;\r\n }\r\n\r\n i--;\r\n blocksTextContent = node.innerHTML + blocksTextContent;\r\n node.remove();\r\n }\r\n\r\n const parts = blocksTextContent.length < SPLIT_MAX_LENGTH ? [blocksTextContent] : splitHTML(blocksTextContent);\r\n\r\n parts.forEach((part: string) => {\r\n const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n this.data.textBlocks.push(blockObject);\r\n });\r\n\r\n this.update(this.data.textBlocks);\r\n }\r\n\r\n public save(blockContent: HTMLElement): CuiCombinedPartBlock[] {\r\n const textBlocks: CuiCombinedPartBlock[] = [];\r\n\r\n blockContent.querySelectorAll(this.TAG).forEach((span: HTMLElement) => {\r\n textBlocks.push(this.getBlockPartObject(span.dataset['id']!, span.innerHTML));\r\n });\r\n\r\n return textBlocks;\r\n }\r\n\r\n public removed(): void {\r\n this.observer?.disconnect();\r\n\r\n const blockIds = new Set<string>();\r\n\r\n this.data.textBlocks.forEach((block: CuiCombinedPartBlock) => {\r\n blockIds.add(block.id || '');\r\n });\r\n\r\n this.removeBlocks(blockIds);\r\n }\r\n\r\n private onMutationEvent(callback: (mutationList: MutationRecord[]) => void, mutationList: MutationRecord[]): void {\r\n if (mutationList.length === 0) {\r\n return;\r\n }\r\n\r\n mutationList.forEach((mutation) => {\r\n if (mutation.removedNodes.length) {\r\n this.changes.set(generateId(), mutation);\r\n\r\n return;\r\n }\r\n\r\n this.changes.set(mutation.target, mutation);\r\n });\r\n\r\n callback(mutationList);\r\n this.checkIsEditorEmpty();\r\n }\r\n\r\n private getMutationCallback = (wait: number): CuiMutationCallback => {\r\n let timeoutId: CuiNullable<ReturnType<typeof setTimeout>> = null;\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n\r\n timeoutId = setTimeout(() => this.handleMutations(), wait);\r\n };\r\n };\r\n\r\n private handleMutations(): void {\r\n const mutationsList = [...this.changes.values()];\r\n const { updatedElements, removedElementsIds } = this.getMutationActions(mutationsList);\r\n const splitedParts: HTMLElement[] = [];\r\n\r\n updatedElements.forEach((element: HTMLElement) => {\r\n const elementContent: string = element.innerHTML;\r\n\r\n if (elementContent.length < SPLIT_MAX_LENGTH) {\r\n return;\r\n }\r\n\r\n const parts = splitHTML(elementContent);\r\n\r\n parts.forEach((part: string, index) => {\r\n if (index === 0) {\r\n return;\r\n }\r\n\r\n const blockId = generateId();\r\n const textElement = this.createBlock(blockId, part);\r\n\r\n splitedParts.push(textElement);\r\n });\r\n\r\n element.innerHTML = parts[0];\r\n element.after(...splitedParts);\r\n });\r\n\r\n this.addBlocks(splitedParts, updatedElements);\r\n this.updateBlocks(updatedElements);\r\n this.removeBlocks(removedElementsIds);\r\n this.changes.clear();\r\n }\r\n\r\n private getNextIndex(): number {\r\n recalculateIndexes(this.api.blocks);\r\n const index = this.api.blocks.getCurrentBlockIndex();\r\n const block = this.api.blocks.getBlockByIndex(index);\r\n const dataIndex = Number(block?.holder.dataset['index']);\r\n\r\n const selection = window.getSelection();\r\n const range = selection?.rangeCount ? selection.getRangeAt(0) : null;\r\n const caretPosition = range?.startOffset ?? 1;\r\n\r\n let nextBlockIndex = dataIndex;\r\n\r\n if (caretPosition !== 0) {\r\n const blockContainer = block?.holder.querySelector('.' + COMBINED_TEXT_BLOCK) as HTMLElement;\r\n const childrenCount = blockContainer?.children?.length ? blockContainer?.children?.length - 1 : 0;\r\n\r\n nextBlockIndex = dataIndex + childrenCount + 1;\r\n }\r\n\r\n if (!nextBlockIndex) {\r\n nextBlockIndex ||= 0;\r\n }\r\n\r\n return nextBlockIndex;\r\n }\r\n\r\n private getBlockPartObject(blockId: string, text: string): CuiCombinedPartBlock {\r\n return {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n }\r\n\r\n private getMutationActions(mutationList: MutationRecord[]): CuiMutationActions {\r\n const updatedElements = new Set<HTMLElement>();\r\n const removedElementsIds = new Set<string>();\r\n const changedOutsideElements: Node[] = [];\r\n\r\n this.lastBlockElement = undefined;\r\n\r\n mutationList.forEach((mutation: MutationRecord): void => {\r\n this.handleUpdatedBlocks(mutation, updatedElements, changedOutsideElements);\r\n this.handleRemovedBlocks(mutation, removedElementsIds);\r\n });\r\n\r\n if (this.lastBlockElement) {\r\n const lastBlockElement = this.lastBlockElement as HTMLElement;\r\n\r\n lastBlockElement.append(...changedOutsideElements);\r\n this.setCaretToBlocksEnd(lastBlockElement);\r\n }\r\n\r\n return {\r\n updatedElements,\r\n removedElementsIds\r\n };\r\n }\r\n\r\n private setCaretToBlocksEnd(block: HTMLElement): void {\r\n const selection = window.getSelection();\r\n const range = document.createRange();\r\n\r\n range.setStart(block, block.childNodes.length);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n\r\n private handleUpdatedBlocks(\r\n mutation: MutationRecord,\r\n updatedElements: Set<HTMLElement>,\r\n outsideChanges: Node[]\r\n ): void {\r\n let element = mutation.target as HTMLElement;\r\n\r\n if (mutation.target.nodeType === Node.TEXT_NODE) {\r\n element = mutation.target.parentElement as HTMLElement;\r\n }\r\n\r\n const span = element?.closest('.' + COMBINED_TEXT_BLOCK_PART) as HTMLElement;\r\n\r\n if (span) {\r\n updatedElements.add(span);\r\n\r\n return;\r\n }\r\n\r\n this.handleChangesOutsideBlock(element, outsideChanges);\r\n }\r\n\r\n private handleChangesOutsideBlock(element: HTMLElement, outsideChanges: Node[]): void {\r\n if (!element || this.lastBlockElement) {\r\n return;\r\n }\r\n\r\n element.childNodes.forEach((block) => {\r\n const blockElement = block as HTMLElement;\r\n\r\n if (blockElement.classList?.contains(COMBINED_TEXT_BLOCK_PART)) {\r\n this.lastBlockElement = blockElement;\r\n\r\n return;\r\n }\r\n\r\n outsideChanges.push(block);\r\n });\r\n }\r\n\r\n private addBlocks(splicedParts: HTMLElement[], updatedElements: Set<HTMLElement>): void {\r\n if (!splicedParts.length) {\r\n return;\r\n }\r\n\r\n const addedBlocks: CuiCombinedPartBlock[] = splicedParts.map((block) => {\r\n const blockId = block.dataset['id'];\r\n\r\n return {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: block.innerHTML,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n });\r\n\r\n const previousElement = updatedElements.values().next().value;\r\n const id = previousElement?.dataset['id'];\r\n const index = Number(previousElement?.dataset['index']) + 1;\r\n const blockIndex = this.data.textBlocks.findIndex((block) => block.id === id);\r\n\r\n this.data.textBlocks.splice(blockIndex, 0, ...addedBlocks);\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n index,\r\n blockIndex,\r\n blocks: addedBlocks,\r\n data: this.data.textBlocks\r\n });\r\n }\r\n\r\n private updateBlocks(updatedElements: Set<HTMLElement>): void {\r\n if (!updatedElements.size) {\r\n return;\r\n }\r\n\r\n const updatedBlocks = [...updatedElements.values()].map((block) => {\r\n return {\r\n id: block.dataset['id'],\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: block.innerHTML,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n });\r\n\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, updatedBlocks);\r\n }\r\n\r\n private handleRemovedBlocks(mutation: MutationRecord, removedElementsIds: Set<string>): void {\r\n if (mutation.removedNodes.length === 0) {\r\n return;\r\n }\r\n\r\n mutation.removedNodes.forEach((node: Node): void => {\r\n if (!(node instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n const blockId = (node as HTMLElement).dataset['id'];\r\n\r\n if (!blockId) {\r\n return;\r\n }\r\n\r\n removedElementsIds.add(blockId);\r\n });\r\n }\r\n\r\n private removeBlocks(ids: Set<string>): void {\r\n if (!ids.size) {\r\n return;\r\n }\r\n\r\n const removedElementIds = [...ids.values()];\r\n\r\n this.data.textBlocks = this.data.textBlocks.filter((block) => !ids.has(block.id || ''));\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_REMOVED, removedElementIds);\r\n }\r\n\r\n private update(blocks: CuiCombinedPartBlock[]): void {\r\n if (!blocks.length) {\r\n return;\r\n }\r\n\r\n blocks.forEach((block: CuiCombinedPartBlock) => {\r\n const textElement = this.createBlock(block.id || generateId(), block.data.text);\r\n\r\n if (!this.wrapper) {\r\n return;\r\n }\r\n\r\n if (this.wrapper.querySelector('.' + COMBINED_TEXT_BLOCK_PART)) {\r\n this.wrapper.append(textElement);\r\n\r\n return;\r\n }\r\n\r\n this.wrapper.replaceChildren(textElement);\r\n });\r\n\r\n setTimeout(() => {\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n blocks\r\n });\r\n });\r\n }\r\n\r\n private createBlock(id: string, text: string): HTMLElement {\r\n const textElement = document.createElement(this.TAG);\r\n textElement.classList.add(COMBINED_TEXT_BLOCK_PART);\r\n textElement.innerHTML = text;\r\n textElement.dataset['id'] = id;\r\n\r\n return textElement;\r\n }\r\n\r\n private convertDefaultDataToCustom(data: { text: string }): void {\r\n if (Array.isArray(data)) {\r\n this.data.textBlocks = data.map((block) => {\r\n block.id = generateId();\r\n block.data.parentId = this.data.id;\r\n\r\n return block;\r\n });\r\n }\r\n\r\n if (!data.text) {\r\n return;\r\n }\r\n\r\n const fragment = document.createRange().createContextualFragment(data.text);\r\n let elementContent = '';\r\n\r\n fragment.childNodes.forEach((node) => {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n elementContent += node.textContent;\r\n\r\n return;\r\n }\r\n\r\n elementContent += (node as HTMLElement).innerHTML;\r\n });\r\n\r\n const parts = elementContent.length < SPLIT_MAX_LENGTH ? [elementContent] : splitHTML(elementContent);\r\n\r\n parts.forEach((part: string) => {\r\n const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n this.data.textBlocks.push(blockObject);\r\n });\r\n }\r\n\r\n private checkIsEditorEmpty(): void {\r\n if (!this.wrapper || this.wrapper.children.length > this.MAX_CHILD_COUNT_FOR_EMPTY) {\r\n return;\r\n }\r\n\r\n const item = this.wrapper.children.item(0) as HTMLElement;\r\n const isItemEmpty = !item.textContent?.length;\r\n\r\n this.wrapper.dataset['empty'] = `${isItemEmpty}`;\r\n }\r\n\r\n private getPlaceholder(config: ToolConfig): string {\r\n if (this.readOnly) {\r\n return config.readonlyPlaceholder ?? DEFAULT_READONLY_PLACEHOLDER;\r\n }\r\n\r\n return config.placeholder ?? DEFAULT_PLACEHOLDER;\r\n }\r\n}\r\n","import type { EditorConfig, LogLevels } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_NAME, DEFAULT_CONFIG } from '../constants';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\nimport { CuiCombinedTextBlockTool, CuiBoldInlineTool, CuiItalicInlineTool, CuiLinkMarker } from '../tools';\r\n\r\nexport const getEditorConfig = (id: string, config: CuiEditorConfig = DEFAULT_CONFIG): EditorConfig => ({\r\n holder: id,\r\n logLevel: 'ERROR' as LogLevels,\r\n readOnly: config.readOnly,\r\n autofocus: config.autofocus,\r\n tools: {\r\n paragraph: {\r\n class: CuiCombinedTextBlockTool,\r\n inlineToolbar: true,\r\n config: {\r\n placeholder: config.placeholder,\r\n readonlyPlaceholder: config.readonlyPlaceholder\r\n }\r\n },\r\n link: {\r\n class: CuiLinkMarker\r\n },\r\n bold: {\r\n class: CuiBoldInlineTool\r\n },\r\n italic: {\r\n class: CuiItalicInlineTool\r\n },\r\n ...config.tools\r\n },\r\n defaultBlock: COMBINED_TEXT_BLOCK_NAME\r\n});\r\n","import { EDITOR_ATTACHES_TOOL_SELECTOR, EDITOR_IMAGE_TOOL_SELECTOR, EDITOR_TOOL_MODAL_SELECTOR, EDITOR_TOOLTIP_SELECTOR, EDITOR_VIDEO_TOOL_SELECTOR, EditorAttachesToolComponent, EditorImageToolComponent, EditorToolModalComponent, EditorTooltipComponent, EditorVideoToolComponent, MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR, MarkerModalComponent, MarkerSelectComponent } from \"../components\";\r\nimport { CuiCustomElement } from \"../interfaces\";\r\n\r\nexport const EDITOR_CUSTOM_ELEMENTS: readonly CuiCustomElement[] = [\r\n {\r\n selector: EDITOR_TOOLTIP_SELECTOR,\r\n component: EditorTooltipComponent\r\n },\r\n {\r\n selector: MARKER_SELECT_SELECTOR,\r\n component: MarkerSelectComponent\r\n },\r\n {\r\n selector: EDITOR_TOOL_MODAL_SELECTOR,\r\n component: EditorToolModalComponent\r\n },\r\n {\r\n selector: MARKER_MODAL_SELECTOR,\r\n component: MarkerModalComponent\r\n },\r\n {\r\n selector: EDITOR_VIDEO_TOOL_SELECTOR,\r\n component: EditorVideoToolComponent\r\n },\r\n {\r\n selector: EDITOR_IMAGE_TOOL_SELECTOR,\r\n component: EditorImageToolComponent\r\n },\r\n {\r\n selector: EDITOR_ATTACHES_TOOL_SELECTOR,\r\n component: EditorAttachesToolComponent\r\n }\r\n];\r\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\nimport { EDITOR_CUSTOM_ELEMENTS } from './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","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, SimpleChanges } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport EditorJS from '@editorjs/editorjs';\r\nimport type { Observable, Subscription } from 'rxjs';\r\nimport {\r\n concatMap,\r\n delay,\r\n finalize,\r\n fromEvent,\r\n map,\r\n Subject,\r\n takeWhile,\r\n tap,\r\n throttleTime,\r\n timer,\r\n toArray\r\n} from 'rxjs';\r\n\r\nimport { getEditorConfig } from './config';\r\nimport {\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n DEFAULT_CONFIG\r\n} from './constants/editor.constants';\r\nimport { setEditorEvents } from './events/set-editor-events';\r\nimport type {\r\n CuiBlockData,\r\n CuiBlocksRequestData,\r\n CuiCombinedBlockAddingEvent,\r\n CuiCombinedBlockToolData,\r\n CuiCombinedPartBlock,\r\n CuiEditorConfig,\r\n CuiEventActionData,\r\n CuiFullBlockData\r\n} from './interfaces';\r\nimport { Block, CuiEditorService, CuiJTextApiService, EventActions } from './services';\r\nimport { recalculateIndexes } from './utils/recalculate-indexes';\r\n\r\n@Component({\r\n selector: 'cui-editor',\r\n standalone: true,\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['./editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiEditorService, CuiJTextApiService]\r\n})\r\nexport class CuiEditorComponent implements OnDestroy {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly editorService = inject(CuiEditorService);\r\n private readonly jTextService = inject(CuiJTextApiService);\r\n\r\n private readonly POOLING_DELAY = 100;\r\n private readonly ELEMENT_SPACE_TO_BOTTOM = 150;\r\n private readonly SCROLL_THROTTLE_TIME = 200;\r\n\r\n private readonly isReadonly = computed(() => this.config?.readOnly);\r\n private readonly emptyQueue = new Subject();\r\n\r\n @ViewChild('editor')\r\n protected readonly editorRef!: ElementRef;\r\n\r\n @Output()\r\n public readonly editorEmpty = new EventEmitter<boolean>();\r\n\r\n @Input({ required: true })\r\n public editorID!: string;\r\n\r\n @Input()\r\n public config: CuiEditorConfig = DEFAULT_CONFIG;\r\n\r\n @Input()\r\n public requestSize = 40;\r\n\r\n private poolingSubscription!: Subscription;\r\n private scrollSubscription!: Subscription;\r\n private isSkipCombinedBlockOnChange: boolean[] = [];\r\n private isFirst = true;\r\n private isChanging = false;\r\n private isSkip = false;\r\n private isRequested = false;\r\n private isDestroyed = false;\r\n private blockIdsMap = new Map<string, string>();\r\n private combinedBlocks = new Map();\r\n private index = 0;\r\n private page = 0;\r\n private addedBlocks: CuiBlockData[] = [];\r\n private updatedBlocks: Block[] = [];\r\n private removedBlocksIds: string[] = [];\r\n private changesQueue: BlockMutationEvent[][] = [];\r\n private abortController = new AbortController();\r\n\r\n public editor!: EditorJS;\r\n public editorElement!: HTMLElement;\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['editorID'] || changes['config']) {\r\n this.initEditorChanges();\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.isDestroyed = true;\r\n this.destroyEditor();\r\n }\r\n\r\n private onScrollEvent(element: HTMLElement): void {\r\n const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;\r\n const currentHeight = element.scrollTop + element.clientHeight;\r\n\r\n if (currentHeight < overallHeight || this.isRequested) {\r\n return;\r\n }\r\n\r\n this.isRequested = true;\r\n\r\n const size = this.requestSize;\r\n let blocksCount = 0;\r\n\r\n this.getBlocks(this.page, size)\r\n .pipe(\r\n tap((blocks) => (blocksCount = blocks.length)),\r\n finalize(() => {\r\n this.isRequested = false;\r\n\r\n if (blocksCount >= size) {\r\n return;\r\n }\r\n\r\n this.scrollSubscription.unsubscribe();\r\n })\r\n )\r\n .subscribe();\r\n\r\n this.page++;\r\n }\r\n\r\n private async onEditorChange(_: API, event: BlockMutationEvent | BlockMutationEvent[]): Promise<void> {\r\n if (this.isReadonly()) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(event)) {\r\n event = [event];\r\n }\r\n\r\n recalculateIndexes(this.editor.blocks);\r\n\r\n if (this.isChanging) {\r\n this.changesQueue.unshift(event);\r\n }\r\n\r\n this.startChanges(event);\r\n this.editorEmpty.emit(this.checkIsEmpty());\r\n }\r\n\r\n private onAddedCombinedBlock(data: CuiCombinedBlockAddingEvent): void {\r\n if (this.isSkipCombinedBlockOnChange.length) {\r\n this.isSkipCombinedBlockOnChange.pop();\r\n\r\n return;\r\n }\r\n\r\n const blocksWithoutId = data.blocks.map((block) => ({\r\n block: { ...block, id: undefined },\r\n id: block.id!\r\n }));\r\n\r\n this.addedBlocks.push(...blocksWithoutId);\r\n }\r\n\r\n private onUpdatedCombinedBlock(updatedBlocks: Block[]): void {\r\n if (!updatedBlocks.length) {\r\n return;\r\n }\r\n\r\n this.updatedBlocks.push(...updatedBlocks);\r\n }\r\n\r\n private onRemovedCombinedBlock(blockIds: string[]): void {\r\n if (!blockIds.length) {\r\n return;\r\n }\r\n\r\n this.removedBlocksIds.push(...blockIds);\r\n }\r\n\r\n private initEditorChanges(): void {\r\n this.jTextService.addOptions(this.config.requestOptions);\r\n\r\n this.editor = this.initEditor(this.editorID);\r\n this.editor.isReady.then(() => {\r\n this.editorElement = this.editorRef.nativeElement;\r\n\r\n this.initEditorEvents(this.editorElement);\r\n this.initScrollObserver();\r\n this.startPooling(this.requestSize);\r\n this.setListenersOnCustomBlockChanges();\r\n });\r\n }\r\n\r\n private initEditor(id: string): EditorJS {\r\n const config = this.config;\r\n\r\n this.destroyEditor();\r\n this.editor = new EditorJS({\r\n ...getEditorConfig(id, config),\r\n onChange: this.onEditorChange.bind(this)\r\n });\r\n\r\n return this.editor;\r\n }\r\n\r\n private initScrollObserver(): void {\r\n const element = this.config?.element ?? this.editorElement;\r\n const scrollObserver = fromEvent(element, 'scroll');\r\n\r\n this.scrollSubscription = scrollObserver\r\n .pipe(\r\n takeUntilDestroyed(this.destroy),\r\n throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {\r\n leading: true,\r\n trailing: true\r\n }),\r\n map(() => this.onScrollEvent(element))\r\n )\r\n .subscribe();\r\n }\r\n\r\n private initEditorEvents(element: HTMLElement): void {\r\n const readOnly = this.isReadonly();\r\n\r\n if (readOnly) {\r\n return;\r\n }\r\n\r\n setEditorEvents(element, this.abortController.signal);\r\n }\r\n\r\n private startPooling(size: number): void {\r\n const scrollElement = this.config?.element ?? this.editorElement;\r\n const withoutPreload = this.config?.withoutPreload;\r\n\r\n this.poolingSubscription = timer(0, this.POOLING_DELAY)\r\n .pipe(\r\n concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))),\r\n tap(() => this.page++),\r\n takeWhile(\r\n (blocks) =>\r\n !withoutPreload &&\r\n scrollElement.scrollHeight <= scrollElement.clientHeight &&\r\n blocks.length >= size\r\n ),\r\n finalize(() => {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n\r\n this.setStartBlock();\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private destroyEditor(): void {\r\n this.abortController.abort();\r\n this.resetData();\r\n // TODO: в рандом кейсах падает ошибка если убрать проверку на вызов destroy\r\n this.editor?.destroy?.();\r\n }\r\n\r\n private setListenersOnCustomBlockChanges(): void {\r\n this.editorService.setListenersOnCustomBlockChanges(this.editor, {\r\n removedCallback: this.onRemovedCombinedBlock.bind(this),\r\n updatedCallback: this.onUpdatedCombinedBlock.bind(this),\r\n addedCallback: this.onAddedCombinedBlock.bind(this)\r\n });\r\n }\r\n\r\n private async startChanges(event: BlockMutationEvent[]): Promise<void> {\r\n if (this.isSkip || this.isChanging || !this.editor) {\r\n this.isSkip = false;\r\n\r\n return;\r\n }\r\n\r\n this.isChanging = true;\r\n\r\n const editorOutput = await this.editor.save();\r\n const events = event.filter((data) => data.detail.target.name !== COMBINED_TEXT_BLOCK_NAME);\r\n const blocks = this.editorService.sortEventsByTypes(events);\r\n const { addBlocks$, addedBlocks } = this.collectAddedBlocksRequest(blocks, editorOutput);\r\n\r\n this.addedBlocks = [];\r\n\r\n addBlocks$\r\n .pipe(\r\n tap((blockIds) => this.setBlockIdsToMap(blockIds, addedBlocks)),\r\n concatMap(() => this.collectUpdatedBlocksRequest(blocks, editorOutput)),\r\n concatMap(() => this.collectRemovedBlocksRequest(blocks))\r\n )\r\n .subscribe({\r\n complete: () => this.startNextChange(),\r\n error: () => this.startNextChange()\r\n });\r\n }\r\n\r\n private startNextChange(): void {\r\n this.isChanging = false;\r\n\r\n const nextEvents = this.changesQueue.pop();\r\n\r\n if (nextEvents) {\r\n this.startChanges(nextEvents);\r\n }\r\n\r\n this.emptyQueue.next(null);\r\n }\r\n\r\n private collectAddedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): CuiBlocksRequestData {\r\n const defaultBlocksWithIndex = blocks[EventActions.add].map((addedBlock) =>\r\n this.editorService.getFullBlockData(addedBlock, editorOutput)\r\n );\r\n const combinedBlocksWithIndex = this.addedBlocks.map((block) => {\r\n const element = this.editorElement.querySelector(`[data-id=\"${block.id}\"]`) as HTMLElement;\r\n const index = Number(element?.dataset['index']);\r\n\r\n return { ...block, index };\r\n });\r\n\r\n const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort((first, second) => first.index - second.index);\r\n const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorID, addedBlocks);\r\n\r\n return {\r\n addedBlocks,\r\n addBlocks$\r\n };\r\n }\r\n\r\n private collectUpdatedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): Observable<Block[]> {\r\n blocks[EventActions.update].forEach((updateBlock) => {\r\n const { id, block } = this.editorService.getFullBlockData(updateBlock, editorOutput);\r\n block.id = id;\r\n\r\n this.updatedBlocks.push(block);\r\n });\r\n\r\n const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);\r\n\r\n this.updatedBlocks = [];\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n private collectRemovedBlocksRequest(blocks: CuiEventActionData): Observable<void> {\r\n blocks[EventActions.remove].forEach((block) => {\r\n const id = block.detail.target.id;\r\n\r\n this.removedBlocksIds.push(id);\r\n });\r\n\r\n const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(\r\n this.editorID,\r\n this.removedBlocksIds,\r\n this.blockIdsMap\r\n );\r\n this.removedBlocksIds = [];\r\n\r\n return removeBlocks$;\r\n }\r\n\r\n private getBlocks(page = 0, size = 40): Observable<Block[]> {\r\n let combinedBlock: CuiNullable<Block>;\r\n\r\n return this.jTextService.getBlocks(this.editorID, page, size).pipe(\r\n takeUntilDestroyed(this.destroy),\r\n finalize(() => {\r\n if (combinedBlock) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n recalculateIndexes(this.editor.blocks);\r\n }),\r\n map((block) => {\r\n if (block.type === COMBINED_TEXT_BLOCK_PART) {\r\n const blockData = block.data as { parentId: string };\r\n\r\n if (combinedBlock && blockData.parentId! !== combinedBlock?.id) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n combinedBlock = this.setCombinedBlock(block);\r\n\r\n return;\r\n }\r\n\r\n if (combinedBlock) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n this.addBlock(block);\r\n }),\r\n toArray()\r\n ) as unknown as Observable<Block[]>;\r\n }\r\n\r\n private addBlock(block: Block): void {\r\n if (typeof block.type !== 'string') {\r\n return;\r\n }\r\n\r\n this.blockIdsMap.set(block.id!, block.id!);\r\n this.insert(block);\r\n }\r\n\r\n private addCombinedBlock(combinedBlock: Block): void {\r\n this.isSkipCombinedBlockOnChange.push(true);\r\n const block = this.editor.blocks.getById(combinedBlock.id || '');\r\n\r\n if (block) {\r\n this.editor.blocks.update(block.id, combinedBlock.data as CuiCombinedPartBlock);\r\n\r\n return;\r\n }\r\n\r\n this.insert(combinedBlock);\r\n }\r\n\r\n private insert(block: Block): void {\r\n this.checkFirst(block);\r\n this.index++;\r\n }\r\n\r\n private checkFirst(block: Block): void {\r\n if (!this.isFirst) {\r\n this.isSkip = true;\r\n this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);\r\n\r\n return;\r\n }\r\n\r\n // TODO: есть варик что что то пойдет не так\r\n this.editor.blocks.render({ blocks: [block] }).then(() => this.isSkip = false);\r\n this.isFirst = false;\r\n }\r\n\r\n private setCombinedBlock(block: Block): Block {\r\n const combinedBlockData = block.data as { parentId: string };\r\n const parent = this.combinedBlocks.get(combinedBlockData.parentId);\r\n\r\n this.blockIdsMap.set(block.id!, block.id!);\r\n\r\n if (parent) {\r\n const parentData = parent.data as { textBlocks: Block[] };\r\n parentData.textBlocks.push(block);\r\n\r\n return parent;\r\n }\r\n\r\n const parentObject: Block = {\r\n id: combinedBlockData.parentId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: combinedBlockData.parentId,\r\n textBlocks: [block]\r\n }\r\n };\r\n\r\n this.combinedBlocks.set(combinedBlockData.parentId, parentObject);\r\n\r\n return parentObject;\r\n }\r\n\r\n private setBlockIdsToMap(blockIds: string[], addedBlocks: CuiFullBlockData[]): void {\r\n if (!blockIds.length) {\r\n return;\r\n }\r\n\r\n addedBlocks.forEach((blockData, index) => {\r\n this.blockIdsMap.set(blockData.id, blockIds[index]);\r\n });\r\n }\r\n\r\n private setStartBlock(): void {\r\n if (this.blockIdsMap.size) {\r\n this.setFocus();\r\n this.editorEmpty.emit(this.checkIsEmpty());\r\n\r\n return;\r\n }\r\n\r\n if (this.isReadonly()) {\r\n this.editor.render({ blocks: [] });\r\n\r\n return;\r\n }\r\n\r\n this.editorService.setStartBlock(this.editorID, async (block: Block<CuiCombinedBlockToolData>, id: string) => {\r\n this.blockIdsMap.set(id, id);\r\n this.isSkipCombinedBlockOnChange.push(true);\r\n\r\n await this.editor.render({ blocks: [block] });\r\n\r\n this.setFocus();\r\n recalculateIndexes(this.editor.blocks);\r\n });\r\n }\r\n\r\n private setFocus(): void {\r\n if (!this.config?.autofocus) {\r\n return;\r\n }\r\n\r\n this.editor.caret.focus();\r\n }\r\n\r\n private checkIsEmpty(): boolean {\r\n const MIN_BLOCKS_COUNT = 1;\r\n const REDACTOR_SELECTOR = '.codex-editor__redactor';\r\n const redactor = this.editorElement.querySelector(REDACTOR_SELECTOR);\r\n const blocksCount = redactor?.childElementCount ?? 0;\r\n\r\n return blocksCount <= MIN_BLOCKS_COUNT && !redactor?.textContent;\r\n }\r\n\r\n private resetData(): void {\r\n this.scrollSubscription?.unsubscribe();\r\n this.poolingSubscription?.unsubscribe();\r\n this.isSkipCombinedBlockOnChange = [];\r\n this.isFirst = true;\r\n this.isChanging = false;\r\n this.isSkip = false;\r\n this.isRequested = false;\r\n this.blockIdsMap = new Map<string, string>();\r\n this.combinedBlocks = new Map();\r\n this.index = 0;\r\n this.page = 0;\r\n this.addedBlocks = [];\r\n this.updatedBlocks = [];\r\n this.removedBlocksIds = [];\r\n this.changesQueue = [];\r\n this.abortController = new AbortController();\r\n }\r\n}\r\n","<div\r\n #editor\r\n [id]=\"editorID\"\r\n [class._readonly]=\"config.readOnly\"\r\n data-editor\r\n></div>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRender,\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\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorReadonlyConfig } from './editor-readonly.options';\r\n\r\n@Component({\r\n selector: 'cui-editor-readonly',\r\n standalone: true,\r\n imports: [CuiEditorComponent, NgTemplateOutlet],\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 isMoreButtonShown = signal(false);\r\n protected readonly editorConfig = computed(() => ({ readOnly: true, withoutPreload: true, ...this.config() }));\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>(68);\r\n\r\n constructor() {\r\n this.initEditorIdEffect();\r\n this.initReadEditorProperty();\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 initReadEditorProperty(): void {\r\n afterRender({\r\n read: () => this.isMoreButtonShown.set(this.editor().editorElement?.scrollHeight > this.shortHeight())\r\n });\r\n }\r\n\r\n private initEditorIdEffect(): void {\r\n effect(() => {\r\n this.editorId();\r\n this.isShowMore.set(false);\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<cui-editor\r\n #editor\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorID]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n@if (isMoreButtonShown()) {\r\n <button class=\"c-button\" (click)=\"onShow(editor)\">\r\n <ng-container [ngTemplateOutlet]=\"buttonTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"></ng-container>\r\n </button>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, input, output, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiSvgModule } from '../../../components';\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'cui-editor-modal',\r\n imports: [\r\n CuiEditorComponent,\r\n CuiButtonModule,\r\n NgTemplateOutlet,\r\n CuiSvgModule\r\n ],\r\n standalone: true,\r\n templateUrl: './editor-modal.component.html',\r\n styleUrl: './editor-modal.component.scss'\r\n})\r\nexport class CuiEditorModalComponent {\r\n protected readonly isOpen = signal(false);\r\n protected readonly isButtonDisabled = signal<boolean>(false);\r\n\r\n public readonly title = input.required<string>();\r\n public readonly buttonTemplate = input<TemplateRef<HTMLElement>>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly editorId = input<CuiNullable<string>>();\r\n\r\n public readonly editorCreated = output();\r\n public readonly modalClosed = output();\r\n\r\n protected onModalOpen(): void {\r\n this.isButtonDisabled.set(true);\r\n\r\n if (this.editorId()) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.editorCreated.emit();\r\n }\r\n public open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n public close(): void {\r\n this.isButtonDisabled.set(false);\r\n this.isOpen.set(false);\r\n this.modalClosed.emit();\r\n }\r\n}\r\n","@if (buttonTemplate(); as template) {\r\n <button\r\n type=\"button\"\r\n class=\"button\"\r\n (click)=\"onModalOpen()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </button>\r\n} @else {\r\n <button\r\n class=\"description\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n icon=\"cuiIconRichText\"\r\n size=\"sm\"\r\n (click)=\"onModalOpen()\"\r\n [disabled]=\"isButtonDisabled()\"\r\n >\r\n @if (editorId()) {\r\n <span class=\"description__text _created\">{{ 'Description' }}</span>\r\n <cui-svg\r\n class=\"description__icon\"\r\n icon=\"cuiIconEdit\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n } @else {\r\n <cui-svg\r\n class=\"description__icon\"\r\n icon=\"cuiIconPlus\"\r\n color=\"var(--cui-light-blue-600)\"\r\n />\r\n <span class=\"description__text\">{{ 'Add description' }}</span>\r\n }\r\n </button>\r\n}\r\n@if (isOpen()) {\r\n <div class=\"wrapper\">\r\n @if (editorId(); as id) {\r\n <header class=\"header\">\r\n <div class=\"info\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n icon=\"cuiIconChevronLeft\"\r\n size=\"xxs\"\r\n appearance=\"secondary\"\r\n shape=\"rounded\"\r\n (click)=\"close()\"\r\n ></button>\r\n <h1 class=\"title\">{{ title() }}</h1>\r\n </div>\r\n <div class=\"actions\">\r\n <!-- <cui-loader /> -->\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n size=\"xs\"\r\n (click)=\"close()\"\r\n >\r\n {{ 'Done' }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <section class=\"section\">\r\n <cui-editor\r\n #editorComponent\r\n class=\"editor\"\r\n [editorID]=\"id\"\r\n [config]=\"config()\"\r\n />\r\n </section>\r\n }\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiButtonModule, CuiHintModule, CuiContentWrapperComponent } from '../../../components';\r\nimport { CuiTooltip } from '../../../directives';\r\n\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorModalComponent } from '../editor-modal/editor-modal.component';\r\n\r\n@Component({\r\n selector: 'cui-editor-block',\r\n imports: [\r\n CuiButtonModule,\r\n CuiEditorModalComponent,\r\n CuiEditorComponent,\r\n TranslocoDirective,\r\n CuiContentWrapperComponent,\r\n CuiTooltip,\r\n CuiHintModule\r\n ],\r\n standalone: true,\r\n templateUrl: './editor-block.component.html',\r\n styleUrls: ['./editor-block.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorBlockComponent {\r\n private skipFirstValidation = true;\r\n\r\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n protected readonly isDescriptionModalOpen = signal(false);\r\n protected readonly isDescriptionEmpty = signal(false);\r\n\r\n public readonly editorContainer = viewChild<string, ElementRef<HTMLElement>>('editorContainer', {\r\n read: ElementRef\r\n });\r\n\r\n public readonly title = input.required<string>();\r\n public readonly editorId = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly required = input(false);\r\n\r\n public readonly editorEmpty = output<boolean>();\r\n\r\n constructor() {\r\n this.initEditorConfig();\r\n }\r\n\r\n protected onToggleDescriptionModal(): void {\r\n this.isDescriptionModalOpen.update((prev) => !prev);\r\n }\r\n\r\n protected onDescriptionChange(value: boolean): void {\r\n this.editorEmpty.emit(value);\r\n\r\n if (this.skipFirstValidation) {\r\n this.skipFirstValidation = false;\r\n\r\n return;\r\n }\r\n\r\n this.isDescriptionEmpty.set(value);\r\n }\r\n\r\n private initEditorConfig(): void {\r\n const effectRef = effect(() => {\r\n const element = this.editorContainer()?.nativeElement;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n this.editorConfig.set({ ...this.config(), element });\r\n effectRef.destroy();\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"wrapper\">\r\n <span class=\"title\">\r\n {{ t('DESCRIPTION') }}\r\n @if (required()) {\r\n <span class=\"title__required\">*</span>\r\n }\r\n </span>\r\n <ng-template #button>\r\n <button\r\n [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\r\n cuiButton\r\n size=\"xxs\"\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n icon=\"cuiIconMaximizeSm\"\r\n (click)=\"onToggleDescriptionModal()\"\r\n ></button>\r\n </ng-template>\r\n <cui-editor-modal\r\n [title]=\"title()\"\r\n [editorId]=\"editorId()\"\r\n [buttonTemplate]=\"button\"\r\n [config]=\"config()\"\r\n (modalClosed)=\"onToggleDescriptionModal()\"\r\n />\r\n </div>\r\n <div\r\n #editorContainer\r\n cuiContentWrapper\r\n class=\"editor\"\r\n [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\r\n >\r\n @if (!isDescriptionModalOpen() && editorConfig()) {\r\n <cui-editor\r\n #editorComponent\r\n [editorID]=\"editorId()\"\r\n [config]=\"editorConfig()!\"\r\n (editorEmpty)=\"onDescriptionChange($event)\"\r\n />\r\n }\r\n </div>\r\n @if (required() && isDescriptionEmpty()) {\r\n <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\r\n }\r\n</ng-container>\r\n","import type { HttpEvent, HttpInterceptorFn } from '@angular/common/http';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const cuiXNdjsonInterceptor: HttpInterceptorFn = (request, next) => {\r\n if (request.headers.get('Content-Type') !== 'application/x-ndjson') {\r\n return next(request);\r\n }\r\n\r\n return new Observable<HttpEvent<unknown>>((observer) => {\r\n const controller = new AbortController();\r\n const signal = controller.signal;\r\n\r\n (async (): Promise<void> => {\r\n try {\r\n const response = await fetch(request.urlWithParams, {\r\n method: request.method,\r\n headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\r\n headers[key] = request.headers.get(key)!;\r\n\r\n return headers;\r\n }, {}),\r\n body: request.body ? JSON.stringify(request.body) : null,\r\n signal\r\n });\r\n\r\n if (!response.ok) {\r\n const error = await response.json();\r\n\r\n observer.error(new HttpErrorResponse({ error }));\r\n\r\n return;\r\n }\r\n\r\n const reader = response.body!.getReader();\r\n const decoder = new TextDecoder();\r\n let buffer = '';\r\n\r\n for (;;) {\r\n const { done, value } = await reader.read();\r\n\r\n if (done) {\r\n observer.complete();\r\n\r\n return;\r\n }\r\n\r\n buffer += decoder.decode(value);\r\n const lines = buffer.split('\\n');\r\n buffer = lines.pop() ?? '';\r\n\r\n lines.forEach((line) => observer.next(JSON.parse(line)));\r\n }\r\n } catch (error) {\r\n observer.error(new HttpErrorResponse({ error }));\r\n }\r\n })();\r\n\r\n return () => controller.abort();\r\n });\r\n};\r\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { catchError, finalize, throwError } from 'rxjs';\r\n\r\nimport { CuiLoaderService } from '../services';\r\n\r\nexport const cuiLoaderInterceptor: HttpInterceptorFn = (request, next) => {\r\n const loaderService = inject(CuiLoaderService);\r\n\r\n if (request.method === 'GET') {\r\n return next(request);\r\n }\r\n\r\n loaderService.setLoading();\r\n\r\n return next(request).pipe(\r\n catchError(throwError),\r\n finalize(loaderService.handleCompletedRequest.bind(loaderService))\r\n );\r\n};\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\n\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../components';\r\nimport { CuiLoaderService, CuiLoadingState } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-loader',\r\n imports: [CuiSvgModule],\r\n standalone: true,\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLoaderComponent implements OnDestroy {\r\n private readonly loaderService = inject(CuiLoaderService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n protected readonly state = CuiLoadingState;\r\n protected readonly LoaderString: Record<CuiLoadingState, string> = {\r\n [CuiLoadingState.LOADING]: `${this.translocoService.translate('SAVING')}...`,\r\n [CuiLoadingState.COMPLETED]: this.translocoService.translate('SAVED'),\r\n [CuiLoadingState.INITIAL]: ''\r\n };\r\n protected readonly LoaderIcon: Record<CuiLoadingState, string> = {\r\n [CuiLoadingState.LOADING]: 'cuiIconRefreshCcw',\r\n [CuiLoadingState.COMPLETED]: 'cuiIconCheck',\r\n [CuiLoadingState.INITIAL]: ''\r\n };\r\n\r\n protected readonly loaderState = this.loaderService.loaderState;\r\n protected readonly loaderString = computed(() => this.LoaderString[this.loaderState()]);\r\n protected readonly loaderIcon = computed(() => this.LoaderIcon[this.loaderState()]);\r\n\r\n public ngOnDestroy(): void {\r\n this.loaderService.reset();\r\n }\r\n}\r\n","@if (loaderState() !== state.INITIAL) {\r\n <cui-svg\r\n [icon]=\"loaderIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n [class.icon_loading]=\"loaderState() === state.LOADING\"\r\n />\r\n <span>{{ loaderString() }}</span>\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiTooltip, } from '../../directives';\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, type CuiDialogContext } from '../../components';\r\nimport type { CuiDialogDeleteData } from './delete-modal.options';\r\n\r\n@Component({\r\n selector: 'cui-delete-modal',\r\n imports: [CuiButtonModule, TranslocoModule, CuiTooltip],\r\n standalone: true,\r\n templateUrl: './delete-modal.component.html',\r\n styleUrls: ['./delete-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDeleteModalComponent {\r\n private readonly context = inject<CuiDialogContext<CuiDialogDeleteData>>(CUI_DIALOG_CONTEXT);\r\n\r\n private readonly data = this.context.data;\r\n\r\n protected readonly title = this.data.title;\r\n protected readonly content = this.data.content;\r\n protected readonly isLoading = signal(false);\r\n protected readonly isDisabled = this.data.isDisabled ?? false;\r\n\r\n protected onDelete(): void {\r\n if (!this.data.delete) {\r\n return;\r\n }\r\n\r\n this.isLoading.set(true);\r\n this.data\r\n .delete()\r\n .pipe(finalize(() => this.isLoading.set(false)))\r\n .subscribe(() => this.context.completeWith());\r\n }\r\n\r\n protected onCancel(): void {\r\n this.context.completeWith({ canceled: true });\r\n }\r\n}\r\n","<div\r\n *transloco=\"let t\"\r\n class=\"wrapper\"\r\n>\r\n <div class=\"content\">\r\n <div class=\"header\">\r\n <h3 class=\"title\">{{ t(title) }}</h3>\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n icon=\"cuiIconX\"\r\n appearance=\"ghost\"\r\n [disabled]=\"isLoading()\"\r\n class=\"close-btn\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n </div>\r\n <div class=\"info\">\r\n @for (text of content; track text) {\r\n <p [innerHTML]=\"t(text)\"></p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"footer\">\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n (click)=\"onCancel()\"\r\n [disabled]=\"isLoading()\"\r\n appearance=\"secondary\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n [isLoaderShown]=\"isLoading()\"\r\n [disabled]=\"isDisabled\"\r\n [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\r\n appearance=\"destructive\"\r\n (click)=\"onDelete()\"\r\n >\r\n {{ t('YES_DELETE') }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TreeStruct } from '@cuby-ui/api';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiSelectedCategoryService {\r\n private readonly editingIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly creatingIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly categorySignal = signal<CuiNullable<TreeStruct>>(null);\r\n\r\n public readonly editingId = this.editingIdSignal.asReadonly();\r\n public readonly creatingId = this.creatingIdSignal.asReadonly();\r\n public readonly category = this.categorySignal.asReadonly();\r\n\r\n public setCurrentCategory(category: CuiNullable<TreeStruct>): void {\r\n this.categorySignal.set(category);\r\n }\r\n\r\n public setEditingId(id: string): void {\r\n this.editingIdSignal.set(id);\r\n this.clearCreatingId();\r\n }\r\n\r\n public setCreatingId(id: string): void {\r\n this.creatingIdSignal.set(id);\r\n this.clearEditingId();\r\n }\r\n\r\n public clearEditingId(): void {\r\n this.editingIdSignal.set('');\r\n }\r\n\r\n public clearCreatingId(): void {\r\n this.creatingIdSignal.set('');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { AbstractControl } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiHintModule } from '../../components';\r\n\r\n@Component({\r\n selector: 'cui-general-control-error-hint',\r\n imports: [CuiHintModule, TranslocoDirective],\r\n standalone: true,\r\n templateUrl: './general-control-error-hint.component.html',\r\n styleUrl: './general-control-error-hint.component.scss',\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class CuiGeneralControlErrorHintComponent {\r\n public readonly control = input.required<AbstractControl>();\r\n public readonly isVisible = input<boolean>();\r\n\r\n protected get isInvalid(): boolean {\r\n return this.isVisible() ?? (this.control().invalid && this.control().dirty);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (isInvalid) {\r\n @if (control().errors; as errors) {\r\n <cui-hint hintType=\"error\">\r\n @if (errors['required']) {\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n } @else if (errors['maxlength']) {\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: errors['maxlength'].requiredLength }) }}\r\n } @else if (errors['extraSpaces']) {\r\n {{ t('MUST_BE_WITHOUT_EXTRA_SPACES') }}\r\n } @else if (errors['min']) {\r\n {{ t('MIN_VALUE_MUST_BE_MORE_THAN', { value: errors['min'].min }) }}\r\n } @else if (errors['max']) {\r\n {{ t('MAX_VALUE_MUST_BE_LESS_THAN', { value: errors['max'].max }) }}\r\n }\r\n </cui-hint>\r\n }\r\n }\r\n</ng-container>\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n viewChild\r\n} from '@angular/core';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\nimport { CuiFormFieldModule, CuiHintModule, CuiIconButtonModule, CuiGhostInputComponent } from '../../../../components';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\n\r\n@Component({\r\n selector: 'cui-category-form',\r\n imports: [\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiIconButtonModule,\r\n CuiGeneralControlErrorHintComponent,\r\n CuiGhostInputComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './category-form.component.html',\r\n styleUrl: './category-form.component.scss',\r\n host: {\r\n '(click)': 'onHostClick($event)'\r\n },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryFormComponent implements OnInit {\r\n protected readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n protected readonly form = this.nonNullableFormBuilder.group({\r\n title: ['', cuiCreateDefaultValidators({ asyncDelay: 0 })]\r\n });\r\n protected readonly titleControl = this.form.controls.title;\r\n\r\n public readonly isDisabled = input<boolean>(false);\r\n public readonly defaultTitle = input<string>('');\r\n\r\n protected readonly created = output<string>();\r\n protected readonly canceled = output<void>();\r\n\r\n protected readonly input = viewChild.required('input', { read: ElementRef<HTMLInputElement> });\r\n\r\n protected get isTitleInvalid(): boolean {\r\n return this.titleControl.invalid && this.titleControl.dirty;\r\n }\r\n\r\n protected get isSubmitButtonDisabled(): boolean {\r\n return this.isDisabled() || this.form.invalid;\r\n }\r\n\r\n constructor() {\r\n this.initInputDisableStateSubscription();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initDefaultTitle();\r\n this.initInputFocus();\r\n }\r\n\r\n protected onHostClick(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected onSubmit(): void {\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n\r\n this.created.emit(this.form.value.title!);\r\n }\r\n\r\n protected onCancel(event: Event): void {\r\n event.stopPropagation();\r\n this.canceled.emit();\r\n }\r\n\r\n private initInputDisableStateSubscription(): void {\r\n effect(() => {\r\n if (this.isDisabled()) {\r\n this.titleControl.disable();\r\n\r\n return;\r\n }\r\n\r\n this.titleControl.enable();\r\n });\r\n }\r\n\r\n private initDefaultTitle(): void {\r\n this.form.patchValue({ title: this.defaultTitle() });\r\n }\r\n\r\n private initInputFocus(): void {\r\n Promise.resolve().then(() => this.input().nativeElement.focus());\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <form\r\n [formGroup]=\"form\"\r\n class=\"form\"\r\n (ngSubmit)=\"onSubmit()\"\r\n >\r\n <div class=\"input\">\r\n <input\r\n #input\r\n cuiGhostInput\r\n formControlName=\"title\"\r\n type=\"text\"\r\n placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\r\n [isError]=\"isTitleInvalid\"\r\n (keyup)=\"$event.preventDefault()\"\r\n />\r\n <cui-general-control-error-hint [control]=\"titleControl\" />\r\n </div>\r\n <button\r\n cuiIconButton\r\n type=\"submit\"\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"isSubmitButtonDisabled\"\r\n class=\"button\"\r\n ></button>\r\n </form>\r\n <button\r\n cuiIconButton\r\n type=\"button\"\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n (click)=\"onCancel($event)\"\r\n [disabled]=\"isDisabled()\"\r\n class=\"button\"\r\n ></button>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../../../../components';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\n\r\n@Component({\r\n selector: 'cui-create-category-item',\r\n imports: [CuiSvgModule, CuiCategoryFormComponent],\r\n standalone: true,\r\n templateUrl: './create-category-item.component.html',\r\n styleUrl: './create-category-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCreateCategoryItemComponent {\r\n protected readonly created = output<string>();\r\n protected readonly canceled = output<void>();\r\n\r\n public readonly isDisabled = input<boolean>(false);\r\n\r\n protected onSubmit(title: string): void {\r\n this.created.emit(title);\r\n }\r\n\r\n protected onCancel(): void {\r\n this.canceled.emit();\r\n }\r\n}\r\n","<cui-svg\r\n icon=\"cuiIconFolder\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n/>\r\n<cui-category-form\r\n [isDisabled]=\"isDisabled()\"\r\n (created)=\"onSubmit($event)\"\r\n (canceled)=\"onCancel()\"\r\n/>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiTreeStructNavigatorApiService, TreeStruct } from '@cuby-ui/api';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiButtonModule, CuiIconButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiSelectedCategoryService } from '../../services';\r\nimport { CuiCategoriesListComponent } from '../categories-list';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\nimport { CuiCreateCategoryItemComponent } from '../create-category-item';\r\n\r\n@Component({\r\n selector: 'cui-category-item',\r\n imports: [\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiCategoryFormComponent,\r\n CuiCreateCategoryItemComponent,\r\n forwardRef(() => CuiCategoriesListComponent)\r\n ],\r\n standalone: true,\r\n templateUrl: './category-item.component.html',\r\n styleUrl: './category-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryItemComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly isStageCreationLoading = signal(false);\r\n protected readonly stageStorageChildren = signal<TreeStruct[]>([]);\r\n protected readonly areChildrenOpened = signal(false);\r\n protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\r\n this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\r\n );\r\n protected readonly doChildrenExist = computed(\r\n () => this.stageStorage().children.length || this.stageStorageChildren().length\r\n );\r\n protected readonly isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());\r\n protected readonly stageStorageIcon = computed<CuiIcon>(() =>\r\n this.areChildrenOpened() && this.doChildrenExist() ? 'cuiIconFolderOpen' : 'cuiIconFolder'\r\n );\r\n protected readonly isSubcategoryCreating = signal(false);\r\n protected readonly isSubcategoryCreationLoading = signal(false);\r\n protected readonly alignItems = computed(() => (this.isTitleEdit() ? 'flex-start' : 'center'));\r\n protected readonly isTitleEdit = computed(\r\n () => this.selectedCategoryService.editingId() === this.stageStorage().id\r\n );\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.stageStorage().id && this.isSubcategoryCreating()) ||\r\n this.isSubcategoryCreationLoading()\r\n );\r\n\r\n public readonly stageStorage = input.required<TreeStruct>();\r\n public readonly categoryTitle = signal<string>('');\r\n public readonly category = computed(() => ({\r\n ...this.stageStorage(),\r\n title: this.categoryTitle() || this.stageStorage().title\r\n }));\r\n\r\n constructor() {\r\n this.initStageStorageChildren();\r\n }\r\n\r\n protected onSelectCategory(): void {\r\n this.selectedCategoryService.setCurrentCategory(this.category());\r\n }\r\n\r\n protected onToggleChildren(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.areChildrenOpened.update((value) => !value);\r\n\r\n if (this.areChildrenOpened()) {\r\n return;\r\n }\r\n\r\n this.isSubcategoryCreating.set(false);\r\n }\r\n\r\n protected onTitleChanged(title: string): void {\r\n this.onCancelTitleEdit();\r\n\r\n if (title === this.category().title) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.updateTitle(this.stageStorage().id, title).subscribe(() => {\r\n this.categoryTitle.set(title);\r\n\r\n if (this.category().id === this.selectedCategoryService.category()?.id) {\r\n this.selectedCategoryService.setCurrentCategory(this.category());\r\n }\r\n });\r\n }\r\n\r\n protected onStartTitleEdit(event?: Event): void {\r\n event?.stopPropagation();\r\n\r\n this.selectedCategoryService.setEditingId(this.stageStorage().id);\r\n this.onCreatingSubcategoryCanceled();\r\n }\r\n\r\n protected onCancelTitleEdit(): void {\r\n this.selectedCategoryService.clearEditingId();\r\n }\r\n\r\n protected onStartCreatingSubcategory(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.isSubcategoryCreating.set(true);\r\n this.areChildrenOpened.set(true);\r\n this.selectedCategoryService.setCreatingId(this.stageStorage().id);\r\n }\r\n\r\n protected onCreateNewSubcategoryCategory(title: string): void {\r\n this.isSubcategoryCreating.set(false);\r\n this.isSubcategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorageToParent(this.stageStorage().id, title)\r\n .pipe(finalize(this.isSubcategoryCreationLoading.set.bind(this.isSubcategoryCreationLoading, false)))\r\n .subscribe((stateStorage) => {\r\n this.stageStorageChildren.update((value) => [...value, stateStorage]);\r\n });\r\n }\r\n\r\n protected onCreatingSubcategoryCanceled(): void {\r\n this.isSubcategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initStageStorageChildren(): void {\r\n effect(() => {\r\n if (!this.areChildrenOpened() || this.stageStorageChildren().length) {\r\n return;\r\n }\r\n\r\n const stageStorage = this.stageStorage();\r\n const stageStorageChildren = stageStorage.children;\r\n\r\n if (!stageStorageChildren.length) {\r\n return;\r\n }\r\n\r\n if (typeof stageStorageChildren[0] !== 'string') {\r\n this.stageStorageChildren.set(stageStorageChildren as TreeStruct[]);\r\n\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStoragesByParent(stageStorage.id).subscribe((storage) => {\r\n this.stageStorageChildren.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, storage] : [storage]\r\n );\r\n });\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<ng-container *cuiLet=\"category() as stage\">\r\n <button\r\n type=\"button\"\r\n [style.align-items]=\"alignItems()\"\r\n [disabled]=\"isStageCreationLoading()\"\r\n class=\"category\"\r\n (click)=\"onSelectCategory()\"\r\n >\r\n <button\r\n type=\"button\"\r\n ccFlexContainerDirective\r\n class=\"category__open-close-button\"\r\n [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\r\n (click)=\"onToggleChildren($event)\"\r\n >\r\n <cui-svg\r\n [icon]=\"openCloseButtonIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n </button>\r\n <cui-svg\r\n [icon]=\"stageStorageIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n @if (isTitleEdit()) {\r\n <cui-category-form\r\n [defaultTitle]=\"stage.title\"\r\n (created)=\"onTitleChanged($event)\"\r\n (canceled)=\"onCancelTitleEdit()\"\r\n />\r\n } @else {\r\n <span class=\"category__title\">{{ stage.title }}</span>\r\n\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n class=\"category__add-subcategory-button\"\r\n (click)=\"onStartTitleEdit($event)\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n class=\"category__add-subcategory-button\"\r\n (click)=\"onStartCreatingSubcategory($event)\"\r\n ></button>\r\n }\r\n </button>\r\n <div\r\n [hidden]=\"!areChildrenOpened()\"\r\n class=\"list-wrapper\"\r\n >\r\n <cui-categories-list [stageStorages]=\"stageStorageChildren()\" />\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isSubcategoryCreationLoading()\"\r\n (created)=\"onCreateNewSubcategoryCategory($event)\"\r\n (canceled)=\"onCreatingSubcategoryCanceled()\"\r\n />\r\n }\r\n </div>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\r\nimport { TreeStruct } from '@cuby-ui/api';\r\n\r\nimport { CuiIconButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiCategoryItemComponent } from '../category-item';\r\n\r\n@Component({\r\n selector: 'cui-categories-list',\r\n imports: [CuiIconButtonModule, CuiSvgModule, forwardRef(() => CuiCategoryItemComponent)],\r\n standalone: true,\r\n templateUrl: './categories-list.component.html',\r\n styleUrl: './categories-list.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesListComponent {\r\n public readonly stageStorages = input.required<TreeStruct[]>();\r\n}\r\n","@for (stageStorage of stageStorages(); track stageStorage.id) {\r\n <cui-category-item [stageStorage]=\"stageStorage\" />\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiTreeStructNavigatorApiService, TreeStruct, TreeStructType } from '@cuby-ui/api';\r\n\r\nimport { CuiCategoriesListComponent, CuiCreateCategoryItemComponent } from './components';\r\nimport { CuiEmptyStateComponent, CuiButtonModule, CuiDropdownDirective, CuiDropdownWrapperComponent } from '../../components';\r\nimport { CuiSelectedCategoryService } from './services';\r\n\r\n@Component({\r\n selector: 'cui-categories',\r\n imports: [\r\n CuiButtonModule,\r\n CuiLetDirective,\r\n CuiDropdownDirective,\r\n CuiDropdownWrapperComponent,\r\n CuiEmptyStateComponent,\r\n CuiCreateCategoryItemComponent,\r\n CuiCategoriesListComponent,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './categories.component.html',\r\n styleUrls: ['./categories.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly stageStorages = signal<CuiNullable<TreeStruct[]>>(null);\r\n protected readonly isCategoryCreating = signal(false);\r\n protected readonly isCategoryCreationLoading = signal(false);\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.treeStructType() && this.isCategoryCreating()) ||\r\n this.isCategoryCreationLoading()\r\n );\r\n\r\n protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\r\n\r\n public readonly treeStructType = input.required<TreeStructType>();\r\n public readonly buttonId = input<string>();\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n this.initSelectCategoryEffect();\r\n }\r\n\r\n protected onOpenStageStorages(): void {\r\n this.selectedCategoryService.clearCreatingId();\r\n this.selectedCategoryService.clearEditingId();\r\n\r\n if (this.stageStorages()?.length) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStorages(this.treeStructType()).subscribe((stageStorage) => {\r\n this.stageStorages.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, stageStorage] : [stageStorage]\r\n );\r\n });\r\n }\r\n\r\n protected onStartCreatingNewCategory(): void {\r\n this.isCategoryCreating.set(true);\r\n this.selectedCategoryService.setCreatingId(this.treeStructType());\r\n }\r\n\r\n protected onCreateNewCategory(title: string): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n this.isCategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorage(title, this.treeStructType())\r\n .pipe(finalize(this.isCategoryCreationLoading.set.bind(this, false)))\r\n .subscribe((stateStorage) => this.stageStorages.update((value) => [...(value || []), stateStorage]));\r\n }\r\n\r\n protected onCreatingCategoryCanceled(): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initSelectCategoryEffect(): void {\r\n effect(() => {\r\n this.selectedCategoryService.category();\r\n this.dropdown().close();\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<button\r\n [attr.id]=\"buttonId()\"\r\n #dropdown=\"cuiDropdown\"\r\n [cuiDropdown]=\"dropdownContent\"\r\n orientation=\"stretch\"\r\n type=\"button\"\r\n class=\"target\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"onOpenStageStorages()\"\r\n>\r\n <ng-content />\r\n</button>\r\n\r\n<ng-template #dropdownContent>\r\n <cui-dropdown-wrapper\r\n *transloco=\"let t\"\r\n [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\r\n width=\"100%\"\r\n class=\"dropdown-wrapper\"\r\n >\r\n <ng-container *cuiLet=\"stageStorages() as stageStorages\">\r\n @if (stageStorages && stageStorages?.length) {\r\n <cui-categories-list [stageStorages]=\"stageStorages\" />\r\n }\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isCategoryCreationLoading()\"\r\n (created)=\"onCreateNewCategory($event)\"\r\n (canceled)=\"onCreatingCategoryCanceled()\"\r\n />\r\n } @else if (!stageStorages?.length) {\r\n <cui-empty-state\r\n class=\"empty\"\r\n [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\r\n />\r\n }\r\n </ng-container>\r\n <button\r\n ccDropdownFooterContent\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n (click)=\"onStartCreatingNewCategory()\"\r\n >\r\n {{ t('NEW_CATEGORY') }}\r\n </button>\r\n </cui-dropdown-wrapper>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { CuiFrameApiService, FragmentType, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiIdService, type CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\r\n\r\nimport {\r\n CuiAccordionModule,\r\n CuiAlertService,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../components';\r\nimport { CuiTooltip } from '../../directives';\r\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../editor';\r\nimport { cuiCreateDefaultValidators } from '../../utils';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport { CuiUtilityFormGroup, CuiUtilityFormValues } from './utility-info.options';\r\n\r\n@Component({\r\n selector: 'cui-utility-info',\r\n imports: [\r\n CuiAccordionModule,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n forwardRef(() => CuiEditorBlockComponent),\r\n CuiGeneralControlErrorHintComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiTooltip\r\n ],\r\n standalone: true,\r\n templateUrl: './utility-info.component.html',\r\n styleUrl: './utility-info.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityInfoComponent {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly formBuilder = inject(NonNullableFormBuilder);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n private readonly cuiAlertService = inject(CuiAlertService);\r\n private readonly cuiIdService = inject(CuiIdService);\r\n\r\n protected readonly CONTROL_DELAY = 500;\r\n protected readonly MAX_FILE_SIZE = 20971520;\r\n\r\n protected readonly titleId = this.cuiIdService.generate();\r\n protected readonly descriptionId = this.cuiIdService.generate();\r\n protected readonly form = this.formBuilder.group<CuiUtilityFormGroup>({\r\n title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\r\n description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\r\n });\r\n protected readonly isDescriptionModalOpen = signal(false);\r\n protected readonly isDescriptionEmpty = signal(false);\r\n protected readonly editorId = signal<CuiNullable<string>>(null);\r\n protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\r\n protected readonly thumbnailUrl = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.resource) {\r\n return thumbnail.resource;\r\n }\r\n\r\n return this.baseResourceUrl() + thumbnail!.fileId!;\r\n });\r\n protected readonly uploadButtonName = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.name) {\r\n return this.translocoService.translate('REPLACE_FILE');\r\n }\r\n\r\n return this.translocoService.translate('UPLOAD_FILE');\r\n });\r\n\r\n protected heading: CuiNullable<string> = null;\r\n\r\n protected get controls(): CuiUtilityFormGroup {\r\n return this.form.controls;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.controls.title.invalid && this.controls.title.dirty;\r\n }\r\n\r\n protected get isDescriptionError(): boolean {\r\n return this.controls.description.invalid && this.controls.description.dirty;\r\n }\r\n\r\n public readonly title = input.required<string>();\r\n public readonly framerId = input.required<string>();\r\n public readonly baseResourceUrl = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n public readonly formChanged = output<Partial<CuiUtilityFormValues>>();\r\n public readonly isFormValidChanged = output<boolean>();\r\n\r\n constructor() {\r\n this.initUtilityEffect();\r\n }\r\n\r\n protected onSelectFile(): void {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = 'image/jpg, image/jpeg, image/png, video/mp4';\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);\r\n };\r\n\r\n input.click();\r\n }\r\n\r\n protected onEditorEmpty(isEmpty: boolean): void {\r\n this.isDescriptionEmpty.set(isEmpty);\r\n this.isFormValidChanged.emit(this.checkFormValidation());\r\n }\r\n\r\n protected onRemoveThumbnail(): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n this.frameApiService.deleteResource(frameId, fragmentId).subscribe(() => {\r\n this.thumbnail.update((prev) => ({ ...prev!, fileId: null, name: null, resource: null }));\r\n });\r\n }\r\n\r\n protected onToggleDescriptionModal(): void {\r\n this.isDescriptionModalOpen.update((prev) => !prev);\r\n }\r\n\r\n private initUtilityEffect(): void {\r\n const effectRef = effect(() => {\r\n const title = this.title();\r\n\r\n if (!title) {\r\n return;\r\n }\r\n\r\n this.initTitleSubscriptions();\r\n this.initFrameFragments();\r\n effectRef.destroy();\r\n });\r\n }\r\n\r\n private initTitleSubscriptions(): void {\r\n this.form.patchValue({ title: this.title() });\r\n\r\n this.form.statusChanges\r\n .pipe(takeUntilDestroyed(this.destroy))\r\n .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\r\n\r\n this.form.valueChanges\r\n .pipe(\r\n takeUntilDestroyed(this.destroy),\r\n startWith(this.form.value),\r\n pairwise(),\r\n debounceTime(this.CONTROL_DELAY),\r\n map(([prev, current]) => this.compareFormValues([prev, current]))\r\n )\r\n .subscribe((value) => {\r\n this.formChanged.emit(value);\r\n });\r\n }\r\n\r\n private initFrameFragments(): void {\r\n const frameId = this.framerId();\r\n\r\n if (!frameId) {\r\n return;\r\n }\r\n\r\n this.frameApiService.getFrame(frameId).subscribe((frame) => {\r\n frame.fragments.forEach((fragment) => {\r\n if (fragment.type === FragmentType.jText) {\r\n this.editorId.set(fragment?.id);\r\n }\r\n\r\n if (fragment.type === FragmentType.resourceFile) {\r\n this.setResourceFile(fragment as ResourceFragment);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private compareFormValues([prevGroup, currentGruop]: Partial<CuiUtilityFormValues>[]): Partial<CuiUtilityFormValues> {\r\n const keys = Object.keys(currentGruop) as (keyof CuiUtilityFormGroup)[];\r\n const changedFields: Record<string, unknown> = {};\r\n\r\n keys.forEach((key) => {\r\n const prev = prevGroup[key];\r\n const current = currentGruop[key];\r\n\r\n if (prev === current) {\r\n return;\r\n }\r\n\r\n changedFields[key] = current;\r\n });\r\n\r\n return changedFields;\r\n }\r\n\r\n private setResourceFile(resource: ResourceFragment): void {\r\n const url = this.baseResourceUrl() + resource.fileId!;\r\n\r\n this.thumbnail.set(resource);\r\n\r\n if (!url || resource?.name?.split('.').pop() !== 'mp4') {\r\n return;\r\n }\r\n\r\n this.getCaptureFromVideo(url);\r\n }\r\n\r\n private getFile(files: FileList): void {\r\n const file = files.item(0);\r\n\r\n if (!file) {\r\n return;\r\n }\r\n\r\n if (file.size > this.MAX_FILE_SIZE) {\r\n this.cuiAlertService\r\n .open(this.translocoService.translate('INVALID_FILE_SIZE'), {\r\n status: 'error'\r\n })\r\n .subscribe();\r\n\r\n return;\r\n }\r\n\r\n const isVideo = file.name.split('.').at(-1) === 'mp4';\r\n const url = URL.createObjectURL(file);\r\n\r\n if (isVideo) {\r\n this.getCaptureFromVideo(url, file);\r\n } else {\r\n this.thumbnail.update((prev) => ({ ...prev!, name: file.name, resource: url }));\r\n }\r\n\r\n this.uploadFile(file);\r\n }\r\n\r\n private uploadFile(file: File): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('resource', file);\r\n\r\n this.frameApiService.uploadResource(formData, frameId, fragmentId).subscribe();\r\n }\r\n\r\n private getCaptureFromVideo(url: string, file?: File): 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 = 184;\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 const videoCaptureUrl = URL.createObjectURL(blob);\r\n this.thumbnail.update((prev) => ({\r\n ...prev!,\r\n name: (file?.name || prev?.name)!,\r\n resource: videoCaptureUrl\r\n }));\r\n });\r\n };\r\n\r\n video.load();\r\n }\r\n\r\n private checkFormValidation(): boolean {\r\n console.log(this.isDescriptionEmpty(), this.form.invalid);\r\n return !this.isDescriptionEmpty() && !this.form.invalid;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <section class=\"content\">\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"titleId\">\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"titleId\"\r\n [cuiTextFieldPlaceholder]=\"t('ADD_TITLE')\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n [formControl]=\"form.controls.title\"\r\n />\r\n @if (isTitleError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.title\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"descriptionId\">\r\n {{ t('SHORT_DESCRIPTION') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"descriptionId\"\r\n cuiTextFieldPlaceholder=\"{{t('SHORT_DESCRIPTION')}}...\"\r\n [cuiTextFieldIsError]=\"isDescriptionError\"\r\n [formControl]=\"form.controls.description\"\r\n />\r\n @if (isDescriptionError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.description\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <section class=\"file\">\r\n <span class=\"title\">{{ t('THUMBNAIL') }}</span>\r\n <div class=\"content__upload\">\r\n <div class=\"content__upload-file\">\r\n @if (thumbnail()?.name; as fileId) {\r\n <div class=\"image\">\r\n <span class=\"image__name\">{{ thumbnail()?.name }}</span>\r\n <!-- TODO: ngSrc -->\r\n <img class=\"image__view\" [src]=\"thumbnailUrl()\" height=\"120\" width=\"184\" alt=\"Thumbnail\" />\r\n </div>\r\n }\r\n <button type=\"button\" cuiButton appearance=\"outlined-gray\" size=\"xxs\" icon=\"cuiIconUpload\"\r\n (click)=\"onSelectFile()\">\r\n {{ uploadButtonName() }}\r\n </button>\r\n @if (thumbnail()?.name) {\r\n <button class=\"content__remove-button\" cuiButton appearance=\"link\" size=\"sm\" type=\"button\"\r\n (click)=\"onRemoveThumbnail()\">\r\n {{ t('REMOVE') }}\r\n </button>\r\n }\r\n <span class=\"content__accepted\">\r\n {{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB\r\n </span>\r\n </div>\r\n </div>\r\n </section>\r\n @if (editorId(); as editorId) {\r\n <cui-editor-block\r\n [title]=\"form.controls.title.value || title()\"\r\n [config]=\"config()\"\r\n [editorId]=\"editorId\"\r\n [required]=\"true\"\r\n (editorEmpty)=\"onEditorEmpty($event)\"\r\n ></cui-editor-block>\r\n }\r\n </section>\r\n</ng-container>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\n@Injectable()\r\nexport class CuiCheckListBlockService {\r\n private readonly checkListItemsSignal =\r\n signal<CuiNullable<NodeCheckListItem<NodeCheckListItemContentType>[]>>(null);\r\n private readonly componentIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly isDragAvailableSignal = signal<boolean>(false);\r\n\r\n public readonly checkListItems = this.checkListItemsSignal.asReadonly();\r\n public readonly componentId = this.componentIdSignal.asReadonly();\r\n public readonly isDragAvailable = this.isDragAvailableSignal.asReadonly();\r\n\r\n public setCheckListItems(checkListItems: NodeCheckListItem<NodeCheckListItemContentType>[]): void {\r\n this.checkListItemsSignal.set(checkListItems);\r\n }\r\n\r\n public addCheckListItem(checkListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n this.checkListItemsSignal.update((value) => (value ? [...value, checkListItem] : [checkListItem]));\r\n }\r\n\r\n public updateCheckListItem(updatedCheckListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n if (!this.checkListItemsSignal()) {\r\n return;\r\n }\r\n\r\n this.checkListItemsSignal.update((value) => {\r\n const updateCheckListItemIndex = value!.findIndex(\r\n (checkListItem) => checkListItem.id === updatedCheckListItem.id\r\n );\r\n\r\n value![updateCheckListItemIndex] = updatedCheckListItem;\r\n\r\n return [...value!];\r\n });\r\n }\r\n\r\n public deleteCheckListItem(id: string): void {\r\n if (!this.checkListItemsSignal()) {\r\n return;\r\n }\r\n\r\n this.checkListItemsSignal.update((value) => {\r\n const deletedItemIndex = value!.findIndex((checklistItem) => checklistItem.id === id);\r\n\r\n value!.splice(deletedItemIndex, 1);\r\n\r\n return [...value!];\r\n });\r\n }\r\n\r\n public setComponentId(id: string): void {\r\n this.componentIdSignal.set(id);\r\n }\r\n\r\n public toggleDragPermission(isDragButtonVisible: boolean): void {\r\n this.isDragAvailableSignal.set(isDragButtonVisible);\r\n }\r\n}\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListActionItemContent, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport {\r\n CuiCheckboxModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiRadioModule,\r\n CuiSelectModule,\r\n CuiTextareaModule,\r\n CuiToggleModule\r\n} from '../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-card',\r\n imports: [\r\n CuiCheckboxModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiRadioModule,\r\n CuiSelectModule,\r\n CuiTextareaModule,\r\n CuiTextFieldControllerModule,\r\n CuiToggleModule,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-card.component.html',\r\n styleUrl: './checklist-block-list-item-action-card.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionCardComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n public actionForm!: FormGroup;\r\n\r\n public readonly purposeType = input<string>();\r\n public readonly isConsiderationNeeded = input<boolean>(false);\r\n public readonly actionInfo = input.required<NodeCheckListActionItemContent>();\r\n\r\n public readonly consideredCorrectChanged = output<string>();\r\n public readonly checkListActionChanged = output<NodeCheckListItemContentAction>();\r\n\r\n protected readonly _actionInfo = signal<CuiNullable<NodeCheckListActionItemContent>>(null);\r\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n );\r\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n );\r\n\r\n protected readonly isConsideredCorrectControl = this.nonNullableFormBuilder.control({\r\n value: false,\r\n disabled: false\r\n });\r\n\r\n protected get photoGroup(): FormGroup {\r\n return this.actionForm.get('photo') as FormGroup;\r\n }\r\n\r\n protected get commentGroup(): FormGroup {\r\n return this.actionForm.get('comment') as FormGroup;\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._actionInfo.set(this.actionInfo());\r\n\r\n if (!this.purposeType() || !this.isConsiderationNeeded()) {\r\n return;\r\n }\r\n\r\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initActionForm();\r\n }\r\n\r\n private initActionForm(): void {\r\n this.actionForm = this.nonNullableFormBuilder.group({\r\n photo: this.nonNullableFormBuilder.group({\r\n isEnable: this.attachmentPhotoAction().isEnable,\r\n isRequired: {\r\n value: this.attachmentPhotoAction().isRequired,\r\n disabled: !this.attachmentPhotoAction().isEnable\r\n }\r\n }),\r\n comment: this.nonNullableFormBuilder.group({\r\n isEnable: this.textAreaAction().isEnable,\r\n isRequired: {\r\n value: this.textAreaAction().isRequired,\r\n disabled: !this.textAreaAction().isEnable\r\n }\r\n })\r\n });\r\n\r\n this.initActionFormSegmentsSubscriptions();\r\n\r\n if (!this.isConsiderationNeeded()) {\r\n return;\r\n }\r\n\r\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n }\r\n\r\n private initActionFormSegmentsSubscriptions(): void {\r\n this.isConsideredCorrectControlSubscription();\r\n this.initPhotoGroupSubscription();\r\n this.initCommentGroupSubscription();\r\n }\r\n\r\n private isConsideredCorrectControlSubscription(): void {\r\n this.isConsideredCorrectControl.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.consideredCorrectChanged.emit(this._actionInfo()!.id));\r\n }\r\n\r\n private initPhotoGroupSubscription(): void {\r\n this.photoGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.photoGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.photoGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.attachmentPhotoAction().id,\r\n ...this.photoGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.photoGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.attachmentPhotoAction().id,\r\n ...this.photoGroup.value\r\n });\r\n });\r\n }\r\n\r\n private initCommentGroupSubscription(): void {\r\n this.commentGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.commentGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.commentGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.textAreaAction().id,\r\n ...this.commentGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.commentGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.textAreaAction().id,\r\n ...this.commentGroup.value\r\n });\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div\r\n class=\"card\"\r\n [formGroup]=\"actionForm\"\r\n >\r\n <div class=\"title-container\">\r\n <span class=\"title\">{{ actionInfo().title }}</span>\r\n @if (isConsiderationNeeded()) {\r\n <label\r\n cuiLabel\r\n class=\"title__input\"\r\n >\r\n <input\r\n cuiRadio\r\n type=\"radio\"\r\n [checked]=\"actionInfo().considerCorrect\"\r\n [formControl]=\"isConsideredCorrectControl\"\r\n [value]=\"true\"\r\n />\r\n {{ t('CONSIDER_CORRECT') }}\r\n </label>\r\n }\r\n </div>\r\n <div class=\"blocks\">\r\n <div\r\n class=\"block-card\"\r\n [formGroup]=\"photoGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"block-card\"\r\n [formGroup]=\"commentGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-with-verification',\r\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-with-verification.component.html',\r\n styleUrl: './checklist-block-list-item-action-with-verification.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithVerificationComponent {\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n protected onConsiderCorrectChanged(actionId: string, purposeType: string): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: purposeType,\r\n actionId\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemIsConsideredCorrect(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n\r\n protected onCheckListActionChanged(\r\n actionContent: NodeCheckListItemContentAction,\r\n actionId: string,\r\n purposeType: string\r\n ): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: purposeType,\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemActionContent(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n <div class=\"action\">\r\n <div class=\"action__header action__assignee-header\">\r\n {{ t('CONDITIONAL_LOGIC_FOR_ASSIGNEE') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'ASSIGN'\"\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n [isConsiderationNeeded]=\"true\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id, 'ASSIGN')\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'ASSIGN'\"\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n [isConsiderationNeeded]=\"true\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id, 'ASSIGN')\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action\">\r\n <div class=\"action__header action__approver-header\">\r\n {{ t('CONDITIONAL_LOGIC_FOR_APPROVER') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'APPROVE'\"\r\n [actionInfo]=\"checkListItemContent.actionsApprove![0]\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![0].id, 'APPROVE')\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'APPROVE'\"\r\n [actionInfo]=\"checkListItemContent.actionsApprove![1]\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![1].id, 'APPROVE')\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-without-verification',\r\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-without-verification.component.html',\r\n styleUrl: './checklist-block-list-item-action-without-verification.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithoutVerificationComponent {\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n protected onCheckListActionChanged(actionContent: NodeCheckListItemContentAction, actionId: string): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: 'ASSIGN',\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemActionContent(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n <div class=\"action\">\r\n <div class=\"action__header\">\r\n {{ t('CONDITIONAL_LOGIC') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id)\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id)\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { FormControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n CuiContextMenuModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../../widgets';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-title-control',\r\n imports: [\r\n CuiContextMenuModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextFieldControllerModule,\r\n CuiGeneralControlErrorHintComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-title-control.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockTitleControlComponent {\r\n public readonly control = input.required<FormControl>();\r\n\r\n protected get isTitleError(): boolean {\r\n return this.control().invalid && this.control().dirty;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <cui-form-field>\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"title\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [formControl]=\"control()\"\r\n cuiTextFieldId=\"title\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\r\n />\r\n <cui-general-control-error-hint [control]=\"control()\" />\r\n </cui-form-field>\r\n</ng-container>\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport type { OnInit, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder } from '@angular/forms';\r\nimport { CuiElementDirective, CuiLetDirective, CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\r\nimport { CuiTreeStructApiService, CuiNodeChecklistApiService, NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiTooltip } from '../../../../directives';\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiDialogService, CuiLabelModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiCheckListBlockService } from '../../services/checklist-block.service';\r\nimport { CuiChecklistBlockTitleControlComponent } from '../checklist-block-title-control';\r\nimport { CuiNodeCheckListItemWithOption } from './checklist-block-list-item-container.options';\r\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../../../editor';\r\nimport { CuiDeleteModalComponent } from '../../../../widgets';\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-container',\r\n imports: [\r\n CuiTooltip,\r\n CuiEditorBlockComponent,\r\n CuiChecklistBlockTitleControlComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiElementDirective,\r\n CuiLabelModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n NgComponentOutlet,\r\n TranslocoDirective,\r\n CuiDragPointerDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-container.component.html',\r\n styleUrl: './checklist-block-list-item-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListItemContainerComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly cuiDialogService = inject(CuiDialogService);\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n\r\n protected readonly DEFAULT_CONTROL_DELAY = 700;\r\n\r\n protected readonly isOpen = signal(false);\r\n\r\n public readonly checkListBlockItem = input.required<CuiCheckListBlockItem>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly index = input<number>(0);\r\n\r\n protected readonly componentId = this.checkListBlockService.componentId;\r\n protected readonly rotate = computed(() => `rotate(${this.isOpen() ? '0deg' : '-90deg'})`);\r\n protected readonly headerText = computed(() =>\r\n this.checkListItem().title ? this.checkListItem().title : this.translocoService.translate('UNTITLED')\r\n );\r\n protected readonly checkListItem = computed<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n () => this.checkListBlockItem().content\r\n );\r\n protected readonly checkListItemComponent = computed<Type<unknown>>(() => this.checkListBlockItem().component);\r\n protected readonly checkListItemWithOptions = computed<CuiNodeCheckListItemWithOption<NodeCheckListItemContentType>>(\r\n () => ({\r\n ...this.checkListItem(),\r\n options: [\r\n {\r\n label: this.translocoService.translate('DUPLICATE'),\r\n icon: 'cuiIconCopy'\r\n },\r\n {\r\n label: this.translocoService.translate('DELETE'),\r\n icon: 'cuiIconTrash',\r\n color: 'var(--cui-danger)',\r\n command: this.openDeleteChecklistNodeModal.bind(this)\r\n }\r\n ]\r\n })\r\n );\r\n protected readonly headerBorderColor = computed(() => {\r\n const checkListItem = this.checkListItem();\r\n\r\n if (checkListItem.content.actionsApprove !== null) {\r\n return 'var(--cui-violet-bg)';\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n return 'var(--cui-cyan-bg)';\r\n }\r\n\r\n return null;\r\n });\r\n protected readonly iconChecklistType = computed(() => {\r\n const checkListItem = this.checkListItem();\r\n\r\n if (checkListItem.content.actionsApprove !== null) {\r\n return 'cuiIconUsersSm';\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n return 'cuiIconChecklist';\r\n }\r\n\r\n return 'cuiIconUserSm';\r\n });\r\n\r\n protected readonly titleControl = this.nonNullableFormBuilder.control(\r\n { value: '', disabled: true },\r\n cuiCreateDefaultValidators()\r\n );\r\n\r\n protected get isTitleEmpty(): boolean {\r\n return !this.titleControl.value;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.titleControl.invalid && this.titleControl.dirty;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initControls();\r\n }\r\n\r\n protected onRowToggle(): void {\r\n this.isOpen.update((prev) => !prev);\r\n }\r\n\r\n protected onAllowDrag(): void {\r\n this.checkListBlockService.toggleDragPermission(true);\r\n }\r\n\r\n protected onProhibitDrag(): void {\r\n this.checkListBlockService.toggleDragPermission(false);\r\n }\r\n\r\n private initControls(): void {\r\n this.initTitleControlValue();\r\n this.initTitleControlSubscription();\r\n }\r\n\r\n private initTitleControlValue(): void {\r\n this.titleControl.enable();\r\n this.titleControl.setValue(this.checkListItem().title ? this.checkListItem().title : '');\r\n }\r\n\r\n private initTitleControlSubscription(): void {\r\n this.titleControl.valueChanges\r\n .pipe(debounceTime(this.DEFAULT_CONTROL_DELAY), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n .subscribe((titleValue) => {\r\n if (this.titleControl.invalid) {\r\n return;\r\n }\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemTitle(this.checkListItem().id, titleValue)\r\n .subscribe(() => {\r\n this.checkListBlockService.updateCheckListItem({\r\n ...this.checkListItem(),\r\n title: titleValue\r\n });\r\n });\r\n });\r\n }\r\n\r\n private openDeleteChecklistNodeModal(): void {\r\n const content = ['THIS_ACTION_WILL_PERMANENTLY_DELETE_THE_ITEM_FROM_CHECKLIST'];\r\n\r\n this.cuiDialogService\r\n .open(CuiDeleteModalComponent, {\r\n data: {\r\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM_QUESTION',\r\n content,\r\n delete: () =>\r\n this.treeStructApiService.deleteTreeStructElement(this.componentId()!, this.checkListItem().id)\r\n }\r\n })\r\n .subscribe(\r\n (data) => data?.canceled || this.checkListBlockService.deleteCheckListItem(this.checkListItem().id)\r\n );\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItemWithOptions() as checkListItem\">\r\n <header\r\n class=\"header\"\r\n [style.border-left-color]=\"headerBorderColor()\"\r\n [class.header__opened]=\"isOpen()\"\r\n >\r\n <button\r\n class=\"icon-drag\"\r\n cuiButton\r\n cuiDragPointer\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"'cuiIconDragHandleDots'\"\r\n (mouseenter)=\"onAllowDrag()\"\r\n (mouseleave)=\"onProhibitDrag()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [style.transform]=\"rotate()\"\r\n icon=\"cuiIconCaretDownFillXxs\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <cui-svg\r\n [icon]=\"iconChecklistType()\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n <div class=\"header__content\">\r\n <div class=\"header__numeration\">{{ index() }}.</div>\r\n <div class=\"header__text\">{{ headerText() }}</div>\r\n </div>\r\n @if (isTitleEmpty) {\r\n <cui-svg\r\n [cuiTooltip]=\"t('TITLE_IS_REQUIRED')\"\r\n icon=\"cuiIconAlertTriangle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <button\r\n #actionButton=\"elementRef\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconMoreVertical\"\r\n class=\"list__context-menu-button\"\r\n ></button>\r\n <cui-context-menu\r\n [items]=\"checkListItem.options\"\r\n [target]=\"actionButton.nativeElement\"\r\n />\r\n </header>\r\n @if (isOpen()) {\r\n <div class=\"info\">\r\n <cui-checklist-block-title-control [control]=\"titleControl\" />\r\n <cui-editor-block\r\n [config]=\"config()\"\r\n [editorId]=\"checkListItem.textContainerId!\"\r\n [title]=\"titleControl.value\"\r\n />\r\n </div>\r\n <ng-container\r\n [ngComponentOutlet]=\"checkListItemComponent()\"\r\n [ngComponentOutletInputs]=\"{\r\n checkListItem: checkListItem\r\n }\"\r\n />\r\n }\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\r\nimport type { FormArray, FormGroup } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport {\r\n CuiAlertService,\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiInputModule,\r\n CuiInputNumberModule,\r\n CuiSvgModule,\r\n CuiTextareaModule\r\n} from '../../../../components';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\n\r\nimport type { CuiEvaluationCriteriaGroup } from '../checklist-block-list-item-evaluation';\r\n\r\nimport { CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\nimport type { CuiEvaluationCriteriaData } from './checklist-block-list-item-evaluation-criteria.options';\r\n\r\n@Component({\r\n selector: 'li[cuiChecklistBlockListItemEvaluationCriteria]',\r\n imports: [\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiInputModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiTextareaModule,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiInputNumberModule,\r\n CuiDragPointerDirective,\r\n CuiGeneralControlErrorHintComponent\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-evaluation-criteria.component.html',\r\n styleUrl: './checklist-block-list-item-evaluation-criteria.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationCriteriaComponent {\r\n private readonly cuiAlertService = inject(CuiAlertService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n private readonly EVALUATION_ALREADY_EXIST = `EVALUATION_ALREADY_EXIST`;\r\n\r\n private previousData: CuiNullable<CuiEvaluationCriteriaData> = null;\r\n\r\n protected readonly isEditMode = signal(false);\r\n protected readonly isNew = computed(() => this.criteriaGroup().controls.isNew.value);\r\n protected readonly gap = computed(() => (this.isEditMode() ? 8 : 0));\r\n protected readonly isLoading = computed(() => this.loadingIds()[this.criteriaGroup().controls.id.value]);\r\n protected readonly isDragEnabled = computed(() => !this.isEditMode() && !this.isLoading());\r\n\r\n protected get isEvaluationInvalid(): boolean {\r\n return this.criteriaGroup().controls.evaluation.invalid && this.isEditMode();\r\n }\r\n\r\n protected get isCriteriaInvalid(): boolean {\r\n return this.criteriaGroup().controls.criteria.invalid && this.isEditMode();\r\n }\r\n\r\n public readonly loadingIds = input.required<Record<string, boolean>>();\r\n public readonly index = input.required<number>();\r\n public readonly criteriaGroup = input.required<FormGroup<CuiEvaluationCriteriaGroup>>();\r\n public readonly evaluationCriteriaFormArray = input.required<FormArray<FormGroup>>();\r\n\r\n public readonly saveClicked = output<CuiEvaluationCriteriaGroup>();\r\n public readonly deleteClicked = output<string>();\r\n public readonly cancelClicked = output();\r\n\r\n constructor() {\r\n this.initNewEvaluationCriteriaEffect();\r\n this.initEditModeEffect();\r\n }\r\n\r\n protected onSave(): void {\r\n if (this.criteriaGroup().invalid) {\r\n return;\r\n }\r\n\r\n const evaluation = `${this.criteriaGroup().controls.evaluation.value}`;\r\n\r\n if (this.checkIsEvaluationCriteriaExist(evaluation)) {\r\n this.cuiAlertService\r\n .open(this.translocoService.translate(this.EVALUATION_ALREADY_EXIST, { evaluation }), {\r\n status: 'error'\r\n })\r\n .subscribe();\r\n\r\n return;\r\n }\r\n\r\n this.isEditMode.update((prev) => !prev);\r\n this.saveClicked.emit(this.criteriaGroup().controls);\r\n }\r\n\r\n protected onDelete(): void {\r\n const id = this.criteriaGroup().controls.id.value;\r\n\r\n this.deleteClicked.emit(id);\r\n }\r\n\r\n protected onCancel(): void {\r\n if (this.isNew()) {\r\n this.cancelClicked.emit();\r\n }\r\n\r\n this.isEditMode.update((prev) => !prev);\r\n\r\n if (!this.previousData) {\r\n return;\r\n }\r\n\r\n this.criteriaGroup().setValue({\r\n ...this.criteriaGroup().getRawValue(),\r\n ...this.previousData\r\n });\r\n }\r\n\r\n protected onToggleEditMode(): void {\r\n const { criteria, evaluation } = this.criteriaGroup().getRawValue();\r\n\r\n this.previousData = { criteria, evaluation };\r\n this.isEditMode.update((prev) => !prev);\r\n }\r\n\r\n // TODO: Компонент должен был быть построен исключительно на реактивных формах\r\n private initEditModeEffect(): void {\r\n effect(() => this.criteriaGroup()[this.isEditMode() ? 'enable' : 'disable']());\r\n }\r\n\r\n private initNewEvaluationCriteriaEffect(): void {\r\n effect(() => this.isEditMode.set(this.isNew()), { allowSignalWrites: true });\r\n }\r\n\r\n private checkIsEvaluationCriteriaExist(evaluation: string): boolean {\r\n const controls = this.evaluationCriteriaFormArray().controls;\r\n\r\n return controls.some((control: FormGroup<CuiEvaluationCriteriaGroup>) => {\r\n if (control.controls.id.value === this.criteriaGroup().controls.id.value) {\r\n return false;\r\n }\r\n\r\n return `${control.get('evaluation')?.value}` === evaluation;\r\n });\r\n }\r\n}\r\n","<div *transloco=\"let t\">\r\n <form\r\n *cuiLet=\"criteriaGroup() as form\"\r\n [formGroup]=\"form\"\r\n [class.form_edit]=\"isEditMode()\"\r\n clas=\"form\"\r\n >\r\n <div class=\"content\">\r\n <span class=\"index\">{{ index() }}.</span>\r\n @if (!isEditMode()) {\r\n <cui-svg\r\n cuiDragPointer\r\n icon=\"cuiIconDragHandleDots\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <div\r\n style.gap=\"{{gap()}}px\"\r\n class=\"wrapper\"\r\n >\r\n <cui-input-number\r\n formControlName=\"evaluation\"\r\n cuiTextFieldPlaceholder=\"0\"\r\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\r\n [min]=\"1\"\r\n [max]=\"99\"\r\n class=\"input-number\"\r\n />\r\n <textarea\r\n cuiTextarea\r\n formControlName=\"criteria\"\r\n [rows]=\"1\"\r\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\r\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\r\n class=\"textarea\"\r\n ></textarea>\r\n </div>\r\n @if (isEditMode()) {\r\n <button\r\n type=\"submit\"\r\n cuiIconButton\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"form.invalid\"\r\n class=\"button\"\r\n (click)=\"onSave()\"\r\n ></button>\r\n <button\r\n type=\"button\"\r\n cuiIconButton\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"button\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n } @else {\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n [disabled]=\"isLoading()\"\r\n (click)=\"onToggleEditMode()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconTrash\"\r\n [isLoaderShown]=\"isLoading()\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n }\r\n </div>\r\n <cui-general-control-error-hint\r\n [control]=\"form.controls.criteria\"\r\n class=\"error-hint\"\r\n />\r\n </form>\r\n</div>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiNullable, CuiDragDropData, CuiDragDropDirective, CuiDragListDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, of, Subject, switchMap, takeUntil } from 'rxjs';\r\nimport { CuiNodeChecklistApiService, NodeCheckListEvaluationCriteria, NodeCheckListEvaluationItemContent, NodeCheckListItem, NodeCheckListItemContentAction, NodeCheckListItemSwitchContentPointer, NodeCheckListItemSwitchContentRequestParams } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemEvaluationCriteriaComponent } from '../checklist-block-list-item-evaluation-criteria';\r\nimport {\r\n CuiButtonModule,\r\n CuiCheckboxModule,\r\n CuiContextMenuModule,\r\n CuiDialogService,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextareaModule,\r\n CuiToggleModule,\r\n CuiEmptyStateComponent\r\n} from '../../../../components';\r\nimport { CuiDeleteModalComponent } from '../../../../widgets';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\n\r\nimport type {\r\n CuiEvaluationCriteriaElementData,\r\n CuiEvaluationCriteriaGroup\r\n} from './checklist-block-list-item-evaluation.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-evaluation',\r\n imports: [\r\n CuiCheckListBlockListItemEvaluationCriteriaComponent,\r\n CuiButtonModule,\r\n CuiCheckboxModule,\r\n CuiContextMenuModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextareaModule,\r\n CuiTextFieldControllerModule,\r\n CuiToggleModule,\r\n CuiEmptyStateComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiDragDropDirective,\r\n CuiDragListDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-evaluation.component.html',\r\n styleUrl: './checklist-block-list-item-evaluation.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationComponent implements OnInit {\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly cuiDialogService = inject(CuiDialogService);\r\n\r\n private readonly isAvailableObserver = new Subject<boolean>();\r\n\r\n protected readonly photoFormGroup = this.nonNullableFormBuilder.group({\r\n isEnable: false,\r\n isRequired: {\r\n value: false,\r\n disabled: true\r\n }\r\n });\r\n protected readonly commentFormGroup = this.nonNullableFormBuilder.group({\r\n isEnable: false,\r\n isRequired: {\r\n value: false,\r\n disabled: true\r\n }\r\n });\r\n protected readonly evaluationCriteriaFormArray = this.nonNullableFormBuilder.array<FormGroup>([]);\r\n\r\n protected readonly loadingIds = signal<Record<string, boolean>>({});\r\n protected readonly isAddButtonDisabled = signal(false);\r\n\r\n private readonly assignee = computed(() => this.checkListItem().content.actionsAssignee![0]);\r\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n );\r\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n );\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListEvaluationItemContent>>();\r\n\r\n protected getPointer(currentIndex: number): NodeCheckListItemSwitchContentPointer {\r\n return currentIndex === 0\r\n ? NodeCheckListItemSwitchContentPointer.BEFORE\r\n : NodeCheckListItemSwitchContentPointer.AFTER;\r\n }\r\n\r\n protected getTargetIndex(currentIndex: number): number {\r\n return currentIndex === 0 ? 1 : currentIndex - 1;\r\n }\r\n\r\n protected onDrop(event: CuiDragDropData): void {\r\n const { prevIndex, index } = event;\r\n\r\n if (prevIndex === index) {\r\n return;\r\n }\r\n\r\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, prevIndex, index);\r\n const movingElementId: string = this.evaluationCriteriaFormArray.at(index).value.id;\r\n const targetItemId: string = this.evaluationCriteriaFormArray.at(this.getTargetIndex(index)).value.id;\r\n const pointer: NodeCheckListItemSwitchContentPointer = this.getPointer(index);\r\n\r\n const requestBody: NodeCheckListItemSwitchContentRequestParams = {\r\n nodeCheckListId: this.checkListItem().id,\r\n listEvaluationId: this.assignee().id,\r\n movingElementId,\r\n targetItemId,\r\n pointer\r\n };\r\n\r\n this.nodeCheckListApiService.updateNodeCheckListItemSwitchContent(requestBody).subscribe({\r\n error: () => {\r\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, index, prevIndex);\r\n this.cdRef.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n protected onAddEvaluationCriteriaItem(): void {\r\n const evaluationItemControl = this.createEvaluationFormGroup();\r\n\r\n this.isAddButtonDisabled.set(true);\r\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n }\r\n\r\n protected onSaveEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const isNew = group.isNew.value;\r\n\r\n if (isNew) {\r\n this.addEvaluationCriteria(group);\r\n\r\n return;\r\n }\r\n\r\n this.updateEvaluationCriteria(group);\r\n }\r\n\r\n protected onCancelNewEvaluationCriteria(): void {\r\n const lastIndex = this.evaluationCriteriaFormArray.length - 1;\r\n\r\n this.isAddButtonDisabled.set(false);\r\n this.evaluationCriteriaFormArray.removeAt(lastIndex);\r\n }\r\n\r\n protected openModalDeleteEvaluationCriteria(id: string): void {\r\n const content = ['DELETE_EVALUATION_CHECKLIST_ITEM_CONFIRMATION_TEXT'];\r\n const criteria = this.findExistingEvaluationCriteria(id);\r\n\r\n if (!criteria?.id) {\r\n return;\r\n }\r\n\r\n this.loadingIds.update((ids) => ({ ...ids, [criteria.id]: true }));\r\n this.cuiDialogService\r\n .open(CuiDeleteModalComponent, {\r\n data: {\r\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM',\r\n content,\r\n delete: () =>\r\n this.nodeCheckListApiService\r\n .deleteEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria.id)\r\n .pipe(\r\n switchMap((checkListItem) => {\r\n const index = this.evaluationCriteriaFormArray.controls.findIndex(\r\n (control) => control.value.id === id\r\n );\r\n\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n this.evaluationCriteriaFormArray.removeAt(index);\r\n\r\n return of(null);\r\n })\r\n )\r\n }\r\n })\r\n .subscribe(() => this.completeEvaluationCriteriaDeletion(criteria));\r\n }\r\n\r\n protected completeEvaluationCriteriaDeletion(criteria: NodeCheckListEvaluationCriteria): void {\r\n this.loadingIds.update((ids) => {\r\n delete ids[criteria.id];\r\n\r\n return { ...ids };\r\n });\r\n }\r\n\r\n private onCheckListActionChanged(actionId: string, actionContent: NodeCheckListItemContentAction): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: 'ASSIGN',\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService.updateNodeCheckListItemActionContent(requestData).subscribe((checkListItem) => {\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initEvaluationFormValues();\r\n }\r\n\r\n private initEvaluationFormValues(): void {\r\n this.evaluationCriteriaFormArray.clear();\r\n this.photoFormGroup.patchValue({\r\n isEnable: this.attachmentPhotoAction().isEnable,\r\n isRequired: this.attachmentPhotoAction().isRequired\r\n });\r\n this.commentFormGroup.patchValue({\r\n isEnable: this.textAreaAction().isEnable,\r\n isRequired: this.textAreaAction().isRequired\r\n });\r\n\r\n if (this.attachmentPhotoAction().isEnable) {\r\n this.photoFormGroup.controls.isRequired.enable();\r\n }\r\n\r\n if (this.textAreaAction().isEnable) {\r\n this.commentFormGroup.controls.isRequired.enable();\r\n }\r\n\r\n this.initActionFormSegmentsSubscriptions();\r\n\r\n this.assignee().acceptanceCriteriaEvaluations.forEach((evaluationCriteria: NodeCheckListEvaluationCriteria) => {\r\n const evaluationItemControl = this.createEvaluationFormGroup({\r\n isNew: false,\r\n criteria: evaluationCriteria.criteria,\r\n evaluation: evaluationCriteria.evaluation,\r\n id: evaluationCriteria.id\r\n });\r\n\r\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n });\r\n }\r\n\r\n private initActionFormSegmentsSubscriptions(): void {\r\n this.initPhotoGroupSubscription();\r\n this.initCommentGroupSubscription();\r\n }\r\n\r\n private initPhotoGroupSubscription(): void {\r\n this.photoFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.photoFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.photoFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.attachmentPhotoAction().id,\r\n contentActionType: this.attachmentPhotoAction().contentActionType,\r\n ...this.photoFormGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.photoFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.attachmentPhotoAction().id,\r\n contentActionType: this.attachmentPhotoAction().contentActionType,\r\n ...this.photoFormGroup.getRawValue()\r\n });\r\n });\r\n }\r\n\r\n private initCommentGroupSubscription(): void {\r\n this.commentFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.commentFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.commentFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.textAreaAction().id,\r\n contentActionType: this.textAreaAction().contentActionType,\r\n ...this.commentFormGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.commentFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.textAreaAction().id,\r\n contentActionType: this.textAreaAction().contentActionType,\r\n ...this.commentFormGroup.getRawValue()\r\n });\r\n });\r\n }\r\n\r\n private updateEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const evaluation = group.evaluation.value;\r\n const criteria = group.criteria.value;\r\n const id = group.id.value;\r\n\r\n this.nodeCheckListApiService\r\n .updateEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, id, criteria, evaluation)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n\r\n private addEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const evaluation = group.evaluation.value;\r\n const criteria = group.criteria.value;\r\n\r\n this.nodeCheckListApiService\r\n .addEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria, evaluation)\r\n .pipe(finalize(() => this.isAddButtonDisabled.set(false)))\r\n .subscribe((checkListItem) => this.updateCreatedEvaluationCriteria(checkListItem));\r\n }\r\n\r\n private updateCreatedEvaluationCriteria(\r\n checkListItem: NodeCheckListItem<NodeCheckListEvaluationItemContent>\r\n ): void {\r\n const acceptanceCriteriaEvaluations = checkListItem.content.actionsAssignee![0].acceptanceCriteriaEvaluations;\r\n const id = acceptanceCriteriaEvaluations.at(-1)?.id;\r\n const control = this.evaluationCriteriaFormArray.controls.at(-1)?.getRawValue();\r\n const createdControl = this.createEvaluationFormGroup({ ...control, id, isNew: false });\r\n\r\n this.evaluationCriteriaFormArray.removeAt(-1);\r\n this.evaluationCriteriaFormArray.push(createdControl);\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n }\r\n\r\n private createEvaluationFormGroup({\r\n id,\r\n criteria = '',\r\n evaluation = null,\r\n isNew = true\r\n }: CuiEvaluationCriteriaElementData = {}): FormGroup {\r\n return this.nonNullableFormBuilder.group({\r\n id: [id],\r\n criteria: [criteria, cuiCreateDefaultValidators({ maxLength: 500 })],\r\n evaluation: [evaluation, [Validators.required]],\r\n isNew: [isNew]\r\n });\r\n }\r\n\r\n private findExistingEvaluationCriteria(id: string): CuiNullable<NodeCheckListEvaluationCriteria> {\r\n return (\r\n this.assignee().acceptanceCriteriaEvaluations.find(\r\n (evaluationCriteria: NodeCheckListEvaluationCriteria) => evaluationCriteria.id === id\r\n ) || null\r\n );\r\n }\r\n\r\n private moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\r\n if (fromIndex === toIndex) {\r\n return;\r\n }\r\n\r\n const item = array[fromIndex];\r\n\r\n array.splice(fromIndex, 1);\r\n array.splice(toIndex, 0, item);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"action\">\r\n <div class=\"action__inputs-container\">\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"photoFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"commentFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"action__criteria-title-container\">\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"evaluationCriteria\"\r\n >\r\n {{ t('EVALUATION_CRITERIA') }}\r\n </label>\r\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\r\n </div>\r\n <ul\r\n cuiDragList\r\n class=\"list\"\r\n >\r\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\r\n <li\r\n cuiChecklistBlockListItemEvaluationCriteria\r\n [index]=\"index + 1\"\r\n cuiDragDrop\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (elementDragged)=\"onDrop($event)\"\r\n [criteriaGroup]=\"control\"\r\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\r\n [loadingIds]=\"loadingIds()\"\r\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\r\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\r\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\r\n ></li>\r\n } @empty {\r\n <li\r\n cuiEmptyState\r\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\r\n ></li>\r\n }\r\n </ul>\r\n <div class=\"action__footer\">\r\n <button\r\n cuiButton\r\n size=\"xxs\"\r\n appearance=\"flat\"\r\n icon=\"cuiIconPlus\"\r\n type=\"button\"\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (click)=\"onAddEvaluationCriteriaItem()\"\r\n >\r\n {{ t('NEW_OPTION') }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiTreeStructApiService, CuiTreeStructNavigatorApiService, MovingType } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, switchMap } from 'rxjs';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\nimport { CuiDragDropData, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiEmptyStateComponent } from '../../../../components';\r\nimport { CuiEditorConfig } from '../../../../editor';\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\nimport { CuiCheckListBlockListItemActionWithVerificationComponent } from '../checklist-block-list-item-action-with-verification';\r\nimport { CuiCheckListBlockListItemActionWithoutVerificationComponent } from '../checklist-block-list-item-action-without-verification';\r\nimport { CuiChecklistBlockListItemContainerComponent } from '../checklist-block-list-item-container';\r\nimport { CuiCheckListBlockListItemEvaluationComponent } from '../checklist-block-list-item-evaluation';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list',\r\n imports: [\r\n CuiChecklistBlockListItemContainerComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiLetDirective,\r\n CuiEmptyStateComponent,\r\n NgTemplateOutlet,\r\n TranslocoDirective,\r\n CuiDragDropDirective,\r\n CuiHandleScrollDirective,\r\n CuiDragListDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list.component.html',\r\n styleUrl: './checklist-block-list.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListComponent {\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n protected readonly isDragAvailable = this.checkListBlockService.isDragAvailable;\r\n protected readonly checkListItemActionWithVerification = CuiCheckListBlockListItemActionWithVerificationComponent;\r\n protected readonly checkListItemActionWithoutVerification =\r\n CuiCheckListBlockListItemActionWithoutVerificationComponent;\r\n protected readonly checkListItemEvaluation = CuiCheckListBlockListItemEvaluationComponent;\r\n\r\n protected readonly componentId = this.checkListBlockService.componentId;\r\n protected readonly isLoading = signal<boolean>(false);\r\n protected readonly isDragEnabled = computed(() => !this.isLoading() && this.isDragAvailable());\r\n protected readonly checkListItemsWithComponents = computed<CuiCheckListBlockItem[]>(() => {\r\n if (!this.checkListItems()) {\r\n return [];\r\n }\r\n\r\n return this.checkListItems()!.map((element) => ({\r\n id: element.id,\r\n content: element,\r\n component: this.getNodeCheckListItemComponent(element)\r\n }));\r\n });\r\n\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n protected moveTreeStruct(data: CuiDragDropData, element: CuiCheckListBlockItem): void {\r\n const { targetElement, pointer, index, prevIndex } = data;\r\n\r\n if (prevIndex === index) {\r\n return;\r\n }\r\n\r\n this.isLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .moveElement({\r\n type: MovingType.TARGET_NODE,\r\n targetItemId: targetElement.dataset['id']!,\r\n treeStructTargetItemId: targetElement.dataset['parentId']!,\r\n pointer,\r\n movableItemId: element.id,\r\n treeStructMovableItemId: this.componentId()!\r\n })\r\n .pipe(\r\n switchMap(() =>\r\n this.treeStructApiService.getById<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n this.componentId()!\r\n )\r\n ),\r\n finalize(() => this.isLoading.set(false))\r\n )\r\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n }\r\n\r\n private getNodeCheckListItemComponent(item: NodeCheckListItem<NodeCheckListItemContentType>): Type<unknown> {\r\n if (item.content.actionsApprove !== null) {\r\n return this.checkListItemActionWithVerification;\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in item.content.actionsAssignee![0]) {\r\n return this.checkListItemEvaluation;\r\n }\r\n\r\n return this.checkListItemActionWithoutVerification;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItemsWithComponents() as checkListItemsWithComponents\">\r\n @if (checkListItemsWithComponents?.length) {\r\n <ul\r\n class=\"list__items\"\r\n #list\r\n cuiDragList\r\n >\r\n <ng-container *ngTemplateOutlet=\"items; context: { $implicit: checkListItemsWithComponents }\" />\r\n <ng-template\r\n #items\r\n let-items\r\n let-isHidden=\"isHidden\"\r\n >\r\n @for (item of items; track item.id; let index = $index) {\r\n <li\r\n [attr.data-id]=\"item.content.id\"\r\n [attr.data-parent-id]=\"componentId()\"\r\n [hidden]=\"isHidden\"\r\n cuiHandleScroll\r\n cuiDragDrop\r\n class=\"list__item\"\r\n [class.list__item_disabled]=\"isLoading()\"\r\n (elementDragged)=\"moveTreeStruct($event, item)\"\r\n >\r\n <cui-checklist-block-list-item-container\r\n [checkListBlockItem]=\"item\"\r\n [index]=\"index + 1\"\r\n [config]=\"config()\"\r\n />\r\n </li>\r\n }\r\n </ng-template>\r\n </ul>\r\n } @else {\r\n <cui-empty-state [subtitle]=\"t('NO_CHECKLIST_ITEMS')\" />\r\n }\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, effect, inject, input, signal } from '@angular/core';\r\nimport { CuiElementDirective, CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\nimport { } from '@cuby-ui/api';\r\nimport { CuiNodeChecklistApiService, CuiTreeStructApiService, NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiContentWrapperComponent } from '../../components';\r\nimport { CuiCheckListBlockItemType } from './checklist-block.options';\r\nimport { CuiChecklistBlockListComponent } from './components';\r\nimport { CuiCheckListBlockService } from './services';\r\nimport { CuiContextMenuItem } from '../../interfaces';\r\nimport { CuiEditorConfig } from 'projects/core';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block, [cuiCheckListBlock]',\r\n imports: [\r\n CuiChecklistBlockListComponent,\r\n CuiContentWrapperComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiElementDirective,\r\n CuiLetDirective,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block.component.html',\r\n styleUrls: ['./checklist-block.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiCheckListBlockService]\r\n})\r\nexport class CuiChecklistBlockComponent {\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n protected readonly CHECKLIST_BLOCK_SELECT_OPTIONS: CuiContextMenuItem[] = [\r\n {\r\n label: this.translocoService.translate('ASSIGNEE_APPROVAL'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITHOUT_VERIFICATION)\r\n },\r\n {\r\n label: this.translocoService.translate('DOUBLE_CHECK_APPROVAL'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITH_VERIFICATION)\r\n },\r\n {\r\n label: this.translocoService.translate('EVALUATION_OPTIONS'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.EVALUATION)\r\n }\r\n ];\r\n\r\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n protected readonly isLoading = signal<boolean>(false);\r\n\r\n public readonly componentId = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n constructor() {\r\n this.initNodeCheckListBlock();\r\n }\r\n\r\n private initNodeCheckListBlock(): void {\r\n effect(() => {\r\n this.checkListBlockService.setComponentId(this.componentId());\r\n this.treeStructApiService\r\n .getById<NodeCheckListItem<NodeCheckListItemContentType>>(this.componentId())\r\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n private addCheckListItem(type: CuiCheckListBlockItemType): void {\r\n this.isLoading.set(true);\r\n this.nodeCheckListApiService\r\n .addNodeCheckListItem({\r\n treeStructContainerCheckListId: this.componentId(),\r\n title: 'New checklist item',\r\n type_operations: type\r\n })\r\n .pipe(finalize(() => this.isLoading.set(false)))\r\n .subscribe((checkListItem) => this.checkListBlockService.addCheckListItem(checkListItem));\r\n }\r\n}\r\n","<cui-content-wrapper\r\n *transloco=\"let t\"\r\n backgroundColor=\"var(--cui-base-10)\"\r\n [gap]=\"16\"\r\n>\r\n <ng-container *cuiLet=\"checkListItems() as checkListItems\">\r\n <header class=\"header\">\r\n <h2 class=\"heading\">{{ t('CHECKLIST') }}</h2>\r\n\r\n @if (checkListItems) {\r\n <span class=\"item\">{{ checkListItems?.length }} {{ t('ITEM_VARIANT') }}</span>\r\n }\r\n </header>\r\n <cui-content-wrapper>\r\n <cui-checklist-block-list [config]=\"config()\" />\r\n </cui-content-wrapper>\r\n <div>\r\n <button\r\n #actionButton=\"elementRef\"\r\n cuiElement\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"flat\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n >\r\n {{ t('ADD_NEW_ITEM') }}\r\n </button>\r\n <cui-context-menu\r\n [items]=\"CHECKLIST_BLOCK_SELECT_OPTIONS\"\r\n [target]=\"actionButton.nativeElement\"\r\n />\r\n </div>\r\n </ng-container>\r\n</cui-content-wrapper>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.CuiSvgComponent","i2.CuiButtonComponent","i2.CuiNotificationComponent","i2","i3.CuiSvgComponent","i4.CuiButtonComponent","i1.CuiDialogsComponent","i2.CuiAlertsComponent","i3.CuiTooltips","i3.CuiButtonComponent","GAP","i1.CuiTooltipDriver","i2.CuiTooltipHover","i3.CuiTooltipPosition","i1.CuiTooltipDirective","i1","i1.CuiSvgComponent","i4.CuiSvgComponent","i3.CuiInputTextComponent","i4.CuiTextFieldIdDirective","i5.CuiTextFieldPlaceholderDirective","i3.CuiFormFieldComponent","i4.CuiHintComponent","i9.CuiLabelComponent","i10.CuiSvgComponent","i11","i1.CuiButtonComponent","i3.CuiHintComponent","i3.CuiTooltipDirective","i2.CuiFormFieldComponent","i6.CuiTextFieldIsErrorDirective","i7.CuiLabelComponent","i8","i2.CuiLabelComponent","i4.CuiToggleComponent","i5","i2.CuiInputTextComponent","i3.CuiTextFieldIdDirective","i4.CuiTextFieldPlaceholderDirective","i5.CuiTextFieldIsErrorDirective","i3.CuiContextMenuComponent","i2.CuiIconButtonComponent","i3.CuiTextFieldPlaceholderDirective","i4.CuiTextFieldIsErrorDirective","i5.CuiSvgComponent","i6.CuiTextareaComponent","i7","i8.CuiInputNumberComponent","i2.CuiCheckboxComponent","i3.CuiLabelComponent","i2.CuiContextMenuComponent"],"mappings":"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"}
|
|
1
|
+
{"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/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/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/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/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/animations/animations.ts","../../../projects/core/directives/tooltip/tooltip.service.ts","../../../projects/core/directives/tooltip/tooltips.component.ts","../../../projects/core/directives/tooltip/tooltips.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/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/viewport.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/directives/tooltip/tooltip.providers.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/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/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/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/radio/radio.component.ts","../../../projects/core/components/radio/radio.module.ts","../../../projects/core/components/select/select.component.ts","../../../projects/core/components/select/select.template.html","../../../projects/core/components/select/select.module.ts","../../../projects/core/components/empty-state/empty-state.component.ts","../../../projects/core/components/empty-state/empty-state.component.html","../../../projects/core/components/sidebar/sidebar.options.ts","../../../projects/core/components/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/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/tab/tab.component.ts","../../../projects/core/components/tabs/tab/tab.template.html","../../../projects/core/components/tabs/tabs.component.ts","../../../projects/core/components/tabs/tabs.template.html","../../../projects/core/components/tabs/tabs.module.ts","../../../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/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/jtext-api.service.ts","../../../projects/core/editor/services/editor.service.ts","../../../projects/core/editor/services/markers.service.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.html","../../../projects/core/editor/components/marker-select/marker-select.component.ts","../../../projects/core/editor/components/marker-select/marker-select.component.html","../../../projects/core/editor/components/marker-select/marker-select.options.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.html","../../../projects/core/editor/components/marker-modal/marker-modal.options.ts","../../../projects/core/editor/utils/create-link-modal.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.html","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.options.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.html","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.options.ts","../../../projects/core/editor/components/editor-tool/editor-tool.component.ts","../../../projects/core/editor/pipes/file-size.pipe.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/remove-element-tag-wrapper.ts","../../../projects/core/editor/utils/create-tooltip.ts","../../../projects/core/editor/utils/file-uploader.ts","../../../projects/core/editor/utils/recalculate-indexes.ts","../../../projects/core/editor/utils/split-html.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/config/custom-elements.ts","../../../projects/core/editor/config/editor.provider.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-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/interceptors/x-ndjson.interceptor.ts","../../../projects/core/interceptors/loader.interceptor.ts","../../../projects/core/widgets/loader/loader.component.ts","../../../projects/core/widgets/loader/loader.component.html","../../../projects/core/widgets/delete-modal/delete-modal.component.ts","../../../projects/core/widgets/delete-modal/delete-modal.component.html","../../../projects/core/widgets/categories/services/selected-category.service.ts","../../../projects/core/widgets/general-control-error-hint/general-control-error-hint.component.ts","../../../projects/core/widgets/general-control-error-hint/general-control-error-hint.component.html","../../../projects/core/widgets/categories/components/category-form/category-form.component.ts","../../../projects/core/widgets/categories/components/category-form/category-form.component.html","../../../projects/core/widgets/categories/components/create-category-item/create-category-item.component.ts","../../../projects/core/widgets/categories/components/create-category-item/create-category-item.component.html","../../../projects/core/widgets/categories/components/category-item/category-item.component.ts","../../../projects/core/widgets/categories/components/category-item/category-item.component.html","../../../projects/core/widgets/categories/components/categories-list/categories-list.component.ts","../../../projects/core/widgets/categories/components/categories-list/categories-list.component.html","../../../projects/core/widgets/categories/categories.component.ts","../../../projects/core/widgets/categories/categories.component.html","../../../projects/core/widgets/utility-info/utility-info.component.ts","../../../projects/core/widgets/utility-info/utility-info.component.html","../../../projects/core/widgets/checklist-block/services/checklist-block.service.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.html","../../../projects/core/widgets/checklist-block/checklist-block.component.ts","../../../projects/core/widgets/checklist-block/checklist-block.component.html","../../../projects/core/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-accordion',\r\n templateUrl: './accordion.template.html',\r\n styleUrls: ['./accordion.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionComponent {\r\n}\r\n","<ng-content select=\"cui-accordion-item\"></ng-content>\r\n","import { Directive, effect, inject, input, model, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cuiAccordion]',\r\n standalone: true,\r\n host: {\r\n '(click)': 'onToggle($event)'\r\n }\r\n})\r\nexport class CuiAccordionDirective {\r\n private readonly renderer = inject(Renderer2);\r\n\r\n private wrapper!: HTMLElement;\r\n\r\n public readonly content = input.required<HTMLElement>();\r\n public readonly isOpen = model(true);\r\n\r\n constructor() {\r\n this.initWrapperEffect();\r\n this.initOpenChangesEffect();\r\n }\r\n\r\n protected onToggle(event: Event): void {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n\r\n this.isOpen.update((prev) => !prev);\r\n }\r\n\r\n private initWrapperEffect(): void {\r\n const effectRef = effect(() => {\r\n const content = this.content();\r\n\r\n this.wrapper = this.renderer.createElement('div');\r\n\r\n content.after(this.wrapper);\r\n this.renderer.appendChild(this.wrapper, content);\r\n\r\n effectRef.destroy();\r\n });\r\n }\r\n\r\n private initOpenChangesEffect(): void {\r\n effect(() => {\r\n const isOpen = this.isOpen();\r\n const doAction = isOpen ? this.close : this.open;\r\n\r\n doAction.call(this, this.wrapper);\r\n });\r\n }\r\n\r\n private open(wrapper: HTMLElement): void {\r\n this.renderer.setStyle(wrapper, 'visibility', 'hidden');\r\n this.renderer.setStyle(wrapper, 'height', '0');\r\n this.renderer.setStyle(wrapper, 'overflow', 'hidden')\r\n }\r\n\r\n private close(wrapper: HTMLElement): void {\r\n this.renderer.setStyle(wrapper, 'visibility', 'visible');\r\n this.renderer.setStyle(wrapper, 'height', '');\r\n this.renderer.setStyle(wrapper, 'overflow', '');\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type {\r\n CuiAppearanceAction,\r\n CuiAppearanceDestructive,\r\n CuiAppearanceFlat,\r\n CuiAppearanceGhost,\r\n CuiAppearanceLink,\r\n CuiAppearanceOutlined,\r\n CuiAppearanceOutlinedGray,\r\n CuiAppearanceSecondary,\r\n CuiShapeRounded,\r\n CuiSizeMd,\r\n CuiSizeSm,\r\n CuiSizeXs,\r\n CuiSizeXxs\r\n} from '../../types';\r\n\r\nexport interface CuiButtonOptions {\r\n readonly appearance:\r\n | CuiAppearanceAction\r\n | CuiAppearanceSecondary\r\n | CuiAppearanceOutlined\r\n | CuiAppearanceOutlinedGray\r\n | CuiAppearanceGhost\r\n | CuiAppearanceFlat\r\n | CuiAppearanceDestructive\r\n | CuiAppearanceLink\r\n readonly shape: CuiShapeRounded | null;\r\n readonly size:\r\n | CuiSizeXxs\r\n | CuiSizeXs\r\n | CuiSizeSm\r\n | CuiSizeMd;\r\n}\r\n\r\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\r\n appearance: 'action',\r\n shape: null,\r\n size: 'sm'\r\n};\r\n\r\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\r\n factory: () => CUI_BUTTON_DEFAULT_OPTIONS\r\n});\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CUI_ICONS, cuiIsIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n selector: 'cui-svg[icon]',\r\n templateUrl: './svg.template.html',\r\n styleUrls: ['./svg.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSvgComponent {\r\n private readonly domSanitizer = inject(DomSanitizer);\r\n\r\n protected safeSvgContent!: SafeHtml;\r\n\r\n @Input()\r\n public width?: number;\r\n\r\n @Input()\r\n public height?: number;\r\n\r\n @Input()\r\n @HostBinding('style.--stroke-width')\r\n public strokeWidth?: number;\r\n\r\n @Input()\r\n @HostBinding('style.--color')\r\n public color?: string;\r\n\r\n @Input()\r\n public set icon(icon: CuiIcon | string) {\r\n // TODO: В данном случае подключаются все иконки (вероятно, можно как-то оптимизировано их подключать)\r\n this.safeSvgContent = this.domSanitizer.bypassSecurityTrustHtml(cuiIsIcon(icon)\r\n ? CUI_ICONS[icon]\r\n : icon);\r\n }\r\n\r\n @HostBinding('class._with-stroke-width')\r\n public get isWithStrokeWidth(): boolean {\r\n return !!this.strokeWidth;\r\n }\r\n\r\n @HostBinding('class._with-color')\r\n public get isWithColor(): boolean {\r\n return !!this.color;\r\n }\r\n}\r\n","<span\r\n [innerHTML]=\"safeSvgContent\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n></span>","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n Input,\r\n ViewChild,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_BUTTON_OPTIONS, CuiButtonOptions } from './button.options';\r\n\r\n@Component({\r\n selector: 'button[cuiButton], a[cuiButton]',\r\n templateUrl: './button.template.html',\r\n styleUrls: ['./button.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\r\n\r\n protected readonly AppearanceIconColors: Record<CuiButtonOptions['appearance'], string> = {\r\n action: '--c-action-icon-color',\r\n secondary: '--c-secondary-icon-color',\r\n outlined: '--c-outlined-icon-color',\r\n 'outlined-gray': '--c-outlined-gray-icon-color',\r\n ghost: '--c-ghost-icon-color',\r\n flat: '--c-flat-icon-color',\r\n destructive: '--c-destructive-icon-color',\r\n link: '--c-link-icon-color'\r\n };\r\n protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\r\n protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonOptions['appearance'][] = [\r\n 'secondary',\r\n 'outlined',\r\n 'outlined-gray',\r\n 'ghost'\r\n ];\r\n\r\n protected _appearance = this.cuiButtonOptions.appearance;\r\n protected iconColor = this.getIconColor(this._appearance);\r\n protected _size = this.cuiButtonOptions.size;\r\n protected iconDimensions = {\r\n width: 20,\r\n height: 20\r\n };\r\n\r\n @Input()\r\n @HostBinding('attr.data-shape')\r\n public shape = this.cuiButtonOptions.shape;\r\n\r\n @Input()\r\n @HostBinding('class._disabled')\r\n public disabled = false;\r\n\r\n @Input()\r\n @HostBinding('class._loading')\r\n public isLoaderShown = false;\r\n\r\n @Input()\r\n public icon?: CuiIcon | string;\r\n\r\n @Input()\r\n public iconRight?: CuiIcon | string;\r\n\r\n @Input()\r\n @HostBinding('attr.data-appearance')\r\n public get appearance(): CuiButtonOptions['appearance'] {\r\n return this._appearance;\r\n }\r\n\r\n public set appearance(appearance: CuiButtonOptions['appearance']) {\r\n this._appearance = appearance;\r\n\r\n this.changeIconColor();\r\n }\r\n\r\n @Input()\r\n @HostBinding('attr.data-size')\r\n public get size(): CuiButtonOptions['size'] {\r\n return this._size;\r\n }\r\n\r\n public set size(size: CuiButtonOptions['size']) {\r\n this._size = size;\r\n\r\n if (size === 'xxs') {\r\n this.iconDimensions = {\r\n width: 16,\r\n height: 16\r\n };\r\n\r\n return;\r\n }\r\n\r\n this.iconDimensions = {\r\n width: 20,\r\n height: 20\r\n };\r\n }\r\n\r\n @HostBinding('class._only-icon')\r\n protected containsOnlyIcon = false;\r\n\r\n @HostBinding('disabled')\r\n protected get isDisabled(): boolean {\r\n return this.disabled || this.isLoaderShown;\r\n }\r\n\r\n @ViewChild('content')\r\n protected content!: ElementRef<HTMLSpanElement>;\r\n\r\n public ngOnInit(): void {\r\n this.initIconColor();\r\n }\r\n\r\n private initIconColor(): void {\r\n this.changeIconColor();\r\n }\r\n\r\n private changeIconColor(): void {\r\n Promise.resolve().then(() => {\r\n this.iconColor = this.getIconColor(this._appearance);\r\n\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private getIconColor(appearance: CuiButtonOptions['appearance']): string {\r\n const customIconColor = this.window\r\n .getComputedStyle(this.element)\r\n .getPropertyValue(this.AppearanceIconColors[appearance]);\r\n\r\n if (customIconColor) {\r\n return customIconColor;\r\n }\r\n\r\n if (this.BUTTON_ICONS_COLOR_BASE_500.includes(appearance)) {\r\n return this.COLOR_BASE_500;\r\n }\r\n\r\n return 'currentColor';\r\n }\r\n}\r\n","<span\r\n class=\"c-wrapper\"\r\n [class.c-wrapper_invisible]=\"isLoaderShown\"\r\n>\r\n <cui-svg\r\n *ngIf=\"icon\"\r\n [icon]=\"icon\"\r\n [width]=\"iconDimensions.width\"\r\n [height]=\"iconDimensions.height\"\r\n [color]=\"iconColor\"\r\n ></cui-svg>\r\n <span\r\n #content\r\n class=\"c-content\"\r\n ><ng-content></ng-content></span>\r\n <cui-svg\r\n *ngIf=\"iconRight\"\r\n [icon]=\"iconRight\"\r\n [width]=\"iconDimensions.width\"\r\n [height]=\"iconDimensions.height\"\r\n [color]=\"iconColor\"\r\n ></cui-svg>\r\n</span>\r\n<cui-svg\r\n *ngIf=\"isLoaderShown\"\r\n icon=\"cuiIconLoading\"\r\n class=\"c-loader\"\r\n></cui-svg>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CuiAccordionAppearance } from './accordion-item.options';\r\n\r\n@Component({\r\n selector: 'cui-accordion-item',\r\n templateUrl: './accordion-item.template.html',\r\n styleUrls: ['./accordion-item.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionItemComponent {\r\n @Input()\r\n public isOpen = true;\r\n\r\n @Input()\r\n public appearance: CuiAccordionAppearance = 'default';\r\n\r\n @Output()\r\n public readonly isOpenChange = new EventEmitter<boolean>();\r\n\r\n protected get buttonIcon(): CuiIcon {\r\n return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';\r\n }\r\n\r\n @HostBinding('attr.appearance')\r\n public get _appearance(): string {\r\n return this.appearance;\r\n }\r\n\r\n protected onRowToggle(): void {\r\n this.isOpen = !this.isOpen;\r\n\r\n this.isOpenChange.emit(this.isOpen);\r\n }\r\n}\r\n","<header class=\"c-header\">\r\n <button\r\n cuiButton\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"buttonIcon\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <div class=\"c-header__wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</header>\r\n<div *ngIf=\"isOpen\" class=\"c-content\">\r\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSvgComponent } from './svg.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiSvgComponent],\r\n exports: [CuiSvgComponent]\r\n})\r\nexport class CuiSvgModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiButtonComponent } from './button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiButtonComponent],\r\n exports: [CuiButtonComponent]\r\n})\r\nexport class CuiButtonModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiAccordionComponent } from './accordion.component';\r\nimport { CuiAccordionItemComponent } from './accordion-item/accordion-item.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule,\r\n CuiButtonModule\r\n ],\r\n declarations: [\r\n CuiAccordionComponent,\r\n CuiAccordionItemComponent\r\n ],\r\n exports: [\r\n CuiAccordionComponent,\r\n CuiAccordionItemComponent\r\n ]\r\n})\r\nexport class CuiAccordionModule {\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiStatus } from '../../types';\r\n\r\nexport type CuiNotificationIcons = Record<CuiStatus, { icon: string }>;\r\n\r\nexport type CuiNotificationIconOptions = Record<CuiStatus, { color: string }>;\r\n\r\nexport interface CuiNotificationOptions {\r\n readonly status: CuiStatus;\r\n readonly mode: 'default' | 'light';\r\n}\r\n\r\nexport const CUI_NOTIFICATION_DEFAULT_OPTIONS: CuiNotificationOptions = {\r\n status: 'info',\r\n mode: 'default'\r\n};\r\n\r\nexport const CUI_NOTIFICATION_OPTIONS = cuiCreateToken(CUI_NOTIFICATION_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_NOTIFICATION_ICONS: CuiNotificationIcons = {\r\n info: {\r\n icon: 'cuiIconInfo'\r\n },\r\n success: {\r\n icon: 'cuiIconCheckCircle'\r\n },\r\n alert: {\r\n icon: 'cuiIconAlertTriangle'\r\n },\r\n error: {\r\n icon: 'cuiIconXCircle'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE: CuiNotificationIconOptions = {\r\n info: {\r\n color: 'var(--c-info-icon-color)'\r\n },\r\n success: {\r\n color: 'var(--cui-green-500)'\r\n },\r\n alert: {\r\n color: 'var(--cui-yellow-400)'\r\n },\r\n error: {\r\n color: 'var(--cui-danger)'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE: CuiNotificationIconOptions = {\r\n info: {\r\n color: 'var(--cui-info)'\r\n },\r\n success: {\r\n color: 'var(--cui-green-700)'\r\n },\r\n alert: {\r\n color: 'var(--cui-yellow-400)'\r\n },\r\n error: {\r\n color: 'var(--cui-danger)'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS: Record<CuiNotificationOptions['mode'], CuiNotificationIconOptions> = {\r\n default: CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE,\r\n light: CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE\r\n}","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n CUI_NOTIFICATION_ICON_OPTIONS,\r\n CuiNotificationIconOptions,\r\n CuiNotificationOptions\r\n} from './notification.options';\r\nimport { CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS } from './notification.options';\r\n\r\n@Component({\r\n selector: 'cui-notification',\r\n templateUrl: './notification.template.html',\r\n styleUrls: ['./notification.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiNotificationComponent implements CuiNotificationOptions, OnInit {\r\n private readonly cuiNotificationOptions = inject(CUI_NOTIFICATION_OPTIONS);\r\n\r\n protected readonly ICONS = CUI_NOTIFICATION_ICONS;\r\n protected readonly ICON_OPTIONS = CUI_NOTIFICATION_ICON_OPTIONS;\r\n\r\n protected iconOptions!: CuiNotificationIconOptions;\r\n\r\n @Input()\r\n @HostBinding('attr.data-status')\r\n public status = this.cuiNotificationOptions.status;\r\n\r\n @Input()\r\n @HostBinding('attr.data-mode')\r\n public mode = this.cuiNotificationOptions.mode;\r\n\r\n @Input()\r\n public isCloseable = false;\r\n\r\n @Output()\r\n public readonly closed = new EventEmitter<void>();\r\n\r\n public ngOnInit(): void {\r\n this.initIconOptions();\r\n }\r\n\r\n protected onClose(): void {\r\n this.closed.next();\r\n }\r\n\r\n private initIconOptions(): void {\r\n this.iconOptions = this.ICON_OPTIONS[this.mode];\r\n }\r\n}\r\n","<cui-svg\r\n class=\"c-icon\"\r\n [icon]=\"ICONS[status].icon\"\r\n [color]=\"iconOptions[status].color\"\r\n></cui-svg>\r\n<div class=\"c-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n<button\r\n *ngIf=\"isCloseable\"\r\n class=\"c-button\"\r\n (click)=\"onClose()\"\r\n>\r\n <cui-svg\r\n icon=\"cuiIconX\"\r\n color=\"var(--cui-gray-0)\"\r\n />\r\n</button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiNotificationComponent } from './notification.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiNotificationComponent],\r\n exports: [CuiNotificationComponent]\r\n})\r\nexport class CuiNotificationModule {\r\n}\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory, CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\nimport { CUI_NOTIFICATION_OPTIONS } from '../notification';\r\n\r\nexport const CUI_ALERTS = cuiCreateToken(\r\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([])\r\n);\r\n\r\nexport const CUI_ALERT_DEFAULT_OPTIONS: Omit<CuiAlertOptions, 'status'> = {\r\n label: '',\r\n needAutoClose: true,\r\n isCloseable: true,\r\n mode: 'default',\r\n position: 'right',\r\n resizing: 'fixed'\r\n};\r\n\r\nexport const CUI_ALERT_OPTIONS = cuiCreateTokenFromFactory(\r\n () => ({\r\n ...CUI_ALERT_DEFAULT_OPTIONS,\r\n ...inject(CUI_NOTIFICATION_OPTIONS)\r\n })\r\n);\r\n\r\nexport const CUI_ALERT_CONTEXT = new InjectionToken<CuiPopover<CuiAlertOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, HostBinding } from '@angular/core';\r\n\r\nimport { CUI_ALERT_CONTEXT } from './alert.tokens';\r\nimport type { CuiAlertResizing } from './alert.types';\r\n\r\n@Component({\r\n selector: 'cui-alert',\r\n templateUrl: './alert.template.html',\r\n styleUrls: ['./alert.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAlertComponent implements OnInit {\r\n protected readonly context = inject(CUI_ALERT_CONTEXT);\r\n\r\n protected readonly AUTO_CLOSE_DURATION_IN_MILLISECONDS = 3000;\r\n\r\n @HostBinding('attr.data-resizing')\r\n protected get resizing(): CuiAlertResizing {\r\n return this.context.resizing;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initAutoClose();\r\n }\r\n\r\n protected onClosed(): void {\r\n this.context.$implicit.complete();\r\n }\r\n\r\n private initAutoClose(): void {\r\n if (!this.context.needAutoClose) {\r\n return;\r\n }\r\n\r\n setTimeout(this.onClosed.bind(this), this.AUTO_CLOSE_DURATION_IN_MILLISECONDS);\r\n }\r\n}\r\n","<cui-notification\r\n [status]=\"context.status\"\r\n [mode]=\"context.mode\"\r\n [isCloseable]=\"context.isCloseable\"\r\n (closed)=\"onClosed()\"\r\n>\r\n <h2\r\n *ngIf=\"context.label\"\r\n class=\"c-heading\"\r\n >\r\n {{ context.label }}\r\n </h2>\r\n {{ context.content }}\r\n</cui-notification>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_ALERT_CONTEXT, CUI_ALERTS } from './alert.tokens';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-alerts',\r\n templateUrl: './alerts.template.html',\r\n styleUrls: ['./alerts.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiAlertsComponent implements OnInit {\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n protected readonly alerts$: Observable<ReadonlyArray<CuiPopover<CuiAlertOptions>>> = inject(CUI_ALERTS);\r\n protected alertInjectors!: ReadonlyArray<Injector>;\r\n\r\n public ngOnInit(): void {\r\n this.initAlertInjectorsSubscription();\r\n }\r\n\r\n protected trackByFn(_: number, alert: CuiPopover<CuiAlertOptions>): string {\r\n return alert.id;\r\n }\r\n\r\n protected alertsMatcher(alert: CuiPopover<CuiAlertOptions>, position: string): boolean {\r\n return alert.position === position;\r\n }\r\n\r\n protected initAlertInjectorsSubscription(): void {\r\n this.alerts$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(dialogs => this.alertInjectors = dialogs.map(useValue => Injector.create({\r\n providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\r\n })));\r\n }\r\n}\r\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\r\n <div class=\"c-wrapper c-wrapper_position_center\">\r\n <ng-container *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'center'; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n </ng-container>\r\n </div>\r\n <div class=\"c-wrapper c-wrapper_position_right\">\r\n <ng-container *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'right'; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiFilterPipe, CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport { CuiAlertsComponent } from './alerts.component';\r\nimport { CuiNotificationModule } from '../notification';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiFilterPipe,\r\n CuiNotificationModule,\r\n CuiLetDirective\r\n ],\r\n declarations: [\r\n CuiAlertComponent,\r\n CuiAlertsComponent\r\n ],\r\n exports: [\r\n CuiAlertComponent,\r\n CuiAlertComponent,\r\n CuiAlertsComponent\r\n ]\r\n})\r\nexport class CuiAlertModule {\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_ALERT_OPTIONS, CUI_ALERTS } from './alert.tokens';\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n useFactory: () => new CuiAlertService(CUI_ALERTS, CuiAlertComponent, inject(CUI_ALERT_OPTIONS))\r\n})\r\nexport class CuiAlertService extends CuiPopoverService<CuiAlertOptions> {\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport interface CuiBadgeOptions {\r\n readonly color: 'light-blue' | 'yellow' | 'green' | 'gray' | 'dark-gray' | 'red' | 'violet';\r\n readonly size: CuiSizeSm | CuiSizeMd;\r\n readonly isWithDot: boolean;\r\n}\r\n\r\nexport const CUI_BADGE_DEFAULT_OPTIONS: CuiBadgeOptions = {\r\n color: 'light-blue',\r\n size: 'sm',\r\n isWithDot: false\r\n};\r\n\r\nexport const CUI_BADGE_OPTIONS = cuiCreateToken(CUI_BADGE_DEFAULT_OPTIONS);","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\n\r\nimport type { CuiBadgeOptions } from './badge.options';\r\nimport { CUI_BADGE_OPTIONS } from './badge.options';\r\n\r\n@Component({\r\n selector: 'cui-badge',\r\n templateUrl: './badge.template.html',\r\n styleUrls: ['./badge.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBadgeComponent implements CuiBadgeOptions {\r\n private readonly options = inject(CUI_BADGE_OPTIONS);\r\n\r\n @Input()\r\n @HostBinding('attr.data-color')\r\n public color = this.options.color;\r\n\r\n @Input()\r\n @HostBinding('attr.data-size')\r\n public size = this.options.size;\r\n\r\n @Input()\r\n public isWithDot = this.options.isWithDot;\r\n}\r\n","<span\r\n *ngIf=\"isWithDot\"\r\n class=\"c-dots\"\r\n></span>\r\n<ng-content />","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiBadgeComponent],\r\n exports: [CuiBadgeComponent]\r\n})\r\nexport class CuiBadgeModule {\r\n}\r\n","import type { CuiStatus } from '../../types';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type CuiBannerIconOptions = {\r\n [k in CuiStatus]: {\r\n icon: CuiIcon;\r\n color: string;\r\n }\r\n}\r\n\r\nexport interface CuiBannerOptions {\r\n readonly status: CuiStatus;\r\n}\r\n\r\nexport const CUI_BANNER_DEFAULT_OPTIONS: CuiBannerOptions = {\r\n status: 'info'\r\n};\r\n\r\nexport const CUI_BANNER_OPTIONS = cuiCreateToken(CUI_BANNER_DEFAULT_OPTIONS);\r\n","import type {AbstractType, ExistingProvider, FactoryProvider, Type} from '@angular/core';\r\nimport {Optional, SkipSelf} from '@angular/core';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\nimport type {CuiPoint} from '../types';\r\n\r\nexport abstract class CuiAccessor {\r\n public abstract readonly type: string;\r\n}\r\n\r\nexport abstract class CuiPositionAccessor extends CuiAccessor {\r\n /*\r\n * TODO @deprecated switching from DOMRect to HTMLElement in v5\r\n */\r\n public abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint;\r\n}\r\n\r\nexport abstract class CuiRectAccessor extends CuiAccessor {\r\n public abstract getClientRect(): DOMRect;\r\n}\r\n\r\nexport function cuiProvideAccessor<T extends CuiAccessor>(\r\n provide: AbstractType<T>,\r\n type: string,\r\n fallback: Type<T>,\r\n): FactoryProvider {\r\n return {\r\n provide,\r\n deps: [[new SkipSelf(), new Optional(), provide], fallback],\r\n useFactory: cuiFallbackAccessor<T>(type),\r\n };\r\n}\r\n\r\nexport function cuiFallbackAccessor<T extends CuiAccessor>(\r\n type: string,\r\n): (accessors: readonly T[] | null, fallback: T) => T {\r\n return (accessors, fallback) =>\r\n accessors?.find?.(\r\n (accessor) => accessor !== fallback && accessor.type === type,\r\n ) || fallback;\r\n}\r\n\r\nexport function cuiPositionAccessorFor(\r\n type: string,\r\n fallback: Type<CuiPositionAccessor>,\r\n): FactoryProvider {\r\n return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiRectAccessorFor(\r\n type: string,\r\n fallback: Type<CuiRectAccessor>,\r\n): FactoryProvider {\r\n return cuiProvideAccessor(CuiRectAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiAsPositionAccessor(\r\n accessor: Type<CuiPositionAccessor>,\r\n): ExistingProvider {\r\n return cuiProvide(CuiPositionAccessor, accessor, true);\r\n}\r\n\r\nexport function cuiAsRectAccessor(accessor: Type<CuiRectAccessor>): ExistingProvider {\r\n return cuiProvide(CuiRectAccessor, accessor, true);\r\n}\r\n","import type {ExistingProvider, Type} from '@angular/core';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\n\r\nexport abstract class CuiVehicle {\r\n public abstract readonly type: string;\r\n public abstract toggle(value: boolean): void;\r\n}\r\n\r\nexport function cuiAsVehicle(vehicle: Type<CuiVehicle>): ExistingProvider {\r\n return cuiProvide(CuiVehicle, vehicle, true);\r\n}\r\n","import type {AfterViewInit, ExistingProvider, Type} from '@angular/core';\r\nimport {DestroyRef, Directive, inject} from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\nimport {distinctUntilChanged, merge, Observable} from 'rxjs';\r\n\r\nimport {CuiVehicle} from './vehicle';\r\n\r\nexport abstract class CuiDriver extends Observable<boolean> {\r\n public abstract readonly type: string;\r\n}\r\n\r\nexport function cuiAsDriver(driver: Type<CuiDriver>): ExistingProvider {\r\n return cuiProvide(CuiDriver, driver, true);\r\n}\r\n\r\n@Directive()\r\nexport abstract class CuiDriverDirective implements AfterViewInit {\r\n public abstract type: string;\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly drivers: readonly CuiDriver[] =\r\n inject<any>(CuiDriver, {self: true, optional: true}) || [];\r\n\r\n private readonly vehicles: readonly CuiVehicle[] = inject<any>(CuiVehicle, {\r\n self: true,\r\n optional: true,\r\n });\r\n\r\n public ngAfterViewInit(): void {\r\n const vehicle = this.vehicles?.find(({type}) => type === this.type);\r\n\r\n merge(...this.drivers.filter(({type}) => type === this.type))\r\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n .subscribe((value) => {\r\n vehicle?.toggle(value);\r\n });\r\n }\r\n}\r\n","import {inject, Injectable, NgZone} from '@angular/core';\r\nimport {CUI_ANIMATION_FRAME} from '@cuby-ui/cdk';\r\nimport {EMPTY_CLIENT_RECT, cuiInjectElement, cuiZonefree} from '@cuby-ui/cdk';\r\nimport {CuiPositionAccessor} from '../classes';\r\nimport type {CuiPoint} from '../types';\r\nimport {finalize, map, Observable, startWith} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CuiPositionService extends Observable<CuiPoint> {\r\n private readonly el = cuiInjectElement();\r\n private readonly accessor = inject(CuiPositionAccessor);\r\n\r\n constructor() {\r\n const animationFrame$ = inject(CUI_ANIMATION_FRAME);\r\n const zone = inject(NgZone);\r\n\r\n super((subscriber) =>\r\n animationFrame$\r\n .pipe(\r\n startWith(null),\r\n map(() =>\r\n this.accessor.getPosition(\r\n this.el.getBoundingClientRect(),\r\n this.el,\r\n ),\r\n ),\r\n cuiZonefree(zone),\r\n finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT)),\r\n )\r\n .subscribe(subscriber),\r\n );\r\n }\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nexport type CuiTheme = 'light' | 'dark';\r\n\r\nexport const CUI_THEME_STORAGE_DEFAULT_KEY = 'cuiTheme';\r\n\r\nexport const CUI_DEFAULT_THEME: CuiTheme = 'light';\r\n\r\nexport const CUI_THEME_STORAGE_KEY = cuiCreateToken(CUI_THEME_STORAGE_DEFAULT_KEY);\r\n\r\nexport const CUI_THEME = cuiCreateToken<CuiTheme>(CUI_DEFAULT_THEME);","import { inject, Injectable } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiTheme } from './theme.options';\r\nimport { CUI_THEME, CUI_THEME_STORAGE_KEY } from './theme.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiThemeService extends BehaviorSubject<CuiTheme> {\r\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n private readonly key = inject(CUI_THEME_STORAGE_KEY);\r\n\r\n constructor() {\r\n super(\r\n inject(CUI_LOCAL_STORAGE).getItem(inject(CUI_THEME_STORAGE_KEY)) as CuiNullable<CuiTheme>\r\n ?? inject(CUI_THEME)\r\n );\r\n }\r\n\r\n public override next(theme: CuiTheme): void {\r\n this.localStorage.setItem(this.key, theme);\r\n super.next(theme);\r\n }\r\n\r\n // При работе только двух тем\r\n public switch(): void {\r\n this.next(this.value === 'light' ? 'dark' : 'light');\r\n }\r\n}","import type { CuiValueOf } from '@cuby-ui/cdk';\r\n\r\nexport const CuiLoadingState = {\r\n LOADING: 'loading',\r\n COMPLETED: 'completed',\r\n INITIAL: 'initial'\r\n} as const;\r\n\r\nexport type CuiLoadingState = CuiValueOf<typeof CuiLoadingState>;\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nimport { CuiLoadingState } from './loader.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiLoaderService {\r\n private readonly RESET_TO_INITIAL_TIME = 1000;\r\n\r\n private readonly loaderStateSignal = signal<CuiLoadingState>(CuiLoadingState.INITIAL);\r\n\r\n private requestCount = 0;\r\n private resetLoadingStateTimerId?: ReturnType<typeof setTimeout>;\r\n\r\n public readonly loaderState = this.loaderStateSignal.asReadonly();\r\n\r\n constructor() {\r\n AngularOutsideLoaderService.setInstance(this);\r\n }\r\n\r\n public setLoading(): void {\r\n this.requestCount++;\r\n // need to use without queueMicrotask (error)\r\n queueMicrotask(() => this.loaderStateSignal.set(CuiLoadingState.LOADING));\r\n }\r\n\r\n public setCompleted(): void {\r\n this.requestCount = this.requestCount && this.requestCount - 1;\r\n\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n return this.loaderStateSignal.set(CuiLoadingState.COMPLETED);\r\n }\r\n\r\n public handleCompletedRequest(): void {\r\n this.setCompleted();\r\n clearTimeout(this.resetLoadingStateTimerId);\r\n\r\n this.resetLoadingStateTimerId = setTimeout(() => {\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }, this.RESET_TO_INITIAL_TIME);\r\n }\r\n\r\n public reset(): void {\r\n this.requestCount = 0;\r\n this.resetLoadingStateTimerId = undefined;\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }\r\n}\r\n\r\n// NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT\r\nexport class AngularOutsideLoaderService {\r\n private static instance: CuiLoaderService;\r\n\r\n public static getInstance(): CuiLoaderService {\r\n if (!this.instance) {\r\n throw new Error(\"The instance hasn't been initialized yet\");\r\n }\r\n\r\n return this.instance;\r\n }\r\n\r\n public static setInstance(instance: CuiLoaderService): void {\r\n this.instance = instance;\r\n }\r\n}\r\n","import {inject, Injectable} from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport {CUI_IS_WEBKIT} from '@cuby-ui/cdk';\r\nimport type {CuiPoint} from '../types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CuiVisualViewportService {\r\n private readonly isWebkit = inject(CUI_IS_WEBKIT);\r\n private readonly win = inject(CUI_WINDOW);\r\n\r\n // https://bugs.webkit.org/show_bug.cgi?id=207089\r\n public correct(point: CuiPoint): CuiPoint {\r\n return this.isWebkit\r\n ? [\r\n point[0] + (this.win.visualViewport?.offsetTop ?? 0),\r\n point[1] + (this.win.visualViewport?.offsetLeft ?? 0),\r\n ]\r\n : point;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\r\n\r\nimport type { CuiBannerIconOptions, CuiBannerOptions } from './banner.options';\r\nimport { CUI_BANNER_OPTIONS } from './banner.options';\r\nimport type { CuiTheme } from '../../services';\r\nimport { CuiThemeService } from '../../services';\r\nimport { map } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'cui-banner',\r\n templateUrl: './banner.template.html',\r\n styleUrls: ['./banner.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBannerComponent implements CuiBannerOptions {\r\n private readonly options = inject(CUI_BANNER_OPTIONS);\r\n protected readonly theme$ = inject(CuiThemeService);\r\n\r\n protected readonly ICON_OPTIONS: CuiBannerIconOptions = {\r\n info: {\r\n icon: 'cuiIconInfo',\r\n color: 'var(--c-info-icon-color)'\r\n },\r\n success: {\r\n icon: 'cuiIconCheckCircle',\r\n color: 'var(--cui-success)'\r\n },\r\n alert: {\r\n icon: 'cuiIconAlertTriangle',\r\n color: 'var(--c-alert-icon-color)'\r\n },\r\n error: {\r\n icon: 'cuiIconAlertCircle',\r\n color: 'var(--cui-danger)'\r\n },\r\n };\r\n protected readonly THEME_CLOSE_BUTTON_ICON_COLORS: Record<CuiTheme, string> = {\r\n light: 'var(--cui-gray-500)',\r\n dark: 'var(--cui-gray-0)'\r\n }\r\n\r\n @Input()\r\n @HostBinding('attr.data-status')\r\n public status = this.options.status;\r\n\r\n @Input()\r\n public isCloseable = true;\r\n\r\n @Input()\r\n public label?: string;\r\n\r\n @Input()\r\n public actionButtonText?: string;\r\n\r\n @Output()\r\n public actionButtonClicked = new EventEmitter<void>();\r\n\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n protected onAction(): void {\r\n this.actionButtonClicked.emit();\r\n }\r\n\r\n protected onClose(): void {\r\n this.closed.emit();\r\n }\r\n}\r\n","<cui-svg\r\n *cuiLet=\"ICON_OPTIONS[status] as iconOption\"\r\n [icon]=\"iconOption.icon\"\r\n [color]=\"iconOption.color\"\r\n class=\"c-icon\"\r\n></cui-svg>\r\n<div class=\"c-wrapper\">\r\n <h2\r\n *ngIf=\"label\"\r\n class=\"c-heading\"\r\n >\r\n {{ label }}\r\n </h2>\r\n <ng-content></ng-content>\r\n <button\r\n cuiButton\r\n *ngIf=\"actionButtonText\"\r\n appearance=\"link\"\r\n class=\"c-action\"\r\n (click)=\"onAction()\"\r\n >\r\n {{ actionButtonText }}\r\n </button>\r\n</div>\r\n<button\r\n *ngIf=\"isCloseable\"\r\n class=\"c-button\"\r\n (click)=\"onClose()\"\r\n>\r\n\r\n@if (theme$ | async; as theme) {\r\n <cui-svg\r\n icon=\"cuiIconX\"\r\n [color]=\"THEME_CLOSE_BUTTON_ICON_COLORS[theme]\"\r\n />\r\n}\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiBannerComponent } from './banner.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiButtonModule\r\n ],\r\n declarations: [CuiBannerComponent],\r\n exports: [CuiBannerComponent]\r\n})\r\nexport class CuiBannerModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\r\n\r\nimport { CuiItemDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n selector: 'cui-breadcrumbs',\r\n templateUrl: './breadcrumbs.template.html',\r\n styleUrls: ['./breadcrumbs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbsComponent {\r\n @ContentChildren(CuiItemDirective, { read: TemplateRef })\r\n protected readonly breadcrumbs!: QueryList<TemplateRef<unknown>>;\r\n}\r\n","<ng-container *ngIf=\"breadcrumbs.changes | async\"/>\r\n<ng-container *ngFor=\"let breadcrumb of breadcrumbs; let isLast = last\">\r\n <ng-container *ngTemplateOutlet=\"breadcrumb\" />\r\n <cui-svg\r\n *ngIf=\"!isLast\"\r\n icon=\"cuiIconSlashDivider\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: '[cuiBreadcrumb]',\r\n templateUrl: './breadcrumb.template.html',\r\n styleUrls: ['./breadcrumb.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbComponent {\r\n @Input()\r\n public isLast = false;\r\n}\r\n","<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBreadcrumbsComponent } from './breadcrumbs.component';\r\nimport { CuiBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [\r\n CuiBreadcrumbsComponent,\r\n CuiBreadcrumbComponent\r\n ],\r\n exports: [\r\n CuiBreadcrumbsComponent,\r\n CuiBreadcrumbComponent\r\n ]\r\n})\r\nexport class CuiBreadcrumbsModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-button-group',\r\n templateUrl: './button-group.template.html',\r\n styleUrls: ['./button-group.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonGroupComponent {\r\n}\r\n","<ng-content select=\"button[cuiButton], a[cuiButton]\"></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiButtonGroupComponent } from './button-group.component';\r\n\r\n@NgModule({\r\n declarations: [CuiButtonGroupComponent],\r\n exports: [CuiButtonGroupComponent]\r\n})\r\nexport class CuiButtonGroupModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"checkbox\"][cuiCheckbox]',\r\n template: '',\r\n styleUrls: ['./checkbox.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckboxComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiCheckboxComponent } from './checkbox.component';\r\n\r\n@NgModule({\r\n declarations: [CuiCheckboxComponent],\r\n exports: [CuiCheckboxComponent]\r\n})\r\nexport class CuiCheckboxModule {\r\n}\r\n","export const CUI_ROOT_SELECTOR = 'cui-root';","import { InjectionToken } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\nexport const CUI_DIALOGS = cuiCreateToken(\r\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([])\r\n);\r\n\r\nexport const CUI_DIALOG_DEFAULT_OPTIONS: CuiDialogOptions = {\r\n size: 'auto',\r\n data: undefined,\r\n dismissible: true\r\n};\r\n\r\nexport const CUI_DIALOG_OPTIONS = cuiCreateToken(CUI_DIALOG_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_DIALOG_CONTEXT = new InjectionToken<CuiPopover<CuiDialogOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CUI_DIALOGS } from './dialog.tokens';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-dialogs',\r\n templateUrl: './dialogs.template.html',\r\n styleUrls: ['./dialogs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiDialogsComponent implements OnInit {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n protected readonly dialogs$: Observable<ReadonlyArray<CuiPopover<CuiDialogOptions>>> = inject(CUI_DIALOGS);\r\n protected dialogInjectorCache = new Map<string, Injector>();\r\n protected dialogInjectors!: ReadonlyArray<Injector>;\r\n\r\n public ngOnInit(): void {\r\n this.initDialogsSubscription();\r\n }\r\n\r\n protected trackByFn(_: number, dialog: CuiPopover<CuiDialogOptions>): string {\r\n return dialog.id;\r\n }\r\n\r\n protected initDialogsSubscription(): void {\r\n this.dialogs$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(dialogs => {\r\n this.document.body.style.overflow = dialogs.length ? 'hidden' : '';\r\n this.dialogInjectors = dialogs.map(dialog => {\r\n if (!this.dialogInjectorCache.has(dialog.id)) {\r\n this.dialogInjectorCache.set(dialog.id, Injector.create({\r\n providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\r\n parent: dialog.injector\r\n }));\r\n }\r\n\r\n return this.dialogInjectorCache.get(dialog.id)!;\r\n });\r\n\r\n this.dialogInjectorCache.forEach((_, dialogId) => {\r\n if (dialogs.find(dialog => dialog.id === dialogId)) {\r\n return;\r\n }\r\n\r\n this.dialogInjectorCache.delete(dialogId);\r\n });\r\n });\r\n }\r\n}\r\n","<ng-container *cuiLet=\"dialogs$ | async as dialogs\">\r\n <ng-container *ngFor=\"let dialog of dialogs; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"dialog.component; injector: dialogInjectors[i]\"></ng-container>\r\n </ng-container>\r\n <div\r\n *ngIf=\"dialogs!.length\"\r\n class=\"c-overlay\"\r\n ></div>\r\n</ng-container>\r\n","import {\r\n animate,\r\n animateChild,\r\n query,\r\n stagger,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nconst TRANSITION = '{{duration}}ms ease-in-out';\r\nconst DURATION = {params: {duration: 300}};\r\nconst STAGGER = 300;\r\n\r\nexport interface CuiDurationOptions {\r\n params: {duration: number};\r\n value: string;\r\n}\r\n\r\n/**\r\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\r\n */\r\nexport const cuiParentAnimation = trigger('cuiParentAnimation', [\r\n transition(':leave', [query(':scope > *', [animateChild()], {optional: true})]),\r\n]);\r\n\r\n/**\r\n * Add on parent to stop initial :enter animation for children\r\n */\r\nexport const cuiParentStop = trigger('cuiParentStop', [transition(':enter', [])]);\r\n\r\nexport const cuiHost = trigger('cuiHost', [\r\n transition(':enter', [\r\n style({overflow: 'clip'}),\r\n query(':scope > *', [animateChild()], {optional: true}),\r\n ]),\r\n transition(':leave', [query(':scope > *', [animateChild()], {optional: true})]),\r\n]);\r\n\r\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\r\n transition(\r\n ':enter',\r\n [style({height: 0}), animate(TRANSITION, style({height: '*'}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({height: '*'}), animate(TRANSITION, style({height: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({height: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({height: '*'}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({height: '*'}),\r\n stagger(STAGGER, [animate(TRANSITION, style({height: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\r\n transition(\r\n ':enter',\r\n [style({width: 0}), animate(TRANSITION, style({width: '*'}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({width: '*'}), animate(TRANSITION, style({width: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({width: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({width: '*'}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({width: '*'}),\r\n stagger(STAGGER, [animate(TRANSITION, style({width: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeIn = trigger('cuiFadeIn', [\r\n transition(\r\n ':enter',\r\n [style({opacity: 0}), animate(TRANSITION, style({opacity: 1}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({opacity: 1}), animate(TRANSITION, style({opacity: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInList = trigger('cuiFadeInList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({opacity: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 1}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({opacity: 1}),\r\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInTop = trigger('cuiFadeInTop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInBottom = trigger('cuiFadeInBottom', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY({{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY({{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiDropdownAnimation = trigger('cuiDropdownAnimation', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiScaleIn = trigger('cuiScaleIn', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n animate('{{duration}}ms {{easing}}', style({transform: 'scale({{end}})'})),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300, easing: 'ease-in-out'}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiPop = trigger('cuiPop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{middle}})'})),\r\n animate(TRANSITION, style({transform: 'scale({{end}})'})),\r\n ],\r\n {params: {end: 1, middle: 1.1, start: 0, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{middle}})'})),\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ],\r\n {params: {end: 1, middle: 1.1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiScaleInList = trigger('cuiScaleInList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'scale({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideIn = trigger('cuiSlideIn', [\r\n transition(\r\n '* => left',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n 'left => *',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n '* => right',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n 'right => *',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInLeft = trigger('cuiSlideInLeft', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInLeftList = trigger('cuiSlideInLeftList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInRight = trigger('cuiSlideInRight', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInRightList = trigger('cuiSlideInRightList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInTop = trigger('cuiSlideInTop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translate3d(0,{{start}},0)', pointerEvents: 'none'}),\r\n animate(TRANSITION, style({transform: 'translate3d(0,{{end}},0)'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translate3d(0,{{end}},0)'}),\r\n animate(TRANSITION, style({transform: 'translate3d(0,{{start}},0)'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInTopList = trigger('cuiSlideInTopList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateY({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInBottom = trigger('cuiSlideInBottom', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateY(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInBottomList = trigger('cuiSlideInBottomList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY(-{{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);","import {Injectable} from '@angular/core';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\n/**\r\n * Service for displaying hints/tooltips\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CuiTooltipService extends BehaviorSubject<readonly CuiPortalItem[]> {\r\n constructor() {\r\n super([]);\r\n }\r\n\r\n public add(directive: CuiPortalItem): void {\r\n this.next(this.value.concat(directive));\r\n }\r\n\r\n public remove(directive: CuiPortalItem): void {\r\n if (this.value.includes(directive)) {\r\n this.next(this.value.filter((hint) => hint !== directive));\r\n }\r\n }\r\n}\r\n","import {NgForOf} from '@angular/common';\r\nimport type {OnInit} from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n inject,\r\n} from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {CuiActiveZone} from '@cuby-ui/cdk';\r\nimport {cuiParentAnimation} from '../../animations';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\r\n\r\nimport {CuiTooltipService} from './tooltip.service';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'cui-tooltips',\r\n imports: [NgForOf, PolymorpheusTemplate, CuiActiveZone, PolymorpheusOutlet],\r\n templateUrl: './tooltips.template.html',\r\n styleUrls: ['./tooltips.style.scss'],\r\n // So that we do not force OnPush on custom hints\r\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n animations: [cuiParentAnimation],\r\n host: {\r\n 'aria-live': 'polite',\r\n },\r\n})\r\nexport class CuiTooltips implements OnInit {\r\n private readonly hints$ = inject(CuiTooltipService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n protected hints: readonly CuiPortalItem[] = [];\r\n\r\n public ngOnInit(): void {\r\n // Due to this view being parallel to app content, `markForCheck` from `async` pipe\r\n // can happen after view was checked, so calling `detectChanges` instead\r\n this.hints$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hints) => {\r\n this.hints = hints;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n}\r\n","<div\r\n *ngFor=\"let hint of hints\"\r\n role=\"tooltip\"\r\n @cuiParentAnimation\r\n [cuiActiveZoneParent]=\"hint.activeZone || null\"\r\n\r\n>\r\n <ng-container *polymorpheusOutlet=\"hint.component; context: {$implicit: hint}\" />\r\n</div>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CuiThemeService } from '../../services';\r\nimport { CUI_ROOT_SELECTOR } from './root.options';\r\n\r\n@Component({\r\n selector: CUI_ROOT_SELECTOR,\r\n templateUrl: './root.template.html',\r\n styleUrls: ['./root.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService],\r\n})\r\nexport class CuiRootComponent implements OnInit {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly theme$ = inject(CuiThemeService);\r\n private readonly destroy$ = inject(CuiDestroyService);\r\n\r\n public ngOnInit(): void {\r\n this.initThemeSubscription();\r\n }\r\n\r\n private initThemeSubscription(): void {\r\n this.theme$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(theme => this.document.documentElement.setAttribute('cuiTheme', theme));\r\n }\r\n}\r\n","<div class=\"c-content\">\r\n <ng-content />\r\n</div>\r\n<cui-dialogs />\r\n<cui-alerts />\r\n<cui-tooltips />\r\n","import type { OnInit } from '@angular/core';\r\nimport { HostBinding, HostListener, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ElementRef } from '@angular/core';\r\nimport type { CuiValueOf } from '@cuby-ui/cdk';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiDialogSize } from './dialog.interfaces';\r\nimport { CUI_DIALOG_CONTEXT } from './dialog.tokens';\r\n\r\n// TODO: сделать структурную директиву\r\nconst ContentType = {\r\n String: 'string',\r\n Template: 'template',\r\n Component: 'component'\r\n} as const;\r\n\r\ntype IContentType = CuiValueOf<typeof ContentType>;\r\n\r\n@Component({\r\n selector: 'cui-dialog',\r\n templateUrl: './dialog.template.html',\r\n styleUrls: ['./dialog.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDialogComponent implements OnInit {\r\n protected readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n protected readonly context = inject(CUI_DIALOG_CONTEXT);\r\n\r\n protected readonly LAST_OF_TYPE_SELECTOR = ':last-of-type';\r\n\r\n protected readonly ContentType = ContentType;\r\n\r\n protected contentType: IContentType = ContentType.Component;\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiDialogSize {\r\n return this.context.size;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initContentType();\r\n }\r\n\r\n protected get contentTemplateRef(): TemplateRef<unknown> {\r\n return this.context.content as TemplateRef<unknown>;\r\n }\r\n\r\n protected get componentType(): Type<unknown> {\r\n return this.context.content as Type<unknown>;\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n protected onEscape(): void {\r\n if (!this.context.dismissible) {\r\n return\r\n }\r\n\r\n if (!this.element.matches(this.LAST_OF_TYPE_SELECTOR)) {\r\n return;\r\n }\r\n\r\n this.context.completeWith();\r\n }\r\n\r\n private initContentType(): void {\r\n const content = this.context.content;\r\n\r\n switch (true) {\r\n case (typeof content === 'string'):\r\n this.contentType = ContentType.String;\r\n\r\n return;\r\n\r\n case (content instanceof TemplateRef):\r\n this.contentType = ContentType.Template;\r\n\r\n return;\r\n }\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"contentType\">\r\n <ng-container *ngSwitchCase=\"ContentType.String\">\r\n {{ context.content }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ContentType.Template\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: context\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ContentType.Component\">\r\n <div class=\"c-component-container\">\r\n <ng-container *ngComponentOutlet=\"componentType\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-dialog-actions',\r\n templateUrl: './dialog-actions.template.html',\r\n styleUrls: ['./dialog-actions.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogActionsComponent {\r\n}\r\n","<div class=\"c-divider\"></div>\r\n<div class=\"c-content\">\r\n <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\r\nimport { PolymorpheusContext } from '@taiga-ui/polymorpheus/classes/context';\r\n\r\n@Component({\r\n selector: 'header[cuiDialogHeader][heading]',\r\n templateUrl: './dialog-header.template.html',\r\n styleUrls: ['./dialog-header.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogHeaderComponent {\r\n @Input()\r\n public heading!: PolymorpheusContent;\r\n\r\n @Input()\r\n public headingContext?: PolymorpheusContext<any>['$implicit'];\r\n\r\n @Input()\r\n public subheading?: string;\r\n\r\n @Output()\r\n public readonly closed = new EventEmitter<MouseEvent>();\r\n\r\n protected onClose(event: MouseEvent): void {\r\n this.closed.emit(event);\r\n }\r\n}\r\n","<div class=\"c-heading\">\r\n <ng-container *polymorpheusOutlet=\"heading as heading; context: headingContext\">{{ heading }}</ng-container>\r\n</div>\r\n<button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n icon=\"cuiIconClearSm\"\r\n class=\"c-button\"\r\n (click)=\"onClose($event)\"\r\n></button>\r\n<span *ngIf=\"subheading\">{{ subheading }}</span>\r\n<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule } from '../button';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport { CuiDialogsComponent } from './dialogs.component';\r\nimport { CuiDialogActionsComponent } from './dialog-actions/dialog-actions.component';\r\nimport { CuiDialogHeaderComponent } from './dialog-header/dialog-header.component';\r\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n PolymorpheusOutlet,\r\n CuiLetDirective,\r\n CuiButtonModule\r\n ],\r\n declarations: [\r\n CuiDialogComponent,\r\n CuiDialogsComponent,\r\n CuiDialogActionsComponent,\r\n CuiDialogHeaderComponent\r\n ],\r\n exports: [\r\n CuiDialogComponent,\r\n CuiDialogsComponent,\r\n CuiDialogActionsComponent,\r\n CuiDialogHeaderComponent\r\n ]\r\n})\r\nexport class CuiDialogModule {\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_DIALOG_OPTIONS, CUI_DIALOGS } from './dialog.tokens';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n useFactory: () => new CuiDialogService(CUI_DIALOGS, CuiDialogComponent, inject(CUI_DIALOG_OPTIONS))\r\n})\r\nexport class CuiDialogService extends CuiPopoverService<CuiDialogOptions> {\r\n}\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {inject} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nexport const CUI_REDUCED_MOTION = cuiCreateTokenFromFactory(\r\n () =>\r\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\r\n .matches ?? false,\r\n);\r\n","import {inject} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nimport {CUI_REDUCED_MOTION} from './reduced-motion';\r\n\r\n/**\r\n * Speed of all Taiga UI animations. 1 equals 300ms.\r\n */\r\nexport const CUI_ANIMATIONS_SPEED = cuiCreateTokenFromFactory<number>(() =>\r\n inject(CUI_REDUCED_MOTION) ? 0 : 1,\r\n);\r\n","import type {Provider, Type} from '@angular/core';\r\nimport {inject} from '@angular/core';\r\nimport { CUI_WINDOW, cuiCreateTokenFromFactory, cuiProvide } from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor} from '../classes';\r\n\r\n/**\r\n * Viewport accessor\r\n */\r\nexport const CUI_VIEWPORT = cuiCreateTokenFromFactory<CuiRectAccessor>(() => {\r\n const win = inject(CUI_WINDOW);\r\n\r\n return {\r\n type: 'viewport',\r\n getClientRect() {\r\n const rect = {\r\n top: 0,\r\n left: 0,\r\n right: win.innerWidth,\r\n bottom: win.innerHeight,\r\n width: win.innerWidth,\r\n height: win.innerHeight,\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n return {\r\n ...rect,\r\n toJSON: () => JSON.stringify(rect),\r\n };\r\n },\r\n };\r\n});\r\n\r\nexport function cuiAsViewport(accessor: Type<CuiRectAccessor>): Provider {\r\n return cuiProvide(CUI_VIEWPORT, accessor);\r\n}\r\n","export function cuiRemoveSpaces(value: string): string {\r\n return value.replace(/\\s+/g, '');\r\n}\r\n","export function cuiReplace(value: string, search: string, replace: string): string {\r\n const regex = new RegExp(search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\r\n\r\n return value.replace(regex, replace);\r\n}\r\n","import {cuiGetElementObscures} from '@cuby-ui/cdk';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function cuiIsObscured(el: HTMLElement, exceptSelector = 'cui-hints'): boolean {\r\n return !!cuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\r\n}\r\n","export function cuiOverrideOptions<T>(\r\n override: Partial<T>,\r\n fallback: T,\r\n): (directive: T | null, options: T | null) => T {\r\n return (directive, options) => {\r\n const result: T = directive || {...(options || fallback)};\r\n\r\n Object.keys(override).forEach((key) => {\r\n // Update directive props with new defaults before inputs are processed\r\n (result as Record<string, unknown>)[key] = override[key as keyof T];\r\n });\r\n\r\n return result;\r\n };\r\n}\r\n","import type {AnimationOptions} from '@angular/animations';\r\n\r\nexport const CUI_ANIMATIONS_DEFAULT_DURATION = 300;\r\n\r\nexport function cuiToAnimationOptions(speed: number, easing?: string): AnimationOptions {\r\n return {\r\n value: '',\r\n params: {\r\n duration: cuiGetDuration(speed),\r\n easing,\r\n },\r\n } as unknown as AnimationOptions;\r\n}\r\n\r\nexport function cuiGetDuration(speed: number): number {\r\n return speed && CUI_ANIMATIONS_DEFAULT_DURATION / speed;\r\n}\r\n","import type { ValidationErrors } from '@angular/forms';\r\n\r\nconst LEADING_TRAILING_SPACES_REGEX = /^\\s|\\s$/;\r\nconst MULTIPLE_SPACES_REGEX = /\\s{2,}/;\r\n\r\nexport function hasExtraSpaces(value: string): ValidationErrors | null {\r\n const hasLeadingOrTrailingSpaces = LEADING_TRAILING_SPACES_REGEX.test(value);\r\n const hasMultipleSpaces = MULTIPLE_SPACES_REGEX.test(value);\r\n\r\n if (hasLeadingOrTrailingSpaces || hasMultipleSpaces) {\r\n return { extraSpaces: true };\r\n }\r\n\r\n return null;\r\n}\r\n","import type { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport type { Observable } from 'rxjs';\r\nimport { map, timer } from 'rxjs';\r\n\r\nimport { hasExtraSpaces } from './extra-spaces.options';\r\n\r\nexport function asyncExtraSpacesValidators(delay: number): AsyncValidatorFn {\r\n return ({ value }: AbstractControl): Observable<ValidationErrors | null> => {\r\n return timer(delay).pipe(map(() => hasExtraSpaces(value)));\r\n };\r\n}\r\n\r\nexport function syncExtraSpacesValidator(): ValidatorFn {\r\n return ({ errors, value }: AbstractControl): ValidationErrors | null => {\r\n if (!errors?.['extraSpaces']) {\r\n return null;\r\n }\r\n\r\n return hasExtraSpaces(value);\r\n };\r\n}\r\n","import type { AbstractControlOptions } from '@angular/forms';\r\nimport { Validators } from '@angular/forms';\r\nimport { asyncExtraSpacesValidators, syncExtraSpacesValidator } from './extra-spaces.validators';\r\n\r\nexport function cuiCreateDefaultValidators({ maxLength = 100, asyncDelay = 700 } = {}): AbstractControlOptions {\r\n // Need to offset because this delay must be before changing value\r\n const OFFSET = 1;\r\n\r\n const adjustedAsyncDelay = asyncDelay - OFFSET;\r\n\r\n return {\r\n validators: [Validators.required, Validators.maxLength(maxLength), syncExtraSpacesValidator()],\r\n asyncValidators: [asyncExtraSpacesValidators(adjustedAsyncDelay)]\r\n };\r\n}\r\n","import type {Type} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nimport {CuiTooltipComponent} from './tooltip.component';\r\n\r\n/**\r\n * A component to display a tooltip\r\n */\r\nexport const CUI_TOOLTIP_COMPONENT = cuiCreateTokenFromFactory<Type<unknown>>(\r\n () => CuiTooltipComponent,\r\n);\r\n","import {Directive} from '@angular/core';\r\nimport {CuiDriverDirective} from '../../classes';\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class CuiTooltipDriver extends CuiDriverDirective {\r\n public readonly type = 'hint';\r\n}\r\n","import type {FactoryProvider, OnChanges} from '@angular/core';\r\nimport {Directive, inject, Input, Optional, Self, SkipSelf} from '@angular/core';\r\nimport { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';\r\nimport {cuiOverrideOptions} from '../../utils';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {Subject} from 'rxjs';\r\n\r\nexport type CuiTooltipDirection =\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n | 'bottom'\r\n | 'left-bottom'\r\n | 'left-top'\r\n | 'left'\r\n | 'right-bottom'\r\n | 'right-top'\r\n | 'right'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'top';\r\n\r\nexport const CUI_TOOLTIP_DIRECTIONS: readonly CuiTooltipDirection[] = [\r\n 'top',\r\n 'top-left',\r\n 'top-right',\r\n 'bottom',\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'left-top',\r\n 'left',\r\n 'left-bottom',\r\n 'right-top',\r\n 'right',\r\n 'right-bottom',\r\n];\r\n\r\nexport interface CuiTooltipOptions {\r\n readonly appearance: string;\r\n readonly direction: CuiTooltipDirection | CuiTooltipDirection[];\r\n readonly hideDelay: number;\r\n readonly icon: string;\r\n readonly showDelay: number;\r\n}\r\n\r\n/** Default values for tooltip options */\r\nexport const CUI_TOOLTIP_DEFAULT_OPTIONS: CuiTooltipOptions = {\r\n direction: 'top',\r\n showDelay: 500,\r\n hideDelay: 200,\r\n appearance: '',\r\n /** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/\r\n icon: '@cui.circle-help',\r\n};\r\n\r\n/**\r\n * Default parameters for tooltip directive\r\n */\r\nexport const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);\r\n\r\nexport const cuiTooltipOptionsProvider: (\r\n options: Partial<CuiTooltipOptions>,\r\n) => FactoryProvider = (override: Partial<CuiTooltipOptions>) => ({\r\n provide: CUI_TOOLTIP_OPTIONS,\r\n deps: [\r\n [new Optional(), new Self(), CuiTooltipOptionsDirective],\r\n [new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS],\r\n ],\r\n useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS),\r\n});\r\n\r\n/**\r\n * @deprecated: drop in 5.0\r\n */\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipContent]',\r\n providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)],\r\n})\r\nexport class CuiTooltipOptionsDirective implements CuiTooltipOptions, OnChanges {\r\n private readonly options = inject(CUI_TOOLTIP_OPTIONS, {skipSelf: true});\r\n\r\n @Input('cuiTooltipContent')\r\n public content: PolymorpheusContent;\r\n\r\n @Input('cuiTooltipDirection')\r\n public direction = this.options.direction;\r\n\r\n @Input('cuiTooltipAppearance')\r\n public appearance = this.options.appearance;\r\n\r\n @Input('cuiTooltipShowDelay')\r\n public showDelay = this.options.showDelay;\r\n\r\n @Input('cuiTooltipHideDelay')\r\n public hideDelay = this.options.hideDelay;\r\n\r\n public icon = this.options.icon;\r\n\r\n public readonly change$ = new Subject<void>();\r\n\r\n public ngOnChanges(): void {\r\n this.change$.next();\r\n }\r\n}\r\n","import {Directive, inject, Input} from '@angular/core';\r\nimport {CuiHoveredService, CUI_IS_MOBILE, cuiInjectElement} from '@cuby-ui/cdk';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {cuiIsObscured} from '../../utils';\r\nimport {\r\n delay,\r\n filter,\r\n map,\r\n merge,\r\n of,\r\n repeat,\r\n Subject,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs';\r\n\r\nimport type {CuiTooltipOptions} from './tooltip-options.directive';\r\nimport {CUI_TOOLTIP_OPTIONS} from './tooltip-options.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n providers: [cuiAsDriver(CuiTooltipHover), CuiHoveredService],\r\n exportAs: 'cuiTooltipHover',\r\n})\r\nexport class CuiTooltipHover extends CuiDriver {\r\n private readonly isMobile = inject(CUI_IS_MOBILE);\r\n private readonly el = cuiInjectElement();\r\n private readonly hovered$ = inject(CuiHoveredService);\r\n private readonly options = inject(CUI_TOOLTIP_OPTIONS);\r\n private visible = false;\r\n private readonly toggle$ = new Subject<boolean>();\r\n private readonly stream$ = merge(\r\n this.toggle$.pipe(\r\n switchMap((visible) =>\r\n this.isMobile\r\n ? of(visible)\r\n : of(visible).pipe(delay(visible ? 0 : this.cuiTooltipHideDelay)),\r\n ),\r\n takeUntil(this.hovered$),\r\n repeat(),\r\n ),\r\n this.hovered$.pipe(\r\n switchMap((visible) =>\r\n this.isMobile\r\n ? of(visible)\r\n : of(visible).pipe(\r\n delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay),\r\n ),\r\n ),\r\n takeUntil(this.toggle$),\r\n repeat(),\r\n ),\r\n ).pipe(\r\n filter(() => this.enabled),\r\n map(\r\n (value) =>\r\n value &&\r\n (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el)),\r\n ),\r\n tap((visible) => {\r\n this.visible = visible;\r\n }),\r\n );\r\n\r\n private readonly parent = inject(CuiTooltipHover, {\r\n optional: true,\r\n skipSelf: true,\r\n });\r\n\r\n @Input()\r\n public cuiTooltipShowDelay: CuiTooltipOptions['showDelay'] = this.options.showDelay;\r\n\r\n @Input()\r\n public cuiTooltipHideDelay: CuiTooltipOptions['hideDelay'] = this.options.hideDelay;\r\n\r\n public readonly type = 'hint';\r\n\r\n public enabled = true;\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n\r\n public toggle(visible = !this.visible): void {\r\n this.toggle$.next(visible);\r\n this.parent?.toggle(visible);\r\n }\r\n}\r\n","import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';\r\nimport {\r\n cuiFallbackAccessor,\r\n CuiPositionAccessor,\r\n CuiRectAccessor,\r\n} from '../../classes';\r\nimport { CUI_VIEWPORT } from '../../tokens';\r\nimport type { CuiPoint } from '../../types';\r\n\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\nimport type { CuiTooltipDirection, CuiTooltipOptions } from './tooltip-options.directive';\r\nimport { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\r\n\r\nconst GAP = 8;\r\nconst ARROW_OFFSET = 24;\r\nconst TOP = 0;\r\nconst LEFT = 1;\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class CuiTooltipPosition extends CuiPositionAccessor {\r\n private readonly offset = inject(CUI_IS_MOBILE) ? 16 : 5;\r\n private readonly viewport = inject(CUI_VIEWPORT);\r\n private readonly accessor = cuiFallbackAccessor<CuiRectAccessor>('hint')(\r\n inject<any>(CuiRectAccessor),\r\n inject(CuiTooltipDirective),\r\n );\r\n\r\n private readonly points: Record<CuiTooltipDirection, [number, number]> =\r\n CUI_TOOLTIP_DIRECTIONS.reduce(\r\n (acc, direction) => ({ ...acc, [direction]: [0, 0] }),\r\n {} as Record<CuiTooltipDirection, [number, number]>,\r\n );\r\n\r\n @Input('cuiTooltipDirection')\r\n public direction: CuiTooltipOptions['direction'] = inject(CUI_TOOLTIP_OPTIONS).direction;\r\n\r\n @Output('cuiTooltipDirectionChange')\r\n public readonly directionChange = new EventEmitter<CuiTooltipDirection>();\r\n\r\n public readonly type = 'hint';\r\n\r\n @cuiPure\r\n public emitDirection(direction: CuiTooltipDirection): void {\r\n this.directionChange.emit(direction);\r\n }\r\n\r\n public getPosition(rect: DOMRect, el?: HTMLElement): CuiPoint {\r\n const width = el?.clientWidth ?? rect.width;\r\n const height = el?.clientHeight ?? rect.height;\r\n const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;\r\n const leftCenter = hostRect.left + hostRect.width / 2;\r\n const topCenter = hostRect.top + hostRect.height / 2;\r\n\r\n this.points['top-left'][TOP] = hostRect.top - height - this.offset;\r\n this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\r\n this.points.top[TOP] = this.points['top-left'][TOP];\r\n this.points.top[LEFT] = leftCenter - width / 2;\r\n this.points['top-right'][TOP] = this.points['top-left'][TOP];\r\n this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\r\n\r\n this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\r\n this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\r\n this.points.bottom[TOP] = this.points['bottom-left'][TOP];\r\n this.points.bottom[LEFT] = this.points.top[LEFT];\r\n this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\r\n this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\r\n\r\n this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\r\n this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\r\n this.points.left[TOP] = topCenter - height / 2;\r\n this.points.left[LEFT] = this.points['left-top'][LEFT];\r\n this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\r\n this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\r\n\r\n this.points['right-top'][TOP] = this.points['left-top'][TOP];\r\n this.points['right-top'][LEFT] = hostRect.right + this.offset;\r\n this.points.right[TOP] = this.points.left[TOP];\r\n this.points.right[LEFT] = this.points['right-top'][LEFT];\r\n this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\r\n this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\r\n\r\n const priorityDirections = Array.isArray(this.direction)\r\n ? this.direction\r\n : [this.direction];\r\n const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);\r\n\r\n const direction = sortedDirections.find((direction) =>\r\n this.checkPosition(this.points[direction], width, height),\r\n );\r\n\r\n this.emitDirection(direction || this.fallback);\r\n\r\n return this.points[direction || this.fallback];\r\n }\r\n\r\n private get fallback(): CuiTooltipDirection {\r\n return this.points.top[TOP] >\r\n this.viewport.getClientRect().bottom - this.points.bottom[TOP]\r\n ? 'top'\r\n : 'bottom';\r\n }\r\n\r\n private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\r\n const viewport = this.viewport.getClientRect();\r\n\r\n return (\r\n top > GAP &&\r\n left > GAP &&\r\n top + height < viewport.bottom - GAP &&\r\n left + width < viewport.right - GAP\r\n );\r\n }\r\n}\r\n","import type {OnDestroy} from '@angular/core';\r\nimport {Directive, inject, INJECTOR, Input, signal} from '@angular/core';\r\nimport {cuiInjectElement, CuiActiveZone} from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor, CuiVehicle } from '../../classes';\r\nimport {cuiAsRectAccessor, cuiAsVehicle } from '../../classes';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\r\n\r\nimport {CUI_TOOLTIP_COMPONENT} from './tooltip.providers';\r\nimport {CuiTooltipService} from './tooltip.service';\r\nimport {CuiTooltipDriver} from './tooltip-driver.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CUI_TOOLTIP_OPTIONS} from './tooltip-options.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip]:not(ng-container):not(ng-template)',\r\n providers: [\r\n cuiAsRectAccessor(CuiTooltipDirective),\r\n cuiAsVehicle(CuiTooltipDirective),\r\n {\r\n provide: PolymorpheusComponent,\r\n deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],\r\n useClass: PolymorpheusComponent,\r\n },\r\n ],\r\n hostDirectives: [\r\n CuiTooltipDriver,\r\n {\r\n directive: CuiTooltipHover,\r\n inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay'],\r\n },\r\n {\r\n directive: CuiTooltipPosition,\r\n inputs: ['cuiTooltipDirection'],\r\n outputs: ['cuiTooltipDirectionChange'],\r\n },\r\n ],\r\n})\r\nexport class CuiTooltipDirective<C>\r\n implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle\r\n{\r\n private readonly service = inject(CuiTooltipService);\r\n\r\n @Input('cuiTooltipContext')\r\n public context?: C;\r\n\r\n @Input('cuiTooltipAppearance')\r\n public appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;\r\n\r\n public content = signal<PolymorpheusContent<C>>(null);\r\n public component = inject(PolymorpheusComponent<unknown>);\r\n public readonly el = cuiInjectElement();\r\n public readonly activeZone? = inject(CuiActiveZone, {optional: true});\r\n public readonly type = 'hint';\r\n\r\n @Input()\r\n public set cuiTooltip(content: PolymorpheusContent<C>) {\r\n this.content.set(content);\r\n\r\n if (!content) {\r\n this.toggle(false);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.toggle(false);\r\n }\r\n\r\n public getClientRect(): DOMRect {\r\n return this.el.getBoundingClientRect();\r\n }\r\n\r\n public toggle(show: boolean): void {\r\n if (show && this.content()) {\r\n this.service.add(this);\r\n } else {\r\n this.service.remove(this);\r\n }\r\n }\r\n}\r\n","import {Directive} from '@angular/core';\r\nimport {EMPTY_CLIENT_RECT, cuiPointToClientRect} from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor} from '../../classes';\r\nimport {cuiAsDriver, cuiAsRectAccessor} from '../../classes';\r\n\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipPointer]',\r\n providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],\r\n host: {\r\n '(mousemove.silent)': 'onMove($event)',\r\n },\r\n})\r\nexport class CuiTooltipPointer extends CuiTooltipHover implements CuiRectAccessor {\r\n private currentRect = EMPTY_CLIENT_RECT;\r\n\r\n public getClientRect(): DOMRect {\r\n return this.currentRect;\r\n }\r\n\r\n protected onMove({clientX, clientY}: MouseEvent): void {\r\n this.currentRect = cuiPointToClientRect(clientX, clientY);\r\n }\r\n}\r\n","import type {WritableSignal} from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n inject,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport type {CuiContext} from '@cuby-ui/cdk';\r\nimport {cuiParentAnimation} from '../../animations';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {\r\n injectContext,\r\n PolymorpheusComponent,\r\n PolymorpheusOutlet,\r\n} from '@taiga-ui/polymorpheus';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [PolymorpheusOutlet],\r\n template: '<ng-container *polymorpheusOutlet=\"context.$implicit.content()\" />',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [cuiParentAnimation],\r\n host: {'[@cuiParentAnimation]': ''},\r\n})\r\nexport class CuiTooltipUnstyledComponent {\r\n protected readonly context =\r\n injectContext<\r\n CuiContext<CuiPortalItem & {content: WritableSignal<PolymorpheusContent>}>\r\n >();\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'ng-template[cuiTooltip]',\r\n})\r\nexport class CuiTooltipUnstyled<C> {\r\n constructor() {\r\n const hint = inject(CuiTooltipDirective<C>);\r\n\r\n hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);\r\n hint.content.set(inject(TemplateRef<C>));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {EMPTY_CLIENT_RECT,CuiHoveredService, CuiContext} from '@cuby-ui/cdk';\r\nimport {cuiFadeIn, cuiScaleIn} from '../../animations';\r\nimport {\r\n cuiPositionAccessorFor,\r\n CuiRectAccessor,\r\n cuiRectAccessorFor,\r\n} from '../../classes';\r\nimport {CuiPositionService, CuiVisualViewportService} from '../../services';\r\nimport {CUI_ANIMATIONS_SPEED, CUI_VIEWPORT} from '../../tokens';\r\nimport {cuiIsObscured, cuiToAnimationOptions} from '../../utils';\r\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\r\nimport {map, takeWhile} from 'rxjs';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CuiTooltipPointer} from './tooltip-pointer.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\nimport {CuiTooltipUnstyledComponent} from './tooltip-unstyled.component';\r\nimport { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';\r\n\r\nconst GAP = 8;\r\n\r\nexport const CUI_TOOLTIP_PROVIDERS = [\r\n CuiPositionService,\r\n CuiHoveredService,\r\n cuiPositionAccessorFor('hint', CuiTooltipPosition),\r\n cuiRectAccessorFor('hint', forwardRef(() => CuiTooltipDirective)),\r\n];\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'cui-tooltip',\r\n imports: [PolymorpheusOutlet],\r\n template: `\r\n <ng-content />\r\n <span\r\n *polymorpheusOutlet=\"content() as text; context: hint.context\"\r\n [innerHTML]=\"text\"\r\n ></span>\r\n `,\r\n styleUrls: ['./tooltip.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: CUI_TOOLTIP_PROVIDERS,\r\n animations: [cuiFadeIn, cuiScaleIn],\r\n host: {\r\n '[@cuiScaleIn]': 'isMobile ? options : desktop',\r\n '[@cuiFadeIn]': 'options',\r\n '[class._untouchable]': 'pointer',\r\n '[class._mobile]': 'isMobile',\r\n '[attr.data-appearance]': 'appearance',\r\n '[attr.cuiTheme]': 'appearance',\r\n '(document:click)': 'onClick($event.target)',\r\n },\r\n})\r\nexport class CuiTooltipComponent<C = any> {\r\n private readonly el = cuiInjectElement();\r\n private readonly hover = inject(CuiTooltipHover);\r\n private readonly vvs = inject(CuiVisualViewportService);\r\n private readonly viewport = inject(CUI_VIEWPORT);\r\n\r\n protected readonly desktop = {value: '', params: {end: 1, start: 1}};\r\n protected readonly options = cuiToAnimationOptions(\r\n inject(CUI_ANIMATIONS_SPEED),\r\n 'cubic-bezier(0.35, 1.3, 0.25, 1)',\r\n );\r\n\r\n protected readonly pointer = inject(CuiTooltipPointer, {optional: true});\r\n protected readonly accessor = inject(CuiRectAccessor);\r\n protected readonly hint = injectContext<CuiContext<CuiTooltipDirective<C>>>().$implicit;\r\n protected readonly isMobile = inject(CUI_IS_MOBILE);\r\n\r\n protected readonly content =\r\n this.hint.component.component === CuiTooltipUnstyledComponent\r\n ? signal('')\r\n : this.hint.content;\r\n\r\n protected readonly appearance =\r\n this.hint.appearance ||\r\n this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');\r\n\r\n constructor() {\r\n inject(CuiPositionService)\r\n .pipe(\r\n takeWhile(() => this.hint.el.isConnected),\r\n map((point) => this.vvs.correct(point)),\r\n takeUntilDestroyed(),\r\n )\r\n .subscribe({\r\n next: ([top, left]) => this.update(top, left),\r\n complete: () => this.hover.toggle(false),\r\n });\r\n\r\n inject(CuiHoveredService)\r\n .pipe(takeUntilDestroyed())\r\n .subscribe((hover) => this.hover.toggle(hover));\r\n }\r\n\r\n protected onClick(target: HTMLElement): void {\r\n if (\r\n (!target.closest('cui-hint') && !this.hint.el.contains(target)) ||\r\n cuiIsObscured(this.hint.el)\r\n ) {\r\n this.hover.toggle(false);\r\n }\r\n }\r\n\r\n @cuiPure\r\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\r\n this.el.style.top = top;\r\n this.el.style.left = left;\r\n this.el.style.setProperty('--top', `${beakTop}%`);\r\n this.el.style.setProperty('--left', `${beakLeft}%`);\r\n this.el.style.setProperty(\r\n '--rotate',\r\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\r\n );\r\n }\r\n\r\n private update(top: number, left: number): void {\r\n const {clientHeight, clientWidth} = this.el;\r\n const rect = this.accessor.getClientRect();\r\n const viewport = this.viewport.getClientRect();\r\n\r\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\r\n return;\r\n }\r\n\r\n const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);\r\n const [beakTop, beakLeft] = this.vvs.correct([\r\n rect.top + rect.height / 2 - top,\r\n rect.left + rect.width / 2 - safeLeft,\r\n ]);\r\n\r\n this.apply(\r\n cuiPx(Math.round(top)),\r\n cuiPx(Math.round(safeLeft)),\r\n Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\r\n Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100),\r\n );\r\n }\r\n}\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {Directive, inject, Input, NgZone} from '@angular/core';\r\nimport {\r\n cuiIfMap,\r\n cuiTypedFromEvent,\r\n cuiZonefreeScheduler,\r\n cuiZoneOptimized,\r\n cuiInjectElement,\r\n cuiIsPresent, cuiPure,\r\n cuiIsNativeFocused\r\n} from '@cuby-ui/cdk';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {\r\n BehaviorSubject,\r\n debounce,\r\n distinctUntilChanged,\r\n fromEvent,\r\n map,\r\n merge,\r\n of,\r\n skip,\r\n startWith,\r\n switchMap,\r\n timer,\r\n} from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipDescribe]',\r\n providers: [cuiAsDriver(CuiTooltipDescribe)],\r\n})\r\nexport class CuiTooltipDescribe extends CuiDriver {\r\n private readonly doc = inject(DOCUMENT);\r\n private readonly el = cuiInjectElement();\r\n private readonly zone = inject(NgZone);\r\n private readonly id$ = new BehaviorSubject('');\r\n private readonly stream$ = this.id$.pipe(\r\n distinctUntilChanged(),\r\n cuiIfMap(() => fromEvent(this.doc, 'keydown', {capture: true}), cuiIsPresent),\r\n switchMap(() =>\r\n this.focused\r\n ? of(false)\r\n : merge(\r\n cuiTypedFromEvent(this.doc, 'keyup'),\r\n cuiTypedFromEvent(this.element, 'blur'),\r\n ).pipe(map(() => this.focused)),\r\n ),\r\n debounce((visible) =>\r\n visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null),\r\n ),\r\n startWith(false),\r\n distinctUntilChanged(),\r\n skip(1),\r\n cuiZoneOptimized(),\r\n );\r\n\r\n public readonly type = 'hint';\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n\r\n @Input()\r\n public set cuiTooltipDescribe(id: string | null | undefined) {\r\n this.id$.next(id || '');\r\n }\r\n\r\n @cuiPure\r\n private get element(): HTMLElement {\r\n return this.doc.getElementById(this.id$.value || '') || this.el;\r\n }\r\n\r\n private get focused(): boolean {\r\n return cuiIsNativeFocused(this.element);\r\n }\r\n}\r\n","import {Directive, Input} from '@angular/core';\r\nimport {EMPTY_CLIENT_RECT} from '@cuby-ui/cdk';\r\nimport {cuiAsRectAccessor, CuiRectAccessor} from '../../classes';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipHost]',\r\n providers: [cuiAsRectAccessor(CuiTooltipHost)],\r\n})\r\nexport class CuiTooltipHost extends CuiRectAccessor {\r\n @Input()\r\n public cuiTooltipHost?: HTMLElement;\r\n\r\n public readonly type = 'hint';\r\n\r\n public getClientRect(): DOMRect {\r\n return this.cuiTooltipHost?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\r\n }\r\n}\r\n","import type {OnChanges} from '@angular/core';\r\nimport {Directive, inject, Input} from '@angular/core';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipManual]',\r\n providers: [cuiAsDriver(CuiTooltipManual)],\r\n})\r\nexport class CuiTooltipManual extends CuiDriver implements OnChanges {\r\n private readonly hover = inject(CuiTooltipHover);\r\n private readonly stream$ = new BehaviorSubject(false);\r\n\r\n @Input()\r\n public cuiTooltipManual = false;\r\n\r\n public readonly type = 'hint';\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n this.hover.enabled = false;\r\n }\r\n\r\n public ngOnChanges(): void {\r\n this.stream$.next(this.cuiTooltipManual);\r\n }\r\n}\r\n","import {Directive, inject} from '@angular/core';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipOverflow]',\r\n hostDirectives: [\r\n {\r\n directive: CuiTooltipDirective,\r\n inputs: ['cuiTooltipAppearance'],\r\n },\r\n ],\r\n host: {\r\n '(mouseenter)': 'onMouseEnter($event.currentTarget)',\r\n },\r\n})\r\nexport class CuiTooltipOverflow {\r\n private readonly hint = inject(CuiTooltipDirective);\r\n\r\n protected onMouseEnter({scrollWidth, clientWidth, textContent}: Element): void {\r\n this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';\r\n }\r\n}\r\n","import {CuiTooltipComponent} from './tooltip.component';\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\nimport {CuiTooltipDescribe} from './tooltip-describe.directive';\r\nimport {CuiTooltipDriver} from './tooltip-driver.directive';\r\nimport {CuiTooltipHost} from './tooltip-host.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CuiTooltipManual} from './tooltip-manual.directive';\r\nimport {CuiTooltipOptionsDirective} from './tooltip-options.directive';\r\nimport {CuiTooltipOverflow} from './tooltip-overflow.directive';\r\nimport {CuiTooltipPointer} from './tooltip-pointer.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\nimport {CuiTooltipUnstyled} from './tooltip-unstyled.component';\r\n\r\nexport const CuiTooltip = [\r\n CuiTooltipComponent,\r\n CuiTooltipDirective,\r\n CuiTooltipOptionsDirective,\r\n CuiTooltipUnstyled,\r\n CuiTooltipDriver,\r\n CuiTooltipPosition,\r\n CuiTooltipHover,\r\n CuiTooltipOverflow,\r\n CuiTooltipDescribe,\r\n CuiTooltipHost,\r\n CuiTooltipManual,\r\n CuiTooltipPointer,\r\n] as const;\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiRootComponent } from './root.component';\r\nimport { CuiDialogModule } from '../dialog';\r\nimport { CuiAlertModule } from '../alert';\r\nimport { CuiTooltips } from '../../directives/tooltip';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiDialogModule,\r\n CuiAlertModule,\r\n CuiTooltips\r\n ],\r\n declarations: [CuiRootComponent],\r\n exports: [CuiRootComponent]\r\n})\r\nexport class CuiRootModule {\r\n}\r\n","import type { OnInit, AfterViewInit, TemplateRef, OnDestroy } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewContainerRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CuiDestroyService, CuiClickOutsideDirective, CuiTargetDirective, CUI_WINDOW, cuiGetClosestFocusable } from '@cuby-ui/cdk';\r\nimport { fromEvent, take, takeUntil } from 'rxjs';\r\n\r\nimport type { CuiContextMenuItem } from '../../interfaces';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n selector: 'cui-context-menu[items][target]',\r\n templateUrl: './context-menu.component.html',\r\n styleUrls: ['./context-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService],\r\n hostDirectives: [\r\n CuiClickOutsideDirective,\r\n {\r\n directive: CuiTargetDirective,\r\n inputs: ['ccTarget: target']\r\n }\r\n ]\r\n})\r\nexport class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly documentElement = this.document.documentElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly cuiTargetDirective = inject(CuiTargetDirective, { self: true });\r\n\r\n protected readonly EXTRA_OFFSET_LEFT = 0;\r\n protected readonly EXTRA_OFFSET_TOP = 0;\r\n\r\n protected isVisible = false;\r\n protected node?: HTMLDivElement;\r\n\r\n @Input()\r\n public items!: CuiContextMenuItem[];\r\n\r\n @Input()\r\n public target!: HTMLElement;\r\n\r\n @ViewChild('list')\r\n protected readonly list!: TemplateRef<any>;\r\n\r\n @ViewChild('backdrop')\r\n protected readonly backdrop!: TemplateRef<any>;\r\n\r\n public ngOnInit(): void {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearViewContainerRef();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.initTargetElementListener();\r\n }\r\n\r\n protected onSelect(item: CuiContextMenuItem): void {\r\n this.close();\r\n\r\n item.command?.();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onClose(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n protected onStopClickPropagation(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected trackByFn(_: number, item: CuiContextMenuItem): string {\r\n return item.label;\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((target) => {\r\n if (this.target.contains(target)) {\r\n return;\r\n }\r\n\r\n this.close();\r\n })\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.cuiTargetDirective.clicked\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(this.targetEventListener.bind(this));\r\n }\r\n\r\n private initHidingSubscription(): void {\r\n this.initHidingFromWindowEvent('scroll');\r\n this.initHidingFromWindowEvent('resize');\r\n }\r\n\r\n private initHidingFromWindowEvent(eventName: keyof WindowEventMap): void {\r\n fromEvent(this.window, eventName)\r\n .pipe(take(1))\r\n .subscribe(() => this.close());\r\n }\r\n\r\n private targetEventListener(event: MouseEvent): void {\r\n event.stopPropagation();\r\n // TODO: нужен для перерисовки ngFor\r\n this.document.body.click();\r\n\r\n this.isVisible = !this.isVisible;\r\n\r\n this.clearViewContainerRef();\r\n\r\n if (!this.isVisible) {\r\n return;\r\n }\r\n\r\n this.renderList();\r\n this.changePosition(event.clientX, event.clientY);\r\n this.initHidingSubscription();\r\n };\r\n\r\n private close(): void {\r\n this.isVisible = false;\r\n\r\n this.clearViewContainerRef();\r\n }\r\n\r\n private renderList(): void {\r\n const root = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n const backdropViewRef = this.viewContainerRef.createEmbeddedView(this.backdrop);\r\n const listViewRef = this.viewContainerRef.createEmbeddedView(this.list);\r\n\r\n this.node = listViewRef.rootNodes[0];\r\n\r\n root.append(backdropViewRef.rootNodes[0], this.node!);\r\n }\r\n\r\n private changePosition(x: number, y: number): void {\r\n this.node!.style.visibility = 'hidden';\r\n\r\n setTimeout(() => {\r\n const { clientWidth, clientHeight } = this.documentElement;\r\n const width = this.node!.offsetWidth;\r\n const height = this.node!.offsetHeight;\r\n let left = x;\r\n let top = y;\r\n\r\n if (left + width > clientWidth) {\r\n left -= width;\r\n }\r\n\r\n if (top + height > clientHeight) {\r\n top -= height;\r\n }\r\n\r\n left = Math.max(left, this.EXTRA_OFFSET_LEFT);\r\n top = Math.max(top, this.EXTRA_OFFSET_TOP);\r\n\r\n this.node!.style.left = left + 'px';\r\n this.node!.style.top = top + 'px';\r\n this.node!.style.visibility = '';\r\n\r\n cuiGetClosestFocusable({ initial: this.node!, root: this.node! })?.focus();\r\n });\r\n }\r\n\r\n private clearViewContainerRef(): void {\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","<ng-template #backdrop>\r\n <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n\r\n<ng-template #list>\r\n <div class=\"c-container\">\r\n <ul class=\"c-ul\">\r\n <li\r\n *ngFor=\"let item of items; trackBy: trackByFn\"\r\n [style.color]=\"item.color\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"c-button\"\r\n (click)=\"onSelect(item)\"\r\n >\r\n <cui-svg\r\n *ngIf=\"item.icon\"\r\n [icon]=\"item.icon\"\r\n [color]=\"item.color\"\r\n ></cui-svg>\r\n <span>{{ item.label }}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiContextMenuComponent } from './context-menu.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiContextMenuComponent],\r\n exports: [CuiContextMenuComponent]\r\n})\r\nexport class CuiContextMenuModule {\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, signal, ViewContainerRef } 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\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.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.element?.remove();\r\n this.backdrop?.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 this.element = this.document.createElement(this.DROPDOWN_SELECTOR);\r\n this.backdrop = this.document.createElement('div');\r\n\r\n this.element.style.top = '0';\r\n this.element.style.position = 'absolute';\r\n this.backdrop.style.position = 'fixed';\r\n this.backdrop.style.inset = '0';\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\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 });\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 }: ChangePositionYParams): void {\r\n const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;\r\n\r\n if (shouldListOpenAbove) {\r\n this.element.style.top = `${this.window.scrollY + visibleTop - dropdownHeight - offset}px`;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = `${this.window.scrollY + 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","<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-form-field',\r\n templateUrl: './form-field.template.html',\r\n styleUrls: ['./form-field.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFormFieldComponent {\r\n}\r\n","<ng-content select=\"label[cuiLabel]\" />\r\n<ng-content />\r\n<div class=\"c-hint-container\">\r\n <ng-content select=\"cui-hint\" />\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n declarations: [CuiFormFieldComponent],\r\n exports: [CuiFormFieldComponent]\r\n})\r\nexport class CuiFormFieldModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiHintType } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-hint',\r\n templateUrl: './hint.template.html',\r\n styleUrls: ['./hint.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiHintComponent {\r\n @Input()\r\n @HostBinding('attr.data-hint-type')\r\n public hintType: CuiHintType = 'info';\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiHintComponent } from './hint.component';\r\n\r\n@NgModule({\r\n declarations: [CuiHintComponent],\r\n exports: [CuiHintComponent]\r\n})\r\nexport class CuiHintModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n selector: 'button[cuiIconButton][icon], a[cuiIconButton][icon]',\r\n templateUrl: './icon-button.template.html',\r\n styleUrls: ['./icon-button.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiIconButtonComponent {\r\n protected readonly ICON_WIDTH = 16;\r\n protected readonly ICON_HEIGHT = 16;\r\n protected readonly ICON_STROKE_WIDTH = 1.5;\r\n\r\n @Input()\r\n public icon!: CuiIcon | string;\r\n\r\n @Input()\r\n public color?: string;\r\n\r\n @Input()\r\n @HostBinding('style.--icon-hover-color')\r\n public hoverColor?: string;\r\n\r\n @HostBinding('class._with-hover-color')\r\n protected get isWithHoverColor(): boolean {\r\n return !!this.hoverColor;\r\n }\r\n}\r\n","<cui-svg\r\n [icon]=\"icon\"\r\n [width]=\"ICON_WIDTH\"\r\n [height]=\"ICON_HEIGHT\"\r\n [color]=\"color\"\r\n [strokeWidth]=\"ICON_STROKE_WIDTH\"\r\n class=\"c-icon\"\r\n></cui-svg>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiIconButtonComponent } from './icon-button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiIconButtonComponent],\r\n exports: [CuiIconButtonComponent]\r\n})\r\nexport class CuiIconButtonModule {\r\n}\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport class CuiTextFieldController {\r\n constructor(private readonly iconLeftDirective: CuiTextFieldIconLeftDirective,\r\n private readonly idDirective: CuiTextFieldIdDirective,\r\n private readonly isErrorDirective: CuiTextFieldIsErrorDirective,\r\n private readonly placeholderDirective: CuiTextFieldPlaceholderDirective,\r\n private readonly sizeDirective: CuiTextFieldSizeDirective) {\r\n }\r\n\r\n public get iconLeft(): CuiIcon | string | undefined {\r\n return this.iconLeftDirective.iconLeft;\r\n }\r\n\r\n public get id(): string | undefined {\r\n return this.idDirective.id;\r\n }\r\n\r\n public get isError(): boolean {\r\n return this.isErrorDirective.isError;\r\n }\r\n\r\n public get placeholder(): string | undefined {\r\n return this.placeholderDirective.placeholder;\r\n }\r\n\r\n public get size(): CuiSizeSm | CuiSizeMd {\r\n return this.sizeDirective.size;\r\n }\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport const CUI_TEXT_FIELD_ICON_LEFT = new InjectionToken<CuiTextFieldIconLeftDirective>('', {\r\n factory: () => new CuiTextFieldIconLeftDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldIconLeft]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_ICON_LEFT, CuiTextFieldIconLeftDirective)]\r\n})\r\nexport class CuiTextFieldIconLeftDirective {\r\n @Input('cuiTextFieldIconLeft')\r\n public iconLeft?: CuiIcon | string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_ID = new InjectionToken<CuiTextFieldIdDirective>('', {\r\n factory: () => new CuiTextFieldIdDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldId]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_ID, CuiTextFieldIdDirective)]\r\n})\r\nexport class CuiTextFieldIdDirective {\r\n @Input('cuiTextFieldId')\r\n public id?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_IS_ERROR = new InjectionToken<CuiTextFieldIsErrorDirective>('', {\r\n factory: () => new CuiTextFieldIsErrorDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldIsError]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_IS_ERROR, CuiTextFieldIsErrorDirective)]\r\n})\r\nexport class CuiTextFieldIsErrorDirective {\r\n @Input('cuiTextFieldIsError')\r\n public isError = false;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_PLACEHOLDER = new InjectionToken<CuiTextFieldPlaceholderDirective>('', {\r\n factory: () => new CuiTextFieldPlaceholderDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldPlaceholder]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_PLACEHOLDER, CuiTextFieldPlaceholderDirective)]\r\n})\r\nexport class CuiTextFieldPlaceholderDirective {\r\n @Input('cuiTextFieldPlaceholder')\r\n public placeholder?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport const CUI_TEXT_FIELD_SIZE = new InjectionToken<CuiTextFieldSizeDirective>('', {\r\n factory: () => new CuiTextFieldSizeDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldSize]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_SIZE, CuiTextFieldSizeDirective)]\r\n})\r\nexport class CuiTextFieldSizeDirective {\r\n @Input('cuiTextFieldSize')\r\n public size: CuiSizeSm | CuiSizeMd = 'sm';\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldSizeDirective\r\n ],\r\n exports: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldSizeDirective\r\n ]\r\n})\r\nexport class CuiTextFieldControllerModule {\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nimport { CuiTextFieldController } from './text-field.controller';\r\n\r\nimport { CUI_TEXT_FIELD_SIZE } from './text-field-size.directive';\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport { CUI_TEXT_FIELD_ID } from './text-field-id.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CUI_TEXT_FIELD_IS_ERROR } from './text-field-is-error.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CUI_TEXT_FIELD_PLACEHOLDER } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CUI_TEXT_FIELD_ICON_LEFT } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\n\r\nexport const CUI_TEXT_FIELD_CONTROLLER = new InjectionToken<CuiTextFieldController>('');\r\n\r\nexport const CUI_TEXT_FILED_CONTROLLER_PROVIDER: Provider = [\r\n {\r\n provide: CUI_TEXT_FIELD_CONTROLLER,\r\n useFactory: (...controllers: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldSizeDirective\r\n ]) => {\r\n return new CuiTextFieldController(...controllers);\r\n },\r\n deps: [\r\n CUI_TEXT_FIELD_ICON_LEFT,\r\n CUI_TEXT_FIELD_ID,\r\n CUI_TEXT_FIELD_IS_ERROR,\r\n CUI_TEXT_FIELD_PLACEHOLDER,\r\n CUI_TEXT_FIELD_SIZE\r\n ]\r\n }\r\n];\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';\r\nimport { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-number',\r\n templateUrl: './input-number.template.html',\r\n styleUrls: ['./input-number.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)\r\n ]\r\n})\r\nexport class CuiInputNumberComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected maskOptions = this.generateMask();\r\n protected _precision = 0;\r\n protected _min = Number.MIN_SAFE_INTEGER;\r\n protected _max = Number.MAX_SAFE_INTEGER;\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<CuiNullable<number>>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @Input()\r\n public set precision(value: number) {\r\n this._precision = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @Input()\r\n public set min(value: number) {\r\n this._min = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @Input()\r\n public set max(value: number) {\r\n this._max = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<number>): void {\r\n this.value = value?.toString();\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<CuiNullable<number>>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n this.changeModel((target as HTMLInputElement).value);\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private changeModel(value: string): void {\r\n const parsedValue = maskitoParseNumber(value);\r\n\r\n this.value = value;\r\n\r\n this.onChange(Number.isNaN(parsedValue) ? null : parsedValue);\r\n }\r\n\r\n private generateMask(): MaskitoOptions {\r\n return maskitoNumberOptionsGenerator({\r\n precision: this._precision,\r\n min: this._min,\r\n max: this._max\r\n });\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [maskito]=\"maskOptions\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputNumberComponent } from './input-number.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaskitoDirective,\r\n CuiSvgModule,\r\n ],\r\n declarations: [CuiInputNumberComponent],\r\n exports: [\r\n CuiInputNumberComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputNumberModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-content-wrapper, [cuiContentWrapper]',\r\n standalone: true,\r\n templateUrl: './content-wrapper.component.html',\r\n styleUrl: './content-wrapper.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiContentWrapperComponent {\r\n private readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-base-0)';\r\n private readonly DEFAULT_GAP = 8;\r\n\r\n public readonly backgroundColor = input(this.DEFAULT_BACKGROUND_COLOR);\r\n public readonly gap = input(this.DEFAULT_GAP);\r\n\r\n @HostBinding('style.background')\r\n protected get _backgroundColor(): string {\r\n return this.backgroundColor();\r\n }\r\n\r\n @HostBinding('style.gap.px')\r\n protected get _gap(): number {\r\n return this.gap();\r\n }\r\n}\r\n","<ng-content />\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input [cuiGhostInput]',\r\n standalone: true,\r\n template: '',\r\n styleUrl: './ghost-input.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-error]': 'isError()'\r\n }\r\n})\r\nexport class CuiGhostInputComponent {\r\n public isError = input(false, { transform: booleanAttribute });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n inject\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiInputType, CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-password',\r\n templateUrl: './input-password.template.html',\r\n styleUrls: ['./input-password.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)\r\n ]\r\n})\r\nexport class CuiInputPasswordComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected isPasswordHidden = true;\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n protected get isToggleButtonShown(): boolean {\r\n return !this.isDisabled;\r\n }\r\n\r\n protected get icon(): CuiIcon {\r\n return this.isPasswordHidden ? 'cuiIconEye' : 'cuiIconEyeOff';\r\n }\r\n\r\n protected get type(): CuiInputType {\r\n return this.isPasswordHidden ? 'password' : 'text';\r\n }\r\n\r\n protected get buttonTitle(): string {\r\n return this.isPasswordHidden ? 'Reveal password' : 'Hide password';\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n if (this.isDisabled) {\r\n this.isPasswordHidden = true;\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n const value = (target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n }\r\n\r\n protected onTogglePasswordVisibility(): void {\r\n this.isPasswordHidden = !this.isPasswordHidden;\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n [type]=\"type\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n<button\r\n *ngIf=\"isToggleButtonShown\"\r\n [title]=\"buttonTitle\"\r\n class=\"c-button\"\r\n (click)=\"onTogglePasswordVisibility()\"\r\n>\r\n <cui-svg\r\n [icon]=\"icon\"\r\n [width]=\"16\"\r\n [height]=\"16\"\r\n color=\"var(--cui-base-500)\"\r\n ></cui-svg>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiInputPasswordComponent } from './input-password.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputPasswordComponent],\r\n exports: [\r\n CuiInputPasswordComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputPasswordModule {\r\n}\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-text',\r\n templateUrl: './input-text.template.html',\r\n styleUrls: ['./input-text.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)\r\n ]\r\n})\r\nexport class CuiInputTextComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n protected get isClearButtonHidden(): boolean {\r\n return !(this.value && !this.isDisabled);\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n this.changeModel((target as HTMLInputElement).value);\r\n }\r\n\r\n protected onClear(): void {\r\n this.changeModel('');\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private changeModel(value: string): void {\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n<button\r\n type=\"button\"\r\n class=\"c-button\"\r\n [class.c-button_hidden]=\"isClearButtonHidden\"\r\n (click)=\"onClear()\"\r\n>\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"c-close-icon\"\r\n />\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiInputTextComponent } from './input-text.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputTextComponent],\r\n exports: [\r\n CuiInputTextComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputModule {\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { CuiTimeMode } from '@cuby-ui/cdk';\r\n\r\nexport interface CuiInputTimeOptions {\r\n readonly mode: CuiTimeMode;\r\n}\r\n\r\nexport const CUI_INPUT_TIME_DEFAULT_OPTIONS: CuiInputTimeOptions = {\r\n mode: 'HH:MM'\r\n};\r\n\r\nexport const CUI_INPUT_TIME_OPTIONS = new InjectionToken('', {\r\n factory: () => CUI_INPUT_TIME_DEFAULT_OPTIONS\r\n});","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoTimeMode } from '@maskito/kit';\r\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiTime } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_INPUT_TIME_OPTIONS, CuiInputTimeOptions } from './input-time.options';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n selector: 'cui-input-time',\r\n templateUrl: './input-time.template.html',\r\n styleUrls: ['./input-time.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)\r\n ]\r\n})\r\nexport class CuiInputTimeComponent implements CuiInputTimeOptions, ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n private readonly options = inject(CUI_INPUT_TIME_OPTIONS);\r\n\r\n protected _mode = this.options.mode\r\n protected maskOptions = this.generateMask(this._mode);\r\n protected defaultPlaceholder = this._mode.toLowerCase();\r\n protected value!: CuiNullable<CuiTime>;\r\n protected onChange!: CuiOnChange<CuiNullable<CuiTime>>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @Input()\r\n public set mode(value: CuiInputTimeOptions['mode']) {\r\n this._mode = value;\r\n this.maskOptions = this.generateMask(value);\r\n this.defaultPlaceholder = value.toLowerCase();\r\n }\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder ?? this.defaultPlaceholder;\r\n }\r\n\r\n public get computedValue(): string {\r\n return this.value ? this.value.toString(this._mode) : '';\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<CuiTime>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<CuiNullable<CuiTime>>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput(event: Event): void {\r\n const value = (event.target as HTMLInputElement).value;\r\n\r\n if (value.length !== this._mode.length) {\r\n this.onChange(null);\r\n\r\n return;\r\n }\r\n\r\n const time = CuiTime.fromString(value);\r\n\r\n this.onChange(time);\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private generateMask(mode: MaskitoTimeMode): MaskitoOptions {\r\n return maskitoTimeOptionsGenerator({ mode });\r\n }\r\n}\r\n","<cui-svg\r\n icon=\"cuiIconClock\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"computedValue\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [maskito]=\"maskOptions\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputTimeComponent } from './input-time.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaskitoDirective,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputTimeComponent],\r\n exports: [\r\n CuiInputTimeComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputTimeModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'label[cuiLabel]',\r\n templateUrl: './label.template.html',\r\n styleUrls: ['./label.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLabelComponent {\r\n @Input()\r\n public isRequired = false;\r\n}\r\n","<span class=\"c-wrapper\">\r\n <ng-content></ng-content>\r\n</span>\r\n<span\r\n *ngIf=\"isRequired\"\r\n class=\"c-star\"\r\n>\r\n *\r\n</span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiLabelComponent } from './label.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiLabelComponent],\r\n exports: [CuiLabelComponent]\r\n})\r\nexport class CuiLabelModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiShape, CuiSize } from './letter-box.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-letter-box',\r\n standalone: true,\r\n templateUrl: './letter-box.component.html',\r\n styleUrls: ['./letter-box.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLetterBoxComponent {\r\n protected readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-magenta-500)';\r\n\r\n @Input({ required: true })\r\n public letter!: string;\r\n\r\n @Input()\r\n public backgroundColor?: string;\r\n\r\n @Input()\r\n public size: CuiSize = 'sm';\r\n\r\n @Input()\r\n public shape: CuiShape = null;\r\n\r\n @HostBinding('style.background-color')\r\n protected get _backgroundColor(): string {\r\n return this.backgroundColor ?? this.DEFAULT_BACKGROUND_COLOR;\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get _size(): CuiSize {\r\n return this.size;\r\n }\r\n\r\n @HostBinding('attr.data-shape')\r\n protected get _shape(): CuiShape {\r\n return this.shape;\r\n }\r\n}\r\n","{{ letter }}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"radio\"][cuiRadio]',\r\n template: '',\r\n styleUrls: ['./radio.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRadioComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiRadioComponent } from './radio.component';\r\n\r\n@NgModule({\r\n declarations: [CuiRadioComponent],\r\n exports: [CuiRadioComponent]\r\n})\r\nexport class CuiRadioModule {\r\n}\r\n","import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n ElementRef,\r\n ViewChild,\r\n HostBinding,\r\n ViewContainerRef,\r\n HostListener\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport type { CuiOption } from '../../interfaces';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n selector: 'cui-select[options]',\r\n templateUrl: './select.template.html',\r\n styleUrls: ['./select.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),\r\n CuiDestroyService\r\n ],\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class CuiSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly document = inject(DOCUMENT);\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly destroy$ = inject(CuiDestroyService, {self: true});\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, {self: true});\r\n\r\n protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;\r\n\r\n protected isOpened = false;\r\n protected isOptionsListAbove = false;\r\n protected value!: CuiNullable<unknown>;\r\n protected onChange!: CuiOnChange<unknown>;\r\n protected onTouched!: CuiOnTouched;\r\n protected isDisabled!: boolean;\r\n protected selectedOption?: CuiOption;\r\n\r\n @Input()\r\n public options!: CuiOption[];\r\n\r\n @Input()\r\n public defaultOptionText?: string;\r\n\r\n @ViewChild('button')\r\n protected readonly button!: ElementRef<HTMLButtonElement>;\r\n\r\n @ViewChild('getOptionsListHeightContainer')\r\n protected readonly getOptionsListHeightContainer!: ElementRef<HTMLUListElement>;\r\n\r\n @ViewChild('backdrop')\r\n protected readonly backdrop!: TemplateRef<unknown>;\r\n\r\n @ViewChild('optionsWrapper')\r\n protected readonly optionsWrapper!: TemplateRef<unknown>;\r\n\r\n @HostBinding('style.--c-gap')\r\n protected gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n protected trackByFn(_: number, item: CuiOption): string {\r\n return item.label;\r\n }\r\n\r\n public writeValue(value: unknown): void {\r\n this.value = value;\r\n // TODO: Непонятно, зачем нужно в construction вторая часть выражения\r\n this.selectedOption = this.options.find(option => option.value === value) ?? value as CuiOption;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearViewContainerRef();\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onSelect(event: Event, option: CuiOption): void {\r\n event.stopPropagation();\r\n\r\n if (option.isDisabled) {\r\n return\r\n }\r\n\r\n this.value = option.value;\r\n this.selectedOption = option;\r\n\r\n this.onChange(this.value);\r\n this.onSwitch();\r\n this.onTouched();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onSwitch(): void {\r\n if (!this.options.length && !this.defaultOptionText) {\r\n return;\r\n }\r\n\r\n if (!this.isOpened) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.close();\r\n }\r\n\r\n protected onClose(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onWindowResize(): void {\r\n this.button.nativeElement.blur();\r\n this.close();\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n if (this.isOpened) {\r\n this.onTouched();\r\n }\r\n\r\n this.close();\r\n });\r\n }\r\n\r\n private open(): void {\r\n this.isOpened = true;\r\n\r\n const rootElement = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n const {\r\n top: elementRectTop,\r\n left: elementRectLeft,\r\n bottom: elementRectBottom\r\n } = this.element.getBoundingClientRect();\r\n const distanceToBottom = this.document.documentElement.clientHeight\r\n - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);\r\n const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);\r\n const node = embeddedViewRef.rootNodes[0];\r\n const nodeStyles = node.style;\r\n\r\n this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;\r\n\r\n embeddedViewRef.detectChanges();\r\n\r\n nodeStyles.width = this.element.offsetWidth + 'px';\r\n nodeStyles.left = window.scrollX + elementRectLeft + 'px';\r\n\r\n if (this.isOptionsListAbove) {\r\n nodeStyles.top = window.scrollY + elementRectTop\r\n - this.getOptionsListHeightContainer.nativeElement.offsetHeight\r\n - this.SPACE_BETWEEN_BUTTON_AND_OPTIONS\r\n + 'px';\r\n } else {\r\n nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';\r\n }\r\n\r\n rootElement.appendChild(this.viewContainerRef.createEmbeddedView(this.backdrop).rootNodes[0]);\r\n rootElement.appendChild(embeddedViewRef.rootNodes[0]);\r\n }\r\n\r\n private close(): void {\r\n this.isOpened = false;\r\n\r\n this.clearViewContainerRef();\r\n }\r\n\r\n private clearViewContainerRef(): void {\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","<button\r\n #button\r\n type=\"button\"\r\n [attr.id]=\"id\"\r\n [attr.data-size]=\"size\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-button\"\r\n [class.c-button_active]=\"isOpened\"\r\n [class.c-button_with-error]=\"isError\"\r\n (click)=\"onSwitch()\"\r\n>\r\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\r\n {{ selectedOption.label }}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <span class=\"c-placeholder\">{{ placeholder }}</span>\r\n </ng-template>\r\n <cui-svg\r\n icon=\"cuiIconChevronDown\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</button>\r\n<ng-template #backdrop>\r\n <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n<ng-template #optionsWrapper>\r\n <div\r\n cuiFocusTrap\r\n class=\"c-options__wrapper\"\r\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n </div>\r\n</ng-template>\r\n<div\r\n #getOptionsListHeightContainer\r\n class=\"c-get-options-list-height-container\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n</div>\r\n<ng-template #optionsList>\r\n <ul\r\n class=\"c-options\"\r\n [class.c-options_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngIf=\"options.length; else empty\">\r\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n [class.c-option-button_selected]=\"selectedOption === option\"\r\n [disabled]=\"option.isDisabled\"\r\n (click)=\"onSelect($event, option)\"\r\n >\r\n <span>{{ option.label }}</span>\r\n <cui-svg\r\n *ngIf=\"selectedOption === option\"\r\n icon=\"cuiIconCheckSm\"\r\n color=\"var(--cui-info)\"\r\n class=\"c-option-button__icon\"\r\n />\r\n </button>\r\n </li>\r\n </ng-container>\r\n <ng-template #empty>\r\n <li *ngIf=\"defaultOptionText\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n (click)=\"onClose()\"\r\n >\r\n {{ defaultOptionText }}\r\n </button>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSelectComponent } from './select.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule,\r\n CuiFocusTrapDirective\r\n ],\r\n declarations: [CuiSelectComponent],\r\n exports: [\r\n CuiSelectComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiSelectModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-empty-state, [cuiEmptyState]',\r\n standalone: true,\r\n templateUrl: './empty-state.component.html',\r\n styleUrl: './empty-state.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-title]': '!!this.title()'\r\n }\r\n})\r\nexport class CuiEmptyStateComponent {\r\n public readonly title = input<string>();\r\n public readonly subtitle = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n <p class=\"title\">{{ title }}</p>\r\n}\r\n@if (subtitle(); as subtitle) {\r\n <p class=\"subtitle\">{{ subtitle }}</p>\r\n}\r\n<ng-content />\r\n","export const IS_SIDEBAR_OPENED_STORAGE_KEY = 'is-sidebar-opened';\r\n\r\nexport interface CuiSidebarLink {\r\n readonly text: string;\r\n}","import { Injectable, signal } from '@angular/core';\r\n\r\nimport type { CuiDynamicComponent } from './render-dynamic-components.options';\r\n\r\n@Injectable()\r\nexport class CuiRenderDynamicComponentsService {\r\n private readonly dynamicComponentsSignal = signal<CuiDynamicComponent[]>([]);\r\n\r\n public readonly dynamicComponents = this.dynamicComponentsSignal.asReadonly();\r\n\r\n public open(dynamicComponent: CuiDynamicComponent): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => [...prevDynamicComponents, dynamicComponent]);\r\n }\r\n\r\n public closeLast(): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => prevDynamicComponents.slice(0, -1));\r\n }\r\n\r\n public closeAllExceptFirst(): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => {\r\n const firstDynamicComponent = prevDynamicComponents[0];\r\n\r\n return firstDynamicComponent ? [firstDynamicComponent] : [];\r\n });\r\n }\r\n\r\n public closeAll(): void {\r\n this.dynamicComponentsSignal.set([]);\r\n }\r\n}\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\n\r\nimport { CuiRenderDynamicComponentsService } from './render-dynamic-components.service';\r\n\r\n@Component({\r\n selector: 'cui-render-dynamic-components',\r\n imports: [NgComponentOutlet],\r\n standalone: true,\r\n templateUrl: './render-dynamic-components.component.html',\r\n styleUrl: './render-dynamic-components.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRenderDynamicComponentsComponent {\r\n private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n protected readonly dynamicComponents = this.renderDynamicComponentsService.dynamicComponents;\r\n}\r\n","@for (dynamicComponent of dynamicComponents(); let isLast = $last; track $index) {\r\n <div\r\n class=\"container\"\r\n [class.container_hidden]=\"!isLast\"\r\n >\r\n <ng-container *ngComponentOutlet=\"dynamicComponent.component; inputs: dynamicComponent.inputs\" />\r\n </div>\r\n}\r\n","import { inject, Injectable, signal } from '@angular/core';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\n\r\nimport { IS_SIDEBAR_OPENED_STORAGE_KEY } from './sidebar.options';\r\nimport { CuiRenderDynamicComponentsService } from '../render-dynamic-components';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiSidebarService extends CuiRenderDynamicComponentsService {\r\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n\r\n private readonly isOpenedSignal = signal(this.localStorage.getItem(IS_SIDEBAR_OPENED_STORAGE_KEY) === 'true');\r\n private readonly widthSignal = signal<number>(0);\r\n\r\n public readonly isOpened = this.isOpenedSignal.asReadonly();\r\n public readonly width = this.widthSignal.asReadonly();\r\n\r\n public switch(): void {\r\n this.isOpenedSignal.update((value) => !value);\r\n this.localStorage.setItem(IS_SIDEBAR_OPENED_STORAGE_KEY, this.isOpenedSignal().toString());\r\n }\r\n\r\n public setWidth(value: number): void {\r\n this.widthSignal.set(value);\r\n }\r\n}\r\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n selector: 'header[cuiSidebarHeader]',\r\n imports: [CuiSvgModule, NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-header.component.html',\r\n styleUrl: 'sidebar-header.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarHeaderComponent {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n protected readonly isOpened = this.sidebarService.isOpened;\r\n protected readonly buttonIcon = computed<CuiIcon>(() =>\r\n this.isOpened() ? 'cuiIconChevronsLeft' : 'cuiIconChevronsRight'\r\n );\r\n\r\n public readonly headerSlot = input.required<TemplateRef<unknown>>();\r\n\r\n protected onSwitch(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.document.body.click();\r\n this.sidebarService.switch();\r\n }\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"headerSlot()\" [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\" />\r\n<button type=\"button\" class=\"button\" [class.button_opened]=\"isOpened()\" (click)=\"onSwitch($event)\">\r\n <cui-svg [icon]=\"buttonIcon()\" color=\"var(--cui-base-500)\" />\r\n</button>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { CuiDimensionsObserverDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-container',\r\n standalone: true,\r\n templateUrl: 'sidebar-container.component.html',\r\n styleUrl: 'sidebar-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [\r\n {\r\n directive: CuiDimensionsObserverDirective,\r\n outputs: ['cuiResizeObserver']\r\n }\r\n ],\r\n host: {\r\n '(cuiResizeObserver)': 'onResize($event.width)',\r\n '[class._opened]': 'isOpened()'\r\n }\r\n})\r\nexport class CuiSidebarContainerComponent {\r\n private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n protected readonly isOpened = this.sidebarService.isOpened;\r\n\r\n protected onResize(width: number): void {\r\n this.sidebarService.setWidth(width);\r\n }\r\n}\r\n","<ng-content />\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiSidebarLink } from '../sidebar.options';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-navigation',\r\n imports: [NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation.component.html',\r\n styleUrl: 'sidebar-navigation.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationComponent {\r\n public readonly links = input.required<CuiSidebarLink[]>();\r\n public readonly slot = input.required<TemplateRef<unknown>>();\r\n}\r\n","<nav class=\"nav\">\r\n <ul class=\"list\">\r\n @for (link of links(); track link.text; let isLast = $last) {\r\n <ng-container [ngTemplateOutlet]=\"slot()\" [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\" />\r\n }\r\n </ul>\r\n</nav>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\n\r\n@Component({\r\n selector: '[cuiSidebarNavigationItem]',\r\n imports: [CuiSvgModule],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation-item.component.html',\r\n styleUrl: 'sidebar-navigation-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._active]': 'active()'\r\n }\r\n})\r\nexport class CuiSidebarNavigationItemComponent {\r\n public readonly text = input.required<string>();\r\n public readonly icon = input<CuiIcon>();\r\n public readonly active = input<boolean>();\r\n public readonly isOpen = input<boolean>();\r\n}\r\n","@if (icon(); as icon) {\r\n<cui-svg [icon]=\"icon\" color=\"var(--cui-base-500)\" />\r\n}\r\n@if (isOpen()) {\r\n{{ text() }}\r\n}","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-navigation-container',\r\n imports: [NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation-container.component.html',\r\n styleUrl: 'sidebar-navigation-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationContainerComponent {\r\n public readonly slot = input.required<TemplateRef<unknown>>();\r\n public readonly title = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n <h3 class=\"title\">{{ title }}</h3>\r\n}\r\n\r\n<ng-container [ngTemplateOutlet]=\"slot()\" />\r\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-card-wrapper, [cuiCardWrapper]',\r\n standalone: true,\r\n templateUrl: 'card-wrapper.component.html',\r\n styleUrl: 'card-wrapper.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-border]': 'withBorder()'\r\n }\r\n})\r\nexport class CuiCardWrapperComponent {\r\n public readonly withBorder = input(true);\r\n}\r\n","<ng-content />\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-layout',\r\n standalone: true,\r\n templateUrl: './layout.component.html',\r\n styleUrl: './layout.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[style.marginLeft.px]': 'sidebarWidth()'\r\n }\r\n})\r\nexport class CuiLayoutComponent {\r\n public readonly sidebarWidth = input.required<number>();\r\n}\r\n","<div class=\"content\">\r\n <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\nexport const CUI_TAB_ACTIVATE = 'cui-tab-activate';\r\n\r\n@Component({\r\n selector: 'button[cuiTab]',\r\n templateUrl: './tab.template.html',\r\n styleUrls: ['./tab.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiTabComponent {\r\n protected readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\r\n\r\n @HostListener('click')\r\n protected onClick(): void {\r\n this.element.dispatchEvent(new CustomEvent(CUI_TAB_ACTIVATE, { bubbles: true }));\r\n }\r\n}\r\n","<ng-content />\r\n","import type { AfterViewChecked } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { CUI_TAB_ACTIVATE } from './tab';\r\n\r\n@Component({\r\n selector: 'cui-tabs',\r\n templateUrl: './tabs.template.html',\r\n styleUrls: ['./tabs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiTabsComponent implements AfterViewChecked {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n private readonly activeElementClass = '_active';\r\n\r\n protected get tabs(): readonly HTMLElement[] {\r\n return Array.from(this.element.querySelectorAll<HTMLElement>('[cuiTab]'));\r\n }\r\n\r\n public get activeElement(): HTMLElement | null {\r\n return this.tabs[this.activeItemIndex] || null;\r\n }\r\n\r\n public ngAfterViewChecked(): void {\r\n this.changeActiveItem();\r\n }\r\n\r\n @Input()\r\n public activeItemIndex = 0;\r\n\r\n @Output()\r\n public readonly activeItemIndexChange = new EventEmitter<number>();\r\n\r\n @HostListener(CUI_TAB_ACTIVATE, ['$event'])\r\n protected onActivate(event: CustomEvent): void {\r\n event.stopPropagation();\r\n\r\n const index = this.tabs.findIndex((tab) => tab === event.target);\r\n\r\n if (index === this.activeItemIndex) {\r\n return;\r\n }\r\n\r\n this.activeItemIndexChange.emit(index);\r\n this.activeItemIndex = index;\r\n }\r\n\r\n private changeActiveItem(): void {\r\n this.tabs.forEach(nativeElement => {\r\n const active = nativeElement === this.activeElement;\r\n\r\n nativeElement.classList.toggle(this.activeElementClass, active);\r\n });\r\n }\r\n}\r\n","<ng-content select=\"[cuiTab]\" />\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTabsComponent } from './tabs.component';\r\nimport { CuiTabComponent } from './tab';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [CuiTabsComponent, CuiTabComponent],\r\n exports: [CuiTabsComponent, CuiTabComponent]\r\n})\r\nexport class CuiTabsModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { CuiAutoResizingDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n selector: 'textarea[cuiTextarea]',\r\n template: '',\r\n styleUrls: ['./textarea.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER],\r\n hostDirectives: [CuiAutoResizingDirective]\r\n})\r\nexport class CuiTextareaComponent {\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n @Input()\r\n @HostBinding('rows')\r\n public rows = 4;\r\n\r\n @Input()\r\n @HostBinding('class._no-borders-and-paddings')\r\n public noBordersAndPaddings = false;\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n declarations: [CuiTextareaComponent],\r\n exports: [CuiTextareaComponent]\r\n})\r\nexport class CuiTextareaModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"checkbox\"][cuiToggle]',\r\n template: '',\r\n styleUrls: ['./toggle.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiToggleComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiToggleComponent } from './toggle.component';\r\n\r\n@NgModule({\r\n declarations: [CuiToggleComponent],\r\n exports: [CuiToggleComponent]\r\n})\r\nexport class CuiToggleModule {\r\n}\r\n","import { Translation } from '@jsverse/transloco';\r\n\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\n\r\nexport const EDITOR_SELECTOR = '[data-editor]';\r\nexport const DEFAULT_PLACEHOLDER = \"Type text or '/' for commands...\";\r\nexport const DEFAULT_READONLY_PLACEHOLDER = \"No 'Description' was provided\";\r\nexport const DEFAULT_CONFIG: CuiEditorConfig = {\r\n tools: {},\r\n readOnly: false,\r\n autofocus: false\r\n};\r\n\r\nexport const CuiEditorTranslations: Record<string, Promise<Translation>> = {\r\n en: import('../i18n/en.json'),\r\n} as const;\r\n","import type { BlockToolData } from '@editorjs/editorjs';\r\nimport Header from '@editorjs/header';\r\n\r\nexport class CuiHeaderTool extends Header {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override validate(): boolean {\r\n return true;\r\n }\r\n\r\n public override render(): HTMLHeadingElement {\r\n return super.render();\r\n }\r\n\r\n public override save(block: HTMLHeadingElement): BlockToolData {\r\n return super.save(block);\r\n }\r\n}\r\n","import List from '@editorjs/list';\r\n\r\nexport class CuiListTool extends List {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLElement {\r\n return super.render() as HTMLElement;\r\n }\r\n}\r\n","import type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport type { CuiParent } from '../interfaces/parent';\r\n\r\nexport class CuiSelectionBase {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n private readonly SELECTED_TEXT_CLASS = '_selected';\r\n\r\n public TAG = 'B';\r\n public COMMAND = 'bold';\r\n\r\n protected readonly api!: API;\r\n protected button!: HTMLButtonElement;\r\n protected _state = false;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n this.addSelectionToDOM(range, startContainer, endContainer);\r\n }\r\n\r\n public unwrap(): void {\r\n document.execCommand(this.COMMAND);\r\n }\r\n\r\n public checkState(): boolean {\r\n this.state = document.queryCommandState(this.COMMAND);\r\n\r\n return this.state;\r\n }\r\n\r\n public surround(range: Range): void {\r\n if (this.state) {\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.wrap(range);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addSelectionToDOM(range: Range, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n this.addSelectionForOnlyChild(range);\r\n\r\n return;\r\n }\r\n\r\n this.addSelectionForChildren(startParent, endParent);\r\n }\r\n\r\n private addSelectionForOnlyChild(range: Range): void {\r\n const selectedText = range.extractContents();\r\n const selection = this.createElement();\r\n\r\n selection.appendChild(selectedText);\r\n range.insertNode(selection);\r\n }\r\n\r\n private addSelectionForChildren(startParent: Element, endParent: Element): void {\r\n const nodes = this.getSelectedNodesFromDOM(startParent, endParent);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.add(this.SELECTED_TEXT_CLASS));\r\n\r\n document.execCommand(this.COMMAND);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.remove(this.SELECTED_TEXT_CLASS));\r\n }\r\n\r\n private getSelectedNodesFromDOM(startParent: Element, endParent: Element): Element[] {\r\n const nodes = [startParent];\r\n let next = startParent.nextSibling;\r\n\r\n while (next && next !== endParent) {\r\n nodes.push(next as Element);\r\n\r\n next = next?.nextSibling || null;\r\n }\r\n\r\n nodes.push(endParent);\r\n\r\n return nodes;\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiBoldInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'bold';\r\n\r\n public static title = 'Bold';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n b: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--bold'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 10.0002V5.91683C7.5 5.8708 7.53731 5.8335 7.58333 5.8335H8.66667C9.58333 5.8335 11.6667 5.91683 11.6667 7.91683C11.6667 7.91683 11.6667 10.0002 9.16667 10.0002M7.5 10.0002V14.0002C7.5 14.0922 7.57462 14.1668 7.66667 14.1668H10.4167C11.6667 14.1668 12.5 13.3335 12.5 12.0835C12.5 9.754 9.16667 10.0002 9.16667 10.0002M7.5 10.0002H9.16667\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+B';\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiItalicInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'italic';\r\n\r\n public override readonly TAG = 'I';\r\n public static title = 'Italic';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n i: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--italic'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.118 8.3335C10.3532 10.6116 9.16797 14.1668 9.16797 14.1668\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n <path d=\"M11.8404 5.8335H11.832\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+I';\r\n }\r\n}\r\n","import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return ({ value }: AbstractControl): ValidationErrors | null => {\r\n try {\r\n new URL(value);\r\n\r\n return null;\r\n } catch {\r\n return { url: true };\r\n }\r\n };\r\n}\r\n","export const BlockConversionToCombined = {\r\n paragraph: 'combinedTextBlock'\r\n};\r\n\r\nexport const enum EventActions {\r\n add = 'block-added',\r\n update = 'block-changed',\r\n remove = 'block-removed'\r\n}\r\n","export function generateId(): string {\r\n return '_' + Math.random().toString(36).substring(2, 9);\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport type { Block, JTextCreateBlockRequestBody, JTextCreateBlocksRequestBody } from './jtext-api.options';\r\nimport { CuiRequestOptions } from '../interfaces';\r\n\r\n@Injectable()\r\nexport class CuiJTextApiService {\r\n private readonly httpClient = inject(HttpClient);\r\n\r\n private readonly GET_BLOCK_DEFAULT_SIZE = 40;\r\n private readonly JTEXT_URL = 'framer/jtext';\r\n private readonly BLOCK_URL = 'block';\r\n private readonly BLOCKS_URL = 'blocks';\r\n private readonly JTEXT_BLOCK_URL = this.JTEXT_URL + '/' + this.BLOCK_URL;\r\n private readonly JTEXT_BLOCKS_URL = this.JTEXT_URL + '/' + this.BLOCKS_URL;\r\n\r\n private options: CuiRequestOptions = {};\r\n\r\n public addOptions(options?: CuiRequestOptions): void {\r\n this.options = options ?? {};\r\n }\r\n\r\n public createBlock(body: JTextCreateBlockRequestBody): Observable<string> {\r\n return this.httpClient.post<string>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public updateBlock(body: Block): Observable<Block> {\r\n return this.httpClient.patch<Block>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public getBlocks(fragmentId: string, page = 0, sizeBlock = this.GET_BLOCK_DEFAULT_SIZE): Observable<Block> {\r\n return this.httpClient.get(`${this.JTEXT_URL}/${fragmentId}`, {\r\n params: { page, sizeBlock },\r\n headers: { 'Content-Type': 'application/x-ndjson' },\r\n observe: 'events',\r\n ...this.options\r\n }) as unknown as Observable<Block>;\r\n }\r\n\r\n public createBlocks(body: JTextCreateBlocksRequestBody): Observable<string[]> {\r\n return this.httpClient.post<string[]>(this.JTEXT_BLOCKS_URL, body, this.options);\r\n }\r\n\r\n public deleteBlock(containerId: string, blockId: string): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCK_URL}/${blockId}`, this.options);\r\n }\r\n\r\n public deleteBlocks(containerId: string, blocksIds: string[]): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCKS_URL}`, {\r\n params: { blocksIds },\r\n ...this.options\r\n });\r\n }\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\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 type { Block } from './jtext-api.options';\r\nimport { CuiJTextApiService } from './jtext-api.service';\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(CuiJTextApiService);\r\n\r\n public sortEventsByTypes(events: BlockMutationEvent[]): CuiEventActionData {\r\n const blocks: CuiEventActionData = {\r\n 'block-removed': [],\r\n 'block-added': [],\r\n 'block-changed': []\r\n };\r\n\r\n events.forEach((editorEvent) => {\r\n if (editorEvent.detail.target.name === COMBINED_TEXT_BLOCK_NAME) {\r\n return;\r\n }\r\n\r\n const eventType = editorEvent.type;\r\n\r\n if (eventType === EventActions.update) {\r\n const changedBlock = blocks[EventActions.add].find(\r\n (block) => block.detail.target.id === editorEvent.detail.target.id\r\n );\r\n\r\n if (changedBlock) {\r\n return;\r\n }\r\n }\r\n\r\n if (eventType === EventActions.remove) {\r\n const len = blocks[EventActions.add].length;\r\n\r\n blocks[EventActions.add] = blocks[EventActions.add].filter(\r\n (block) => block.detail.target.id !== editorEvent.detail.target.id\r\n );\r\n\r\n if (len > blocks[EventActions.add].length) {\r\n return;\r\n }\r\n }\r\n\r\n blocks[eventType as EventActions].push(editorEvent);\r\n });\r\n\r\n return blocks;\r\n }\r\n\r\n public collectAddedBlocksRequest(editorId: string, addedBlocks: CuiFullBlockData[]): Observable<string[]> {\r\n const addBlocksBody = {\r\n jtextContainerId: editorId,\r\n position: addedBlocks[0]?.index,\r\n block: addedBlocks.map((e) => e.block)\r\n };\r\n const addBlocks$ = addedBlocks.length ? this.jtextService.createBlocks(addBlocksBody) : of([]);\r\n\r\n return addBlocks$;\r\n }\r\n\r\n public collectUpdatedBlocksRequest(updatedBlocks: Block[], blockIdsMap: Map<string, string>): Observable<Block[]> {\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 Block[]);\r\n\r\n const updateBlocksArray = updatedBlocksWithId.map((block) => this.jtextService.updateBlock(block));\r\n const updateBlocks$ = updatedBlocksWithId.length ? forkJoin(updateBlocksArray) : of([]);\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n public collectRemovedBlocksRequest(\r\n editorId: string,\r\n removedBlocksIds: string[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<void> {\r\n const removedBlocks: string[] = removedBlocksIds.reduce((blockIds, blockId) => {\r\n const backendID = blockIdsMap.get(blockId) as string;\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 removeBlocks$ = removedBlocks.length ? this.jtextService.deleteBlocks(editorId, removedBlocks) : 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: Block[]) => 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(editorId: string, callback: (block: Block<CuiCombinedBlockToolData>, id: string) => void): void {\r\n const blockId = generateId();\r\n const emptyBlock: CuiCombinedPartBlock = {\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: '',\r\n parentId: blockId,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n const body = {\r\n position: 0,\r\n block: emptyBlock,\r\n jtextContainerId: editorId\r\n };\r\n\r\n this.jtextService\r\n .createBlock(body)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((id) => {\r\n emptyBlock.id = id;\r\n\r\n const block: Block<CuiCombinedBlockToolData> = {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: blockId,\r\n textBlocks: [emptyBlock]\r\n }\r\n };\r\n\r\n callback(block, id);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { Tool } from '../components/editor-tool-modal';\r\n\r\nimport { MarkerType } from './markers-service.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiMarkersService {\r\n protected roles: Tool[] = [];\r\n protected tools: Tool[] = [\r\n {\r\n id: '0',\r\n image: 'blob:https://www.figma.com/f985f4fc-abc6-4727-857e-80633836e2b2',\r\n title: 'Шуруповерт',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '1',\r\n image: 'blob:https://www.figma.com/92ad9b38-566c-4ff6-84ba-0b20b24fef39',\r\n title: 'Молоток',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '2',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '3',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '4',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '5',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '6',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '7',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '8',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n }\r\n ];\r\n\r\n public getMarkersByType(type: MarkerType): Tool[] {\r\n return type === MarkerType.role ? this.roles : this.tools;\r\n }\r\n\r\n public getMarkerObjectByType(type: MarkerType, id: string): Tool | undefined {\r\n const markersArray = this.getMarkersByType(type);\r\n\r\n return markersArray.find((marker) => marker.id === id);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\n\r\nimport type { Tool } from '../../../editor-tool-modal';\r\n\r\n@Component({\r\n selector: 'cc-select-option',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './select-option.component.html',\r\n styleUrls: ['./select-option.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SelectOptionComponent {\r\n @Input({ required: true })\r\n public tool!: Tool;\r\n}\r\n","<ng-container *ngIf=\"tool\">\r\n <img\r\n *ngIf=\"tool.image\"\r\n class=\"image\"\r\n [src]=\"tool.image\"\r\n alt=\"\"\r\n />\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n</ng-container>\r\n","import { DOCUMENT, NgFor, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n forwardRef,\r\n HostBinding,\r\n inject,\r\n Input,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';\r\n\r\nimport type { Tool } from '../editor-tool-modal/editor-tool-modal.options';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { MarkerType } from '../../services/markers-service.options';\r\nimport { CuiMarkersService } from '../../services/markers.service';\r\n\r\nimport { SelectOptionComponent } from './component/select-item/select-option.component';\r\n\r\n@Component({\r\n selector: 'cc-marker-select',\r\n imports: [\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SelectOptionComponent,\r\n NgIf,\r\n NgFor\r\n ],\r\n standalone: true,\r\n templateUrl: './marker-select.component.html',\r\n styleUrls: ['./marker-select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MarkerSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MarkerSelectComponent implements OnInit, OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly markersService = inject(CuiMarkersService);\r\n\r\n private SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n\r\n @Input()\r\n public target!: HTMLButtonElement;\r\n\r\n @Input()\r\n public set space(value: number) {\r\n this.SPACE_BETWEEN_TARGET_AND_LIST = value;\r\n }\r\n\r\n protected isVisible = signal(false);\r\n protected isHidden = signal(true);\r\n protected editor!: HTMLElement;\r\n protected value!: CuiNullable<Tool>;\r\n // TODO: set current type\r\n protected elements = this.markersService.getMarkersByType(MarkerType.tool);\r\n protected onChange!: CuiOnChange<unknown>;\r\n protected onTouched!: CuiOnTouched;\r\n protected readonly targetToggleEventListener = (): void => {\r\n this.isVisible.update((prev) => !prev);\r\n\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.calculateDropdownPosition();\r\n };\r\n\r\n @HostBinding('class._hidden')\r\n protected get hide(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n public writeValue(value: Tool): void {\r\n this.value = value;\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n protected onScroll(): void {\r\n this.isVisible.set(false);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initTargetElementListener();\r\n this.initClickOutsideSubscription();\r\n this.initOnCloseWhenEditorScroll();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEventListeners();\r\n }\r\n\r\n protected onToolClick(tool: Tool): void {\r\n this.value = tool;\r\n\r\n this.onChange(this.value);\r\n this.onTouched();\r\n\r\n // this.isVisible.set(false);\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n if (this.target.contains(target) || !this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n });\r\n }\r\n\r\n private initOnCloseWhenEditorScroll(): void {\r\n this.editor = this.element.closest(EDITOR_SELECTOR);\r\n\r\n this.editor?.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n private destroyEventListeners(): void {\r\n this.editor?.removeEventListener('scroll', this.onScroll.bind(this));\r\n this.target?.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.isHidden.set(true);\r\n\r\n setTimeout(() => {\r\n const target = this.target;\r\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n this.document.documentElement;\r\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);\r\n const distanceToRight = documentClientWidth - targetRectLeft;\r\n const isListRight = distanceToRight < this.element.offsetWidth;\r\n const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n this.isHidden.set(false);\r\n });\r\n }\r\n\r\n private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n if (isListRight) {\r\n this.element.style.right = 'auto';\r\n this.element.style.left = left;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.right = left - this.element.offsetWidth + width;\r\n this.element.style.left = 'auto';\r\n }\r\n\r\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (isListAbove) {\r\n this.element.style.top =\r\n bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n }\r\n}\r\n","<ng-container *ngIf=\"isVisible()\">\r\n <div\r\n #dropdown\r\n class=\"dropdown\"\r\n >\r\n <header class=\"header\">\r\n <cui-input-text\r\n class=\"header__input\"\r\n cuiTextFieldId=\"estimated\"\r\n cuiTextFieldPlaceholder=\"Search...\"\r\n />\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconFiltersLines\"\r\n ></button>\r\n </header>\r\n <div class=\"scrollable-content\">\r\n <cc-select-option\r\n *ngFor=\"let element of elements\"\r\n [class._selected]=\"element.id === value?.id\"\r\n (click)=\"onToolClick(element)\"\r\n [tool]=\"element\"\r\n />\r\n </div>\r\n </div>\r\n</ng-container>\r\n","export const MARKER_SELECT_SELECTOR = 'marker-select';\r\n","import { DOCUMENT, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n computed,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport {\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiSvgModule\r\n} from '../../../components';\r\n\r\nimport { urlValidator } from '../../utils/url.validator';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { CuiMarkersService } from '../../services';\r\nimport type { Tool } from '../editor-tool-modal';\r\nimport { MarkerSelectComponent } from '../marker-select';\r\n\r\nimport type { MarkerData, MarkerDataControl } from './marker-modal.interfaces';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n CuiButtonModule,\r\n CuiElementDirective,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiSvgModule,\r\n FormsModule,\r\n MarkerSelectComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n NgIf\r\n ],\r\n templateUrl: './marker-modal.component.html',\r\n styleUrls: ['./marker-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class MarkerModalComponent implements OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly markersService = inject(CuiMarkersService);\r\n\r\n protected readonly TITLE_MAX_LENGTH = 100;\r\n\r\n protected readonly formTitle = signal('');\r\n protected readonly isTitleEmpty = computed(() => !this.formTitle().length);\r\n protected readonly isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);\r\n protected readonly isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());\r\n protected readonly titleId = this.cuiIdService.generate();\r\n protected readonly dataId = this.cuiIdService.generate();\r\n\r\n protected dynamicDataControl!: MarkerDataControl;\r\n protected spaceBetweenTargetAndList = 5;\r\n protected startTitle = '';\r\n\r\n @Input()\r\n public set title(value: string) {\r\n this.startTitle = value;\r\n this.formTitle.set(value);\r\n }\r\n\r\n @Input()\r\n public set url(value: string) {\r\n this.dynamicDataControl = new FormControl(value, {\r\n nonNullable: true,\r\n validators: [Validators.required, urlValidator()]\r\n });\r\n }\r\n\r\n @Input()\r\n public set tool(value: Tool) {\r\n const tool = this.markersService.getMarkerObjectByType(value.type!, value.id);\r\n this.dynamicDataControl = new FormControl(tool, {\r\n nonNullable: true,\r\n validators: [Validators.required]\r\n });\r\n }\r\n\r\n @Input()\r\n public isGlobal = false;\r\n\r\n @Input()\r\n public isTool = false;\r\n\r\n @Input()\r\n public target!: HTMLButtonElement;\r\n\r\n @Input()\r\n public set space(value: number) {\r\n this.spaceBetweenTargetAndList = value;\r\n }\r\n\r\n @Output()\r\n public saveClicked = new EventEmitter<MarkerData>();\r\n\r\n @Output()\r\n public cancelClicked = new EventEmitter();\r\n\r\n protected isVisible = signal(false);\r\n protected isHidden = signal(true);\r\n protected editor!: HTMLElement;\r\n protected currentTool?: Tool;\r\n protected readonly targetToggleEventListener = (): void => {\r\n this.isVisible.update((prev) => !prev);\r\n\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.calculateDropdownPosition();\r\n };\r\n\r\n protected get isFormInvalid(): boolean {\r\n return this.dynamicDataControl.invalid || this.isTitleInvalid();\r\n }\r\n\r\n protected get isDynamicDataErrorShown(): boolean {\r\n return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;\r\n }\r\n\r\n @HostBinding('class._hidden')\r\n protected get hide(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n @HostBinding('class._fixed')\r\n protected get fixed(): boolean {\r\n return this.isGlobal;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initTargetElementListener();\r\n this.initClickOutsideSubscription();\r\n this.initOnCloseWhenEditorScroll();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEventListeners();\r\n }\r\n\r\n protected onTitleLabelClick(element: HTMLDivElement): void {\r\n const range = document.createRange();\r\n const selection = window.getSelection();\r\n\r\n range.selectNodeContents(element);\r\n range.collapse(false);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n\r\n protected onSave(): void {\r\n if (this.isFormInvalid) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });\r\n }\r\n\r\n protected onScroll(): void {\r\n this.isVisible.set(false);\r\n }\r\n\r\n protected onCancel(): void {\r\n this.isVisible.set(false);\r\n this.cancelClicked.emit();\r\n }\r\n\r\n protected onClearTitle(titleElement: HTMLElement): void {\r\n this.formTitle.set('');\r\n\r\n titleElement.textContent = '';\r\n titleElement.focus();\r\n }\r\n\r\n protected onTitleChange(event: KeyboardEvent): void {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLInputElement;\r\n const value = target.textContent!;\r\n\r\n this.formTitle.set(value);\r\n }\r\n\r\n protected async onTitlePaste(event: Event): Promise<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 = await window.navigator.clipboard.readText();\r\n const target = event.target as HTMLElement;\r\n\r\n this.document.execCommand('insertText', false, value);\r\n setTimeout(() => this.formTitle.set(target.textContent!));\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n });\r\n }\r\n\r\n private initOnCloseWhenEditorScroll(): void {\r\n this.editor = this.document.querySelector(EDITOR_SELECTOR) as HTMLElement;\r\n\r\n this.editor.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n private destroyEventListeners(): void {\r\n this.editor.removeEventListener('scroll', this.onScroll.bind(this));\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.isHidden.set(true);\r\n\r\n setTimeout(() => {\r\n const target = this.target;\r\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n this.document.documentElement;\r\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);\r\n const distanceToRight = documentClientWidth - targetRectLeft;\r\n const isListRight = distanceToRight < this.element.offsetWidth;\r\n const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n\r\n this.isHidden.set(false);\r\n });\r\n }\r\n\r\n private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n if (this.isGlobal) {\r\n this.changeGlobalPositionX(isListRight, width, left);\r\n\r\n return;\r\n }\r\n\r\n if (isListRight) {\r\n this.element.style.right = '0';\r\n this.element.style.left = 'auto';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.right = 'auto';\r\n this.element.style.left = '0';\r\n }\r\n\r\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (this.isGlobal) {\r\n this.changeGlobalPositionY(isListAbove, height, bottom);\r\n\r\n return;\r\n }\r\n\r\n if (isListAbove) {\r\n this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';\r\n this.element.style.top = 'auto';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';\r\n this.element.style.bottom = 'auto';\r\n }\r\n\r\n private changeGlobalPositionX(isListRight: boolean, width: number, left: number): void {\r\n if (isListRight) {\r\n this.element.style.left = left - this.element.offsetWidth + width + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.left = left + 'px';\r\n }\r\n\r\n private changeGlobalPositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (isListAbove) {\r\n this.element.style.top =\r\n bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"isVisible()\">\r\n <form\r\n autocomplete=\"off\"\r\n class=\"wrapper\"\r\n >\r\n <cui-form-field>\r\n <!-- eslint-disable-next-line -->\r\n <label\r\n [for]=\"titleId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n (click)=\"onTitleLabelClick(titleElement)\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <!-- TODO: если найдется варик сделать через форму -->\r\n <div\r\n class=\"title\"\r\n [class.title_invalid]=\"isTitleInvalid()\"\r\n >\r\n <div\r\n #titleElement\r\n class=\"title__text\"\r\n contenteditable\r\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"startTitle\"\r\n ></div>\r\n <button\r\n type=\"button\"\r\n class=\"title__clear\"\r\n (click)=\"onClearTitle(titleElement)\"\r\n >\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"title__icon\"\r\n />\r\n </button>\r\n </div>\r\n\r\n <cui-hint *ngIf=\"isTitleInvalid()\" hintType=\"error\">\r\n <ng-container *ngIf=\"isTitleEmpty()\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS') }}\r\n </ng-container>\r\n </cui-hint>\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label\r\n [for]=\"dataId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n >\r\n {{ isTool ? t('TOOL') : t('URL') }}\r\n </label>\r\n <ng-container *ngIf=\"dynamicDataControl\">\r\n <ng-container *ngIf=\"isTool; else input\">\r\n <div>\r\n <button\r\n #target=\"elementRef\"\r\n class=\"button tool-button\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n >\r\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\r\n </button>\r\n </div>\r\n <cc-marker-select\r\n [formControl]=\"dynamicDataControl\"\r\n [target]=\"target.nativeElement\"\r\n />\r\n </ng-container>\r\n <ng-template #input>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"dataId\"\r\n [formControl]=\"dynamicDataControl\"\r\n autocomplete=\"off\"\r\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\r\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\r\n />\r\n <cui-hint *ngIf=\"isDynamicDataErrorShown\" hintType=\"error\">\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\r\n {{ t('INVALID_URL') }}\r\n </ng-container>\r\n </cui-hint>\r\n </ng-template>\r\n </ng-container>\r\n </cui-form-field>\r\n <div class=\"buttons\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n cuiButton\r\n type=\"submit\"\r\n appearance=\"action\"\r\n size=\"sm\"\r\n [disabled]=\"isFormInvalid\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ t('SAVE') }}\r\n </button>\r\n </div>\r\n </form>\r\n </ng-container>\r\n</ng-container>\r\n\r\n","export const MARKER_MODAL_SELECTOR = 'cc-marker-modal';\r\n","import { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, MarkerModalComponent } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal';\r\n\r\nexport function createLinkModal(tooltip: HTMLElement, link: HTMLLinkElement): CuiAngularElement<MarkerModalComponent> {\r\n const linkModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n linkModal.url = link.href;\r\n linkModal.title = link.innerText;\r\n linkModal.target = button;\r\n linkModal.space = 15;\r\n\r\n linkModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n\r\n if (typeof customEvent.detail.data === 'string') {\r\n link.setAttribute('href', customEvent.detail.data);\r\n }\r\n\r\n link.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n linkModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return linkModal;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { skip } from 'rxjs';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { Tool } from './editor-tool-modal.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule],\r\n templateUrl: './editor-tool-modal.component.html',\r\n styleUrls: ['./editor-tool-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class EditorToolModalComponent {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n\r\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 10;\r\n\r\n public isFullscreen = signal(false);\r\n public isHidden = signal(true);\r\n\r\n @Input({ required: true })\r\n public tool!: Tool;\r\n\r\n @Input()\r\n public set marker(value: HTMLElement) {\r\n this.calculateModalPosition(value);\r\n }\r\n\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n @HostBinding('class._hidden')\r\n protected get _isHidden(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n @HostBinding('class._fullscreen')\r\n protected get _isFullscreen(): boolean {\r\n return this.isFullscreen();\r\n }\r\n\r\n constructor() {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n protected onCloseModal(): void {\r\n this.closed.emit();\r\n }\r\n\r\n protected onMaximizeModal(): void {\r\n this.isFullscreen.update((prev) => !prev);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(skip(1), takeUntilDestroyed())\r\n .subscribe(() => this.onCloseModal());\r\n }\r\n\r\n private calculateModalPosition(marker: HTMLElement): void {\r\n const { bottom, left } = marker.getBoundingClientRect();\r\n\r\n setTimeout(() => {\r\n const modalWidth = this.element.offsetWidth;\r\n\r\n this.element.style.top = bottom + this.window.scrollY + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n this.element.style.left = left + this.window.scrollX + marker.offsetWidth / 2 - modalWidth / 2 + 'px';\r\n\r\n this.isHidden.set(false);\r\n });\r\n }\r\n}\r\n","<div class=\"triangle\"></div>\r\n<div class=\"wrapper\">\r\n <header class=\"header\">\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n <div class=\"header__buttons\">\r\n <!-- TODO: replace icon with 'maximize' -->\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconArrowSortSm\"\r\n (click)=\"onMaximizeModal()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconX\"\r\n (click)=\"onCloseModal()\"\r\n ></button>\r\n </div>\r\n </header>\r\n <div class=\"content\">\r\n <div class=\"info\">\r\n <!-- TODO: будет картинка-->\r\n <p class=\"info__item\">\r\n <span class=\"info__field\">Тип:</span>\r\n <span class=\"info__title\">{{ tool.title }}</span>\r\n </p>\r\n <p class=\"info__item\">\r\n <span class=\"info__field\">Страна производитель:</span>\r\n <span class=\"info__title\">{{ tool.title }}</span>\r\n </p>\r\n </div>\r\n </div>\r\n</div>\r\n","import type { MarkerType } from '../../services/markers-service.options';\r\n\r\nexport interface Tool {\r\n id: string;\r\n image?: string;\r\n title?: string;\r\n type?: MarkerType;\r\n}\r\n\r\nexport const EDITOR_TOOL_MODAL_SELECTOR = 'cc-editor-tool-modal';\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgFor } from '@angular/common';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { EditorTooltipButton, EditorTooltipOption, EditorTooltipOptions } from './editor-tooltip.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule, NgFor],\r\n templateUrl: './editor-tooltip.component.html',\r\n styleUrls: ['./editor-tooltip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorTooltipComponent {\r\n // TODO: Удалить класс\r\n protected readonly BUTTONS_OPTIONS = new Map<EditorTooltipOption, EditorTooltipButton>([\r\n ['copy', { icon: 'cuiIconCopy', handler: (event): void => this.copyClicked.emit(event) }],\r\n ['edit', { icon: 'cuiIconEdit', handler: (event): void => this.editClicked.emit(event), class: 'edit' }],\r\n ['delete', { icon: 'cuiIconTrash', handler: (event): void => this.deleteClicked.emit(event) }]\r\n ]);\r\n\r\n protected _options: EditorTooltipOptions = ['edit', 'delete'];\r\n protected buttons = this.getButtonsFromOptions(this._options);\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n @Input()\r\n public set options(value: EditorTooltipOptions) {\r\n this._options = value;\r\n this.buttons = this.getButtonsFromOptions(value);\r\n }\r\n\r\n @Output()\r\n public readonly copyClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly editClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly deleteClicked = new EventEmitter<MouseEvent>();\r\n\r\n private getButtonsFromOptions(options: EditorTooltipOptions): EditorTooltipButton[] {\r\n return options.map((option) => this.BUTTONS_OPTIONS.get(option)!);\r\n }\r\n}\r\n","<h3 class=\"title\">{{ title }}</h3>\r\n<div class=\"buttons-container\">\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <div class=\"divider\"></div>\r\n <!-- TODO: class должен быть удалён в будущем-->\r\n <button\r\n class=\"button\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"button.icon\"\r\n [class]=\"button.class\"\r\n (click)=\"button.handler($event)\"\r\n ></button>\r\n </ng-container>\r\n</div>\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type EditorTooltipOption = 'copy' | 'edit' | 'delete';\r\n\r\nexport type EditorTooltipOptions = EditorTooltipOption[];\r\n\r\n// TODO: class должен быть удалён в будущем\r\nexport interface EditorTooltipButton {\r\n readonly icon: CuiIcon;\r\n readonly handler: (event: MouseEvent) => void;\r\n readonly class?: string;\r\n}\r\n\r\nexport const EDITOR_TOOLTIP_SELECTOR = 'cc-editor-tooltip';\r\n","import { 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 async onTitlePaste(event: Event): Promise<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 = await this.window.navigator.clipboard.readText();\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 type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n standalone: true\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\r\n private readonly BYTES_IN_KILOBYTE = 1024;\r\n\r\n public transform(bytes: number): string {\r\n if (isNaN(bytes) || bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n\r\n const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\r\n\r\n return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\r\n }\r\n}\r\n","import { NgIf, UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FileSizePipe, FormsModule, UpperCasePipe, NgIf, TranslocoDirective],\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 protected readonly Extensions = {\r\n doc: '#1483E9',\r\n docx: '#1483E9',\r\n odt: '#1483E9',\r\n pdf: '#DB2F2F',\r\n rtf: '#744FDC',\r\n tex: '#5a5a5b',\r\n txt: '#5a5a5b',\r\n pptx: '#E35200',\r\n ppt: '#E35200',\r\n mp3: '#eab456',\r\n mp4: '#f676a6',\r\n xls: '#11AE3D',\r\n html: '#2988f0',\r\n htm: '#2988f0',\r\n png: '#AA2284',\r\n jpg: '#D13359',\r\n jpeg: '#D13359',\r\n gif: '#f6af76',\r\n zip: '#4f566f',\r\n rar: '#4f566f',\r\n exe: '#e26f6f',\r\n svg: '#bf5252',\r\n key: '#00B2FF',\r\n sketch: '#FFC700',\r\n ai: '#FB601D',\r\n psd: '#388ae5',\r\n dmg: '#e26f6f',\r\n json: '#2988f0',\r\n csv: '#11AE3D'\r\n };\r\n\r\n @Input({ required: true })\r\n public file?: CuiFileData;\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n protected get color(): string {\r\n return this.Extensions[this.file?.extension as keyof typeof this.Extensions];\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.file && !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.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 *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\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 *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\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 {{ 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\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}\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 {{ 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\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 ></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 {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\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\r\n\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","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","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\n\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', () => {\r\n window?.navigator.clipboard.writeText(linkUrl);\r\n });\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 type { CuiFileResponseData } 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: CuiFileResponseData, 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())\r\n .then((response) => this.onUpload(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({ success: 1, file: { url } });\r\n }\r\n}\r\n","import type { Blocks } from '@editorjs/editorjs/types/api';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nexport function recalculateIndexes(blocksApi: Blocks): void {\r\n if (!blocksApi) {\r\n return;\r\n }\r\n\r\n const blocks = blocksApi.getBlocksCount();\r\n let index = 0;\r\n\r\n for (let i = 0; i < blocks; i++) {\r\n const block = blocksApi.getBlockByIndex(i);\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n const blockElement = block?.holder;\r\n const subblocks = blockElement.querySelectorAll('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n blockElement.setAttribute('data-index', String(index));\r\n\r\n if (!subblocks.length) {\r\n index++;\r\n\r\n continue;\r\n }\r\n\r\n subblocks.forEach((subblock) => {\r\n const subBlockIndex = subblock.getAttribute('data-index');\r\n const indexAsNumber = subBlockIndex ? Number(subBlockIndex) : null;\r\n\r\n if (indexAsNumber !== null && indexAsNumber === index) {\r\n index++;\r\n\r\n return;\r\n }\r\n\r\n subblock.setAttribute('data-index', String(index));\r\n index++;\r\n });\r\n }\r\n}\r\n","import { SPLIT_LENGTH } from '../constants';\r\n\r\ninterface TagInfo {\r\n tag: string;\r\n tagName: string;\r\n newIndex: number;\r\n}\r\n\r\nconst unsplittableTags: { [key: string]: boolean } = { mark: true, a: true };\r\nconst PART_LENGTH_MEASUREMENT_ERROR = 20;\r\nconst BR_TAG = '<br>';\r\n\r\nexport function splitHTML(input: string, maxLength: number = SPLIT_LENGTH): string[] {\r\n const parts: string[] = [];\r\n const tagNames: string[] = [];\r\n const tags: string[] = [];\r\n let currentPart = '';\r\n let index = 0;\r\n // remove specsymbols\r\n input = input.replaceAll(' ', ' ');\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 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, CuiFileResponseData, CuiTune, CuiAngularElement } 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<CuiImageToolData, Partial<CuiImageToolConfig>>;\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(EDITOR_IMAGE_TOOL_SELECTOR) 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: CuiFileResponseData): 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, EditorVideoToolComponent, CuiVideoToolData } from '../components/editor-video-tool';\r\nimport { EDITOR_VIDEO_TOOL_SELECTOR } from '../components/editor-video-tool/editor-video-tool.options';\r\nimport type { CuiFileData, CuiFileResponseData } 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<CuiVideoToolData, CuiVideoToolConfig>;\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(EDITOR_VIDEO_TOOL_SELECTOR) 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: CuiFileResponseData): 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, CuiFileResponseData } 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 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 private attachesTool!: CuiAngularElement<EditorAttachesToolComponent>;\r\n private selectedFile: CuiNullable<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.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<CuiAttachesToolData, CuiAttachesToolConfig>;\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 ?? '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 };\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 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 appendCallback(): void {\r\n this.onSelectFile();\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.onSelectFile);\r\n this.attachesTool.addEventListener('captionChanged', this.changeCaption.bind(this));\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.attachesTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.attachesTool.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.title = value;\r\n\r\n this.blockApi?.dispatchChange();\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: CuiFileResponseData): 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 { CuiAngularElement } from 'projects/core/editor/interfaces/angular-element';\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\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiLinkMarker extends CuiMarkerTool {\r\n protected override readonly TAG = 'A';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n a: {\r\n href: true,\r\n class: true,\r\n target: true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg width=\"20\" height=\"15\" viewBox=\"-3 -3 24 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M18.2813 1.22405C17.9329 0.874451 17.5189 0.597062 17.0631 0.407792C16.6073 0.218522 16.1186 0.121094 15.625 0.121094C15.1315 0.121094 14.6428 0.218522 14.187 0.407792C13.7312 0.597062 13.3172 0.874451 12.9688 1.22405L13.8563 2.11155C14.089 1.87886 14.3652 1.69429 14.6692 1.56836C14.9733 1.44243 15.2991 1.37762 15.6282 1.37762C15.9572 1.37762 16.2831 1.44243 16.5871 1.56836C16.8911 1.69429 17.1674 1.87886 17.4 2.11155C17.6327 2.34424 17.8173 2.62047 17.9432 2.92449C18.0692 3.22851 18.134 3.55436 18.134 3.88343C18.134 4.21249 18.0692 4.53834 17.9432 4.84236C17.8173 5.14638 17.6327 5.42261 17.4 5.6553L12.4 10.6553C11.9309 11.1252 11.2944 11.3896 10.6304 11.3901C9.96638 11.3907 9.32935 11.1275 8.85942 10.6584C8.38949 10.1893 8.12515 9.55275 8.12457 8.88876C8.12398 8.22476 8.38719 7.58773 8.85629 7.1178L9.73754 6.2303L8.85629 5.3428L7.96879 6.2303C7.61919 6.57869 7.3418 6.99266 7.15253 7.44848C6.96326 7.9043 6.86583 8.393 6.86583 8.88655C6.86583 9.3801 6.96326 9.8688 7.15253 10.3246C7.3418 10.7804 7.61919 11.1944 7.96879 11.5428C8.67597 12.2409 9.63134 12.6298 10.625 12.624C11.1205 12.6261 11.6114 12.5299 12.0695 12.3411C12.5276 12.1523 12.9437 11.8746 13.2938 11.524L18.2938 6.52405C18.9944 5.81927 19.3866 4.86522 19.3842 3.87146C19.3819 2.87771 18.9852 1.92552 18.2813 1.22405Z\" fill=\"#595E6A\"/>\r\n <path d=\"M2.61879 12.5115C2.38541 12.2793 2.20022 12.0031 2.07386 11.6991C1.94749 11.395 1.88244 11.069 1.88244 10.7397C1.88244 10.4104 1.94749 10.0844 2.07386 9.78028C2.20022 9.47621 2.38541 9.2001 2.61879 8.9678L7.61879 3.9678C7.85109 3.73442 8.1272 3.54923 8.43127 3.42287C8.73534 3.2965 9.06138 3.23145 9.39067 3.23145C9.71995 3.23145 10.046 3.2965 10.3501 3.42287C10.6541 3.54923 10.9302 3.73442 11.1625 3.9678C11.3944 4.20193 11.577 4.48022 11.6994 4.78619C11.8218 5.09215 11.8815 5.41958 11.875 5.74905C11.8769 6.07955 11.8133 6.40715 11.6878 6.7129C11.5623 7.01865 11.3774 7.29647 11.1438 7.5303L9.81879 8.87405L10.7063 9.76155L12.0313 8.43655C12.7366 7.73124 13.1328 6.77463 13.1328 5.77718C13.1328 4.77972 12.7366 3.82311 12.0313 3.1178C11.326 2.41249 10.3694 2.01625 9.37192 2.01625C8.37446 2.01625 7.41785 2.41249 6.71254 3.1178L1.71254 8.1178C1.362 8.4663 1.08382 8.88066 0.893994 9.33706C0.704168 9.79346 0.606445 10.2829 0.606445 10.7772C0.606445 11.2715 0.704168 11.7609 0.893994 12.2173C1.08382 12.6737 1.362 13.088 1.71254 13.4365C2.42431 14.1293 3.38185 14.5115 4.37504 14.499C5.37698 14.5 6.33862 14.1046 7.05004 13.399L6.16254 12.5115C5.93025 12.7449 5.65413 12.9301 5.35006 13.0565C5.04599 13.1829 4.71995 13.2479 4.39067 13.2479C4.06138 13.2479 3.73534 13.1829 3.43127 13.0565C3.1272 12.9301 2.85109 12.7449 2.61879 12.5115Z\" fill=\"#595E6A\"/>\r\n </svg>\r\n `;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const linkModal = this.createLinkModal();\r\n\r\n this.dropdown.append(linkModal);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public wrapLink(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n const url = markerData.data?.toString();\r\n const link = this.createElement(url, markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.addMarkerToDOM(range, link, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(link);\r\n }\r\n\r\n public override unwrap(): void {\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n\r\n if (!mark) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(mark);\r\n }\r\n\r\n public override createElement(url = '', text = ''): HTMLLinkElement {\r\n const link = super.createElement(text) as HTMLLinkElement;\r\n\r\n link.href = url;\r\n link.contentEditable = 'false';\r\n link.target = '_blank';\r\n\r\n return link;\r\n }\r\n\r\n public checkState(): void {\r\n const link = this.api.selection.findParentTag(this.TAG);\r\n\r\n this.state = !!link;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.url = '';\r\n this.markerModal.target = this.button;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapLink(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent, MarkerData } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiCustomMarkerTool extends CuiMarkerTool {\r\n protected id!: string;\r\n protected type!: string;\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n mark: {\r\n class: true,\r\n 'data-id': true,\r\n 'data-type': true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public wrapTool(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n if (markerData.data && typeof markerData.data !== 'string') {\r\n this.id = markerData.data.id!;\r\n this.type = markerData.data.type!;\r\n }\r\n\r\n const mark = this.createElement(markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(mark);\r\n }\r\n\r\n private onToolButtonClick(event: MouseEvent): void {\r\n const range = window.getSelection()?.getRangeAt(0);\r\n\r\n if (range) {\r\n return;\r\n }\r\n\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.onclick = this.onToolButtonClick.bind(this);\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const markerSelect = this.createLinkModal();\r\n\r\n this.dropdown.append(markerSelect);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public override createElement(text = ''): HTMLElement {\r\n const element = super.createElement(text);\r\n\r\n element.contentEditable = 'false';\r\n element.classList.add(this.CLASS);\r\n element.setAttribute('data-id', this.id);\r\n element.setAttribute('data-type', this.type);\r\n\r\n return element;\r\n }\r\n\r\n public checkState(select: Selection): void {\r\n const range = select.getRangeAt(0);\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n const isCorrectTool = mark?.classList.contains(this.CLASS);\r\n\r\n if (!mark || !isCorrectTool) {\r\n this.state = false;\r\n\r\n return;\r\n }\r\n\r\n const startContainer = range.startContainer;\r\n const endContainer = range.endContainer;\r\n\r\n const isStartMarker = mark.contains(startContainer);\r\n const isEndMarker = mark.contains(endContainer);\r\n\r\n this.state = isStartMarker && isEndMarker && isStartMarker === isEndMarker;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.tool = { id: '', title: '', type: undefined };\r\n this.markerModal.target = this.button;\r\n this.markerModal.isTool = true;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapTool(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiRoleMarker extends CuiCustomMarkerTool {\r\n protected override readonly CLASS = 'role-marker';\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"-3 -3 24 24\" fill=\"none\">\r\n <path d=\"M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiToolMarker extends CuiCustomMarkerTool {\r\n protected override readonly CLASS = 'tool-marker';\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.innerHTML =\r\n '<svg width=\"20\" height=\"20\" viewBox=\"-2 -3 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"technologies-tools\"><path id=\"Vector\" d=\"M16.3581 15.3966L16.3581 11.4729C16.3581 11.4158 16.3469 11.3592 16.325 11.3064C16.3031 11.2536 16.2711 11.2056 16.2307 11.1652C16.1903 11.1248 16.1423 11.0928 16.0895 11.0709C16.0368 11.0491 15.9802 11.0378 15.923 11.0378H13.2574L13.2593 11.0372C13.2007 11.0348 13.1422 11.0443 13.0874 11.0651C13.0326 11.0859 12.9825 11.1176 12.9402 11.1582C12.898 11.1989 12.8643 11.2476 12.8414 11.3016C12.8184 11.3556 12.8066 11.4136 12.8067 11.4723L12.8067 15.3972M14.584 11.0334V5.8334M16.3582 15.1022L16.3582 17.0647C16.3583 17.1234 16.3465 17.1814 16.3235 17.2354C16.3006 17.2893 16.2669 17.3381 16.2247 17.3787C16.1824 17.4194 16.1323 17.4511 16.0775 17.4719C16.0227 17.4927 15.9642 17.5022 15.9056 17.4998L15.9075 17.4992H13.2419C13.1847 17.4992 13.1282 17.4879 13.0754 17.466C13.0226 17.4442 12.9746 17.4121 12.9342 17.3717C12.8938 17.3313 12.8618 17.2834 12.8399 17.2306C12.818 17.1778 12.8068 17.1212 12.8068 17.0641L12.8068 15.1022M5.59636 9.88719L5.59636 15.9284C5.59627 16.0872 5.62748 16.2445 5.68821 16.3912C5.74895 16.5379 5.838 16.6713 5.9503 16.7836C6.06259 16.8959 6.19591 16.9849 6.34265 17.0456C6.48938 17.1064 6.64665 17.1376 6.80545 17.1375C7.12589 17.1375 7.43318 17.0101 7.65976 16.7836C7.88634 16.557 8.01365 16.2497 8.0137 15.9293L8.01284 9.88719C9.29329 9.32793 10.4298 8.05047 10.4298 6.56367C10.4302 5.07729 9.22194 3.54264 8.01284 3.241L8.01327 5.83907L6.8046 7.2887L5.59636 5.83864L5.59636 3.241C4.38769 3.54306 3.17902 5.07729 3.17902 6.5641C3.17944 8.05048 4.31591 9.32793 5.59636 9.88719ZM14.9916 5.56545L14.1253 5.56545L13.2589 4.69909L13.6921 2.5332L15.4248 2.5332L15.858 4.69909L14.9916 5.56545Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>';\r\n\r\n return this.button;\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockTool, BlockToolConstructorOptions, ToolConfig } from '@editorjs/editorjs';\r\n\r\nimport {\r\n COMBINED_TEXT_BLOCK,\r\n COMBINED_TEXT_BLOCK_ADDED,\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n COMBINED_TEXT_BLOCK_REMOVED,\r\n COMBINED_TEXT_BLOCK_UPDATED,\r\n DEFAULT_PLACEHOLDER,\r\n DEFAULT_READONLY_PLACEHOLDER,\r\n SPLIT_MAX_LENGTH\r\n} from '../constants';\r\nimport type { CuiCombinedBlockToolData, CuiCombinedPartBlock, CuiMutationActions, CuiMutationCallback } from '../interfaces';\r\nimport { recalculateIndexes, splitHTML, generateId } from '../utils';\r\n\r\nexport class CuiCombinedTextBlockTool implements BlockTool {\r\n private readonly TAG = 'span';\r\n private readonly DEBOUNCE_TIME = 350;\r\n private readonly MAX_CHILD_COUNT_FOR_EMPTY = 1;\r\n private readonly PLACEHOLDER_ATTRIBUTE_NAME = 'placeholderActive';\r\n\r\n private mutationConfig = {\r\n subtree: true,\r\n childList: true,\r\n characterData: true\r\n };\r\n private api: API;\r\n private data: CuiCombinedBlockToolData;\r\n private placeholder: string;\r\n private wrapper?: HTMLElement;\r\n private observer?: MutationObserver;\r\n private lastBlockElement?: HTMLElement;\r\n private readOnly?: boolean;\r\n private changes = new Map();\r\n\r\n constructor(options: unknown) {\r\n const body = options as BlockToolConstructorOptions;\r\n const data = body.data;\r\n\r\n this.readOnly = body.readOnly;\r\n this.placeholder = this.getPlaceholder(body.config);\r\n this.api = body.api;\r\n this.data = {\r\n id: data.id || generateId(),\r\n textBlocks: data.textBlocks || []\r\n };\r\n\r\n this.convertDefaultDataToCustom(data);\r\n }\r\n\r\n public static get isInline(): boolean {\r\n return false;\r\n }\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get enableLineBreaks(): boolean {\r\n return false;\r\n }\r\n\r\n public static get toolbox(): { icon: string; title: string } {\r\n return {\r\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\" d=\"M8 9V7.2C8 7.08954 8.08954 7 8.2 7L12 7M16 9V7.2C16 7.08954 15.9105 7 15.8 7L12 7M12 7L12 17M12 17H10M12 17H14\"></path></svg>',\r\n title: 'Text'\r\n };\r\n }\r\n\r\n public static get pasteConfig(): object {\r\n return {\r\n tags: ['P']\r\n };\r\n }\r\n\r\n public onPaste(event: CustomEvent): void {\r\n if (event.type !== 'tag') {\r\n return;\r\n }\r\n\r\n const text = event.detail.data.textContent;\r\n\r\n this.data.textBlocks.splice(this.data.textBlocks.length - 1, 1, this.getBlockPartObject(generateId(), text));\r\n this.update(this.data.textBlocks);\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.wrapper = document.createElement('div');\r\n this.wrapper.classList.add(COMBINED_TEXT_BLOCK);\r\n this.wrapper.dataset[this.PLACEHOLDER_ATTRIBUTE_NAME] = this.api.i18n.t(this.placeholder);\r\n\r\n if (!this.readOnly) {\r\n this.wrapper.contentEditable = 'true';\r\n }\r\n\r\n if (!this.data.textBlocks.length) {\r\n this.data.textBlocks.push(this.getBlockPartObject(generateId(), ''));\r\n }\r\n\r\n this.update(this.data.textBlocks);\r\n this.checkIsEditorEmpty();\r\n\r\n if (!this.readOnly) {\r\n const callback = this.getMutationCallback(this.DEBOUNCE_TIME);\r\n\r\n this.observer = new MutationObserver(this.onMutationEvent.bind(this, callback));\r\n this.observer.observe(this.wrapper, this.mutationConfig);\r\n }\r\n\r\n return this.wrapper;\r\n }\r\n\r\n public merge(blocksData: CuiCombinedPartBlock[]): void {\r\n if (!this.wrapper) {\r\n return;\r\n }\r\n\r\n let blocksTextContent = '';\r\n this.data.textBlocks = [];\r\n\r\n blocksData.forEach((block) => {\r\n blocksTextContent += block.data.text;\r\n });\r\n\r\n for (let i = 0; i < this.wrapper.childNodes.length; i++) {\r\n const node = this.wrapper.childNodes.item(i);\r\n\r\n if (!(node instanceof HTMLSpanElement)) {\r\n return;\r\n }\r\n\r\n i--;\r\n blocksTextContent = node.innerHTML + blocksTextContent;\r\n node.remove();\r\n }\r\n\r\n const parts = blocksTextContent.length < SPLIT_MAX_LENGTH ? [blocksTextContent] : splitHTML(blocksTextContent);\r\n\r\n parts.forEach((part: string) => {\r\n const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n this.data.textBlocks.push(blockObject);\r\n });\r\n\r\n this.update(this.data.textBlocks);\r\n }\r\n\r\n public save(blockContent: HTMLElement): CuiCombinedPartBlock[] {\r\n const textBlocks: CuiCombinedPartBlock[] = [];\r\n\r\n blockContent.querySelectorAll(this.TAG).forEach((span: HTMLElement) => {\r\n textBlocks.push(this.getBlockPartObject(span.dataset['id']!, span.innerHTML));\r\n });\r\n\r\n return textBlocks;\r\n }\r\n\r\n public removed(): void {\r\n this.observer?.disconnect();\r\n\r\n const blockIds = new Set<string>();\r\n\r\n this.data.textBlocks.forEach((block: CuiCombinedPartBlock) => {\r\n blockIds.add(block.id || '');\r\n });\r\n\r\n this.removeBlocks(blockIds);\r\n }\r\n\r\n private onMutationEvent(callback: (mutationList: MutationRecord[]) => void, mutationList: MutationRecord[]): void {\r\n if (mutationList.length === 0) {\r\n return;\r\n }\r\n\r\n mutationList.forEach((mutation) => {\r\n if (mutation.removedNodes.length) {\r\n this.changes.set(generateId(), mutation);\r\n\r\n return;\r\n }\r\n\r\n this.changes.set(mutation.target, mutation);\r\n });\r\n\r\n callback(mutationList);\r\n this.checkIsEditorEmpty();\r\n }\r\n\r\n private getMutationCallback = (wait: number): CuiMutationCallback => {\r\n let timeoutId: CuiNullable<ReturnType<typeof setTimeout>> = null;\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n\r\n timeoutId = setTimeout(() => this.handleMutations(), wait);\r\n };\r\n };\r\n\r\n private handleMutations(): void {\r\n const mutationsList = [...this.changes.values()];\r\n const { updatedElements, removedElementsIds } = this.getMutationActions(mutationsList);\r\n const splitedParts: HTMLElement[] = [];\r\n\r\n updatedElements.forEach((element: HTMLElement) => {\r\n const elementContent: string = element.innerHTML;\r\n\r\n if (elementContent.length < SPLIT_MAX_LENGTH) {\r\n return;\r\n }\r\n\r\n const parts = splitHTML(elementContent);\r\n\r\n parts.forEach((part: string, index) => {\r\n if (index === 0) {\r\n return;\r\n }\r\n\r\n const blockId = generateId();\r\n const textElement = this.createBlock(blockId, part);\r\n\r\n splitedParts.push(textElement);\r\n });\r\n\r\n element.innerHTML = parts[0];\r\n element.after(...splitedParts);\r\n });\r\n\r\n this.addBlocks(splitedParts, updatedElements);\r\n this.updateBlocks(updatedElements);\r\n this.removeBlocks(removedElementsIds);\r\n this.changes.clear();\r\n }\r\n\r\n private getNextIndex(): number {\r\n recalculateIndexes(this.api.blocks);\r\n const index = this.api.blocks.getCurrentBlockIndex();\r\n const block = this.api.blocks.getBlockByIndex(index);\r\n const dataIndex = Number(block?.holder.dataset['index']);\r\n\r\n const selection = window.getSelection();\r\n const range = selection?.rangeCount ? selection.getRangeAt(0) : null;\r\n const caretPosition = range?.startOffset ?? 1;\r\n\r\n let nextBlockIndex = dataIndex;\r\n\r\n if (caretPosition !== 0) {\r\n const blockContainer = block?.holder.querySelector('.' + COMBINED_TEXT_BLOCK) as HTMLElement;\r\n const childrenCount = blockContainer?.children?.length ? blockContainer?.children?.length - 1 : 0;\r\n\r\n nextBlockIndex = dataIndex + childrenCount + 1;\r\n }\r\n\r\n if (!nextBlockIndex) {\r\n nextBlockIndex ||= 0;\r\n }\r\n\r\n return nextBlockIndex;\r\n }\r\n\r\n private getBlockPartObject(blockId: string, text: string): CuiCombinedPartBlock {\r\n return {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n }\r\n\r\n private getMutationActions(mutationList: MutationRecord[]): CuiMutationActions {\r\n const updatedElements = new Set<HTMLElement>();\r\n const removedElementsIds = new Set<string>();\r\n const changedOutsideElements: Node[] = [];\r\n\r\n this.lastBlockElement = undefined;\r\n\r\n mutationList.forEach((mutation: MutationRecord): void => {\r\n this.handleUpdatedBlocks(mutation, updatedElements, changedOutsideElements);\r\n this.handleRemovedBlocks(mutation, removedElementsIds);\r\n });\r\n\r\n if (this.lastBlockElement) {\r\n const lastBlockElement = this.lastBlockElement as HTMLElement;\r\n\r\n lastBlockElement.append(...changedOutsideElements);\r\n this.setCaretToBlocksEnd(lastBlockElement);\r\n }\r\n\r\n return {\r\n updatedElements,\r\n removedElementsIds\r\n };\r\n }\r\n\r\n private setCaretToBlocksEnd(block: HTMLElement): void {\r\n const selection = window.getSelection();\r\n const range = document.createRange();\r\n\r\n range.setStart(block, block.childNodes.length);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n\r\n private handleUpdatedBlocks(\r\n mutation: MutationRecord,\r\n updatedElements: Set<HTMLElement>,\r\n outsideChanges: Node[]\r\n ): void {\r\n let element = mutation.target as HTMLElement;\r\n\r\n if (mutation.target.nodeType === Node.TEXT_NODE) {\r\n element = mutation.target.parentElement as HTMLElement;\r\n }\r\n\r\n const span = element?.closest('.' + COMBINED_TEXT_BLOCK_PART) as HTMLElement;\r\n\r\n if (span) {\r\n updatedElements.add(span);\r\n\r\n return;\r\n }\r\n\r\n this.handleChangesOutsideBlock(element, outsideChanges);\r\n }\r\n\r\n private handleChangesOutsideBlock(element: HTMLElement, outsideChanges: Node[]): void {\r\n if (!element || this.lastBlockElement) {\r\n return;\r\n }\r\n\r\n element.childNodes.forEach((block) => {\r\n const blockElement = block as HTMLElement;\r\n\r\n if (blockElement.classList?.contains(COMBINED_TEXT_BLOCK_PART)) {\r\n this.lastBlockElement = blockElement;\r\n\r\n return;\r\n }\r\n\r\n outsideChanges.push(block);\r\n });\r\n }\r\n\r\n private addBlocks(splicedParts: HTMLElement[], updatedElements: Set<HTMLElement>): void {\r\n if (!splicedParts.length) {\r\n return;\r\n }\r\n\r\n const addedBlocks: CuiCombinedPartBlock[] = splicedParts.map((block) => {\r\n const blockId = block.dataset['id'];\r\n\r\n return {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: block.innerHTML,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n });\r\n\r\n const previousElement = updatedElements.values().next().value;\r\n const id = previousElement?.dataset['id'];\r\n const index = Number(previousElement?.dataset['index']) + 1;\r\n const blockIndex = this.data.textBlocks.findIndex((block) => block.id === id);\r\n\r\n this.data.textBlocks.splice(blockIndex, 0, ...addedBlocks);\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n index,\r\n blockIndex,\r\n blocks: addedBlocks,\r\n data: this.data.textBlocks\r\n });\r\n }\r\n\r\n private updateBlocks(updatedElements: Set<HTMLElement>): void {\r\n if (!updatedElements.size) {\r\n return;\r\n }\r\n\r\n const updatedBlocks = [...updatedElements.values()].map((block) => {\r\n return {\r\n id: block.dataset['id'],\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: block.innerHTML,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n });\r\n\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, updatedBlocks);\r\n }\r\n\r\n private handleRemovedBlocks(mutation: MutationRecord, removedElementsIds: Set<string>): void {\r\n if (mutation.removedNodes.length === 0) {\r\n return;\r\n }\r\n\r\n mutation.removedNodes.forEach((node: Node): void => {\r\n if (!(node instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n const blockId = (node as HTMLElement).dataset['id'];\r\n\r\n if (!blockId) {\r\n return;\r\n }\r\n\r\n removedElementsIds.add(blockId);\r\n });\r\n }\r\n\r\n private removeBlocks(ids: Set<string>): void {\r\n if (!ids.size) {\r\n return;\r\n }\r\n\r\n const removedElementIds = [...ids.values()];\r\n\r\n this.data.textBlocks = this.data.textBlocks.filter((block) => !ids.has(block.id || ''));\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_REMOVED, removedElementIds);\r\n }\r\n\r\n private update(blocks: CuiCombinedPartBlock[]): void {\r\n if (!blocks.length) {\r\n return;\r\n }\r\n\r\n blocks.forEach((block: CuiCombinedPartBlock) => {\r\n const textElement = this.createBlock(block.id || generateId(), block.data.text);\r\n\r\n if (!this.wrapper) {\r\n return;\r\n }\r\n\r\n if (this.wrapper.querySelector('.' + COMBINED_TEXT_BLOCK_PART)) {\r\n this.wrapper.append(textElement);\r\n\r\n return;\r\n }\r\n\r\n this.wrapper.replaceChildren(textElement);\r\n });\r\n\r\n setTimeout(() => {\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n blocks\r\n });\r\n });\r\n }\r\n\r\n private createBlock(id: string, text: string): HTMLElement {\r\n const textElement = document.createElement(this.TAG);\r\n textElement.classList.add(COMBINED_TEXT_BLOCK_PART);\r\n textElement.innerHTML = text;\r\n textElement.dataset['id'] = id;\r\n\r\n return textElement;\r\n }\r\n\r\n private convertDefaultDataToCustom(data: { text: string }): void {\r\n if (Array.isArray(data)) {\r\n this.data.textBlocks = data.map((block) => {\r\n block.id = generateId();\r\n block.data.parentId = this.data.id;\r\n\r\n return block;\r\n });\r\n }\r\n\r\n if (!data.text) {\r\n return;\r\n }\r\n\r\n const fragment = document.createRange().createContextualFragment(data.text);\r\n let elementContent = '';\r\n\r\n fragment.childNodes.forEach((node) => {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n elementContent += node.textContent;\r\n\r\n return;\r\n }\r\n\r\n elementContent += (node as HTMLElement).innerHTML;\r\n });\r\n\r\n const parts = elementContent.length < SPLIT_MAX_LENGTH ? [elementContent] : splitHTML(elementContent);\r\n\r\n parts.forEach((part: string) => {\r\n const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n this.data.textBlocks.push(blockObject);\r\n });\r\n }\r\n\r\n private checkIsEditorEmpty(): void {\r\n if (!this.wrapper || this.wrapper.children.length > this.MAX_CHILD_COUNT_FOR_EMPTY) {\r\n return;\r\n }\r\n\r\n const item = this.wrapper.children.item(0) as HTMLElement;\r\n const isItemEmpty = !item.textContent?.length;\r\n\r\n this.wrapper.dataset['empty'] = `${isItemEmpty}`;\r\n }\r\n\r\n private getPlaceholder(config: ToolConfig): string {\r\n if (this.readOnly) {\r\n return config.readonlyPlaceholder ?? DEFAULT_READONLY_PLACEHOLDER;\r\n }\r\n\r\n return config.placeholder ?? DEFAULT_PLACEHOLDER;\r\n }\r\n}\r\n","import type { EditorConfig, LogLevels } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_NAME, DEFAULT_CONFIG } from '../constants';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\nimport { CuiCombinedTextBlockTool, CuiBoldInlineTool, CuiItalicInlineTool, CuiLinkMarker } from '../tools';\r\n\r\nexport const getEditorConfig = (id: string, config: CuiEditorConfig = DEFAULT_CONFIG): EditorConfig => ({\r\n holder: id,\r\n logLevel: 'ERROR' as LogLevels,\r\n readOnly: config.readOnly,\r\n autofocus: config.autofocus,\r\n tools: {\r\n paragraph: {\r\n class: CuiCombinedTextBlockTool,\r\n inlineToolbar: true,\r\n config: {\r\n placeholder: config.placeholder,\r\n readonlyPlaceholder: config.readonlyPlaceholder\r\n }\r\n },\r\n link: {\r\n class: CuiLinkMarker\r\n },\r\n bold: {\r\n class: CuiBoldInlineTool\r\n },\r\n italic: {\r\n class: CuiItalicInlineTool\r\n },\r\n ...config.tools\r\n },\r\n defaultBlock: COMBINED_TEXT_BLOCK_NAME\r\n});\r\n","import { EDITOR_ATTACHES_TOOL_SELECTOR, EDITOR_IMAGE_TOOL_SELECTOR, EDITOR_TOOL_MODAL_SELECTOR, EDITOR_TOOLTIP_SELECTOR, EDITOR_VIDEO_TOOL_SELECTOR, EditorAttachesToolComponent, EditorImageToolComponent, EditorToolModalComponent, EditorTooltipComponent, EditorVideoToolComponent, MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR, MarkerModalComponent, MarkerSelectComponent } from \"../components\";\r\nimport { CuiCustomElement } from \"../interfaces\";\r\n\r\nexport const EDITOR_CUSTOM_ELEMENTS: readonly CuiCustomElement[] = [\r\n {\r\n selector: EDITOR_TOOLTIP_SELECTOR,\r\n component: EditorTooltipComponent\r\n },\r\n {\r\n selector: MARKER_SELECT_SELECTOR,\r\n component: MarkerSelectComponent\r\n },\r\n {\r\n selector: EDITOR_TOOL_MODAL_SELECTOR,\r\n component: EditorToolModalComponent\r\n },\r\n {\r\n selector: MARKER_MODAL_SELECTOR,\r\n component: MarkerModalComponent\r\n },\r\n {\r\n selector: EDITOR_VIDEO_TOOL_SELECTOR,\r\n component: EditorVideoToolComponent\r\n },\r\n {\r\n selector: EDITOR_IMAGE_TOOL_SELECTOR,\r\n component: EditorImageToolComponent\r\n },\r\n {\r\n selector: EDITOR_ATTACHES_TOOL_SELECTOR,\r\n component: EditorAttachesToolComponent\r\n }\r\n];\r\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\nimport { EDITOR_CUSTOM_ELEMENTS } from './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","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, SimpleChanges } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport EditorJS from '@editorjs/editorjs';\r\nimport type { Observable, Subscription } from 'rxjs';\r\nimport {\r\n concatMap,\r\n delay,\r\n finalize,\r\n fromEvent,\r\n map,\r\n Subject,\r\n takeWhile,\r\n tap,\r\n throttleTime,\r\n timer,\r\n toArray\r\n} from 'rxjs';\r\n\r\nimport { getEditorConfig } from './config';\r\nimport {\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n DEFAULT_CONFIG\r\n} from './constants/editor.constants';\r\nimport { setEditorEvents } from './events/set-editor-events';\r\nimport type {\r\n CuiBlockData,\r\n CuiBlocksRequestData,\r\n CuiCombinedBlockAddingEvent,\r\n CuiCombinedBlockToolData,\r\n CuiCombinedPartBlock,\r\n CuiEditorConfig,\r\n CuiEventActionData,\r\n CuiFullBlockData\r\n} from './interfaces';\r\nimport { Block, CuiEditorService, CuiJTextApiService, EventActions } from './services';\r\nimport { recalculateIndexes } from './utils/recalculate-indexes';\r\n\r\n@Component({\r\n selector: 'cui-editor',\r\n standalone: true,\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['./editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiEditorService, CuiJTextApiService]\r\n})\r\nexport class CuiEditorComponent implements OnDestroy {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly editorService = inject(CuiEditorService);\r\n private readonly jTextService = inject(CuiJTextApiService);\r\n\r\n private readonly POOLING_DELAY = 100;\r\n private readonly ELEMENT_SPACE_TO_BOTTOM = 150;\r\n private readonly SCROLL_THROTTLE_TIME = 200;\r\n\r\n private readonly isReadonly = computed(() => this.config?.readOnly);\r\n private readonly emptyQueue = new Subject();\r\n\r\n @ViewChild('editor')\r\n protected readonly editorRef!: ElementRef;\r\n\r\n @Output()\r\n public readonly editorEmpty = new EventEmitter<boolean>();\r\n\r\n @Input({ required: true })\r\n public editorID!: string;\r\n\r\n @Input()\r\n public config: CuiEditorConfig = DEFAULT_CONFIG;\r\n\r\n @Input()\r\n public requestSize = 40;\r\n\r\n private poolingSubscription!: Subscription;\r\n private scrollSubscription!: Subscription;\r\n private isSkipCombinedBlockOnChange: boolean[] = [];\r\n private isFirst = true;\r\n private isChanging = false;\r\n private isSkip = false;\r\n private isRequested = false;\r\n private isDestroyed = false;\r\n private blockIdsMap = new Map<string, string>();\r\n private combinedBlocks = new Map();\r\n private index = 0;\r\n private page = 0;\r\n private addedBlocks: CuiBlockData[] = [];\r\n private updatedBlocks: Block[] = [];\r\n private removedBlocksIds: string[] = [];\r\n private changesQueue: BlockMutationEvent[][] = [];\r\n private abortController = new AbortController();\r\n\r\n public editor!: EditorJS;\r\n public editorElement!: HTMLElement;\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['editorID'] || changes['config']) {\r\n this.initEditorChanges();\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.isDestroyed = true;\r\n this.destroyEditor();\r\n }\r\n\r\n private onScrollEvent(element: HTMLElement): void {\r\n const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;\r\n const currentHeight = element.scrollTop + element.clientHeight;\r\n\r\n if (currentHeight < overallHeight || this.isRequested) {\r\n return;\r\n }\r\n\r\n this.isRequested = true;\r\n\r\n const size = this.requestSize;\r\n let blocksCount = 0;\r\n\r\n this.getBlocks(this.page, size)\r\n .pipe(\r\n tap((blocks) => (blocksCount = blocks.length)),\r\n finalize(() => {\r\n this.isRequested = false;\r\n\r\n if (blocksCount >= size) {\r\n return;\r\n }\r\n\r\n this.scrollSubscription.unsubscribe();\r\n })\r\n )\r\n .subscribe();\r\n\r\n this.page++;\r\n }\r\n\r\n private async onEditorChange(_: API, event: BlockMutationEvent | BlockMutationEvent[]): Promise<void> {\r\n if (this.isReadonly()) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(event)) {\r\n event = [event];\r\n }\r\n\r\n recalculateIndexes(this.editor.blocks);\r\n\r\n if (this.isChanging) {\r\n this.changesQueue.unshift(event);\r\n }\r\n\r\n this.startChanges(event);\r\n this.editorEmpty.emit(this.checkIsEmpty());\r\n }\r\n\r\n private onAddedCombinedBlock(data: CuiCombinedBlockAddingEvent): void {\r\n if (this.isSkipCombinedBlockOnChange.length) {\r\n this.isSkipCombinedBlockOnChange.pop();\r\n\r\n return;\r\n }\r\n\r\n const blocksWithoutId = data.blocks.map((block) => ({\r\n block: { ...block, id: undefined },\r\n id: block.id!\r\n }));\r\n\r\n this.addedBlocks.push(...blocksWithoutId);\r\n }\r\n\r\n private onUpdatedCombinedBlock(updatedBlocks: Block[]): void {\r\n if (!updatedBlocks.length) {\r\n return;\r\n }\r\n\r\n this.updatedBlocks.push(...updatedBlocks);\r\n }\r\n\r\n private onRemovedCombinedBlock(blockIds: string[]): void {\r\n if (!blockIds.length) {\r\n return;\r\n }\r\n\r\n this.removedBlocksIds.push(...blockIds);\r\n }\r\n\r\n private initEditorChanges(): void {\r\n this.jTextService.addOptions(this.config.requestOptions);\r\n\r\n this.editor = this.initEditor(this.editorID);\r\n this.editor.isReady.then(() => {\r\n this.editorElement = this.editorRef.nativeElement;\r\n\r\n this.initEditorEvents(this.editorElement);\r\n this.initScrollObserver();\r\n this.startPooling(this.requestSize);\r\n this.setListenersOnCustomBlockChanges();\r\n });\r\n }\r\n\r\n private initEditor(id: string): EditorJS {\r\n const config = this.config;\r\n\r\n this.destroyEditor();\r\n this.editor = new EditorJS({\r\n ...getEditorConfig(id, config),\r\n onChange: this.onEditorChange.bind(this)\r\n });\r\n\r\n return this.editor;\r\n }\r\n\r\n private initScrollObserver(): void {\r\n const element = this.config?.element ?? this.editorElement;\r\n const scrollObserver = fromEvent(element, 'scroll');\r\n\r\n this.scrollSubscription = scrollObserver\r\n .pipe(\r\n takeUntilDestroyed(this.destroy),\r\n throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {\r\n leading: true,\r\n trailing: true\r\n }),\r\n map(() => this.onScrollEvent(element))\r\n )\r\n .subscribe();\r\n }\r\n\r\n private initEditorEvents(element: HTMLElement): void {\r\n const readOnly = this.isReadonly();\r\n\r\n if (readOnly) {\r\n return;\r\n }\r\n\r\n setEditorEvents(element, this.abortController.signal);\r\n }\r\n\r\n private startPooling(size: number): void {\r\n const scrollElement = this.config?.element ?? this.editorElement;\r\n const withoutPreload = this.config?.withoutPreload;\r\n\r\n this.poolingSubscription = timer(0, this.POOLING_DELAY)\r\n .pipe(\r\n concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))),\r\n tap(() => this.page++),\r\n takeWhile(\r\n (blocks) =>\r\n !withoutPreload &&\r\n scrollElement.scrollHeight <= scrollElement.clientHeight &&\r\n blocks.length >= size\r\n ),\r\n finalize(() => {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n\r\n this.setStartBlock();\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private destroyEditor(): void {\r\n this.abortController.abort();\r\n this.resetData();\r\n // TODO: в рандом кейсах падает ошибка если убрать проверку на вызов destroy\r\n this.editor?.destroy?.();\r\n }\r\n\r\n private setListenersOnCustomBlockChanges(): void {\r\n this.editorService.setListenersOnCustomBlockChanges(this.editor, {\r\n removedCallback: this.onRemovedCombinedBlock.bind(this),\r\n updatedCallback: this.onUpdatedCombinedBlock.bind(this),\r\n addedCallback: this.onAddedCombinedBlock.bind(this)\r\n });\r\n }\r\n\r\n private async startChanges(event: BlockMutationEvent[]): Promise<void> {\r\n if (this.isSkip || this.isChanging || !this.editor) {\r\n this.isSkip = false;\r\n\r\n return;\r\n }\r\n\r\n this.isChanging = true;\r\n\r\n const editorOutput = await this.editor.save();\r\n const events = event.filter((data) => data.detail.target.name !== COMBINED_TEXT_BLOCK_NAME);\r\n const blocks = this.editorService.sortEventsByTypes(events);\r\n const { addBlocks$, addedBlocks } = this.collectAddedBlocksRequest(blocks, editorOutput);\r\n\r\n this.addedBlocks = [];\r\n\r\n addBlocks$\r\n .pipe(\r\n tap((blockIds) => this.setBlockIdsToMap(blockIds, addedBlocks)),\r\n concatMap(() => this.collectUpdatedBlocksRequest(blocks, editorOutput)),\r\n concatMap(() => this.collectRemovedBlocksRequest(blocks))\r\n )\r\n .subscribe({\r\n complete: () => this.startNextChange(),\r\n error: () => this.startNextChange()\r\n });\r\n }\r\n\r\n private startNextChange(): void {\r\n this.isChanging = false;\r\n\r\n const nextEvents = this.changesQueue.pop();\r\n\r\n if (nextEvents) {\r\n this.startChanges(nextEvents);\r\n }\r\n\r\n this.emptyQueue.next(null);\r\n }\r\n\r\n private collectAddedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): CuiBlocksRequestData {\r\n const defaultBlocksWithIndex = blocks[EventActions.add].map((addedBlock) =>\r\n this.editorService.getFullBlockData(addedBlock, editorOutput)\r\n );\r\n const combinedBlocksWithIndex = this.addedBlocks.map((block) => {\r\n const element = this.editorElement.querySelector(`[data-id=\"${block.id}\"]`) as HTMLElement;\r\n const index = Number(element?.dataset['index']);\r\n\r\n return { ...block, index };\r\n });\r\n\r\n const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort((first, second) => first.index - second.index);\r\n const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorID, addedBlocks);\r\n\r\n return {\r\n addedBlocks,\r\n addBlocks$\r\n };\r\n }\r\n\r\n private collectUpdatedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): Observable<Block[]> {\r\n blocks[EventActions.update].forEach((updateBlock) => {\r\n const { id, block } = this.editorService.getFullBlockData(updateBlock, editorOutput);\r\n block.id = id;\r\n\r\n this.updatedBlocks.push(block);\r\n });\r\n\r\n const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);\r\n\r\n this.updatedBlocks = [];\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n private collectRemovedBlocksRequest(blocks: CuiEventActionData): Observable<void> {\r\n blocks[EventActions.remove].forEach((block) => {\r\n const id = block.detail.target.id;\r\n\r\n this.removedBlocksIds.push(id);\r\n });\r\n\r\n const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(\r\n this.editorID,\r\n this.removedBlocksIds,\r\n this.blockIdsMap\r\n );\r\n this.removedBlocksIds = [];\r\n\r\n return removeBlocks$;\r\n }\r\n\r\n private getBlocks(page = 0, size = 40): Observable<Block[]> {\r\n let combinedBlock: CuiNullable<Block>;\r\n\r\n return this.jTextService.getBlocks(this.editorID, page, size).pipe(\r\n takeUntilDestroyed(this.destroy),\r\n finalize(() => {\r\n if (combinedBlock) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n recalculateIndexes(this.editor.blocks);\r\n }),\r\n map((block) => {\r\n if (block.type === COMBINED_TEXT_BLOCK_PART) {\r\n const blockData = block.data as { parentId: string };\r\n\r\n if (combinedBlock && blockData.parentId! !== combinedBlock?.id) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n combinedBlock = this.setCombinedBlock(block);\r\n\r\n return;\r\n }\r\n\r\n if (combinedBlock) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n this.addBlock(block);\r\n }),\r\n toArray()\r\n ) as unknown as Observable<Block[]>;\r\n }\r\n\r\n private addBlock(block: Block): void {\r\n if (typeof block.type !== 'string') {\r\n return;\r\n }\r\n\r\n this.blockIdsMap.set(block.id!, block.id!);\r\n this.insert(block);\r\n }\r\n\r\n private addCombinedBlock(combinedBlock: Block): void {\r\n this.isSkipCombinedBlockOnChange.push(true);\r\n const block = this.editor.blocks.getById(combinedBlock.id || '');\r\n\r\n if (block) {\r\n this.editor.blocks.update(block.id, combinedBlock.data as CuiCombinedPartBlock);\r\n\r\n return;\r\n }\r\n\r\n this.insert(combinedBlock);\r\n }\r\n\r\n private insert(block: Block): void {\r\n this.checkFirst(block);\r\n this.index++;\r\n }\r\n\r\n private checkFirst(block: Block): void {\r\n if (!this.isFirst) {\r\n this.isSkip = true;\r\n this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);\r\n\r\n return;\r\n }\r\n\r\n // TODO: есть варик что что то пойдет не так\r\n this.editor.blocks.render({ blocks: [block] }).then(() => this.isSkip = false);\r\n this.isFirst = false;\r\n }\r\n\r\n private setCombinedBlock(block: Block): Block {\r\n const combinedBlockData = block.data as { parentId: string };\r\n const parent = this.combinedBlocks.get(combinedBlockData.parentId);\r\n\r\n this.blockIdsMap.set(block.id!, block.id!);\r\n\r\n if (parent) {\r\n const parentData = parent.data as { textBlocks: Block[] };\r\n parentData.textBlocks.push(block);\r\n\r\n return parent;\r\n }\r\n\r\n const parentObject: Block = {\r\n id: combinedBlockData.parentId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: combinedBlockData.parentId,\r\n textBlocks: [block]\r\n }\r\n };\r\n\r\n this.combinedBlocks.set(combinedBlockData.parentId, parentObject);\r\n\r\n return parentObject;\r\n }\r\n\r\n private setBlockIdsToMap(blockIds: string[], addedBlocks: CuiFullBlockData[]): void {\r\n if (!blockIds.length) {\r\n return;\r\n }\r\n\r\n addedBlocks.forEach((blockData, index) => {\r\n this.blockIdsMap.set(blockData.id, blockIds[index]);\r\n });\r\n }\r\n\r\n private setStartBlock(): void {\r\n if (this.blockIdsMap.size) {\r\n this.setFocus();\r\n this.editorEmpty.emit(this.checkIsEmpty());\r\n\r\n return;\r\n }\r\n\r\n if (this.isReadonly()) {\r\n this.editor.render({ blocks: [] });\r\n\r\n return;\r\n }\r\n\r\n this.editorService.setStartBlock(this.editorID, async (block: Block<CuiCombinedBlockToolData>, id: string) => {\r\n this.blockIdsMap.set(id, id);\r\n this.isSkipCombinedBlockOnChange.push(true);\r\n\r\n await this.editor.render({ blocks: [block] });\r\n\r\n this.setFocus();\r\n recalculateIndexes(this.editor.blocks);\r\n });\r\n }\r\n\r\n private setFocus(): void {\r\n if (!this.config?.autofocus) {\r\n return;\r\n }\r\n\r\n this.editor.caret.focus();\r\n }\r\n\r\n private checkIsEmpty(): boolean {\r\n const MIN_BLOCKS_COUNT = 1;\r\n const REDACTOR_SELECTOR = '.codex-editor__redactor';\r\n const redactor = this.editorElement.querySelector(REDACTOR_SELECTOR);\r\n const blocksCount = redactor?.childElementCount ?? 0;\r\n\r\n return blocksCount <= MIN_BLOCKS_COUNT && !redactor?.textContent;\r\n }\r\n\r\n private resetData(): void {\r\n this.scrollSubscription?.unsubscribe();\r\n this.poolingSubscription?.unsubscribe();\r\n this.isSkipCombinedBlockOnChange = [];\r\n this.isFirst = true;\r\n this.isChanging = false;\r\n this.isSkip = false;\r\n this.isRequested = false;\r\n this.blockIdsMap = new Map<string, string>();\r\n this.combinedBlocks = new Map();\r\n this.index = 0;\r\n this.page = 0;\r\n this.addedBlocks = [];\r\n this.updatedBlocks = [];\r\n this.removedBlocksIds = [];\r\n this.changesQueue = [];\r\n this.abortController = new AbortController();\r\n }\r\n}\r\n","<div\r\n #editor\r\n [id]=\"editorID\"\r\n [class._readonly]=\"config.readOnly\"\r\n data-editor\r\n></div>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRender,\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\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorReadonlyConfig } from './editor-readonly.options';\r\n\r\n@Component({\r\n selector: 'cui-editor-readonly',\r\n standalone: true,\r\n imports: [CuiEditorComponent, NgTemplateOutlet],\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 isMoreButtonShown = signal(false);\r\n protected readonly editorConfig = computed(() => ({ readOnly: true, withoutPreload: true, ...this.config() }));\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>(68);\r\n\r\n constructor() {\r\n this.initEditorIdEffect();\r\n this.initReadEditorProperty();\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 initReadEditorProperty(): void {\r\n afterRender({\r\n read: () => this.isMoreButtonShown.set(this.editor().editorElement?.scrollHeight > this.shortHeight())\r\n });\r\n }\r\n\r\n private initEditorIdEffect(): void {\r\n effect(() => {\r\n this.editorId();\r\n this.isShowMore.set(false);\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<cui-editor\r\n #editor\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorID]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n@if (isMoreButtonShown()) {\r\n <button class=\"c-button\" (click)=\"onShow(editor)\">\r\n <ng-container [ngTemplateOutlet]=\"buttonTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"></ng-container>\r\n </button>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, input, output, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiSvgModule } from '../../../components';\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'cui-editor-modal',\r\n imports: [\r\n CuiEditorComponent,\r\n CuiButtonModule,\r\n NgTemplateOutlet,\r\n CuiSvgModule\r\n ],\r\n standalone: true,\r\n templateUrl: './editor-modal.component.html',\r\n styleUrl: './editor-modal.component.scss'\r\n})\r\nexport class CuiEditorModalComponent {\r\n protected readonly isOpen = signal(false);\r\n protected readonly isButtonDisabled = signal<boolean>(false);\r\n\r\n public readonly title = input.required<string>();\r\n public readonly buttonTemplate = input<TemplateRef<HTMLElement>>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly editorId = input<CuiNullable<string>>();\r\n\r\n public readonly editorCreated = output();\r\n public readonly modalClosed = output();\r\n\r\n protected onModalOpen(): void {\r\n this.isButtonDisabled.set(true);\r\n\r\n if (this.editorId()) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.editorCreated.emit();\r\n }\r\n public open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n public close(): void {\r\n this.isButtonDisabled.set(false);\r\n this.isOpen.set(false);\r\n this.modalClosed.emit();\r\n }\r\n}\r\n","@if (buttonTemplate(); as template) {\r\n <button\r\n type=\"button\"\r\n class=\"button\"\r\n (click)=\"onModalOpen()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </button>\r\n} @else {\r\n <button\r\n class=\"description\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n icon=\"cuiIconRichText\"\r\n size=\"sm\"\r\n (click)=\"onModalOpen()\"\r\n [disabled]=\"isButtonDisabled()\"\r\n >\r\n @if (editorId()) {\r\n <span class=\"description__text _created\">{{ 'Description' }}</span>\r\n <cui-svg\r\n class=\"description__icon\"\r\n icon=\"cuiIconEdit\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n } @else {\r\n <cui-svg\r\n class=\"description__icon\"\r\n icon=\"cuiIconPlus\"\r\n color=\"var(--cui-light-blue-600)\"\r\n />\r\n <span class=\"description__text\">{{ 'Add description' }}</span>\r\n }\r\n </button>\r\n}\r\n@if (isOpen()) {\r\n <div class=\"wrapper\">\r\n @if (editorId(); as id) {\r\n <header class=\"header\">\r\n <div class=\"info\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n icon=\"cuiIconChevronLeft\"\r\n size=\"xxs\"\r\n appearance=\"secondary\"\r\n shape=\"rounded\"\r\n (click)=\"close()\"\r\n ></button>\r\n <h1 class=\"title\">{{ title() }}</h1>\r\n </div>\r\n <div class=\"actions\">\r\n <!-- <cui-loader /> -->\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n size=\"xs\"\r\n (click)=\"close()\"\r\n >\r\n {{ 'Done' }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <section class=\"section\">\r\n <cui-editor\r\n #editorComponent\r\n class=\"editor\"\r\n [editorID]=\"id\"\r\n [config]=\"config()\"\r\n />\r\n </section>\r\n }\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiButtonModule, CuiHintModule, CuiContentWrapperComponent } from '../../../components';\r\nimport { CuiTooltip } from '../../../directives';\r\n\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorModalComponent } from '../editor-modal/editor-modal.component';\r\n\r\n@Component({\r\n selector: 'cui-editor-block',\r\n imports: [\r\n CuiButtonModule,\r\n CuiEditorModalComponent,\r\n CuiEditorComponent,\r\n TranslocoDirective,\r\n CuiContentWrapperComponent,\r\n CuiTooltip,\r\n CuiHintModule\r\n ],\r\n standalone: true,\r\n templateUrl: './editor-block.component.html',\r\n styleUrls: ['./editor-block.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorBlockComponent {\r\n private skipFirstValidation = true;\r\n\r\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n protected readonly isDescriptionModalOpen = signal(false);\r\n protected readonly isDescriptionEmpty = signal(false);\r\n\r\n public readonly editorContainer = viewChild<string, ElementRef<HTMLElement>>('editorContainer', {\r\n read: ElementRef\r\n });\r\n\r\n public readonly title = input.required<string>();\r\n public readonly editorId = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly required = input(false);\r\n\r\n public readonly editorEmpty = output<boolean>();\r\n\r\n constructor() {\r\n this.initEditorConfig();\r\n }\r\n\r\n protected onToggleDescriptionModal(): void {\r\n this.isDescriptionModalOpen.update((prev) => !prev);\r\n }\r\n\r\n protected onDescriptionChange(value: boolean): void {\r\n this.editorEmpty.emit(value);\r\n\r\n if (this.skipFirstValidation) {\r\n this.skipFirstValidation = false;\r\n\r\n return;\r\n }\r\n\r\n this.isDescriptionEmpty.set(value);\r\n }\r\n\r\n private initEditorConfig(): void {\r\n const effectRef = effect(() => {\r\n const element = this.editorContainer()?.nativeElement;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n this.editorConfig.set({ ...this.config(), element });\r\n effectRef.destroy();\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"wrapper\">\r\n <span class=\"title\">\r\n {{ t('DESCRIPTION') }}\r\n @if (required()) {\r\n <span class=\"title__required\">*</span>\r\n }\r\n </span>\r\n <ng-template #button>\r\n <button\r\n [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\r\n cuiButton\r\n size=\"xxs\"\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n icon=\"cuiIconMaximizeSm\"\r\n (click)=\"onToggleDescriptionModal()\"\r\n ></button>\r\n </ng-template>\r\n <cui-editor-modal\r\n [title]=\"title()\"\r\n [editorId]=\"editorId()\"\r\n [buttonTemplate]=\"button\"\r\n [config]=\"config()\"\r\n (modalClosed)=\"onToggleDescriptionModal()\"\r\n />\r\n </div>\r\n <div\r\n #editorContainer\r\n cuiContentWrapper\r\n class=\"editor\"\r\n [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\r\n >\r\n @if (!isDescriptionModalOpen() && editorConfig()) {\r\n <cui-editor\r\n #editorComponent\r\n [editorID]=\"editorId()\"\r\n [config]=\"editorConfig()!\"\r\n (editorEmpty)=\"onDescriptionChange($event)\"\r\n />\r\n }\r\n </div>\r\n @if (required() && isDescriptionEmpty()) {\r\n <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\r\n }\r\n</ng-container>\r\n","import type { HttpEvent, HttpInterceptorFn } from '@angular/common/http';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const cuiXNdjsonInterceptor: HttpInterceptorFn = (request, next) => {\r\n if (request.headers.get('Content-Type') !== 'application/x-ndjson') {\r\n return next(request);\r\n }\r\n\r\n return new Observable<HttpEvent<unknown>>((observer) => {\r\n const controller = new AbortController();\r\n const signal = controller.signal;\r\n\r\n (async (): Promise<void> => {\r\n try {\r\n const response = await fetch(request.urlWithParams, {\r\n method: request.method,\r\n headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\r\n headers[key] = request.headers.get(key)!;\r\n\r\n return headers;\r\n }, {}),\r\n body: request.body ? JSON.stringify(request.body) : null,\r\n signal\r\n });\r\n\r\n if (!response.ok) {\r\n const error = await response.json();\r\n\r\n observer.error(new HttpErrorResponse({ error }));\r\n\r\n return;\r\n }\r\n\r\n const reader = response.body!.getReader();\r\n const decoder = new TextDecoder();\r\n let buffer = '';\r\n\r\n for (;;) {\r\n const { done, value } = await reader.read();\r\n\r\n if (done) {\r\n observer.complete();\r\n\r\n return;\r\n }\r\n\r\n buffer += decoder.decode(value);\r\n const lines = buffer.split('\\n');\r\n buffer = lines.pop() ?? '';\r\n\r\n lines.forEach((line) => observer.next(JSON.parse(line)));\r\n }\r\n } catch (error) {\r\n observer.error(new HttpErrorResponse({ error }));\r\n }\r\n })();\r\n\r\n return () => controller.abort();\r\n });\r\n};\r\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { catchError, finalize, throwError } from 'rxjs';\r\n\r\nimport { CuiLoaderService } from '../services';\r\n\r\nexport const cuiLoaderInterceptor: HttpInterceptorFn = (request, next) => {\r\n const loaderService = inject(CuiLoaderService);\r\n\r\n if (request.method === 'GET') {\r\n return next(request);\r\n }\r\n\r\n loaderService.setLoading();\r\n\r\n return next(request).pipe(\r\n catchError(throwError),\r\n finalize(loaderService.handleCompletedRequest.bind(loaderService))\r\n );\r\n};\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\n\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../components';\r\nimport { CuiLoaderService, CuiLoadingState } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-loader',\r\n imports: [CuiSvgModule],\r\n standalone: true,\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLoaderComponent implements OnDestroy {\r\n private readonly loaderService = inject(CuiLoaderService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n protected readonly state = CuiLoadingState;\r\n protected readonly LoaderString: Record<CuiLoadingState, string> = {\r\n [CuiLoadingState.LOADING]: `${this.translocoService.translate('SAVING')}...`,\r\n [CuiLoadingState.COMPLETED]: this.translocoService.translate('SAVED'),\r\n [CuiLoadingState.INITIAL]: ''\r\n };\r\n protected readonly LoaderIcon: Record<CuiLoadingState, string> = {\r\n [CuiLoadingState.LOADING]: 'cuiIconRefreshCcw',\r\n [CuiLoadingState.COMPLETED]: 'cuiIconCheck',\r\n [CuiLoadingState.INITIAL]: ''\r\n };\r\n\r\n protected readonly loaderState = this.loaderService.loaderState;\r\n protected readonly loaderString = computed(() => this.LoaderString[this.loaderState()]);\r\n protected readonly loaderIcon = computed(() => this.LoaderIcon[this.loaderState()]);\r\n\r\n public ngOnDestroy(): void {\r\n this.loaderService.reset();\r\n }\r\n}\r\n","@if (loaderState() !== state.INITIAL) {\r\n <cui-svg\r\n [icon]=\"loaderIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n [class.icon_loading]=\"loaderState() === state.LOADING\"\r\n />\r\n <span>{{ loaderString() }}</span>\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiTooltip, } from '../../directives';\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, type CuiDialogContext } from '../../components';\r\nimport type { CuiDialogDeleteData } from './delete-modal.options';\r\n\r\n@Component({\r\n selector: 'cui-delete-modal',\r\n imports: [CuiButtonModule, TranslocoModule, CuiTooltip],\r\n standalone: true,\r\n templateUrl: './delete-modal.component.html',\r\n styleUrls: ['./delete-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDeleteModalComponent {\r\n private readonly context = inject<CuiDialogContext<CuiDialogDeleteData>>(CUI_DIALOG_CONTEXT);\r\n\r\n private readonly data = this.context.data;\r\n\r\n protected readonly title = this.data.title;\r\n protected readonly content = this.data.content;\r\n protected readonly isLoading = signal(false);\r\n protected readonly isDisabled = this.data.isDisabled ?? false;\r\n\r\n protected onDelete(): void {\r\n if (!this.data.delete) {\r\n return;\r\n }\r\n\r\n this.isLoading.set(true);\r\n this.data\r\n .delete()\r\n .pipe(finalize(() => this.isLoading.set(false)))\r\n .subscribe(() => this.context.completeWith());\r\n }\r\n\r\n protected onCancel(): void {\r\n this.context.completeWith({ canceled: true });\r\n }\r\n}\r\n","<div\r\n *transloco=\"let t\"\r\n class=\"wrapper\"\r\n>\r\n <div class=\"content\">\r\n <div class=\"header\">\r\n <h3 class=\"title\">{{ t(title) }}</h3>\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n icon=\"cuiIconX\"\r\n appearance=\"ghost\"\r\n [disabled]=\"isLoading()\"\r\n class=\"close-btn\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n </div>\r\n <div class=\"info\">\r\n @for (text of content; track text) {\r\n <p [innerHTML]=\"t(text)\"></p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"footer\">\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n (click)=\"onCancel()\"\r\n [disabled]=\"isLoading()\"\r\n appearance=\"secondary\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n [isLoaderShown]=\"isLoading()\"\r\n [disabled]=\"isDisabled\"\r\n [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\r\n appearance=\"destructive\"\r\n (click)=\"onDelete()\"\r\n >\r\n {{ t('YES_DELETE') }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TreeStruct } from '@cuby-ui/api';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiSelectedCategoryService {\r\n private readonly editingIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly creatingIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly categorySignal = signal<CuiNullable<TreeStruct>>(null);\r\n\r\n public readonly editingId = this.editingIdSignal.asReadonly();\r\n public readonly creatingId = this.creatingIdSignal.asReadonly();\r\n public readonly category = this.categorySignal.asReadonly();\r\n\r\n public setCurrentCategory(category: CuiNullable<TreeStruct>): void {\r\n this.categorySignal.set(category);\r\n }\r\n\r\n public setEditingId(id: string): void {\r\n this.editingIdSignal.set(id);\r\n this.clearCreatingId();\r\n }\r\n\r\n public setCreatingId(id: string): void {\r\n this.creatingIdSignal.set(id);\r\n this.clearEditingId();\r\n }\r\n\r\n public clearEditingId(): void {\r\n this.editingIdSignal.set('');\r\n }\r\n\r\n public clearCreatingId(): void {\r\n this.creatingIdSignal.set('');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { AbstractControl } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiHintModule } from '../../components';\r\n\r\n@Component({\r\n selector: 'cui-general-control-error-hint',\r\n imports: [CuiHintModule, TranslocoDirective],\r\n standalone: true,\r\n templateUrl: './general-control-error-hint.component.html',\r\n styleUrl: './general-control-error-hint.component.scss',\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class CuiGeneralControlErrorHintComponent {\r\n public readonly control = input.required<AbstractControl>();\r\n public readonly isVisible = input<boolean>();\r\n\r\n protected get isInvalid(): boolean {\r\n return this.isVisible() ?? (this.control().invalid && this.control().dirty);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (isInvalid) {\r\n @if (control().errors; as errors) {\r\n <cui-hint hintType=\"error\">\r\n @if (errors['required']) {\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n } @else if (errors['maxlength']) {\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: errors['maxlength'].requiredLength }) }}\r\n } @else if (errors['extraSpaces']) {\r\n {{ t('MUST_BE_WITHOUT_EXTRA_SPACES') }}\r\n } @else if (errors['min']) {\r\n {{ t('MIN_VALUE_MUST_BE_MORE_THAN', { value: errors['min'].min }) }}\r\n } @else if (errors['max']) {\r\n {{ t('MAX_VALUE_MUST_BE_LESS_THAN', { value: errors['max'].max }) }}\r\n }\r\n </cui-hint>\r\n }\r\n }\r\n</ng-container>\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n viewChild\r\n} from '@angular/core';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\nimport { CuiFormFieldModule, CuiHintModule, CuiIconButtonModule, CuiGhostInputComponent } from '../../../../components';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\n\r\n@Component({\r\n selector: 'cui-category-form',\r\n imports: [\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiIconButtonModule,\r\n CuiGeneralControlErrorHintComponent,\r\n CuiGhostInputComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './category-form.component.html',\r\n styleUrl: './category-form.component.scss',\r\n host: {\r\n '(click)': 'onHostClick($event)'\r\n },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryFormComponent implements OnInit {\r\n protected readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n protected readonly form = this.nonNullableFormBuilder.group({\r\n title: ['', cuiCreateDefaultValidators({ asyncDelay: 0 })]\r\n });\r\n protected readonly titleControl = this.form.controls.title;\r\n\r\n public readonly isDisabled = input<boolean>(false);\r\n public readonly defaultTitle = input<string>('');\r\n\r\n protected readonly created = output<string>();\r\n protected readonly canceled = output<void>();\r\n\r\n protected readonly input = viewChild.required('input', { read: ElementRef<HTMLInputElement> });\r\n\r\n protected get isTitleInvalid(): boolean {\r\n return this.titleControl.invalid && this.titleControl.dirty;\r\n }\r\n\r\n protected get isSubmitButtonDisabled(): boolean {\r\n return this.isDisabled() || this.form.invalid;\r\n }\r\n\r\n constructor() {\r\n this.initInputDisableStateSubscription();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initDefaultTitle();\r\n this.initInputFocus();\r\n }\r\n\r\n protected onHostClick(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected onSubmit(): void {\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n\r\n this.created.emit(this.form.value.title!);\r\n }\r\n\r\n protected onCancel(event: Event): void {\r\n event.stopPropagation();\r\n this.canceled.emit();\r\n }\r\n\r\n private initInputDisableStateSubscription(): void {\r\n effect(() => {\r\n if (this.isDisabled()) {\r\n this.titleControl.disable();\r\n\r\n return;\r\n }\r\n\r\n this.titleControl.enable();\r\n });\r\n }\r\n\r\n private initDefaultTitle(): void {\r\n this.form.patchValue({ title: this.defaultTitle() });\r\n }\r\n\r\n private initInputFocus(): void {\r\n Promise.resolve().then(() => this.input().nativeElement.focus());\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <form\r\n [formGroup]=\"form\"\r\n class=\"form\"\r\n (ngSubmit)=\"onSubmit()\"\r\n >\r\n <div class=\"input\">\r\n <input\r\n #input\r\n cuiGhostInput\r\n formControlName=\"title\"\r\n type=\"text\"\r\n placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\r\n [isError]=\"isTitleInvalid\"\r\n (keyup)=\"$event.preventDefault()\"\r\n />\r\n <cui-general-control-error-hint [control]=\"titleControl\" />\r\n </div>\r\n <button\r\n cuiIconButton\r\n type=\"submit\"\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"isSubmitButtonDisabled\"\r\n class=\"button\"\r\n ></button>\r\n </form>\r\n <button\r\n cuiIconButton\r\n type=\"button\"\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n (click)=\"onCancel($event)\"\r\n [disabled]=\"isDisabled()\"\r\n class=\"button\"\r\n ></button>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../../../../components';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\n\r\n@Component({\r\n selector: 'cui-create-category-item',\r\n imports: [CuiSvgModule, CuiCategoryFormComponent],\r\n standalone: true,\r\n templateUrl: './create-category-item.component.html',\r\n styleUrl: './create-category-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCreateCategoryItemComponent {\r\n protected readonly created = output<string>();\r\n protected readonly canceled = output<void>();\r\n\r\n public readonly isDisabled = input<boolean>(false);\r\n\r\n protected onSubmit(title: string): void {\r\n this.created.emit(title);\r\n }\r\n\r\n protected onCancel(): void {\r\n this.canceled.emit();\r\n }\r\n}\r\n","<cui-svg\r\n icon=\"cuiIconFolder\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n/>\r\n<cui-category-form\r\n [isDisabled]=\"isDisabled()\"\r\n (created)=\"onSubmit($event)\"\r\n (canceled)=\"onCancel()\"\r\n/>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiTreeStructNavigatorApiService, TreeStruct } from '@cuby-ui/api';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiButtonModule, CuiIconButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiSelectedCategoryService } from '../../services';\r\nimport { CuiCategoriesListComponent } from '../categories-list';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\nimport { CuiCreateCategoryItemComponent } from '../create-category-item';\r\n\r\n@Component({\r\n selector: 'cui-category-item',\r\n imports: [\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiCategoryFormComponent,\r\n CuiCreateCategoryItemComponent,\r\n forwardRef(() => CuiCategoriesListComponent)\r\n ],\r\n standalone: true,\r\n templateUrl: './category-item.component.html',\r\n styleUrl: './category-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryItemComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly isStageCreationLoading = signal(false);\r\n protected readonly stageStorageChildren = signal<TreeStruct[]>([]);\r\n protected readonly areChildrenOpened = signal(false);\r\n protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\r\n this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\r\n );\r\n protected readonly doChildrenExist = computed(\r\n () => this.stageStorage().children.length || this.stageStorageChildren().length\r\n );\r\n protected readonly isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());\r\n protected readonly stageStorageIcon = computed<CuiIcon>(() =>\r\n this.areChildrenOpened() && this.doChildrenExist() ? 'cuiIconFolderOpen' : 'cuiIconFolder'\r\n );\r\n protected readonly isSubcategoryCreating = signal(false);\r\n protected readonly isSubcategoryCreationLoading = signal(false);\r\n protected readonly alignItems = computed(() => (this.isTitleEdit() ? 'flex-start' : 'center'));\r\n protected readonly isTitleEdit = computed(\r\n () => this.selectedCategoryService.editingId() === this.stageStorage().id\r\n );\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.stageStorage().id && this.isSubcategoryCreating()) ||\r\n this.isSubcategoryCreationLoading()\r\n );\r\n\r\n public readonly stageStorage = input.required<TreeStruct>();\r\n public readonly categoryTitle = signal<string>('');\r\n public readonly category = computed(() => ({\r\n ...this.stageStorage(),\r\n title: this.categoryTitle() || this.stageStorage().title\r\n }));\r\n\r\n constructor() {\r\n this.initStageStorageChildren();\r\n }\r\n\r\n protected onSelectCategory(): void {\r\n this.selectedCategoryService.setCurrentCategory(this.category());\r\n }\r\n\r\n protected onToggleChildren(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.areChildrenOpened.update((value) => !value);\r\n\r\n if (this.areChildrenOpened()) {\r\n return;\r\n }\r\n\r\n this.isSubcategoryCreating.set(false);\r\n }\r\n\r\n protected onTitleChanged(title: string): void {\r\n this.onCancelTitleEdit();\r\n\r\n if (title === this.category().title) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.updateTitle(this.stageStorage().id, title).subscribe(() => {\r\n this.categoryTitle.set(title);\r\n\r\n if (this.category().id === this.selectedCategoryService.category()?.id) {\r\n this.selectedCategoryService.setCurrentCategory(this.category());\r\n }\r\n });\r\n }\r\n\r\n protected onStartTitleEdit(event?: Event): void {\r\n event?.stopPropagation();\r\n\r\n this.selectedCategoryService.setEditingId(this.stageStorage().id);\r\n this.onCreatingSubcategoryCanceled();\r\n }\r\n\r\n protected onCancelTitleEdit(): void {\r\n this.selectedCategoryService.clearEditingId();\r\n }\r\n\r\n protected onStartCreatingSubcategory(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.isSubcategoryCreating.set(true);\r\n this.areChildrenOpened.set(true);\r\n this.selectedCategoryService.setCreatingId(this.stageStorage().id);\r\n }\r\n\r\n protected onCreateNewSubcategoryCategory(title: string): void {\r\n this.isSubcategoryCreating.set(false);\r\n this.isSubcategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorageToParent(this.stageStorage().id, title)\r\n .pipe(finalize(this.isSubcategoryCreationLoading.set.bind(this.isSubcategoryCreationLoading, false)))\r\n .subscribe((stateStorage) => {\r\n this.stageStorageChildren.update((value) => [...value, stateStorage]);\r\n });\r\n }\r\n\r\n protected onCreatingSubcategoryCanceled(): void {\r\n this.isSubcategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initStageStorageChildren(): void {\r\n effect(() => {\r\n if (!this.areChildrenOpened() || this.stageStorageChildren().length) {\r\n return;\r\n }\r\n\r\n const stageStorage = this.stageStorage();\r\n const stageStorageChildren = stageStorage.children;\r\n\r\n if (!stageStorageChildren.length) {\r\n return;\r\n }\r\n\r\n if (typeof stageStorageChildren[0] !== 'string') {\r\n this.stageStorageChildren.set(stageStorageChildren as TreeStruct[]);\r\n\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStoragesByParent(stageStorage.id).subscribe((storage) => {\r\n this.stageStorageChildren.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, storage] : [storage]\r\n );\r\n });\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<ng-container *cuiLet=\"category() as stage\">\r\n <button\r\n type=\"button\"\r\n [style.align-items]=\"alignItems()\"\r\n [disabled]=\"isStageCreationLoading()\"\r\n class=\"category\"\r\n (click)=\"onSelectCategory()\"\r\n >\r\n <button\r\n type=\"button\"\r\n ccFlexContainerDirective\r\n class=\"category__open-close-button\"\r\n [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\r\n (click)=\"onToggleChildren($event)\"\r\n >\r\n <cui-svg\r\n [icon]=\"openCloseButtonIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n </button>\r\n <cui-svg\r\n [icon]=\"stageStorageIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n @if (isTitleEdit()) {\r\n <cui-category-form\r\n [defaultTitle]=\"stage.title\"\r\n (created)=\"onTitleChanged($event)\"\r\n (canceled)=\"onCancelTitleEdit()\"\r\n />\r\n } @else {\r\n <span class=\"category__title\">{{ stage.title }}</span>\r\n\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n class=\"category__add-subcategory-button\"\r\n (click)=\"onStartTitleEdit($event)\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n class=\"category__add-subcategory-button\"\r\n (click)=\"onStartCreatingSubcategory($event)\"\r\n ></button>\r\n }\r\n </button>\r\n <div\r\n [hidden]=\"!areChildrenOpened()\"\r\n class=\"list-wrapper\"\r\n >\r\n <cui-categories-list [stageStorages]=\"stageStorageChildren()\" />\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isSubcategoryCreationLoading()\"\r\n (created)=\"onCreateNewSubcategoryCategory($event)\"\r\n (canceled)=\"onCreatingSubcategoryCanceled()\"\r\n />\r\n }\r\n </div>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\r\nimport { TreeStruct } from '@cuby-ui/api';\r\n\r\nimport { CuiIconButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiCategoryItemComponent } from '../category-item';\r\n\r\n@Component({\r\n selector: 'cui-categories-list',\r\n imports: [CuiIconButtonModule, CuiSvgModule, forwardRef(() => CuiCategoryItemComponent)],\r\n standalone: true,\r\n templateUrl: './categories-list.component.html',\r\n styleUrl: './categories-list.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesListComponent {\r\n public readonly stageStorages = input.required<TreeStruct[]>();\r\n}\r\n","@for (stageStorage of stageStorages(); track stageStorage.id) {\r\n <cui-category-item [stageStorage]=\"stageStorage\" />\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiTreeStructNavigatorApiService, TreeStruct, TreeStructType } from '@cuby-ui/api';\r\n\r\nimport { CuiCategoriesListComponent, CuiCreateCategoryItemComponent } from './components';\r\nimport { CuiEmptyStateComponent, CuiButtonModule, CuiDropdownDirective, CuiDropdownWrapperComponent } from '../../components';\r\nimport { CuiSelectedCategoryService } from './services';\r\n\r\n@Component({\r\n selector: 'cui-categories',\r\n imports: [\r\n CuiButtonModule,\r\n CuiLetDirective,\r\n CuiDropdownDirective,\r\n CuiDropdownWrapperComponent,\r\n CuiEmptyStateComponent,\r\n CuiCreateCategoryItemComponent,\r\n CuiCategoriesListComponent,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './categories.component.html',\r\n styleUrls: ['./categories.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly stageStorages = signal<CuiNullable<TreeStruct[]>>(null);\r\n protected readonly isCategoryCreating = signal(false);\r\n protected readonly isCategoryCreationLoading = signal(false);\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.treeStructType() && this.isCategoryCreating()) ||\r\n this.isCategoryCreationLoading()\r\n );\r\n\r\n protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\r\n\r\n public readonly treeStructType = input.required<TreeStructType>();\r\n public readonly buttonId = input<string>();\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n this.initSelectCategoryEffect();\r\n }\r\n\r\n protected onOpenStageStorages(): void {\r\n this.selectedCategoryService.clearCreatingId();\r\n this.selectedCategoryService.clearEditingId();\r\n\r\n if (this.stageStorages()?.length) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStorages(this.treeStructType()).subscribe((stageStorage) => {\r\n this.stageStorages.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, stageStorage] : [stageStorage]\r\n );\r\n });\r\n }\r\n\r\n protected onStartCreatingNewCategory(): void {\r\n this.isCategoryCreating.set(true);\r\n this.selectedCategoryService.setCreatingId(this.treeStructType());\r\n }\r\n\r\n protected onCreateNewCategory(title: string): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n this.isCategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorage(title, this.treeStructType())\r\n .pipe(finalize(this.isCategoryCreationLoading.set.bind(this, false)))\r\n .subscribe((stateStorage) => this.stageStorages.update((value) => [...(value || []), stateStorage]));\r\n }\r\n\r\n protected onCreatingCategoryCanceled(): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initSelectCategoryEffect(): void {\r\n effect(() => {\r\n this.selectedCategoryService.category();\r\n this.dropdown().close();\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<button\r\n [attr.id]=\"buttonId()\"\r\n #dropdown=\"cuiDropdown\"\r\n [cuiDropdown]=\"dropdownContent\"\r\n orientation=\"stretch\"\r\n type=\"button\"\r\n class=\"target\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"onOpenStageStorages()\"\r\n>\r\n <ng-content />\r\n</button>\r\n\r\n<ng-template #dropdownContent>\r\n <cui-dropdown-wrapper\r\n *transloco=\"let t\"\r\n [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\r\n width=\"100%\"\r\n class=\"dropdown-wrapper\"\r\n >\r\n <ng-container *cuiLet=\"stageStorages() as stageStorages\">\r\n @if (stageStorages && stageStorages?.length) {\r\n <cui-categories-list [stageStorages]=\"stageStorages\" />\r\n }\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isCategoryCreationLoading()\"\r\n (created)=\"onCreateNewCategory($event)\"\r\n (canceled)=\"onCreatingCategoryCanceled()\"\r\n />\r\n } @else if (!stageStorages?.length) {\r\n <cui-empty-state\r\n class=\"empty\"\r\n [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\r\n />\r\n }\r\n </ng-container>\r\n <button\r\n ccDropdownFooterContent\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n (click)=\"onStartCreatingNewCategory()\"\r\n >\r\n {{ t('NEW_CATEGORY') }}\r\n </button>\r\n </cui-dropdown-wrapper>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { CuiFrameApiService, FragmentType, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiIdService, type CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\r\n\r\nimport {\r\n CuiAccordionModule,\r\n CuiAlertService,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../components';\r\nimport { CuiTooltip } from '../../directives';\r\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../editor';\r\nimport { cuiCreateDefaultValidators } from '../../utils';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport { CuiUtilityFormGroup, CuiUtilityFormValues } from './utility-info.options';\r\n\r\n@Component({\r\n selector: 'cui-utility-info',\r\n imports: [\r\n CuiAccordionModule,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n forwardRef(() => CuiEditorBlockComponent),\r\n CuiGeneralControlErrorHintComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiTooltip\r\n ],\r\n standalone: true,\r\n templateUrl: './utility-info.component.html',\r\n styleUrl: './utility-info.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityInfoComponent {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly formBuilder = inject(NonNullableFormBuilder);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n private readonly cuiAlertService = inject(CuiAlertService);\r\n private readonly cuiIdService = inject(CuiIdService);\r\n\r\n protected readonly CONTROL_DELAY = 500;\r\n protected readonly MAX_FILE_SIZE = 20971520;\r\n\r\n protected readonly titleId = this.cuiIdService.generate();\r\n protected readonly descriptionId = this.cuiIdService.generate();\r\n protected readonly form = this.formBuilder.group<CuiUtilityFormGroup>({\r\n title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\r\n description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\r\n });\r\n protected readonly isDescriptionModalOpen = signal(false);\r\n protected readonly isDescriptionEmpty = signal(false);\r\n protected readonly editorId = signal<CuiNullable<string>>(null);\r\n protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\r\n protected readonly thumbnailUrl = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.resource) {\r\n return thumbnail.resource;\r\n }\r\n\r\n return this.baseResourceUrl() + thumbnail!.fileId!;\r\n });\r\n protected readonly uploadButtonName = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.name) {\r\n return this.translocoService.translate('REPLACE_FILE');\r\n }\r\n\r\n return this.translocoService.translate('UPLOAD_FILE');\r\n });\r\n\r\n protected heading: CuiNullable<string> = null;\r\n\r\n protected get controls(): CuiUtilityFormGroup {\r\n return this.form.controls;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.controls.title.invalid && this.controls.title.dirty;\r\n }\r\n\r\n protected get isDescriptionError(): boolean {\r\n return this.controls.description.invalid && this.controls.description.dirty;\r\n }\r\n\r\n public readonly title = input.required<string>();\r\n public readonly framerId = input.required<string>();\r\n public readonly baseResourceUrl = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n public readonly formChanged = output<Partial<CuiUtilityFormValues>>();\r\n public readonly isFormValidChanged = output<boolean>();\r\n\r\n constructor() {\r\n this.initUtilityEffect();\r\n }\r\n\r\n protected onSelectFile(): void {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = 'image/jpg, image/jpeg, image/png, video/mp4';\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);\r\n };\r\n\r\n input.click();\r\n }\r\n\r\n protected onEditorEmpty(isEmpty: boolean): void {\r\n this.isDescriptionEmpty.set(isEmpty);\r\n this.isFormValidChanged.emit(this.checkFormValidation());\r\n }\r\n\r\n protected onRemoveThumbnail(): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n this.frameApiService.deleteResource(frameId, fragmentId).subscribe(() => {\r\n this.thumbnail.update((prev) => ({ ...prev!, fileId: null, name: null, resource: null }));\r\n });\r\n }\r\n\r\n protected onToggleDescriptionModal(): void {\r\n this.isDescriptionModalOpen.update((prev) => !prev);\r\n }\r\n\r\n private initUtilityEffect(): void {\r\n const effectRef = effect(() => {\r\n const title = this.title();\r\n\r\n if (!title) {\r\n return;\r\n }\r\n\r\n this.initTitleSubscriptions();\r\n this.initFrameFragments();\r\n effectRef.destroy();\r\n });\r\n }\r\n\r\n private initTitleSubscriptions(): void {\r\n this.form.patchValue({ title: this.title() });\r\n\r\n this.form.statusChanges\r\n .pipe(takeUntilDestroyed(this.destroy))\r\n .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\r\n\r\n this.form.valueChanges\r\n .pipe(\r\n takeUntilDestroyed(this.destroy),\r\n startWith(this.form.value),\r\n pairwise(),\r\n debounceTime(this.CONTROL_DELAY),\r\n map(([prev, current]) => this.compareFormValues([prev, current]))\r\n )\r\n .subscribe((value) => {\r\n this.formChanged.emit(value);\r\n });\r\n }\r\n\r\n private initFrameFragments(): void {\r\n const frameId = this.framerId();\r\n\r\n if (!frameId) {\r\n return;\r\n }\r\n\r\n this.frameApiService.getFrame(frameId).subscribe((frame) => {\r\n frame.fragments.forEach((fragment) => {\r\n if (fragment.type === FragmentType.jText) {\r\n this.editorId.set(fragment?.id);\r\n }\r\n\r\n if (fragment.type === FragmentType.resourceFile) {\r\n this.setResourceFile(fragment as ResourceFragment);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private compareFormValues([prevGroup, currentGruop]: Partial<CuiUtilityFormValues>[]): Partial<CuiUtilityFormValues> {\r\n const keys = Object.keys(currentGruop) as (keyof CuiUtilityFormGroup)[];\r\n const changedFields: Record<string, unknown> = {};\r\n\r\n keys.forEach((key) => {\r\n const prev = prevGroup[key];\r\n const current = currentGruop[key];\r\n\r\n if (prev === current) {\r\n return;\r\n }\r\n\r\n changedFields[key] = current;\r\n });\r\n\r\n return changedFields;\r\n }\r\n\r\n private setResourceFile(resource: ResourceFragment): void {\r\n const url = this.baseResourceUrl() + resource.fileId!;\r\n\r\n this.thumbnail.set(resource);\r\n\r\n if (!url || resource?.name?.split('.').pop() !== 'mp4') {\r\n return;\r\n }\r\n\r\n this.getCaptureFromVideo(url);\r\n }\r\n\r\n private getFile(files: FileList): void {\r\n const file = files.item(0);\r\n\r\n if (!file) {\r\n return;\r\n }\r\n\r\n if (file.size > this.MAX_FILE_SIZE) {\r\n this.cuiAlertService\r\n .open(this.translocoService.translate('INVALID_FILE_SIZE'), {\r\n status: 'error'\r\n })\r\n .subscribe();\r\n\r\n return;\r\n }\r\n\r\n const isVideo = file.name.split('.').at(-1) === 'mp4';\r\n const url = URL.createObjectURL(file);\r\n\r\n if (isVideo) {\r\n this.getCaptureFromVideo(url, file);\r\n } else {\r\n this.thumbnail.update((prev) => ({ ...prev!, name: file.name, resource: url }));\r\n }\r\n\r\n this.uploadFile(file);\r\n }\r\n\r\n private uploadFile(file: File): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('resource', file);\r\n\r\n this.frameApiService.uploadResource(formData, frameId, fragmentId).subscribe();\r\n }\r\n\r\n private getCaptureFromVideo(url: string, file?: File): 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 = 184;\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 const videoCaptureUrl = URL.createObjectURL(blob);\r\n this.thumbnail.update((prev) => ({\r\n ...prev!,\r\n name: (file?.name || prev?.name)!,\r\n resource: videoCaptureUrl\r\n }));\r\n });\r\n };\r\n\r\n video.load();\r\n }\r\n\r\n private checkFormValidation(): boolean {\r\n console.log(this.isDescriptionEmpty(), this.form.invalid);\r\n return !this.isDescriptionEmpty() && !this.form.invalid;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <section class=\"content\">\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"titleId\">\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"titleId\"\r\n [cuiTextFieldPlaceholder]=\"t('ADD_TITLE')\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n [formControl]=\"form.controls.title\"\r\n />\r\n @if (isTitleError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.title\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"descriptionId\">\r\n {{ t('SHORT_DESCRIPTION') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"descriptionId\"\r\n cuiTextFieldPlaceholder=\"{{t('SHORT_DESCRIPTION')}}...\"\r\n [cuiTextFieldIsError]=\"isDescriptionError\"\r\n [formControl]=\"form.controls.description\"\r\n />\r\n @if (isDescriptionError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.description\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <section class=\"file\">\r\n <span class=\"title\">{{ t('THUMBNAIL') }}</span>\r\n <div class=\"content__upload\">\r\n <div class=\"content__upload-file\">\r\n @if (thumbnail()?.name; as fileId) {\r\n <div class=\"image\">\r\n <span class=\"image__name\">{{ thumbnail()?.name }}</span>\r\n <!-- TODO: ngSrc -->\r\n <img class=\"image__view\" [src]=\"thumbnailUrl()\" height=\"120\" width=\"184\" alt=\"Thumbnail\" />\r\n </div>\r\n }\r\n <button type=\"button\" cuiButton appearance=\"outlined-gray\" size=\"xxs\" icon=\"cuiIconUpload\"\r\n (click)=\"onSelectFile()\">\r\n {{ uploadButtonName() }}\r\n </button>\r\n @if (thumbnail()?.name) {\r\n <button class=\"content__remove-button\" cuiButton appearance=\"link\" size=\"sm\" type=\"button\"\r\n (click)=\"onRemoveThumbnail()\">\r\n {{ t('REMOVE') }}\r\n </button>\r\n }\r\n <span class=\"content__accepted\">\r\n {{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB\r\n </span>\r\n </div>\r\n </div>\r\n </section>\r\n @if (editorId(); as editorId) {\r\n <cui-editor-block\r\n [title]=\"form.controls.title.value || title()\"\r\n [config]=\"config()\"\r\n [editorId]=\"editorId\"\r\n [required]=\"true\"\r\n (editorEmpty)=\"onEditorEmpty($event)\"\r\n ></cui-editor-block>\r\n }\r\n </section>\r\n</ng-container>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\n@Injectable()\r\nexport class CuiCheckListBlockService {\r\n private readonly checkListItemsSignal =\r\n signal<CuiNullable<NodeCheckListItem<NodeCheckListItemContentType>[]>>(null);\r\n private readonly componentIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly isDragAvailableSignal = signal<boolean>(false);\r\n\r\n public readonly checkListItems = this.checkListItemsSignal.asReadonly();\r\n public readonly componentId = this.componentIdSignal.asReadonly();\r\n public readonly isDragAvailable = this.isDragAvailableSignal.asReadonly();\r\n\r\n public setCheckListItems(checkListItems: NodeCheckListItem<NodeCheckListItemContentType>[]): void {\r\n this.checkListItemsSignal.set(checkListItems);\r\n }\r\n\r\n public addCheckListItem(checkListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n this.checkListItemsSignal.update((value) => (value ? [...value, checkListItem] : [checkListItem]));\r\n }\r\n\r\n public updateCheckListItem(updatedCheckListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n if (!this.checkListItemsSignal()) {\r\n return;\r\n }\r\n\r\n this.checkListItemsSignal.update((value) => {\r\n const updateCheckListItemIndex = value!.findIndex(\r\n (checkListItem) => checkListItem.id === updatedCheckListItem.id\r\n );\r\n\r\n value![updateCheckListItemIndex] = updatedCheckListItem;\r\n\r\n return [...value!];\r\n });\r\n }\r\n\r\n public deleteCheckListItem(id: string): void {\r\n if (!this.checkListItemsSignal()) {\r\n return;\r\n }\r\n\r\n this.checkListItemsSignal.update((value) => {\r\n const deletedItemIndex = value!.findIndex((checklistItem) => checklistItem.id === id);\r\n\r\n value!.splice(deletedItemIndex, 1);\r\n\r\n return [...value!];\r\n });\r\n }\r\n\r\n public setComponentId(id: string): void {\r\n this.componentIdSignal.set(id);\r\n }\r\n\r\n public toggleDragPermission(isDragButtonVisible: boolean): void {\r\n this.isDragAvailableSignal.set(isDragButtonVisible);\r\n }\r\n}\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListActionItemContent, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport {\r\n CuiCheckboxModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiRadioModule,\r\n CuiSelectModule,\r\n CuiTextareaModule,\r\n CuiToggleModule\r\n} from '../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-card',\r\n imports: [\r\n CuiCheckboxModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiRadioModule,\r\n CuiSelectModule,\r\n CuiTextareaModule,\r\n CuiTextFieldControllerModule,\r\n CuiToggleModule,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-card.component.html',\r\n styleUrl: './checklist-block-list-item-action-card.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionCardComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n public actionForm!: FormGroup;\r\n\r\n public readonly purposeType = input<string>();\r\n public readonly isConsiderationNeeded = input<boolean>(false);\r\n public readonly actionInfo = input.required<NodeCheckListActionItemContent>();\r\n\r\n public readonly consideredCorrectChanged = output<string>();\r\n public readonly checkListActionChanged = output<NodeCheckListItemContentAction>();\r\n\r\n protected readonly _actionInfo = signal<CuiNullable<NodeCheckListActionItemContent>>(null);\r\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n );\r\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n );\r\n\r\n protected readonly isConsideredCorrectControl = this.nonNullableFormBuilder.control({\r\n value: false,\r\n disabled: false\r\n });\r\n\r\n protected get photoGroup(): FormGroup {\r\n return this.actionForm.get('photo') as FormGroup;\r\n }\r\n\r\n protected get commentGroup(): FormGroup {\r\n return this.actionForm.get('comment') as FormGroup;\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._actionInfo.set(this.actionInfo());\r\n\r\n if (!this.purposeType() || !this.isConsiderationNeeded()) {\r\n return;\r\n }\r\n\r\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initActionForm();\r\n }\r\n\r\n private initActionForm(): void {\r\n this.actionForm = this.nonNullableFormBuilder.group({\r\n photo: this.nonNullableFormBuilder.group({\r\n isEnable: this.attachmentPhotoAction().isEnable,\r\n isRequired: {\r\n value: this.attachmentPhotoAction().isRequired,\r\n disabled: !this.attachmentPhotoAction().isEnable\r\n }\r\n }),\r\n comment: this.nonNullableFormBuilder.group({\r\n isEnable: this.textAreaAction().isEnable,\r\n isRequired: {\r\n value: this.textAreaAction().isRequired,\r\n disabled: !this.textAreaAction().isEnable\r\n }\r\n })\r\n });\r\n\r\n this.initActionFormSegmentsSubscriptions();\r\n\r\n if (!this.isConsiderationNeeded()) {\r\n return;\r\n }\r\n\r\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n }\r\n\r\n private initActionFormSegmentsSubscriptions(): void {\r\n this.isConsideredCorrectControlSubscription();\r\n this.initPhotoGroupSubscription();\r\n this.initCommentGroupSubscription();\r\n }\r\n\r\n private isConsideredCorrectControlSubscription(): void {\r\n this.isConsideredCorrectControl.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.consideredCorrectChanged.emit(this._actionInfo()!.id));\r\n }\r\n\r\n private initPhotoGroupSubscription(): void {\r\n this.photoGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.photoGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.photoGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.attachmentPhotoAction().id,\r\n ...this.photoGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.photoGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.attachmentPhotoAction().id,\r\n ...this.photoGroup.value\r\n });\r\n });\r\n }\r\n\r\n private initCommentGroupSubscription(): void {\r\n this.commentGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.commentGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.commentGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.textAreaAction().id,\r\n ...this.commentGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.commentGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.textAreaAction().id,\r\n ...this.commentGroup.value\r\n });\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div\r\n class=\"card\"\r\n [formGroup]=\"actionForm\"\r\n >\r\n <div class=\"title-container\">\r\n <span class=\"title\">{{ actionInfo().title }}</span>\r\n @if (isConsiderationNeeded()) {\r\n <label\r\n cuiLabel\r\n class=\"title__input\"\r\n >\r\n <input\r\n cuiRadio\r\n type=\"radio\"\r\n [checked]=\"actionInfo().considerCorrect\"\r\n [formControl]=\"isConsideredCorrectControl\"\r\n [value]=\"true\"\r\n />\r\n {{ t('CONSIDER_CORRECT') }}\r\n </label>\r\n }\r\n </div>\r\n <div class=\"blocks\">\r\n <div\r\n class=\"block-card\"\r\n [formGroup]=\"photoGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"block-card\"\r\n [formGroup]=\"commentGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-with-verification',\r\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-with-verification.component.html',\r\n styleUrl: './checklist-block-list-item-action-with-verification.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithVerificationComponent {\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n protected onConsiderCorrectChanged(actionId: string, purposeType: string): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: purposeType,\r\n actionId\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemIsConsideredCorrect(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n\r\n protected onCheckListActionChanged(\r\n actionContent: NodeCheckListItemContentAction,\r\n actionId: string,\r\n purposeType: string\r\n ): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: purposeType,\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemActionContent(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n <div class=\"action\">\r\n <div class=\"action__header action__assignee-header\">\r\n {{ t('CONDITIONAL_LOGIC_FOR_ASSIGNEE') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'ASSIGN'\"\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n [isConsiderationNeeded]=\"true\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id, 'ASSIGN')\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'ASSIGN'\"\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n [isConsiderationNeeded]=\"true\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id, 'ASSIGN')\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action\">\r\n <div class=\"action__header action__approver-header\">\r\n {{ t('CONDITIONAL_LOGIC_FOR_APPROVER') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'APPROVE'\"\r\n [actionInfo]=\"checkListItemContent.actionsApprove![0]\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![0].id, 'APPROVE')\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'APPROVE'\"\r\n [actionInfo]=\"checkListItemContent.actionsApprove![1]\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![1].id, 'APPROVE')\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-without-verification',\r\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-without-verification.component.html',\r\n styleUrl: './checklist-block-list-item-action-without-verification.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithoutVerificationComponent {\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n protected onCheckListActionChanged(actionContent: NodeCheckListItemContentAction, actionId: string): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: 'ASSIGN',\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemActionContent(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n <div class=\"action\">\r\n <div class=\"action__header\">\r\n {{ t('CONDITIONAL_LOGIC') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id)\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id)\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { FormControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n CuiContextMenuModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../../widgets';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-title-control',\r\n imports: [\r\n CuiContextMenuModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextFieldControllerModule,\r\n CuiGeneralControlErrorHintComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-title-control.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockTitleControlComponent {\r\n public readonly control = input.required<FormControl>();\r\n\r\n protected get isTitleError(): boolean {\r\n return this.control().invalid && this.control().dirty;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <cui-form-field>\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"title\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [formControl]=\"control()\"\r\n cuiTextFieldId=\"title\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\r\n />\r\n <cui-general-control-error-hint [control]=\"control()\" />\r\n </cui-form-field>\r\n</ng-container>\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport type { OnInit, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder } from '@angular/forms';\r\nimport { CuiElementDirective, CuiLetDirective, CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\r\nimport { CuiTreeStructApiService, CuiNodeChecklistApiService, NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiTooltip } from '../../../../directives';\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiDialogService, CuiLabelModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiCheckListBlockService } from '../../services/checklist-block.service';\r\nimport { CuiChecklistBlockTitleControlComponent } from '../checklist-block-title-control';\r\nimport { CuiNodeCheckListItemWithOption } from './checklist-block-list-item-container.options';\r\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../../../editor';\r\nimport { CuiDeleteModalComponent } from '../../../../widgets';\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-container',\r\n imports: [\r\n CuiTooltip,\r\n CuiEditorBlockComponent,\r\n CuiChecklistBlockTitleControlComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiElementDirective,\r\n CuiLabelModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n NgComponentOutlet,\r\n TranslocoDirective,\r\n CuiDragPointerDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-container.component.html',\r\n styleUrl: './checklist-block-list-item-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListItemContainerComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly cuiDialogService = inject(CuiDialogService);\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n\r\n protected readonly DEFAULT_CONTROL_DELAY = 700;\r\n\r\n protected readonly isOpen = signal(false);\r\n\r\n public readonly checkListBlockItem = input.required<CuiCheckListBlockItem>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly index = input<number>(0);\r\n\r\n protected readonly componentId = this.checkListBlockService.componentId;\r\n protected readonly rotate = computed(() => `rotate(${this.isOpen() ? '0deg' : '-90deg'})`);\r\n protected readonly headerText = computed(() =>\r\n this.checkListItem().title ? this.checkListItem().title : this.translocoService.translate('UNTITLED')\r\n );\r\n protected readonly checkListItem = computed<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n () => this.checkListBlockItem().content\r\n );\r\n protected readonly checkListItemComponent = computed<Type<unknown>>(() => this.checkListBlockItem().component);\r\n protected readonly checkListItemWithOptions = computed<CuiNodeCheckListItemWithOption<NodeCheckListItemContentType>>(\r\n () => ({\r\n ...this.checkListItem(),\r\n options: [\r\n {\r\n label: this.translocoService.translate('DUPLICATE'),\r\n icon: 'cuiIconCopy'\r\n },\r\n {\r\n label: this.translocoService.translate('DELETE'),\r\n icon: 'cuiIconTrash',\r\n color: 'var(--cui-danger)',\r\n command: this.openDeleteChecklistNodeModal.bind(this)\r\n }\r\n ]\r\n })\r\n );\r\n protected readonly headerBorderColor = computed(() => {\r\n const checkListItem = this.checkListItem();\r\n\r\n if (checkListItem.content.actionsApprove !== null) {\r\n return 'var(--cui-violet-bg)';\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n return 'var(--cui-cyan-bg)';\r\n }\r\n\r\n return null;\r\n });\r\n protected readonly iconChecklistType = computed(() => {\r\n const checkListItem = this.checkListItem();\r\n\r\n if (checkListItem.content.actionsApprove !== null) {\r\n return 'cuiIconUsersSm';\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n return 'cuiIconChecklist';\r\n }\r\n\r\n return 'cuiIconUserSm';\r\n });\r\n\r\n protected readonly titleControl = this.nonNullableFormBuilder.control(\r\n { value: '', disabled: true },\r\n cuiCreateDefaultValidators()\r\n );\r\n\r\n protected get isTitleEmpty(): boolean {\r\n return !this.titleControl.value;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.titleControl.invalid && this.titleControl.dirty;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initControls();\r\n }\r\n\r\n protected onRowToggle(): void {\r\n this.isOpen.update((prev) => !prev);\r\n }\r\n\r\n protected onAllowDrag(): void {\r\n this.checkListBlockService.toggleDragPermission(true);\r\n }\r\n\r\n protected onProhibitDrag(): void {\r\n this.checkListBlockService.toggleDragPermission(false);\r\n }\r\n\r\n private initControls(): void {\r\n this.initTitleControlValue();\r\n this.initTitleControlSubscription();\r\n }\r\n\r\n private initTitleControlValue(): void {\r\n this.titleControl.enable();\r\n this.titleControl.setValue(this.checkListItem().title ? this.checkListItem().title : '');\r\n }\r\n\r\n private initTitleControlSubscription(): void {\r\n this.titleControl.valueChanges\r\n .pipe(debounceTime(this.DEFAULT_CONTROL_DELAY), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n .subscribe((titleValue) => {\r\n if (this.titleControl.invalid) {\r\n return;\r\n }\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemTitle(this.checkListItem().id, titleValue)\r\n .subscribe(() => {\r\n this.checkListBlockService.updateCheckListItem({\r\n ...this.checkListItem(),\r\n title: titleValue\r\n });\r\n });\r\n });\r\n }\r\n\r\n private openDeleteChecklistNodeModal(): void {\r\n const content = ['THIS_ACTION_WILL_PERMANENTLY_DELETE_THE_ITEM_FROM_CHECKLIST'];\r\n\r\n this.cuiDialogService\r\n .open(CuiDeleteModalComponent, {\r\n data: {\r\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM_QUESTION',\r\n content,\r\n delete: () =>\r\n this.treeStructApiService.deleteTreeStructElement(this.componentId()!, this.checkListItem().id)\r\n }\r\n })\r\n .subscribe(\r\n (data) => data?.canceled || this.checkListBlockService.deleteCheckListItem(this.checkListItem().id)\r\n );\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItemWithOptions() as checkListItem\">\r\n <header\r\n class=\"header\"\r\n [style.border-left-color]=\"headerBorderColor()\"\r\n [class.header__opened]=\"isOpen()\"\r\n >\r\n <button\r\n class=\"icon-drag\"\r\n cuiButton\r\n cuiDragPointer\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"'cuiIconDragHandleDots'\"\r\n (mouseenter)=\"onAllowDrag()\"\r\n (mouseleave)=\"onProhibitDrag()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [style.transform]=\"rotate()\"\r\n icon=\"cuiIconCaretDownFillXxs\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <cui-svg\r\n [icon]=\"iconChecklistType()\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n <div class=\"header__content\">\r\n <div class=\"header__numeration\">{{ index() }}.</div>\r\n <div class=\"header__text\">{{ headerText() }}</div>\r\n </div>\r\n @if (isTitleEmpty) {\r\n <cui-svg\r\n [cuiTooltip]=\"t('TITLE_IS_REQUIRED')\"\r\n icon=\"cuiIconAlertTriangle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <button\r\n #actionButton=\"elementRef\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconMoreVertical\"\r\n class=\"list__context-menu-button\"\r\n ></button>\r\n <cui-context-menu\r\n [items]=\"checkListItem.options\"\r\n [target]=\"actionButton.nativeElement\"\r\n />\r\n </header>\r\n @if (isOpen()) {\r\n <div class=\"info\">\r\n <cui-checklist-block-title-control [control]=\"titleControl\" />\r\n <cui-editor-block\r\n [config]=\"config()\"\r\n [editorId]=\"checkListItem.textContainerId!\"\r\n [title]=\"titleControl.value\"\r\n />\r\n </div>\r\n <ng-container\r\n [ngComponentOutlet]=\"checkListItemComponent()\"\r\n [ngComponentOutletInputs]=\"{\r\n checkListItem: checkListItem\r\n }\"\r\n />\r\n }\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\r\nimport type { FormArray, FormGroup } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport {\r\n CuiAlertService,\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiInputModule,\r\n CuiInputNumberModule,\r\n CuiSvgModule,\r\n CuiTextareaModule\r\n} from '../../../../components';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\n\r\nimport type { CuiEvaluationCriteriaGroup } from '../checklist-block-list-item-evaluation';\r\n\r\nimport { CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\nimport type { CuiEvaluationCriteriaData } from './checklist-block-list-item-evaluation-criteria.options';\r\n\r\n@Component({\r\n selector: 'li[cuiChecklistBlockListItemEvaluationCriteria]',\r\n imports: [\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiInputModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiTextareaModule,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiInputNumberModule,\r\n CuiDragPointerDirective,\r\n CuiGeneralControlErrorHintComponent\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-evaluation-criteria.component.html',\r\n styleUrl: './checklist-block-list-item-evaluation-criteria.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationCriteriaComponent {\r\n private readonly cuiAlertService = inject(CuiAlertService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n private readonly EVALUATION_ALREADY_EXIST = `EVALUATION_ALREADY_EXIST`;\r\n\r\n private previousData: CuiNullable<CuiEvaluationCriteriaData> = null;\r\n\r\n protected readonly isEditMode = signal(false);\r\n protected readonly isNew = computed(() => this.criteriaGroup().controls.isNew.value);\r\n protected readonly gap = computed(() => (this.isEditMode() ? 8 : 0));\r\n protected readonly isLoading = computed(() => this.loadingIds()[this.criteriaGroup().controls.id.value]);\r\n protected readonly isDragEnabled = computed(() => !this.isEditMode() && !this.isLoading());\r\n\r\n protected get isEvaluationInvalid(): boolean {\r\n return this.criteriaGroup().controls.evaluation.invalid && this.isEditMode();\r\n }\r\n\r\n protected get isCriteriaInvalid(): boolean {\r\n return this.criteriaGroup().controls.criteria.invalid && this.isEditMode();\r\n }\r\n\r\n public readonly loadingIds = input.required<Record<string, boolean>>();\r\n public readonly index = input.required<number>();\r\n public readonly criteriaGroup = input.required<FormGroup<CuiEvaluationCriteriaGroup>>();\r\n public readonly evaluationCriteriaFormArray = input.required<FormArray<FormGroup>>();\r\n\r\n public readonly saveClicked = output<CuiEvaluationCriteriaGroup>();\r\n public readonly deleteClicked = output<string>();\r\n public readonly cancelClicked = output();\r\n\r\n constructor() {\r\n this.initNewEvaluationCriteriaEffect();\r\n this.initEditModeEffect();\r\n }\r\n\r\n protected onSave(): void {\r\n if (this.criteriaGroup().invalid) {\r\n return;\r\n }\r\n\r\n const evaluation = `${this.criteriaGroup().controls.evaluation.value}`;\r\n\r\n if (this.checkIsEvaluationCriteriaExist(evaluation)) {\r\n this.cuiAlertService\r\n .open(this.translocoService.translate(this.EVALUATION_ALREADY_EXIST, { evaluation }), {\r\n status: 'error'\r\n })\r\n .subscribe();\r\n\r\n return;\r\n }\r\n\r\n this.isEditMode.update((prev) => !prev);\r\n this.saveClicked.emit(this.criteriaGroup().controls);\r\n }\r\n\r\n protected onDelete(): void {\r\n const id = this.criteriaGroup().controls.id.value;\r\n\r\n this.deleteClicked.emit(id);\r\n }\r\n\r\n protected onCancel(): void {\r\n if (this.isNew()) {\r\n this.cancelClicked.emit();\r\n }\r\n\r\n this.isEditMode.update((prev) => !prev);\r\n\r\n if (!this.previousData) {\r\n return;\r\n }\r\n\r\n this.criteriaGroup().setValue({\r\n ...this.criteriaGroup().getRawValue(),\r\n ...this.previousData\r\n });\r\n }\r\n\r\n protected onToggleEditMode(): void {\r\n const { criteria, evaluation } = this.criteriaGroup().getRawValue();\r\n\r\n this.previousData = { criteria, evaluation };\r\n this.isEditMode.update((prev) => !prev);\r\n }\r\n\r\n // TODO: Компонент должен был быть построен исключительно на реактивных формах\r\n private initEditModeEffect(): void {\r\n effect(() => this.criteriaGroup()[this.isEditMode() ? 'enable' : 'disable']());\r\n }\r\n\r\n private initNewEvaluationCriteriaEffect(): void {\r\n effect(() => this.isEditMode.set(this.isNew()), { allowSignalWrites: true });\r\n }\r\n\r\n private checkIsEvaluationCriteriaExist(evaluation: string): boolean {\r\n const controls = this.evaluationCriteriaFormArray().controls;\r\n\r\n return controls.some((control: FormGroup<CuiEvaluationCriteriaGroup>) => {\r\n if (control.controls.id.value === this.criteriaGroup().controls.id.value) {\r\n return false;\r\n }\r\n\r\n return `${control.get('evaluation')?.value}` === evaluation;\r\n });\r\n }\r\n}\r\n","<div *transloco=\"let t\">\r\n <form\r\n *cuiLet=\"criteriaGroup() as form\"\r\n [formGroup]=\"form\"\r\n [class.form_edit]=\"isEditMode()\"\r\n clas=\"form\"\r\n >\r\n <div class=\"content\">\r\n <span class=\"index\">{{ index() }}.</span>\r\n @if (!isEditMode()) {\r\n <cui-svg\r\n cuiDragPointer\r\n icon=\"cuiIconDragHandleDots\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <div\r\n style.gap=\"{{gap()}}px\"\r\n class=\"wrapper\"\r\n >\r\n <cui-input-number\r\n formControlName=\"evaluation\"\r\n cuiTextFieldPlaceholder=\"0\"\r\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\r\n [min]=\"1\"\r\n [max]=\"99\"\r\n class=\"input-number\"\r\n />\r\n <textarea\r\n cuiTextarea\r\n formControlName=\"criteria\"\r\n [rows]=\"1\"\r\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\r\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\r\n class=\"textarea\"\r\n ></textarea>\r\n </div>\r\n @if (isEditMode()) {\r\n <button\r\n type=\"submit\"\r\n cuiIconButton\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"form.invalid\"\r\n class=\"button\"\r\n (click)=\"onSave()\"\r\n ></button>\r\n <button\r\n type=\"button\"\r\n cuiIconButton\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"button\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n } @else {\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n [disabled]=\"isLoading()\"\r\n (click)=\"onToggleEditMode()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconTrash\"\r\n [isLoaderShown]=\"isLoading()\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n }\r\n </div>\r\n <cui-general-control-error-hint\r\n [control]=\"form.controls.criteria\"\r\n class=\"error-hint\"\r\n />\r\n </form>\r\n</div>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiNullable, CuiDragDropData, CuiDragDropDirective, CuiDragListDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, of, Subject, switchMap, takeUntil } from 'rxjs';\r\nimport { CuiNodeChecklistApiService, NodeCheckListEvaluationCriteria, NodeCheckListEvaluationItemContent, NodeCheckListItem, NodeCheckListItemContentAction, NodeCheckListItemSwitchContentPointer, NodeCheckListItemSwitchContentRequestParams } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemEvaluationCriteriaComponent } from '../checklist-block-list-item-evaluation-criteria';\r\nimport {\r\n CuiButtonModule,\r\n CuiCheckboxModule,\r\n CuiContextMenuModule,\r\n CuiDialogService,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextareaModule,\r\n CuiToggleModule,\r\n CuiEmptyStateComponent\r\n} from '../../../../components';\r\nimport { CuiDeleteModalComponent } from '../../../../widgets';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\n\r\nimport type {\r\n CuiEvaluationCriteriaElementData,\r\n CuiEvaluationCriteriaGroup\r\n} from './checklist-block-list-item-evaluation.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-evaluation',\r\n imports: [\r\n CuiCheckListBlockListItemEvaluationCriteriaComponent,\r\n CuiButtonModule,\r\n CuiCheckboxModule,\r\n CuiContextMenuModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextareaModule,\r\n CuiTextFieldControllerModule,\r\n CuiToggleModule,\r\n CuiEmptyStateComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiDragDropDirective,\r\n CuiDragListDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-evaluation.component.html',\r\n styleUrl: './checklist-block-list-item-evaluation.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationComponent implements OnInit {\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly cuiDialogService = inject(CuiDialogService);\r\n\r\n private readonly isAvailableObserver = new Subject<boolean>();\r\n\r\n protected readonly photoFormGroup = this.nonNullableFormBuilder.group({\r\n isEnable: false,\r\n isRequired: {\r\n value: false,\r\n disabled: true\r\n }\r\n });\r\n protected readonly commentFormGroup = this.nonNullableFormBuilder.group({\r\n isEnable: false,\r\n isRequired: {\r\n value: false,\r\n disabled: true\r\n }\r\n });\r\n protected readonly evaluationCriteriaFormArray = this.nonNullableFormBuilder.array<FormGroup>([]);\r\n\r\n protected readonly loadingIds = signal<Record<string, boolean>>({});\r\n protected readonly isAddButtonDisabled = signal(false);\r\n\r\n private readonly assignee = computed(() => this.checkListItem().content.actionsAssignee![0]);\r\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n );\r\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n );\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListEvaluationItemContent>>();\r\n\r\n protected getPointer(currentIndex: number): NodeCheckListItemSwitchContentPointer {\r\n return currentIndex === 0\r\n ? NodeCheckListItemSwitchContentPointer.BEFORE\r\n : NodeCheckListItemSwitchContentPointer.AFTER;\r\n }\r\n\r\n protected getTargetIndex(currentIndex: number): number {\r\n return currentIndex === 0 ? 1 : currentIndex - 1;\r\n }\r\n\r\n protected onDrop(event: CuiDragDropData): void {\r\n const { prevIndex, index } = event;\r\n\r\n if (prevIndex === index) {\r\n return;\r\n }\r\n\r\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, prevIndex, index);\r\n const movingElementId: string = this.evaluationCriteriaFormArray.at(index).value.id;\r\n const targetItemId: string = this.evaluationCriteriaFormArray.at(this.getTargetIndex(index)).value.id;\r\n const pointer: NodeCheckListItemSwitchContentPointer = this.getPointer(index);\r\n\r\n const requestBody: NodeCheckListItemSwitchContentRequestParams = {\r\n nodeCheckListId: this.checkListItem().id,\r\n listEvaluationId: this.assignee().id,\r\n movingElementId,\r\n targetItemId,\r\n pointer\r\n };\r\n\r\n this.nodeCheckListApiService.updateNodeCheckListItemSwitchContent(requestBody).subscribe({\r\n error: () => {\r\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, index, prevIndex);\r\n this.cdRef.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n protected onAddEvaluationCriteriaItem(): void {\r\n const evaluationItemControl = this.createEvaluationFormGroup();\r\n\r\n this.isAddButtonDisabled.set(true);\r\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n }\r\n\r\n protected onSaveEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const isNew = group.isNew.value;\r\n\r\n if (isNew) {\r\n this.addEvaluationCriteria(group);\r\n\r\n return;\r\n }\r\n\r\n this.updateEvaluationCriteria(group);\r\n }\r\n\r\n protected onCancelNewEvaluationCriteria(): void {\r\n const lastIndex = this.evaluationCriteriaFormArray.length - 1;\r\n\r\n this.isAddButtonDisabled.set(false);\r\n this.evaluationCriteriaFormArray.removeAt(lastIndex);\r\n }\r\n\r\n protected openModalDeleteEvaluationCriteria(id: string): void {\r\n const content = ['DELETE_EVALUATION_CHECKLIST_ITEM_CONFIRMATION_TEXT'];\r\n const criteria = this.findExistingEvaluationCriteria(id);\r\n\r\n if (!criteria?.id) {\r\n return;\r\n }\r\n\r\n this.loadingIds.update((ids) => ({ ...ids, [criteria.id]: true }));\r\n this.cuiDialogService\r\n .open(CuiDeleteModalComponent, {\r\n data: {\r\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM',\r\n content,\r\n delete: () =>\r\n this.nodeCheckListApiService\r\n .deleteEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria.id)\r\n .pipe(\r\n switchMap((checkListItem) => {\r\n const index = this.evaluationCriteriaFormArray.controls.findIndex(\r\n (control) => control.value.id === id\r\n );\r\n\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n this.evaluationCriteriaFormArray.removeAt(index);\r\n\r\n return of(null);\r\n })\r\n )\r\n }\r\n })\r\n .subscribe(() => this.completeEvaluationCriteriaDeletion(criteria));\r\n }\r\n\r\n protected completeEvaluationCriteriaDeletion(criteria: NodeCheckListEvaluationCriteria): void {\r\n this.loadingIds.update((ids) => {\r\n delete ids[criteria.id];\r\n\r\n return { ...ids };\r\n });\r\n }\r\n\r\n private onCheckListActionChanged(actionId: string, actionContent: NodeCheckListItemContentAction): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: 'ASSIGN',\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService.updateNodeCheckListItemActionContent(requestData).subscribe((checkListItem) => {\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initEvaluationFormValues();\r\n }\r\n\r\n private initEvaluationFormValues(): void {\r\n this.evaluationCriteriaFormArray.clear();\r\n this.photoFormGroup.patchValue({\r\n isEnable: this.attachmentPhotoAction().isEnable,\r\n isRequired: this.attachmentPhotoAction().isRequired\r\n });\r\n this.commentFormGroup.patchValue({\r\n isEnable: this.textAreaAction().isEnable,\r\n isRequired: this.textAreaAction().isRequired\r\n });\r\n\r\n if (this.attachmentPhotoAction().isEnable) {\r\n this.photoFormGroup.controls.isRequired.enable();\r\n }\r\n\r\n if (this.textAreaAction().isEnable) {\r\n this.commentFormGroup.controls.isRequired.enable();\r\n }\r\n\r\n this.initActionFormSegmentsSubscriptions();\r\n\r\n this.assignee().acceptanceCriteriaEvaluations.forEach((evaluationCriteria: NodeCheckListEvaluationCriteria) => {\r\n const evaluationItemControl = this.createEvaluationFormGroup({\r\n isNew: false,\r\n criteria: evaluationCriteria.criteria,\r\n evaluation: evaluationCriteria.evaluation,\r\n id: evaluationCriteria.id\r\n });\r\n\r\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n });\r\n }\r\n\r\n private initActionFormSegmentsSubscriptions(): void {\r\n this.initPhotoGroupSubscription();\r\n this.initCommentGroupSubscription();\r\n }\r\n\r\n private initPhotoGroupSubscription(): void {\r\n this.photoFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.photoFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.photoFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.attachmentPhotoAction().id,\r\n contentActionType: this.attachmentPhotoAction().contentActionType,\r\n ...this.photoFormGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.photoFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.attachmentPhotoAction().id,\r\n contentActionType: this.attachmentPhotoAction().contentActionType,\r\n ...this.photoFormGroup.getRawValue()\r\n });\r\n });\r\n }\r\n\r\n private initCommentGroupSubscription(): void {\r\n this.commentFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.commentFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.commentFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.textAreaAction().id,\r\n contentActionType: this.textAreaAction().contentActionType,\r\n ...this.commentFormGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.commentFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.textAreaAction().id,\r\n contentActionType: this.textAreaAction().contentActionType,\r\n ...this.commentFormGroup.getRawValue()\r\n });\r\n });\r\n }\r\n\r\n private updateEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const evaluation = group.evaluation.value;\r\n const criteria = group.criteria.value;\r\n const id = group.id.value;\r\n\r\n this.nodeCheckListApiService\r\n .updateEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, id, criteria, evaluation)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n\r\n private addEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const evaluation = group.evaluation.value;\r\n const criteria = group.criteria.value;\r\n\r\n this.nodeCheckListApiService\r\n .addEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria, evaluation)\r\n .pipe(finalize(() => this.isAddButtonDisabled.set(false)))\r\n .subscribe((checkListItem) => this.updateCreatedEvaluationCriteria(checkListItem));\r\n }\r\n\r\n private updateCreatedEvaluationCriteria(\r\n checkListItem: NodeCheckListItem<NodeCheckListEvaluationItemContent>\r\n ): void {\r\n const acceptanceCriteriaEvaluations = checkListItem.content.actionsAssignee![0].acceptanceCriteriaEvaluations;\r\n const id = acceptanceCriteriaEvaluations.at(-1)?.id;\r\n const control = this.evaluationCriteriaFormArray.controls.at(-1)?.getRawValue();\r\n const createdControl = this.createEvaluationFormGroup({ ...control, id, isNew: false });\r\n\r\n this.evaluationCriteriaFormArray.removeAt(-1);\r\n this.evaluationCriteriaFormArray.push(createdControl);\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n }\r\n\r\n private createEvaluationFormGroup({\r\n id,\r\n criteria = '',\r\n evaluation = null,\r\n isNew = true\r\n }: CuiEvaluationCriteriaElementData = {}): FormGroup {\r\n return this.nonNullableFormBuilder.group({\r\n id: [id],\r\n criteria: [criteria, cuiCreateDefaultValidators({ maxLength: 500 })],\r\n evaluation: [evaluation, [Validators.required]],\r\n isNew: [isNew]\r\n });\r\n }\r\n\r\n private findExistingEvaluationCriteria(id: string): CuiNullable<NodeCheckListEvaluationCriteria> {\r\n return (\r\n this.assignee().acceptanceCriteriaEvaluations.find(\r\n (evaluationCriteria: NodeCheckListEvaluationCriteria) => evaluationCriteria.id === id\r\n ) || null\r\n );\r\n }\r\n\r\n private moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\r\n if (fromIndex === toIndex) {\r\n return;\r\n }\r\n\r\n const item = array[fromIndex];\r\n\r\n array.splice(fromIndex, 1);\r\n array.splice(toIndex, 0, item);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"action\">\r\n <div class=\"action__inputs-container\">\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"photoFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"commentFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"action__criteria-title-container\">\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"evaluationCriteria\"\r\n >\r\n {{ t('EVALUATION_CRITERIA') }}\r\n </label>\r\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\r\n </div>\r\n <ul\r\n cuiDragList\r\n class=\"list\"\r\n >\r\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\r\n <li\r\n cuiChecklistBlockListItemEvaluationCriteria\r\n [index]=\"index + 1\"\r\n cuiDragDrop\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (elementDragged)=\"onDrop($event)\"\r\n [criteriaGroup]=\"control\"\r\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\r\n [loadingIds]=\"loadingIds()\"\r\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\r\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\r\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\r\n ></li>\r\n } @empty {\r\n <li\r\n cuiEmptyState\r\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\r\n ></li>\r\n }\r\n </ul>\r\n <div class=\"action__footer\">\r\n <button\r\n cuiButton\r\n size=\"xxs\"\r\n appearance=\"flat\"\r\n icon=\"cuiIconPlus\"\r\n type=\"button\"\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (click)=\"onAddEvaluationCriteriaItem()\"\r\n >\r\n {{ t('NEW_OPTION') }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiTreeStructApiService, CuiTreeStructNavigatorApiService, MovingType } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, switchMap } from 'rxjs';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\nimport { CuiDragDropData, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiEmptyStateComponent } from '../../../../components';\r\nimport { CuiEditorConfig } from '../../../../editor';\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\nimport { CuiCheckListBlockListItemActionWithVerificationComponent } from '../checklist-block-list-item-action-with-verification';\r\nimport { CuiCheckListBlockListItemActionWithoutVerificationComponent } from '../checklist-block-list-item-action-without-verification';\r\nimport { CuiChecklistBlockListItemContainerComponent } from '../checklist-block-list-item-container';\r\nimport { CuiCheckListBlockListItemEvaluationComponent } from '../checklist-block-list-item-evaluation';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list',\r\n imports: [\r\n CuiChecklistBlockListItemContainerComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiLetDirective,\r\n CuiEmptyStateComponent,\r\n NgTemplateOutlet,\r\n TranslocoDirective,\r\n CuiDragDropDirective,\r\n CuiHandleScrollDirective,\r\n CuiDragListDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list.component.html',\r\n styleUrl: './checklist-block-list.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListComponent {\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n protected readonly isDragAvailable = this.checkListBlockService.isDragAvailable;\r\n protected readonly checkListItemActionWithVerification = CuiCheckListBlockListItemActionWithVerificationComponent;\r\n protected readonly checkListItemActionWithoutVerification =\r\n CuiCheckListBlockListItemActionWithoutVerificationComponent;\r\n protected readonly checkListItemEvaluation = CuiCheckListBlockListItemEvaluationComponent;\r\n\r\n protected readonly componentId = this.checkListBlockService.componentId;\r\n protected readonly isLoading = signal<boolean>(false);\r\n protected readonly isDragEnabled = computed(() => !this.isLoading() && this.isDragAvailable());\r\n protected readonly checkListItemsWithComponents = computed<CuiCheckListBlockItem[]>(() => {\r\n if (!this.checkListItems()) {\r\n return [];\r\n }\r\n\r\n return this.checkListItems()!.map((element) => ({\r\n id: element.id,\r\n content: element,\r\n component: this.getNodeCheckListItemComponent(element)\r\n }));\r\n });\r\n\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n protected moveTreeStruct(data: CuiDragDropData, element: CuiCheckListBlockItem): void {\r\n const { targetElement, pointer, index, prevIndex } = data;\r\n\r\n if (prevIndex === index) {\r\n return;\r\n }\r\n\r\n this.isLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .moveElement({\r\n type: MovingType.TARGET_NODE,\r\n targetItemId: targetElement.dataset['id']!,\r\n treeStructTargetItemId: targetElement.dataset['parentId']!,\r\n pointer,\r\n movableItemId: element.id,\r\n treeStructMovableItemId: this.componentId()!\r\n })\r\n .pipe(\r\n switchMap(() =>\r\n this.treeStructApiService.getById<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n this.componentId()!\r\n )\r\n ),\r\n finalize(() => this.isLoading.set(false))\r\n )\r\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n }\r\n\r\n private getNodeCheckListItemComponent(item: NodeCheckListItem<NodeCheckListItemContentType>): Type<unknown> {\r\n if (item.content.actionsApprove !== null) {\r\n return this.checkListItemActionWithVerification;\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in item.content.actionsAssignee![0]) {\r\n return this.checkListItemEvaluation;\r\n }\r\n\r\n return this.checkListItemActionWithoutVerification;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItemsWithComponents() as checkListItemsWithComponents\">\r\n @if (checkListItemsWithComponents?.length) {\r\n <ul\r\n class=\"list__items\"\r\n #list\r\n cuiDragList\r\n >\r\n <ng-container *ngTemplateOutlet=\"items; context: { $implicit: checkListItemsWithComponents }\" />\r\n <ng-template\r\n #items\r\n let-items\r\n let-isHidden=\"isHidden\"\r\n >\r\n @for (item of items; track item.id; let index = $index) {\r\n <li\r\n [attr.data-id]=\"item.content.id\"\r\n [attr.data-parent-id]=\"componentId()\"\r\n [hidden]=\"isHidden\"\r\n cuiHandleScroll\r\n cuiDragDrop\r\n class=\"list__item\"\r\n [class.list__item_disabled]=\"isLoading()\"\r\n (elementDragged)=\"moveTreeStruct($event, item)\"\r\n >\r\n <cui-checklist-block-list-item-container\r\n [checkListBlockItem]=\"item\"\r\n [index]=\"index + 1\"\r\n [config]=\"config()\"\r\n />\r\n </li>\r\n }\r\n </ng-template>\r\n </ul>\r\n } @else {\r\n <cui-empty-state [subtitle]=\"t('NO_CHECKLIST_ITEMS')\" />\r\n }\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, effect, inject, input, signal } from '@angular/core';\r\nimport { CuiElementDirective, CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\nimport { } from '@cuby-ui/api';\r\nimport { CuiNodeChecklistApiService, CuiTreeStructApiService, NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiContentWrapperComponent } from '../../components';\r\nimport { CuiCheckListBlockItemType } from './checklist-block.options';\r\nimport { CuiChecklistBlockListComponent } from './components';\r\nimport { CuiCheckListBlockService } from './services';\r\nimport { CuiContextMenuItem } from '../../interfaces';\r\nimport { CuiEditorConfig } from 'projects/core';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block, [cuiCheckListBlock]',\r\n imports: [\r\n CuiChecklistBlockListComponent,\r\n CuiContentWrapperComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiElementDirective,\r\n CuiLetDirective,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block.component.html',\r\n styleUrls: ['./checklist-block.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiCheckListBlockService]\r\n})\r\nexport class CuiChecklistBlockComponent {\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n protected readonly CHECKLIST_BLOCK_SELECT_OPTIONS: CuiContextMenuItem[] = [\r\n {\r\n label: this.translocoService.translate('ASSIGNEE_APPROVAL'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITHOUT_VERIFICATION)\r\n },\r\n {\r\n label: this.translocoService.translate('DOUBLE_CHECK_APPROVAL'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITH_VERIFICATION)\r\n },\r\n {\r\n label: this.translocoService.translate('EVALUATION_OPTIONS'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.EVALUATION)\r\n }\r\n ];\r\n\r\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n protected readonly isLoading = signal<boolean>(false);\r\n\r\n public readonly componentId = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n constructor() {\r\n this.initNodeCheckListBlock();\r\n }\r\n\r\n private initNodeCheckListBlock(): void {\r\n effect(() => {\r\n this.checkListBlockService.setComponentId(this.componentId());\r\n this.treeStructApiService\r\n .getById<NodeCheckListItem<NodeCheckListItemContentType>>(this.componentId())\r\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n private addCheckListItem(type: CuiCheckListBlockItemType): void {\r\n this.isLoading.set(true);\r\n this.nodeCheckListApiService\r\n .addNodeCheckListItem({\r\n treeStructContainerCheckListId: this.componentId(),\r\n title: 'New checklist item',\r\n type_operations: type\r\n })\r\n .pipe(finalize(() => this.isLoading.set(false)))\r\n .subscribe((checkListItem) => this.checkListBlockService.addCheckListItem(checkListItem));\r\n }\r\n}\r\n","<cui-content-wrapper\r\n *transloco=\"let t\"\r\n backgroundColor=\"var(--cui-base-10)\"\r\n [gap]=\"16\"\r\n>\r\n <ng-container *cuiLet=\"checkListItems() as checkListItems\">\r\n <header class=\"header\">\r\n <h2 class=\"heading\">{{ t('CHECKLIST') }}</h2>\r\n\r\n @if (checkListItems) {\r\n <span class=\"item\">{{ checkListItems?.length }} {{ t('ITEM_VARIANT') }}</span>\r\n }\r\n </header>\r\n <cui-content-wrapper>\r\n <cui-checklist-block-list [config]=\"config()\" />\r\n </cui-content-wrapper>\r\n <div>\r\n <button\r\n #actionButton=\"elementRef\"\r\n cuiElement\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"flat\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n >\r\n {{ t('ADD_NEW_ITEM') }}\r\n </button>\r\n <cui-context-menu\r\n [items]=\"CHECKLIST_BLOCK_SELECT_OPTIONS\"\r\n [target]=\"actionButton.nativeElement\"\r\n />\r\n </div>\r\n </ng-container>\r\n</cui-content-wrapper>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.CuiSvgComponent","i2.CuiButtonComponent","i2.CuiNotificationComponent","i2","i3.CuiSvgComponent","i4.CuiButtonComponent","i1.CuiDialogsComponent","i2.CuiAlertsComponent","i3.CuiTooltips","i3.CuiButtonComponent","GAP","i1.CuiTooltipDriver","i2.CuiTooltipHover","i3.CuiTooltipPosition","i1.CuiTooltipDirective","i1","i1.CuiSvgComponent","i4.CuiSvgComponent","i3.CuiInputTextComponent","i4.CuiTextFieldIdDirective","i5.CuiTextFieldPlaceholderDirective","i3.CuiFormFieldComponent","i4.CuiHintComponent","i9.CuiLabelComponent","i10.CuiSvgComponent","i11","i1.CuiButtonComponent","i3.CuiHintComponent","i3.CuiTooltipDirective","i2.CuiFormFieldComponent","i6.CuiTextFieldIsErrorDirective","i7.CuiLabelComponent","i8","i2.CuiLabelComponent","i4.CuiToggleComponent","i5","i2.CuiInputTextComponent","i3.CuiTextFieldIdDirective","i4.CuiTextFieldPlaceholderDirective","i5.CuiTextFieldIsErrorDirective","i3.CuiContextMenuComponent","i2.CuiIconButtonComponent","i3.CuiTextFieldPlaceholderDirective","i4.CuiTextFieldIsErrorDirective","i5.CuiSvgComponent","i6.CuiTextareaComponent","i7","i8.CuiInputNumberComponent","i2.CuiCheckboxComponent","i3.CuiLabelComponent","i2.CuiContextMenuComponent"],"mappings":"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"}
|