@cuby-ui/core 0.0.446 → 0.0.447
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/alert-hint/alert-hint.component.d.ts +11 -0
- package/components/alert-hint/error-status.d.ts +1 -0
- package/components/alert-hint/index.d.ts +2 -0
- package/components/card-wrapper/card-wrapper.component.d.ts +2 -1
- package/components/content-header/content-header.component.d.ts +8 -0
- package/components/content-header/index.d.ts +1 -0
- package/components/index.d.ts +5 -0
- package/components/inserted/index.d.ts +1 -0
- package/components/inserted/inserted.component.d.ts +5 -0
- package/components/options-button/index.d.ts +1 -0
- package/components/options-button/options-button.component.d.ts +8 -0
- package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
- package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
- package/editor/utils/open-file-in-browser.d.ts +1 -1
- package/editor/utils/set-loading.d.ts +1 -1
- package/esm2022/components/alert-hint/alert-hint.component.mjs +28 -0
- package/esm2022/components/alert-hint/error-status.mjs +2 -0
- package/esm2022/components/alert-hint/index.mjs +2 -0
- package/esm2022/components/card-wrapper/card-wrapper.component.mjs +6 -4
- package/esm2022/components/content-header/content-header.component.mjs +19 -0
- package/esm2022/components/content-header/index.mjs +2 -0
- package/esm2022/components/index.mjs +6 -1
- package/esm2022/components/inserted/index.mjs +2 -0
- package/esm2022/components/inserted/inserted.component.mjs +15 -0
- package/esm2022/components/options-button/index.mjs +2 -0
- package/esm2022/components/options-button/options-button.component.mjs +20 -0
- package/esm2022/editor/editor.component.mjs +1 -1
- package/esm2022/editor/index.mjs +1 -1
- package/esm2022/editor/utils/open-file-in-browser.mjs +1 -1
- package/esm2022/editor/utils/set-loading.mjs +3 -3
- package/esm2022/index.mjs +1 -2
- package/esm2022/widgets/ui/inserted/index.mjs +2 -0
- package/esm2022/widgets/ui/inserted/inserted.component.mjs +17 -0
- package/esm2022/widgets/ui/modal-header/index.mjs +2 -0
- package/esm2022/widgets/ui/modal-header/modal-header.component.mjs +31 -0
- package/fesm2022/cuby-ui-core.mjs +6174 -8834
- package/fesm2022/cuby-ui-core.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/package.json +4 -4
- package/styles/direcive/flex-container.scss +3 -0
- package/widgets/ui/inserted/index.d.ts +1 -0
- package/widgets/ui/inserted/inserted.component.d.ts +5 -0
- package/widgets/ui/modal-header/index.d.ts +1 -0
- package/widgets/ui/modal-header/modal-header.component.d.ts +12 -0
- package/esm2022/widgets/categories/categories.component.mjs +0 -76
- package/esm2022/widgets/categories/components/categories-list/categories-list.component.mjs +0 -17
- package/esm2022/widgets/categories/components/categories-list/index.mjs +0 -2
- package/esm2022/widgets/categories/components/category-form/category-form.component.mjs +0 -79
- package/esm2022/widgets/categories/components/category-form/index.mjs +0 -2
- package/esm2022/widgets/categories/components/category-item/category-item.component.mjs +0 -125
- package/esm2022/widgets/categories/components/category-item/index.mjs +0 -2
- package/esm2022/widgets/categories/components/create-category-item/create-category-item.component.mjs +0 -25
- package/esm2022/widgets/categories/components/create-category-item/index.mjs +0 -2
- package/esm2022/widgets/categories/components/index.mjs +0 -3
- package/esm2022/widgets/categories/index.mjs +0 -3
- package/esm2022/widgets/categories/services/index.mjs +0 -2
- package/esm2022/widgets/categories/services/selected-category.service.mjs +0 -38
- package/esm2022/widgets/checklist-block/checklist-block.component.mjs +0 -75
- package/esm2022/widgets/checklist-block/checklist-block.options.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.mjs +0 -85
- package/esm2022/widgets/checklist-block/components/checklist-block-list/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.mjs +0 -133
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.mjs +0 -45
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.mjs +0 -35
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.mjs +0 -152
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.mjs +0 -282
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.options.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.mjs +0 -117
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.options.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.mjs +0 -39
- package/esm2022/widgets/checklist-block/components/checklist-block-title-control/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/components/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/index.mjs +0 -2
- package/esm2022/widgets/checklist-block/services/checklist-block.service.mjs +0 -50
- package/esm2022/widgets/checklist-block/services/index.mjs +0 -2
- package/esm2022/widgets/criterion-info/criterion-info.component.mjs +0 -137
- package/esm2022/widgets/criterion-info/index.mjs +0 -2
- package/esm2022/widgets/criterion-info-form/criterion-info-form.component.mjs +0 -147
- package/esm2022/widgets/criterion-info-form/criterion-info-form.options.mjs +0 -2
- package/esm2022/widgets/criterion-info-form/index.mjs +0 -2
- package/esm2022/widgets/criterion-readonly-info/criterion-readonly-info.component.mjs +0 -72
- package/esm2022/widgets/criterion-readonly-info/index.mjs +0 -2
- package/esm2022/widgets/delete-modal/delete-modal.component.mjs +0 -39
- package/esm2022/widgets/delete-modal/delete-modal.options.mjs +0 -2
- package/esm2022/widgets/delete-modal/index.mjs +0 -2
- package/esm2022/widgets/framer-preview/framer-preview.component.mjs +0 -77
- package/esm2022/widgets/framer-preview/framer-preview.options.mjs +0 -2
- package/esm2022/widgets/framer-preview/index.mjs +0 -2
- package/esm2022/widgets/general-control-error-hint/general-control-error-hint.component.mjs +0 -21
- package/esm2022/widgets/general-control-error-hint/index.mjs +0 -2
- package/esm2022/widgets/index.mjs +0 -15
- package/esm2022/widgets/instruction-info/index.mjs +0 -2
- package/esm2022/widgets/instruction-info/instruction-info.component.mjs +0 -147
- package/esm2022/widgets/instruction-info-form/index.mjs +0 -2
- package/esm2022/widgets/instruction-info-form/instruction-info-form.component.mjs +0 -153
- package/esm2022/widgets/instruction-info-form/instruction-info-form.options.mjs +0 -2
- package/esm2022/widgets/instruction-readonly-info/index.mjs +0 -2
- package/esm2022/widgets/instruction-readonly-info/instruction-readonly-info.component.mjs +0 -72
- package/esm2022/widgets/loader/index.mjs +0 -2
- package/esm2022/widgets/loader/loader.component.mjs +0 -36
- package/esm2022/widgets/select-modal/components/index.mjs +0 -3
- package/esm2022/widgets/select-modal/components/select-modal-folder/index.mjs +0 -2
- package/esm2022/widgets/select-modal/components/select-modal-folder/select-modal-folder.component.mjs +0 -21
- package/esm2022/widgets/select-modal/components/select-modal-search/index.mjs +0 -2
- package/esm2022/widgets/select-modal/components/select-modal-search/select-modal-search.component.mjs +0 -32
- package/esm2022/widgets/select-modal/index.mjs +0 -4
- package/esm2022/widgets/select-modal/select-modal.component.mjs +0 -35
- package/esm2022/widgets/select-modal/select-modal.interfaces.mjs +0 -2
- package/esm2022/widgets/select-modal/select-modal.service.mjs +0 -23
- package/esm2022/widgets/storage-list/components/index.mjs +0 -2
- package/esm2022/widgets/storage-list/components/storage-list-item/index.mjs +0 -2
- package/esm2022/widgets/storage-list/components/storage-list-item/storage-list-item.component.mjs +0 -87
- package/esm2022/widgets/storage-list/index.mjs +0 -3
- package/esm2022/widgets/storage-list/storage-list.component.mjs +0 -17
- package/esm2022/widgets/storage-list/storage-list.options.mjs +0 -3
- package/esm2022/widgets/user-action-context-menu/activity-item/activity-item.component.mjs +0 -61
- package/esm2022/widgets/user-action-context-menu/activity-item/index.mjs +0 -2
- package/esm2022/widgets/user-action-context-menu/company-item/company-item.component.mjs +0 -68
- package/esm2022/widgets/user-action-context-menu/company-item/index.mjs +0 -2
- package/esm2022/widgets/user-action-context-menu/constants/index.mjs +0 -2
- package/esm2022/widgets/user-action-context-menu/constants/translations.mjs +0 -5
- package/esm2022/widgets/user-action-context-menu/i18n/en.json +0 -12
- package/esm2022/widgets/user-action-context-menu/i18n/ru.json +0 -12
- package/esm2022/widgets/user-action-context-menu/index.mjs +0 -5
- package/esm2022/widgets/user-action-context-menu/services/activity-base.service.mjs +0 -32
- package/esm2022/widgets/user-action-context-menu/services/activity.service.mjs +0 -35
- package/esm2022/widgets/user-action-context-menu/services/index.mjs +0 -3
- package/esm2022/widgets/user-action-context-menu/user-action-context-menu.component.mjs +0 -83
- package/esm2022/widgets/user-action-context-menu/user-action-context.option.mjs +0 -3
- package/esm2022/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.mjs +0 -41
- package/esm2022/widgets/utility-modal/components/criterion-modal-create/index.mjs +0 -2
- package/esm2022/widgets/utility-modal/components/index.mjs +0 -5
- package/esm2022/widgets/utility-modal/components/instruction-modal-create/index.mjs +0 -2
- package/esm2022/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.mjs +0 -41
- package/esm2022/widgets/utility-modal/components/readonly-criterion-modal/index.mjs +0 -2
- package/esm2022/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.mjs +0 -40
- package/esm2022/widgets/utility-modal/components/readonly-instruction-modal/index.mjs +0 -2
- package/esm2022/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.mjs +0 -40
- package/esm2022/widgets/utility-modal/components/readonly-utility-modal/index.mjs +0 -2
- package/esm2022/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.mjs +0 -43
- package/esm2022/widgets/utility-modal/components/utility-modal-create/index.mjs +0 -2
- package/esm2022/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.mjs +0 -55
- package/esm2022/widgets/utility-modal/index.mjs +0 -4
- package/esm2022/widgets/utility-modal/utility-modal.component.mjs +0 -22
- package/esm2022/widgets/utility-modal/utility-modal.options.mjs +0 -3
- package/esm2022/widgets/utility-readonly-thumbnail/index.mjs +0 -2
- package/esm2022/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.mjs +0 -15
- package/esm2022/widgets/utility-thumbnail/index.mjs +0 -2
- package/esm2022/widgets/utility-thumbnail/utility-thumbnail.component.mjs +0 -94
- package/fesm2022/cuby-ui-core-en-D0un3--2.mjs +0 -25
- package/fesm2022/cuby-ui-core-en-D0un3--2.mjs.map +0 -1
- package/fesm2022/cuby-ui-core-ru-CMm--FpA.mjs +0 -25
- package/fesm2022/cuby-ui-core-ru-CMm--FpA.mjs.map +0 -1
- package/widgets/categories/categories.component.d.ts +0 -25
- package/widgets/categories/components/categories-list/categories-list.component.d.ts +0 -8
- package/widgets/categories/components/categories-list/index.d.ts +0 -1
- package/widgets/categories/components/category-form/category-form.component.d.ts +0 -28
- package/widgets/categories/components/category-form/index.d.ts +0 -1
- package/widgets/categories/components/category-item/category-item.component.d.ts +0 -42
- package/widgets/categories/components/category-item/index.d.ts +0 -1
- package/widgets/categories/components/create-category-item/create-category-item.component.d.ts +0 -10
- package/widgets/categories/components/create-category-item/index.d.ts +0 -1
- package/widgets/categories/components/index.d.ts +0 -2
- package/widgets/categories/index.d.ts +0 -2
- package/widgets/categories/services/index.d.ts +0 -1
- package/widgets/categories/services/selected-category.service.d.ts +0 -18
- package/widgets/checklist-block/checklist-block.component.d.ts +0 -21
- package/widgets/checklist-block/checklist-block.options.d.ts +0 -12
- package/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.d.ts +0 -27
- package/widgets/checklist-block/components/checklist-block-list/index.d.ts +0 -1
- package/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.d.ts +0 -30
- package/widgets/checklist-block/components/checklist-block-list-item-action-card/index.d.ts +0 -1
- package/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.d.ts +0 -11
- package/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/index.d.ts +0 -1
- package/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.d.ts +0 -10
- package/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/index.d.ts +0 -1
- package/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.d.ts +0 -41
- package/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.d.ts +0 -5
- package/widgets/checklist-block/components/checklist-block-list-item-container/index.d.ts +0 -1
- package/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.d.ts +0 -51
- package/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.options.d.ts +0 -14
- package/widgets/checklist-block/components/checklist-block-list-item-evaluation/index.d.ts +0 -2
- package/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.d.ts +0 -33
- package/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.options.d.ts +0 -4
- package/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/index.d.ts +0 -1
- package/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.d.ts +0 -8
- package/widgets/checklist-block/components/checklist-block-title-control/index.d.ts +0 -1
- package/widgets/checklist-block/components/index.d.ts +0 -1
- package/widgets/checklist-block/index.d.ts +0 -1
- package/widgets/checklist-block/services/checklist-block.service.d.ts +0 -19
- package/widgets/checklist-block/services/index.d.ts +0 -1
- package/widgets/criterion-info/criterion-info.component.d.ts +0 -43
- package/widgets/criterion-info/index.d.ts +0 -1
- package/widgets/criterion-info-form/criterion-info-form.component.d.ts +0 -39
- package/widgets/criterion-info-form/criterion-info-form.options.d.ts +0 -7
- package/widgets/criterion-info-form/index.d.ts +0 -2
- package/widgets/criterion-readonly-info/criterion-readonly-info.component.d.ts +0 -26
- package/widgets/criterion-readonly-info/index.d.ts +0 -1
- package/widgets/delete-modal/delete-modal.component.d.ts +0 -13
- package/widgets/delete-modal/delete-modal.options.d.ts +0 -7
- package/widgets/delete-modal/index.d.ts +0 -2
- package/widgets/framer-preview/framer-preview.component.d.ts +0 -26
- package/widgets/framer-preview/framer-preview.options.d.ts +0 -5
- package/widgets/framer-preview/index.d.ts +0 -2
- package/widgets/general-control-error-hint/general-control-error-hint.component.d.ts +0 -9
- package/widgets/general-control-error-hint/index.d.ts +0 -1
- package/widgets/index.d.ts +0 -14
- package/widgets/instruction-info/index.d.ts +0 -1
- package/widgets/instruction-info/instruction-info.component.d.ts +0 -45
- package/widgets/instruction-info-form/index.d.ts +0 -2
- package/widgets/instruction-info-form/instruction-info-form.component.d.ts +0 -43
- package/widgets/instruction-info-form/instruction-info-form.options.d.ts +0 -9
- package/widgets/instruction-readonly-info/index.d.ts +0 -1
- package/widgets/instruction-readonly-info/instruction-readonly-info.component.d.ts +0 -26
- package/widgets/loader/index.d.ts +0 -1
- package/widgets/loader/loader.component.d.ts +0 -20
- package/widgets/select-modal/components/index.d.ts +0 -2
- package/widgets/select-modal/components/select-modal-folder/index.d.ts +0 -1
- package/widgets/select-modal/components/select-modal-folder/select-modal-folder.component.d.ts +0 -10
- package/widgets/select-modal/components/select-modal-search/index.d.ts +0 -1
- package/widgets/select-modal/components/select-modal-search/select-modal-search.component.d.ts +0 -12
- package/widgets/select-modal/index.d.ts +0 -3
- package/widgets/select-modal/select-modal.component.d.ts +0 -13
- package/widgets/select-modal/select-modal.interfaces.d.ts +0 -15
- package/widgets/select-modal/select-modal.service.d.ts +0 -13
- package/widgets/storage-list/components/index.d.ts +0 -1
- package/widgets/storage-list/components/storage-list-item/index.d.ts +0 -1
- package/widgets/storage-list/components/storage-list-item/storage-list-item.component.d.ts +0 -24
- package/widgets/storage-list/index.d.ts +0 -2
- package/widgets/storage-list/storage-list.component.d.ts +0 -10
- package/widgets/storage-list/storage-list.options.d.ts +0 -16
- package/widgets/user-action-context-menu/activity-item/activity-item.component.d.ts +0 -17
- package/widgets/user-action-context-menu/activity-item/index.d.ts +0 -1
- package/widgets/user-action-context-menu/company-item/company-item.component.d.ts +0 -22
- package/widgets/user-action-context-menu/company-item/index.d.ts +0 -1
- package/widgets/user-action-context-menu/constants/index.d.ts +0 -1
- package/widgets/user-action-context-menu/constants/translations.d.ts +0 -2
- package/widgets/user-action-context-menu/index.d.ts +0 -4
- package/widgets/user-action-context-menu/services/activity-base.service.d.ts +0 -14
- package/widgets/user-action-context-menu/services/activity.service.d.ts +0 -14
- package/widgets/user-action-context-menu/services/index.d.ts +0 -2
- package/widgets/user-action-context-menu/user-action-context-menu.component.d.ts +0 -29
- package/widgets/user-action-context-menu/user-action-context.option.d.ts +0 -15
- package/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.d.ts +0 -18
- package/widgets/utility-modal/components/criterion-modal-create/index.d.ts +0 -1
- package/widgets/utility-modal/components/index.d.ts +0 -4
- package/widgets/utility-modal/components/instruction-modal-create/index.d.ts +0 -1
- package/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.d.ts +0 -18
- package/widgets/utility-modal/components/readonly-criterion-modal/index.d.ts +0 -1
- package/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.d.ts +0 -16
- package/widgets/utility-modal/components/readonly-instruction-modal/index.d.ts +0 -1
- package/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.d.ts +0 -16
- package/widgets/utility-modal/components/readonly-utility-modal/index.d.ts +0 -1
- package/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.d.ts +0 -18
- package/widgets/utility-modal/components/utility-modal-create/index.d.ts +0 -1
- package/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.d.ts +0 -25
- package/widgets/utility-modal/index.d.ts +0 -3
- package/widgets/utility-modal/utility-modal.component.d.ts +0 -10
- package/widgets/utility-modal/utility-modal.options.d.ts +0 -12
- package/widgets/utility-readonly-thumbnail/index.d.ts +0 -1
- package/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.d.ts +0 -8
- package/widgets/utility-thumbnail/index.d.ts +0 -1
- package/widgets/utility-thumbnail/utility-thumbnail.component.d.ts +0 -21
|
@@ -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/services/token.service.ts","../../../projects/core/services/auth.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/utils/check-fixed-position.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/tabs.options.ts","../../../projects/core/components/tab/tab.component.ts","../../../projects/core/components/tabs/components/abstract-tabs/abstract-tabs.component.ts","../../../projects/core/components/tabs/components/abstract-tabs/abstract-tabs.component.html","../../../projects/core/components/tabs/services/tabs.service.ts","../../../projects/core/components/tabs/tabs.provider.ts","../../../projects/core/components/tabs/tabs.component.ts","../../../projects/core/components/tabs/tabs.component.html","../../../projects/core/components/textarea/textarea.component.ts","../../../projects/core/components/textarea/textarea.module.ts","../../../projects/core/components/toggle/toggle.component.ts","../../../projects/core/components/toggle/toggle.module.ts","../../../projects/core/components/file-icon/file-icon.options.ts","../../../projects/core/components/file-icon/file-icon.component.ts","../../../projects/core/components/file-icon/file-icon.component.html","../../../projects/core/editor/constants/editor.constants.ts","../../../projects/core/editor/tools/header.tool.ts","../../../projects/core/editor/tools/list.tool.ts","../../../projects/core/editor/tools/selection-base.tool.ts","../../../projects/core/editor/tools/bold.tool.ts","../../../projects/core/editor/tools/italic.tool.ts","../../../projects/core/editor/utils/url.validator.ts","../../../projects/core/editor/services/editor-service.options.ts","../../../projects/core/editor/utils/generate-id.ts","../../../projects/core/editor/services/editor.service.ts","../../../projects/core/editor/services/markers.service.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.html","../../../projects/core/editor/components/marker-select/marker-select.component.ts","../../../projects/core/editor/components/marker-select/marker-select.component.html","../../../projects/core/editor/components/marker-select/marker-select.options.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.html","../../../projects/core/editor/components/marker-modal/marker-modal.options.ts","../../../projects/core/editor/utils/create-link-modal.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.html","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.options.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.html","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.options.ts","../../../projects/core/editor/pipes/file-size.pipe.ts","../../../projects/core/editor/components/editor-tool/editor-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.html","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.options.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.html","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.options.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.html","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.options.ts","../../../projects/core/editor/utils/create-tool-modal.ts","../../../projects/core/editor/utils/open-file-in-browser.ts","../../../projects/core/editor/utils/file-uploader.ts","../../../projects/core/editor/utils/set-loading.ts","../../../projects/core/editor/utils/create-tools-data.ts","../../../projects/core/editor/utils/remove-element-tag-wrapper.ts","../../../projects/core/editor/utils/copy-text-to-clipboard.ts","../../../projects/core/editor/utils/create-tooltip.ts","../../../projects/core/editor/utils/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/events/editor-drag.event.ts","../../../projects/core/editor/events/editor-keyboard.event.ts","../../../projects/core/editor/events/editor-modal.event.ts","../../../projects/core/editor/events/editor-tooltip.event.ts","../../../projects/core/editor/events/set-editor-events.ts","../../../projects/core/editor/editor.component.ts","../../../projects/core/editor/editor.component.html","../../../projects/core/editor/widgets/editor-readonly/editor-resize-observer.directive.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.html","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.ts","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.html","../../../projects/core/editor/widgets/editor-block/editor-block.component.ts","../../../projects/core/editor/widgets/editor-block/editor-block.component.html","../../../projects/core/editor/config/custom-elements.ts","../../../projects/core/editor/providers/editor.provider.ts","../../../projects/core/interceptors/x-ndjson.interceptor.ts","../../../projects/core/interceptors/loader.interceptor.ts","../../../projects/core/interceptors/error-handler.interceptor.ts","../../../projects/core/providers/auth.options.ts","../../../projects/core/services/browser-auth.service.ts","../../../projects/core/services/mobile-auth.service.ts","../../../projects/core/providers/auth.provider.ts","../../../projects/core/interceptors/auth.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/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/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.ts","../../../projects/core/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.html","../../../projects/core/widgets/instruction-readonly-info/instruction-readonly-info.component.ts","../../../projects/core/widgets/instruction-readonly-info/instruction-readonly-info.component.html","../../../projects/core/widgets/criterion-readonly-info/criterion-readonly-info.component.ts","../../../projects/core/widgets/criterion-readonly-info/criterion-readonly-info.component.html","../../../projects/core/widgets/utility-thumbnail/utility-thumbnail.component.ts","../../../projects/core/widgets/utility-thumbnail/utility-thumbnail.component.html","../../../projects/core/widgets/criterion-info-form/criterion-info-form.component.ts","../../../projects/core/widgets/criterion-info-form/criterion-info-form.component.html","../../../projects/core/widgets/utility-modal/utility-modal.options.ts","../../../projects/core/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.ts","../../../projects/core/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.html","../../../projects/core/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.ts","../../../projects/core/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.html","../../../projects/core/widgets/instruction-info-form/instruction-info-form.component.ts","../../../projects/core/widgets/instruction-info-form/instruction-info-form.component.html","../../../projects/core/widgets/instruction-info/instruction-info.component.ts","../../../projects/core/widgets/instruction-info/instruction-info.component.html","../../../projects/core/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.ts","../../../projects/core/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.html","../../../projects/core/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.ts","../../../projects/core/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.html","../../../projects/core/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.ts","../../../projects/core/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.html","../../../projects/core/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.ts","../../../projects/core/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.html","../../../projects/core/widgets/utility-modal/utility-modal.component.ts","../../../projects/core/widgets/utility-modal/utility-modal.component.html","../../../projects/core/widgets/criterion-info/criterion-info.component.ts","../../../projects/core/widgets/criterion-info/criterion-info.component.html","../../../projects/core/widgets/select-modal/components/select-modal-folder/select-modal-folder.component.ts","../../../projects/core/widgets/select-modal/components/select-modal-folder/select-modal-folder.component.html","../../../projects/core/widgets/select-modal/components/select-modal-search/select-modal-search.component.ts","../../../projects/core/widgets/select-modal/components/select-modal-search/select-modal-search.component.html","../../../projects/core/widgets/select-modal/select-modal.component.ts","../../../projects/core/widgets/select-modal/select-modal.component.html","../../../projects/core/widgets/select-modal/select-modal.service.ts","../../../projects/core/widgets/storage-list/storage-list.options.ts","../../../projects/core/widgets/storage-list/components/storage-list-item/storage-list-item.component.ts","../../../projects/core/widgets/storage-list/components/storage-list-item/storage-list-item.component.html","../../../projects/core/widgets/storage-list/storage-list.component.ts","../../../projects/core/widgets/storage-list/storage-list.component.html","../../../projects/core/widgets/user-action-context-menu/services/activity-base.service.ts","../../../projects/core/widgets/user-action-context-menu/services/activity.service.ts","../../../projects/core/widgets/user-action-context-menu/user-action-context.option.ts","../../../projects/core/widgets/user-action-context-menu/constants/translations.ts","../../../projects/core/widgets/user-action-context-menu/activity-item/activity-item.component.ts","../../../projects/core/widgets/user-action-context-menu/activity-item/activity-item.component.html","../../../projects/core/widgets/user-action-context-menu/company-item/company-item.component.ts","../../../projects/core/widgets/user-action-context-menu/company-item/company-item.component.html","../../../projects/core/widgets/user-action-context-menu/user-action-context-menu.component.ts","../../../projects/core/widgets/user-action-context-menu/user-action-context-menu.component.html","../../../projects/core/widgets/framer-preview/framer-preview.component.ts","../../../projects/core/widgets/framer-preview/framer-preview.component.html","../../../projects/core/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-accordion',\n templateUrl: './accordion.template.html',\n styleUrls: ['./accordion.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAccordionComponent {}\n","<ng-content select=\"cui-accordion-item\"></ng-content>\n","import { Directive, effect, inject, input, model, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cuiAccordion]',\n standalone: true,\n host: {\n '(click)': 'onToggle($event)'\n }\n})\nexport class CuiAccordionDirective {\n private readonly renderer = inject(Renderer2);\n\n private wrapper!: HTMLElement;\n\n public readonly content = input.required<HTMLElement>();\n public readonly isOpen = model(true);\n\n constructor() {\n this.initWrapperEffect();\n this.initOpenChangesEffect();\n }\n\n protected onToggle(event: Event): void {\n if (event.defaultPrevented) {\n return;\n }\n\n this.isOpen.update((prev) => !prev);\n }\n\n private initWrapperEffect(): void {\n const effectRef = effect(() => {\n const content = this.content();\n\n this.wrapper = this.renderer.createElement('div');\n\n content.after(this.wrapper);\n this.renderer.appendChild(this.wrapper, content);\n\n effectRef.destroy();\n });\n }\n\n private initOpenChangesEffect(): void {\n effect(() => {\n const isOpen = this.isOpen();\n const doAction = isOpen ? this.close : this.open;\n\n doAction.call(this, this.wrapper);\n });\n }\n\n private open(wrapper: HTMLElement): void {\n this.renderer.setStyle(wrapper, 'visibility', 'hidden');\n this.renderer.setStyle(wrapper, 'height', '0');\n this.renderer.setStyle(wrapper, 'overflow', 'hidden');\n }\n\n private close(wrapper: HTMLElement): void {\n this.renderer.setStyle(wrapper, 'visibility', 'visible');\n this.renderer.setStyle(wrapper, 'height', '');\n this.renderer.setStyle(wrapper, 'overflow', '');\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type {\n CuiAppearanceAction,\n CuiAppearanceActionCyan,\n CuiAppearanceActionViolet,\n CuiAppearanceDestructive,\n CuiAppearanceFlat,\n CuiAppearanceGhost,\n CuiAppearanceLink,\n CuiAppearanceOutlined,\n CuiAppearanceOutlinedGray,\n CuiAppearanceSecondary,\n CuiAppearanceVividSuccess,\n CuiButtonThemeCyan,\n CuiButtonThemeDefault,\n CuiButtonThemeSuccess,\n CuiButtonThemeViolet,\n CuiButtonThemeVividSuccess,\n CuiShapeRounded,\n CuiSizeLg,\n CuiSizeMd,\n CuiSizeSm,\n CuiSizeXs,\n CuiSizeXxs,\n CuiSizeXxxs\n} from '../../types';\n\nexport interface CuiButtonOptions {\n readonly appearance: CuiButtonAppearance;\n readonly shape: CuiButtonShape;\n readonly size: CuiButtonSize;\n readonly theme: CuiButtonTheme;\n}\n\nexport type CuiButtonAppearance =\n | CuiAppearanceAction\n | CuiAppearanceSecondary\n | CuiAppearanceOutlined\n | CuiAppearanceOutlinedGray\n | CuiAppearanceGhost\n | CuiAppearanceFlat\n | CuiAppearanceVividSuccess\n | CuiAppearanceDestructive\n | CuiAppearanceLink\n | CuiAppearanceActionViolet\n | CuiAppearanceActionCyan;\nexport type CuiButtonTheme =\n | CuiButtonThemeDefault\n | CuiButtonThemeViolet\n | CuiButtonThemeCyan\n | CuiButtonThemeSuccess\n | CuiButtonThemeVividSuccess;\nexport type CuiButtonSize = CuiSizeXxxs | CuiSizeXxs | CuiSizeXs | CuiSizeSm | CuiSizeMd | CuiSizeLg;\nexport type CuiButtonShape = CuiShapeRounded | null;\n\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\n appearance: 'action',\n shape: null,\n size: 'sm',\n theme: 'default'\n};\n\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\n factory: () => CUI_BUTTON_DEFAULT_OPTIONS\n});\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { CUI_ICONS, cuiIsIcon } from '@cuby-ui/icons';\n\n@Component({\n selector: 'cui-svg[icon]',\n templateUrl: './svg.template.html',\n styleUrls: ['./svg.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSvgComponent {\n private readonly domSanitizer = inject(DomSanitizer);\n\n protected safeSvgContent!: SafeHtml;\n\n @Input()\n public width?: number;\n\n @Input()\n public height?: number;\n\n @Input()\n @HostBinding('style.--stroke-width')\n public strokeWidth?: number;\n\n @Input()\n @HostBinding('style.--color')\n public color?: string;\n\n @Input()\n public set icon(icon: CuiIcon | string) {\n // TODO: В данном случае подключаются все иконки (вероятно, можно как-то оптимизировано их подключать)\n this.safeSvgContent = this.domSanitizer.bypassSecurityTrustHtml(cuiIsIcon(icon) ? CUI_ICONS[icon] : icon);\n }\n\n @HostBinding('class._with-stroke-width')\n public get isWithStrokeWidth(): boolean {\n return !!this.strokeWidth;\n }\n\n @HostBinding('class._with-color')\n public get isWithColor(): boolean {\n return !!this.color;\n }\n}\n","<span\n [innerHTML]=\"safeSvgContent\"\n [style.width.px]=\"width\"\n [style.height.px]=\"height\"\n></span>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Input,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport {\n CUI_BUTTON_OPTIONS,\n CuiButtonAppearance,\n CuiButtonOptions,\n CuiButtonSize,\n CuiButtonTheme\n} from './button.options';\n\n@Component({\n selector: 'button[cuiButton], a[cuiButton]',\n templateUrl: './button.template.html',\n styleUrls: ['./styles/index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\n\n private readonly ICON_XS_SIZES = ['xxs', 'xxxs'];\n protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\n protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonAppearance[] = [\n 'secondary',\n 'outlined',\n 'outlined-gray',\n 'ghost'\n ];\n\n protected _theme = this.cuiButtonOptions.theme;\n protected _appearance = this.cuiButtonOptions.appearance;\n protected _size = this.cuiButtonOptions.size;\n\n protected iconColor = this.getIconColor(this._appearance);\n protected iconDimensions = {\n width: 20,\n height: 20\n };\n\n @Input()\n @HostBinding('attr.data-shape')\n public shape = this.cuiButtonOptions.shape;\n\n @Input()\n @HostBinding('class._disabled')\n public disabled = false;\n\n @Input()\n @HostBinding('class._loading')\n public isLoaderShown = false;\n\n @Input()\n public icon?: CuiIcon | string;\n\n @Input()\n public iconRight?: CuiIcon | string;\n\n @Input()\n @HostBinding('attr.data-appearance')\n public get appearance(): CuiButtonAppearance {\n return this._appearance;\n }\n\n public set appearance(appearance: CuiButtonAppearance) {\n this._appearance = appearance;\n\n this.changeIconColor();\n }\n\n @Input()\n @HostBinding('attr.data-theme')\n public get theme(): CuiButtonTheme {\n return this._theme;\n }\n\n public set theme(theme: CuiButtonTheme) {\n this._theme = theme;\n\n this.changeIconColor();\n }\n\n @Input()\n @HostBinding('attr.data-size')\n public get size(): CuiButtonSize {\n return this._size;\n }\n\n public set size(size: CuiButtonSize) {\n this._size = size;\n\n if (this.ICON_XS_SIZES.includes(size)) {\n this.iconDimensions = {\n width: 16,\n height: 16\n };\n\n return;\n }\n\n this.iconDimensions = {\n width: 20,\n height: 20\n };\n }\n\n @HostBinding('class._only-icon')\n protected containsOnlyIcon = false;\n\n @HostBinding('disabled')\n protected get isDisabled(): boolean {\n return this.disabled || this.isLoaderShown;\n }\n\n @ViewChild('content')\n protected content!: ElementRef<HTMLSpanElement>;\n\n public ngOnInit(): void {\n this.initIconColor();\n }\n\n private initIconColor(): void {\n this.changeIconColor();\n }\n\n private changeIconColor(): void {\n Promise.resolve().then(() => {\n this.iconColor = this.getIconColor(this._appearance);\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n private getIconColor(appearance: CuiButtonOptions['appearance']): string {\n if (this.BUTTON_ICONS_COLOR_BASE_500.includes(appearance)) {\n return this.COLOR_BASE_500;\n }\n\n return 'currentColor';\n }\n}\n","<span\n class=\"c-wrapper\"\n [class.c-wrapper_invisible]=\"isLoaderShown\"\n>\n <cui-svg\n *ngIf=\"icon\"\n [icon]=\"icon\"\n [width]=\"iconDimensions.width\"\n [height]=\"iconDimensions.height\"\n [color]=\"iconColor\"\n ></cui-svg>\n <span\n #content\n class=\"c-content\"\n >\n <ng-content></ng-content>\n </span>\n <cui-svg\n *ngIf=\"iconRight\"\n [icon]=\"iconRight\"\n [width]=\"iconDimensions.width\"\n [height]=\"iconDimensions.height\"\n [color]=\"iconColor\"\n ></cui-svg>\n</span>\n<cui-svg\n *ngIf=\"isLoaderShown\"\n icon=\"cuiIconLoading\"\n [color]=\"iconColor\"\n class=\"c-loader\"\n></cui-svg>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { CuiAccordionAppearance } from './accordion-item.options';\n\n@Component({\n selector: 'cui-accordion-item',\n templateUrl: './accordion-item.template.html',\n styleUrls: ['./accordion-item.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAccordionItemComponent {\n @Input()\n public isOpen = true;\n\n @Input()\n public appearance: CuiAccordionAppearance = 'default';\n\n @Output()\n public readonly isOpenChange = new EventEmitter<boolean>();\n\n protected get buttonIcon(): CuiIcon {\n return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';\n }\n\n @HostBinding('attr.appearance')\n public get _appearance(): string {\n return this.appearance;\n }\n\n protected onRowToggle(): void {\n this.isOpen = !this.isOpen;\n\n this.isOpenChange.emit(this.isOpen);\n }\n}\n","<header class=\"c-header\">\n <button\n cuiButton\n appearance=\"ghost\"\n size=\"xxs\"\n [icon]=\"buttonIcon\"\n (click)=\"onRowToggle()\"\n ></button>\n <div class=\"c-header__wrapper\">\n <ng-content></ng-content>\n </div>\n</header>\n<div\n *ngIf=\"isOpen\"\n class=\"c-content\"\n>\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiSvgComponent } from './svg.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CuiSvgComponent],\n exports: [CuiSvgComponent]\n})\nexport class CuiSvgModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiButtonComponent } from './button.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiButtonComponent],\n exports: [CuiButtonComponent]\n})\nexport class CuiButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiAccordionComponent } from './accordion.component';\nimport { CuiAccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiButtonModule } from '../button';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule, CuiButtonModule],\n declarations: [CuiAccordionComponent, CuiAccordionItemComponent],\n exports: [CuiAccordionComponent, CuiAccordionItemComponent]\n})\nexport class CuiAccordionModule {}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nimport type { CuiStatus } from '../../types';\n\nexport type CuiNotificationIcons = Record<CuiStatus, { icon: string }>;\n\nexport type CuiNotificationIconOptions = Record<CuiStatus, { color: string }>;\n\nexport interface CuiNotificationOptions {\n readonly status: CuiStatus;\n readonly mode: 'default' | 'light';\n}\n\nexport const CUI_NOTIFICATION_DEFAULT_OPTIONS: CuiNotificationOptions = {\n status: 'info',\n mode: 'default'\n};\n\nexport const CUI_NOTIFICATION_OPTIONS = cuiCreateToken(CUI_NOTIFICATION_DEFAULT_OPTIONS);\n\nexport const CUI_NOTIFICATION_ICONS: CuiNotificationIcons = {\n info: {\n icon: 'cuiIconInfo'\n },\n success: {\n icon: 'cuiIconCheckCircle'\n },\n alert: {\n icon: 'cuiIconAlertTriangle'\n },\n error: {\n icon: 'cuiIconXCircle'\n }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE: CuiNotificationIconOptions = {\n info: {\n color: 'var(--c-info-icon-color)'\n },\n success: {\n color: 'var(--cui-green-500)'\n },\n alert: {\n color: 'var(--cui-yellow-400)'\n },\n error: {\n color: 'var(--cui-danger)'\n }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE: CuiNotificationIconOptions = {\n info: {\n color: 'var(--cui-info)'\n },\n success: {\n color: 'var(--cui-green-700)'\n },\n alert: {\n color: 'var(--cui-yellow-400)'\n },\n error: {\n color: 'var(--cui-danger)'\n }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS: Record<CuiNotificationOptions['mode'], CuiNotificationIconOptions> = {\n default: CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE,\n light: CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {\n CUI_NOTIFICATION_ICON_OPTIONS,\n CuiNotificationIconOptions,\n CuiNotificationOptions\n} from './notification.options';\nimport { CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS } from './notification.options';\n\n@Component({\n selector: 'cui-notification',\n templateUrl: './notification.template.html',\n styleUrls: ['./notification.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiNotificationComponent implements CuiNotificationOptions, OnInit {\n private readonly cuiNotificationOptions = inject(CUI_NOTIFICATION_OPTIONS);\n\n protected readonly ICONS = CUI_NOTIFICATION_ICONS;\n protected readonly ICON_OPTIONS = CUI_NOTIFICATION_ICON_OPTIONS;\n\n protected iconOptions!: CuiNotificationIconOptions;\n\n @Input()\n @HostBinding('attr.data-status')\n public status = this.cuiNotificationOptions.status;\n\n @Input()\n @HostBinding('attr.data-mode')\n public mode = this.cuiNotificationOptions.mode;\n\n @Input()\n public isCloseable = false;\n\n @Output()\n public readonly closed = new EventEmitter<void>();\n\n public ngOnInit(): void {\n this.initIconOptions();\n }\n\n protected onClose(): void {\n this.closed.next();\n }\n\n private initIconOptions(): void {\n this.iconOptions = this.ICON_OPTIONS[this.mode];\n }\n}\n","<cui-svg\n class=\"c-icon\"\n [icon]=\"ICONS[status].icon\"\n [color]=\"iconOptions[status].color\"\n></cui-svg>\n<div class=\"c-content\">\n <ng-content></ng-content>\n</div>\n<button\n *ngIf=\"isCloseable\"\n class=\"c-button\"\n (click)=\"onClose()\"\n>\n <cui-svg\n icon=\"cuiIconX\"\n color=\"var(--cui-gray-0)\"\n />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { CuiNotificationComponent } from './notification.component';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiNotificationComponent],\n exports: [CuiNotificationComponent]\n})\nexport class CuiNotificationModule {}\n","import { inject, InjectionToken } from '@angular/core';\nimport { cuiCreateTokenFromFactory, CuiPopover } from '@cuby-ui/cdk';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiAlertOptions } from './alert.interfaces';\nimport { CUI_NOTIFICATION_OPTIONS } from '../notification';\n\nexport const CUI_ALERTS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([]));\n\nexport const CUI_ALERT_DEFAULT_OPTIONS: Omit<CuiAlertOptions, 'status'> = {\n label: '',\n needAutoClose: true,\n isCloseable: true,\n mode: 'default',\n position: 'right',\n resizing: 'fixed'\n};\n\nexport const CUI_ALERT_OPTIONS = cuiCreateTokenFromFactory(() => ({\n ...CUI_ALERT_DEFAULT_OPTIONS,\n ...inject(CUI_NOTIFICATION_OPTIONS)\n}));\n\nexport const CUI_ALERT_CONTEXT = new InjectionToken<CuiPopover<CuiAlertOptions>>('');\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, HostBinding } from '@angular/core';\n\nimport { CUI_ALERT_CONTEXT } from './alert.tokens';\nimport type { CuiAlertResizing } from './alert.types';\n\n@Component({\n selector: 'cui-alert',\n templateUrl: './alert.template.html',\n styleUrls: ['./alert.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAlertComponent implements OnInit {\n protected readonly context = inject(CUI_ALERT_CONTEXT);\n\n protected readonly AUTO_CLOSE_DURATION_IN_MILLISECONDS = 3000;\n\n @HostBinding('attr.data-resizing')\n protected get resizing(): CuiAlertResizing {\n return this.context.resizing;\n }\n\n public ngOnInit(): void {\n this.initAutoClose();\n }\n\n protected onClosed(): void {\n this.context.$implicit.complete();\n }\n\n private initAutoClose(): void {\n if (!this.context.needAutoClose) {\n return;\n }\n\n setTimeout(this.onClosed.bind(this), this.AUTO_CLOSE_DURATION_IN_MILLISECONDS);\n }\n}\n","<cui-notification\n [status]=\"context.status\"\n [mode]=\"context.mode\"\n [isCloseable]=\"context.isCloseable\"\n (closed)=\"onClosed()\"\n>\n <h2\n *ngIf=\"context.label\"\n class=\"c-heading\"\n >\n {{ context.label }}\n </h2>\n {{ context.content }}\n</cui-notification>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport type { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs';\n\nimport { CUI_ALERT_CONTEXT, CUI_ALERTS } from './alert.tokens';\nimport type { CuiAlertOptions } from './alert.interfaces';\n\n@Component({\n selector: 'cui-alerts',\n templateUrl: './alerts.template.html',\n styleUrls: ['./alerts.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiDestroyService]\n})\nexport class CuiAlertsComponent implements OnInit {\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n protected readonly alerts$: Observable<ReadonlyArray<CuiPopover<CuiAlertOptions>>> = inject(CUI_ALERTS);\n protected alertInjectors!: ReadonlyArray<Injector>;\n\n public ngOnInit(): void {\n this.initAlertInjectorsSubscription();\n }\n\n protected trackByFn(_: number, alert: CuiPopover<CuiAlertOptions>): string {\n return alert.id;\n }\n\n protected alertsMatcher(alert: CuiPopover<CuiAlertOptions>, position: string): boolean {\n return alert.position === position;\n }\n\n protected initAlertInjectorsSubscription(): void {\n this.alerts$.pipe(takeUntil(this.destroy$)).subscribe(\n (dialogs) =>\n (this.alertInjectors = dialogs.map((useValue) =>\n Injector.create({\n providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\n })\n ))\n );\n }\n}\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\n <div class=\"c-wrapper c-wrapper_position_center\">\n <ng-container\n *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'center'; let i = index; trackBy: trackByFn\"\n >\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\n </ng-container>\n </div>\n <div class=\"c-wrapper c-wrapper_position_right\">\n <ng-container\n *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'right'; let i = index; trackBy: trackByFn\"\n >\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\n </ng-container>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiFilterPipe, CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiAlertComponent } from './alert.component';\nimport { CuiAlertsComponent } from './alerts.component';\nimport { CuiNotificationModule } from '../notification';\n\n@NgModule({\n imports: [CommonModule, CuiFilterPipe, CuiNotificationModule, CuiLetDirective],\n declarations: [CuiAlertComponent, CuiAlertsComponent],\n exports: [CuiAlertComponent, CuiAlertComponent, CuiAlertsComponent]\n})\nexport class CuiAlertModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { CuiPopoverService } from '@cuby-ui/cdk';\n\nimport { CUI_ALERT_OPTIONS, CUI_ALERTS } from './alert.tokens';\nimport { CuiAlertComponent } from './alert.component';\nimport type { CuiAlertOptions } from './alert.interfaces';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new CuiAlertService(CUI_ALERTS, CuiAlertComponent, inject(CUI_ALERT_OPTIONS))\n})\nexport class CuiAlertService extends CuiPopoverService<CuiAlertOptions> {}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport interface CuiBadgeOptions {\n readonly color: CuiBadgeColor;\n readonly size: CuiSizeSm | CuiSizeMd;\n readonly isWithDot: boolean;\n}\n\nexport type CuiBadgeColor = CuiBadgeColorSolid | CuiBadgeColorLight | CuiDeprecationColors;\n\nexport type CuiBadgeColorSolid =\n | 'violet-solid'\n | 'yellow-solid'\n | 'orange-solid'\n | 'lavender-solid'\n | 'magenta-solid'\n | 'green-solid'\n | 'black-solid'\n | 'red-solid'\n | 'blue-solid'\n | 'success-solid';\nexport type CuiBadgeColorLight =\n | 'gray'\n | 'dark-gray'\n | 'blue-light'\n | 'yellow-light'\n | 'green-light'\n | 'red-light'\n | 'lavender-light'\n | 'magenta-light'\n | 'violet-light'\n | 'orange-light';\n\nexport type CuiDeprecationColors = 'light-blue' | 'yellow' | 'green' | 'red' | 'violet' | 'orange';\n\nexport const CUI_BADGE_DEFAULT_OPTIONS: CuiBadgeOptions = {\n color: 'light-blue',\n size: 'sm',\n isWithDot: false\n};\n\nexport const CUI_BADGE_OPTIONS = cuiCreateToken(CUI_BADGE_DEFAULT_OPTIONS);\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\n\nimport type { CuiBadgeOptions } from './badge.options';\nimport { CUI_BADGE_OPTIONS } from './badge.options';\n\n@Component({\n selector: 'cui-badge',\n templateUrl: './badge.template.html',\n styleUrls: ['./badge.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBadgeComponent implements CuiBadgeOptions {\n private readonly options = inject(CUI_BADGE_OPTIONS);\n\n @Input()\n @HostBinding('attr.data-color')\n public color = this.options.color;\n\n @Input()\n @HostBinding('attr.data-size')\n public size = this.options.size;\n\n @Input()\n public isWithDot = this.options.isWithDot;\n}\n","<span\n *ngIf=\"isWithDot\"\n class=\"c-dots\"\n></span>\n<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiBadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CuiBadgeComponent],\n exports: [CuiBadgeComponent]\n})\nexport class CuiBadgeModule {}\n","import type { CuiStatus } from '../../types';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nexport type CuiBannerIconOptions = {\n [k in CuiStatus]: {\n icon: CuiIcon;\n color: string;\n };\n};\n\nexport interface CuiBannerOptions {\n readonly status: CuiStatus;\n}\n\nexport const CUI_BANNER_DEFAULT_OPTIONS: CuiBannerOptions = {\n status: 'info'\n};\n\nexport const CUI_BANNER_OPTIONS = cuiCreateToken(CUI_BANNER_DEFAULT_OPTIONS);\n","import type { AbstractType, ExistingProvider, FactoryProvider, Type } from '@angular/core';\nimport { Optional, SkipSelf } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiPoint } from '../types';\n\nexport abstract class CuiAccessor {\n public abstract readonly type: string;\n}\n\nexport abstract class CuiPositionAccessor extends CuiAccessor {\n /*\n * TODO @deprecated switching from DOMRect to HTMLElement in v5\n */\n public abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint;\n}\n\nexport abstract class CuiRectAccessor extends CuiAccessor {\n public abstract getClientRect(): DOMRect;\n}\n\nexport function cuiProvideAccessor<T extends CuiAccessor>(\n provide: AbstractType<T>,\n type: string,\n fallback: Type<T>\n): FactoryProvider {\n return {\n provide,\n deps: [[new SkipSelf(), new Optional(), provide], fallback],\n useFactory: cuiFallbackAccessor<T>(type)\n };\n}\n\nexport function cuiFallbackAccessor<T extends CuiAccessor>(\n type: string\n): (accessors: readonly T[] | null, fallback: T) => T {\n return (accessors, fallback) =>\n accessors?.find?.((accessor) => accessor !== fallback && accessor.type === type) || fallback;\n}\n\nexport function cuiPositionAccessorFor(type: string, fallback: Type<CuiPositionAccessor>): FactoryProvider {\n return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\n}\n\nexport function cuiRectAccessorFor(type: string, fallback: Type<CuiRectAccessor>): FactoryProvider {\n return cuiProvideAccessor(CuiRectAccessor, type, fallback);\n}\n\nexport function cuiAsPositionAccessor(accessor: Type<CuiPositionAccessor>): ExistingProvider {\n return cuiProvide(CuiPositionAccessor, accessor, true);\n}\n\nexport function cuiAsRectAccessor(accessor: Type<CuiRectAccessor>): ExistingProvider {\n return cuiProvide(CuiRectAccessor, accessor, true);\n}\n","import type { ExistingProvider, Type } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport abstract class CuiVehicle {\n public abstract readonly type: string;\n public abstract toggle(value: boolean): void;\n}\n\nexport function cuiAsVehicle(vehicle: Type<CuiVehicle>): ExistingProvider {\n return cuiProvide(CuiVehicle, vehicle, true);\n}\n","import type { AfterViewInit, ExistingProvider, Type } from '@angular/core';\nimport { DestroyRef, Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport { distinctUntilChanged, merge, Observable } from 'rxjs';\n\nimport { CuiVehicle } from './vehicle';\n\nexport abstract class CuiDriver extends Observable<boolean> {\n public abstract readonly type: string;\n}\n\nexport function cuiAsDriver(driver: Type<CuiDriver>): ExistingProvider {\n return cuiProvide(CuiDriver, driver, true);\n}\n\n@Directive()\nexport abstract class CuiDriverDirective implements AfterViewInit {\n public abstract type: string;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly drivers: readonly CuiDriver[] = inject<any>(CuiDriver, { self: true, optional: true }) || [];\n\n private readonly vehicles: readonly CuiVehicle[] = inject<any>(CuiVehicle, {\n self: true,\n optional: true\n });\n\n public ngAfterViewInit(): void {\n const vehicle = this.vehicles?.find(({ type }) => type === this.type);\n\n merge(...this.drivers.filter(({ type }) => type === this.type))\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n vehicle?.toggle(value);\n });\n }\n}\n","import { inject, Injectable, NgZone } from '@angular/core';\nimport { CUI_ANIMATION_FRAME } from '@cuby-ui/cdk';\nimport { EMPTY_CLIENT_RECT, cuiInjectElement, cuiZonefree } from '@cuby-ui/cdk';\nimport { CuiPositionAccessor } from '../classes';\nimport type { CuiPoint } from '../types';\nimport { finalize, map, Observable, startWith } from 'rxjs';\n\n@Injectable()\nexport class CuiPositionService extends Observable<CuiPoint> {\n private readonly el = cuiInjectElement();\n private readonly accessor = inject(CuiPositionAccessor);\n\n constructor() {\n const animationFrame$ = inject(CUI_ANIMATION_FRAME);\n const zone = inject(NgZone);\n\n super((subscriber) =>\n animationFrame$\n .pipe(\n startWith(null),\n map(() => this.accessor.getPosition(this.el.getBoundingClientRect(), this.el)),\n cuiZonefree(zone),\n finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT))\n )\n .subscribe(subscriber)\n );\n }\n}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nexport type CuiTheme = 'light' | 'dark';\n\nexport const CUI_THEME_STORAGE_DEFAULT_KEY = 'cuiTheme';\n\nexport const CUI_DEFAULT_THEME: CuiTheme = 'light';\n\nexport const CUI_THEME_STORAGE_KEY = cuiCreateToken(CUI_THEME_STORAGE_DEFAULT_KEY);\n\nexport const CUI_THEME = cuiCreateToken<CuiTheme>(CUI_DEFAULT_THEME);\n","import { inject, Injectable } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiTheme } from './theme.options';\nimport { CUI_THEME, CUI_THEME_STORAGE_KEY } from './theme.options';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiThemeService extends BehaviorSubject<CuiTheme> {\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\n private readonly key = inject(CUI_THEME_STORAGE_KEY);\n\n constructor() {\n super(\n (inject(CUI_LOCAL_STORAGE).getItem(inject(CUI_THEME_STORAGE_KEY)) as CuiNullable<CuiTheme>) ??\n inject(CUI_THEME)\n );\n }\n\n public override next(theme: CuiTheme): void {\n this.localStorage.setItem(this.key, theme);\n super.next(theme);\n }\n\n // При работе только двух тем\n public switch(): void {\n this.next(this.value === 'light' ? 'dark' : 'light');\n }\n}\n","import type { CuiValueOf } from '@cuby-ui/cdk';\n\nexport const CuiLoadingState = {\n LOADING: 'loading',\n COMPLETED: 'completed',\n INITIAL: 'initial'\n} as const;\n\nexport type CuiLoadingState = CuiValueOf<typeof CuiLoadingState>;\n","import { Injectable, signal } from '@angular/core';\r\n\r\nimport { CuiLoadingState } from './loader.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiLoaderService {\r\n private readonly RESET_TO_INITIAL_TIME = 1000;\r\n\r\n private readonly loaderStateSignal = signal<CuiLoadingState>(CuiLoadingState.INITIAL);\r\n\r\n private requestCount = 0;\r\n private resetLoadingStateTimerId?: ReturnType<typeof setTimeout>;\r\n\r\n public readonly loaderState = this.loaderStateSignal.asReadonly();\r\n\r\n constructor() {\r\n AngularOutsideLoaderService.setInstance(this);\r\n }\r\n\r\n public setLoading(): void {\r\n this.requestCount++;\r\n // need to use without queueMicrotask (error)\r\n queueMicrotask(() => this.loaderStateSignal.set(CuiLoadingState.LOADING));\r\n }\r\n\r\n public setCompleted(): void {\r\n this.requestCount = this.requestCount && this.requestCount - 1;\r\n\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n return this.loaderStateSignal.set(CuiLoadingState.COMPLETED);\r\n }\r\n\r\n public handleCompletedRequest(): void {\r\n this.setCompleted();\r\n clearTimeout(this.resetLoadingStateTimerId);\r\n\r\n this.resetLoadingStateTimerId = setTimeout(() => {\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }, this.RESET_TO_INITIAL_TIME);\r\n }\r\n\r\n public reset(): void {\r\n this.requestCount = 0;\r\n this.resetLoadingStateTimerId = undefined;\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }\r\n}\r\n\r\n// NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT\r\nexport class AngularOutsideLoaderService {\r\n private static instance: CuiLoaderService;\r\n\r\n public static getInstance(): CuiLoaderService {\r\n if (!this.instance) {\r\n throw new Error(\"The instance hasn't been initialized yet\");\r\n }\r\n\r\n return this.instance;\r\n }\r\n\r\n public static setInstance(instance: CuiLoaderService): void {\r\n this.instance = instance;\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\nimport { CUI_IS_WEBKIT } from '@cuby-ui/cdk';\nimport type { CuiPoint } from '../types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiVisualViewportService {\n private readonly isWebkit = inject(CUI_IS_WEBKIT);\n private readonly win = inject(CUI_WINDOW);\n\n // https://bugs.webkit.org/show_bug.cgi?id=207089\n public correct(point: CuiPoint): CuiPoint {\n return this.isWebkit\n ? [\n point[0] + (this.win.visualViewport?.offsetTop ?? 0),\n point[1] + (this.win.visualViewport?.offsetLeft ?? 0)\n ]\n : point;\n }\n}\n","import { inject, signal } from '@angular/core';\nimport type { CuiTokenExchangeRequestBody, CuiTokenResponse } from '@cuby-ui/api';\nimport { CuiExchangeContextApiService } from '@cuby-ui/api';\nimport type { TokenResponse } from 'angular-oauth2-oidc';\nimport { OAuthErrorEvent, OAuthService, OAuthSuccessEvent } from 'angular-oauth2-oidc';\nimport type { Observable } from 'rxjs';\nimport { catchError, from, map, of, switchMap, tap, throwError } from 'rxjs';\n\nimport type { CuiTokenData } from './token.options';\n\nabstract class CuiToken extends OAuthService {\n private readonly tokenData = signal<{ [key: string]: CuiTokenData }>({});\n\n private readonly CONVERT_TO_SECONDS_CONSTANT = 1000;\n\n public getRefreshTokenExpiration(): number {\n const refreshTokenExpiration = this.getTokenDataFromStore(this.getRefreshToken());\n\n return refreshTokenExpiration.exp;\n }\n\n public getAccessTokenData<T extends CuiTokenData = CuiTokenData>(): T {\n const token = this.getAccessToken();\n\n if (!token) {\n throw new Error('No access token found');\n }\n\n return this.getTokenDataFromStore(token) as T;\n }\n\n public checkIsTokenExpired(): boolean {\n const token = this.getAccessToken();\n\n if (!token) {\n return true;\n }\n\n return this.checkTokenExpired(this.getAccessTokenExpiration() / this.CONVERT_TO_SECONDS_CONSTANT);\n }\n\n public checkIsRefreshTokenExpired(): boolean {\n const token = this.getRefreshToken();\n\n if (!token) {\n return true;\n }\n\n return this.checkTokenExpired(this.getRefreshTokenExpiration());\n }\n\n protected getTokenDataFromStore(token: string): CuiTokenData {\n const tokenData = this.tokenData()[token];\n\n if (tokenData) {\n return tokenData;\n }\n\n const currentTokenData = this.parseToken(token);\n\n this.tokenData.update((prev) => ({ ...prev, [token]: currentTokenData }));\n\n return currentTokenData;\n }\n\n private parseToken(token: string): CuiTokenData {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n window\n .atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join('')\n );\n\n return JSON.parse(jsonPayload);\n } catch {\n throw new Error('Invalid token');\n }\n }\n\n private checkTokenExpired(expiredTimeInSeconds: number): boolean {\n const currentTime = Date.now() / this.CONVERT_TO_SECONDS_CONSTANT;\n\n return currentTime >= expiredTimeInSeconds;\n }\n}\n\nexport class CuiTokenBase extends CuiToken {\n private readonly exchangeContextApiService = inject(CuiExchangeContextApiService);\n private readonly EXCHANGE_TOKEN_VALUE = 'token-exchange';\n\n // TODO: override refreshToken with custom refresh token request to the backend\n public override refreshToken(): Promise<TokenResponse> {\n try {\n const tokenData = this.getTokenDataFromStore(this.getRefreshToken());\n\n if (tokenData.azp.includes(this.EXCHANGE_TOKEN_VALUE)) {\n return this.refreshExchangedToken();\n }\n } catch (error) {\n this.logger.error('Error refreshing token', error);\n }\n\n return super.refreshToken();\n }\n\n public refreshExchangedToken(): Promise<CuiTokenResponse> {\n return new Promise((resolve, reject) =>\n this.exchangeContextApiService\n .refresh(this.getRefreshToken())\n .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))\n .subscribe({\n next: (tokenResponse) => {\n this.setTokenResponse(tokenResponse);\n\n resolve(tokenResponse);\n },\n error: (error) => {\n this.logger.error('Error refreshing token', error);\n this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\n\n reject(error);\n }\n })\n );\n }\n\n public exchangeToken(params: CuiTokenExchangeRequestBody): Observable<CuiTokenResponse> {\n return this.exchangeContextApiService.exchange(params).pipe(\n switchMap((tokenResponse) => this.setIdToken(tokenResponse)),\n tap((tokenResponse) => this.setTokenResponse(tokenResponse)),\n catchError((error) => {\n this.logger.error('Error exchanging token', error);\n this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\n\n return throwError(() => error);\n })\n );\n }\n\n private setTokenResponse(tokenResponse: CuiTokenResponse): void {\n const expiresIn = tokenResponse.expires_in || this.fallbackAccessTokenExpirationTimeInSec!;\n\n this.debug('tokenResponse', tokenResponse);\n this.storeAccessTokenResponse(\n tokenResponse.access_token,\n tokenResponse.refresh_token,\n expiresIn,\n tokenResponse.scope\n );\n\n this.eventsSubject.next(new OAuthSuccessEvent('token_received'));\n this.eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));\n }\n\n private setIdToken(tokenResponse: CuiTokenResponse): Observable<CuiTokenResponse> {\n if (!this.oidc || !tokenResponse.id_token) {\n return of(tokenResponse);\n }\n\n return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(\n tap((result) => this.storeIdToken(result)),\n map(() => tokenResponse)\n );\n }\n}\n","import type { AuthConfig, TokenResponse } from 'angular-oauth2-oidc';\nimport { OAuthInfoEvent } from 'angular-oauth2-oidc';\nimport { filter } from 'rxjs';\n\nimport { CuiTokenBase } from './token.service';\n\nexport abstract class CuiAuthBase extends CuiTokenBase {\n public abstract initAuth(authConfig: AuthConfig): Promise<void>;\n\n public override createLoginUrl(\n state?: string,\n loginHint?: string,\n customRedirectUri?: string,\n noPrompt?: boolean,\n params?: object\n ): Promise<string> {\n return super.createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params);\n }\n\n public async useCheckTokenFlow(loginCallback: () => void): Promise<TokenResponse | void> {\n const isAccessTokenExpired = this.checkIsTokenExpired();\n const isRefreshTokenExpired = this.checkIsRefreshTokenExpired();\n\n if (isRefreshTokenExpired) {\n return loginCallback();\n }\n\n if (!isAccessTokenExpired) {\n return;\n }\n\n return await this.refreshToken();\n }\n\n public initAuthRefreshEvents(loginCallback: () => void): void {\n this.events.pipe(filter((event) => event instanceof OAuthInfoEvent)).subscribe((event) => {\n if (event.type !== 'token_expires' || event.info !== 'access_token') {\n return;\n }\n\n if (!this.hasValidAccessToken() || !this.getRefreshToken()) {\n return loginCallback();\n }\n\n this.refreshToken();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\n\nimport type { CuiBannerIconOptions, CuiBannerOptions } from './banner.options';\nimport { CUI_BANNER_OPTIONS } from './banner.options';\nimport type { CuiTheme } from '../../services';\nimport { CuiThemeService } from '../../services';\nimport { map } from 'rxjs';\n\n@Component({\n selector: 'cui-banner',\n templateUrl: './banner.template.html',\n styleUrls: ['./banner.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBannerComponent implements CuiBannerOptions {\n private readonly options = inject(CUI_BANNER_OPTIONS);\n protected readonly theme$ = inject(CuiThemeService);\n\n protected readonly ICON_OPTIONS: CuiBannerIconOptions = {\n info: {\n icon: 'cuiIconInfo',\n color: 'var(--c-info-icon-color)'\n },\n success: {\n icon: 'cuiIconCheckCircle',\n color: 'var(--cui-success)'\n },\n alert: {\n icon: 'cuiIconAlertTriangle',\n color: 'var(--c-alert-icon-color)'\n },\n error: {\n icon: 'cuiIconAlertCircle',\n color: 'var(--cui-danger)'\n }\n };\n protected readonly THEME_CLOSE_BUTTON_ICON_COLORS: Record<CuiTheme, string> = {\n light: 'var(--cui-gray-500)',\n dark: 'var(--cui-gray-0)'\n };\n\n @Input()\n @HostBinding('attr.data-status')\n public status = this.options.status;\n\n @Input()\n public isCloseable = true;\n\n @Input()\n public label?: string;\n\n @Input()\n public actionButtonText?: string;\n\n @Output()\n public actionButtonClicked = new EventEmitter<void>();\n\n @Output()\n public closed = new EventEmitter<void>();\n\n protected onAction(): void {\n this.actionButtonClicked.emit();\n }\n\n protected onClose(): void {\n this.closed.emit();\n }\n}\n","<cui-svg\n *cuiLet=\"ICON_OPTIONS[status] as iconOption\"\n [icon]=\"iconOption.icon\"\n [color]=\"iconOption.color\"\n class=\"c-icon\"\n></cui-svg>\n<div class=\"c-wrapper\">\n <h2\n *ngIf=\"label\"\n class=\"c-heading\"\n >\n {{ label }}\n </h2>\n <ng-content></ng-content>\n <button\n cuiButton\n *ngIf=\"actionButtonText\"\n appearance=\"link\"\n class=\"c-action\"\n (click)=\"onAction()\"\n >\n {{ actionButtonText }}\n </button>\n</div>\n<button\n *ngIf=\"isCloseable\"\n class=\"c-button\"\n (click)=\"onClose()\"\n>\n @if (theme$ | async; as theme) {\n <cui-svg\n icon=\"cuiIconX\"\n [color]=\"THEME_CLOSE_BUTTON_ICON_COLORS[theme]\"\n />\n }\n</button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiBannerComponent } from './banner.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiButtonModule } from '../button';\n\n@NgModule({\n imports: [CommonModule, CuiLetDirective, CuiSvgModule, CuiButtonModule],\n declarations: [CuiBannerComponent],\n exports: [CuiBannerComponent]\n})\nexport class CuiBannerModule {}\n","import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\n\nimport { CuiItemDirective } from '@cuby-ui/cdk';\n\n@Component({\n selector: 'cui-breadcrumbs',\n templateUrl: './breadcrumbs.template.html',\n styleUrls: ['./breadcrumbs.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBreadcrumbsComponent {\n @ContentChildren(CuiItemDirective, { read: TemplateRef })\n protected readonly breadcrumbs!: QueryList<TemplateRef<unknown>>;\n}\n","<ng-container *ngIf=\"breadcrumbs.changes | async\" />\n<ng-container *ngFor=\"let breadcrumb of breadcrumbs; let isLast = last\">\n <ng-container *ngTemplateOutlet=\"breadcrumb\" />\n <cui-svg\n *ngIf=\"!isLast\"\n icon=\"cuiIconSlashDivider\"\n color=\"var(--cui-base-500)\"\n />\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: '[cuiBreadcrumb]',\n templateUrl: './breadcrumb.template.html',\n styleUrls: ['./breadcrumb.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBreadcrumbComponent {\n @Input()\n public isLast = false;\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiBreadcrumbsComponent } from './breadcrumbs.component';\nimport { CuiBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent],\n exports: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent]\n})\nexport class CuiBreadcrumbsModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-button-group',\n templateUrl: './button-group.template.html',\n styleUrls: ['./button-group.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiButtonGroupComponent {}\n","<ng-content select=\"button[cuiButton], a[cuiButton]\"></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { CuiButtonGroupComponent } from './button-group.component';\n\n@NgModule({\n declarations: [CuiButtonGroupComponent],\n exports: [CuiButtonGroupComponent]\n})\nexport class CuiButtonGroupModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'input[type=\"checkbox\"][cuiCheckbox]',\n template: '',\n styleUrls: ['./checkbox.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckboxComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CuiCheckboxComponent],\n exports: [CuiCheckboxComponent]\n})\nexport class CuiCheckboxModule {}\n","export const CUI_ROOT_SELECTOR = 'cui-root';\n","import { InjectionToken } from '@angular/core';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\nexport const CUI_DIALOGS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([]));\n\nexport const CUI_DIALOG_DEFAULT_OPTIONS: CuiDialogOptions = {\n size: 'auto',\n data: undefined,\n dismissible: true\n};\n\nexport const CUI_DIALOG_OPTIONS = cuiCreateToken(CUI_DIALOG_DEFAULT_OPTIONS);\n\nexport const CUI_DIALOG_CONTEXT = new InjectionToken<CuiPopover<CuiDialogOptions>>('');\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport type { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs';\n\nimport { CUI_DIALOG_CONTEXT, CUI_DIALOGS } from './dialog.tokens';\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\n@Component({\n selector: 'cui-dialogs',\n templateUrl: './dialogs.template.html',\n styleUrls: ['./dialogs.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiDestroyService]\n})\nexport class CuiDialogsComponent implements OnInit {\n private readonly document = inject(DOCUMENT);\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n protected readonly dialogs$: Observable<ReadonlyArray<CuiPopover<CuiDialogOptions>>> = inject(CUI_DIALOGS);\n protected dialogInjectorCache = new Map<string, Injector>();\n protected dialogInjectors!: ReadonlyArray<Injector>;\n\n public ngOnInit(): void {\n this.initDialogsSubscription();\n }\n\n protected trackByFn(_: number, dialog: CuiPopover<CuiDialogOptions>): string {\n return dialog.id;\n }\n\n protected initDialogsSubscription(): void {\n this.dialogs$.pipe(takeUntil(this.destroy$)).subscribe((dialogs) => {\n this.document.body.style.overflow = dialogs.length ? 'hidden' : '';\n this.dialogInjectors = dialogs.map((dialog) => {\n if (!this.dialogInjectorCache.has(dialog.id)) {\n this.dialogInjectorCache.set(\n dialog.id,\n Injector.create({\n providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\n parent: dialog.injector\n })\n );\n }\n\n return this.dialogInjectorCache.get(dialog.id)!;\n });\n\n this.dialogInjectorCache.forEach((_, dialogId) => {\n if (dialogs.find((dialog) => dialog.id === dialogId)) {\n return;\n }\n\n this.dialogInjectorCache.delete(dialogId);\n });\n });\n }\n}\n","<ng-container *cuiLet=\"dialogs$ | async as dialogs\">\n <ng-container *ngFor=\"let dialog of dialogs; let i = index; trackBy: trackByFn\">\n <ng-container *ngComponentOutlet=\"dialog.component; injector: dialogInjectors[i]\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"dialogs!.length\"\n class=\"c-overlay\"\n ></div>\n</ng-container>\n","import { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations';\n\nconst TRANSITION = '{{duration}}ms ease-in-out';\nconst DURATION = { params: { duration: 300 } };\nconst STAGGER = 300;\n\nexport interface CuiDurationOptions {\n params: { duration: number };\n value: string;\n}\n\n/**\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\n */\nexport const cuiParentAnimation = trigger('cuiParentAnimation', [\n transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\n]);\n\n/**\n * Add on parent to stop initial :enter animation for children\n */\nexport const cuiParentStop = trigger('cuiParentStop', [transition(':enter', [])]);\n\nexport const cuiHost = trigger('cuiHost', [\n transition(':enter', [style({ overflow: 'clip' }), query(':scope > *', [animateChild()], { optional: true })]),\n transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\n]);\n\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\n transition(':enter', [style({ height: 0 }), animate(TRANSITION, style({ height: '*' }))], DURATION),\n transition(':leave', [style({ height: '*' }), animate(TRANSITION, style({ height: 0 }))], DURATION)\n]);\n\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\n transition(\n '* => *',\n [\n query(':enter', [style({ height: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ height: '*' }))])], {\n optional: true\n }),\n query(':leave', [style({ height: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ height: 0 }))])], {\n optional: true\n })\n ],\n DURATION\n )\n]);\n\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\n transition(':enter', [style({ width: 0 }), animate(TRANSITION, style({ width: '*' }))], DURATION),\n transition(':leave', [style({ width: '*' }), animate(TRANSITION, style({ width: 0 }))], DURATION)\n]);\n\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\n transition(\n '* => *',\n [\n query(':enter', [style({ width: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ width: '*' }))])], {\n optional: true\n }),\n query(':leave', [style({ width: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ width: 0 }))])], {\n optional: true\n })\n ],\n DURATION\n )\n]);\n\nexport const cuiFadeIn = trigger('cuiFadeIn', [\n transition(':enter', [style({ opacity: 0 }), animate(TRANSITION, style({ opacity: 1 }))], DURATION),\n transition(':leave', [style({ opacity: 1 }), animate(TRANSITION, style({ opacity: 0 }))], DURATION)\n]);\n\nexport const cuiFadeInList = trigger('cuiFadeInList', [\n transition(\n '* => *',\n [\n query(':enter', [style({ opacity: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 1 }))])], {\n optional: true\n }),\n query(':leave', [style({ opacity: 1 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 0 }))])], {\n optional: true\n })\n ],\n DURATION\n )\n]);\n\nexport const cuiFadeInTop = trigger('cuiFadeInTop', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})', opacity: 1 }),\n animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n )\n]);\n\nexport const cuiFadeInBottom = trigger('cuiFadeInBottom', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY({{start}}px)', opacity: 0 }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})', opacity: 1 }),\n animate(TRANSITION, style({ transform: 'translateY({{start}}px)', opacity: 0 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n )\n]);\n\nexport const cuiDropdownAnimation = trigger('cuiDropdownAnimation', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})', opacity: 1 }),\n animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n )\n]);\n\nexport const cuiScaleIn = trigger('cuiScaleIn', [\n transition(\n ':enter',\n [\n style({ transform: 'scale({{start}})' }),\n animate('{{duration}}ms {{easing}}', style({ transform: 'scale({{end}})' }))\n ],\n { params: { end: 1, start: 0, duration: 300, easing: 'ease-in-out' } }\n ),\n transition(\n ':leave',\n [style({ transform: 'scale({{end}})' }), animate(TRANSITION, style({ transform: 'scale({{start}})' }))],\n { params: { end: 1, start: 0, duration: 300 } }\n )\n]);\n\nexport const cuiPop = trigger('cuiPop', [\n transition(\n ':enter',\n [\n style({ transform: 'scale({{start}})' }),\n animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\n animate(TRANSITION, style({ transform: 'scale({{end}})' }))\n ],\n { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'scale({{end}})' }),\n animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\n animate(TRANSITION, style({ transform: 'scale({{start}})' }))\n ],\n { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\n )\n]);\n\nexport const cuiScaleInList = trigger('cuiScaleInList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'scale({{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'scale({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 1, start: 0, duration: 300 } }\n )\n]);\n\nexport const cuiSlideIn = trigger('cuiSlideIn', [\n transition(\n '* => left',\n [\n style({ transform: 'translateX(-{{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n 'left => *',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n '* => right',\n [\n style({ transform: 'translateX({{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n 'right => *',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInLeft = trigger('cuiSlideInLeft', [\n transition(\n ':enter',\n [\n style({ transform: 'translateX(-{{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInLeftList = trigger('cuiSlideInLeftList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateX(-{{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInRight = trigger('cuiSlideInRight', [\n transition(\n ':enter',\n [\n style({ transform: 'translateX({{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInRightList = trigger('cuiSlideInRightList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateX({{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInTop = trigger('cuiSlideInTop', [\n transition(\n ':enter',\n [\n style({ transform: 'translate3d(0,{{start}},0)', pointerEvents: 'none' }),\n animate(TRANSITION, style({ transform: 'translate3d(0,{{end}},0)' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translate3d(0,{{end}},0)' }),\n animate(TRANSITION, style({ transform: 'translate3d(0,{{start}},0)' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInTopList = trigger('cuiSlideInTopList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateY({{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateY({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInBottom = trigger('cuiSlideInBottom', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}})' }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInBottomList = trigger('cuiSlideInBottomList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateY({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n","import { Injectable } from '@angular/core';\nimport type { CuiPortalItem } from '../../types';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Service for displaying hints/tooltips\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiTooltipService extends BehaviorSubject<readonly CuiPortalItem[]> {\n constructor() {\n super([]);\n }\n\n public add(directive: CuiPortalItem): void {\n this.next(this.value.concat(directive));\n }\n\n public remove(directive: CuiPortalItem): void {\n if (this.value.includes(directive)) {\n this.next(this.value.filter((hint) => hint !== directive));\n }\n }\n}\n","import { NgForOf } from '@angular/common';\nimport type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CuiActiveZone } from '@cuby-ui/cdk';\nimport { cuiParentAnimation } from '../../animations';\nimport type { CuiPortalItem } from '../../types';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { CuiTooltipService } from './tooltip.service';\n\n@Component({\n standalone: true,\n selector: 'cui-tooltips',\n imports: [NgForOf, PolymorpheusTemplate, CuiActiveZone, PolymorpheusOutlet],\n templateUrl: './tooltips.template.html',\n styleUrls: ['./tooltips.style.scss'],\n // So that we do not force OnPush on custom hints\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [cuiParentAnimation],\n host: {\n 'aria-live': 'polite'\n }\n})\nexport class CuiTooltips implements OnInit {\n private readonly hints$ = inject(CuiTooltipService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n protected hints: readonly CuiPortalItem[] = [];\n\n public ngOnInit(): void {\n // Due to this view being parallel to app content, `markForCheck` from `async` pipe\n // can happen after view was checked, so calling `detectChanges` instead\n this.hints$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hints) => {\n this.hints = hints;\n this.cdr.detectChanges();\n });\n }\n}\n","<div\n *ngFor=\"let hint of hints\"\n role=\"tooltip\"\n @cuiParentAnimation\n [cuiActiveZoneParent]=\"hint.activeZone || null\"\n>\n <ng-container *polymorpheusOutlet=\"hint.component; context: { $implicit: hint }\" />\n</div>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { CuiThemeService } from '../../services';\nimport { CUI_ROOT_SELECTOR } from './root.options';\n\n@Component({\n selector: CUI_ROOT_SELECTOR,\n templateUrl: './root.template.html',\n styleUrls: ['./root.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRootComponent implements OnInit {\n private readonly document = inject(DOCUMENT);\n private readonly theme$ = inject(CuiThemeService);\n\n public ngOnInit(): void {\n this.initThemeSubscription();\n }\n\n private initThemeSubscription(): void {\n this.theme$.subscribe((theme) => this.document.documentElement.setAttribute('cuiTheme', theme));\n }\n}\n","<div class=\"c-content\">\n <ng-content />\n</div>\n<cui-dialogs />\n<cui-alerts />\n<cui-tooltips />\n","import type { OnInit } from '@angular/core';\nimport { HostBinding, HostListener, Type } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ElementRef } from '@angular/core';\nimport type { CuiValueOf } from '@cuby-ui/cdk';\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\n\nimport type { CuiDialogSize } from './dialog.interfaces';\nimport { CUI_DIALOG_CONTEXT } from './dialog.tokens';\n\n// TODO: сделать структурную директиву\nconst ContentType = {\n String: 'string',\n Template: 'template',\n Component: 'component'\n} as const;\n\ntype IContentType = CuiValueOf<typeof ContentType>;\n\n@Component({\n selector: 'cui-dialog',\n templateUrl: './dialog.template.html',\n styleUrls: ['./dialog.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiFocusTrapDirective]\n})\nexport class CuiDialogComponent implements OnInit {\n protected readonly element = inject(ElementRef).nativeElement as HTMLElement;\n protected readonly context = inject(CUI_DIALOG_CONTEXT);\n\n protected readonly LAST_OF_TYPE_SELECTOR = ':last-of-type';\n\n protected readonly ContentType = ContentType;\n\n protected contentType: IContentType = ContentType.Component;\n\n @HostBinding('attr.data-size')\n protected get size(): CuiDialogSize {\n return this.context.size;\n }\n\n public ngOnInit(): void {\n this.initContentType();\n }\n\n protected get contentTemplateRef(): TemplateRef<unknown> {\n return this.context.content as TemplateRef<unknown>;\n }\n\n protected get componentType(): Type<unknown> {\n return this.context.content as Type<unknown>;\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected onEscape(): void {\n if (!this.context.dismissible) {\n return;\n }\n\n if (!this.element.matches(this.LAST_OF_TYPE_SELECTOR)) {\n return;\n }\n\n this.context.completeWith();\n }\n\n private initContentType(): void {\n const content = this.context.content;\n\n switch (true) {\n case typeof content === 'string':\n this.contentType = ContentType.String;\n\n return;\n\n case content instanceof TemplateRef:\n this.contentType = ContentType.Template;\n\n return;\n }\n }\n}\n","<ng-container [ngSwitch]=\"contentType\">\n <ng-container *ngSwitchCase=\"ContentType.String\">\n {{ context.content }}\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.Template\">\n <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: context\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.Component\">\n <div class=\"c-component-container\">\n <ng-container *ngComponentOutlet=\"componentType\"></ng-container>\n </div>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-dialog-actions',\n templateUrl: './dialog-actions.template.html',\n styleUrls: ['./dialog-actions.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDialogActionsComponent {}\n","<div class=\"c-divider\"></div>\n<div class=\"c-content\">\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { PolymorpheusContext } from '@taiga-ui/polymorpheus/classes/context';\n\n@Component({\n selector: 'header[cuiDialogHeader][heading]',\n templateUrl: './dialog-header.template.html',\n styleUrls: ['./dialog-header.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDialogHeaderComponent<T> {\n @Input()\n public heading!: PolymorpheusContent;\n\n @Input()\n public headingContext?: T;\n\n @Input()\n public subheading?: string;\n\n @Output()\n public readonly closed = new EventEmitter<MouseEvent>();\n\n protected onClose(event: MouseEvent): void {\n this.closed.emit(event);\n }\n}\n","<div class=\"c-heading\">\n <ng-container *polymorpheusOutlet=\"heading as heading; context: headingContext\">{{ heading }}</ng-container>\n</div>\n<button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n icon=\"cuiIconClearSm\"\n class=\"c-button\"\n (click)=\"onClose($event)\"\n></button>\n<span *ngIf=\"subheading\">{{ subheading }}</span>\n<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule } from '../button';\nimport { CuiDialogComponent } from './dialog.component';\nimport { CuiDialogsComponent } from './dialogs.component';\nimport { CuiDialogActionsComponent } from './dialog-actions/dialog-actions.component';\nimport { CuiDialogHeaderComponent } from './dialog-header/dialog-header.component';\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusOutlet, CuiLetDirective, CuiButtonModule],\n declarations: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent],\n exports: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent]\n})\nexport class CuiDialogModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { CuiPopoverService } from '@cuby-ui/cdk';\n\nimport { CUI_DIALOG_OPTIONS, CUI_DIALOGS } from './dialog.tokens';\nimport { CuiDialogComponent } from './dialog.component';\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new CuiDialogService(CUI_DIALOGS, CuiDialogComponent, inject(CUI_DIALOG_OPTIONS))\n})\nexport class CuiDialogService extends CuiPopoverService<CuiDialogOptions> {}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nexport const CUI_REDUCED_MOTION = cuiCreateTokenFromFactory(\n () => inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false\n);\n","import { inject } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nimport { CUI_REDUCED_MOTION } from './reduced-motion';\n\n/**\n * Speed of all Taiga UI animations. 1 equals 300ms.\n */\nexport const CUI_ANIMATIONS_SPEED = cuiCreateTokenFromFactory<number>(() => (inject(CUI_REDUCED_MOTION) ? 0 : 1));\n","import type { Provider, Type } from '@angular/core';\nimport { inject } from '@angular/core';\nimport { CUI_WINDOW, cuiCreateTokenFromFactory, cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor } from '../classes';\n\n/**\n * Viewport accessor\n */\nexport const CUI_VIEWPORT = cuiCreateTokenFromFactory<CuiRectAccessor>(() => {\n const win = inject(CUI_WINDOW);\n\n return {\n type: 'viewport',\n getClientRect() {\n const rect = {\n top: 0,\n left: 0,\n right: win.innerWidth,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight,\n x: 0,\n y: 0\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect)\n };\n }\n };\n});\n\nexport function cuiAsViewport(accessor: Type<CuiRectAccessor>): Provider {\n return cuiProvide(CUI_VIEWPORT, accessor);\n}\n","export function cuiRemoveSpaces(value: string): string {\n return value.replace(/\\s+/g, '');\n}\n","export function cuiReplace(value: string, search: string, replace: string): string {\n const regex = new RegExp(search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\n\n return value.replace(regex, replace);\n}\n","import { cuiGetElementObscures } from '@cuby-ui/cdk';\n\n/**\n * @internal\n */\nexport function cuiIsObscured(el: HTMLElement, exceptSelector = 'cui-hints'): boolean {\n return !!cuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\n}\n","export function cuiOverrideOptions<T>(\n override: Partial<T>,\n fallback: T\n): (directive: T | null, options: T | null) => T {\n return (directive, options) => {\n const result: T = directive || { ...(options || fallback) };\n\n Object.keys(override).forEach((key) => {\n // Update directive props with new defaults before inputs are processed\n (result as Record<string, unknown>)[key] = override[key as keyof T];\n });\n\n return result;\n };\n}\n","import type { AnimationOptions } from '@angular/animations';\n\nexport const CUI_ANIMATIONS_DEFAULT_DURATION = 300;\n\nexport function cuiToAnimationOptions(speed: number, easing?: string): AnimationOptions {\n return {\n value: '',\n params: {\n duration: cuiGetDuration(speed),\n easing\n }\n } as unknown as AnimationOptions;\n}\n\nexport function cuiGetDuration(speed: number): number {\n return speed && CUI_ANIMATIONS_DEFAULT_DURATION / speed;\n}\n","import type { ValidationErrors } from '@angular/forms';\n\nconst LEADING_TRAILING_SPACES_REGEX = /^\\s|\\s$/;\nconst MULTIPLE_SPACES_REGEX = /\\s{2,}/;\n\nexport function hasExtraSpaces(value: string): ValidationErrors | null {\n const hasLeadingOrTrailingSpaces = LEADING_TRAILING_SPACES_REGEX.test(value);\n const hasMultipleSpaces = MULTIPLE_SPACES_REGEX.test(value);\n\n if (hasLeadingOrTrailingSpaces || hasMultipleSpaces) {\n return { extraSpaces: true };\n }\n\n return null;\n}\n","import type { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport type { Observable } from 'rxjs';\nimport { map, timer } from 'rxjs';\n\nimport { hasExtraSpaces } from './extra-spaces.options';\n\nexport function asyncExtraSpacesValidators(delay: number): AsyncValidatorFn {\n return ({ value }: AbstractControl): Observable<ValidationErrors | null> => {\n return timer(delay).pipe(map(() => hasExtraSpaces(value)));\n };\n}\n\nexport function syncExtraSpacesValidator(): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => hasExtraSpaces(value);\n}\n","import { Validators } from '@angular/forms';\nimport { CuiDefaultValidatorsOptions } from './create-default-validators.options';\nimport { asyncExtraSpacesValidators, syncExtraSpacesValidator } from './extra-spaces.validators';\n\nexport function cuiCreateDefaultValidators({ maxLength = 100, asyncDelay = 700 } = {}): CuiDefaultValidatorsOptions {\n // Need to offset because this delay must be before changing value\n const OFFSET = 1;\n\n const adjustedAsyncDelay = asyncDelay - OFFSET;\n const validators: CuiDefaultValidatorsOptions = {\n validators: [Validators.required, Validators.maxLength(maxLength)],\n asyncValidators: []\n };\n\n if (asyncDelay) {\n validators.asyncValidators.push(asyncExtraSpacesValidators(adjustedAsyncDelay));\n } else {\n validators.validators.push(syncExtraSpacesValidator());\n }\n\n return validators;\n}\n","export function cuiCheckFixedPosition(element?: HTMLElement | null): boolean {\n return !!element && (isFixed(element) || cuiCheckFixedPosition(element.parentElement));\n}\n\nfunction isFixed(element: HTMLElement): boolean {\n return element.ownerDocument.defaultView?.getComputedStyle(element).getPropertyValue('position') === 'fixed';\n}\n","import type { Type } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nimport { CuiTooltipComponent } from './tooltip.component';\n\n/**\n * A component to display a tooltip\n */\nexport const CUI_TOOLTIP_COMPONENT = cuiCreateTokenFromFactory<Type<unknown>>(() => CuiTooltipComponent);\n","import { Directive } from '@angular/core';\nimport { CuiDriverDirective } from '../../classes';\n\n@Directive({\n standalone: true\n})\nexport class CuiTooltipDriver extends CuiDriverDirective {\n public readonly type = 'hint';\n}\n","import type { FactoryProvider, OnChanges } from '@angular/core';\nimport { Directive, inject, Input, Optional, Self, SkipSelf } from '@angular/core';\nimport { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';\nimport { cuiOverrideOptions } from '../../utils';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { Subject } from 'rxjs';\n\nexport type CuiTooltipDirection =\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom'\n | 'left-bottom'\n | 'left-top'\n | 'left'\n | 'right-bottom'\n | 'right-top'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'top';\n\nexport const CUI_TOOLTIP_DIRECTIONS: readonly CuiTooltipDirection[] = [\n 'top',\n 'top-left',\n 'top-right',\n 'bottom',\n 'bottom-left',\n 'bottom-right',\n 'left-top',\n 'left',\n 'left-bottom',\n 'right-top',\n 'right',\n 'right-bottom'\n];\n\nexport interface CuiTooltipOptions {\n readonly appearance: string;\n readonly direction: CuiTooltipDirection | CuiTooltipDirection[];\n readonly hideDelay: number;\n readonly icon: string;\n readonly showDelay: number;\n}\n\n/** Default values for tooltip options */\nexport const CUI_TOOLTIP_DEFAULT_OPTIONS: CuiTooltipOptions = {\n direction: 'top',\n showDelay: 500,\n hideDelay: 200,\n appearance: '',\n /** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/\n icon: '@cui.circle-help'\n};\n\n/**\n * Default parameters for tooltip directive\n */\nexport const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);\n\nexport const cuiTooltipOptionsProvider: (options: Partial<CuiTooltipOptions>) => FactoryProvider = (\n override: Partial<CuiTooltipOptions>\n) => ({\n provide: CUI_TOOLTIP_OPTIONS,\n deps: [\n [new Optional(), new Self(), CuiTooltipOptionsDirective],\n [new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS]\n ],\n useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS)\n});\n\n/**\n * @deprecated: drop in 5.0\n */\n@Directive({\n standalone: true,\n selector: '[cuiTooltipContent]',\n providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)]\n})\nexport class CuiTooltipOptionsDirective implements CuiTooltipOptions, OnChanges {\n private readonly options = inject(CUI_TOOLTIP_OPTIONS, { skipSelf: true });\n\n @Input('cuiTooltipContent')\n public content: PolymorpheusContent;\n\n @Input('cuiTooltipDirection')\n public direction = this.options.direction;\n\n @Input('cuiTooltipAppearance')\n public appearance = this.options.appearance;\n\n @Input('cuiTooltipShowDelay')\n public showDelay = this.options.showDelay;\n\n @Input('cuiTooltipHideDelay')\n public hideDelay = this.options.hideDelay;\n\n public icon = this.options.icon;\n\n public readonly change$ = new Subject<void>();\n\n public ngOnChanges(): void {\n this.change$.next();\n }\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { CuiHoveredService, CUI_IS_MOBILE, cuiInjectElement } from '@cuby-ui/cdk';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport { cuiIsObscured } from '../../utils';\nimport { delay, filter, map, merge, of, repeat, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nimport type { CuiTooltipOptions } from './tooltip-options.directive';\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\n\n@Directive({\n standalone: true,\n providers: [cuiAsDriver(CuiTooltipHover), CuiHoveredService],\n exportAs: 'cuiTooltipHover'\n})\nexport class CuiTooltipHover extends CuiDriver {\n private readonly isMobile = inject(CUI_IS_MOBILE);\n private readonly el = cuiInjectElement();\n private readonly hovered$ = inject(CuiHoveredService);\n private readonly options = inject(CUI_TOOLTIP_OPTIONS);\n private visible = false;\n private readonly toggle$ = new Subject<boolean>();\n private readonly stream$ = merge(\n this.toggle$.pipe(\n switchMap((visible) =>\n this.isMobile ? of(visible) : of(visible).pipe(delay(visible ? 0 : this.cuiTooltipHideDelay))\n ),\n takeUntil(this.hovered$),\n repeat()\n ),\n this.hovered$.pipe(\n switchMap((visible) =>\n this.isMobile\n ? of(visible)\n : of(visible).pipe(delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay))\n ),\n takeUntil(this.toggle$),\n repeat()\n )\n ).pipe(\n filter(() => this.enabled),\n map((value) => value && (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el))),\n tap((visible) => {\n this.visible = visible;\n })\n );\n\n private readonly parent = inject(CuiTooltipHover, {\n optional: true,\n skipSelf: true\n });\n\n @Input()\n public cuiTooltipShowDelay: CuiTooltipOptions['showDelay'] = this.options.showDelay;\n\n @Input()\n public cuiTooltipHideDelay: CuiTooltipOptions['hideDelay'] = this.options.hideDelay;\n\n public readonly type = 'hint';\n\n public enabled = true;\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n public toggle(visible = !this.visible): void {\n this.toggle$.next(visible);\n this.parent?.toggle(visible);\n }\n}\n","import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';\nimport { cuiFallbackAccessor, CuiPositionAccessor, CuiRectAccessor } from '../../classes';\nimport { CUI_VIEWPORT } from '../../tokens';\nimport type { CuiPoint } from '../../types';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport type { CuiTooltipDirection, CuiTooltipOptions } from './tooltip-options.directive';\nimport { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 24;\nconst TOP = 0;\nconst LEFT = 1;\n\n@Directive({\n standalone: true\n})\nexport class CuiTooltipPosition extends CuiPositionAccessor {\n private readonly offset = inject(CUI_IS_MOBILE) ? 16 : 5;\n private readonly viewport = inject(CUI_VIEWPORT);\n private readonly accessor = cuiFallbackAccessor<CuiRectAccessor>('hint')(\n inject<any>(CuiRectAccessor),\n inject(CuiTooltipDirective)\n );\n\n private readonly points: Record<CuiTooltipDirection, [number, number]> = CUI_TOOLTIP_DIRECTIONS.reduce(\n (acc, direction) => ({ ...acc, [direction]: [0, 0] }),\n {} as Record<CuiTooltipDirection, [number, number]>\n );\n\n @Input('cuiTooltipDirection')\n public direction: CuiTooltipOptions['direction'] = inject(CUI_TOOLTIP_OPTIONS).direction;\n\n @Output('cuiTooltipDirectionChange')\n public readonly directionChange = new EventEmitter<CuiTooltipDirection>();\n\n public readonly type = 'hint';\n\n @cuiPure\n public emitDirection(direction: CuiTooltipDirection): void {\n this.directionChange.emit(direction);\n }\n\n public getPosition(rect: DOMRect, el?: HTMLElement): CuiPoint {\n const width = el?.clientWidth ?? rect.width;\n const height = el?.clientHeight ?? rect.height;\n const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;\n const leftCenter = hostRect.left + hostRect.width / 2;\n const topCenter = hostRect.top + hostRect.height / 2;\n\n this.points['top-left'][TOP] = hostRect.top - height - this.offset;\n this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\n this.points.top[TOP] = this.points['top-left'][TOP];\n this.points.top[LEFT] = leftCenter - width / 2;\n this.points['top-right'][TOP] = this.points['top-left'][TOP];\n this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\n\n this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\n this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\n this.points.bottom[TOP] = this.points['bottom-left'][TOP];\n this.points.bottom[LEFT] = this.points.top[LEFT];\n this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\n this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\n\n this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\n this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\n this.points.left[TOP] = topCenter - height / 2;\n this.points.left[LEFT] = this.points['left-top'][LEFT];\n this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\n this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\n\n this.points['right-top'][TOP] = this.points['left-top'][TOP];\n this.points['right-top'][LEFT] = hostRect.right + this.offset;\n this.points.right[TOP] = this.points.left[TOP];\n this.points.right[LEFT] = this.points['right-top'][LEFT];\n this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\n this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\n\n const priorityDirections = Array.isArray(this.direction) ? this.direction : [this.direction];\n const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);\n\n const direction = sortedDirections.find((direction) =>\n this.checkPosition(this.points[direction], width, height)\n );\n\n this.emitDirection(direction || this.fallback);\n\n return this.points[direction || this.fallback];\n }\n\n private get fallback(): CuiTooltipDirection {\n return this.points.top[TOP] > this.viewport.getClientRect().bottom - this.points.bottom[TOP] ? 'top' : 'bottom';\n }\n\n private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\n const viewport = this.viewport.getClientRect();\n\n return top > GAP && left > GAP && top + height < viewport.bottom - GAP && left + width < viewport.right - GAP;\n }\n}\n","import type { OnDestroy } from '@angular/core';\nimport { Directive, inject, INJECTOR, Input, signal } from '@angular/core';\nimport { cuiInjectElement, CuiActiveZone } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor, CuiVehicle } from '../../classes';\nimport { cuiAsRectAccessor, cuiAsVehicle } from '../../classes';\nimport type { CuiPortalItem } from '../../types';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\n\nimport { CUI_TOOLTIP_COMPONENT } from './tooltip.providers';\nimport { CuiTooltipService } from './tooltip.service';\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip]:not(ng-container):not(ng-template)',\n providers: [\n cuiAsRectAccessor(CuiTooltipDirective),\n cuiAsVehicle(CuiTooltipDirective),\n {\n provide: PolymorpheusComponent,\n deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],\n useClass: PolymorpheusComponent\n }\n ],\n hostDirectives: [\n CuiTooltipDriver,\n {\n directive: CuiTooltipHover,\n inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay']\n },\n {\n directive: CuiTooltipPosition,\n inputs: ['cuiTooltipDirection'],\n outputs: ['cuiTooltipDirectionChange']\n }\n ]\n})\nexport class CuiTooltipDirective<C> implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle {\n private readonly service = inject(CuiTooltipService);\n\n @Input('cuiTooltipContext')\n public context?: C;\n\n @Input('cuiTooltipAppearance')\n public appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;\n\n public content = signal<PolymorpheusContent<C>>(null);\n public component = inject(PolymorpheusComponent<unknown>);\n public readonly el = cuiInjectElement();\n public readonly activeZone? = inject(CuiActiveZone, { optional: true });\n public readonly type = 'hint';\n\n @Input()\n public set cuiTooltip(content: PolymorpheusContent<C>) {\n this.content.set(content);\n\n if (!content) {\n this.toggle(false);\n }\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n if (show && this.content()) {\n this.service.add(this);\n } else {\n this.service.remove(this);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { EMPTY_CLIENT_RECT, cuiPointToClientRect } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor } from '../../classes';\nimport { cuiAsDriver, cuiAsRectAccessor } from '../../classes';\n\nimport { CuiTooltipHover } from './tooltip-hover.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip][cuiTooltipPointer]',\n providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],\n host: {\n '(mousemove.silent)': 'onMove($event)'\n }\n})\nexport class CuiTooltipPointer extends CuiTooltipHover implements CuiRectAccessor {\n private currentRect = EMPTY_CLIENT_RECT;\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n protected onMove({ clientX, clientY }: MouseEvent): void {\n this.currentRect = cuiPointToClientRect(clientX, clientY);\n }\n}\n","import type { WritableSignal } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, Directive, inject, TemplateRef } from '@angular/core';\nimport type { CuiContext } from '@cuby-ui/cdk';\nimport { cuiParentAnimation } from '../../animations';\nimport type { CuiPortalItem } from '../../types';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { injectContext, PolymorpheusComponent, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\n\n@Component({\n standalone: true,\n imports: [PolymorpheusOutlet],\n template: '<ng-container *polymorpheusOutlet=\"context.$implicit.content()\" />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [cuiParentAnimation],\n host: { '[@cuiParentAnimation]': '' }\n})\nexport class CuiTooltipUnstyledComponent {\n protected readonly context =\n injectContext<CuiContext<CuiPortalItem & { content: WritableSignal<PolymorpheusContent> }>>();\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[cuiTooltip]'\n})\nexport class CuiTooltipUnstyled<C> {\n constructor() {\n const hint = inject(CuiTooltipDirective<C>);\n\n hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);\n hint.content.set(inject(TemplateRef<C>));\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EMPTY_CLIENT_RECT, CuiHoveredService, CuiContext } from '@cuby-ui/cdk';\nimport { cuiFadeIn, cuiScaleIn } from '../../animations';\nimport { cuiPositionAccessorFor, CuiRectAccessor, cuiRectAccessorFor } from '../../classes';\nimport { CuiPositionService, CuiVisualViewportService } from '../../services';\nimport { CUI_ANIMATIONS_SPEED, CUI_VIEWPORT } from '../../tokens';\nimport { cuiIsObscured, cuiToAnimationOptions } from '../../utils';\nimport { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\nimport { map, takeWhile } from 'rxjs';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\nimport { CuiTooltipUnstyledComponent } from './tooltip-unstyled.component';\nimport { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';\n\nconst GAP = 8;\n\nexport const CUI_TOOLTIP_PROVIDERS = [\n CuiPositionService,\n CuiHoveredService,\n cuiPositionAccessorFor('hint', CuiTooltipPosition),\n cuiRectAccessorFor(\n 'hint',\n forwardRef(() => CuiTooltipDirective)\n )\n];\n\n@Component({\n standalone: true,\n selector: 'cui-tooltip',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"content() as text; context: hint.context\"\n [innerHTML]=\"text\"\n ></span>\n `,\n styleUrls: ['./tooltip.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: CUI_TOOLTIP_PROVIDERS,\n animations: [cuiFadeIn, cuiScaleIn],\n host: {\n '[@cuiScaleIn]': 'isMobile ? options : desktop',\n '[@cuiFadeIn]': 'options',\n '[class._untouchable]': 'pointer',\n '[class._mobile]': 'isMobile',\n '[attr.data-appearance]': 'appearance',\n '[attr.cuiTheme]': 'appearance',\n '(document:click)': 'onClick($event.target)'\n }\n})\nexport class CuiTooltipComponent<C = any> {\n private readonly el = cuiInjectElement();\n private readonly hover = inject(CuiTooltipHover);\n private readonly vvs = inject(CuiVisualViewportService);\n private readonly viewport = inject(CUI_VIEWPORT);\n\n protected readonly desktop = { value: '', params: { end: 1, start: 1 } };\n protected readonly options = cuiToAnimationOptions(\n inject(CUI_ANIMATIONS_SPEED),\n 'cubic-bezier(0.35, 1.3, 0.25, 1)'\n );\n\n protected readonly pointer = inject(CuiTooltipPointer, { optional: true });\n protected readonly accessor = inject(CuiRectAccessor);\n protected readonly hint = injectContext<CuiContext<CuiTooltipDirective<C>>>().$implicit;\n protected readonly isMobile = inject(CUI_IS_MOBILE);\n\n protected readonly content =\n this.hint.component.component === CuiTooltipUnstyledComponent ? signal('') : this.hint.content;\n\n protected readonly appearance =\n this.hint.appearance || this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');\n\n constructor() {\n inject(CuiPositionService)\n .pipe(\n takeWhile(() => this.hint.el.isConnected),\n map((point) => this.vvs.correct(point)),\n takeUntilDestroyed()\n )\n .subscribe({\n next: ([top, left]) => this.update(top, left),\n complete: () => this.hover.toggle(false)\n });\n\n inject(CuiHoveredService)\n .pipe(takeUntilDestroyed())\n .subscribe((hover) => this.hover.toggle(hover));\n }\n\n protected onClick(target: HTMLElement): void {\n if ((!target.closest('cui-hint') && !this.hint.el.contains(target)) || cuiIsObscured(this.hint.el)) {\n this.hover.toggle(false);\n }\n }\n\n @cuiPure\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\n this.el.style.top = top;\n this.el.style.left = left;\n this.el.style.setProperty('--top', `${beakTop}%`);\n this.el.style.setProperty('--left', `${beakLeft}%`);\n this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');\n }\n\n private update(top: number, left: number): void {\n const { clientHeight, clientWidth } = this.el;\n const rect = this.accessor.getClientRect();\n const viewport = this.viewport.getClientRect();\n\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\n return;\n }\n\n const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);\n const [beakTop, beakLeft] = this.vvs.correct([\n rect.top + rect.height / 2 - top,\n rect.left + rect.width / 2 - safeLeft\n ]);\n\n this.apply(\n cuiPx(Math.round(top)),\n cuiPx(Math.round(safeLeft)),\n Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\n Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100)\n );\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, inject, Input, NgZone } from '@angular/core';\nimport {\n cuiIfMap,\n cuiTypedFromEvent,\n cuiZonefreeScheduler,\n cuiZoneOptimized,\n cuiInjectElement,\n cuiIsPresent,\n cuiPure,\n cuiIsNativeFocused\n} from '@cuby-ui/cdk';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport {\n BehaviorSubject,\n debounce,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n of,\n skip,\n startWith,\n switchMap,\n timer\n} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltipDescribe]',\n providers: [cuiAsDriver(CuiTooltipDescribe)]\n})\nexport class CuiTooltipDescribe extends CuiDriver {\n private readonly doc = inject(DOCUMENT);\n private readonly el = cuiInjectElement();\n private readonly zone = inject(NgZone);\n private readonly id$ = new BehaviorSubject('');\n private readonly stream$ = this.id$.pipe(\n distinctUntilChanged(),\n cuiIfMap(() => fromEvent(this.doc, 'keydown', { capture: true }), cuiIsPresent),\n switchMap(() =>\n this.focused\n ? of(false)\n : merge(cuiTypedFromEvent(this.doc, 'keyup'), cuiTypedFromEvent(this.element, 'blur')).pipe(\n map(() => this.focused)\n )\n ),\n debounce((visible) => (visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null))),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n cuiZoneOptimized()\n );\n\n public readonly type = 'hint';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n @Input()\n public set cuiTooltipDescribe(id: string | null | undefined) {\n this.id$.next(id || '');\n }\n\n @cuiPure\n private get element(): HTMLElement {\n return this.doc.getElementById(this.id$.value || '') || this.el;\n }\n\n private get focused(): boolean {\n return cuiIsNativeFocused(this.element);\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { EMPTY_CLIENT_RECT } from '@cuby-ui/cdk';\nimport { cuiAsRectAccessor, CuiRectAccessor } from '../../classes';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip][cuiTooltipHost]',\n providers: [cuiAsRectAccessor(CuiTooltipHost)]\n})\nexport class CuiTooltipHost extends CuiRectAccessor {\n @Input()\n public cuiTooltipHost?: HTMLElement;\n\n public readonly type = 'hint';\n\n public getClientRect(): DOMRect {\n return this.cuiTooltipHost?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\n }\n}\n","import type { OnChanges } from '@angular/core';\nimport { Directive, inject, Input } from '@angular/core';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { CuiTooltipHover } from './tooltip-hover.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip][cuiTooltipManual]',\n providers: [cuiAsDriver(CuiTooltipManual)]\n})\nexport class CuiTooltipManual extends CuiDriver implements OnChanges {\n private readonly hover = inject(CuiTooltipHover);\n private readonly stream$ = new BehaviorSubject(false);\n\n @Input()\n public cuiTooltipManual = false;\n\n public readonly type = 'hint';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n this.hover.enabled = false;\n }\n\n public ngOnChanges(): void {\n this.stream$.next(this.cuiTooltipManual);\n }\n}\n","import { Directive, inject } from '@angular/core';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltipOverflow]',\n hostDirectives: [\n {\n directive: CuiTooltipDirective,\n inputs: ['cuiTooltipAppearance']\n }\n ],\n host: {\n '(mouseenter)': 'onMouseEnter($event.currentTarget)'\n }\n})\nexport class CuiTooltipOverflow {\n private readonly hint = inject(CuiTooltipDirective);\n\n protected onMouseEnter({ scrollWidth, clientWidth, textContent }: Element): void {\n this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';\n }\n}\n","import { CuiTooltipComponent } from './tooltip.component';\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport { CuiTooltipDescribe } from './tooltip-describe.directive';\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\nimport { CuiTooltipHost } from './tooltip-host.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CuiTooltipManual } from './tooltip-manual.directive';\nimport { CuiTooltipOptionsDirective } from './tooltip-options.directive';\nimport { CuiTooltipOverflow } from './tooltip-overflow.directive';\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\nimport { CuiTooltipUnstyled } from './tooltip-unstyled.component';\n\nexport const CuiTooltip = [\n CuiTooltipComponent,\n CuiTooltipDirective,\n CuiTooltipOptionsDirective,\n CuiTooltipUnstyled,\n CuiTooltipDriver,\n CuiTooltipPosition,\n CuiTooltipHover,\n CuiTooltipOverflow,\n CuiTooltipDescribe,\n CuiTooltipHost,\n CuiTooltipManual,\n CuiTooltipPointer\n] as const;\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiRootComponent } from './root.component';\nimport { CuiDialogModule } from '../dialog';\nimport { CuiAlertModule } from '../alert';\nimport { CuiTooltips } from '../../directives/tooltip';\n\n@NgModule({\n imports: [CommonModule, CuiDialogModule, CuiAlertModule, CuiTooltips],\n declarations: [CuiRootComponent],\n exports: [CuiRootComponent]\n})\nexport class CuiRootModule {}\n","import type { OnInit, AfterViewInit, TemplateRef, OnDestroy } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n Input,\n ViewContainerRef,\n ViewChild\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n CuiDestroyService,\n CuiClickOutsideDirective,\n CuiTargetDirective,\n CUI_WINDOW,\n cuiGetClosestFocusable\n} from '@cuby-ui/cdk';\nimport { fromEvent, take, takeUntil } from 'rxjs';\n\nimport type { CuiContextMenuItem } from '../../interfaces';\nimport { CUI_ROOT_SELECTOR } from '../root';\n\n@Component({\n selector: 'cui-context-menu[items][target]',\n templateUrl: './context-menu.component.html',\n styleUrls: ['./context-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiDestroyService],\n hostDirectives: [\n CuiClickOutsideDirective,\n {\n directive: CuiTargetDirective,\n inputs: ['ccTarget: target']\n }\n ]\n})\nexport class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly document = inject(DOCUMENT);\n private readonly documentElement = this.document.documentElement;\n private readonly window = inject(CUI_WINDOW);\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n private readonly cuiTargetDirective = inject(CuiTargetDirective, { self: true });\n\n protected readonly EXTRA_OFFSET_LEFT = 0;\n protected readonly EXTRA_OFFSET_TOP = 0;\n\n protected isVisible = false;\n protected node?: HTMLDivElement;\n\n @Input()\n public items!: CuiContextMenuItem[];\n\n @Input()\n public target!: HTMLElement;\n\n @Input()\n public width!: string;\n\n @Input()\n public withPaddings = true;\n\n @ViewChild('list')\n protected readonly list!: TemplateRef<any>;\n\n @ViewChild('backdrop')\n protected readonly backdrop!: TemplateRef<any>;\n\n public ngOnInit(): void {\n this.initClickOutsideSubscription();\n }\n\n public ngOnDestroy(): void {\n this.clearViewContainerRef();\n }\n\n public ngAfterViewInit(): void {\n this.initTargetElementListener();\n }\n\n protected onSelect(item: CuiContextMenuItem): void {\n this.close();\n\n item.command?.();\n }\n\n @HostListener('window:resize')\n protected onClose(): void {\n this.close();\n }\n\n @HostListener('click', ['$event'])\n protected onStopClickPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n protected trackByFn(_: number, item: CuiContextMenuItem): string {\n return item.label;\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe((target) => {\n if (this.target.contains(target)) {\n return;\n }\n\n this.close();\n });\n }\n\n private initTargetElementListener(): void {\n this.cuiTargetDirective.clicked.pipe(takeUntil(this.destroy$)).subscribe(this.targetEventListener.bind(this));\n }\n\n private initHidingSubscription(): void {\n this.initHidingFromWindowEvent('scroll');\n this.initHidingFromWindowEvent('resize');\n }\n\n private initHidingFromWindowEvent(eventName: keyof WindowEventMap): void {\n fromEvent(this.window, eventName)\n .pipe(take(1))\n .subscribe(() => this.close());\n }\n\n private targetEventListener(event: MouseEvent): void {\n event.stopPropagation();\n // TODO: нужен для перерисовки ngFor\n this.document.body.click();\n\n this.isVisible = !this.isVisible;\n\n this.clearViewContainerRef();\n\n if (!this.isVisible) {\n return;\n }\n\n this.renderList();\n this.changePosition(event.clientX, event.clientY);\n this.initHidingSubscription();\n }\n\n private close(): void {\n this.isVisible = false;\n\n this.clearViewContainerRef();\n }\n\n private renderList(): void {\n const root = this.document.querySelector(CUI_ROOT_SELECTOR)!;\n const backdropViewRef = this.viewContainerRef.createEmbeddedView(this.backdrop);\n const listViewRef = this.viewContainerRef.createEmbeddedView(this.list);\n\n this.node = listViewRef.rootNodes[0];\n\n root.append(backdropViewRef.rootNodes[0], this.node!);\n }\n\n private changePosition(x: number, y: number): void {\n this.node!.style.visibility = 'hidden';\n\n setTimeout(() => {\n const { clientWidth, clientHeight } = this.documentElement;\n const width = this.node!.offsetWidth;\n const height = this.node!.offsetHeight;\n let left = x;\n let top = y;\n\n if (left + width > clientWidth) {\n left -= width;\n }\n\n if (top + height > clientHeight) {\n top -= height;\n }\n\n left = Math.max(left, this.EXTRA_OFFSET_LEFT);\n top = Math.max(top, this.EXTRA_OFFSET_TOP);\n\n this.node!.style.left = left + 'px';\n this.node!.style.top = top + 'px';\n this.node!.style.visibility = '';\n\n cuiGetClosestFocusable({ initial: this.node!, root: this.node! })?.focus();\n });\n }\n\n private clearViewContainerRef(): void {\n this.viewContainerRef.clear();\n }\n}\n","<ng-template #backdrop>\n <div class=\"c-backdrop\"></div>\n</ng-template>\n\n<ng-template #list>\n <div\n class=\"c-container\"\n [style.width]=\"width\"\n >\n <ul\n class=\"c-ul\"\n [class.c-ul_with-padding]=\"withPaddings\"\n >\n <li\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [style.color]=\"item.color\"\n >\n <button\n type=\"button\"\n class=\"c-button\"\n (click)=\"onSelect(item)\"\n >\n <cui-svg\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.color\"\n ></cui-svg>\n <span>{{ item.label }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { CuiContextMenuComponent } from './context-menu.component';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiContextMenuComponent],\n exports: [CuiContextMenuComponent]\n})\nexport class CuiContextMenuModule {}\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output,\r\n signal,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nimport type { ChangePositionYParams, CuiDropdownOrientation } from './dropdown.interfaces';\r\nimport { cuiCheckFixedPosition } from '../../utils';\r\n\r\n@Directive({\r\n selector: '[cuiDropdown]',\r\n exportAs: 'cuiDropdown',\r\n standalone: true\r\n})\r\nexport class CuiDropdownDirective implements OnInit, OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly target = inject(ElementRef).nativeElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n\r\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n private readonly CONTAINER_SELECTOR = 'cui-dropdowns';\r\n private readonly DROPDOWN_SELECTOR = 'cui-dropdown';\r\n\r\n private container!: Element;\r\n private element!: HTMLElement;\r\n private backdrop!: HTMLDivElement;\r\n\r\n @Input({ required: true, alias: 'cuiDropdown' })\r\n public content!: TemplateRef<unknown>;\r\n\r\n @Input()\r\n public orientation: CuiDropdownOrientation = 'left';\r\n\r\n @Output()\r\n public readonly isOpened = new EventEmitter<boolean>();\r\n\r\n private readonly isOpen = signal(false);\r\n private readonly targetToggleEventListener = (): void => {\r\n if (!this.isOpen()) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.close();\r\n };\r\n private elementResizeObserver!: ResizeObserver;\r\n\r\n constructor() {\r\n this.initTargetElementListener();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onResize(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n protected onClick(event: MouseEvent): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const elements = this.document.elementsFromPoint(event.clientX, event.clientY);\r\n const doesExist = elements.some((element) => this.element.contains(element));\r\n\r\n if (this.target.contains(target) || this.element.contains(target) || doesExist) {\r\n return;\r\n }\r\n\r\n this.close();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initContainer();\r\n this.initDropdown();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.close();\r\n this.destroyElementResizeObserver();\r\n }\r\n\r\n public open(): void {\r\n this.element.style.position = cuiCheckFixedPosition(this.target) ? 'fixed' : 'absolute';\r\n this.isOpen.set(true);\r\n this.container.append(this.backdrop, this.element);\r\n this.calculateDropdownPosition();\r\n this.isOpened.emit(true);\r\n }\r\n\r\n public close(): void {\r\n this.isOpen.set(false);\r\n this.backdrop?.remove();\r\n this.element?.remove();\r\n this.isOpened.emit(false);\r\n }\r\n\r\n private initContainer(): void {\r\n const root = this.document.querySelector('cui-dialogs');\r\n const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);\r\n\r\n if (container) {\r\n this.container = container;\r\n\r\n return;\r\n }\r\n\r\n this.container = this.document.createElement(this.CONTAINER_SELECTOR);\r\n\r\n root?.after(this.container);\r\n }\r\n\r\n private initDropdown(): void {\r\n const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;\r\n\r\n this.backdrop = this.document.createElement('div');\r\n this.element = this.document.createElement(this.DROPDOWN_SELECTOR);\r\n\r\n this.backdrop.style.position = 'fixed';\r\n this.backdrop.style.inset = '0';\r\n this.element.style.top = '0';\r\n\r\n this.element.style.pointerEvents = 'auto';\r\n this.element.append(...content);\r\n\r\n this.initResizeObserver();\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);\r\n }\r\n\r\n private initResizeObserver(): void {\r\n this.elementResizeObserver = new ResizeObserver(() => {\r\n this.changeDropdownYCoordinateIfNeeded();\r\n });\r\n\r\n this.elementResizeObserver.observe(this.element);\r\n }\r\n\r\n private destroyElementResizeObserver(): void {\r\n this.elementResizeObserver.disconnect();\r\n }\r\n\r\n private changeDropdownYCoordinateIfNeeded(): void {\r\n const distanceToBottom =\r\n this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;\r\n\r\n if (distanceToBottom >= 0) {\r\n return;\r\n }\r\n\r\n this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.element.style.visibility = 'hidden';\r\n\r\n setTimeout(() => {\r\n const targetRect = this.target.getBoundingClientRect();\r\n const container = this.findScrollableContainer(this.target);\r\n const containerRect = container.getBoundingClientRect();\r\n const { clientHeight, clientWidth } = this.document.documentElement;\r\n const visibleTop = Math.max(targetRect.top, containerRect.top);\r\n const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);\r\n const dropdownHeight = this.element.offsetHeight;\r\n const windowScrollY = !cuiCheckFixedPosition(this.target) ? this.window.scrollY : 0;\r\n\r\n const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;\r\n const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;\r\n const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');\r\n\r\n this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight, windowScrollY });\r\n this.changePositionX(orientation, clientWidth, targetRect);\r\n\r\n this.element.style.visibility = 'visible';\r\n });\r\n }\r\n\r\n private changePositionX(orientation: string, clientWidth: number, targetRect: DOMRect): void {\r\n switch (orientation) {\r\n case 'right':\r\n this.element.style.left = 'auto';\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n case 'stretch':\r\n this.element.style.left = `${targetRect.left}px`;\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n default:\r\n this.element.style.right = 'auto';\r\n this.element.style.left = `${targetRect.left}px`;\r\n }\r\n }\r\n\r\n private changePositionY({\r\n shouldListOpenAbove,\r\n visibleTop,\r\n visibleBottom,\r\n dropdownHeight,\r\n windowScrollY\r\n }: ChangePositionYParams): void {\r\n const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;\r\n\r\n if (shouldListOpenAbove) {\r\n this.element.style.top = `${windowScrollY + visibleTop - dropdownHeight - offset}px`;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = `${windowScrollY + visibleBottom + offset}px`;\r\n }\r\n\r\n private findScrollableContainer(element: HTMLElement): HTMLElement {\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n const { overflowY } = window.getComputedStyle(parent);\r\n\r\n if (overflowY === 'auto' || overflowY === 'scroll') {\r\n return parent;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return this.document.body;\r\n }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n selector: 'cui-dropdown-wrapper',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './dropdown-wrapper.component.html',\r\n styleUrls: ['./dropdown-wrapper.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDropdownWrapperComponent {\r\n @Input()\r\n public title?: string;\r\n\r\n @Input()\r\n public width?: string;\r\n\r\n @Input()\r\n public maxHeight: string = '350px';\r\n}\r\n","<div\r\n [style.width]=\"width\"\r\n [style.max-height]=\"maxHeight\"\r\n class=\"dropdown\"\r\n>\r\n <header\r\n *ngIf=\"title\"\r\n class=\"header\"\r\n >\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-form-field',\n templateUrl: './form-field.template.html',\n styleUrls: ['./form-field.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFormFieldComponent {}\n","<ng-content select=\"label[cuiLabel]\" />\n<ng-content />\n<div class=\"c-hint-container\">\n <ng-content select=\"cui-hint\" />\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { CuiFormFieldComponent } from './form-field.component';\n\n@NgModule({\n declarations: [CuiFormFieldComponent],\n exports: [CuiFormFieldComponent]\n})\nexport class CuiFormFieldModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport type { CuiHintType } from '../../types';\n\n@Component({\n selector: 'cui-hint',\n templateUrl: './hint.template.html',\n styleUrls: ['./hint.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiHintComponent {\n @Input()\n @HostBinding('attr.data-hint-type')\n public hintType: CuiHintType = 'info';\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { CuiHintComponent } from './hint.component';\n\n@NgModule({\n declarations: [CuiHintComponent],\n exports: [CuiHintComponent]\n})\nexport class CuiHintModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\n@Component({\n selector: 'button[cuiIconButton][icon], a[cuiIconButton][icon]',\n templateUrl: './icon-button.template.html',\n styleUrls: ['./icon-button.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiIconButtonComponent {\n protected readonly ICON_WIDTH = 16;\n protected readonly ICON_HEIGHT = 16;\n protected readonly ICON_STROKE_WIDTH = 1.5;\n\n @Input()\n public icon!: CuiIcon | string;\n\n @Input()\n public color?: string;\n\n @Input()\n @HostBinding('style.--icon-hover-color')\n public hoverColor?: string;\n\n @HostBinding('class._with-hover-color')\n protected get isWithHoverColor(): boolean {\n return !!this.hoverColor;\n }\n}\n","<cui-svg\n [icon]=\"icon\"\n [width]=\"ICON_WIDTH\"\n [height]=\"ICON_HEIGHT\"\n [color]=\"color\"\n [strokeWidth]=\"ICON_STROKE_WIDTH\"\n class=\"c-icon\"\n></cui-svg>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiIconButtonComponent } from './icon-button.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiIconButtonComponent],\n exports: [CuiIconButtonComponent]\n})\nexport class CuiIconButtonModule {}\n","import type { CuiIcon } from '@cuby-ui/icons';\n\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport class CuiTextFieldController {\n constructor(\n private readonly iconLeftDirective: CuiTextFieldIconLeftDirective,\n private readonly idDirective: CuiTextFieldIdDirective,\n private readonly isErrorDirective: CuiTextFieldIsErrorDirective,\n private readonly placeholderDirective: CuiTextFieldPlaceholderDirective,\n private readonly sizeDirective: CuiTextFieldSizeDirective\n ) {}\n\n public get iconLeft(): CuiIcon | string | undefined {\n return this.iconLeftDirective.iconLeft;\n }\n\n public get id(): string | undefined {\n return this.idDirective.id;\n }\n\n public get isError(): boolean {\n return this.isErrorDirective.isError;\n }\n\n public get placeholder(): string | undefined {\n return this.placeholderDirective.placeholder;\n }\n\n public get size(): CuiSizeSm | CuiSizeMd {\n return this.sizeDirective.size;\n }\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nexport const CUI_TEXT_FIELD_ICON_LEFT = new InjectionToken<CuiTextFieldIconLeftDirective>('', {\n factory: () => new CuiTextFieldIconLeftDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldIconLeft]',\n providers: [cuiProvide(CUI_TEXT_FIELD_ICON_LEFT, CuiTextFieldIconLeftDirective)]\n})\nexport class CuiTextFieldIconLeftDirective {\n @Input('cuiTextFieldIconLeft')\n public iconLeft?: CuiIcon | string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_ID = new InjectionToken<CuiTextFieldIdDirective>('', {\n factory: () => new CuiTextFieldIdDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldId]',\n providers: [cuiProvide(CUI_TEXT_FIELD_ID, CuiTextFieldIdDirective)]\n})\nexport class CuiTextFieldIdDirective {\n @Input('cuiTextFieldId')\n public id?: string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_IS_ERROR = new InjectionToken<CuiTextFieldIsErrorDirective>('', {\n factory: () => new CuiTextFieldIsErrorDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldIsError]',\n providers: [cuiProvide(CUI_TEXT_FIELD_IS_ERROR, CuiTextFieldIsErrorDirective)]\n})\nexport class CuiTextFieldIsErrorDirective {\n @Input('cuiTextFieldIsError')\n public isError = false;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_PLACEHOLDER = new InjectionToken<CuiTextFieldPlaceholderDirective>('', {\n factory: () => new CuiTextFieldPlaceholderDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldPlaceholder]',\n providers: [cuiProvide(CUI_TEXT_FIELD_PLACEHOLDER, CuiTextFieldPlaceholderDirective)]\n})\nexport class CuiTextFieldPlaceholderDirective {\n @Input('cuiTextFieldPlaceholder')\n public placeholder?: string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport const CUI_TEXT_FIELD_SIZE = new InjectionToken<CuiTextFieldSizeDirective>('', {\n factory: () => new CuiTextFieldSizeDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldSize]',\n providers: [cuiProvide(CUI_TEXT_FIELD_SIZE, CuiTextFieldSizeDirective)]\n})\nexport class CuiTextFieldSizeDirective {\n @Input('cuiTextFieldSize')\n public size: CuiSizeSm | CuiSizeMd = 'sm';\n}\n","import { NgModule } from '@angular/core';\n\nimport { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\nimport { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport { CuiTextFieldSizeDirective } from './text-field-size.directive';\n\n@NgModule({\n declarations: [\n CuiTextFieldIconLeftDirective,\n CuiTextFieldIdDirective,\n CuiTextFieldPlaceholderDirective,\n CuiTextFieldIsErrorDirective,\n CuiTextFieldSizeDirective\n ],\n exports: [\n CuiTextFieldIconLeftDirective,\n CuiTextFieldIdDirective,\n CuiTextFieldPlaceholderDirective,\n CuiTextFieldIsErrorDirective,\n CuiTextFieldSizeDirective\n ]\n})\nexport class CuiTextFieldControllerModule {}\n","import { InjectionToken, Provider } from '@angular/core';\n\nimport { CuiTextFieldController } from './text-field.controller';\n\nimport { CUI_TEXT_FIELD_SIZE } from './text-field-size.directive';\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\nimport { CUI_TEXT_FIELD_ID } from './text-field-id.directive';\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport { CUI_TEXT_FIELD_IS_ERROR } from './text-field-is-error.directive';\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport { CUI_TEXT_FIELD_PLACEHOLDER } from './text-field-placeholder.directive';\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport { CUI_TEXT_FIELD_ICON_LEFT } from './text-field-icon-left.directive';\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\n\nexport const CUI_TEXT_FIELD_CONTROLLER = new InjectionToken<CuiTextFieldController>('');\n\nexport const CUI_TEXT_FILED_CONTROLLER_PROVIDER: Provider = [\n {\n provide: CUI_TEXT_FIELD_CONTROLLER,\n useFactory: (\n ...controllers: [\n CuiTextFieldIconLeftDirective,\n CuiTextFieldIdDirective,\n CuiTextFieldIsErrorDirective,\n CuiTextFieldPlaceholderDirective,\n CuiTextFieldSizeDirective\n ]\n ) => {\n return new CuiTextFieldController(...controllers);\n },\n deps: [\n CUI_TEXT_FIELD_ICON_LEFT,\n CUI_TEXT_FIELD_ID,\n CUI_TEXT_FIELD_IS_ERROR,\n CUI_TEXT_FIELD_PLACEHOLDER,\n CUI_TEXT_FIELD_SIZE\n ]\n }\n];\n","import type { ElementRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n inject,\n Input,\n ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { MaskitoOptions } from '@maskito/core';\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';\nimport { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n selector: 'cui-input-number',\n templateUrl: './input-number.template.html',\n styleUrls: ['./input-number.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)]\n})\nexport class CuiInputNumberComponent implements ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n protected maskOptions = this.generateMask();\n protected _precision = 0;\n protected _min = Number.MIN_SAFE_INTEGER;\n protected _max = Number.MAX_SAFE_INTEGER;\n protected value!: CuiNullable<string>;\n protected onChange!: CuiOnChange<CuiNullable<number>>;\n protected onTouched!: CuiOnTouched;\n\n @Input()\n public set precision(value: number) {\n this._precision = value;\n this.maskOptions = this.generateMask();\n }\n\n @Input()\n public set min(value: number) {\n this._min = value;\n this.maskOptions = this.generateMask();\n }\n\n @Input()\n public set max(value: number) {\n this._max = value;\n this.maskOptions = this.generateMask();\n }\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n @ViewChild('input')\n protected input!: ElementRef<HTMLInputElement>;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get iconLeft(): CuiIcon | string | undefined {\n return this.cuiTextFieldController.iconLeft;\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<number>): void {\n this.value = value?.toString();\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<CuiNullable<number>>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput({ target }: Event): void {\n this.changeModel((target as HTMLInputElement).value);\n }\n\n @HostListener('click')\n protected onFocus(): void {\n this.input.nativeElement.focus();\n }\n\n private changeModel(value: string): void {\n const parsedValue = maskitoParseNumber(value);\n\n this.value = value;\n\n this.onChange(Number.isNaN(parsedValue) ? null : parsedValue);\n }\n\n private generateMask(): MaskitoOptions {\n return maskitoNumberOptionsGenerator({\n precision: this._precision,\n min: this._min,\n max: this._max\n });\n }\n}\n","<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\n\nimport { CuiInputNumberComponent } from './input-number.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\n declarations: [CuiInputNumberComponent],\n exports: [CuiInputNumberComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputNumberModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, input } from '@angular/core';\n\n@Component({\n selector: 'cui-content-wrapper, [cuiContentWrapper]',\n standalone: true,\n templateUrl: './content-wrapper.component.html',\n styleUrl: './content-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiContentWrapperComponent {\n private readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-base-0)';\n private readonly DEFAULT_GAP = 8;\n\n public readonly backgroundColor = input(this.DEFAULT_BACKGROUND_COLOR);\n public readonly gap = input(this.DEFAULT_GAP);\n\n @HostBinding('style.background')\n protected get _backgroundColor(): string {\n return this.backgroundColor();\n }\n\n @HostBinding('style.gap.px')\n protected get _gap(): number {\n return this.gap();\n }\n}\n","<ng-content />\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'input [cuiGhostInput]',\n standalone: true,\n template: '',\n styleUrl: './ghost-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._with-error]': 'isError()'\n }\n})\nexport class CuiGhostInputComponent {\n public isError = input(false, { transform: booleanAttribute });\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiInputType, CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n selector: 'cui-input-password',\n templateUrl: './input-password.template.html',\n styleUrls: ['./input-password.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)]\n})\nexport class CuiInputPasswordComponent implements ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n protected isPasswordHidden = true;\n protected value!: CuiNullable<string>;\n protected onChange!: CuiOnChange<string>;\n protected onTouched!: CuiOnTouched;\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get iconLeft(): CuiIcon | string | undefined {\n return this.cuiTextFieldController.iconLeft;\n }\n\n protected get isToggleButtonShown(): boolean {\n return !this.isDisabled;\n }\n\n protected get icon(): CuiIcon {\n return this.isPasswordHidden ? 'cuiIconEye' : 'cuiIconEyeOff';\n }\n\n protected get type(): CuiInputType {\n return this.isPasswordHidden ? 'password' : 'text';\n }\n\n protected get buttonTitle(): string {\n return this.isPasswordHidden ? 'Reveal password' : 'Hide password';\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<string>): void {\n this.value = value;\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<string>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n if (this.isDisabled) {\n this.isPasswordHidden = true;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput({ target }: Event): void {\n const value = (target as HTMLInputElement).value;\n\n this.value = value;\n\n this.onChange(value);\n }\n\n protected onTogglePasswordVisibility(): void {\n this.isPasswordHidden = !this.isPasswordHidden;\n }\n}\n","<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n *ngIf=\"isToggleButtonShown\"\n [title]=\"buttonTitle\"\n class=\"c-button\"\n (click)=\"onTogglePasswordVisibility()\"\n>\n <cui-svg\n [icon]=\"icon\"\n [width]=\"16\"\n [height]=\"16\"\n color=\"var(--cui-base-500)\"\n ></cui-svg>\n</button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiInputPasswordComponent } from './input-password.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n imports: [CommonModule, FormsModule, CuiSvgModule],\n declarations: [CuiInputPasswordComponent],\n exports: [CuiInputPasswordComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputPasswordModule {}\n","import type { ElementRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n inject,\n ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n selector: 'cui-input-text',\n templateUrl: './input-text.template.html',\n styleUrls: ['./input-text.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)]\n})\nexport class CuiInputTextComponent implements ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n protected value!: CuiNullable<string>;\n protected onChange!: CuiOnChange<string>;\n protected onTouched!: CuiOnTouched;\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n @ViewChild('input')\n protected input!: ElementRef<HTMLInputElement>;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get iconLeft(): CuiIcon | string | undefined {\n return this.cuiTextFieldController.iconLeft;\n }\n\n protected get isClearButtonHidden(): boolean {\n return !(this.value && !this.isDisabled);\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<string>): void {\n this.value = value;\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<string>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput({ target }: Event): void {\n this.changeModel((target as HTMLInputElement).value);\n }\n\n protected onClear(): void {\n this.changeModel('');\n }\n\n @HostListener('click')\n protected onFocus(): void {\n this.input.nativeElement.focus();\n }\n\n private changeModel(value: string): void {\n this.value = value;\n\n this.onChange(value);\n }\n}\n","<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n type=\"button\"\n class=\"c-button\"\n [class.c-button_hidden]=\"isClearButtonHidden\"\n (click)=\"onClear()\"\n>\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"c-close-icon\"\n />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiTextFieldControllerModule } from '../../directives';\nimport { CuiSvgModule } from '../svg';\nimport { CuiInputTextComponent } from './input-text.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, CuiSvgModule],\n declarations: [CuiInputTextComponent],\n exports: [CuiInputTextComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputModule {}\n","import { InjectionToken } from '@angular/core';\nimport type { CuiTimeMode } from '@cuby-ui/cdk';\n\nexport interface CuiInputTimeOptions {\n readonly mode: CuiTimeMode;\n}\n\nexport const CUI_INPUT_TIME_DEFAULT_OPTIONS: CuiInputTimeOptions = {\n mode: 'HH:MM'\n};\n\nexport const CUI_INPUT_TIME_OPTIONS = new InjectionToken('', {\n factory: () => CUI_INPUT_TIME_DEFAULT_OPTIONS\n});\n","import type { ElementRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n inject,\n Input,\n ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { MaskitoTimeMode } from '@maskito/kit';\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\nimport type { MaskitoOptions } from '@maskito/core';\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide, CuiTime } from '@cuby-ui/cdk';\n\nimport { CUI_INPUT_TIME_OPTIONS, CuiInputTimeOptions } from './input-time.options';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\n\n@Component({\n selector: 'cui-input-time',\n templateUrl: './input-time.template.html',\n styleUrls: ['./input-time.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)]\n})\nexport class CuiInputTimeComponent implements CuiInputTimeOptions, ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n private readonly options = inject(CUI_INPUT_TIME_OPTIONS);\n\n protected _mode = this.options.mode;\n protected maskOptions = this.generateMask(this._mode);\n protected defaultPlaceholder = this._mode.toLowerCase();\n protected value!: CuiNullable<CuiTime>;\n protected onChange!: CuiOnChange<CuiNullable<CuiTime>>;\n protected onTouched!: CuiOnTouched;\n\n @Input()\n public set mode(value: CuiInputTimeOptions['mode']) {\n this._mode = value;\n this.maskOptions = this.generateMask(value);\n this.defaultPlaceholder = value.toLowerCase();\n }\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n @ViewChild('input')\n protected input!: ElementRef<HTMLInputElement>;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder ?? this.defaultPlaceholder;\n }\n\n public get computedValue(): string {\n return this.value ? this.value.toString(this._mode) : '';\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<CuiTime>): void {\n this.value = value;\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<CuiNullable<CuiTime>>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n\n if (value.length !== this._mode.length) {\n this.onChange(null);\n\n return;\n }\n\n const time = CuiTime.fromString(value);\n\n this.onChange(time);\n }\n\n @HostListener('click')\n protected onFocus(): void {\n this.input.nativeElement.focus();\n }\n\n private generateMask(mode: MaskitoTimeMode): MaskitoOptions {\n return maskitoTimeOptionsGenerator({ mode });\n }\n}\n","<cui-svg\n icon=\"cuiIconClock\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"computedValue\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\n\nimport { CuiInputTimeComponent } from './input-time.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\n declarations: [CuiInputTimeComponent],\n exports: [CuiInputTimeComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputTimeModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'label[cuiLabel]',\n templateUrl: './label.template.html',\n styleUrls: ['./label.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiLabelComponent {\n @Input()\n public isRequired = false;\n}\n","<span class=\"c-wrapper\">\n <ng-content></ng-content>\n</span>\n<span\n *ngIf=\"isRequired\"\n class=\"c-star\"\n>\n *\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiLabelComponent } from './label.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CuiLabelComponent],\n exports: [CuiLabelComponent]\n})\nexport class CuiLabelModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport type { CuiShape, CuiSize } from './letter-box.interfaces';\n\n@Component({\n selector: 'cui-letter-box',\n standalone: true,\n templateUrl: './letter-box.component.html',\n styleUrls: ['./letter-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiLetterBoxComponent {\n protected readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-magenta-500)';\n\n @Input({ required: true })\n public letter!: string;\n\n @Input()\n public backgroundColor?: string;\n\n @Input()\n public size: CuiSize = 'sm';\n\n @Input()\n public shape: CuiShape = null;\n\n @HostBinding('style.background-color')\n protected get _backgroundColor(): string {\n return this.backgroundColor ?? this.DEFAULT_BACKGROUND_COLOR;\n }\n\n @HostBinding('attr.data-size')\n protected get _size(): CuiSize {\n return this.size;\n }\n\n @HostBinding('attr.data-shape')\n protected get _shape(): CuiShape {\n return this.shape;\n }\n}\n","{{ letter }}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'input[type=\"radio\"][cuiRadio]',\n template: '',\n styleUrls: ['./radio.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRadioComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiRadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [CuiRadioComponent],\n exports: [CuiRadioComponent]\n})\nexport class CuiRadioModule {}\n","import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ElementRef,\n ViewChild,\n HostBinding,\n ViewContainerRef,\n HostListener\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { takeUntil } from 'rxjs';\n\nimport type { CuiOption } from '../../interfaces';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CUI_ROOT_SELECTOR } from '../root';\n\n@Component({\n selector: 'cui-select[options]',\n templateUrl: './select.template.html',\n styleUrls: ['./select.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\n cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),\n CuiDestroyService\n ],\n hostDirectives: [CuiClickOutsideDirective]\n})\nexport class CuiSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\n private readonly element = inject(ElementRef).nativeElement;\n private readonly document = inject(DOCUMENT);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n\n protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;\n\n protected isOpened = false;\n protected isOptionsListAbove = false;\n protected value!: CuiNullable<unknown>;\n protected onChange!: CuiOnChange<unknown>;\n protected onTouched!: CuiOnTouched;\n protected isDisabled!: boolean;\n protected selectedOption?: CuiOption;\n\n @Input()\n public options!: CuiOption[];\n\n @Input()\n public defaultOptionText?: string;\n\n @ViewChild('button')\n protected readonly button!: ElementRef<HTMLButtonElement>;\n\n @ViewChild('getOptionsListHeightContainer')\n protected readonly getOptionsListHeightContainer!: ElementRef<HTMLUListElement>;\n\n @ViewChild('backdrop')\n protected readonly backdrop!: TemplateRef<unknown>;\n\n @ViewChild('optionsWrapper')\n protected readonly optionsWrapper!: TemplateRef<unknown>;\n\n @HostBinding('style.--c-gap')\n protected gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n protected trackByFn(_: number, item: CuiOption): string {\n return item.label;\n }\n\n public writeValue(value: unknown): void {\n this.value = value;\n // TODO: Непонятно, зачем нужно в construction вторая часть выражения\n this.selectedOption = this.options.find((option) => option.value === value) ?? (value as CuiOption);\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<unknown>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public ngOnInit(): void {\n this.initClickOutsideSubscription();\n }\n\n public ngOnDestroy(): void {\n this.clearViewContainerRef();\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onSelect(event: Event, option: CuiOption): void {\n event.stopPropagation();\n\n if (option.isDisabled) {\n return;\n }\n\n this.value = option.value;\n this.selectedOption = option;\n\n this.onChange(this.value);\n this.onSwitch();\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n }\n\n protected onSwitch(): void {\n if (!this.options.length && !this.defaultOptionText) {\n return;\n }\n\n if (!this.isOpened) {\n this.open();\n\n return;\n }\n\n this.close();\n }\n\n protected onClose(): void {\n this.close();\n }\n\n @HostListener('window:resize')\n protected onWindowResize(): void {\n this.button.nativeElement.blur();\n this.close();\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isOpened) {\n this.onTouched();\n }\n\n this.close();\n });\n }\n\n private open(): void {\n this.isOpened = true;\n\n const rootElement = this.document.querySelector(CUI_ROOT_SELECTOR)!;\n const {\n top: elementRectTop,\n left: elementRectLeft,\n bottom: elementRectBottom\n } = this.element.getBoundingClientRect();\n const distanceToBottom =\n this.document.documentElement.clientHeight - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);\n const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);\n const node = embeddedViewRef.rootNodes[0];\n const nodeStyles = node.style;\n\n this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;\n\n embeddedViewRef.detectChanges();\n\n nodeStyles.width = this.element.offsetWidth + 'px';\n nodeStyles.left = window.scrollX + elementRectLeft + 'px';\n\n if (this.isOptionsListAbove) {\n nodeStyles.top =\n window.scrollY +\n elementRectTop -\n this.getOptionsListHeightContainer.nativeElement.offsetHeight -\n this.SPACE_BETWEEN_BUTTON_AND_OPTIONS +\n 'px';\n } else {\n nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';\n }\n\n rootElement.appendChild(this.viewContainerRef.createEmbeddedView(this.backdrop).rootNodes[0]);\n rootElement.appendChild(embeddedViewRef.rootNodes[0]);\n }\n\n private close(): void {\n this.isOpened = false;\n\n this.clearViewContainerRef();\n }\n\n private clearViewContainerRef(): void {\n this.viewContainerRef.clear();\n }\n}\n","<button\n #button\n type=\"button\"\n [attr.id]=\"id\"\n [attr.data-size]=\"size\"\n [disabled]=\"isDisabled\"\n class=\"c-button\"\n [class.c-button_active]=\"isOpened\"\n [class.c-button_with-error]=\"isError\"\n (click)=\"onSwitch()\"\n>\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\n {{ selectedOption.label }}\n </ng-container>\n <ng-template #placeholderTemplate>\n <span class=\"c-placeholder\">{{ placeholder }}</span>\n </ng-template>\n <cui-svg\n icon=\"cuiIconChevronDown\"\n color=\"var(--cui-base-500)\"\n />\n</button>\n<ng-template #backdrop>\n <div class=\"c-backdrop\"></div>\n</ng-template>\n<ng-template #optionsWrapper>\n <div\n cuiFocusTrap\n class=\"c-options__wrapper\"\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\n >\n <ng-container *ngTemplateOutlet=\"optionsList\" />\n </div>\n</ng-template>\n<div\n #getOptionsListHeightContainer\n class=\"c-get-options-list-height-container\"\n>\n <ng-container *ngTemplateOutlet=\"optionsList\" />\n</div>\n<ng-template #optionsList>\n <ul\n class=\"c-options\"\n [class.c-options_top]=\"isOptionsListAbove\"\n >\n <ng-container *ngIf=\"options.length; else empty\">\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n [class.c-option-button_selected]=\"selectedOption === option\"\n [disabled]=\"option.isDisabled\"\n (click)=\"onSelect($event, option)\"\n >\n <span>{{ option.label }}</span>\n <cui-svg\n *ngIf=\"selectedOption === option\"\n icon=\"cuiIconCheckSm\"\n color=\"var(--cui-info)\"\n class=\"c-option-button__icon\"\n />\n </button>\n </li>\n </ng-container>\n <ng-template #empty>\n <li *ngIf=\"defaultOptionText\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n (click)=\"onClose()\"\n >\n {{ defaultOptionText }}\n </button>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiSelectComponent } from './select.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule, CuiFocusTrapDirective],\n declarations: [CuiSelectComponent],\n exports: [CuiSelectComponent, CuiTextFieldControllerModule]\n})\nexport class CuiSelectModule {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'cui-empty-state, [cuiEmptyState]',\n standalone: true,\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._with-title]': '!!this.title()'\n }\n})\nexport class CuiEmptyStateComponent {\n public readonly title = input<string>();\n public readonly subtitle = input<string>();\n}\n","@if (title(); as title) {\n <p class=\"title\">{{ title }}</p>\n}\n@if (subtitle(); as subtitle) {\n <p class=\"subtitle\">{{ subtitle }}</p>\n}\n<ng-content />\n","export const IS_SIDEBAR_OPENED_STORAGE_KEY = 'is-sidebar-opened';\n\nexport interface CuiSidebarLink {\n readonly text: string;\n}\n","import { Injectable, signal } from '@angular/core';\n\nimport type { CuiDynamicComponent } from './render-dynamic-components.options';\n\n@Injectable()\nexport class CuiRenderDynamicComponentsService {\n private readonly dynamicComponentsSignal = signal<CuiDynamicComponent[]>([]);\n\n public readonly dynamicComponents = this.dynamicComponentsSignal.asReadonly();\n\n public open(dynamicComponent: CuiDynamicComponent): void {\n this.dynamicComponentsSignal.update((prevDynamicComponents) => [...prevDynamicComponents, dynamicComponent]);\n }\n\n public closeLast(): void {\n this.dynamicComponentsSignal.update((prevDynamicComponents) => prevDynamicComponents.slice(0, -1));\n }\n\n public closeAllExceptFirst(): void {\n this.dynamicComponentsSignal.update((prevDynamicComponents) => {\n const firstDynamicComponent = prevDynamicComponents[0];\n\n return firstDynamicComponent ? [firstDynamicComponent] : [];\n });\n }\n\n public closeAll(): void {\n this.dynamicComponentsSignal.set([]);\n }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { CuiRenderDynamicComponentsService } from './render-dynamic-components.service';\n\n@Component({\n selector: 'cui-render-dynamic-components',\n imports: [NgComponentOutlet],\n standalone: true,\n templateUrl: './render-dynamic-components.component.html',\n styleUrl: './render-dynamic-components.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRenderDynamicComponentsComponent {\n private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n protected readonly dynamicComponents = this.renderDynamicComponentsService.dynamicComponents;\n}\n","@for (dynamicComponent of dynamicComponents(); let isLast = $last; track $index) {\n <div\n class=\"container\"\n [class.container_hidden]=\"!isLast\"\n >\n <ng-container *ngComponentOutlet=\"dynamicComponent.component; inputs: dynamicComponent.inputs\" />\n </div>\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\n\nimport { IS_SIDEBAR_OPENED_STORAGE_KEY } from './sidebar.options';\nimport { CuiRenderDynamicComponentsService } from '../render-dynamic-components';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiSidebarService extends CuiRenderDynamicComponentsService {\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\n\n private readonly isOpenedSignal = signal(this.localStorage.getItem(IS_SIDEBAR_OPENED_STORAGE_KEY) === 'true');\n private readonly isHiddenSignal = signal(false);\n private readonly widthSignal = signal<number>(0);\n\n public readonly isOpened = this.isOpenedSignal.asReadonly();\n public readonly isHidden = this.isHiddenSignal.asReadonly();\n public readonly width = this.widthSignal.asReadonly();\n\n public hide(): void {\n this.isHiddenSignal.set(true);\n }\n\n public show(): void {\n this.isHiddenSignal.set(false);\n }\n\n public switch(): void {\n this.isOpenedSignal.update((value) => !value);\n this.localStorage.setItem(IS_SIDEBAR_OPENED_STORAGE_KEY, this.isOpenedSignal().toString());\n }\n\n public setWidth(value: number): void {\n this.widthSignal.set(value);\n }\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CuiSvgModule } from '../../svg';\nimport { CuiSidebarService } from '../sidebar.service';\n\n@Component({\n selector: 'header[cuiSidebarHeader]',\n imports: [CuiSvgModule, NgTemplateOutlet],\n standalone: true,\n templateUrl: 'sidebar-header.component.html',\n styleUrl: 'sidebar-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarHeaderComponent {\n private readonly document = inject(DOCUMENT);\n private readonly sidebarService = inject(CuiSidebarService);\n\n protected readonly isOpened = this.sidebarService.isOpened;\n protected readonly buttonIcon = computed<CuiIcon>(() =>\n this.isOpened() ? 'cuiIconChevronsLeft' : 'cuiIconChevronsRight'\n );\n\n public readonly headerSlot = input.required<TemplateRef<unknown>>();\n\n protected onSwitch(event: MouseEvent): void {\n event.stopPropagation();\n\n this.document.body.click();\n this.sidebarService.switch();\n }\n}\n","<ng-container\n [ngTemplateOutlet]=\"headerSlot()\"\n [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\"\n/>\n<button\n type=\"button\"\n class=\"button\"\n [class.button_opened]=\"isOpened()\"\n (click)=\"onSwitch($event)\"\n>\n <cui-svg\n [icon]=\"buttonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n</button>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { CuiDimensionsObserverDirective } from '@cuby-ui/cdk';\n\nimport { CuiSidebarService } from '../sidebar.service';\n\n@Component({\n selector: 'cui-sidebar-container',\n standalone: true,\n templateUrl: 'sidebar-container.component.html',\n styleUrl: 'sidebar-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CuiDimensionsObserverDirective,\n outputs: ['cuiResizeObserver']\n }\n ],\n host: {\n '(cuiResizeObserver)': 'onResize($event.width)',\n '[class._opened]': 'isOpened()'\n }\n})\nexport class CuiSidebarContainerComponent {\n private readonly sidebarService = inject(CuiSidebarService);\n\n protected readonly isOpened = this.sidebarService.isOpened;\n protected readonly isHidden = this.sidebarService.isHidden;\n\n protected onResize(width: number): void {\n this.sidebarService.setWidth(width);\n }\n}\n","@if (!isHidden()) {\n <ng-content />\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiSidebarLink } from '../sidebar.options';\n\n@Component({\n selector: 'cui-sidebar-navigation',\n imports: [NgTemplateOutlet],\n standalone: true,\n templateUrl: 'sidebar-navigation.component.html',\n styleUrl: 'sidebar-navigation.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarNavigationComponent {\n public readonly links = input.required<CuiSidebarLink[]>();\n public readonly slot = input.required<TemplateRef<unknown>>();\n}\n","<nav class=\"nav\">\n <ul class=\"list\">\n @for (link of links(); track link.text; let isLast = $last) {\n <ng-container\n [ngTemplateOutlet]=\"slot()\"\n [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\"\n />\n }\n </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiIcon } from '@cuby-ui/icons';\n\nimport { CuiSvgModule } from '../../svg';\n\n@Component({\n selector: '[cuiSidebarNavigationItem]',\n imports: [CuiSvgModule],\n standalone: true,\n templateUrl: 'sidebar-navigation-item.component.html',\n styleUrl: 'sidebar-navigation-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._active]': 'active()'\n }\n})\nexport class CuiSidebarNavigationItemComponent {\n public readonly text = input.required<string>();\n public readonly icon = input<CuiIcon>();\n public readonly active = input<boolean>();\n public readonly isOpen = input<boolean>();\n}\n","@if (icon(); as icon) {\n <cui-svg\n [icon]=\"icon\"\n color=\"var(--cui-base-500)\"\n />\n}\n@if (isOpen()) {\n {{ text() }}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'cui-sidebar-navigation-container',\n imports: [NgTemplateOutlet],\n standalone: true,\n templateUrl: 'sidebar-navigation-container.component.html',\n styleUrl: 'sidebar-navigation-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarNavigationContainerComponent {\n public readonly slot = input.required<TemplateRef<unknown>>();\n public readonly title = input<string>();\n}\n","@if (title(); as title) {\n <h3 class=\"title\">{{ title }}</h3>\n}\n\n<ng-container [ngTemplateOutlet]=\"slot()\" />\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'cui-card-wrapper, [cuiCardWrapper]',\n standalone: true,\n templateUrl: 'card-wrapper.component.html',\n styleUrl: 'card-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._with-border]': 'withBorder()'\n }\n})\nexport class CuiCardWrapperComponent {\n public readonly withBorder = input(true);\n}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'cui-layout',\n standalone: true,\n templateUrl: './layout.component.html',\n styleUrl: './layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.marginLeft.px]': 'sidebarWidth()'\n }\n})\nexport class CuiLayoutComponent {\n public readonly sidebarWidth = input.required<number>();\n}\n","<div class=\"content\">\n <ng-content />\n</div>\n","import { InjectionToken, Signal, type TemplateRef } from '@angular/core';\nimport { CuiNullable } from '@cuby-ui/cdk';\n\nexport const CUI_TABS_SERVICE_TOKEN = new InjectionToken<CuiAbstractTabsService>('CUI_TABS_SERVICE');\n\nexport abstract class CuiAbstractTabsService implements CuiTabsService {\n abstract readonly tabs: Signal<CuiTabOptions[]>;\n abstract readonly activeTab: Signal<CuiNullable<CuiTabOptions>>;\n\n abstract set(tab: CuiTabOptions): void;\n abstract addTab(tab: CuiTabOptions): void;\n abstract removeTab(tabId: string): void;\n}\n\nexport interface CuiTabsService {\n set(tab: CuiTabOptions): void;\n addTab(tab: CuiTabOptions): void;\n removeTab(tabId: string): void;\n}\n\nexport interface CuiTabOptions {\n readonly id: string;\n readonly button: TemplateRef<unknown>;\n readonly content: TemplateRef<unknown>;\n readonly data?: unknown;\n}\n","import type { TemplateRef } from '@angular/core';\nimport { Directive, effect, inject, input, untracked } from '@angular/core';\nimport { CuiIdService } from '@cuby-ui/cdk';\n\nimport { CUI_TABS_SERVICE_TOKEN } from '../tabs/tabs.options';\n\n@Directive({\n selector: 'cui-tab, [cuiTab]',\n standalone: true\n})\nexport class CuiTabDirective {\n private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\n private readonly tabId = inject(CuiIdService).generate();\n\n public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n public readonly contentSlot = input.required<TemplateRef<unknown>>();\n public readonly data = input<unknown>();\n\n constructor() {\n this.initTabEffect();\n }\n\n private initTabEffect(): void {\n effect(\n (onCleanup) => {\n this.addTab(this.buttonSlot(), this.contentSlot());\n\n onCleanup(this.removeTab.bind(this));\n },\n { allowSignalWrites: true }\n );\n }\n\n private addTab(button: TemplateRef<unknown>, content: TemplateRef<unknown>): void {\n this.tabsService.addTab({ id: this.tabId, button, content, data: untracked(this.data) });\n }\n\n private removeTab(): void {\n this.tabsService.removeTab(this.tabId);\n }\n}\n","import { Component, ChangeDetectionStrategy, inject, TemplateRef, input, effect } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport { CUI_TABS_SERVICE_TOKEN, CuiTabOptions } from '../../tabs.options';\n\n@Component({\n selector: 'cui-abstract-tabs',\n imports: [NgTemplateOutlet],\n standalone: true,\n templateUrl: 'abstract-tabs.component.html',\n styleUrl: 'abstract-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAbstractTabsComponent {\n private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\n\n protected readonly tabs = this.tabsService.tabs;\n protected readonly activeTab = this.tabsService.activeTab;\n\n public readonly headerSlot = input<TemplateRef<unknown>>();\n public readonly selectedIndex = input<number>(0);\n\n constructor() {\n this.initSelectedTabEffect();\n }\n\n protected onSelectTab(event: Event, tab: CuiTabOptions): void {\n if (event.defaultPrevented) {\n return;\n }\n\n this.tabsService.set(tab);\n }\n\n private initSelectedTabEffect() {\n effect(\n () => {\n const index = this.selectedIndex();\n const length = this.tabs().length;\n\n if (index === undefined || !length) {\n return;\n }\n\n if (index < 0 || index >= length) {\n throw new Error('Invalid tab index');\n }\n\n this.tabsService.set(this.tabs()[index]);\n },\n { allowSignalWrites: true }\n );\n }\n}\n","@if (headerSlot(); as header) {\n <ng-container\n [ngTemplateOutlet]=\"header\"\n [ngTemplateOutletContext]=\"{ $implicit: buttons }\"\n />\n} @else {\n <header class=\"header\">\n <ng-container [ngTemplateOutlet]=\"buttons\" />\n </header>\n}\n\n<ng-template #buttons>\n @for (tab of tabs(); track tab.id) {\n <button\n type=\"button\"\n class=\"button\"\n (click)=\"onSelectTab($event, tab)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"tab.button\"\n [ngTemplateOutletContext]=\"{ $implicit: tab.data, isActive: tab.id === activeTab()?.id }\"\n />\n </button>\n }\n</ng-template>\n\n@if (activeTab()?.content; as content) {\n <ng-container\n [ngTemplateOutlet]=\"content\"\n [ngTemplateOutletContext]=\"{ $implicit: activeTab()?.data }\"\n />\n}\n","import { computed, Injectable, signal, WritableSignal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport { CuiAbstractTabsService, CuiTabOptions } from '../tabs.options';\n\n@Injectable()\nexport class CuiTabsServiceImpl extends CuiAbstractTabsService {\n private readonly tabsSignal = signal<CuiTabOptions[]>([]);\n private readonly activeTabSignal = computed<WritableSignal<CuiNullable<CuiTabOptions>>>(() =>\n signal(this.tabsSignal()[0])\n );\n\n public readonly tabs = this.tabsSignal.asReadonly();\n public readonly activeTab = computed(() => this.activeTabSignal()());\n\n public set(tab: CuiTabOptions): void {\n this.activeTabSignal().set(tab);\n }\n\n public addTab(tab: CuiTabOptions): void {\n this.tabsSignal.update((prev) => [...prev, tab]);\n }\n\n public removeTab(tabId: string): void {\n this.tabsSignal.update((prev) => prev.filter((tab) => tab.id !== tabId));\n }\n}\n","import { Provider, Type } from '@angular/core';\nimport { CuiTabsServiceImpl } from './services';\nimport { CUI_TABS_SERVICE_TOKEN, CuiAbstractTabsService } from './tabs.options';\n\nexport function provideCuiTabs(Implementation: Type<CuiAbstractTabsService> = CuiTabsServiceImpl): Provider {\n return {\n provide: CUI_TABS_SERVICE_TOKEN,\n useClass: Implementation\n };\n}\n","import { ChangeDetectionStrategy, Component, input, TemplateRef } from '@angular/core';\n\nimport { CuiAbstractTabsComponent } from './components';\nimport { provideCuiTabs } from './tabs.provider';\n\n@Component({\n selector: 'cui-tabs',\n imports: [CuiAbstractTabsComponent],\n standalone: true,\n templateUrl: 'tabs.component.html',\n styleUrl: 'tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideCuiTabs()]\n})\nexport class CuiTabsComponent {\n public readonly headerSlot = input<TemplateRef<unknown>>();\n public readonly selectedIndex = input<number>(0);\n}\n","<cui-abstract-tabs\n [headerSlot]=\"headerSlot()\"\n [selectedIndex]=\"selectedIndex()\"\n/>\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { CuiAutoResizingDirective } from '@cuby-ui/cdk';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\n\n@Component({\n selector: 'textarea[cuiTextarea]',\n template: '',\n styleUrls: ['./textarea.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER],\n hostDirectives: [CuiAutoResizingDirective]\n})\nexport class CuiTextareaComponent {\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n @Input()\n @HostBinding('rows')\n public rows = 4;\n\n @Input()\n @HostBinding('class._no-borders-and-paddings')\n public noBordersAndPaddings = false;\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CuiTextareaComponent } from './textarea.component';\n\n@NgModule({\n declarations: [CuiTextareaComponent],\n exports: [CuiTextareaComponent]\n})\nexport class CuiTextareaModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'input[type=\"checkbox\"][cuiToggle]',\n template: '',\n styleUrls: ['./toggle.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiToggleComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiToggleComponent } from './toggle.component';\n\n@NgModule({\n declarations: [CuiToggleComponent],\n exports: [CuiToggleComponent]\n})\nexport class CuiToggleModule {}\n","export const EXTENSION_GROUP_COLOR = {\n model: 'var(--cui-light-green-500)',\n doc: 'var(--cui-light-blue-500)',\n image: 'var(--cui-yellow-400)',\n sheet: 'var(--cui-green-600)',\n presentations: 'var(--cui-green-600)',\n video: 'var(--cui-light-green-500)',\n audio: 'var(--cui-lavender-400)',\n archive: 'var(--cui-orange-600)',\n geo: 'var(--cui-magenta-400)'\n} as const;\n\nexport const EXTENSION_TO_GROUP: Record<string, keyof typeof EXTENSION_GROUP_COLOR> = {\n // 3D Model formats - var(--cui-light-green-500)\n dae: 'model',\n fbx: 'model',\n glb: 'model',\n gltf: 'model',\n mtl: 'model',\n obj: 'model',\n ply: 'model',\n step: 'model',\n stl: 'model',\n usd: 'model',\n usda: 'model',\n usdc: 'model',\n usdz: 'model',\n dxf: 'model',\n\n // Document formats - var(--cui-light-blue-500)\n azw: 'doc',\n doc: 'doc',\n docx: 'doc',\n epub: 'doc',\n mobi: 'doc',\n odt: 'doc',\n pdf: 'doc',\n ps: 'doc',\n rtf: 'doc',\n txt: 'doc',\n w: 'doc',\n\n // Spreadsheet formats - var(--cui-green-600)\n ods: 'sheet',\n x: 'sheet',\n xls: 'sheet',\n xlsx: 'sheet',\n\n // Presentation formats - var(--cui-green-600)\n odp: 'presentations',\n p: 'presentations',\n pt: 'presentations',\n ppt: 'presentations',\n pptx: 'presentations',\n sldx: 'presentations',\n\n // Video formats - var(--cui-light-green-500)\n '3g2': 'video',\n '3gp': 'video',\n avi: 'video',\n flv: 'video',\n m4v: 'video',\n mkv: 'video',\n mov: 'video',\n mp4: 'video',\n mpg: 'video',\n pr: 'video',\n rm: 'video',\n rmvb: 'video',\n vob: 'video',\n webm: 'video',\n wmv: 'video',\n\n // Audio formats - var(--cui-lavender-400)\n aac: 'audio',\n aif: 'audio',\n aiff: 'audio',\n alac: 'audio',\n amr: 'audio',\n au: 'audio',\n dsd: 'audio',\n flac: 'audio',\n m4a: 'audio',\n mp3: 'audio',\n ogg: 'audio',\n opus: 'audio',\n pcm: 'audio',\n wav: 'audio',\n wma: 'audio',\n\n // Archive formats - var(--cui-orange-600)\n '7z': 'archive',\n arj: 'archive',\n gz: 'archive',\n rar: 'archive',\n sfx: 'archive',\n tar: 'archive',\n zip: 'archive',\n\n // Geographic Data formats - var(--cui-magenta-400)\n geojson: 'geo',\n gpx: 'geo',\n kml: 'geo',\n kmz: 'geo',\n shp: 'geo',\n\n // Image formats - var(--cui-yellow-400)\n arw: 'image',\n bmp: 'image',\n cr2: 'image',\n dng: 'image',\n gif: 'image',\n ico: 'image',\n jpeg: 'image',\n jpg: 'image',\n nef: 'image',\n orf: 'image',\n pef: 'image',\n png: 'image',\n raf: 'image',\n raw: 'image',\n svg: 'image',\n tga: 'image',\n tif: 'image',\n tiff: 'image',\n webp: 'image',\n xcf: 'image'\n} as const;\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { EXTENSION_GROUP_COLOR, EXTENSION_TO_GROUP } from './file-icon.options';\n\n@Component({\n selector: 'cui-file-icon',\n imports: [CuiSvgModule],\n standalone: true,\n templateUrl: 'file-icon.component.html',\n styleUrl: 'file-icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFileIconComponent {\n protected readonly extensionColor = computed(() => this.color() ?? this.getColorByExtension(this.extension()));\n\n public readonly extension = input.required<string>();\n public readonly color = input<string>();\n\n private getColorByExtension(extension: string): string {\n return EXTENSION_GROUP_COLOR[EXTENSION_TO_GROUP[extension]];\n }\n}\n","@if (extensionColor(); as color) {\n <cui-svg\n icon=\"cuiIconBoldFileDefaultSm\"\n [color]=\"color\"\n class=\"icon\"\n ></cui-svg>\n\n <span class=\"extension\">{{ extension() }}</span>\n}\n","import { Translation } from '@jsverse/transloco';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\n\r\nexport const COMBINED_TEXT_BLOCK_PART = 'combined-text-block-part';\r\nexport const COMBINED_TEXT_BLOCK = 'combined-text-block';\r\nexport const COMBINED_TEXT_BLOCK_NAME = 'paragraph';\r\nexport const COMBINED_TEXT_BLOCK_ADDED = 'combinedTextBlockAdded';\r\nexport const COMBINED_TEXT_BLOCK_UPDATED = 'combinedTextBlockUpdated';\r\nexport const COMBINED_TEXT_BLOCK_REMOVED = 'combinedTextBlockRemoved';\r\n\r\nexport const SPLIT_MAX_LENGTH = 1000;\r\nexport const SPLIT_LENGTH = 500;\r\n\r\nexport const EDITOR_SELECTOR = '[data-editor]';\r\nexport const DEFAULT_PLACEHOLDER = \"Type text or '/' for commands...\";\r\nexport const DEFAULT_READONLY_PLACEHOLDER = \"No 'Description' was provided\";\r\nexport const DEFAULT_CONFIG: CuiEditorConfig = {\r\n tools: {},\r\n readOnly: false,\r\n autofocus: false\r\n};\r\n\r\nexport const CuiEditorTranslations: Record<string, Promise<Translation>> = {\r\n en: import('../i18n/en.json')\r\n} as const;\r\n","import type { BlockToolData } from '@editorjs/editorjs';\r\nimport Header from '@editorjs/header';\r\n\r\nexport class CuiHeaderTool extends Header {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override validate(): boolean {\r\n return true;\r\n }\r\n\r\n public override render(): HTMLHeadingElement {\r\n return super.render();\r\n }\r\n\r\n public override save(block: HTMLHeadingElement): BlockToolData {\r\n return super.save(block);\r\n }\r\n}\r\n","import List from '@editorjs/list';\r\n\r\nexport class CuiListTool extends List {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLElement {\r\n return super.render() as HTMLElement;\r\n }\r\n}\r\n","import type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport type { CuiParent } from '../interfaces/parent';\r\n\r\nexport class CuiSelectionBase {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n private readonly SELECTED_TEXT_CLASS = '_selected';\r\n\r\n public TAG = 'B';\r\n public COMMAND = 'bold';\r\n\r\n protected readonly api!: API;\r\n protected button!: HTMLButtonElement;\r\n protected _state = false;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n this.addSelectionToDOM(range, startContainer, endContainer);\r\n }\r\n\r\n public unwrap(): void {\r\n document.execCommand(this.COMMAND);\r\n }\r\n\r\n public checkState(): boolean {\r\n this.state = document.queryCommandState(this.COMMAND);\r\n\r\n return this.state;\r\n }\r\n\r\n public surround(range: Range): void {\r\n if (this.state) {\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.wrap(range);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addSelectionToDOM(range: Range, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n this.addSelectionForOnlyChild(range);\r\n\r\n return;\r\n }\r\n\r\n this.addSelectionForChildren(startParent, endParent);\r\n }\r\n\r\n private addSelectionForOnlyChild(range: Range): void {\r\n const selectedText = range.extractContents();\r\n const selection = this.createElement();\r\n\r\n selection.appendChild(selectedText);\r\n range.insertNode(selection);\r\n }\r\n\r\n private addSelectionForChildren(startParent: Element, endParent: Element): void {\r\n const nodes = this.getSelectedNodesFromDOM(startParent, endParent);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.add(this.SELECTED_TEXT_CLASS));\r\n\r\n document.execCommand(this.COMMAND);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.remove(this.SELECTED_TEXT_CLASS));\r\n }\r\n\r\n private getSelectedNodesFromDOM(startParent: Element, endParent: Element): Element[] {\r\n const nodes = [startParent];\r\n let next = startParent.nextSibling;\r\n\r\n while (next && next !== endParent) {\r\n nodes.push(next as Element);\r\n\r\n next = next?.nextSibling || null;\r\n }\r\n\r\n nodes.push(endParent);\r\n\r\n return nodes;\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiBoldInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'bold';\r\n\r\n public static title = 'Bold';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n b: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--bold'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 10.0002V5.91683C7.5 5.8708 7.53731 5.8335 7.58333 5.8335H8.66667C9.58333 5.8335 11.6667 5.91683 11.6667 7.91683C11.6667 7.91683 11.6667 10.0002 9.16667 10.0002M7.5 10.0002V14.0002C7.5 14.0922 7.57462 14.1668 7.66667 14.1668H10.4167C11.6667 14.1668 12.5 13.3335 12.5 12.0835C12.5 9.754 9.16667 10.0002 9.16667 10.0002M7.5 10.0002H9.16667\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+B';\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiItalicInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'italic';\r\n\r\n public override readonly TAG = 'I';\r\n public static title = 'Italic';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n i: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--italic'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.118 8.3335C10.3532 10.6116 9.16797 14.1668 9.16797 14.1668\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n <path d=\"M11.8404 5.8335H11.832\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+I';\r\n }\r\n}\r\n","import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function urlValidator(): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n try {\n new URL(value);\n\n return null;\n } catch {\n return { url: true };\n }\n };\n}\n","export const BlockConversionToCombined = {\r\n paragraph: 'combinedTextBlock'\r\n};\r\n\r\nexport const enum EventActions {\r\n add = 'block-added',\r\n update = 'block-changed',\r\n remove = 'block-removed'\r\n}\r\n","export function generateId(): string {\r\n return '_' + Math.random().toString(36).substring(2, 9);\r\n}\r\n","import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type EditorJS from '@editorjs/editorjs';\r\nimport type { BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport type { Observable } from 'rxjs';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { CuiBlock, CuiJTextApiService } from '@cuby-ui/api';\r\n\r\nimport {\r\n COMBINED_TEXT_BLOCK_ADDED,\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n COMBINED_TEXT_BLOCK_REMOVED,\r\n COMBINED_TEXT_BLOCK_UPDATED\r\n} from '../constants';\r\nimport type {\r\n CuiCombinedBlockAddingEvent,\r\n CuiCombinedBlockToolData,\r\n CuiCombinedPartBlock,\r\n CuiEventActionData,\r\n CuiFullBlockData\r\n} from '../interfaces';\r\nimport { generateId } from '../utils/generate-id';\r\nimport { EventActions } from './editor-service.options';\r\n\r\n@Injectable()\r\nexport class CuiEditorService {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly jtextService = inject(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(\r\n updatedBlocks: CuiBlock[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<CuiBlock[]> {\r\n const updatedBlocksWithId = updatedBlocks.reduce((acc, block) => {\r\n const blockWithId = {\r\n ...block,\r\n id: blockIdsMap.get(block.id!)\r\n };\r\n\r\n if (blockWithId.id) {\r\n acc.push(blockWithId);\r\n }\r\n\r\n return acc;\r\n }, [] as CuiBlock[]);\r\n\r\n const updateBlocksArray = updatedBlocksWithId.map((block) => this.jtextService.updateBlock(block));\r\n const updateBlocks$ = updatedBlocksWithId.length ? forkJoin(updateBlocksArray) : of([]);\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n public collectRemovedBlocksRequest(\r\n editorId: string,\r\n removedBlocksIds: string[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<void> {\r\n const removedBlocks: string[] = removedBlocksIds.reduce((blockIds, blockId) => {\r\n const backendID = blockIdsMap.get(blockId) 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: CuiBlock[]) => void;\r\n addedCallback: (data: CuiCombinedBlockAddingEvent) => void;\r\n }\r\n ): void {\r\n editor.on(COMBINED_TEXT_BLOCK_ADDED, data.addedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_UPDATED, data.updatedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_REMOVED, data.removedCallback);\r\n }\r\n\r\n public setStartBlock(\r\n editorId: string,\r\n callback: (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => void\r\n ): void {\r\n const blockId = generateId();\r\n const emptyBlock: CuiCombinedPartBlock = {\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: '',\r\n parentId: blockId,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n const body = {\r\n position: 0,\r\n block: emptyBlock,\r\n jtextContainerId: editorId\r\n };\r\n\r\n this.jtextService\r\n .createBlock(body)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((id) => {\r\n emptyBlock.id = id;\r\n\r\n const block: CuiBlock<CuiCombinedBlockToolData> = {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: blockId,\r\n textBlocks: [emptyBlock]\r\n }\r\n };\r\n\r\n callback(block, id);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { Tool } from '../components/editor-tool-modal';\r\n\r\nimport { MarkerType } from './markers-service.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiMarkersService {\r\n protected roles: Tool[] = [];\r\n protected tools: Tool[] = [\r\n {\r\n id: '0',\r\n image: 'blob:https://www.figma.com/f985f4fc-abc6-4727-857e-80633836e2b2',\r\n title: 'Шуруповерт',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '1',\r\n image: 'blob:https://www.figma.com/92ad9b38-566c-4ff6-84ba-0b20b24fef39',\r\n title: 'Молоток',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '2',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '3',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '4',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '5',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '6',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '7',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '8',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n }\r\n ];\r\n\r\n public getMarkersByType(type: MarkerType): Tool[] {\r\n return type === MarkerType.role ? this.roles : this.tools;\r\n }\r\n\r\n public getMarkerObjectByType(type: MarkerType, id: string): Tool | undefined {\r\n const markersArray = this.getMarkersByType(type);\r\n\r\n return markersArray.find((marker) => marker.id === id);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\nimport type { Tool } from '../../../editor-tool-modal';\n\n@Component({\n selector: 'cc-select-option',\n standalone: true,\n imports: [NgIf],\n templateUrl: './select-option.component.html',\n styleUrls: ['./select-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectOptionComponent {\n @Input({ required: true })\n public tool!: Tool;\n}\n","<ng-container *ngIf=\"tool\">\n <img\n *ngIf=\"tool.image\"\n class=\"image\"\n [src]=\"tool.image\"\n alt=\"\"\n />\n <h3 class=\"title\">{{ tool.title }}</h3>\n</ng-container>\n","import { DOCUMENT, NgFor, NgIf } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n Input,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';\n\nimport type { Tool } from '../editor-tool-modal/editor-tool-modal.options';\n\nimport { EDITOR_SELECTOR } from '../../constants';\nimport { MarkerType } from '../../services/markers-service.options';\nimport { CuiMarkersService } from '../../services/markers.service';\n\nimport { SelectOptionComponent } from './component/select-item/select-option.component';\n\n@Component({\n selector: 'cc-marker-select',\n imports: [\n CuiButtonModule,\n CuiContextMenuModule,\n CuiInputModule,\n CuiLabelModule,\n FormsModule,\n ReactiveFormsModule,\n SelectOptionComponent,\n NgIf,\n NgFor\n ],\n standalone: true,\n templateUrl: './marker-select.component.html',\n styleUrls: ['./marker-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiClickOutsideDirective],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MarkerSelectComponent),\n multi: true\n }\n ]\n})\nexport class MarkerSelectComponent implements OnInit, OnDestroy {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n private readonly element = inject(ElementRef).nativeElement;\n private readonly markersService = inject(CuiMarkersService);\n\n private SPACE_BETWEEN_TARGET_AND_LIST = 5;\n\n @Input()\n public target!: HTMLButtonElement;\n\n @Input()\n public set space(value: number) {\n this.SPACE_BETWEEN_TARGET_AND_LIST = value;\n }\n\n protected isVisible = signal(false);\n protected isHidden = signal(true);\n protected editor!: HTMLElement;\n protected value!: CuiNullable<Tool>;\n // TODO: set current type\n protected elements = this.markersService.getMarkersByType(MarkerType.tool);\n protected onChange!: CuiOnChange<unknown>;\n protected onTouched!: CuiOnTouched;\n protected readonly targetToggleEventListener = (): void => {\n this.isVisible.update((prev) => !prev);\n\n if (!this.isVisible()) {\n return;\n }\n\n this.calculateDropdownPosition();\n };\n\n @HostBinding('class._hidden')\n protected get hide(): boolean {\n return this.isHidden();\n }\n\n public writeValue(value: Tool): void {\n this.value = value;\n }\n\n public registerOnChange(fn: CuiOnChange<unknown>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n protected onScroll(): void {\n this.isVisible.set(false);\n }\n\n public ngOnInit(): void {\n this.initTargetElementListener();\n this.initClickOutsideSubscription();\n this.initOnCloseWhenEditorScroll();\n }\n\n public ngOnDestroy(): void {\n this.destroyEventListeners();\n }\n\n protected onToolClick(tool: Tool): void {\n this.value = tool;\n\n this.onChange(this.value);\n this.onTouched();\n\n // this.isVisible.set(false);\n }\n\n private initTargetElementListener(): void {\n this.target.addEventListener('click', this.targetToggleEventListener);\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\n if (this.target.contains(target) || !this.isVisible()) {\n return;\n }\n\n this.isVisible.set(false);\n });\n }\n\n private initOnCloseWhenEditorScroll(): void {\n this.editor = this.element.closest(EDITOR_SELECTOR);\n\n this.editor?.addEventListener('scroll', this.onScroll.bind(this));\n }\n\n private destroyEventListeners(): void {\n this.editor?.removeEventListener('scroll', this.onScroll.bind(this));\n this.target?.addEventListener('click', this.targetToggleEventListener);\n }\n\n private calculateDropdownPosition(): void {\n this.isHidden.set(true);\n\n setTimeout(() => {\n const target = this.target;\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\n this.document.documentElement;\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);\n const distanceToRight = documentClientWidth - targetRectLeft;\n const isListRight = distanceToRight < this.element.offsetWidth;\n const isListAbove = distanceToBottom < this.element.offsetHeight;\n\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\n this.isHidden.set(false);\n });\n }\n\n private changePositionX(isListRight: boolean, width: number, left: number): void {\n if (isListRight) {\n this.element.style.right = 'auto';\n this.element.style.left = left;\n\n return;\n }\n\n this.element.style.right = left - this.element.offsetWidth + width;\n this.element.style.left = 'auto';\n }\n\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\n if (isListAbove) {\n this.element.style.top =\n bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n\n return;\n }\n\n this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n }\n}\n","<ng-container *ngIf=\"isVisible()\">\n <div\n #dropdown\n class=\"dropdown\"\n >\n <header class=\"header\">\n <cui-input-text\n class=\"header__input\"\n cuiTextFieldId=\"estimated\"\n cuiTextFieldPlaceholder=\"Search...\"\n />\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconFiltersLines\"\n ></button>\n </header>\n <div class=\"scrollable-content\">\n <cc-select-option\n *ngFor=\"let element of elements\"\n [class._selected]=\"element.id === value?.id\"\n (click)=\"onToolClick(element)\"\n [tool]=\"element\"\n />\n </div>\n </div>\n</ng-container>\n","export const MARKER_SELECT_SELECTOR = 'marker-select';\r\n","import { DOCUMENT, NgIf } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport {\n CuiButtonModule,\n CuiFormFieldModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiSvgModule\n} from '../../../components';\n\nimport { urlValidator } from '../../utils/url.validator';\n\nimport { EDITOR_SELECTOR } from '../../constants';\nimport { CuiMarkersService } from '../../services';\nimport type { Tool } from '../editor-tool-modal';\nimport { MarkerSelectComponent } from '../marker-select';\n\nimport type { MarkerData, MarkerDataControl } from './marker-modal.interfaces';\n\n@Component({\n standalone: true,\n imports: [\n CuiButtonModule,\n CuiElementDirective,\n CuiFormFieldModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiSvgModule,\n FormsModule,\n MarkerSelectComponent,\n ReactiveFormsModule,\n TranslocoDirective,\n NgIf\n ],\n templateUrl: './marker-modal.component.html',\n styleUrls: ['./marker-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiClickOutsideDirective]\n})\nexport class MarkerModalComponent implements OnInit, OnDestroy {\n private readonly element = inject(ElementRef).nativeElement;\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n private readonly cuiIdService = inject(CuiIdService);\n private readonly markersService = inject(CuiMarkersService);\n\n protected readonly TITLE_MAX_LENGTH = 100;\n\n protected readonly formTitle = signal('');\n protected readonly isTitleEmpty = computed(() => !this.formTitle().length);\n protected readonly isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);\n protected readonly isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());\n protected readonly titleId = this.cuiIdService.generate();\n protected readonly dataId = this.cuiIdService.generate();\n\n protected dynamicDataControl!: MarkerDataControl;\n protected spaceBetweenTargetAndList = 5;\n protected startTitle = '';\n\n @Input()\n public set title(value: string) {\n this.startTitle = value;\n this.formTitle.set(value);\n }\n\n @Input()\n public set url(value: string) {\n this.dynamicDataControl = new FormControl(value, {\n nonNullable: true,\n validators: [Validators.required, urlValidator()]\n });\n }\n\n @Input()\n public set tool(value: Tool) {\n const tool = this.markersService.getMarkerObjectByType(value.type!, value.id);\n this.dynamicDataControl = new FormControl(tool, {\n nonNullable: true,\n validators: [Validators.required]\n });\n }\n\n @Input()\n public isGlobal = false;\n\n @Input()\n public isTool = false;\n\n @Input()\n public target!: HTMLButtonElement;\n\n @Input()\n public set space(value: number) {\n this.spaceBetweenTargetAndList = value;\n }\n\n @Output()\n public saveClicked = new EventEmitter<MarkerData>();\n\n @Output()\n public cancelClicked = new EventEmitter();\n\n protected isVisible = signal(false);\n protected isHidden = signal(true);\n protected editor!: HTMLElement;\n protected currentTool?: Tool;\n protected readonly targetToggleEventListener = (): void => {\n this.isVisible.update((prev) => !prev);\n\n if (!this.isVisible()) {\n return;\n }\n\n this.calculateDropdownPosition();\n };\n\n protected get isFormInvalid(): boolean {\n return this.dynamicDataControl.invalid || this.isTitleInvalid();\n }\n\n protected get isDynamicDataErrorShown(): boolean {\n return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;\n }\n\n @HostBinding('class._hidden')\n protected get hide(): boolean {\n return this.isHidden();\n }\n\n @HostBinding('class._fixed')\n protected get fixed(): boolean {\n return this.isGlobal;\n }\n\n public ngOnInit(): void {\n this.initTargetElementListener();\n this.initClickOutsideSubscription();\n this.initOnCloseWhenEditorScroll();\n }\n\n public ngOnDestroy(): void {\n this.destroyEventListeners();\n }\n\n protected onTitleLabelClick(element: HTMLDivElement): void {\n const range = document.createRange();\n const selection = window.getSelection();\n\n range.selectNodeContents(element);\n range.collapse(false);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n\n protected onSave(): void {\n if (this.isFormInvalid) {\n return;\n }\n\n this.isVisible.set(false);\n this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });\n }\n\n protected onScroll(): void {\n this.isVisible.set(false);\n }\n\n protected onCancel(): void {\n this.isVisible.set(false);\n this.cancelClicked.emit();\n }\n\n protected onClearTitle(titleElement: HTMLElement): void {\n this.formTitle.set('');\n\n titleElement.textContent = '';\n titleElement.focus();\n }\n\n protected onTitleChange(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n\n return;\n }\n\n const target = event.target as HTMLInputElement;\n const value = target.textContent!;\n\n this.formTitle.set(value);\n }\n\n protected onTitlePaste(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n if (!this.document) {\n return;\n }\n\n const value = event.clipboardData?.getData('text/plain');\n const target = event.target as HTMLElement;\n\n this.document.execCommand('insertText', false, value);\n setTimeout(() => this.formTitle.set(target.textContent!));\n }\n\n private initTargetElementListener(): void {\n this.target.addEventListener('click', this.targetToggleEventListener);\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\n if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {\n return;\n }\n\n this.isVisible.set(false);\n });\n }\n\n private initOnCloseWhenEditorScroll(): void {\n this.editor = this.document.querySelector(EDITOR_SELECTOR) as HTMLElement;\n\n this.editor.addEventListener('scroll', this.onScroll.bind(this));\n }\n\n private destroyEventListeners(): void {\n this.editor.removeEventListener('scroll', this.onScroll.bind(this));\n this.target.addEventListener('click', this.targetToggleEventListener);\n }\n\n private calculateDropdownPosition(): void {\n this.isHidden.set(true);\n\n setTimeout(() => {\n const target = this.target;\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\n this.document.documentElement;\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);\n const distanceToRight = documentClientWidth - targetRectLeft;\n const isListRight = distanceToRight < this.element.offsetWidth;\n const isListAbove = distanceToBottom < this.element.offsetHeight;\n\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\n\n this.isHidden.set(false);\n });\n }\n\n private changePositionX(isListRight: boolean, width: number, left: number): void {\n if (this.isGlobal) {\n this.changeGlobalPositionX(isListRight, width, left);\n\n return;\n }\n\n if (isListRight) {\n this.element.style.right = '0';\n this.element.style.left = 'auto';\n\n return;\n }\n\n this.element.style.right = 'auto';\n this.element.style.left = '0';\n }\n\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\n if (this.isGlobal) {\n this.changeGlobalPositionY(isListAbove, height, bottom);\n\n return;\n }\n\n if (isListAbove) {\n this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';\n this.element.style.top = 'auto';\n\n return;\n }\n\n this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';\n this.element.style.bottom = 'auto';\n }\n\n private changeGlobalPositionX(isListRight: boolean, width: number, left: number): void {\n if (isListRight) {\n this.element.style.left = left - this.element.offsetWidth + width + 'px';\n\n return;\n }\n\n this.element.style.left = left + 'px';\n }\n\n private changeGlobalPositionY(isListAbove: boolean, height: number, bottom: number): void {\n if (isListAbove) {\n this.element.style.top =\n bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';\n\n return;\n }\n\n this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';\n }\n}\n","<ng-container *transloco=\"let t\">\n <ng-container *ngIf=\"isVisible()\">\n <form\n autocomplete=\"off\"\n class=\"wrapper\"\n >\n <cui-form-field>\n <!-- eslint-disable-next-line -->\n <label\n [for]=\"titleId\"\n cuiLabel\n [isRequired]=\"true\"\n (click)=\"onTitleLabelClick(titleElement)\"\n >\n {{ t('TITLE') }}\n </label>\n <!-- TODO: если найдется варик сделать через форму -->\n <div\n class=\"title\"\n [class.title_invalid]=\"isTitleInvalid()\"\n >\n <div\n #titleElement\n class=\"title__text\"\n contenteditable\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\n (paste)=\"onTitlePaste($event)\"\n (keyup)=\"onTitleChange($event)\"\n [innerHTML]=\"startTitle\"\n ></div>\n <button\n type=\"button\"\n class=\"title__clear\"\n (click)=\"onClearTitle(titleElement)\"\n >\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"title__icon\"\n />\n </button>\n </div>\n\n <cui-hint\n *ngIf=\"isTitleInvalid()\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"isTitleEmpty()\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: TITLE_MAX_LENGTH }) }}\n </ng-container>\n </cui-hint>\n </cui-form-field>\n <cui-form-field>\n <label\n [for]=\"dataId\"\n cuiLabel\n [isRequired]=\"true\"\n >\n {{ isTool ? t('TOOL') : t('URL') }}\n </label>\n <ng-container *ngIf=\"dynamicDataControl\">\n <ng-container *ngIf=\"isTool; else input\">\n <div>\n <button\n #target=\"elementRef\"\n class=\"button tool-button\"\n cuiButton\n type=\"button\"\n cuiElement\n appearance=\"outlined-gray\"\n size=\"sm\"\n >\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\n </button>\n </div>\n <cc-marker-select\n [formControl]=\"dynamicDataControl\"\n [target]=\"target.nativeElement\"\n />\n </ng-container>\n <ng-template #input>\n <cui-input-text\n [cuiTextFieldId]=\"dataId\"\n [formControl]=\"dynamicDataControl\"\n autocomplete=\"off\"\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\n />\n <cui-hint\n *ngIf=\"isDynamicDataErrorShown\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\n {{ t('INVALID_URL') }}\n </ng-container>\n </cui-hint>\n </ng-template>\n </ng-container>\n </cui-form-field>\n <div class=\"buttons\">\n <button\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n size=\"sm\"\n (click)=\"onCancel()\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n cuiButton\n type=\"submit\"\n appearance=\"action\"\n size=\"sm\"\n [disabled]=\"isFormInvalid\"\n (click)=\"onSave()\"\n >\n {{ t('SAVE') }}\n </button>\n </div>\n </form>\n </ng-container>\n</ng-container>\n","export const MARKER_MODAL_SELECTOR = 'cc-marker-modal';\r\n","import { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, MarkerModalComponent } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal';\r\n\r\nexport function createLinkModal(tooltip: HTMLElement, link: HTMLLinkElement): CuiAngularElement<MarkerModalComponent> {\r\n const linkModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n linkModal.url = link.href;\r\n linkModal.title = link.innerText;\r\n linkModal.target = button;\r\n linkModal.space = 15;\r\n\r\n linkModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n\r\n if (typeof customEvent.detail.data === 'string') {\r\n link.setAttribute('href', customEvent.detail.data);\r\n }\r\n\r\n link.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n linkModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return linkModal;\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CUI_WINDOW, CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { skip } from 'rxjs';\n\nimport { CuiButtonModule } from '../../../components';\nimport type { Tool } from './editor-tool-modal.options';\n\n@Component({\n standalone: true,\n imports: [CuiButtonModule],\n templateUrl: './editor-tool-modal.component.html',\n styleUrls: ['./editor-tool-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiClickOutsideDirective]\n})\nexport class EditorToolModalComponent {\n private readonly element = inject(ElementRef).nativeElement;\n private readonly window = inject(CUI_WINDOW);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 10;\n\n public isFullscreen = signal(false);\n public isHidden = signal(true);\n\n @Input({ required: true })\n public tool!: Tool;\n\n @Input()\n public set marker(value: HTMLElement) {\n this.calculateModalPosition(value);\n }\n\n @Output()\n public closed = new EventEmitter<void>();\n\n @HostBinding('class._hidden')\n protected get _isHidden(): boolean {\n return this.isHidden();\n }\n\n @HostBinding('class._fullscreen')\n protected get _isFullscreen(): boolean {\n return this.isFullscreen();\n }\n\n constructor() {\n this.initClickOutsideSubscription();\n }\n\n protected onCloseModal(): void {\n this.closed.emit();\n }\n\n protected onMaximizeModal(): void {\n this.isFullscreen.update((prev) => !prev);\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe(() => this.onCloseModal());\n }\n\n private calculateModalPosition(marker: HTMLElement): void {\n const { bottom, left } = marker.getBoundingClientRect();\n\n setTimeout(() => {\n const modalWidth = this.element.offsetWidth;\n\n this.element.style.top = bottom + this.window.scrollY + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n this.element.style.left = left + this.window.scrollX + marker.offsetWidth / 2 - modalWidth / 2 + 'px';\n\n this.isHidden.set(false);\n });\n }\n}\n","<div class=\"triangle\"></div>\n<div class=\"wrapper\">\n <header class=\"header\">\n <h3 class=\"title\">{{ tool.title }}</h3>\n <div class=\"header__buttons\">\n <!-- TODO: replace icon with 'maximize' -->\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconArrowSortSm\"\n (click)=\"onMaximizeModal()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconX\"\n (click)=\"onCloseModal()\"\n ></button>\n </div>\n </header>\n <div class=\"content\">\n <div class=\"info\">\n <!-- TODO: будет картинка-->\n <p class=\"info__item\">\n <span class=\"info__field\">Тип:</span>\n <span class=\"info__title\">{{ tool.title }}</span>\n </p>\n <p class=\"info__item\">\n <span class=\"info__field\">Страна производитель:</span>\n <span class=\"info__title\">{{ tool.title }}</span>\n </p>\n </div>\n </div>\n</div>\n","import type { MarkerType } from '../../services/markers-service.options';\n\nexport interface Tool {\n id: string;\n image?: string;\n title?: string;\n type?: MarkerType;\n}\n\nexport const EDITOR_TOOL_MODAL_SELECTOR = 'cc-editor-tool-modal';\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgFor } from '@angular/common';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { EditorTooltipButton, EditorTooltipOption, EditorTooltipOptions } from './editor-tooltip.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule, NgFor],\r\n templateUrl: './editor-tooltip.component.html',\r\n styleUrls: ['./editor-tooltip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorTooltipComponent {\r\n // TODO: Удалить класс\r\n protected readonly BUTTONS_OPTIONS = new Map<EditorTooltipOption, EditorTooltipButton>([\r\n ['copy', { icon: 'cuiIconCopy', handler: (event): void => this.copyClicked.emit(event) }],\r\n ['edit', { icon: 'cuiIconEdit', handler: (event): void => this.editClicked.emit(event), class: 'edit' }],\r\n ['delete', { icon: 'cuiIconTrash', handler: (event): void => this.deleteClicked.emit(event) }]\r\n ]);\r\n\r\n protected _options: EditorTooltipOptions = ['edit', 'delete'];\r\n protected buttons = this.getButtonsFromOptions(this._options);\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n @Input()\r\n public set options(value: EditorTooltipOptions) {\r\n this._options = value;\r\n this.buttons = this.getButtonsFromOptions(value);\r\n }\r\n\r\n @Output()\r\n public readonly copyClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly editClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly deleteClicked = new EventEmitter<MouseEvent>();\r\n\r\n private getButtonsFromOptions(options: EditorTooltipOptions): EditorTooltipButton[] {\r\n return options.map((option) => this.BUTTONS_OPTIONS.get(option)!);\r\n }\r\n}\r\n","<h3 class=\"title\">{{ title }}</h3>\r\n<div class=\"buttons-container\">\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <div class=\"divider\"></div>\r\n <!-- TODO: class должен быть удалён в будущем-->\r\n <button\r\n class=\"button\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"button.icon\"\r\n [class]=\"button.class\"\r\n (click)=\"button.handler($event)\"\r\n ></button>\r\n </ng-container>\r\n</div>\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type EditorTooltipOption = 'copy' | 'edit' | 'delete';\r\n\r\nexport type EditorTooltipOptions = EditorTooltipOption[];\r\n\r\n// TODO: class должен быть удалён в будущем\r\nexport interface EditorTooltipButton {\r\n readonly icon: CuiIcon;\r\n readonly handler: (event: MouseEvent) => void;\r\n readonly class?: string;\r\n}\r\n\r\nexport const EDITOR_TOOLTIP_SELECTOR = 'cc-editor-tooltip';\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n standalone: true\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\r\n private readonly BYTES_IN_KILOBYTE = 1024;\r\n\r\n public transform(bytes: number): string {\r\n if (isNaN(bytes) || bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n\r\n const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\r\n\r\n return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport type { API } from '@editorjs/editorjs';\r\n\r\n@Component({\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorToolComponent {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly document = inject(DOCUMENT);\r\n\r\n @Input({ required: true })\r\n public api!: API;\r\n\r\n @Input({ required: true })\r\n public preview!: string;\r\n\r\n @Input({ required: true })\r\n public caption!: string;\r\n\r\n @Input({ required: true })\r\n public buttonContent!: string;\r\n\r\n @Input()\r\n public readOnly = false;\r\n\r\n @Input()\r\n public isLoading = false;\r\n\r\n @Output()\r\n public fileSelected = new EventEmitter<void>();\r\n\r\n @Output()\r\n public captionChanged = new EventEmitter<string>();\r\n\r\n private previousValue = this.caption;\r\n\r\n protected get isCaptionShown(): boolean {\r\n return !this.readOnly || !!this.caption;\r\n }\r\n\r\n protected onSelectFile(): void {\r\n this.fileSelected.emit();\r\n }\r\n\r\n protected onTitleChange(event: KeyboardEvent): void {\r\n const target = event.currentTarget as HTMLElement;\r\n\r\n if (target.innerHTML === '<br>') {\r\n target.innerHTML = '';\r\n }\r\n\r\n const value = target.innerHTML!;\r\n\r\n if (this.previousValue === value) {\r\n return;\r\n }\r\n\r\n this.previousValue = value;\r\n this.captionChanged.emit(value);\r\n }\r\n\r\n protected onTitlePaste(event: ClipboardEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n if (!this.document) {\r\n return;\r\n }\r\n\r\n const value = event.clipboardData?.getData('text/plain');\r\n const target = event.target as HTMLElement;\r\n\r\n this.document.execCommand('insertText', false, value);\r\n setTimeout(() => this.captionChanged.emit(target.textContent!));\r\n }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiFileIconComponent, CuiSvgModule } from '../../../components';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FileSizePipe, FormsModule, NgIf, TranslocoDirective, CuiFileIconComponent, CuiSvgModule],\r\n templateUrl: './editor-attaches-tool.component.html',\r\n styleUrls: ['./editor-attaches-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorAttachesToolComponent extends EditorToolComponent {\r\n private _file!: CuiFileData;\r\n private _title!: string;\r\n\r\n @Input({ required: true })\r\n public get file(): CuiFileData | undefined {\r\n return this._file;\r\n }\r\n\r\n public set file(value: CuiFileData) {\r\n this._file = value;\r\n }\r\n\r\n @Input({ required: true })\r\n public get title(): string {\r\n return this._title;\r\n }\r\n\r\n public set title(value: string) {\r\n this._title = value;\r\n }\r\n\r\n @Output()\r\n public readonly fileClicked = new EventEmitter<CuiFileData>();\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.file && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onFileClick(): void {\r\n this.fileClicked.emit(this.file);\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return event.key !== 'Enter';\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div\r\n *ngIf=\"file; else buttonTemplate\"\r\n class=\"file\"\r\n >\r\n <cui-file-icon\r\n *ngIf=\"file.extension\"\r\n [extension]=\"file.extension\"\r\n ></cui-file-icon>\r\n\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div\r\n *ngIf=\"file.size; let size\"\r\n class=\"size\"\r\n >\r\n {{ size | fileSize }}\r\n </div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n (click)=\"onFileClick()\"\r\n >\r\n <cui-svg\r\n icon=\"cuiIconChevronRightSm\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_ATTACHES_TOOL_SELECTOR = 'cc-editor-attaches-tool';\r\n\r\nexport interface CuiAttachesToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n readonly fileClicked: (file: CuiFileData) => void;\r\n}\r\n\r\nexport interface CuiAttachesToolOptions {\r\n readonly api: API;\r\n readonly config: CuiAttachesToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiAttachesToolData {\r\n title: string;\r\n file: CuiFileData;\r\n}\r\n","import { NgClass, NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\nimport type { CuiImageTunes } from './editor-image-tool.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgClass, NgIf, TranslocoDirective],\r\n templateUrl: './editor-image-tool.component.html',\r\n styleUrls: ['./editor-image-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorImageToolComponent extends EditorToolComponent {\r\n protected readonly isLoaded = signal(false);\r\n protected readonly tunesSignal = signal<CuiImageTunes>({});\r\n\r\n @Input({ required: true })\r\n public image!: string;\r\n\r\n @Input()\r\n public set tunes(tunes: CuiImageTunes) {\r\n this.tunesSignal.set(tunes);\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.image && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"image; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [ngClass]=\"tunesSignal()\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <img\r\n class=\"image\"\r\n [src]=\"image\"\r\n alt=\"Image\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #buttonTemplate>\r\n <button\r\n #button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n />\r\n <path\r\n d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11.4805 7.77783H11.4879\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_IMAGE_TOOL_SELECTOR = 'cc-editor-image-tool';\r\n\r\nexport type CuiImageKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiImageToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiImageToolOptions {\r\n readonly api: API;\r\n readonly config: CuiImageToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiImageToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n tunes: CuiImageTunes;\r\n}\r\n\r\nexport interface CuiImageTunes {\r\n stretched?: boolean;\r\n left?: boolean;\r\n right?: boolean;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgIf } from '@angular/common';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgIf, TranslocoDirective],\r\n templateUrl: './editor-video-tool.component.html',\r\n styleUrls: ['./editor-video-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorVideoToolComponent extends EditorToolComponent {\r\n protected isLoaded = signal(false);\r\n\r\n @Input({ required: true })\r\n public video!: string;\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.video && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPlay(): void {\r\n this.isLoaded.set(true);\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *ngIf=\"video; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <video\r\n *ngIf=\"isLoaded(); else playButtonTemplate\"\r\n class=\"video\"\r\n [src]=\"video\"\r\n controls\r\n autoplay\r\n muted\r\n playsinline\r\n ></video>\r\n\r\n <ng-template #playButtonTemplate>\r\n <button\r\n type=\"button\"\r\n class=\"play\"\r\n (click)=\"onPlay()\"\r\n >\r\n <cui-svg\r\n class=\"play\"\r\n icon=\"cuiIconPlayCircleSm\"\r\n [height]=\"72\"\r\n [width]=\"72\"\r\n [strokeWidth]=\"0.5\"\r\n />\r\n </button>\r\n </ng-template>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n\r\n <ng-template #buttonTemplate>\r\n <button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <cui-svg icon=\"cuiIconPlayCircle\" />\r\n {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_VIDEO_TOOL_SELECTOR = 'cc-editor-video-tool';\r\n\r\nexport type VideoKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiVideoToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiVideoToolPlayer {\r\n readonly pip: boolean;\r\n readonly controls: boolean;\r\n readonly light: boolean;\r\n readonly playing: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolOptions {\r\n readonly api: API;\r\n readonly config: CuiVideoToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n}\r\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, Tool, MarkerSelectComponent, MarkerModalComponent } from '../components';\r\nimport { MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function createSelect(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerSelectComponent> {\r\n const select = document.createElement(MARKER_SELECT_SELECTOR) as CuiAngularElement<MarkerSelectComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n select.space = 8;\r\n select.target = button;\r\n select.addEventListener('toolClick', (event) => onToolClick(marker, tooltip, event));\r\n\r\n return select;\r\n}\r\n\r\nexport function createToolModal(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerModalComponent> {\r\n const toolModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n const toolId = marker.dataset['id']!;\r\n const toolType = marker.dataset['type'] as MarkerType;\r\n\r\n toolModal.title = marker.innerText;\r\n toolModal.target = button;\r\n toolModal.isTool = true;\r\n toolModal.tool = {\r\n id: toolId,\r\n type: toolType\r\n };\r\n toolModal.space = 8;\r\n\r\n toolModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail.data;\r\n\r\n if (data && typeof data !== 'string') {\r\n marker.setAttribute('data-id', data.id);\r\n marker.setAttribute('data-type', data.type!);\r\n }\r\n\r\n marker.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n toolModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return toolModal;\r\n}\r\n\r\nfunction onToolClick(marker: HTMLElement, tooltip: HTMLElement, event: Event): void {\r\n event.stopPropagation();\r\n\r\n const customEvent = event as CustomEvent<Tool>;\r\n const tool = customEvent.detail;\r\n\r\n marker.dataset['id'] = tool.id;\r\n\r\n tooltip.remove();\r\n}\r\n","import { CuiFileData } from \"../interfaces\";\n\nexport async function openFileInBrowser(file: CuiFileData): Promise<void> {\n if (!file?.url) {\n return;\n }\n\n const encodedUrl = encodeURIComponent(file.url);\n const googleViewerUrl = `https://docs.google.com/viewer?url=${encodedUrl}&embedded=true`;\n\n window.open(googleViewerUrl, '_blank');\n}\n","import type { CuiFileResponseData } 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 { AngularOutsideLoaderService } from \"../../services\";\nimport { CuiFileUploaderStatus } from \"./file-uploader\";\n\nexport function setLoading(status: CuiFileUploaderStatus): void {\n const service = AngularOutsideLoaderService.getInstance();\n const loadingActions: Record<CuiFileUploaderStatus, () => void> = {\n [CuiFileUploaderStatus.Loading]: () => service.setLoading(),\n [CuiFileUploaderStatus.Completed]: () => {\n service.setCompleted();\n service.handleCompletedRequest();\n }\n };\n\n return loadingActions[status]();\n}\n","import type { CuiTools } from '../interfaces';\nimport { CuiAttachesTool, CuiHeaderTool, CuiImageTool, CuiListTool, CuiVideoTool } from '../tools';\nimport { openFileInBrowser } from './open-file-in-browser';\nimport { setLoading } from './set-loading';\n\nexport function createEditorTools(resourceUrl: string): CuiTools;\nexport function createEditorTools(config: Partial<CuiTools>, resourceUrl?: string): CuiTools;\nexport function createEditorTools(config: Partial<CuiTools> | string, resourceUrl?: string): CuiTools {\n const endpoint = typeof config === 'string' ? config : resourceUrl;\n const tools = typeof config !== 'string' ? config : {};\n\n return {\n header: {\n class: CuiHeaderTool,\n config: {\n levels: [2, 3, 4],\n defaultLevel: 2\n },\n ...(tools?.['header'] ?? {})\n },\n list: {\n class: CuiListTool,\n inlineToolbar: true,\n config: {\n defaultStyle: 'unordered'\n },\n ...(tools?.['list'] ?? {})\n },\n attaches: {\n class: CuiAttachesTool,\n config: {\n endpoint,\n field: 'resource',\n types: '.pdf,.doc,.docx',\n load: setLoading,\n fileClicked: openFileInBrowser\n },\n ...(tools?.['attaches'] ?? {})\n },\n video: {\n class: CuiVideoTool,\n config: {\n endpoint,\n field: 'resource',\n load: setLoading\n },\n ...(tools?.['video'] ?? {})\n },\n image: {\n class: CuiImageTool,\n config: {\n endpoint,\n field: 'resource',\n load: setLoading\n },\n ...(tools?.['image'] ?? {})\n },\n ...(tools ?? {})\n };\n}\n","export function removeElementTagWrapper(element: HTMLElement): void {\r\n const parent = element.parentElement;\r\n const innerElementNodes = element.childNodes;\r\n\r\n let node: Node;\r\n\r\n while (innerElementNodes.length) {\r\n node = innerElementNodes.item(0);\r\n\r\n parent?.insertBefore(node, element);\r\n }\r\n\r\n element.remove();\r\n}\r\n","export function copyTextToClipboard(text: string): void {\n if (window?.navigator.clipboard && window.isSecureContext) {\n window.navigator.clipboard.writeText(text);\n }\n\n copyTextToClipboardFallback(text);\n}\n\n// TODO: Remove when switch to https\nfunction copyTextToClipboardFallback(text: string): void {\n const textarea = document.createElement('textarea');\n\n textarea.value = text;\n document.body.appendChild(textarea);\n textarea.focus({ preventScroll: true });\n textarea.select();\n\n document.execCommand('copy');\n document.body.removeChild(textarea);\n}\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { EditorTooltipComponent, EditorTooltipOptions } from '../components';\r\nimport { EDITOR_TOOLTIP_SELECTOR } from '../components';\r\n\r\nimport { createLinkModal } from './create-link-modal';\r\nimport { createToolModal } from './create-tool-modal';\r\nimport { removeElementTagWrapper } from './remove-element-tag-wrapper';\r\nimport { copyTextToClipboard } from './copy-text-to-clipboard';\r\nexport const tooltipMap = {\r\n MARK: createMarkerTooltip,\r\n A: createLinkTooltip\r\n};\r\n\r\nexport function createMarkerTooltip(marker: HTMLElement): HTMLElement {\r\n const tooltip = createTooltip(marker, marker.innerText);\r\n\r\n setTimeout(() => {\r\n const select = createToolModal(marker, tooltip);\r\n\r\n tooltip.append(select);\r\n });\r\n\r\n return tooltip;\r\n}\r\n\r\nexport function createLinkTooltip(link: HTMLElement): HTMLElement {\r\n const linkElement = link as HTMLLinkElement;\r\n const options: EditorTooltipOptions = ['copy', 'edit', 'delete'];\r\n const linkUrl = linkElement.href;\r\n const tooltip = createTooltip(linkElement, linkUrl, options);\r\n\r\n tooltip.addEventListener('copyClicked', () => copyTextToClipboard(linkUrl));\r\n\r\n setTimeout(() => {\r\n const linkModal = createLinkModal(tooltip, linkElement);\r\n\r\n tooltip.append(linkModal);\r\n });\r\n\r\n return tooltip;\r\n}\r\n\r\nexport function createTooltip(element: HTMLElement, title: string, options?: EditorTooltipOptions): HTMLElement {\r\n const tooltip = document.createElement(EDITOR_TOOLTIP_SELECTOR) as CuiAngularElement<EditorTooltipComponent>;\r\n\r\n tooltip.title = title;\r\n\r\n if (options) {\r\n tooltip.options = options;\r\n }\r\n\r\n tooltip.addEventListener('deleteClicked', (event: Event) => {\r\n event.stopPropagation();\r\n\r\n removeElementTagWrapper(element);\r\n\r\n tooltip.remove();\r\n });\r\n\r\n return tooltip;\r\n}\r\n","import 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<\r\n CuiImageToolData,\r\n Partial<CuiImageToolConfig>\r\n >;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => {}),\r\n field: config?.field ?? 'image',\r\n types: config?.types ?? 'image/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select an Image'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders || {}\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n this.data.tunes = this.data.tunes || {};\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.imageTool.preview = url;\r\n this.imageTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n const actions = {\r\n tag: this.pasteByTag.bind(this),\r\n file: this.pasteByFile.bind(this)\r\n };\r\n const key = event.type as keyof typeof actions;\r\n\r\n this.imageTool.isLoading = true;\r\n actions[key](event);\r\n }\r\n\r\n private pasteByFile(event: CustomEvent): void {\r\n const file = event.detail.file;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n private pasteByTag(event: CustomEvent): void {\r\n const file = event.detail.data.src;\r\n\r\n this.selectedFile = file;\r\n this.uploader.uploadByUrl(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.imageTool = document.createElement(\r\n EDITOR_IMAGE_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorImageToolComponent>;\r\n\r\n this.imageTool.api = this.api;\r\n this.imageTool.image = this.data.file?.url || '';\r\n this.imageTool.caption = this.data.caption || '';\r\n this.imageTool.tunes = this.data.tunes;\r\n this.imageTool.readOnly = this.readOnly;\r\n this.imageTool.buttonContent = this.config.buttonContent;\r\n\r\n this.imageTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.imageTool;\r\n }\r\n\r\n public renderSettings(): TunesMenuConfig {\r\n return this.Tunes.map((tune) => ({\r\n icon: tune.icon,\r\n label: this.api.i18n.t(tune.title),\r\n name: tune.name,\r\n toggle: tune.toggle,\r\n isActive: this.data.tunes[tune.name as keyof CuiImageTunes],\r\n onActivate: (): void => this.tuneToggled(tune.name as keyof CuiImageTunes)\r\n }));\r\n }\r\n\r\n public save(): CuiImageToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.imageTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set image(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.imageTool.image = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: 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<\r\n CuiVideoToolData,\r\n CuiVideoToolConfig\r\n >;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => {}),\r\n field: config?.field ?? 'video',\r\n types: config?.types ?? 'video/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a Video'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {}\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.getCaptureFromVideo(url);\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n if (event.type !== 'file') {\r\n return;\r\n }\r\n\r\n const file = event.detail.file;\r\n\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.videoTool = document.createElement(\r\n EDITOR_VIDEO_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorVideoToolComponent>;\r\n\r\n this.videoTool.api = this.api;\r\n this.videoTool.video = this.data.file?.url || '';\r\n this.videoTool.caption = this.data.caption || '';\r\n this.videoTool.readOnly = this.readOnly;\r\n this.videoTool.buttonContent = this.config.buttonContent;\r\n\r\n this.videoTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.videoTool;\r\n }\r\n\r\n public save(): CuiVideoToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.videoTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set video(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.videoTool.video = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: 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 private readonly abortController = new AbortController();\r\n private readonly abortSignal = this.abortController.signal;\r\n\r\n private attachesTool!: CuiAngularElement<EditorAttachesToolComponent>;\r\n private selectedFile: CuiNullable<File> = null;\r\n\r\n public api: API;\r\n public config: CuiAttachesToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public data: CuiAttachesToolData;\r\n public uploader: CuiFileUploader;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n icon: CUI_ICONS.cuiIconPaperclipSm,\r\n title: 'File'\r\n };\r\n }\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<\r\n CuiAttachesToolData,\r\n CuiAttachesToolConfig\r\n >;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n field: config?.field ?? 'file',\r\n types: config?.types ?? '*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a File'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {},\r\n load: config?.load ?? (() => {}),\r\n fileClicked: config?.fileClicked ?? (() => {})\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public appendCallback(): void {\r\n this.selectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.attachesTool = document.createElement(\r\n EDITOR_ATTACHES_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorAttachesToolComponent>;\r\n\r\n this.attachesTool.api = this.api;\r\n this.attachesTool.file = this.data.file ?? '';\r\n this.attachesTool.title = this.data.title ?? '';\r\n this.attachesTool.readOnly = this.readOnly;\r\n this.attachesTool.buttonContent = this.config.buttonContent;\r\n\r\n this.attachesTool.addEventListener('fileSelected', this.selectFile, { signal: this.abortSignal });\r\n this.attachesTool.addEventListener('fileClicked', this.clickFile, { signal: this.abortSignal });\r\n this.attachesTool.addEventListener('captionChanged', this.changeCaption, { signal: this.abortSignal });\r\n\r\n return this.attachesTool;\r\n }\r\n\r\n public save(): CuiAttachesToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.abortController.abort();\r\n }\r\n\r\n public changeCaption = (event: Event): void => {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.title = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n };\r\n\r\n public selectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n this.attachesTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public clickFile = (): void => {\r\n this.config.fileClicked(this.data.file);\r\n };\r\n\r\n public set file(file: CuiFileData) {\r\n this.data.title = file.name!;\r\n this.data.file = {\r\n name: file.name,\r\n extension: file.name?.split('.').pop(),\r\n size: file.size,\r\n url: file.url\r\n };\r\n this.attachesTool.file = { ...this.data.file };\r\n this.attachesTool.title = file.name!;\r\n }\r\n\r\n private onUpload(response: 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 { MarkerData } from '../components/marker-modal/marker-modal.interfaces';\r\nimport type { MarkerModalComponent } from '../components/marker-modal/marker-modal.component';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\nimport { removeElementTagWrapper } from '../utils';\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiLinkMarker extends CuiMarkerTool {\r\n protected override readonly TAG = 'A';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n a: {\r\n href: true,\r\n class: true,\r\n target: true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg width=\"20\" height=\"15\" viewBox=\"-3 -3 24 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M18.2813 1.22405C17.9329 0.874451 17.5189 0.597062 17.0631 0.407792C16.6073 0.218522 16.1186 0.121094 15.625 0.121094C15.1315 0.121094 14.6428 0.218522 14.187 0.407792C13.7312 0.597062 13.3172 0.874451 12.9688 1.22405L13.8563 2.11155C14.089 1.87886 14.3652 1.69429 14.6692 1.56836C14.9733 1.44243 15.2991 1.37762 15.6282 1.37762C15.9572 1.37762 16.2831 1.44243 16.5871 1.56836C16.8911 1.69429 17.1674 1.87886 17.4 2.11155C17.6327 2.34424 17.8173 2.62047 17.9432 2.92449C18.0692 3.22851 18.134 3.55436 18.134 3.88343C18.134 4.21249 18.0692 4.53834 17.9432 4.84236C17.8173 5.14638 17.6327 5.42261 17.4 5.6553L12.4 10.6553C11.9309 11.1252 11.2944 11.3896 10.6304 11.3901C9.96638 11.3907 9.32935 11.1275 8.85942 10.6584C8.38949 10.1893 8.12515 9.55275 8.12457 8.88876C8.12398 8.22476 8.38719 7.58773 8.85629 7.1178L9.73754 6.2303L8.85629 5.3428L7.96879 6.2303C7.61919 6.57869 7.3418 6.99266 7.15253 7.44848C6.96326 7.9043 6.86583 8.393 6.86583 8.88655C6.86583 9.3801 6.96326 9.8688 7.15253 10.3246C7.3418 10.7804 7.61919 11.1944 7.96879 11.5428C8.67597 12.2409 9.63134 12.6298 10.625 12.624C11.1205 12.6261 11.6114 12.5299 12.0695 12.3411C12.5276 12.1523 12.9437 11.8746 13.2938 11.524L18.2938 6.52405C18.9944 5.81927 19.3866 4.86522 19.3842 3.87146C19.3819 2.87771 18.9852 1.92552 18.2813 1.22405Z\" fill=\"#595E6A\"/>\r\n <path d=\"M2.61879 12.5115C2.38541 12.2793 2.20022 12.0031 2.07386 11.6991C1.94749 11.395 1.88244 11.069 1.88244 10.7397C1.88244 10.4104 1.94749 10.0844 2.07386 9.78028C2.20022 9.47621 2.38541 9.2001 2.61879 8.9678L7.61879 3.9678C7.85109 3.73442 8.1272 3.54923 8.43127 3.42287C8.73534 3.2965 9.06138 3.23145 9.39067 3.23145C9.71995 3.23145 10.046 3.2965 10.3501 3.42287C10.6541 3.54923 10.9302 3.73442 11.1625 3.9678C11.3944 4.20193 11.577 4.48022 11.6994 4.78619C11.8218 5.09215 11.8815 5.41958 11.875 5.74905C11.8769 6.07955 11.8133 6.40715 11.6878 6.7129C11.5623 7.01865 11.3774 7.29647 11.1438 7.5303L9.81879 8.87405L10.7063 9.76155L12.0313 8.43655C12.7366 7.73124 13.1328 6.77463 13.1328 5.77718C13.1328 4.77972 12.7366 3.82311 12.0313 3.1178C11.326 2.41249 10.3694 2.01625 9.37192 2.01625C8.37446 2.01625 7.41785 2.41249 6.71254 3.1178L1.71254 8.1178C1.362 8.4663 1.08382 8.88066 0.893994 9.33706C0.704168 9.79346 0.606445 10.2829 0.606445 10.7772C0.606445 11.2715 0.704168 11.7609 0.893994 12.2173C1.08382 12.6737 1.362 13.088 1.71254 13.4365C2.42431 14.1293 3.38185 14.5115 4.37504 14.499C5.37698 14.5 6.33862 14.1046 7.05004 13.399L6.16254 12.5115C5.93025 12.7449 5.65413 12.9301 5.35006 13.0565C5.04599 13.1829 4.71995 13.2479 4.39067 13.2479C4.06138 13.2479 3.73534 13.1829 3.43127 13.0565C3.1272 12.9301 2.85109 12.7449 2.61879 12.5115Z\" fill=\"#595E6A\"/>\r\n </svg>\r\n `;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const linkModal = this.createLinkModal();\r\n\r\n this.dropdown.append(linkModal);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public wrapLink(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n const url = markerData.data?.toString();\r\n const link = this.createElement(url, markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.addMarkerToDOM(range, link, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(link);\r\n }\r\n\r\n public override unwrap(): void {\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n\r\n if (!mark) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(mark);\r\n }\r\n\r\n public override createElement(url = '', text = ''): HTMLLinkElement {\r\n const link = super.createElement(text) as HTMLLinkElement;\r\n\r\n link.href = url;\r\n link.contentEditable = 'false';\r\n link.target = '_blank';\r\n\r\n return link;\r\n }\r\n\r\n public checkState(): void {\r\n const link = this.api.selection.findParentTag(this.TAG);\r\n\r\n this.state = !!link;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.url = '';\r\n this.markerModal.target = this.button;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapLink(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent, MarkerData } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiCustomMarkerTool extends CuiMarkerTool {\r\n protected id!: string;\r\n protected type!: string;\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n mark: {\r\n class: true,\r\n 'data-id': true,\r\n 'data-type': true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public wrapTool(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n if (markerData.data && typeof markerData.data !== 'string') {\r\n this.id = markerData.data.id!;\r\n this.type = markerData.data.type!;\r\n }\r\n\r\n const mark = this.createElement(markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(mark);\r\n }\r\n\r\n private onToolButtonClick(event: MouseEvent): void {\r\n const range = window.getSelection()?.getRangeAt(0);\r\n\r\n if (range) {\r\n return;\r\n }\r\n\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.onclick = this.onToolButtonClick.bind(this);\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const markerSelect = this.createLinkModal();\r\n\r\n this.dropdown.append(markerSelect);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public override createElement(text = ''): HTMLElement {\r\n const element = super.createElement(text);\r\n\r\n element.contentEditable = 'false';\r\n element.classList.add(this.CLASS);\r\n element.setAttribute('data-id', this.id);\r\n element.setAttribute('data-type', this.type);\r\n\r\n return element;\r\n }\r\n\r\n public checkState(select: Selection): void {\r\n const range = select.getRangeAt(0);\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n const isCorrectTool = mark?.classList.contains(this.CLASS);\r\n\r\n if (!mark || !isCorrectTool) {\r\n this.state = false;\r\n\r\n return;\r\n }\r\n\r\n const startContainer = range.startContainer;\r\n const endContainer = range.endContainer;\r\n\r\n const isStartMarker = mark.contains(startContainer);\r\n const isEndMarker = mark.contains(endContainer);\r\n\r\n this.state = isStartMarker && isEndMarker && isStartMarker === isEndMarker;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.tool = { id: '', title: '', type: undefined };\r\n this.markerModal.target = this.button;\r\n this.markerModal.isTool = true;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapTool(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\n\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\n\nexport class CuiRoleMarker extends CuiCustomMarkerTool {\n protected override readonly CLASS = 'role-marker';\n\n constructor(data: InlineToolConstructorOptions) {\n super(data);\n }\n\n public override render(): HTMLButtonElement {\n super.render();\n\n /* eslint-disable */\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"-3 -3 24 24\" fill=\"none\">\n <path d=\"M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n /* eslint-enable */\n\n return this.button;\n }\n}\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\n\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\n\nexport class CuiToolMarker extends CuiCustomMarkerTool {\n protected override readonly CLASS = 'tool-marker';\n\n constructor(data: InlineToolConstructorOptions) {\n super(data);\n }\n\n public override render(): HTMLButtonElement {\n super.render();\n\n this.button.innerHTML =\n '<svg width=\"20\" height=\"20\" viewBox=\"-2 -3 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"technologies-tools\"><path id=\"Vector\" d=\"M16.3581 15.3966L16.3581 11.4729C16.3581 11.4158 16.3469 11.3592 16.325 11.3064C16.3031 11.2536 16.2711 11.2056 16.2307 11.1652C16.1903 11.1248 16.1423 11.0928 16.0895 11.0709C16.0368 11.0491 15.9802 11.0378 15.923 11.0378H13.2574L13.2593 11.0372C13.2007 11.0348 13.1422 11.0443 13.0874 11.0651C13.0326 11.0859 12.9825 11.1176 12.9402 11.1582C12.898 11.1989 12.8643 11.2476 12.8414 11.3016C12.8184 11.3556 12.8066 11.4136 12.8067 11.4723L12.8067 15.3972M14.584 11.0334V5.8334M16.3582 15.1022L16.3582 17.0647C16.3583 17.1234 16.3465 17.1814 16.3235 17.2354C16.3006 17.2893 16.2669 17.3381 16.2247 17.3787C16.1824 17.4194 16.1323 17.4511 16.0775 17.4719C16.0227 17.4927 15.9642 17.5022 15.9056 17.4998L15.9075 17.4992H13.2419C13.1847 17.4992 13.1282 17.4879 13.0754 17.466C13.0226 17.4442 12.9746 17.4121 12.9342 17.3717C12.8938 17.3313 12.8618 17.2834 12.8399 17.2306C12.818 17.1778 12.8068 17.1212 12.8068 17.0641L12.8068 15.1022M5.59636 9.88719L5.59636 15.9284C5.59627 16.0872 5.62748 16.2445 5.68821 16.3912C5.74895 16.5379 5.838 16.6713 5.9503 16.7836C6.06259 16.8959 6.19591 16.9849 6.34265 17.0456C6.48938 17.1064 6.64665 17.1376 6.80545 17.1375C7.12589 17.1375 7.43318 17.0101 7.65976 16.7836C7.88634 16.557 8.01365 16.2497 8.0137 15.9293L8.01284 9.88719C9.29329 9.32793 10.4298 8.05047 10.4298 6.56367C10.4302 5.07729 9.22194 3.54264 8.01284 3.241L8.01327 5.83907L6.8046 7.2887L5.59636 5.83864L5.59636 3.241C4.38769 3.54306 3.17902 5.07729 3.17902 6.5641C3.17944 8.05048 4.31591 9.32793 5.59636 9.88719ZM14.9916 5.56545L14.1253 5.56545L13.2589 4.69909L13.6921 2.5332L15.4248 2.5332L15.858 4.69909L14.9916 5.56545Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>';\n\n return this.button;\n }\n}\n","import type { CuiNullable } from '@cuby-ui/cdk';\nimport type { API, BlockTool, BlockToolConstructorOptions, ToolConfig } from '@editorjs/editorjs';\n\nimport {\n COMBINED_TEXT_BLOCK,\n COMBINED_TEXT_BLOCK_ADDED,\n COMBINED_TEXT_BLOCK_NAME,\n COMBINED_TEXT_BLOCK_PART,\n COMBINED_TEXT_BLOCK_REMOVED,\n COMBINED_TEXT_BLOCK_UPDATED,\n DEFAULT_PLACEHOLDER,\n DEFAULT_READONLY_PLACEHOLDER,\n SPLIT_MAX_LENGTH\n} from '../constants';\nimport type {\n CuiCombinedBlockToolData,\n CuiCombinedPartBlock,\n CuiMutationActions,\n CuiMutationCallback\n} from '../interfaces';\nimport { recalculateIndexes, splitHTML, generateId } from '../utils';\n\nexport class CuiCombinedTextBlockTool implements BlockTool {\n private readonly TAG = 'span';\n private readonly DEBOUNCE_TIME = 350;\n private readonly MAX_CHILD_COUNT_FOR_EMPTY = 1;\n private readonly PLACEHOLDER_ATTRIBUTE_NAME = 'placeholderActive';\n\n private mutationConfig = {\n subtree: true,\n childList: true,\n characterData: true\n };\n private api: API;\n private data: CuiCombinedBlockToolData;\n private placeholder: string;\n private wrapper?: HTMLElement;\n private observer?: MutationObserver;\n private lastBlockElement?: HTMLElement;\n private readOnly?: boolean;\n private changes = new Map();\n\n constructor(options: unknown) {\n const body = options as BlockToolConstructorOptions;\n const data = body.data;\n\n this.readOnly = body.readOnly;\n this.placeholder = this.getPlaceholder(body.config);\n this.api = body.api;\n this.data = {\n id: data.id || generateId(),\n textBlocks: data.textBlocks || []\n };\n\n this.convertDefaultDataToCustom(data);\n }\n\n public static get isInline(): boolean {\n return false;\n }\n\n public static get isReadOnlySupported(): boolean {\n return true;\n }\n\n public static get enableLineBreaks(): boolean {\n return false;\n }\n\n public static get toolbox(): { icon: string; title: string } {\n return {\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\" d=\"M8 9V7.2C8 7.08954 8.08954 7 8.2 7L12 7M16 9V7.2C16 7.08954 15.9105 7 15.8 7L12 7M12 7L12 17M12 17H10M12 17H14\"></path></svg>',\n title: 'Text'\n };\n }\n\n public static get pasteConfig(): object {\n return {\n tags: ['P']\n };\n }\n\n public onPaste(event: CustomEvent): void {\n if (event.type !== 'tag') {\n return;\n }\n\n const text = event.detail.data.textContent;\n\n this.data.textBlocks.splice(this.data.textBlocks.length - 1, 1, this.getBlockPartObject(generateId(), text));\n this.update(this.data.textBlocks);\n }\n\n public render(): HTMLElement {\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add(COMBINED_TEXT_BLOCK);\n this.wrapper.dataset[this.PLACEHOLDER_ATTRIBUTE_NAME] = this.api.i18n.t(this.placeholder);\n\n if (!this.readOnly) {\n this.wrapper.contentEditable = 'true';\n }\n\n if (!this.data.textBlocks.length) {\n this.data.textBlocks.push(this.getBlockPartObject(generateId(), ''));\n }\n\n this.update(this.data.textBlocks);\n this.checkIsEditorEmpty();\n\n if (!this.readOnly) {\n const callback = this.getMutationCallback(this.DEBOUNCE_TIME);\n\n this.observer = new MutationObserver(this.onMutationEvent.bind(this, callback));\n this.observer.observe(this.wrapper, this.mutationConfig);\n }\n\n return this.wrapper;\n }\n\n public merge(blocksData: CuiCombinedPartBlock[]): void {\n if (!this.wrapper) {\n return;\n }\n\n let blocksTextContent = '';\n this.data.textBlocks = [];\n\n blocksData.forEach((block) => {\n blocksTextContent += block.data.text;\n });\n\n for (let i = 0; i < this.wrapper.childNodes.length; i++) {\n const node = this.wrapper.childNodes.item(i);\n\n if (!(node instanceof HTMLSpanElement)) {\n return;\n }\n\n i--;\n blocksTextContent = node.innerHTML + blocksTextContent;\n node.remove();\n }\n\n const parts = blocksTextContent.length < SPLIT_MAX_LENGTH ? [blocksTextContent] : splitHTML(blocksTextContent);\n\n parts.forEach((part: string) => {\n const blockObject = this.getBlockPartObject(generateId(), part);\n\n this.data.textBlocks.push(blockObject);\n });\n\n this.update(this.data.textBlocks);\n }\n\n public save(blockContent: HTMLElement): CuiCombinedPartBlock[] {\n const textBlocks: CuiCombinedPartBlock[] = [];\n\n blockContent.querySelectorAll(this.TAG).forEach((span: HTMLElement) => {\n textBlocks.push(this.getBlockPartObject(span.dataset['id']!, span.innerHTML));\n });\n\n return textBlocks;\n }\n\n public removed(): void {\n this.observer?.disconnect();\n\n const blockIds = new Set<string>();\n\n this.data.textBlocks.forEach((block: CuiCombinedPartBlock) => {\n blockIds.add(block.id || '');\n });\n\n this.removeBlocks(blockIds);\n }\n\n private onMutationEvent(callback: (mutationList: MutationRecord[]) => void, mutationList: MutationRecord[]): void {\n if (mutationList.length === 0) {\n return;\n }\n\n mutationList.forEach((mutation) => {\n if (mutation.removedNodes.length) {\n this.changes.set(generateId(), mutation);\n\n return;\n }\n\n this.changes.set(mutation.target, mutation);\n });\n\n callback(mutationList);\n this.checkIsEditorEmpty();\n }\n\n private getMutationCallback = (wait: number): CuiMutationCallback => {\n let timeoutId: CuiNullable<ReturnType<typeof setTimeout>> = null;\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => this.handleMutations(), wait);\n };\n };\n\n private handleMutations(): void {\n const mutationsList = [...this.changes.values()];\n const { updatedElements, removedElementsIds } = this.getMutationActions(mutationsList);\n const splitedParts: HTMLElement[] = [];\n\n updatedElements.forEach((element: HTMLElement) => {\n const elementContent: string = element.innerHTML;\n\n if (elementContent.length < SPLIT_MAX_LENGTH) {\n return;\n }\n\n const parts = splitHTML(elementContent);\n\n parts.forEach((part: string, index) => {\n if (index === 0) {\n return;\n }\n\n const blockId = generateId();\n const textElement = this.createBlock(blockId, part);\n\n splitedParts.push(textElement);\n });\n\n element.innerHTML = parts[0];\n element.after(...splitedParts);\n });\n\n this.addBlocks(splitedParts, updatedElements);\n this.updateBlocks(updatedElements);\n this.removeBlocks(removedElementsIds);\n this.changes.clear();\n }\n\n private getNextIndex(): number {\n recalculateIndexes(this.api.blocks);\n const index = this.api.blocks.getCurrentBlockIndex();\n const block = this.api.blocks.getBlockByIndex(index);\n const dataIndex = Number(block?.holder.dataset['index']);\n\n const selection = window.getSelection();\n const range = selection?.rangeCount ? selection.getRangeAt(0) : null;\n const caretPosition = range?.startOffset ?? 1;\n\n let nextBlockIndex = dataIndex;\n\n if (caretPosition !== 0) {\n const blockContainer = block?.holder.querySelector('.' + COMBINED_TEXT_BLOCK) as HTMLElement;\n const childrenCount = blockContainer?.children?.length ? blockContainer?.children?.length - 1 : 0;\n\n nextBlockIndex = dataIndex + childrenCount + 1;\n }\n\n if (!nextBlockIndex) {\n nextBlockIndex ||= 0;\n }\n\n return nextBlockIndex;\n }\n\n private getBlockPartObject(blockId: string, text: string): CuiCombinedPartBlock {\n return {\n id: blockId,\n type: COMBINED_TEXT_BLOCK_PART,\n data: {\n text,\n parentId: this.data.id,\n parentType: COMBINED_TEXT_BLOCK_NAME\n }\n };\n }\n\n private getMutationActions(mutationList: MutationRecord[]): CuiMutationActions {\n const updatedElements = new Set<HTMLElement>();\n const removedElementsIds = new Set<string>();\n const changedOutsideElements: Node[] = [];\n\n this.lastBlockElement = undefined;\n\n mutationList.forEach((mutation: MutationRecord): void => {\n this.handleUpdatedBlocks(mutation, updatedElements, changedOutsideElements);\n this.handleRemovedBlocks(mutation, removedElementsIds);\n });\n\n if (this.lastBlockElement) {\n const lastBlockElement = this.lastBlockElement as HTMLElement;\n\n lastBlockElement.append(...changedOutsideElements);\n this.setCaretToBlocksEnd(lastBlockElement);\n }\n\n return {\n updatedElements,\n removedElementsIds\n };\n }\n\n private setCaretToBlocksEnd(block: HTMLElement): void {\n const selection = window.getSelection();\n const range = document.createRange();\n\n range.setStart(block, block.childNodes.length);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n\n private handleUpdatedBlocks(\n mutation: MutationRecord,\n updatedElements: Set<HTMLElement>,\n outsideChanges: Node[]\n ): void {\n let element = mutation.target as HTMLElement;\n\n if (mutation.target.nodeType === Node.TEXT_NODE) {\n element = mutation.target.parentElement as HTMLElement;\n }\n\n const span = element?.closest('.' + COMBINED_TEXT_BLOCK_PART) as HTMLElement;\n\n if (span) {\n updatedElements.add(span);\n\n return;\n }\n\n this.handleChangesOutsideBlock(element, outsideChanges);\n }\n\n private handleChangesOutsideBlock(element: HTMLElement, outsideChanges: Node[]): void {\n if (!element || this.lastBlockElement) {\n return;\n }\n\n element.childNodes.forEach((block) => {\n const blockElement = block as HTMLElement;\n\n if (blockElement.classList?.contains(COMBINED_TEXT_BLOCK_PART)) {\n this.lastBlockElement = blockElement;\n\n return;\n }\n\n outsideChanges.push(block);\n });\n }\n\n private addBlocks(splicedParts: HTMLElement[], updatedElements: Set<HTMLElement>): void {\n if (!splicedParts.length) {\n return;\n }\n\n const addedBlocks: CuiCombinedPartBlock[] = splicedParts.map((block) => {\n const blockId = block.dataset['id'];\n\n return {\n id: blockId,\n type: COMBINED_TEXT_BLOCK_PART,\n data: {\n text: block.innerHTML,\n parentId: this.data.id,\n parentType: COMBINED_TEXT_BLOCK_NAME\n }\n };\n });\n\n const previousElement = updatedElements.values().next().value;\n const id = previousElement?.dataset['id'];\n const index = Number(previousElement?.dataset['index']) + 1;\n const blockIndex = this.data.textBlocks.findIndex((block) => block.id === id);\n\n this.data.textBlocks.splice(blockIndex, 0, ...addedBlocks);\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\n index,\n blockIndex,\n blocks: addedBlocks,\n data: this.data.textBlocks\n });\n }\n\n private updateBlocks(updatedElements: Set<HTMLElement>): void {\n if (!updatedElements.size) {\n return;\n }\n\n const updatedBlocks = [...updatedElements.values()].map((block) => {\n return {\n id: block.dataset['id'],\n type: COMBINED_TEXT_BLOCK_PART,\n data: {\n text: block.innerHTML,\n parentId: this.data.id,\n parentType: COMBINED_TEXT_BLOCK_NAME\n }\n };\n });\n\n this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, updatedBlocks);\n }\n\n private handleRemovedBlocks(mutation: MutationRecord, removedElementsIds: Set<string>): void {\n if (mutation.removedNodes.length === 0) {\n return;\n }\n\n mutation.removedNodes.forEach((node: Node): void => {\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n const blockId = (node as HTMLElement).dataset['id'];\n\n if (!blockId) {\n return;\n }\n\n removedElementsIds.add(blockId);\n });\n }\n\n private removeBlocks(ids: Set<string>): void {\n if (!ids.size) {\n return;\n }\n\n const removedElementIds = [...ids.values()];\n\n this.data.textBlocks = this.data.textBlocks.filter((block) => !ids.has(block.id || ''));\n this.api.events.emit(COMBINED_TEXT_BLOCK_REMOVED, removedElementIds);\n }\n\n private update(blocks: CuiCombinedPartBlock[]): void {\n if (!blocks.length) {\n return;\n }\n\n blocks.forEach((block: CuiCombinedPartBlock) => {\n const textElement = this.createBlock(block.id || generateId(), block.data.text);\n\n if (!this.wrapper) {\n return;\n }\n\n if (this.wrapper.querySelector('.' + COMBINED_TEXT_BLOCK_PART)) {\n this.wrapper.append(textElement);\n\n return;\n }\n\n this.wrapper.replaceChildren(textElement);\n });\n\n setTimeout(() => {\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\n blocks\n });\n });\n }\n\n private createBlock(id: string, text: string): HTMLElement {\n const textElement = document.createElement(this.TAG);\n textElement.classList.add(COMBINED_TEXT_BLOCK_PART);\n textElement.innerHTML = text;\n textElement.dataset['id'] = id;\n\n return textElement;\n }\n\n private convertDefaultDataToCustom(data: { text: string }): void {\n if (Array.isArray(data)) {\n this.data.textBlocks = data.map((block) => {\n block.id = generateId();\n block.data.parentId = this.data.id;\n\n return block;\n });\n }\n\n if (!data.text) {\n return;\n }\n\n const fragment = document.createRange().createContextualFragment(data.text);\n let elementContent = '';\n\n fragment.childNodes.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n elementContent += node.textContent;\n\n return;\n }\n\n elementContent += (node as HTMLElement).innerHTML;\n });\n\n const parts = elementContent.length < SPLIT_MAX_LENGTH ? [elementContent] : splitHTML(elementContent);\n\n parts.forEach((part: string) => {\n const blockObject = this.getBlockPartObject(generateId(), part);\n\n this.data.textBlocks.push(blockObject);\n });\n }\n\n private checkIsEditorEmpty(): void {\n if (!this.wrapper || this.wrapper.children.length > this.MAX_CHILD_COUNT_FOR_EMPTY) {\n return;\n }\n\n const item = this.wrapper.children.item(0) as HTMLElement;\n const isItemEmpty = !item.textContent?.length;\n\n this.wrapper.dataset['empty'] = `${isItemEmpty}`;\n }\n\n private getPlaceholder(config: ToolConfig): string {\n if (this.readOnly) {\n return config.readonlyPlaceholder ?? DEFAULT_READONLY_PLACEHOLDER;\n }\n\n return config.placeholder ?? DEFAULT_PLACEHOLDER;\n }\n}\n","import type { EditorConfig, LogLevels } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_NAME, DEFAULT_CONFIG } from '../constants';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\nimport { CuiCombinedTextBlockTool, CuiBoldInlineTool, CuiItalicInlineTool, CuiLinkMarker } from '../tools';\r\n\r\nexport const getEditorConfig = (id: string, config: CuiEditorConfig = DEFAULT_CONFIG): EditorConfig => ({\r\n holder: id,\r\n logLevel: 'ERROR' as LogLevels,\r\n readOnly: config.readOnly,\r\n autofocus: config.autofocus,\r\n tools: {\r\n paragraph: {\r\n class: CuiCombinedTextBlockTool,\r\n inlineToolbar: true,\r\n config: {\r\n placeholder: config.placeholder,\r\n readonlyPlaceholder: config.readonlyPlaceholder\r\n }\r\n },\r\n link: {\r\n class: CuiLinkMarker\r\n },\r\n bold: {\r\n class: CuiBoldInlineTool\r\n },\r\n italic: {\r\n class: CuiItalicInlineTool\r\n },\r\n ...config.tools\r\n },\r\n defaultBlock: COMBINED_TEXT_BLOCK_NAME\r\n});\r\n","export function setEditorDragEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('dragstart', dragstartListener, { signal });\r\n}\r\n\r\nexport function dragstartListener(event: DragEvent): void {\r\n event.preventDefault();\r\n}\r\n","import { COMBINED_TEXT_BLOCK, COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nconst FIRST_CHILD_SELECTOR = '_selected';\r\n\r\nexport function setEditorKeyboardEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('keydown', keydownListener, { signal });\r\n}\r\n\r\nexport function keydownListener(event: KeyboardEvent): void {\r\n const target = event.target as HTMLElement;\r\n const block = target.closest(`.${COMBINED_TEXT_BLOCK}`);\r\n\r\n if (!block) {\r\n return;\r\n }\r\n\r\n const selection = window.getSelection();\r\n const ranges = selection?.rangeCount;\r\n\r\n if (!ranges || !checkIsBlockFullySelected(block)) {\r\n return;\r\n }\r\n\r\n const firstChild = block?.firstElementChild;\r\n\r\n firstChild?.classList.add(FIRST_CHILD_SELECTOR);\r\n setTimeout(() => firstChild?.classList.remove(FIRST_CHILD_SELECTOR));\r\n}\r\n\r\nfunction checkIsBlockFullySelected(blockElement: Element): boolean {\r\n const selection = window.getSelection();\r\n\r\n if (!selection || selection.rangeCount === 0) {\r\n return false;\r\n }\r\n\r\n const range = selection.getRangeAt(0);\r\n const startBlock = range.startContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n const endBlock = range.endContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n const isStartAtBlockStart = startBlock === blockElement.firstChild && range.startOffset === 0;\r\n const isEndAtBlockEnd = endBlock === blockElement.lastChild;\r\n\r\n return isStartAtBlockStart && isEndAtBlockEnd;\r\n}\r\n","import { CuiAngularElement } from '../interfaces';\r\n\r\nimport { EDITOR_TOOL_MODAL_SELECTOR, EditorToolModalComponent } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function setEditorInfoModalEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement?.addEventListener('pointerup', pointerUpListener, { signal });\r\n}\r\n\r\nexport function pointerUpListener(event: MouseEvent): void {\r\n const selection = window.getSelection();\r\n\r\n if (selection && selection.toString().length > 0) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (!marker) {\r\n return;\r\n }\r\n\r\n onMarkerClick(marker);\r\n}\r\n\r\nexport function onMarkerClick(marker: HTMLElement): void {\r\n const id = marker.dataset['id'];\r\n const type = marker.dataset['type'] as MarkerType;\r\n\r\n if (!(id && type)) {\r\n return;\r\n }\r\n\r\n const toolModal = document.createElement(EDITOR_TOOL_MODAL_SELECTOR) as CuiAngularElement<EditorToolModalComponent>;\r\n\r\n toolModal.tool = { id, type, title: 'Молоток КУБИПРО Ультра MAX 3000' };\r\n toolModal.marker = marker;\r\n\r\n toolModal.addEventListener('closed', function onCloseModal() {\r\n toolModal.remove();\r\n });\r\n\r\n document.body.append(toolModal);\r\n}\r\n","import { tooltipMap } from '../utils';\r\n\r\nconst TOOLTIP_POSITION_X = 5;\r\nconst TOOLTIP_POSITION_Y = 40;\r\nconst TOOLTIP_SAFE_RIGHT_SHIFT = 10;\r\nconst TOOLTIP_DEBOUNCE_TIME = 500;\r\nconst CLOSE_TOOLTIP_DEBOUNCE_TIME = 50;\r\n\r\nlet tooltip: HTMLElement;\r\nlet timeoutId: ReturnType<typeof setTimeout>;\r\nlet closeTimeoutId: ReturnType<typeof setTimeout>;\r\n\r\nconst closeTooltipHandler = (): void => closeTooltip();\r\n\r\nfunction closeTooltip(callback?: () => void): void {\r\n clearTimeout(closeTimeoutId);\r\n\r\n closeTimeoutId = setTimeout(() => {\r\n clearTimeout(timeoutId);\r\n tooltip?.remove();\r\n callback?.();\r\n }, CLOSE_TOOLTIP_DEBOUNCE_TIME);\r\n}\r\n\r\nconst debouncedEvent = (event: MouseEvent, marker: HTMLElement, target: HTMLElement): void => {\r\n clearTimeout(timeoutId);\r\n\r\n timeoutId = setTimeout(() => {\r\n if (tooltip && tooltip?.contains(target)) {\r\n return;\r\n }\r\n\r\n closeTooltip(() => openTooltip(event, marker));\r\n }, TOOLTIP_DEBOUNCE_TIME);\r\n};\r\n\r\nfunction openTooltip(event: MouseEvent, marker: HTMLElement): void {\r\n const type = marker.tagName as keyof typeof tooltipMap;\r\n\r\n tooltip = tooltipMap[type](marker);\r\n tooltip.style.visibility = 'hidden';\r\n\r\n document.body.append(tooltip);\r\n\r\n setTimeout(() => {\r\n const positionX = event.clientX;\r\n const positionY = event.clientY;\r\n const rightX = document.documentElement.clientWidth - positionX;\r\n const rightShiftDiffX = tooltip.offsetWidth - rightX;\r\n const rightShiftX = rightShiftDiffX > 0 ? rightShiftDiffX + TOOLTIP_SAFE_RIGHT_SHIFT : 0;\r\n\r\n tooltip.style.top = positionY - TOOLTIP_POSITION_Y + 'px';\r\n tooltip.style.left = positionX + TOOLTIP_POSITION_X - rightShiftX + 'px';\r\n tooltip.style.visibility = 'visible';\r\n });\r\n}\r\n\r\nexport function setEditorTooltipEvents(signal: AbortSignal): void {\r\n document.body.addEventListener('mousemove', mouseMoveListener, { signal });\r\n document.body.addEventListener('mouseleave', closeTooltipHandler, { signal });\r\n}\r\n\r\nexport function mouseMoveListener(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (tooltip?.contains(target)) {\r\n clearTimeout(timeoutId);\r\n clearTimeout(closeTimeoutId);\r\n\r\n return;\r\n }\r\n\r\n if (!marker) {\r\n closeTooltip();\r\n\r\n return;\r\n }\r\n\r\n clearTimeout(closeTimeoutId);\r\n debouncedEvent(event, marker, target);\r\n}\r\n","import { setEditorDragEvents } from './editor-drag.event';\r\nimport { setEditorKeyboardEvents } from './editor-keyboard.event';\r\nimport { setEditorInfoModalEvents } from './editor-modal.event';\r\nimport { setEditorTooltipEvents } from './editor-tooltip.event';\r\n\r\nexport function setEditorEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n setEditorTooltipEvents(signal);\r\n setEditorInfoModalEvents(editorElement, signal);\r\n setEditorDragEvents(editorElement, signal);\r\n setEditorKeyboardEvents(editorElement, signal);\r\n}\r\n","import type { ElementRef, OnDestroy } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService } from '@cuby-ui/cdk';\nimport type { API, BlockMutationEvent, OutputData } from '@editorjs/editorjs';\nimport EditorJS from '@editorjs/editorjs';\nimport type { Observable, Subscription } from 'rxjs';\nimport {\n concatMap,\n delay,\n finalize,\n fromEvent,\n map,\n Subject,\n takeWhile,\n tap,\n throttleTime,\n timer,\n toArray\n} from 'rxjs';\nimport { CuiBlock, CuiJTextApiService } from '@cuby-ui/api';\n\nimport { getEditorConfig } from './config';\nimport { COMBINED_TEXT_BLOCK_NAME, COMBINED_TEXT_BLOCK_PART, DEFAULT_CONFIG } from './constants/editor.constants';\nimport { setEditorEvents } from './events/set-editor-events';\nimport type {\n CuiBlockData,\n CuiBlocksRequestData,\n CuiCombinedBlockAddingEvent,\n CuiCombinedBlockToolData,\n CuiCombinedPartBlock,\n CuiEditorConfig,\n CuiEventActionData,\n CuiFullBlockData\n} from './interfaces';\nimport { CuiEditorService, EventActions } from './services';\nimport { recalculateIndexes } from './utils/recalculate-indexes';\n\n@Component({\n selector: 'cui-editor',\n standalone: true,\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiEditorService, CuiJTextApiService]\n})\nexport class CuiEditorComponent implements OnDestroy {\n private readonly destroy = inject(DestroyRef);\n private readonly cuiIdService = inject(CuiIdService);\n private readonly editorService = inject(CuiEditorService);\n private readonly jTextService = inject(CuiJTextApiService);\n\n private readonly POOLING_DELAY = 100;\n private readonly ELEMENT_SPACE_TO_BOTTOM = 150;\n private readonly SCROLL_THROTTLE_TIME = 200;\n\n private readonly emptyQueue = new Subject();\n\n private poolingSubscription!: Subscription;\n private scrollSubscription!: Subscription;\n private isSkipCombinedBlockOnChange: boolean[] = [];\n private isFirst = true;\n private isChanging = false;\n private isSkip = false;\n private isRequested = false;\n private isDestroyed = false;\n private blockIdsMap = new Map<string, string>();\n private combinedBlocks = new Map();\n private index = 0;\n private page = 0;\n private addedBlocks: CuiBlockData[] = [];\n private updatedBlocks: CuiBlock[] = [];\n private removedBlocksIds: string[] = [];\n private changesQueue: BlockMutationEvent[][] = [];\n private abortController = new AbortController();\n\n protected readonly editorId = this.cuiIdService.generate();\n\n private readonly isReadonly = computed(() => this.config()?.readOnly);\n\n protected readonly editorRef = viewChild.required<ElementRef<HTMLElement>>('editor');\n\n public readonly editorApiId = input.required<string>();\n public readonly config = input<CuiEditorConfig>(DEFAULT_CONFIG);\n public readonly requestSize = input<number>(40);\n\n public readonly editorEmpty = output<boolean>();\n\n public editor!: EditorJS;\n public editorElement!: HTMLElement;\n\n constructor() {\n this.initEditorEffect();\n }\n\n public ngOnDestroy(): void {\n this.isDestroyed = true;\n\n this.destroyEditor();\n }\n\n private onScrollEvent(element: HTMLElement): void {\n const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;\n const currentHeight = element.scrollTop + element.clientHeight;\n\n if (currentHeight < overallHeight || this.isRequested) {\n return;\n }\n\n this.isRequested = true;\n\n const size = this.requestSize();\n let blocksCount = 0;\n\n this.getBlocks(this.page, size)\n .pipe(\n tap((blocks) => (blocksCount = blocks.length)),\n finalize(() => {\n this.isRequested = false;\n\n if (blocksCount >= size) {\n return;\n }\n\n this.scrollSubscription.unsubscribe();\n })\n )\n .subscribe();\n\n this.page++;\n }\n\n private onEditorChange(_: API, event: BlockMutationEvent | BlockMutationEvent[]): void {\n if (this.isReadonly() || this.isDestroyed) {\n return;\n }\n\n if (!Array.isArray(event)) {\n event = [event];\n }\n\n recalculateIndexes(this.editor.blocks);\n\n if (this.isChanging) {\n this.changesQueue.unshift(event);\n }\n\n this.startChanges(event);\n this.editorEmpty.emit(this.checkIsEmpty());\n }\n\n private onAddedCombinedBlock(data: CuiCombinedBlockAddingEvent): void {\n if (this.isSkipCombinedBlockOnChange.length) {\n this.isSkipCombinedBlockOnChange.pop();\n\n return;\n }\n\n const blocksWithoutId = data.blocks.map((block) => ({\n block: { ...block, id: undefined },\n id: block.id!\n }));\n\n this.addedBlocks.push(...blocksWithoutId);\n }\n\n private onUpdatedCombinedBlock(updatedBlocks: CuiBlock[]): void {\n if (!updatedBlocks.length) {\n return;\n }\n\n this.updatedBlocks.push(...updatedBlocks);\n }\n\n private onRemovedCombinedBlock(blockIds: string[]): void {\n if (!blockIds.length) {\n return;\n }\n\n this.removedBlocksIds.push(...blockIds);\n }\n\n private initEditorEffect(): void {\n effect(() => {\n if (this.editorApiId() || this.config()) {\n this.initEditorChanges();\n }\n }, { allowSignalWrites: true });\n }\n\n private initEditorChanges(): void {\n this.jTextService.addOptions(this.config()?.requestOptions);\n\n this.editor = this.initEditor(this.editorId);\n this.editor.isReady.then(() => {\n if (this.isDestroyed) {\n return;\n }\n\n this.editorElement = this.editorRef().nativeElement;\n\n this.initEditorEvents(this.editorElement);\n this.initScrollObserver();\n this.startPooling(this.requestSize());\n this.setListenersOnCustomBlockChanges();\n });\n }\n\n private initEditor(id: string): EditorJS {\n const config = this.config();\n\n this.destroyEditor();\n this.editor = new EditorJS({\n ...getEditorConfig(id, config),\n onChange: this.onEditorChange.bind(this)\n });\n\n return this.editor;\n }\n\n private initScrollObserver(): void {\n const element = this.config()?.element ?? this.editorElement;\n const scrollObserver = fromEvent(element, 'scroll');\n\n this.scrollSubscription = scrollObserver\n .pipe(\n takeUntilDestroyed(this.destroy),\n throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {\n leading: true,\n trailing: true\n }),\n map(() => this.onScrollEvent(element))\n )\n .subscribe();\n }\n\n private initEditorEvents(element: HTMLElement): void {\n const readOnly = this.isReadonly();\n\n if (readOnly) {\n return;\n }\n\n setEditorEvents(element, this.abortController.signal);\n }\n\n private startPooling(size: number): void {\n const scrollElement = this.config()?.element ?? this.editorElement;\n const withoutPreload = this.config()?.withoutPreload;\n\n this.poolingSubscription = timer(0, this.POOLING_DELAY)\n .pipe(\n concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))),\n tap(() => this.page++),\n takeWhile(\n (blocks) =>\n !withoutPreload &&\n scrollElement.scrollHeight <= scrollElement.clientHeight &&\n blocks.length >= size\n ),\n finalize(() => {\n if (this.isDestroyed) {\n return;\n }\n\n this.setStartBlock();\n })\n )\n .subscribe();\n }\n\n private destroyEditor(): void {\n this.abortController.abort();\n this.resetData();\n // TODO: в рандом кейсах падает ошибка если убрать проверку на вызов destroy\n this.editor?.destroy?.();\n }\n\n private setListenersOnCustomBlockChanges(): void {\n this.editorService.setListenersOnCustomBlockChanges(this.editor, {\n removedCallback: this.onRemovedCombinedBlock.bind(this),\n updatedCallback: this.onUpdatedCombinedBlock.bind(this),\n addedCallback: this.onAddedCombinedBlock.bind(this)\n });\n }\n\n private async startChanges(event: BlockMutationEvent[]): Promise<void> {\n if (this.isSkip || this.isChanging) {\n this.isSkip = false;\n\n return;\n }\n\n this.isChanging = true;\n\n try {\n const editorOutput = await this.editor.save();\n const events = event.filter((data) => data.detail.target.name !== COMBINED_TEXT_BLOCK_NAME);\n const blocks = this.editorService.sortEventsByTypes(events);\n const { addBlocks$, addedBlocks } = this.collectAddedBlocksRequest(blocks, editorOutput);\n\n this.addedBlocks = [];\n\n addBlocks$\n .pipe(\n tap((blockIds) => this.setBlockIdsToMap(blockIds, addedBlocks)),\n concatMap(() => this.collectUpdatedBlocksRequest(blocks, editorOutput)),\n concatMap(() => this.collectRemovedBlocksRequest(blocks))\n )\n .subscribe({\n complete: () => this.startNextChange(),\n error: () => this.startNextChange()\n });\n } catch (e) {\n return;\n }\n }\n\n private startNextChange(): void {\n this.isChanging = false;\n\n const nextEvents = this.changesQueue.pop();\n\n if (nextEvents) {\n this.startChanges(nextEvents);\n }\n\n this.emptyQueue.next(null);\n }\n\n private collectAddedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): CuiBlocksRequestData {\n const defaultBlocksWithIndex = blocks[EventActions.add].map((addedBlock) =>\n this.editorService.getFullBlockData(addedBlock, editorOutput)\n );\n const combinedBlocksWithIndex = this.addedBlocks.map((block) => {\n const element = this.editorElement.querySelector(`[data-id=\"${block.id}\"]`) as HTMLElement;\n const index = Number(element?.dataset['index']);\n\n return { ...block, index };\n });\n\n const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort(\n (first, second) => first.index - second.index\n );\n const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorApiId(), addedBlocks);\n\n return {\n addedBlocks,\n addBlocks$\n };\n }\n\n private collectUpdatedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): Observable<CuiBlock[]> {\n blocks[EventActions.update].forEach((updateBlock) => {\n const { id, block } = this.editorService.getFullBlockData(updateBlock, editorOutput);\n block.id = id;\n\n this.updatedBlocks.push(block);\n });\n\n const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);\n\n this.updatedBlocks = [];\n\n return updateBlocks$;\n }\n\n private collectRemovedBlocksRequest(blocks: CuiEventActionData): Observable<void> {\n blocks[EventActions.remove].forEach((block) => {\n const id = block.detail.target.id;\n\n this.removedBlocksIds.push(id);\n });\n\n const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(\n this.editorApiId(),\n this.removedBlocksIds,\n this.blockIdsMap\n );\n this.removedBlocksIds = [];\n\n return removeBlocks$;\n }\n\n private getBlocks(page = 0, size = 40): Observable<CuiBlock[]> {\n let combinedBlock: CuiNullable<CuiBlock>;\n\n return this.jTextService.getBlocks(this.editorApiId(), page, size).pipe(\n takeUntilDestroyed(this.destroy),\n finalize(() => {\n if (combinedBlock) {\n this.addCombinedBlock(combinedBlock);\n combinedBlock = null;\n }\n\n recalculateIndexes(this.editor.blocks);\n }),\n map((block) => {\n if (block.type === COMBINED_TEXT_BLOCK_PART) {\n const blockData = block.data as { parentId: string };\n\n if (combinedBlock && blockData.parentId! !== combinedBlock?.id) {\n this.addCombinedBlock(combinedBlock);\n combinedBlock = null;\n }\n\n combinedBlock = this.setCombinedBlock(block);\n\n return;\n }\n\n if (combinedBlock) {\n this.addCombinedBlock(combinedBlock);\n combinedBlock = null;\n }\n\n this.addBlock(block);\n }),\n toArray()\n ) as unknown as Observable<CuiBlock[]>;\n }\n\n private addBlock(block: CuiBlock): void {\n if (typeof block.type !== 'string') {\n return;\n }\n\n this.blockIdsMap.set(block.id!, block.id!);\n this.insert(block);\n }\n\n private addCombinedBlock(combinedBlock: CuiBlock): void {\n this.isSkipCombinedBlockOnChange.push(true);\n const block = this.editor.blocks.getById(combinedBlock.id || '');\n\n if (block) {\n this.editor.blocks.update(block.id, combinedBlock.data as CuiCombinedPartBlock);\n\n return;\n }\n\n this.insert(combinedBlock);\n }\n\n private insert(block: CuiBlock): void {\n this.checkFirst(block);\n this.index++;\n }\n\n private checkFirst(block: CuiBlock): void {\n if (!this.isFirst) {\n this.isSkip = true;\n this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);\n\n return;\n }\n\n // TODO: есть варик что что то пойдет не так\n this.editor.blocks.render({ blocks: [block] }).then(() => (this.isSkip = false));\n this.isFirst = false;\n }\n\n private setCombinedBlock(block: CuiBlock): CuiBlock {\n const combinedBlockData = block.data as { parentId: string };\n const parent = this.combinedBlocks.get(combinedBlockData.parentId);\n\n this.blockIdsMap.set(block.id!, block.id!);\n\n if (parent) {\n const parentData = parent.data as { textBlocks: CuiBlock[] };\n parentData.textBlocks.push(block);\n\n return parent;\n }\n\n const parentObject: CuiBlock = {\n id: combinedBlockData.parentId,\n type: COMBINED_TEXT_BLOCK_NAME,\n data: {\n id: combinedBlockData.parentId,\n textBlocks: [block]\n }\n };\n\n this.combinedBlocks.set(combinedBlockData.parentId, parentObject);\n\n return parentObject;\n }\n\n private setBlockIdsToMap(blockIds: string[], addedBlocks: CuiFullBlockData[]): void {\n if (!blockIds.length) {\n return;\n }\n\n addedBlocks.forEach((blockData, index) => {\n this.blockIdsMap.set(blockData.id, blockIds[index]);\n });\n }\n\n private setStartBlock(): void {\n if (this.blockIdsMap.size) {\n this.setFocus();\n this.editorEmpty.emit(this.checkIsEmpty());\n\n return;\n }\n\n if (this.isReadonly()) {\n this.editor.render({ blocks: [] });\n\n return;\n }\n\n this.editorService.setStartBlock(\n this.editorApiId(),\n async (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => {\n this.blockIdsMap.set(id, id);\n this.isSkipCombinedBlockOnChange.push(true);\n\n await this.editor.render({ blocks: [block] });\n\n this.setFocus();\n recalculateIndexes(this.editor.blocks);\n }\n );\n }\n\n private setFocus(): void {\n if (!this.config()?.autofocus) {\n return;\n }\n\n this.editor.caret.focus();\n }\n\n private checkIsEmpty(): boolean {\n const MIN_BLOCKS_COUNT = 1;\n const REDACTOR_SELECTOR = '.codex-editor__redactor';\n const redactor = this.editorElement.querySelector(REDACTOR_SELECTOR);\n const blocksCount = redactor?.childElementCount ?? 0;\n\n return blocksCount <= MIN_BLOCKS_COUNT && !redactor?.textContent;\n }\n\n private resetData(): void {\n this.scrollSubscription?.unsubscribe();\n this.poolingSubscription?.unsubscribe();\n this.isSkipCombinedBlockOnChange = [];\n this.isFirst = true;\n this.isChanging = false;\n this.isSkip = false;\n this.isRequested = false;\n this.blockIdsMap = new Map<string, string>();\n this.combinedBlocks = new Map();\n this.index = 0;\n this.page = 0;\n this.addedBlocks = [];\n this.updatedBlocks = [];\n this.removedBlocksIds = [];\n this.changesQueue = [];\n this.abortController = new AbortController();\n }\n}\n","<div\n #editor\n [id]=\"editorId\"\n data-editor\n [class._readonly]=\"config().readOnly\"\n></div>\n","import { Directive, effect, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[editorResizeObserver]',\n standalone: true\n})\nexport class EditorResizeObserverDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n private observer: ResizeObserver | null = null;\n\n public readonly target = input.required<HTMLElement>();\n public readonly shortHeight = input.required<number>();\n\n constructor() {\n this.initTargetEffect();\n }\n\n public ngOnDestroy(): void {\n this.destroyObserver();\n }\n\n private initTargetEffect(): void {\n effect(() => {\n const target = this.target();\n\n if (!target) {\n return;\n }\n\n this.initObserver();\n });\n }\n\n private initObserver(): void {\n this.observer = new ResizeObserver((entries) => {\n if (entries[0].target.scrollHeight <= this.shortHeight()) {\n this.viewContainerRef.clear();\n\n return;\n }\n\n if (this.viewContainerRef.length) {\n return;\n }\n\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n });\n\n this.observer.observe(this.target());\n }\n\n private destroyObserver(): void {\n this.observer?.disconnect();\n this.observer = null;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n signal,\r\n TemplateRef,\r\n viewChild\r\n} from '@angular/core';\r\nimport { CuiElementDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorReadonlyConfig } from './editor-readonly.options';\r\nimport { EditorResizeObserverDirective } from './editor-resize-observer.directive';\r\n\r\n@Component({\r\n selector: 'cui-editor-readonly',\r\n standalone: true,\r\n imports: [CuiEditorComponent, NgTemplateOutlet, EditorResizeObserverDirective, CuiElementDirective],\r\n templateUrl: './editor-readonly.component.html',\r\n styleUrls: ['./editor-readonly.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorReadonlyComponent {\r\n protected readonly isShowMore = signal(false);\r\n protected readonly editorConfig = computed(() => ({ readOnly: true, withoutPreload: true, ...this.config() }));\r\n\r\n protected readonly DEFAULT_SHORT_HEIGHT = 68;\r\n\r\n protected readonly editor = viewChild.required<CuiEditorComponent>('editor');\r\n\r\n public readonly editorId = input.required<string>();\r\n public readonly config = input.required<CuiEditorReadonlyConfig>();\r\n public readonly buttonTemplate = input.required<TemplateRef<unknown>>();\r\n public readonly shortHeight = input<number>(this.DEFAULT_SHORT_HEIGHT);\r\n\r\n constructor() {\r\n this.initEditorIdEffect();\r\n }\r\n\r\n protected onShow(editor: CuiEditorComponent): void {\r\n editor.editorElement.scrollTo(0, 0);\r\n this.isShowMore.update((prev) => !prev);\r\n }\r\n\r\n private initEditorIdEffect(): void {\r\n effect(\r\n () => {\r\n this.editorId();\r\n this.isShowMore.set(false);\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n}\r\n","<cui-editor\r\n cuiElement\r\n #editorElement=\"elementRef\"\r\n #editorComponent\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorApiId]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n\r\n<ng-template\r\n [editorResizeObserver]\r\n [target]=\"editorElement.nativeElement\"\r\n [shortHeight]=\"shortHeight()\"\r\n>\r\n <button\r\n class=\"c-button\"\r\n (click)=\"onShow(editorComponent)\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"buttonTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"\r\n ></ng-container>\r\n </button>\r\n</ng-template>\r\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { Component, input, output, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule, CuiSvgModule } from '../../../components';\nimport { CuiEditorComponent } from '../../editor.component';\nimport type { CuiEditorConfig } from '../../interfaces';\n\n@Component({\n selector: 'cui-editor-modal',\n imports: [CuiEditorComponent, CuiButtonModule, NgTemplateOutlet, CuiSvgModule],\n standalone: true,\n templateUrl: './editor-modal.component.html',\n styleUrl: './editor-modal.component.scss'\n})\nexport class CuiEditorModalComponent {\n protected readonly isOpen = signal(false);\n protected readonly isButtonDisabled = signal<boolean>(false);\n\n public readonly title = input.required<string>();\n public readonly buttonTemplate = input<TemplateRef<HTMLElement>>();\n public readonly config = input.required<CuiEditorConfig>();\n public readonly editorId = input<CuiNullable<string>>();\n\n public readonly editorCreated = output();\n public readonly modalClosed = output();\n\n protected onModalOpen(): void {\n this.isButtonDisabled.set(true);\n\n if (this.editorId()) {\n this.open();\n\n return;\n }\n\n this.editorCreated.emit();\n }\n public open(): void {\n this.isOpen.set(true);\n }\n\n public close(): void {\n this.isButtonDisabled.set(false);\n this.isOpen.set(false);\n this.modalClosed.emit();\n }\n}\n","@if (buttonTemplate(); as template) {\n <button\n type=\"button\"\n class=\"button\"\n (click)=\"onModalOpen()\"\n >\n <ng-container [ngTemplateOutlet]=\"template\" />\n </button>\n} @else {\n <button\n class=\"description\"\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n icon=\"cuiIconRichText\"\n size=\"sm\"\n (click)=\"onModalOpen()\"\n [disabled]=\"isButtonDisabled()\"\n >\n @if (editorId()) {\n <span class=\"description__text _created\">{{ 'Description' }}</span>\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconEdit\"\n color=\"var(--cui-base-500)\"\n />\n } @else {\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconPlus\"\n color=\"var(--cui-light-blue-600)\"\n />\n <span class=\"description__text\">{{ 'Add description' }}</span>\n }\n </button>\n}\n@if (isOpen()) {\n <div class=\"wrapper\">\n @if (editorId(); as id) {\n <header class=\"header\">\n <div class=\"info\">\n <button\n cuiButton\n type=\"button\"\n icon=\"cuiIconChevronLeft\"\n size=\"xxs\"\n appearance=\"secondary\"\n shape=\"rounded\"\n (click)=\"close()\"\n ></button>\n <h1 class=\"title\">{{ title() }}</h1>\n </div>\n <div class=\"actions\">\n <!-- <cui-loader /> -->\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n (click)=\"close()\"\n >\n {{ 'Done' }}\n </button>\n </div>\n </header>\n\n <section class=\"section\">\n <cui-editor\n #editorComponent\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"config()\"\n />\n </section>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiButtonModule, CuiContentWrapperComponent, CuiHintModule } from '../../../components';\nimport { CuiTooltip } from '../../../directives';\n\nimport { CuiEditorComponent } from '../../editor.component';\nimport type { CuiEditorConfig } from '../../interfaces';\nimport { CuiEditorModalComponent } from '../editor-modal/editor-modal.component';\n\n@Component({\n selector: 'cui-editor-block',\n imports: [\n CuiButtonModule,\n CuiEditorModalComponent,\n CuiEditorComponent,\n TranslocoDirective,\n CuiContentWrapperComponent,\n CuiTooltip,\n CuiHintModule\n ],\n standalone: true,\n templateUrl: './editor-block.component.html',\n styleUrls: ['./editor-block.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiEditorBlockComponent {\n private skipFirstValidation = true;\n\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\n protected readonly isDescriptionModalOpen = signal(false);\n protected readonly isDescriptionEmpty = signal(false);\n\n public readonly editorContainer = viewChild<string, ElementRef<HTMLElement>>('editorContainer', {\n read: ElementRef\n });\n\n public readonly title = input.required<string>();\n public readonly editorId = input.required<string>();\n public readonly config = input.required<CuiEditorConfig>();\n public readonly required = input(false);\n\n public readonly editorEmpty = output<boolean>();\n\n constructor() {\n this.initEditorConfig();\n }\n\n protected onToggleDescriptionModal(): void {\n this.isDescriptionModalOpen.update((prev) => !prev);\n }\n\n protected onDescriptionChange(value: boolean): void {\n this.editorEmpty.emit(value);\n\n if (this.skipFirstValidation) {\n this.skipFirstValidation = false;\n\n return;\n }\n\n this.isDescriptionEmpty.set(value);\n }\n\n private initEditorConfig(): void {\n const effectRef = effect(\n () => {\n const element = this.editorContainer()?.nativeElement;\n\n if (!element) {\n return;\n }\n\n this.editorConfig.set({ element, ...this.config() });\n effectRef.destroy();\n },\n { allowSignalWrites: true }\n );\n }\n}\n","<ng-container *transloco=\"let t\">\n <div class=\"wrapper\">\n <span class=\"title\">\n {{ t('DESCRIPTION') }}\n @if (required()) {\n <span class=\"title__required\">*</span>\n }\n </span>\n <ng-template #button>\n <button\n [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\n cuiButton\n size=\"xxs\"\n type=\"button\"\n appearance=\"ghost\"\n icon=\"cuiIconMaximizeSm\"\n (click)=\"onToggleDescriptionModal()\"\n ></button>\n </ng-template>\n <cui-editor-modal\n [title]=\"title()\"\n [editorId]=\"editorId()\"\n [buttonTemplate]=\"button\"\n [config]=\"config()\"\n (modalClosed)=\"onToggleDescriptionModal()\"\n />\n </div>\n <div\n #editorContainer\n cuiContentWrapper\n class=\"editor\"\n [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\n >\n @if (!isDescriptionModalOpen() && editorConfig()) {\n <cui-editor\n #editorComponent\n [editorApiId]=\"editorId()\"\n [config]=\"editorConfig()!\"\n (editorEmpty)=\"onDescriptionChange($event)\"\n />\n }\n </div>\n @if (required() && isDescriptionEmpty()) {\n <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\n }\n</ng-container>\n","import {\n EDITOR_ATTACHES_TOOL_SELECTOR,\n EDITOR_IMAGE_TOOL_SELECTOR,\n EDITOR_TOOL_MODAL_SELECTOR,\n EDITOR_TOOLTIP_SELECTOR,\n EDITOR_VIDEO_TOOL_SELECTOR,\n EditorAttachesToolComponent,\n EditorImageToolComponent,\n EditorToolModalComponent,\n EditorTooltipComponent,\n EditorVideoToolComponent,\n MARKER_MODAL_SELECTOR,\n MARKER_SELECT_SELECTOR,\n MarkerModalComponent,\n MarkerSelectComponent\n} from '../components';\nimport { CuiCustomElement } from '../interfaces';\n\nexport const EDITOR_CUSTOM_ELEMENTS: readonly CuiCustomElement[] = [\n {\n selector: EDITOR_TOOLTIP_SELECTOR,\n component: EditorTooltipComponent\n },\n {\n selector: MARKER_SELECT_SELECTOR,\n component: MarkerSelectComponent\n },\n {\n selector: EDITOR_TOOL_MODAL_SELECTOR,\n component: EditorToolModalComponent\n },\n {\n selector: MARKER_MODAL_SELECTOR,\n component: MarkerModalComponent\n },\n {\n selector: EDITOR_VIDEO_TOOL_SELECTOR,\n component: EditorVideoToolComponent\n },\n {\n selector: EDITOR_IMAGE_TOOL_SELECTOR,\n component: EditorImageToolComponent\n },\n {\n selector: EDITOR_ATTACHES_TOOL_SELECTOR,\n component: EditorAttachesToolComponent\n }\n];\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\nimport { EDITOR_CUSTOM_ELEMENTS } from '../config/custom-elements';\r\n\r\nexport function cuiProvideEditor(): Provider {\r\n return [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (injector: Injector) => () => {\r\n EDITOR_CUSTOM_ELEMENTS.forEach(({ component, selector }) => {\r\n const element = createCustomElement(component, { injector });\r\n\r\n window.customElements.define(selector, element);\r\n });\r\n },\r\n deps: [Injector],\r\n multi: true\r\n }\r\n ];\r\n}\r\n","import type { HttpEvent, HttpInterceptorFn } from '@angular/common/http';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nexport const cuiXNdjsonInterceptor: HttpInterceptorFn = (request, next) => {\n if (request.headers.get('Content-Type') !== 'application/x-ndjson') {\n return next(request);\n }\n\n return new Observable<HttpEvent<unknown>>((observer) => {\n const controller = new AbortController();\n const signal = controller.signal;\n\n (async (): Promise<void> => {\n try {\n const response = await fetch(request.urlWithParams, {\n method: request.method,\n headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\n headers[key] = request.headers.get(key)!;\n\n return headers;\n }, {}),\n body: request.body ? JSON.stringify(request.body) : null,\n signal\n });\n\n if (!response.ok) {\n const error = await response.json();\n\n observer.error(new HttpErrorResponse({ error }));\n\n return;\n }\n\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n for (;;) {\n const { done, value } = await reader.read();\n\n if (done) {\n observer.complete();\n\n return;\n }\n\n buffer += decoder.decode(value);\n const lines = buffer.split('\\n');\n buffer = lines.pop() ?? '';\n\n lines.forEach((line) => observer.next(JSON.parse(line)));\n }\n } catch (error) {\n observer.error(new HttpErrorResponse({ error }));\n }\n })();\n\n return () => controller.abort();\n });\n};\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { catchError, finalize, throwError } from 'rxjs';\r\n\r\nimport { CuiLoaderService } from '../services';\r\n\r\nexport const cuiLoaderInterceptor: HttpInterceptorFn = (request, next) => {\r\n const loaderService = inject(CuiLoaderService);\r\n\r\n if (request.method === 'GET') {\r\n return next(request);\r\n }\r\n\r\n loaderService.setLoading();\r\n\r\n return next(request).pipe(\r\n catchError((error) => throwError(() => error)),\r\n finalize(loaderService.handleCompletedRequest.bind(loaderService))\r\n );\r\n};\r\n","import { HttpErrorResponse, type HttpEvent, type HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport type { Observable } from 'rxjs';\nimport { catchError, throwError } from 'rxjs';\n\nimport { CuiAlertService } from '../components';\n\nexport const cuiErrorHandlerInterceptor: HttpInterceptorFn = (request, next) => {\n const translocoService = inject(TranslocoService);\n const cuiAlertService = inject(CuiAlertService);\n\n return next(request).pipe(\n catchError((error) => {\n console.error(error);\n\n if (error instanceof HttpErrorResponse) {\n cuiAlertService\n .open(translocoService.translate(`BACKEND.${error.error.code}`), { status: 'error' })\n .subscribe();\n }\n\n return throwError(() => error) as Observable<HttpEvent<unknown>>;\n })\n );\n};\n","import { InjectionToken } from '@angular/core';\nimport type { AuthConfig, OAuthModuleConfig } from 'angular-oauth2-oidc';\n\nimport type { CuiBrowserAuthService } from '../services/browser-auth.service';\nimport type { CuiMobileAuthService } from '../services/mobile-auth.service';\nimport { CuiAuthBase } from '../services/auth.service';\n\nexport type CuiAuthPlatform = 'mobile' | 'browser';\n\nexport interface CuiAuthConfig extends AuthConfig {\n readonly tokenExpiredCallback?: (this: CuiAuthBase) => void;\n}\n\nexport interface CuiAuthProviderConfig {\n readonly authConfig: CuiAuthConfig;\n readonly moduleConfig?: OAuthModuleConfig;\n readonly platform?: CuiAuthPlatform;\n}\n\nexport const CuiAuthService = new InjectionToken<CuiMobileAuthService | CuiBrowserAuthService>('CUI_AUTH_SERVICE');\n","import { Location } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CuiAuthConfig } from '../providers';\nimport { CuiAuthBase } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiBrowserAuthService extends CuiAuthBase {\n private readonly router = inject(Router);\n private readonly location = inject(Location);\n\n public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\n this.setStorage(localStorage);\n this.configure(authConfig);\n\n await this.loadDiscoveryDocument();\n await this.tryLogin();\n\n const tokenExpiredCallback = authConfig.tokenExpiredCallback?.bind(this) ?? this.initLoginFlow.bind(this);\n\n this.initAuthRefreshEvents(tokenExpiredCallback);\n\n await this.useCheckTokenFlow(tokenExpiredCallback);\n\n this.router.navigateByUrl(this.location.path(false).split('?')[0]);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { CuiAuthConfig } from '../providers';\nimport { CuiAuthBase } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiMobileAuthService extends CuiAuthBase {\n public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\n this.setStorage(localStorage);\n this.configure(authConfig);\n\n if (!authConfig.tokenExpiredCallback) {\n return;\n }\n\n await this.loadDiscoveryDocument();\n await this.tryLogin();\n\n this.initAuthRefreshEvents(authConfig.tokenExpiredCallback.bind(this));\n\n await this.useCheckTokenFlow(authConfig.tokenExpiredCallback.bind(this));\n }\n}\n","import type { Provider } from '@angular/core';\nimport { APP_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';\nimport type { AuthConfig } from 'angular-oauth2-oidc';\nimport { provideOAuthClient } from 'angular-oauth2-oidc';\n\nimport { CuiBrowserAuthService } from '../services/browser-auth.service';\nimport { CuiMobileAuthService } from '../services/mobile-auth.service';\nimport type { CuiAuthConfig, CuiAuthProviderConfig } from './auth.options';\nimport { CuiAuthService } from './auth.options';\n\nexport function provideCuiAuth({ authConfig, moduleConfig, platform = 'browser' }: CuiAuthProviderConfig): Provider {\n return [\n provideOAuthClient(moduleConfig),\n {\n provide: CuiAuthService,\n useFactory: (): CuiMobileAuthService | CuiBrowserAuthService => {\n if (platform === 'mobile') {\n return inject(CuiMobileAuthService);\n }\n\n return inject(CuiBrowserAuthService);\n }\n },\n makeEnvironmentProviders([\n {\n provide: APP_INITIALIZER,\n useValue: (): Promise<void> => initAuth(authConfig),\n multi: true\n }\n ])\n ];\n}\n\nasync function initAuth(authConfig: CuiAuthConfig): Promise<void> {\n const authService = inject(CuiAuthService);\n\n return await authService.initAuth(authConfig);\n}\n","import type { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\n\nimport { CuiAuthService } from '../providers';\n\nexport const cuiAuthInterceptor: HttpInterceptorFn = (request, next) => {\n const authService = inject(CuiAuthService);\n\n if (!authService.hasValidAccessToken()) {\n return next(request);\n }\n\n const modifiedRequest = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + authService.getAccessToken()\n }\n });\n\n return next(modifiedRequest);\n};\n","import type { 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';\nimport type { AbstractControl } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiHintModule } from '../../components';\n\n@Component({\n selector: 'cui-general-control-error-hint',\n imports: [CuiHintModule, TranslocoDirective],\n standalone: true,\n templateUrl: './general-control-error-hint.component.html',\n styleUrl: './general-control-error-hint.component.scss',\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class CuiGeneralControlErrorHintComponent {\n public readonly control = input.required<AbstractControl>();\n public readonly isVisible = input<boolean>();\n\n protected get isInvalid(): boolean {\n return this.isVisible() ?? (this.control().invalid && this.control().dirty);\n }\n}\n","<ng-container *transloco=\"let t\">\n @if (isInvalid) {\n @if (control().errors; as errors) {\n <cui-hint hintType=\"error\">\n @if (errors['required']) {\n {{ t('FIELD_IS_REQUIRED') }}\n } @else if (errors['minlength']) {\n {{ t('PLEASE_KEEP_FIELD_AT_LEAST_CHARACTERS', { value: errors['minlength'].requiredLength }) }}\n } @else if (errors['maxlength']) {\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: errors['maxlength'].requiredLength }) }}\n } @else if (errors['extraSpaces']) {\n {{ t('MUST_BE_WITHOUT_EXTRA_SPACES') }}\n } @else if (errors['min']) {\n {{ t('MIN_VALUE_MUST_BE_MORE_THAN', { value: errors['min'].min }) }}\n } @else if (errors['max']) {\n {{ t('MAX_VALUE_MUST_BE_LESS_THAN', { value: errors['max'].max }) }}\n } @else if (errors['email']) {\n {{ t('INVALID_EMAIL_ADDRESS') }}\n }\n </cui-hint>\n }\n }\n</ng-container>\n","import type { OnInit } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { cuiCreateDefaultValidators } from '../../../../utils';\nimport { CuiFormFieldModule, CuiHintModule, CuiIconButtonModule, CuiGhostInputComponent } from '../../../../components';\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\n\n@Component({\n selector: 'cui-category-form',\n imports: [\n CuiFormFieldModule,\n CuiHintModule,\n CuiIconButtonModule,\n CuiGeneralControlErrorHintComponent,\n CuiGhostInputComponent,\n ReactiveFormsModule,\n TranslocoDirective\n ],\n standalone: true,\n templateUrl: './category-form.component.html',\n styleUrl: './category-form.component.scss',\n host: {\n '(click)': 'onHostClick($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoryFormComponent implements OnInit {\n protected readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n\n protected readonly form = this.nonNullableFormBuilder.group({\n title: ['', cuiCreateDefaultValidators({ asyncDelay: 0 })]\n });\n protected readonly titleControl = this.form.controls.title;\n\n public readonly isDisabled = input<boolean>(false);\n public readonly defaultTitle = input<string>('');\n\n protected readonly created = output<string>();\n protected readonly canceled = output<void>();\n\n protected readonly input = viewChild.required('input', { read: ElementRef<HTMLInputElement> });\n\n protected get isTitleInvalid(): boolean {\n return this.titleControl.invalid && this.titleControl.dirty;\n }\n\n protected get isSubmitButtonDisabled(): boolean {\n return this.isDisabled() || this.form.invalid;\n }\n\n constructor() {\n this.initInputDisableStateSubscription();\n }\n\n public ngOnInit(): void {\n this.initDefaultTitle();\n this.initInputFocus();\n }\n\n protected onHostClick(event: Event): void {\n event.stopPropagation();\n }\n\n protected onSubmit(): void {\n if (this.form.invalid) {\n return;\n }\n\n this.created.emit(this.form.value.title!);\n }\n\n protected onCancel(event: Event): void {\n event.stopPropagation();\n this.canceled.emit();\n }\n\n private initInputDisableStateSubscription(): void {\n effect(() => {\n if (this.isDisabled()) {\n this.titleControl.disable();\n\n return;\n }\n\n this.titleControl.enable();\n });\n }\n\n private initDefaultTitle(): void {\n this.form.patchValue({ title: this.defaultTitle() });\n }\n\n private initInputFocus(): void {\n Promise.resolve().then(() => this.input().nativeElement.focus());\n }\n}\n","<ng-container *transloco=\"let t\">\n <form\n [formGroup]=\"form\"\n class=\"form\"\n (ngSubmit)=\"onSubmit()\"\n >\n <div class=\"input\">\n <input\n #input\n cuiGhostInput\n formControlName=\"title\"\n type=\"text\"\n placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\n [isError]=\"isTitleInvalid\"\n (keyup)=\"$event.preventDefault()\"\n />\n <cui-general-control-error-hint [control]=\"titleControl\" />\n </div>\n <button\n cuiIconButton\n type=\"submit\"\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"isSubmitButtonDisabled\"\n class=\"button\"\n ></button>\n </form>\n <button\n cuiIconButton\n type=\"button\"\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n (click)=\"onCancel($event)\"\n [disabled]=\"isDisabled()\"\n class=\"button\"\n ></button>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport { CuiSvgModule } from '../../../../components';\nimport { CuiCategoryFormComponent } from '../category-form';\n\n@Component({\n selector: 'cui-create-category-item',\n imports: [CuiSvgModule, CuiCategoryFormComponent],\n standalone: true,\n templateUrl: './create-category-item.component.html',\n styleUrl: './create-category-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCreateCategoryItemComponent {\n protected readonly created = output<string>();\n protected readonly canceled = output<void>();\n\n public readonly isDisabled = input<boolean>(false);\n\n protected onSubmit(title: string): void {\n this.created.emit(title);\n }\n\n protected onCancel(): void {\n this.canceled.emit();\n }\n}\n","<cui-svg\n icon=\"cuiIconFolder\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n/>\n<cui-category-form\n [isDisabled]=\"isDisabled()\"\n (created)=\"onSubmit($event)\"\n (canceled)=\"onCancel()\"\n/>\n","import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, inject, input, signal } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { CuiApiContext, CuiTreeStructNavigatorApiService, TreeStruct } from '@cuby-ui/api';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { finalize } from 'rxjs';\n\nimport { CuiButtonModule, CuiIconButtonModule, CuiSvgModule } from '../../../../components';\nimport { CuiSelectedCategoryService } from '../../services';\nimport { CuiCategoriesListComponent } from '../categories-list';\nimport { CuiCategoryFormComponent } from '../category-form';\nimport { CuiCreateCategoryItemComponent } from '../create-category-item';\n\n@Component({\n selector: 'cui-category-item',\n imports: [\n CuiButtonModule,\n CuiIconButtonModule,\n CuiLetDirective,\n CuiSvgModule,\n CuiCategoryFormComponent,\n CuiCreateCategoryItemComponent,\n forwardRef(() => CuiCategoriesListComponent)\n ],\n standalone: true,\n templateUrl: './category-item.component.html',\n styleUrl: './category-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoryItemComponent {\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\n\n protected readonly isStageCreationLoading = signal(false);\n protected readonly stageStorageChildren = signal<TreeStruct[]>([]);\n protected readonly areChildrenOpened = signal(false);\n protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\n this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\n );\n protected readonly doChildrenExist = computed(\n () => this.stageStorage().children.length || this.stageStorageChildren().length\n );\n protected readonly isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());\n protected readonly stageStorageIcon = computed<CuiIcon>(() =>\n this.areChildrenOpened() && this.doChildrenExist() ? 'cuiIconFolderOpen' : 'cuiIconFolder'\n );\n protected readonly isSubcategoryCreating = signal(false);\n protected readonly isSubcategoryCreationLoading = signal(false);\n protected readonly alignItems = computed(() => (this.isTitleEdit() ? 'flex-start' : 'center'));\n protected readonly isTitleEdit = computed(\n () => this.selectedCategoryService.editingId() === this.stageStorage().id\n );\n protected readonly isCreateCategoryControlVisible = computed(\n () =>\n (this.selectedCategoryService.creatingId() === this.stageStorage().id && this.isSubcategoryCreating()) ||\n this.isSubcategoryCreationLoading()\n );\n public readonly categoryTitle = signal<string>('');\n public readonly category = computed(() => ({\n ...this.stageStorage(),\n title: this.categoryTitle() || this.stageStorage().title\n }))\n\n public readonly stageStorage = input.required<TreeStruct>();\n public readonly context = input<CuiApiContext>();;\n\n constructor() {\n this.initStageStorageChildren();\n }\n\n protected onSelectCategory(): void {\n this.selectedCategoryService.setCurrentCategory(this.category());\n }\n\n protected onToggleChildren(event: MouseEvent): void {\n event.stopPropagation();\n\n this.areChildrenOpened.update((value) => !value);\n\n if (this.areChildrenOpened()) {\n return;\n }\n\n this.isSubcategoryCreating.set(false);\n }\n\n protected onTitleChanged(title: string): void {\n this.onCancelTitleEdit();\n\n if (title === this.category().title) {\n return;\n }\n\n this.treeStructNavigatorApiService.updateTitle(this.stageStorage().id, title, this.context()).subscribe(() => {\n this.categoryTitle.set(title);\n\n if (this.category().id === this.selectedCategoryService.category()?.id) {\n this.selectedCategoryService.setCurrentCategory(this.category());\n }\n });\n }\n\n protected onStartTitleEdit(event?: Event): void {\n event?.stopPropagation();\n\n this.selectedCategoryService.setEditingId(this.stageStorage().id);\n this.onCreatingSubcategoryCanceled();\n }\n\n protected onCancelTitleEdit(): void {\n this.selectedCategoryService.clearEditingId();\n }\n\n protected onStartCreatingSubcategory(event: MouseEvent): void {\n event.stopPropagation();\n\n this.isSubcategoryCreating.set(true);\n this.areChildrenOpened.set(true);\n this.selectedCategoryService.setCreatingId(this.stageStorage().id);\n }\n\n protected onCreateNewSubcategoryCategory(title: string): void {\n this.isSubcategoryCreating.set(false);\n this.isSubcategoryCreationLoading.set(true);\n this.treeStructNavigatorApiService\n .createStageStorageToParent(this.stageStorage().id, title, this.context())\n .pipe(finalize(this.isSubcategoryCreationLoading.set.bind(this.isSubcategoryCreationLoading, false)))\n .subscribe((stateStorage) => {\n this.stageStorageChildren.update((value) => [...value, stateStorage]);\n });\n }\n\n protected onCreatingSubcategoryCanceled(): void {\n this.isSubcategoryCreating.set(false);\n this.selectedCategoryService.clearCreatingId();\n }\n\n private initStageStorageChildren(): void {\n effect(\n () => {\n if (!this.areChildrenOpened() || this.stageStorageChildren().length) {\n return;\n }\n\n const stageStorage = this.stageStorage();\n const stageStorageChildren = stageStorage.children;\n\n if (!stageStorageChildren.length) {\n return;\n }\n\n if (typeof stageStorageChildren[0] !== 'string') {\n this.stageStorageChildren.set(stageStorageChildren as TreeStruct[]);\n\n return;\n }\n\n this.treeStructNavigatorApiService.getStageStoragesByParent(stageStorage.id, this.context()).subscribe((storage) => {\n this.stageStorageChildren.update((prevStageStorages) =>\n prevStageStorages ? [...prevStageStorages, storage] : [storage]\n );\n });\n },\n { allowSignalWrites: true }\n );\n }\n}\n","<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n [disabled]=\"isStageCreationLoading()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n ccFlexContainerDirective\n class=\"category__open-close-button\"\n [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"stageStorageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"category__title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"category__add-subcategory-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"category__add-subcategory-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-list [stageStorages]=\"stageStorageChildren()\" />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategoryCategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\nimport { CuiApiContext, TreeStruct } from '@cuby-ui/api';\n\nimport { CuiIconButtonModule, CuiSvgModule } from '../../../../components';\nimport { CuiCategoryItemComponent } from '../category-item';\n\n@Component({\n selector: 'cui-categories-list',\n imports: [CuiIconButtonModule, CuiSvgModule, forwardRef(() => CuiCategoryItemComponent)],\n standalone: true,\n templateUrl: './categories-list.component.html',\n styleUrl: './categories-list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCategoriesListComponent {\n public readonly stageStorages = input.required<TreeStruct[]>();\n public readonly context = input<CuiApiContext>();\n}\n","@for (stageStorage of stageStorages(); track stageStorage.id) {\n <cui-category-item\n [stageStorage]=\"stageStorage\"\n [context]=\"context()\"\n />\n}\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiApiContext, CuiTreeStructNavigatorApiService, TreeStruct, TreeStructType } from '@cuby-ui/api';\r\n\r\nimport { CuiCategoriesListComponent, CuiCreateCategoryItemComponent } from './components';\r\nimport {\r\n CuiEmptyStateComponent,\r\n CuiButtonModule,\r\n CuiDropdownDirective,\r\n CuiDropdownWrapperComponent\r\n} from '../../components';\r\nimport { CuiSelectedCategoryService } from './services';\r\n\r\n@Component({\r\n selector: 'cui-categories',\r\n imports: [\r\n CuiButtonModule,\r\n CuiLetDirective,\r\n CuiDropdownDirective,\r\n CuiDropdownWrapperComponent,\r\n CuiEmptyStateComponent,\r\n CuiCreateCategoryItemComponent,\r\n CuiCategoriesListComponent,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './categories.component.html',\r\n styleUrls: ['./categories.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly stageStorages = signal<CuiNullable<TreeStruct[]>>(null);\r\n protected readonly isCategoryCreating = signal(false);\r\n protected readonly isCategoryCreationLoading = signal(false);\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.treeStructType() && this.isCategoryCreating()) ||\r\n this.isCategoryCreationLoading()\r\n );\r\n\r\n protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\r\n\r\n public readonly treeStructType = input.required<TreeStructType>();\r\n public readonly buttonId = input<string>();\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n public readonly context = input<CuiApiContext>();\r\n\r\n constructor() {\r\n this.initSelectCategoryEffect();\r\n }\r\n\r\n protected onOpenStageStorages(): void {\r\n this.selectedCategoryService.clearCreatingId();\r\n this.selectedCategoryService.clearEditingId();\r\n\r\n if (this.stageStorages()?.length) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStorages(this.treeStructType(), this.context()).subscribe((stageStorage) => {\r\n this.stageStorages.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, stageStorage] : [stageStorage]\r\n );\r\n });\r\n }\r\n\r\n protected onStartCreatingNewCategory(): void {\r\n this.isCategoryCreating.set(true);\r\n this.selectedCategoryService.setCreatingId(this.treeStructType());\r\n }\r\n\r\n protected onCreateNewCategory(title: string): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n this.isCategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorage(title, this.treeStructType(), this.context())\r\n .pipe(finalize(this.isCategoryCreationLoading.set.bind(this, false)))\r\n .subscribe((stateStorage) => this.stageStorages.update((value) => [...(value || []), stateStorage]));\r\n }\r\n\r\n protected onCreatingCategoryCanceled(): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initSelectCategoryEffect(): void {\r\n effect(\r\n () => {\r\n this.selectedCategoryService.category();\r\n this.dropdown().close();\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n}\r\n","<button\r\n [attr.id]=\"buttonId()\"\r\n #dropdown=\"cuiDropdown\"\r\n [cuiDropdown]=\"dropdownContent\"\r\n orientation=\"stretch\"\r\n type=\"button\"\r\n class=\"target\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"onOpenStageStorages()\"\r\n>\r\n <ng-content />\r\n</button>\r\n\r\n<ng-template #dropdownContent>\r\n <cui-dropdown-wrapper\r\n *transloco=\"let t\"\r\n [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\r\n width=\"100%\"\r\n class=\"dropdown-wrapper\"\r\n >\r\n <ng-container *cuiLet=\"stageStorages() as stageStorages\">\r\n @if (stageStorages && stageStorages?.length) {\r\n <cui-categories-list\r\n [stageStorages]=\"stageStorages\"\r\n [context]=\"context()\"\r\n />\r\n }\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isCategoryCreationLoading()\"\r\n (created)=\"onCreateNewCategory($event)\"\r\n (canceled)=\"onCreatingCategoryCanceled()\"\r\n />\r\n } @else if (!stageStorages?.length) {\r\n <cui-empty-state\r\n class=\"empty\"\r\n [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\r\n />\r\n }\r\n </ng-container>\r\n <button\r\n ccDropdownFooterContent\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n (click)=\"onStartCreatingNewCategory()\"\r\n >\r\n {{ t('NEW_CATEGORY') }}\r\n </button>\r\n </cui-dropdown-wrapper>\r\n</ng-template>\r\n","import { Injectable, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\n\n@Injectable()\nexport class CuiCheckListBlockService {\n private readonly checkListItemsSignal =\n signal<CuiNullable<NodeCheckListItem<NodeCheckListItemContentType>[]>>(null);\n private readonly componentIdSignal = signal<CuiNullable<string>>(null);\n private readonly isDragAvailableSignal = signal<boolean>(false);\n\n public readonly checkListItems = this.checkListItemsSignal.asReadonly();\n public readonly componentId = this.componentIdSignal.asReadonly();\n public readonly isDragAvailable = this.isDragAvailableSignal.asReadonly();\n\n public setCheckListItems(checkListItems: NodeCheckListItem<NodeCheckListItemContentType>[]): void {\n this.checkListItemsSignal.set(checkListItems);\n }\n\n public addCheckListItem(checkListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\n this.checkListItemsSignal.update((value) => (value ? [...value, checkListItem] : [checkListItem]));\n }\n\n public updateCheckListItem(updatedCheckListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\n if (!this.checkListItemsSignal()) {\n return;\n }\n\n this.checkListItemsSignal.update((value) => {\n const updateCheckListItemIndex = value!.findIndex(\n (checkListItem) => checkListItem.id === updatedCheckListItem.id\n );\n\n value![updateCheckListItemIndex] = updatedCheckListItem;\n\n return [...value!];\n });\n }\n\n public deleteCheckListItem(id: string): void {\n if (!this.checkListItemsSignal()) {\n return;\n }\n\n this.checkListItemsSignal.update((value) => {\n const deletedItemIndex = value!.findIndex((checklistItem) => checklistItem.id === id);\n\n value!.splice(deletedItemIndex, 1);\n\n return [...value!];\n });\n }\n\n public setComponentId(id: string): void {\n this.componentIdSignal.set(id);\n }\n\n public toggleDragPermission(isDragButtonVisible: boolean): void {\n this.isDragAvailableSignal.set(isDragButtonVisible);\n }\n}\n","import type { OnInit } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { FormGroup } from '@angular/forms';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { NodeCheckListActionItemContent, NodeCheckListItemContentAction } from '@cuby-ui/api';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport {\n CuiCheckboxModule,\n CuiFormFieldModule,\n CuiLabelModule,\n CuiRadioModule,\n CuiSelectModule,\n CuiTextareaModule,\n CuiToggleModule\n} from '../../../../components';\nimport { CuiTextFieldControllerModule } from '../../../../directives';\n\n@Component({\n selector: 'cui-checklist-block-list-item-action-card',\n imports: [\n CuiCheckboxModule,\n CuiFormFieldModule,\n CuiLabelModule,\n CuiRadioModule,\n CuiSelectModule,\n CuiTextareaModule,\n CuiTextFieldControllerModule,\n CuiToggleModule,\n ReactiveFormsModule,\n TranslocoDirective\n ],\n standalone: true,\n templateUrl: './checklist-block-list-item-action-card.component.html',\n styleUrl: './checklist-block-list-item-action-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemActionCardComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n\n public actionForm!: FormGroup;\n\n public readonly purposeType = input<string>();\n public readonly isConsiderationNeeded = input<boolean>(false);\n public readonly actionInfo = input.required<NodeCheckListActionItemContent>();\n\n public readonly consideredCorrectChanged = output<string>();\n public readonly checkListActionChanged = output<NodeCheckListItemContentAction>();\n\n protected readonly _actionInfo = signal<CuiNullable<NodeCheckListActionItemContent>>(null);\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\n );\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\n );\n\n protected readonly isConsideredCorrectControl = this.nonNullableFormBuilder.control({\n value: false,\n disabled: false\n });\n\n protected get photoGroup(): FormGroup {\n return this.actionForm.get('photo') as FormGroup;\n }\n\n protected get commentGroup(): FormGroup {\n return this.actionForm.get('comment') as FormGroup;\n }\n\n constructor() {\n effect(\n () => {\n this._actionInfo.set(this.actionInfo());\n\n if (!this.purposeType() || !this.isConsiderationNeeded()) {\n return;\n }\n\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\n },\n { allowSignalWrites: true }\n );\n }\n\n public ngOnInit(): void {\n this.initActionForm();\n }\n\n private initActionForm(): void {\n this.actionForm = this.nonNullableFormBuilder.group({\n photo: this.nonNullableFormBuilder.group({\n isEnable: this.attachmentPhotoAction().isEnable,\n isRequired: {\n value: this.attachmentPhotoAction().isRequired,\n disabled: !this.attachmentPhotoAction().isEnable\n }\n }),\n comment: this.nonNullableFormBuilder.group({\n isEnable: this.textAreaAction().isEnable,\n isRequired: {\n value: this.textAreaAction().isRequired,\n disabled: !this.textAreaAction().isEnable\n }\n })\n });\n\n this.initActionFormSegmentsSubscriptions();\n\n if (!this.isConsiderationNeeded()) {\n return;\n }\n\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\n }\n\n private initActionFormSegmentsSubscriptions(): void {\n this.isConsideredCorrectControlSubscription();\n this.initPhotoGroupSubscription();\n this.initCommentGroupSubscription();\n }\n\n private isConsideredCorrectControlSubscription(): void {\n this.isConsideredCorrectControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.consideredCorrectChanged.emit(this._actionInfo()!.id));\n }\n\n private initPhotoGroupSubscription(): void {\n this.photoGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n if (!value.isEnable) {\n this.photoGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n this.photoGroup.get('isRequired')?.disable({ emitEvent: false });\n this.checkListActionChanged.emit({\n id: this.attachmentPhotoAction().id,\n ...this.photoGroup.getRawValue()\n });\n\n return;\n }\n\n this.photoGroup.get('isRequired')?.enable({ emitEvent: false });\n this.checkListActionChanged.emit({\n id: this.attachmentPhotoAction().id,\n ...this.photoGroup.value\n });\n });\n }\n\n private initCommentGroupSubscription(): void {\n this.commentGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\n if (!value.isEnable) {\n this.commentGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n this.commentGroup.get('isRequired')?.disable({ emitEvent: false });\n this.checkListActionChanged.emit({\n id: this.textAreaAction().id,\n ...this.commentGroup.getRawValue()\n });\n\n return;\n }\n\n this.commentGroup.get('isRequired')?.enable({ emitEvent: false });\n this.checkListActionChanged.emit({\n id: this.textAreaAction().id,\n ...this.commentGroup.value\n });\n });\n }\n}\n","<ng-container *transloco=\"let t\">\n <div\n class=\"card\"\n [formGroup]=\"actionForm\"\n >\n <div class=\"title-container\">\n <span class=\"title\">{{ actionInfo().title }}</span>\n @if (isConsiderationNeeded()) {\n <label\n cuiLabel\n class=\"title__input\"\n >\n <input\n cuiRadio\n type=\"radio\"\n [checked]=\"actionInfo().considerCorrect\"\n [formControl]=\"isConsideredCorrectControl\"\n [value]=\"true\"\n />\n {{ t('CONSIDER_CORRECT') }}\n </label>\n }\n </div>\n <div class=\"blocks\">\n <div\n class=\"block-card\"\n [formGroup]=\"photoGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('PHOTO') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n <div\n class=\"block-card\"\n [formGroup]=\"commentGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('COMMENT') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n </div>\n </div>\n</ng-container>\n","import { UpperCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport {\n CuiNodeChecklistApiService,\n NodeCheckListActionItemContent,\n NodeCheckListItem,\n NodeCheckListItemContentAction\n} from '@cuby-ui/api';\n\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\nimport { CuiCheckListBlockService } from '../../services';\n\n@Component({\n selector: 'cui-checklist-block-list-item-action-with-verification',\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\n standalone: true,\n templateUrl: './checklist-block-list-item-action-with-verification.component.html',\n styleUrl: './checklist-block-list-item-action-with-verification.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemActionWithVerificationComponent {\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n private checkListBlockService = inject(CuiCheckListBlockService);\n\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\n\n protected onConsiderCorrectChanged(actionId: string, purposeType: string): void {\n const requestData = {\n nodeCheckListId: this.checkListItem().id,\n assigneeActionType: purposeType,\n actionId\n };\n\n this.nodeCheckListApiService\n .updateNodeCheckListItemIsConsideredCorrect(requestData)\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n }\n\n protected onCheckListActionChanged(\n actionContent: NodeCheckListItemContentAction,\n actionId: string,\n purposeType: string\n ): void {\n const requestData = {\n nodeCheckListId: this.checkListItem().id,\n assigneeActionType: purposeType,\n actionId,\n contentId: actionContent.id,\n isEnable: actionContent.isEnable,\n isRequired: actionContent.isRequired\n };\n\n this.nodeCheckListApiService\n .updateNodeCheckListItemActionContent(requestData)\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n }\n}\n","<ng-container *transloco=\"let t\">\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\n <div class=\"action\">\n <div class=\"action__header action__assignee-header\">\n {{ t('CONDITIONAL_LOGIC_FOR_ASSIGNEE') | uppercase }}\n </div>\n <div class=\"action__content\">\n <div class=\"cards-container\">\n <cui-checklist-block-list-item-action-card\n [purposeType]=\"'ASSIGN'\"\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\n [isConsiderationNeeded]=\"true\"\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\n (checkListActionChanged)=\"\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id, 'ASSIGN')\n \"\n />\n <cui-checklist-block-list-item-action-card\n [purposeType]=\"'ASSIGN'\"\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\n [isConsiderationNeeded]=\"true\"\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\n (checkListActionChanged)=\"\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id, 'ASSIGN')\n \"\n />\n </div>\n </div>\n </div>\n <div class=\"action\">\n <div class=\"action__header action__approver-header\">\n {{ t('CONDITIONAL_LOGIC_FOR_APPROVER') | uppercase }}\n </div>\n <div class=\"action__content\">\n <div class=\"cards-container\">\n <cui-checklist-block-list-item-action-card\n [purposeType]=\"'APPROVE'\"\n [actionInfo]=\"checkListItemContent.actionsApprove![0]\"\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\n (checkListActionChanged)=\"\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![0].id, 'APPROVE')\n \"\n />\n <cui-checklist-block-list-item-action-card\n [purposeType]=\"'APPROVE'\"\n [actionInfo]=\"checkListItemContent.actionsApprove![1]\"\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\n (checkListActionChanged)=\"\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![1].id, 'APPROVE')\n \"\n />\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n","import { UpperCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport {\n CuiNodeChecklistApiService,\n NodeCheckListActionItemContent,\n NodeCheckListItem,\n NodeCheckListItemContentAction\n} from '@cuby-ui/api';\n\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\nimport { CuiCheckListBlockService } from '../../services';\n\n@Component({\n selector: 'cui-checklist-block-list-item-action-without-verification',\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\n standalone: true,\n templateUrl: './checklist-block-list-item-action-without-verification.component.html',\n styleUrl: './checklist-block-list-item-action-without-verification.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemActionWithoutVerificationComponent {\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n private checkListBlockService = inject(CuiCheckListBlockService);\n\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\n\n protected onCheckListActionChanged(actionContent: NodeCheckListItemContentAction, actionId: string): void {\n const requestData = {\n nodeCheckListId: this.checkListItem().id,\n assigneeActionType: 'ASSIGN',\n actionId,\n contentId: actionContent.id,\n isEnable: actionContent.isEnable,\n isRequired: actionContent.isRequired\n };\n\n this.nodeCheckListApiService\n .updateNodeCheckListItemActionContent(requestData)\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n }\n}\n","<ng-container *transloco=\"let t\">\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\n <div class=\"action\">\n <div class=\"action__header\">\n {{ t('CONDITIONAL_LOGIC') | uppercase }}\n </div>\n <div class=\"action__content\">\n <div class=\"cards-container\">\n <cui-checklist-block-list-item-action-card\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\n (checkListActionChanged)=\"\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id)\n \"\n />\n <cui-checklist-block-list-item-action-card\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\n (checkListActionChanged)=\"\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id)\n \"\n />\n </div>\n </div>\n </div>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport type { FormControl } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n CuiContextMenuModule,\n CuiFormFieldModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule\n} from '../../../../components';\nimport { CuiTextFieldControllerModule } from '../../../../directives';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiGeneralControlErrorHintComponent } from '../../../../widgets';\n\n@Component({\n selector: 'cui-checklist-block-title-control',\n imports: [\n CuiContextMenuModule,\n CuiFormFieldModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiTextFieldControllerModule,\n CuiGeneralControlErrorHintComponent,\n ReactiveFormsModule,\n TranslocoDirective\n ],\n standalone: true,\n templateUrl: './checklist-block-title-control.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiChecklistBlockTitleControlComponent {\n public readonly control = input.required<FormControl>();\n\n protected get isTitleError(): boolean {\n return this.control().invalid && this.control().dirty;\n }\n}\n","<ng-container *transloco=\"let t\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n for=\"title\"\n >\n {{ t('TITLE') }}\n </label>\n <cui-input-text\n [formControl]=\"control()\"\n cuiTextFieldId=\"title\"\n [cuiTextFieldIsError]=\"isTitleError\"\n cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\n />\n <cui-general-control-error-hint [control]=\"control()\" />\n </cui-form-field>\n</ng-container>\n","import { NgComponentOutlet } from '@angular/common';\nimport type { OnInit, Type } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NonNullableFormBuilder } from '@angular/forms';\nimport { CuiElementDirective, CuiLetDirective, CuiDragPointerDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport {\n CuiTreeStructApiService,\n CuiNodeChecklistApiService,\n NodeCheckListItem,\n NodeCheckListItemContentType\n} from '@cuby-ui/api';\n\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\nimport { CuiTooltip } from '../../../../directives';\nimport {\n CuiButtonModule,\n CuiContextMenuModule,\n CuiDialogService,\n CuiLabelModule,\n CuiSvgModule\n} from '../../../../components';\nimport { CuiCheckListBlockService } from '../../services/checklist-block.service';\nimport { CuiChecklistBlockTitleControlComponent } from '../checklist-block-title-control';\nimport { CuiNodeCheckListItemWithOption } from './checklist-block-list-item-container.options';\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../../../editor';\nimport { CuiDeleteModalComponent } from '../../../../widgets';\nimport { cuiCreateDefaultValidators } from '../../../../utils';\n\n@Component({\n selector: 'cui-checklist-block-list-item-container',\n imports: [\n CuiTooltip,\n CuiEditorBlockComponent,\n CuiChecklistBlockTitleControlComponent,\n CuiButtonModule,\n CuiContextMenuModule,\n CuiElementDirective,\n CuiLabelModule,\n CuiLetDirective,\n CuiSvgModule,\n NgComponentOutlet,\n TranslocoDirective,\n CuiDragPointerDirective\n ],\n standalone: true,\n templateUrl: './checklist-block-list-item-container.component.html',\n styleUrl: './checklist-block-list-item-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiChecklistBlockListItemContainerComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n private readonly translocoService = inject(TranslocoService);\n private readonly cuiDialogService = inject(CuiDialogService);\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n\n protected readonly DEFAULT_CONTROL_DELAY = 700;\n\n protected readonly isOpen = signal(false);\n\n public readonly checkListBlockItem = input.required<CuiCheckListBlockItem>();\n public readonly config = input.required<CuiEditorConfig>();\n public readonly index = input<number>(0);\n\n protected readonly componentId = this.checkListBlockService.componentId;\n protected readonly rotate = computed(() => `rotate(${this.isOpen() ? '0deg' : '-90deg'})`);\n protected readonly headerText = computed(() =>\n this.checkListItem().title ? this.checkListItem().title : this.translocoService.translate('UNTITLED')\n );\n protected readonly checkListItem = computed<NodeCheckListItem<NodeCheckListItemContentType>>(\n () => this.checkListBlockItem().content\n );\n protected readonly checkListItemComponent = computed<Type<unknown>>(() => this.checkListBlockItem().component);\n protected readonly checkListItemWithOptions = computed<\n CuiNodeCheckListItemWithOption<NodeCheckListItemContentType>\n >(() => ({\n ...this.checkListItem(),\n options: [\n {\n label: this.translocoService.translate('DUPLICATE'),\n icon: 'cuiIconCopy'\n },\n {\n label: this.translocoService.translate('DELETE'),\n icon: 'cuiIconTrash',\n color: 'var(--cui-danger)',\n command: this.openDeleteChecklistNodeModal.bind(this)\n }\n ]\n }));\n protected readonly headerBorderColor = computed(() => {\n const checkListItem = this.checkListItem();\n\n if (checkListItem.content.actionsApprove !== null) {\n return 'var(--cui-violet-bg)';\n }\n\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\n return 'var(--cui-cyan-bg)';\n }\n\n return null;\n });\n protected readonly iconChecklistType = computed(() => {\n const checkListItem = this.checkListItem();\n\n if (checkListItem.content.actionsApprove !== null) {\n return 'cuiIconUsersSm';\n }\n\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\n return 'cuiIconChecklist';\n }\n\n return 'cuiIconUserSm';\n });\n\n protected readonly titleControl = this.nonNullableFormBuilder.control(\n { value: '', disabled: true },\n cuiCreateDefaultValidators()\n );\n\n protected get isTitleEmpty(): boolean {\n return !this.titleControl.value;\n }\n\n protected get isTitleError(): boolean {\n return this.titleControl.invalid && this.titleControl.dirty;\n }\n\n public ngOnInit(): void {\n this.initControls();\n }\n\n protected onRowToggle(): void {\n this.isOpen.update((prev) => !prev);\n }\n\n protected onAllowDrag(): void {\n this.checkListBlockService.toggleDragPermission(true);\n }\n\n protected onProhibitDrag(): void {\n this.checkListBlockService.toggleDragPermission(false);\n }\n\n private initControls(): void {\n this.initTitleControlValue();\n this.initTitleControlSubscription();\n }\n\n private initTitleControlValue(): void {\n this.titleControl.enable();\n this.titleControl.setValue(this.checkListItem().title ? this.checkListItem().title : '');\n }\n\n private initTitleControlSubscription(): void {\n this.titleControl.valueChanges\n .pipe(debounceTime(this.DEFAULT_CONTROL_DELAY), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((titleValue) => {\n if (this.titleControl.invalid) {\n return;\n }\n\n this.nodeCheckListApiService\n .updateNodeCheckListItemTitle(this.checkListItem().id, titleValue)\n .subscribe(() => {\n this.checkListBlockService.updateCheckListItem({\n ...this.checkListItem(),\n title: titleValue\n });\n });\n });\n }\n\n private openDeleteChecklistNodeModal(): void {\n const content = ['THIS_ACTION_WILL_PERMANENTLY_DELETE_THE_ITEM_FROM_CHECKLIST'];\n\n this.cuiDialogService\n .open(CuiDeleteModalComponent, {\n data: {\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM_QUESTION',\n content,\n delete: () =>\n this.treeStructApiService.deleteTreeStructElement(this.componentId()!, this.checkListItem().id)\n }\n })\n .subscribe(\n (data) => data?.canceled || this.checkListBlockService.deleteCheckListItem(this.checkListItem().id)\n );\n }\n}\n","<ng-container *transloco=\"let t\">\n <ng-container *cuiLet=\"checkListItemWithOptions() as checkListItem\">\n <header\n class=\"header\"\n [style.border-left-color]=\"headerBorderColor()\"\n [class.header__opened]=\"isOpen()\"\n >\n <button\n class=\"icon-drag\"\n cuiButton\n cuiDragPointer\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n [icon]=\"'cuiIconDragHandleDots'\"\n (mouseenter)=\"onAllowDrag()\"\n (mouseleave)=\"onProhibitDrag()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n [style.transform]=\"rotate()\"\n icon=\"cuiIconCaretDownFillXxs\"\n (click)=\"onRowToggle()\"\n ></button>\n <cui-svg\n [icon]=\"iconChecklistType()\"\n color=\"var(--cui-base-500)\"\n />\n <div class=\"header__content\">\n <div class=\"header__numeration\">{{ index() }}.</div>\n <div class=\"header__text\">{{ headerText() }}</div>\n </div>\n @if (isTitleEmpty) {\n <cui-svg\n [cuiTooltip]=\"t('TITLE_IS_REQUIRED')\"\n icon=\"cuiIconAlertTriangle\"\n color=\"var(--cui-danger)\"\n class=\"icon\"\n />\n }\n <button\n #actionButton=\"elementRef\"\n cuiButton\n type=\"button\"\n cuiElement\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconMoreVertical\"\n class=\"list__context-menu-button\"\n ></button>\n <cui-context-menu\n [items]=\"checkListItem.options\"\n [target]=\"actionButton.nativeElement\"\n />\n </header>\n @if (isOpen()) {\n <div class=\"info\">\n <cui-checklist-block-title-control [control]=\"titleControl\" />\n <cui-editor-block\n [config]=\"config()\"\n [editorId]=\"checkListItem.textContainerId!\"\n [title]=\"titleControl.value\"\n />\n </div>\n <ng-container\n [ngComponentOutlet]=\"checkListItemComponent()\"\n [ngComponentOutletInputs]=\"{\n checkListItem: checkListItem\n }\"\n />\n }\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport type { FormArray, FormGroup } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport {\n CuiAlertService,\n CuiButtonModule,\n CuiIconButtonModule,\n CuiInputModule,\n CuiInputNumberModule,\n CuiSvgModule,\n CuiTextareaModule\n} from '../../../../components';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport type { CuiEvaluationCriteriaGroup } from '../checklist-block-list-item-evaluation';\n\nimport { CuiDragPointerDirective } from '@cuby-ui/cdk';\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\nimport type { CuiEvaluationCriteriaData } from './checklist-block-list-item-evaluation-criteria.options';\n\n@Component({\n selector: 'li[cuiChecklistBlockListItemEvaluationCriteria]',\n imports: [\n CuiButtonModule,\n CuiIconButtonModule,\n CuiInputModule,\n CuiLetDirective,\n CuiSvgModule,\n CuiTextareaModule,\n ReactiveFormsModule,\n TranslocoDirective,\n CuiInputNumberModule,\n CuiDragPointerDirective,\n CuiGeneralControlErrorHintComponent\n ],\n standalone: true,\n templateUrl: './checklist-block-list-item-evaluation-criteria.component.html',\n styleUrl: './checklist-block-list-item-evaluation-criteria.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemEvaluationCriteriaComponent {\n private readonly cuiAlertService = inject(CuiAlertService);\n private readonly translocoService = inject(TranslocoService);\n\n private readonly EVALUATION_ALREADY_EXIST = `EVALUATION_ALREADY_EXIST`;\n\n private previousData: CuiNullable<CuiEvaluationCriteriaData> = null;\n\n protected readonly isEditMode = signal(false);\n protected readonly isNew = computed(() => this.criteriaGroup().controls.isNew.value);\n protected readonly gap = computed(() => (this.isEditMode() ? 8 : 0));\n protected readonly isLoading = computed(() => this.loadingIds()[this.criteriaGroup().controls.id.value]);\n protected readonly isDragEnabled = computed(() => !this.isEditMode() && !this.isLoading());\n\n protected get isEvaluationInvalid(): boolean {\n return this.criteriaGroup().controls.evaluation.invalid && this.isEditMode();\n }\n\n protected get isCriteriaInvalid(): boolean {\n return this.criteriaGroup().controls.criteria.invalid && this.isEditMode();\n }\n\n public readonly loadingIds = input.required<Record<string, boolean>>();\n public readonly index = input.required<number>();\n public readonly criteriaGroup = input.required<FormGroup<CuiEvaluationCriteriaGroup>>();\n public readonly evaluationCriteriaFormArray = input.required<FormArray<FormGroup>>();\n\n public readonly saveClicked = output<CuiEvaluationCriteriaGroup>();\n public readonly deleteClicked = output<string>();\n public readonly cancelClicked = output();\n\n constructor() {\n this.initNewEvaluationCriteriaEffect();\n this.initEditModeEffect();\n }\n\n protected onSave(): void {\n if (this.criteriaGroup().invalid) {\n return;\n }\n\n const evaluation = `${this.criteriaGroup().controls.evaluation.value}`;\n\n if (this.checkIsEvaluationCriteriaExist(evaluation)) {\n this.cuiAlertService\n .open(this.translocoService.translate(this.EVALUATION_ALREADY_EXIST, { evaluation }), {\n status: 'error'\n })\n .subscribe();\n\n return;\n }\n\n this.isEditMode.update((prev) => !prev);\n this.saveClicked.emit(this.criteriaGroup().controls);\n }\n\n protected onDelete(): void {\n const id = this.criteriaGroup().controls.id.value;\n\n this.deleteClicked.emit(id);\n }\n\n protected onCancel(): void {\n if (this.isNew()) {\n this.cancelClicked.emit();\n }\n\n this.isEditMode.update((prev) => !prev);\n\n if (!this.previousData) {\n return;\n }\n\n this.criteriaGroup().setValue({\n ...this.criteriaGroup().getRawValue(),\n ...this.previousData\n });\n }\n\n protected onToggleEditMode(): void {\n const { criteria, evaluation } = this.criteriaGroup().getRawValue();\n\n this.previousData = { criteria, evaluation };\n this.isEditMode.update((prev) => !prev);\n }\n\n // TODO: Компонент должен был быть построен исключительно на реактивных формах\n private initEditModeEffect(): void {\n effect(() => this.criteriaGroup()[this.isEditMode() ? 'enable' : 'disable']());\n }\n\n private initNewEvaluationCriteriaEffect(): void {\n effect(() => this.isEditMode.set(this.isNew()), { allowSignalWrites: true });\n }\n\n private checkIsEvaluationCriteriaExist(evaluation: string): boolean {\n const controls = this.evaluationCriteriaFormArray().controls;\n\n return controls.some((control: FormGroup<CuiEvaluationCriteriaGroup>) => {\n if (control.controls.id.value === this.criteriaGroup().controls.id.value) {\n return false;\n }\n\n return `${control.get('evaluation')?.value}` === evaluation;\n });\n }\n}\n","<div *transloco=\"let t\">\n <form\n *cuiLet=\"criteriaGroup() as form\"\n [formGroup]=\"form\"\n [class.form_edit]=\"isEditMode()\"\n clas=\"form\"\n >\n <div class=\"content\">\n <span class=\"index\">{{ index() }}.</span>\n @if (!isEditMode()) {\n <cui-svg\n cuiDragPointer\n icon=\"cuiIconDragHandleDots\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n }\n <div\n style.gap=\"{{ gap() }}px\"\n class=\"wrapper\"\n >\n <cui-input-number\n formControlName=\"evaluation\"\n cuiTextFieldPlaceholder=\"0\"\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n [min]=\"1\"\n [max]=\"99\"\n class=\"input-number\"\n />\n <textarea\n cuiTextarea\n formControlName=\"criteria\"\n [rows]=\"1\"\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n class=\"textarea\"\n ></textarea>\n </div>\n @if (isEditMode()) {\n <button\n type=\"submit\"\n cuiIconButton\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"form.invalid\"\n class=\"button\"\n (click)=\"onSave()\"\n ></button>\n <button\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n class=\"button\"\n (click)=\"onCancel()\"\n ></button>\n } @else {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n [disabled]=\"isLoading()\"\n (click)=\"onToggleEditMode()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDelete()\"\n ></button>\n }\n </div>\n <cui-general-control-error-hint\n [control]=\"form.controls.criteria\"\n class=\"error-hint\"\n />\n </form>\n</div>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\nimport type { FormGroup } from '@angular/forms';\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { CuiNullable, CuiDragDropData, CuiDragDropDirective, CuiDragListDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize, of, Subject, switchMap, takeUntil } from 'rxjs';\nimport {\n CuiNodeChecklistApiService,\n NodeCheckListEvaluationCriteria,\n NodeCheckListEvaluationItemContent,\n NodeCheckListItem,\n NodeCheckListItemContentAction,\n NodeCheckListItemSwitchContentPointer,\n NodeCheckListItemSwitchContentRequestParams\n} from '@cuby-ui/api';\n\nimport { CuiCheckListBlockListItemEvaluationCriteriaComponent } from '../checklist-block-list-item-evaluation-criteria';\nimport {\n CuiButtonModule,\n CuiCheckboxModule,\n CuiContextMenuModule,\n CuiDialogService,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiTextareaModule,\n CuiToggleModule,\n CuiEmptyStateComponent\n} from '../../../../components';\nimport { CuiDeleteModalComponent } from '../../../../widgets';\nimport { CuiTextFieldControllerModule } from '../../../../directives';\nimport { cuiCreateDefaultValidators } from '../../../../utils';\n\nimport type {\n CuiEvaluationCriteriaElementData,\n CuiEvaluationCriteriaGroup\n} from './checklist-block-list-item-evaluation.options';\nimport { CuiCheckListBlockService } from '../../services';\n\n@Component({\n selector: 'cui-checklist-block-list-item-evaluation',\n imports: [\n CuiCheckListBlockListItemEvaluationCriteriaComponent,\n CuiButtonModule,\n CuiCheckboxModule,\n CuiContextMenuModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiTextareaModule,\n CuiTextFieldControllerModule,\n CuiToggleModule,\n CuiEmptyStateComponent,\n ReactiveFormsModule,\n TranslocoDirective,\n CuiDragDropDirective,\n CuiDragListDirective\n ],\n standalone: true,\n templateUrl: './checklist-block-list-item-evaluation.component.html',\n styleUrl: './checklist-block-list-item-evaluation.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckListBlockListItemEvaluationComponent implements OnInit {\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly cuiDialogService = inject(CuiDialogService);\n\n private readonly isAvailableObserver = new Subject<boolean>();\n\n protected readonly photoFormGroup = this.nonNullableFormBuilder.group({\n isEnable: false,\n isRequired: {\n value: false,\n disabled: true\n }\n });\n protected readonly commentFormGroup = this.nonNullableFormBuilder.group({\n isEnable: false,\n isRequired: {\n value: false,\n disabled: true\n }\n });\n protected readonly evaluationCriteriaFormArray = this.nonNullableFormBuilder.array<FormGroup>([]);\n\n protected readonly loadingIds = signal<Record<string, boolean>>({});\n protected readonly isAddButtonDisabled = signal(false);\n\n private readonly assignee = computed(() => this.checkListItem().content.actionsAssignee![0]);\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\n );\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\n );\n\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListEvaluationItemContent>>();\n\n protected getPointer(currentIndex: number): NodeCheckListItemSwitchContentPointer {\n return currentIndex === 0\n ? NodeCheckListItemSwitchContentPointer.BEFORE\n : NodeCheckListItemSwitchContentPointer.AFTER;\n }\n\n protected getTargetIndex(currentIndex: number): number {\n return currentIndex === 0 ? 1 : currentIndex - 1;\n }\n\n protected onDrop(event: CuiDragDropData): void {\n const { prevIndex, index } = event;\n\n if (prevIndex === index) {\n return;\n }\n\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, prevIndex, index);\n const movingElementId: string = this.evaluationCriteriaFormArray.at(index).value.id;\n const targetItemId: string = this.evaluationCriteriaFormArray.at(this.getTargetIndex(index)).value.id;\n const pointer: NodeCheckListItemSwitchContentPointer = this.getPointer(index);\n\n const requestBody: NodeCheckListItemSwitchContentRequestParams = {\n nodeCheckListId: this.checkListItem().id,\n listEvaluationId: this.assignee().id,\n movingElementId,\n targetItemId,\n pointer\n };\n\n this.nodeCheckListApiService.updateNodeCheckListItemSwitchContent(requestBody).subscribe({\n error: () => {\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, index, prevIndex);\n this.cdRef.markForCheck();\n }\n });\n }\n\n protected onAddEvaluationCriteriaItem(): void {\n const evaluationItemControl = this.createEvaluationFormGroup();\n\n this.isAddButtonDisabled.set(true);\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\n }\n\n protected onSaveEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\n const isNew = group.isNew.value;\n\n if (isNew) {\n this.addEvaluationCriteria(group);\n\n return;\n }\n\n this.updateEvaluationCriteria(group);\n }\n\n protected onCancelNewEvaluationCriteria(): void {\n const lastIndex = this.evaluationCriteriaFormArray.length - 1;\n\n this.isAddButtonDisabled.set(false);\n this.evaluationCriteriaFormArray.removeAt(lastIndex);\n }\n\n protected openModalDeleteEvaluationCriteria(id: string): void {\n const content = ['DELETE_EVALUATION_CHECKLIST_ITEM_CONFIRMATION_TEXT'];\n const criteria = this.findExistingEvaluationCriteria(id);\n\n if (!criteria?.id) {\n return;\n }\n\n this.loadingIds.update((ids) => ({ ...ids, [criteria.id]: true }));\n this.cuiDialogService\n .open(CuiDeleteModalComponent, {\n data: {\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM',\n content,\n delete: () =>\n this.nodeCheckListApiService\n .deleteEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria.id)\n .pipe(\n switchMap((checkListItem) => {\n const index = this.evaluationCriteriaFormArray.controls.findIndex(\n (control) => control.value.id === id\n );\n\n this.checkListBlockService.updateCheckListItem(checkListItem);\n this.evaluationCriteriaFormArray.removeAt(index);\n\n return of(null);\n })\n )\n }\n })\n .subscribe(() => this.completeEvaluationCriteriaDeletion(criteria));\n }\n\n protected completeEvaluationCriteriaDeletion(criteria: NodeCheckListEvaluationCriteria): void {\n this.loadingIds.update((ids) => {\n delete ids[criteria.id];\n\n return { ...ids };\n });\n }\n\n private onCheckListActionChanged(actionId: string, actionContent: NodeCheckListItemContentAction): void {\n const requestData = {\n nodeCheckListId: this.checkListItem().id,\n assigneeActionType: 'ASSIGN',\n actionId,\n contentId: actionContent.id,\n isEnable: actionContent.isEnable,\n isRequired: actionContent.isRequired\n };\n\n this.nodeCheckListApiService.updateNodeCheckListItemActionContent(requestData).subscribe((checkListItem) => {\n this.checkListBlockService.updateCheckListItem(checkListItem);\n });\n }\n\n public ngOnInit(): void {\n this.initEvaluationFormValues();\n }\n\n private initEvaluationFormValues(): void {\n this.evaluationCriteriaFormArray.clear();\n this.photoFormGroup.patchValue({\n isEnable: this.attachmentPhotoAction().isEnable,\n isRequired: this.attachmentPhotoAction().isRequired\n });\n this.commentFormGroup.patchValue({\n isEnable: this.textAreaAction().isEnable,\n isRequired: this.textAreaAction().isRequired\n });\n\n if (this.attachmentPhotoAction().isEnable) {\n this.photoFormGroup.controls.isRequired.enable();\n }\n\n if (this.textAreaAction().isEnable) {\n this.commentFormGroup.controls.isRequired.enable();\n }\n\n this.initActionFormSegmentsSubscriptions();\n\n this.assignee().acceptanceCriteriaEvaluations.forEach((evaluationCriteria: NodeCheckListEvaluationCriteria) => {\n const evaluationItemControl = this.createEvaluationFormGroup({\n isNew: false,\n criteria: evaluationCriteria.criteria,\n evaluation: evaluationCriteria.evaluation,\n id: evaluationCriteria.id\n });\n\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\n });\n }\n\n private initActionFormSegmentsSubscriptions(): void {\n this.initPhotoGroupSubscription();\n this.initCommentGroupSubscription();\n }\n\n private initPhotoGroupSubscription(): void {\n this.photoFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\n if (!value.isEnable) {\n this.photoFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n this.photoFormGroup.get('isRequired')?.disable({ emitEvent: false });\n this.onCheckListActionChanged(this.assignee().id, {\n id: this.attachmentPhotoAction().id,\n contentActionType: this.attachmentPhotoAction().contentActionType,\n ...this.photoFormGroup.getRawValue()\n });\n\n return;\n }\n\n this.photoFormGroup.get('isRequired')?.enable({ emitEvent: false });\n this.onCheckListActionChanged(this.assignee().id, {\n id: this.attachmentPhotoAction().id,\n contentActionType: this.attachmentPhotoAction().contentActionType,\n ...this.photoFormGroup.getRawValue()\n });\n });\n }\n\n private initCommentGroupSubscription(): void {\n this.commentFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\n if (!value.isEnable) {\n this.commentFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\n this.commentFormGroup.get('isRequired')?.disable({ emitEvent: false });\n this.onCheckListActionChanged(this.assignee().id, {\n id: this.textAreaAction().id,\n contentActionType: this.textAreaAction().contentActionType,\n ...this.commentFormGroup.getRawValue()\n });\n\n return;\n }\n\n this.commentFormGroup.get('isRequired')?.enable({ emitEvent: false });\n this.onCheckListActionChanged(this.assignee().id, {\n id: this.textAreaAction().id,\n contentActionType: this.textAreaAction().contentActionType,\n ...this.commentFormGroup.getRawValue()\n });\n });\n }\n\n private updateEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\n const evaluation = group.evaluation.value;\n const criteria = group.criteria.value;\n const id = group.id.value;\n\n this.nodeCheckListApiService\n .updateEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, id, criteria, evaluation)\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\n }\n\n private addEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\n const evaluation = group.evaluation.value;\n const criteria = group.criteria.value;\n\n this.nodeCheckListApiService\n .addEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria, evaluation)\n .pipe(finalize(() => this.isAddButtonDisabled.set(false)))\n .subscribe((checkListItem) => this.updateCreatedEvaluationCriteria(checkListItem));\n }\n\n private updateCreatedEvaluationCriteria(\n checkListItem: NodeCheckListItem<NodeCheckListEvaluationItemContent>\n ): void {\n const acceptanceCriteriaEvaluations = checkListItem.content.actionsAssignee![0].acceptanceCriteriaEvaluations;\n const id = acceptanceCriteriaEvaluations.at(-1)?.id;\n const control = this.evaluationCriteriaFormArray.controls.at(-1)?.getRawValue();\n const createdControl = this.createEvaluationFormGroup({ ...control, id, isNew: false });\n\n this.evaluationCriteriaFormArray.removeAt(-1);\n this.evaluationCriteriaFormArray.push(createdControl);\n this.checkListBlockService.updateCheckListItem(checkListItem);\n }\n\n private createEvaluationFormGroup({\n id,\n criteria = '',\n evaluation = null,\n isNew = true\n }: CuiEvaluationCriteriaElementData = {}): FormGroup {\n return this.nonNullableFormBuilder.group({\n id: [id],\n criteria: [criteria, cuiCreateDefaultValidators({ maxLength: 500 })],\n evaluation: [evaluation, [Validators.required]],\n isNew: [isNew]\n });\n }\n\n private findExistingEvaluationCriteria(id: string): CuiNullable<NodeCheckListEvaluationCriteria> {\n return (\n this.assignee().acceptanceCriteriaEvaluations.find(\n (evaluationCriteria: NodeCheckListEvaluationCriteria) => evaluationCriteria.id === id\n ) || null\n );\n }\n\n private moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\n if (fromIndex === toIndex) {\n return;\n }\n\n const item = array[fromIndex];\n\n array.splice(fromIndex, 1);\n array.splice(toIndex, 0, item);\n }\n}\n","<ng-container *transloco=\"let t\">\n <div class=\"action\">\n <div class=\"action__inputs-container\">\n <div\n class=\"action__input\"\n [formGroup]=\"photoFormGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('PHOTO') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n <div\n class=\"action__input\"\n [formGroup]=\"commentFormGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('COMMENT') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n </div>\n <div class=\"action__criteria-title-container\">\n <label\n cuiLabel\n [isRequired]=\"true\"\n for=\"evaluationCriteria\"\n >\n {{ t('EVALUATION_CRITERIA') }}\n </label>\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\n </div>\n <ul\n cuiDragList\n class=\"list\"\n >\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\n <li\n cuiChecklistBlockListItemEvaluationCriteria\n [index]=\"index + 1\"\n cuiDragDrop\n [disabled]=\"isAddButtonDisabled()\"\n (elementDragged)=\"onDrop($event)\"\n [criteriaGroup]=\"control\"\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\n [loadingIds]=\"loadingIds()\"\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\n ></li>\n } @empty {\n <li\n cuiEmptyState\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\n ></li>\n }\n </ul>\n <div class=\"action__footer\">\n <button\n cuiButton\n size=\"xxs\"\n appearance=\"flat\"\n icon=\"cuiIconPlus\"\n type=\"button\"\n [disabled]=\"isAddButtonDisabled()\"\n (click)=\"onAddEvaluationCriteriaItem()\"\n >\n {{ t('NEW_OPTION') }}\n </button>\n </div>\n </div>\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { Type } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport { CuiTreeStructApiService, CuiTreeStructNavigatorApiService, MovingType } from '@cuby-ui/api';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize, switchMap } from 'rxjs';\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\nimport { CuiDragDropData, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule, CuiContextMenuModule, CuiEmptyStateComponent } from '../../../../components';\nimport { CuiEditorConfig } from '../../../../editor';\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\nimport { CuiCheckListBlockService } from '../../services';\nimport { CuiCheckListBlockListItemActionWithVerificationComponent } from '../checklist-block-list-item-action-with-verification';\nimport { CuiCheckListBlockListItemActionWithoutVerificationComponent } from '../checklist-block-list-item-action-without-verification';\nimport { CuiChecklistBlockListItemContainerComponent } from '../checklist-block-list-item-container';\nimport { CuiCheckListBlockListItemEvaluationComponent } from '../checklist-block-list-item-evaluation';\n\n@Component({\n selector: 'cui-checklist-block-list',\n imports: [\n CuiChecklistBlockListItemContainerComponent,\n CuiButtonModule,\n CuiContextMenuModule,\n CuiLetDirective,\n CuiEmptyStateComponent,\n NgTemplateOutlet,\n TranslocoDirective,\n CuiDragDropDirective,\n CuiHandleScrollDirective,\n CuiDragListDirective\n ],\n standalone: true,\n templateUrl: './checklist-block-list.component.html',\n styleUrl: './checklist-block-list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiChecklistBlockListComponent {\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\n\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\n protected readonly isDragAvailable = this.checkListBlockService.isDragAvailable;\n protected readonly checkListItemActionWithVerification = CuiCheckListBlockListItemActionWithVerificationComponent;\n protected readonly checkListItemActionWithoutVerification =\n CuiCheckListBlockListItemActionWithoutVerificationComponent;\n protected readonly checkListItemEvaluation = CuiCheckListBlockListItemEvaluationComponent;\n\n protected readonly componentId = this.checkListBlockService.componentId;\n protected readonly isLoading = signal<boolean>(false);\n protected readonly isDragEnabled = computed(() => !this.isLoading() && this.isDragAvailable());\n protected readonly checkListItemsWithComponents = computed<CuiCheckListBlockItem[]>(() => {\n if (!this.checkListItems()) {\n return [];\n }\n\n return this.checkListItems()!.map((element) => ({\n id: element.id,\n content: element,\n component: this.getNodeCheckListItemComponent(element)\n }));\n });\n\n public readonly config = input.required<CuiEditorConfig>();\n\n protected moveTreeStruct(data: CuiDragDropData, element: CuiCheckListBlockItem): void {\n const { targetElement, pointer, index, prevIndex } = data;\n\n if (prevIndex === index) {\n return;\n }\n\n this.isLoading.set(true);\n this.treeStructNavigatorApiService\n .moveElement({\n type: MovingType.TARGET_NODE,\n targetItemId: targetElement.dataset['id']!,\n treeStructTargetItemId: targetElement.dataset['parentId']!,\n pointer,\n movableItemId: element.id,\n treeStructMovableItemId: this.componentId()!\n })\n .pipe(\n switchMap(() =>\n this.treeStructApiService.getById<NodeCheckListItem<NodeCheckListItemContentType>>(\n this.componentId()!\n )\n ),\n finalize(() => this.isLoading.set(false))\n )\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\n }\n\n private getNodeCheckListItemComponent(item: NodeCheckListItem<NodeCheckListItemContentType>): Type<unknown> {\n if (item.content.actionsApprove !== null) {\n return this.checkListItemActionWithVerification;\n }\n\n if ('acceptanceCriteriaEvaluations' in item.content.actionsAssignee![0]) {\n return this.checkListItemEvaluation;\n }\n\n return this.checkListItemActionWithoutVerification;\n }\n}\n","<ng-container *transloco=\"let t\">\n <ng-container *cuiLet=\"checkListItemsWithComponents() as checkListItemsWithComponents\">\n @if (checkListItemsWithComponents?.length) {\n <ul\n class=\"list__items\"\n #list\n cuiDragList\n >\n <ng-container *ngTemplateOutlet=\"items; context: { $implicit: checkListItemsWithComponents }\" />\n <ng-template\n #items\n let-items\n let-isHidden=\"isHidden\"\n >\n @for (item of items; track item.id; let index = $index) {\n <li\n [attr.data-id]=\"item.content.id\"\n [attr.data-parent-id]=\"componentId()\"\n [hidden]=\"isHidden\"\n cuiHandleScroll\n cuiDragDrop\n class=\"list__item\"\n [class.list__item_disabled]=\"isLoading()\"\n (elementDragged)=\"moveTreeStruct($event, item)\"\n >\n <cui-checklist-block-list-item-container\n [checkListBlockItem]=\"item\"\n [index]=\"index + 1\"\n [config]=\"config()\"\n />\n </li>\n }\n </ng-template>\n </ul>\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_CHECKLIST_ITEMS')\" />\n }\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CuiElementDirective, CuiLetDirective } from '@cuby-ui/cdk';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\nimport {} from '@cuby-ui/api';\nimport {\n CuiNodeChecklistApiService,\n CuiTreeStructApiService,\n NodeCheckListItem,\n NodeCheckListItemContentType\n} from '@cuby-ui/api';\n\nimport { CuiButtonModule, CuiContextMenuModule, CuiContentWrapperComponent } from '../../components';\nimport { CuiCheckListBlockItemType } from './checklist-block.options';\nimport { CuiChecklistBlockListComponent } from './components';\nimport { CuiCheckListBlockService } from './services';\nimport { CuiContextMenuItem } from '../../interfaces';\nimport { CuiEditorConfig } from '../../editor/interfaces';\n\n@Component({\n selector: 'cui-checklist-block, [cuiCheckListBlock]',\n imports: [\n CuiChecklistBlockListComponent,\n CuiContentWrapperComponent,\n CuiButtonModule,\n CuiContextMenuModule,\n CuiElementDirective,\n CuiLetDirective,\n TranslocoDirective\n ],\n standalone: true,\n templateUrl: './checklist-block.component.html',\n styleUrls: ['./checklist-block.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiCheckListBlockService]\n})\nexport class CuiChecklistBlockComponent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\n private readonly translocoService = inject(TranslocoService);\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\n\n protected readonly CHECKLIST_BLOCK_SELECT_OPTIONS: CuiContextMenuItem[] = [\n {\n label: this.translocoService.translate('ASSIGNEE_APPROVAL'),\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITHOUT_VERIFICATION)\n },\n {\n label: this.translocoService.translate('DOUBLE_CHECK_APPROVAL'),\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITH_VERIFICATION)\n },\n {\n label: this.translocoService.translate('EVALUATION_OPTIONS'),\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.EVALUATION)\n }\n ];\n\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\n protected readonly isLoading = signal<boolean>(false);\n\n public readonly componentId = input.required<string>();\n public readonly config = input.required<CuiEditorConfig>();\n\n constructor() {\n this.initNodeCheckListBlock();\n }\n\n private initNodeCheckListBlock(): void {\n effect(\n () => {\n this.checkListBlockService.setComponentId(this.componentId());\n this.treeStructApiService\n .getById<NodeCheckListItem<NodeCheckListItemContentType>>(this.componentId())\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\n },\n { allowSignalWrites: true }\n );\n }\n\n private addCheckListItem(type: CuiCheckListBlockItemType): void {\n this.isLoading.set(true);\n this.nodeCheckListApiService\n .addNodeCheckListItem({\n treeStructContainerCheckListId: this.componentId(),\n title: 'New checklist item',\n type_operations: type\n })\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.isLoading.set(false))\n )\n .subscribe((checkListItem) => this.checkListBlockService.addCheckListItem(checkListItem));\n }\n}\n","<cui-content-wrapper\n *transloco=\"let t\"\n backgroundColor=\"var(--cui-base-10)\"\n [gap]=\"16\"\n>\n <ng-container *cuiLet=\"checkListItems() as checkListItems\">\n <header class=\"header\">\n <h2 class=\"heading\">{{ t('CHECKLIST') }}</h2>\n\n @if (checkListItems) {\n <span class=\"item\">{{ checkListItems?.length }} {{ t('ITEM_VARIANT') }}</span>\n }\n </header>\n <cui-content-wrapper>\n <cui-checklist-block-list [config]=\"config()\" />\n </cui-content-wrapper>\n <div>\n <button\n #actionButton=\"elementRef\"\n cuiElement\n cuiButton\n type=\"button\"\n appearance=\"flat\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n >\n {{ t('ADD_NEW_ITEM') }}\n </button>\n <cui-context-menu\n [items]=\"CHECKLIST_BLOCK_SELECT_OPTIONS\"\n [target]=\"actionButton.nativeElement\"\n />\n </div>\n </ng-container>\n</cui-content-wrapper>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport type { CuiImgUrl } from '../../interfaces';\n\n@Component({\n selector: 'cui-utility-readonly-thumbnail',\n imports: [],\n standalone: true,\n templateUrl: 'utility-readonly-thumbnail.component.html',\n styleUrl: 'utility-readonly-thumbnail.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUtilityReadonlyThumbnailComponent {\n public readonly thumbnailUrl = input.required<CuiImgUrl>();\n public readonly isVideo = input(false);\n}\n","@let url = thumbnailUrl();\n\n@if (url?.src; as src) {\n @if (isVideo()) {\n <video\n class=\"thumbnail\"\n [src]=\"src\"\n controls\n ></video>\n } @else {\n <img\n class=\"thumbnail\"\n [src]=\"src\"\n [alt]=\"url?.name\"\n />\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { Subscription } from 'rxjs';\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService, FragmentType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport type { CuiImgUrl } from '../../interfaces';\nimport { CuiEditorComponent } from '../../editor';\nimport type { CuiTools, CuiEditorConfig } from '../../editor';\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\nimport { CuiEmptyStateComponent } from '../../components';\n\n@Component({\n selector: 'cui-instruction-readonly-info',\n imports: [CuiEditorComponent, CuiEmptyStateComponent, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\n standalone: true,\n templateUrl: './instruction-readonly-info.component.html',\n styleUrl: './instruction-readonly-info.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiInstructionReadonlyInfoComponent {\n private readonly hostElement = inject(ElementRef).nativeElement;\n private readonly frameApiService = inject(CuiFrameApiService);\n\n private subscription!: Subscription;\n\n protected isVideo = false;\n protected editorConfig!: CuiEditorConfig;\n\n protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\n protected readonly thumbnailUrl = signal<CuiNullable<CuiImgUrl>>(null);\n protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\n\n public readonly framerId = input.required<string>();\n public readonly element = input<HTMLElement>(this.hostElement);\n public readonly tools = input.required<CuiTools>();\n public readonly editorResourceUrl = input.required<string>();\n\n constructor() {\n this.initConfigEffect();\n this.initFramerIdEffect();\n }\n\n private initConfigEffect(): void {\n effect(() => {\n this.editorConfig = { readOnly: true, tools: this.tools(), element: this.element() };\n });\n }\n\n private initFramerIdEffect(): void {\n effect(() => {\n const framerId = this.framerId();\n\n if (!framerId) {\n return;\n }\n\n this.subscription?.unsubscribe();\n this.initFrameFragments();\n });\n }\n\n private initFrameFragments(): void {\n const frameId = this.framerId();\n\n this.jText.set(null);\n this.thumbnailUrl.set(null);\n\n if (!frameId) {\n return;\n }\n\n const fragmentActions = {\n [FragmentType.jText]: (fragment: Fragment): void => {\n this.jText.set(fragment as JTextFragment);\n },\n [FragmentType.resourceFile]: (fragment: Fragment): void => {\n this.setResourceFile(fragment as ResourceFragment);\n }\n };\n\n this.subscription = this.frameApiService.getFrame(frameId).subscribe((frame) => {\n frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\n });\n }\n\n private setResourceFile(resource: ResourceFragment): void {\n const url = `${this.editorResourceUrl()}${resource.fileId}`;\n\n this.isVideo = resource?.name?.split('.').pop() === 'mp4';\n\n if (!url) {\n return;\n }\n\n this.thumbnailUrl.set({ src: resource.fileId && url, name: resource.name || resource.type });\n }\n}\n","<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl(); as thumbnailUrl) {\n <cui-utility-readonly-thumbnail\n [thumbnailUrl]=\"thumbnailUrl\"\n [isVideo]=\"isVideo\"\n />\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { Subscription } from 'rxjs';\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService, FragmentType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport type { CuiImgUrl } from '../../interfaces';\nimport { CuiEditorComponent } from '../../editor';\nimport type { CuiTools, CuiEditorConfig } from '../../editor';\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\nimport { CuiEmptyStateComponent } from '../../components';\n\n@Component({\n selector: 'cui-criterion-readonly-info',\n imports: [CuiEditorComponent, CuiEmptyStateComponent, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\n standalone: true,\n templateUrl: './criterion-readonly-info.component.html',\n styleUrl: './criterion-readonly-info.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCriterionReadonlyInfoComponent {\n private readonly hostElement = inject(ElementRef).nativeElement;\n private readonly frameApiService = inject(CuiFrameApiService);\n\n private subscription!: Subscription;\n\n protected isVideo = false;\n protected editorConfig!: CuiEditorConfig;\n\n protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\n protected readonly thumbnailUrl = signal<CuiNullable<CuiImgUrl>>(null);\n protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\n\n public readonly framerId = input.required<string>();\n public readonly element = input<HTMLElement>(this.hostElement);\n public readonly tools = input.required<CuiTools>();\n public readonly editorResourceUrl = input.required<string>();\n\n constructor() {\n this.initConfigEffect();\n this.initFramerIdEffect();\n }\n\n private initConfigEffect(): void {\n effect(() => {\n this.editorConfig = { readOnly: true, tools: this.tools(), element: this.element() };\n });\n }\n\n private initFramerIdEffect(): void {\n effect(() => {\n const framerId = this.framerId();\n\n if (!framerId) {\n return;\n }\n\n this.subscription?.unsubscribe();\n this.initFrameFragments();\n });\n }\n\n private initFrameFragments(): void {\n const frameId = this.framerId();\n\n this.jText.set(null);\n this.thumbnailUrl.set(null);\n\n if (!frameId) {\n return;\n }\n\n const fragmentActions = {\n [FragmentType.jText]: (fragment: Fragment): void => {\n this.jText.set(fragment as JTextFragment);\n },\n [FragmentType.resourceFile]: (fragment: Fragment): void => {\n this.setResourceFile(fragment as ResourceFragment);\n }\n };\n\n this.subscription = this.frameApiService.getFrame(frameId).subscribe((frame) => {\n frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\n });\n }\n\n private setResourceFile(resource: ResourceFragment): void {\n const url = `${this.editorResourceUrl()}${resource.fileId}`;\n\n this.isVideo = resource?.name?.split('.').pop() === 'mp4';\n\n if (!url) {\n return;\n }\n\n this.thumbnailUrl.set({ src: resource.fileId && url, name: resource.name || resource.type });\n }\n}\n","<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl(); as thumbnailUrl) {\n <cui-utility-readonly-thumbnail\n [thumbnailUrl]=\"thumbnailUrl\"\n [isVideo]=\"isVideo\"\n />\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport type { ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { FilesUploader, takeCaptureFromVideo } from '@cuby-ui/cdk';\n\nimport { CuiAlertService } from '../../components';\n\n@Component({\n selector: 'cui-utility-thumbnail',\n imports: [TranslocoDirective],\n standalone: true,\n templateUrl: 'utility-thumbnail.component.html',\n styleUrl: 'utility-thumbnail.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUtilityThumbnailComponent {\n private readonly cuiAlertService = inject(CuiAlertService);\n private readonly translocoService = inject(TranslocoService);\n private readonly frameApiService = inject(CuiFrameApiService);\n\n protected readonly MAX_FILE_SIZE = 20971520;\n\n protected readonly thumbnailUrl = computed(() => {\n const thumbnail = this.thumbnail();\n\n if (thumbnail?.resource) {\n return thumbnail.resource;\n }\n\n return this.baseResourceUrl() + thumbnail!.fileId!;\n });\n protected readonly uploadButtonName = computed(() => {\n const thumbnail = this.thumbnail();\n\n if (thumbnail?.name) {\n return this.translocoService.translate('REPLACE_FILE');\n }\n\n return this.translocoService.translate('UPLOAD_FILE');\n });\n\n public readonly thumbnail = model.required<CuiNullable<ResourceFragment>>();\n public readonly framerId = input.required<string>();\n public readonly baseResourceUrl = input.required<string>();\n\n protected onSelectFile(): void {\n const types = 'image/jpg, image/jpeg, image/png, video/mp4';\n\n FilesUploader.uploadFile(types).then((files) => this.getFile(files));\n }\n\n protected onRemoveThumbnail(): void {\n const frameId = this.framerId();\n const fragmentId = this.thumbnail()?.id;\n\n if (!frameId || !fragmentId) {\n return;\n }\n\n this.frameApiService.deleteResource(frameId, fragmentId).subscribe(() => {\n this.thumbnail.update((prev) => ({ ...prev!, fileId: null, name: null, resource: null }));\n });\n }\n\n private getFile(files: FileList): void {\n const file = files.item(0);\n\n if (!file) {\n return;\n }\n\n if (file.size > this.MAX_FILE_SIZE) {\n this.cuiAlertService\n .open(this.translocoService.translate('INVALID_FILE_SIZE'), {\n status: 'error'\n })\n .subscribe();\n\n return;\n }\n\n const isVideo = file.name.split('.').at(-1) === 'mp4';\n const url = URL.createObjectURL(file);\n\n if (isVideo) {\n this.getCaptureFromVideo(url, file);\n } else {\n this.thumbnail.update((prev) => ({ ...prev!, name: file.name, resource: url }));\n }\n\n this.uploadFile(file);\n }\n\n private uploadFile(file: File): void {\n const frameId = this.framerId();\n const fragmentId = this.thumbnail()?.id;\n\n if (!frameId || !fragmentId) {\n return;\n }\n\n const formData = new FormData();\n formData.append('resource', file);\n\n this.frameApiService.uploadResource(formData, frameId, fragmentId).subscribe();\n }\n\n private getCaptureFromVideo(url: string, file?: File): void {\n takeCaptureFromVideo(url).then((capture) => {\n this.thumbnail.update((prev) => ({\n ...prev!,\n name: (file?.name || prev?.name)!,\n resource: capture\n }));\n });\n }\n}\n","<section\n *transloco=\"let t\"\n class=\"file\"\n>\n <span class=\"title\">{{ t('THUMBNAIL') }}</span>\n <div class=\"upload\">\n <div class=\"upload-file\">\n @if (thumbnail()?.name; as fileId) {\n <div class=\"image\">\n <span class=\"image__name\">{{ thumbnail()?.name }}</span>\n <!-- TODO: ngSrc -->\n <img\n class=\"image__view\"\n [src]=\"thumbnailUrl()\"\n height=\"120\"\n width=\"184\"\n alt=\"Thumbnail\"\n />\n </div>\n }\n <div class=\"info\">\n <button\n type=\"button\"\n cuiButton\n appearance=\"outlined-gray\"\n size=\"xxs\"\n icon=\"cuiIconUpload\"\n (click)=\"onSelectFile()\"\n >\n {{ uploadButtonName() }}\n </button>\n @if (thumbnail()?.name) {\n <button\n class=\"remove-button\"\n cuiButton\n appearance=\"link\"\n size=\"sm\"\n type=\"button\"\n (click)=\"onRemoveThumbnail()\"\n >\n {{ t('REMOVE') }}\n </button>\n }\n\n <span class=\"accepted\">{{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB</span>\n </div>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\nimport type { ResourceFragment } from '@cuby-ui/api';\nimport { CuiFrameApiService, FragmentType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';\n\nimport {\n CuiAccordionModule,\n CuiButtonModule,\n CuiFormFieldModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule\n} from '../../components';\nimport { cuiCreateDefaultValidators } from '../../utils';\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\nimport type { CuiEditorConfig } from '../../editor';\nimport { CuiEditorBlockComponent } from '../../editor';\nimport { CuiUtilityThumbnailComponent } from '../utility-thumbnail';\n\nimport type { CuiCriterionFormGroup, CuiCriterionFormValues } from './criterion-info-form.options';\n\n@Component({\n selector: 'cui-criterion-info-form',\n imports: [\n CuiAccordionModule,\n CuiButtonModule,\n CuiEditorBlockComponent,\n CuiFormFieldModule,\n CuiGeneralControlErrorHintComponent,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiUtilityThumbnailComponent,\n ReactiveFormsModule,\n TranslocoDirective\n ],\n standalone: true,\n templateUrl: './criterion-info-form.component.html',\n styleUrl: './criterion-info-form.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCriterionInfoFormComponent {\n private readonly destroy = inject(DestroyRef);\n private readonly formBuilder = inject(NonNullableFormBuilder);\n private readonly frameApiService = inject(CuiFrameApiService);\n private readonly cuiIdService = inject(CuiIdService);\n\n protected readonly CONTROL_DELAY = 500;\n\n protected readonly titleId = this.cuiIdService.generate();\n protected readonly form = this.formBuilder.group<CuiCriterionFormGroup>({\n title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\n });\n\n protected heading: CuiNullable<string> = null;\n\n protected readonly isDescriptionEmpty = signal(false);\n protected readonly editorId = signal<CuiNullable<string>>(null);\n protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\n\n public readonly title = input.required<string>();\n public readonly framerId = input.required<string>();\n public readonly baseResourceUrl = input.required<string>();\n public readonly config = input.required<CuiEditorConfig>();\n\n public readonly formChanged = output<Partial<CuiCriterionFormValues>>();\n public readonly isFormValidChanged = output<boolean>();\n\n protected get controls(): CuiCriterionFormGroup {\n return this.form.controls;\n }\n\n protected get isTitleError(): boolean {\n return this.controls.title.invalid && this.controls.title.dirty;\n }\n\n constructor() {\n this.initUtilityEffect();\n }\n\n protected onEditorEmpty(isEmpty: boolean): void {\n this.isDescriptionEmpty.set(isEmpty);\n this.isFormValidChanged.emit(this.checkFormValidation());\n }\n\n private initUtilityEffect(): void {\n const effectRef = effect(() => {\n const title = this.title();\n\n if (!title) {\n return;\n }\n\n this.initFormSubscriptions();\n this.initFrameFragments();\n effectRef.destroy();\n });\n }\n\n private initFormSubscriptions(): void {\n this.form.setValue({ title: this.title() }, { emitEvent: false });\n\n this.form.statusChanges\n .pipe(takeUntilDestroyed(this.destroy))\n .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\n\n this.form.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroy),\n startWith(this.form.value),\n pairwise(),\n debounceTime(this.CONTROL_DELAY),\n map(([prev, current]) => this.compareFormValues([prev, current]))\n )\n .subscribe((value) => {\n if (!Object.keys(value).length) {\n return;\n }\n\n this.formChanged.emit(value);\n });\n }\n\n private initFrameFragments(): void {\n const frameId = this.framerId();\n\n if (!frameId) {\n return;\n }\n\n this.frameApiService.getFrame(frameId).subscribe((frame) => {\n frame.fragments.forEach((fragment) => {\n if (fragment.type === FragmentType.jText) {\n this.editorId.set(fragment?.id);\n }\n\n if (fragment.type === FragmentType.resourceFile) {\n this.setResourceFile(fragment as ResourceFragment);\n }\n });\n });\n }\n\n private compareFormValues([\n prevGroup,\n currentGroup\n ]: Partial<CuiCriterionFormValues>[]): Partial<CuiCriterionFormValues> {\n const keys = Object.keys(currentGroup) as (keyof CuiCriterionFormValues)[];\n const changedFields: Record<string, unknown> = {};\n\n keys.forEach((key) => {\n const prev = prevGroup[key];\n const current = currentGroup[key];\n\n if (prev === current || this.controls[key].invalid) {\n return;\n }\n\n changedFields[key] = current;\n });\n\n return changedFields;\n }\n\n private setResourceFile(resource: ResourceFragment): void {\n const url = this.baseResourceUrl() + resource.fileId!;\n\n this.thumbnail.set(resource);\n\n if (!url || resource?.name?.split('.').pop() !== 'mp4') {\n return;\n }\n\n this.getCaptureFromVideo(url);\n }\n\n private getCaptureFromVideo(url: string, file?: File): void {\n takeCaptureFromVideo(url).then((capture) => {\n this.thumbnail.update((prev) => ({\n ...prev!,\n name: (file?.name ?? prev?.name)!,\n resource: capture\n }));\n });\n }\n\n private checkFormValidation(): boolean {\n return !this.isDescriptionEmpty() && !this.form.invalid;\n }\n}\n","<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-utility-thumbnail\n [baseResourceUrl]=\"baseResourceUrl()\"\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport type { Instruction, StorageObject, Criterion } from '@cuby-ui/api';\n\nexport const UTILITY_MODAL_SERVICE_TOKEN = new InjectionToken<UtilityModalService<UtilityElement>>(\n 'UTILITY_MODAL_SERVICE_TOKEN'\n);\n\nexport interface UtilityModalService<T extends UtilityElement> {\n createUtility(id: string): Observable<StorageObject<T>>;\n changeTitle(utilityId: string, title: string): Observable<void>;\n changeDescription?(utilityId: string, shortDescription: string): Observable<void>;\n unbindUtility(id: string): Observable<StorageObject<T>>;\n deleteUtility(utility: StorageObject<T>): Observable<void>;\n}\n\nexport type UtilityElement = Instruction | Criterion;\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { StorageObject } from '@cuby-ui/api';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\n\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../components';\nimport { CuiLoaderComponent } from '../../../loader';\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement } from '../../utility-modal.options';\n\n@Component({\n selector: 'cui-utility-modal-create',\n imports: [CuiButtonModule, CuiLoaderComponent, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\n standalone: true,\n templateUrl: './utility-modal-create.component.html',\n styleUrl: './utility-modal-create.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUtilityModalCreateComponent implements OnInit, OnDestroy {\n private readonly window = inject(CUI_WINDOW);\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n private readonly utilityModalService = inject(UTILITY_MODAL_SERVICE_TOKEN);\n\n private readonly prevUtility = this.cuiDialogContext.data.utility;\n\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n protected readonly tools = this.cuiDialogContext.data.tools;\n protected readonly header = this.cuiDialogContext.data.header;\n\n private readonly _utility = computed(() => signal(this.initialUtility()));\n\n protected readonly isFormValid = signal(false);\n protected readonly utility = computed(() => this._utility()());\n\n public readonly initialUtility = input.required<StorageObject<UtilityElement>>();\n\n public ngOnInit(): void {\n this.initWindowUnloadEvent();\n }\n\n public ngOnDestroy(): void {\n this.window.onbeforeunload = null;\n }\n\n protected onSave(): void {\n this.cuiDialogContext.completeWith(\n this.initialUtility() ? { prevId: this.prevUtility.id, ...this.utility() } : this.utility()\n );\n }\n\n protected onCancel(): void {\n this.destroyUtility();\n\n const returnedValue = this.initialUtility() ? this.utility() : null;\n\n this.cuiDialogContext.completeWith(returnedValue);\n }\n\n private initWindowUnloadEvent(): void {\n this.window.onbeforeunload = (): void => this.destroyUtility();\n }\n\n private destroyUtility(): void {\n const utility = this.utility();\n\n if (!utility || this.initialUtility()) {\n return;\n }\n\n this.utilityModalService.deleteUtility(utility).subscribe();\n }\n}\n","<div\n class=\"wrapper\"\n *transloco=\"let t\"\n>\n <header class=\"header\">\n <ng-container [ngTemplateOutlet]=\"header\" />\n\n <div class=\"header__content\">\n <cui-loader />\n\n <div class=\"actions\">\n @if (!initialUtility()) {\n <button\n type=\"button\"\n cuiButton\n appearance=\"secondary\"\n (click)=\"onCancel()\"\n >\n {{ t('CANCEL') }}\n </button>\n }\n\n <button\n type=\"button\"\n cuiButton\n [disabled]=\"!isFormValid()\"\n appearance=\"action-violet\"\n (click)=\"onSave()\"\n >\n {{ t('DONE') }}\n </button>\n </div>\n </div>\n </header>\n\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Criterion, StorageObject } from '@cuby-ui/api';\n\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../components';\nimport { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';\nimport { CuiCriterionInfoComponent } from '../../../criterion-info';\nimport { CuiUtilityModalCreateComponent } from '../utility-modal-create';\n\n@Component({\n imports: [CuiButtonModule, CuiSvgModule, CuiCriterionInfoComponent, CuiUtilityModalCreateComponent],\n standalone: true,\n templateUrl: './criterion-modal-create.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCriterionModalCreateComponent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n private readonly criterionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\n\n private isCreated = false;\n\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n protected readonly tools = this.cuiDialogContext.data.tools;\n protected readonly header = this.cuiDialogContext.data.header;\n\n private readonly _criterion = computed(() => signal(this.initialUtility()));\n\n protected readonly isFormValid = signal(false);\n protected readonly criterion = computed(() => this._criterion()());\n\n public readonly initialUtility = input.required<StorageObject<Criterion>>();\n\n protected onCriterionCreated(storageNodeId: string): void {\n if (this.isCreated || this.initialUtility()) {\n return;\n }\n\n this.criterionApiService\n .createUtility(storageNodeId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((criterion) => {\n this.isCreated = true;\n this._criterion().set(criterion as StorageObject<Criterion>);\n });\n }\n}\n","<cui-utility-modal-create [initialUtility]=\"criterion()\">\n <cui-criterion-info\n [criterion]=\"criterion()\"\n [tools]=\"tools\"\n [editorResourceUrl]=\"editorResourceUrl\"\n (validationChanged)=\"isFormValid.set($event)\"\n (criterionCreated)=\"onCriterionCreated($event)\"\n />\n</cui-utility-modal-create>\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\r\nimport type { ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';\r\n\r\nimport {\r\n CuiAccordionModule,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../components';\r\nimport { cuiCreateDefaultValidators } from '../../utils';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport { CuiEditorBlockComponent } from '../../editor';\r\nimport type { CuiEditorConfig } from '../../editor';\r\nimport { CuiUtilityThumbnailComponent } from '../utility-thumbnail';\r\n\r\nimport type { CuiInstructionFormGroup, CuiInstructionFormValues } from './instruction-info-form.options';\r\n\r\n@Component({\r\n selector: 'cui-instruction-info-form',\r\n imports: [\r\n CuiAccordionModule,\r\n CuiButtonModule,\r\n CuiEditorBlockComponent,\r\n CuiFormFieldModule,\r\n CuiGeneralControlErrorHintComponent,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiUtilityThumbnailComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './instruction-info-form.component.html',\r\n styleUrl: './instruction-info-form.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiInstructionInfoFormComponent {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly formBuilder = inject(NonNullableFormBuilder);\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n private readonly cuiIdService = inject(CuiIdService);\r\n\r\n protected readonly CONTROL_DELAY = 500;\r\n\r\n protected readonly titleId = this.cuiIdService.generate();\r\n protected readonly descriptionId = this.cuiIdService.generate();\r\n protected readonly form = this.formBuilder.group<CuiInstructionFormGroup>({\r\n title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\r\n description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\r\n });\r\n\r\n protected heading: CuiNullable<string> = null;\r\n\r\n protected readonly isDescriptionEmpty = signal(false);\r\n protected readonly editorId = signal<CuiNullable<string>>(null);\r\n protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\r\n\r\n public readonly title = input.required<string>();\r\n public readonly description = input.required<string>();\r\n public readonly framerId = input.required<string>();\r\n public readonly baseResourceUrl = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n public readonly formChanged = output<Partial<CuiInstructionFormValues>>();\r\n public readonly isFormValidChanged = output<boolean>();\r\n\r\n protected get controls(): CuiInstructionFormGroup {\r\n return this.form.controls;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.controls.title.invalid && this.controls.title.dirty;\r\n }\r\n\r\n protected get isDescriptionError(): boolean {\r\n return this.controls.description.invalid && this.controls.description.dirty;\r\n }\r\n\r\n constructor() {\r\n this.initUtilityEffect();\r\n }\r\n\r\n protected onEditorEmpty(isEmpty: boolean): void {\r\n this.isDescriptionEmpty.set(isEmpty);\r\n this.isFormValidChanged.emit(this.checkFormValidation());\r\n }\r\n\r\n private initUtilityEffect(): void {\r\n const effectRef = effect(() => {\r\n const title = this.title();\r\n\r\n if (!title) {\r\n return;\r\n }\r\n\r\n this.initFormSubscriptions();\r\n this.initFrameFragments();\r\n effectRef.destroy();\r\n });\r\n }\r\n\r\n private initFormSubscriptions(): void {\r\n this.form.setValue({ title: this.title(), description: this.description() }, { emitEvent: false });\r\n\r\n this.form.statusChanges\r\n .pipe(takeUntilDestroyed(this.destroy))\r\n .subscribe(() => this.isFormValidChanged.emit(this.checkFormValidation()));\r\n\r\n this.form.valueChanges\r\n .pipe(\r\n takeUntilDestroyed(this.destroy),\r\n startWith(this.form.value),\r\n pairwise(),\r\n debounceTime(this.CONTROL_DELAY),\r\n map(([prev, current]) => this.compareFormValues([prev, current]))\r\n )\r\n .subscribe((value) => {\r\n if (!Object.keys(value).length) {\r\n return;\r\n }\r\n\r\n this.formChanged.emit(value);\r\n });\r\n }\r\n\r\n private initFrameFragments(): void {\r\n const frameId = this.framerId();\r\n\r\n if (!frameId) {\r\n return;\r\n }\r\n\r\n this.frameApiService.getFrame(frameId).subscribe((frame) => {\r\n frame.fragments.forEach((fragment) => {\r\n if (fragment.type === FragmentType.jText) {\r\n this.editorId.set(fragment?.id);\r\n }\r\n\r\n if (fragment.type === FragmentType.resourceFile) {\r\n this.setResourceFile(fragment as ResourceFragment);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private compareFormValues([\r\n prevGroup,\r\n currentGruop\r\n ]: Partial<CuiInstructionFormValues>[]): Partial<CuiInstructionFormValues> {\r\n const keys = Object.keys(currentGruop) as (keyof CuiInstructionFormValues)[];\r\n const changedFields: Record<string, unknown> = {};\r\n\r\n keys.forEach((key) => {\r\n const prev = prevGroup[key];\r\n const current = currentGruop[key];\r\n\r\n if (prev === current || this.controls[key].invalid) {\r\n return;\r\n }\r\n\r\n changedFields[key] = current;\r\n });\r\n\r\n return changedFields;\r\n }\r\n\r\n private setResourceFile(resource: ResourceFragment): void {\r\n 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 getCaptureFromVideo(url: string, file?: File): void {\r\n takeCaptureFromVideo(url).then((capture) => {\r\n this.thumbnail.update((prev) => ({\r\n ...prev!,\r\n name: (file?.name ?? prev?.name)!,\r\n resource: capture\r\n }));\r\n });\r\n }\r\n\r\n private checkFormValidation(): boolean {\r\n return !this.isDescriptionEmpty() && !this.form.invalid;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <section class=\"content\">\r\n <cui-form-field>\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n [for]=\"titleId\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n\r\n <cui-input-text\r\n [cuiTextFieldId]=\"titleId\"\r\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n [formControl]=\"form.controls.title\"\r\n />\r\n\r\n @if (isTitleError) {\r\n <cui-general-control-error-hint\r\n [control]=\"form.controls.title\"\r\n [isVisible]=\"true\"\r\n />\r\n }\r\n </cui-form-field>\r\n\r\n <cui-form-field>\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n [for]=\"descriptionId\"\r\n >\r\n {{ t('SHORT_DESCRIPTION') }}\r\n </label>\r\n\r\n <cui-input-text\r\n [cuiTextFieldId]=\"descriptionId\"\r\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\r\n [cuiTextFieldIsError]=\"isDescriptionError\"\r\n [formControl]=\"form.controls.description\"\r\n />\r\n\r\n @if (isDescriptionError) {\r\n <cui-general-control-error-hint\r\n [control]=\"form.controls.description\"\r\n [isVisible]=\"true\"\r\n />\r\n }\r\n </cui-form-field>\r\n\r\n <cui-utility-thumbnail\r\n [baseResourceUrl]=\"baseResourceUrl()\"\r\n [framerId]=\"framerId()\"\r\n [(thumbnail)]=\"thumbnail\"\r\n />\r\n\r\n @if (editorId(); as editorId) {\r\n <cui-editor-block\r\n [title]=\"form.controls.title.value || title()\"\r\n [config]=\"config()\"\r\n [editorId]=\"editorId\"\r\n [required]=\"true\"\r\n class=\"editor\"\r\n (editorEmpty)=\"onEditorEmpty($event)\"\r\n />\r\n }\r\n </section>\r\n</ng-container>\r\n","import type { ElementRef, OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport type { Observable, Subscription } from 'rxjs';\r\nimport { finalize, forkJoin } from 'rxjs';\r\nimport type { Instruction, StorageObject, TreeStruct } from '@cuby-ui/api';\r\nimport { CuiTreeStructNavigatorApiService, MovingType, TreeStructType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService } from '@cuby-ui/cdk';\r\n\r\nimport {\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiDialogModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiSvgModule\r\n} from '../../components';\r\nimport { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';\r\nimport { CuiEditorConfig } from '../../editor';\r\nimport type { CuiTools } from '../../editor';\r\nimport { CuiInstructionInfoFormComponent } from '../instruction-info-form';\r\nimport type { CuiInstructionFormValues } from '../instruction-info-form';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityModalService } from '../utility-modal';\r\n\r\n@Component({\r\n selector: 'cui-instruction-info',\r\n imports: [\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiCategoriesComponent,\r\n CuiDialogModule,\r\n CuiFormFieldModule,\r\n CuiInstructionInfoFormComponent,\r\n CuiLabelModule,\r\n CuiSvgModule,\r\n TranslocoModule\r\n ],\r\n standalone: true,\r\n templateUrl: './instruction-info.component.html',\r\n styleUrls: ['./instruction-info.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiSelectedCategoryService]\r\n})\r\nexport class CuiInstructionInfoComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly cuiCategoriesModalService = inject(CuiSelectedCategoryService);\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly instructionApiService = inject<UtilityModalService<Instruction>>(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n protected readonly TYPE = TreeStructType.Instruction;\r\n\r\n private subscription!: Subscription;\r\n private skipCategoryChange = false;\r\n\r\n protected readonly categoryId = this.cuiIdService.generate();\r\n\r\n protected readonly category = this.cuiCategoriesModalService.category;\r\n protected readonly isFormValid = signal(false);\r\n protected readonly prevCategoryId = signal<CuiNullable<string>>(null);\r\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n protected readonly labelColor = computed(() =>\r\n this.category()?.title ? 'var(--cui-base-900)' : 'var(--cui-base-400)'\r\n );\r\n protected readonly selectTitle = computed(\r\n () => this.category()?.title || this.translocoService.translate('SELECT') + '...'\r\n );\r\n\r\n protected readonly element = viewChild<ElementRef<HTMLElement>>('scrollContent');\r\n\r\n public readonly instruction = model<StorageObject<Instruction>>();\r\n public readonly tools = input.required<CuiTools>();\r\n public readonly editorResourceUrl = input.required<string>();\r\n\r\n public readonly validationChanged = output<boolean>();\r\n public readonly instructionCreated = output<string>();\r\n\r\n constructor() {\r\n this.initConfigEffect();\r\n this.initCategoryEffect();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initCategory();\r\n }\r\n\r\n protected onFormChanged(values: Partial<CuiInstructionFormValues>, instructionId: string): void {\r\n const actions: Record<keyof CuiInstructionFormValues, (value: string) => Observable<void>> = {\r\n title: (title: string) => this.changeTitle(title, instructionId),\r\n description: (description: string) => this.changeDescription(description, instructionId)\r\n };\r\n\r\n forkJoin(\r\n Object.keys(values).map((key) =>\r\n actions[key as keyof CuiInstructionFormValues](values[key as keyof CuiInstructionFormValues] || '')\r\n )\r\n )\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe();\r\n }\r\n\r\n protected onFormValidationChanged(isValid: boolean): void {\r\n this.isFormValid.set(isValid);\r\n this.validationChanged.emit(isValid);\r\n }\r\n\r\n private initCategoryEffect(): void {\r\n effect(() => {\r\n const category = this.category();\r\n const storageObjectInstruction = untracked(this.instruction);\r\n\r\n if (!category || this.skipCategoryChange) {\r\n this.skipCategoryChange = false;\r\n\r\n return;\r\n }\r\n\r\n if (storageObjectInstruction) {\r\n this.changeCategory(category.id, storageObjectInstruction.id);\r\n\r\n return;\r\n }\r\n\r\n this.createInstruction(category.id);\r\n });\r\n }\r\n\r\n private initConfigEffect(): void {\r\n effect(() => {\r\n const element = this.element()?.nativeElement;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n this.editorConfig.set({ tools: this.tools(), element });\r\n });\r\n }\r\n\r\n private initCategory(): void {\r\n const storageObjectId = this.instruction()?.id;\r\n\r\n if (!storageObjectId) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService\r\n .getCategory(storageObjectId, TreeStructType.Instruction)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((category) => {\r\n this.skipCategoryChange = true;\r\n this.prevCategoryId.set(category.id);\r\n this.cuiCategoriesModalService.setCurrentCategory(category as TreeStruct);\r\n });\r\n }\r\n\r\n private changeCategory(categoryId: string, targetId: string): void {\r\n const prevCategoryId = untracked(this.prevCategoryId);\r\n\r\n if (!prevCategoryId) {\r\n return;\r\n }\r\n\r\n this.subscription?.unsubscribe();\r\n this.subscription = this.treeStructNavigatorApiService\r\n .moveElement({\r\n type: MovingType.TARGET_TREE_STRUCT,\r\n movableItemId: targetId,\r\n treeStructTargetItemId: categoryId,\r\n treeStructMovableItemId: prevCategoryId\r\n })\r\n .subscribe(() => this.prevCategoryId.set(categoryId));\r\n }\r\n\r\n private createInstruction(categoryId: string): void {\r\n this.instructionCreated.emit(categoryId);\r\n this.prevCategoryId.set(categoryId);\r\n }\r\n\r\n private changeTitle(value: string, instructionId: string): Observable<void> {\r\n return this.instructionApiService.changeTitle(instructionId, value).pipe(\r\n finalize(() =>\r\n this.instruction.update((prev) => ({\r\n ...prev!,\r\n storageElement: { ...prev!.storageElement, title: value }\r\n }))\r\n )\r\n );\r\n }\r\n\r\n private changeDescription(value: string, instructionId: string): Observable<void> {\r\n if (!this.instructionApiService.changeDescription) {\r\n throw new Error('Change description not implemented');\r\n }\r\n\r\n return this.instructionApiService.changeDescription(instructionId, value).pipe(\r\n finalize(() =>\r\n this.instruction.update((prev) => ({\r\n ...prev!,\r\n storageElement: { ...prev!.storageElement, shortDescription: value }\r\n }))\r\n )\r\n );\r\n }\r\n}\r\n","<div\r\n class=\"wrapper\"\r\n *transloco=\"let t\"\r\n>\r\n <div\r\n #scrollContent\r\n class=\"content content_scrollable\"\r\n >\r\n <div class=\"category\">\r\n <cui-form-field>\r\n <label\r\n cuiLabel\r\n [for]=\"categoryId\"\r\n [isRequired]=\"true\"\r\n >\r\n {{ t('SELECT_CATEGORY') }}\r\n </label>\r\n <cui-categories\r\n [buttonId]=\"categoryId\"\r\n [treeStructType]=\"TYPE\"\r\n >\r\n <div class=\"select\">\r\n <span [style.color]=\"labelColor()\">\r\n {{ selectTitle() }}\r\n </span>\r\n\r\n <cui-svg icon=\"cuiIconChevronDown\" />\r\n </div>\r\n </cui-categories>\r\n </cui-form-field>\r\n </div>\r\n\r\n @let instructionData = instruction();\r\n @let editorConfigData = editorConfig();\r\n\r\n @if (editorConfigData && instructionData) {\r\n <cui-instruction-info-form\r\n [config]=\"editorConfigData\"\r\n [baseResourceUrl]=\"editorResourceUrl()\"\r\n [title]=\"instructionData.storageElement.title\"\r\n [description]=\"instructionData.storageElement.shortDescription\"\r\n [framerId]=\"instructionData.storageElement.framerInstructionId\"\r\n class=\"utility\"\r\n (isFormValidChanged)=\"onFormValidationChanged($event)\"\r\n (formChanged)=\"onFormChanged($event, instructionData.id)\"\r\n />\r\n }\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instruction, StorageObject } from '@cuby-ui/api';\n\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../components';\nimport { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';\nimport { CuiUtilityModalCreateComponent } from '../utility-modal-create';\nimport { CuiInstructionInfoComponent } from '../../../instruction-info';\n\n@Component({\n imports: [CuiButtonModule, CuiSvgModule, CuiUtilityModalCreateComponent, CuiInstructionInfoComponent],\n standalone: true,\n templateUrl: './instruction-modal-create.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiInstructionModalCreateComponent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n private readonly instructionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\n\n private isCreated = false;\n\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n protected readonly tools = this.cuiDialogContext.data.tools;\n protected readonly header = this.cuiDialogContext.data.header;\n\n private readonly _instruction = computed(() => signal(this.initialUtility()));\n\n protected readonly isFormValid = signal(false);\n protected readonly instruction = computed(() => this._instruction()());\n\n public readonly initialUtility = input.required<StorageObject<Instruction>>();\n\n protected onInstructionCreated(storageNodeId: string): void {\n if (this.isCreated || this.initialUtility()) {\n return;\n }\n\n this.instructionApiService\n .createUtility(storageNodeId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((instruction) => {\n this.isCreated = true;\n this._instruction().set(instruction as StorageObject<Instruction>);\n });\n }\n}\n","<cui-utility-modal-create [initialUtility]=\"instruction()\">\n <cui-instruction-info\n [instruction]=\"instruction()\"\n [tools]=\"tools\"\n [editorResourceUrl]=\"editorResourceUrl\"\n (validationChanged)=\"isFormValid.set($event)\"\n (instructionCreated)=\"onInstructionCreated($event)\"\n />\n</cui-utility-modal-create>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { finalize } from 'rxjs';\nimport { StorageObject } from '@cuby-ui/api';\n\nimport { CUI_DIALOG_CONTEXT, CuiBadgeModule, CuiButtonModule, CuiSvgModule } from '../../../../components';\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement, UtilityModalService } from '../../utility-modal.options';\n\n@Component({\n selector: 'cui-readonly-utility-modal',\n imports: [CuiBadgeModule, CuiButtonModule, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\n standalone: true,\n templateUrl: 'readonly-utility-modal.component.html',\n styleUrl: 'readonly-utility-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiReadonlyUtilityModalComponent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n private readonly utilityModalService = inject<UtilityModalService<UtilityElement>>(UTILITY_MODAL_SERVICE_TOKEN);\n\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n protected readonly tools = this.cuiDialogContext.data.tools;\n protected readonly header = this.cuiDialogContext.data.header;\n\n protected readonly isLoading = signal(false);\n\n public readonly utility = input.required<StorageObject<UtilityElement>>();\n\n public readonly utilityUnbinded = output<StorageObject<UtilityElement>>();\n\n protected onClose(): void {\n this.cuiDialogContext.completeWith();\n }\n\n protected onUnbind(): void {\n this.isLoading.set(true);\n this.utilityModalService\n .unbindUtility(this.utility().id)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n finalize(() => this.isLoading.set(false))\n )\n .subscribe((utility: StorageObject<UtilityElement>) => {\n this.utilityUnbinded.emit(utility);\n });\n }\n}\n","<ng-container *transloco=\"let t\">\n <header class=\"header\">\n <ng-container [ngTemplateOutlet]=\"header\" />\n\n <cui-badge\n color=\"violet\"\n class=\"badge\"\n >\n <cui-svg\n class=\"icon\"\n icon=\"cuiIconVariant\"\n color=\"var(--cui-violet-400)\"\n />\n {{ t('INSERTED') }}\n </cui-badge>\n\n <button\n type=\"button\"\n cuiButton\n appearance=\"ghost\"\n icon=\"cuiIconX\"\n class=\"button\"\n (click)=\"onClose()\"\n ></button>\n </header>\n\n <ng-content />\n\n <div class=\"actions\">\n <button\n type=\"button\"\n #button\n cuiButton\n size=\"sm\"\n icon=\"cuiIconLinkBroken\"\n appearance=\"action-violet\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onUnbind()\"\n >\n {{ t('UNBIND') }}\n </button>\n </div>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { Criterion, StorageObject } from '@cuby-ui/api';\n\nimport {\n CUI_DIALOG_CONTEXT,\n CuiBadgeModule,\n CuiButtonModule,\n CuiRenderDynamicComponentsService,\n CuiSvgModule\n} from '../../../../components';\nimport { CuiCriterionReadonlyInfoComponent } from '../../../criterion-readonly-info';\nimport { CuiReadonlyUtilityModalComponent } from '../readonly-utility-modal';\nimport { UtilityElement } from '../../utility-modal.options';\nimport { CuiCriterionModalCreateComponent } from '../criterion-modal-create';\n\n@Component({\n selector: 'cui-readonly-criterion-modal',\n imports: [\n CuiBadgeModule,\n CuiButtonModule,\n CuiSvgModule,\n CuiCriterionReadonlyInfoComponent,\n TranslocoDirective,\n CuiReadonlyUtilityModalComponent\n ],\n standalone: true,\n templateUrl: 'readonly-criterion-modal.component.html',\n styleUrl: 'readonly-criterion-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiReadonlyCriterionModalComponent {\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n protected readonly tools = this.cuiDialogContext.data.tools;\n protected readonly header = this.cuiDialogContext.data.header;\n\n protected readonly isLoading = signal(false);\n protected readonly framerId = computed(() => this.criterion().storageElement.framerCriterionId);\n\n public readonly criterion = input.required<StorageObject<Criterion>>();\n\n protected onUnbind(criterion: StorageObject<UtilityElement>): void {\n this.cuiRenderDynamicComponentsService.closeAll();\n this.cuiRenderDynamicComponentsService.open({\n component: CuiCriterionModalCreateComponent,\n inputs: { criterion }\n });\n }\n}\n","<cui-readonly-utility-modal\n [utility]=\"criterion()\"\n (utilityUnbinded)=\"onUnbind($event)\"\n>\n <ng-container *transloco=\"let t\">\n <div\n #scrollContainer\n class=\"info\"\n >\n <h3 class=\"title\">{{ criterion().storageElement.title }}</h3>\n\n <cui-criterion-readonly-info\n [framerId]=\"framerId()\"\n [editorResourceUrl]=\"editorResourceUrl\"\n [tools]=\"tools\"\n [element]=\"scrollContainer\"\n class=\"info__block\"\n />\n </div>\n </ng-container>\n</cui-readonly-utility-modal>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport type { Instruction, StorageObject } from '@cuby-ui/api';\n\nimport {\n CUI_DIALOG_CONTEXT,\n CuiBadgeModule,\n CuiButtonModule,\n CuiRenderDynamicComponentsService,\n CuiSvgModule\n} from '../../../../components';\nimport { CuiInstructionReadonlyInfoComponent } from '../../../instruction-readonly-info';\nimport { CuiInstructionModalCreateComponent } from '../instruction-modal-create';\nimport { UtilityElement } from '../../utility-modal.options';\nimport { CuiReadonlyUtilityModalComponent } from '../readonly-utility-modal';\n\n@Component({\n selector: 'cui-readonly-instruction-modal',\n imports: [\n CuiBadgeModule,\n CuiButtonModule,\n CuiSvgModule,\n CuiInstructionReadonlyInfoComponent,\n TranslocoDirective,\n CuiReadonlyUtilityModalComponent\n ],\n standalone: true,\n templateUrl: 'readonly-instruction-modal.component.html',\n styleUrl: 'readonly-instruction-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiReadonlyInstructionModalComponent {\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\n protected readonly tools = this.cuiDialogContext.data.tools;\n protected readonly header = this.cuiDialogContext.data.header;\n\n protected readonly isLoading = signal(false);\n protected readonly framerId = computed(() => this.instruction().storageElement.framerInstructionId);\n\n public readonly instruction = input.required<StorageObject<Instruction>>();\n\n protected onUnbind(instruction: StorageObject<UtilityElement>): void {\n this.cuiRenderDynamicComponentsService.closeAll();\n this.cuiRenderDynamicComponentsService.open({\n component: CuiInstructionModalCreateComponent,\n inputs: { initialUtility: instruction }\n });\n }\n}\n","<ng-container *transloco=\"let t\">\n <cui-readonly-utility-modal\n [utility]=\"instruction()\"\n (utilityUnbinded)=\"onUnbind($event)\"\n >\n <div\n #scrollContainer\n class=\"info\"\n >\n <h3 class=\"title\">{{ instruction().storageElement.title }}</h3>\n\n <cui-instruction-readonly-info\n [framerId]=\"framerId()\"\n [editorResourceUrl]=\"editorResourceUrl\"\n [tools]=\"tools\"\n [element]=\"scrollContainer\"\n class=\"info__block\"\n />\n </div>\n </cui-readonly-utility-modal>\n</ng-container>\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport {\n CUI_DIALOG_CONTEXT,\n CuiRenderDynamicComponentsComponent,\n CuiRenderDynamicComponentsService\n} from '../../components';\n\n@Component({\n selector: 'cui-utility-modal',\n imports: [CuiRenderDynamicComponentsComponent],\n standalone: true,\n templateUrl: 'utility-modal.component.html',\n styleUrl: 'utility-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiRenderDynamicComponentsService]\n})\nexport class CuiUtilityModalComponent {\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\n private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n protected readonly utility = this.cuiDialogContext.data.utility;\n protected readonly initialComponent = this.cuiDialogContext.data.initialComponent;\n\n constructor() {\n this.cuiRenderDynamicComponentsService.open({\n component: this.initialComponent,\n inputs: { initialUtility: this.utility }\n });\n }\n}\n","<cui-render-dynamic-components />\n","import type { ElementRef, OnInit } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Criterion, StorageObject, TreeStruct } from '@cuby-ui/api';\nimport { CuiTreeStructNavigatorApiService, MovingType, TreeStructType } from '@cuby-ui/api';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService } from '@cuby-ui/cdk';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport type { Observable, Subscription } from 'rxjs';\nimport { finalize, forkJoin } from 'rxjs';\n\nimport {\n CuiBadgeModule,\n CuiButtonModule,\n CuiDialogModule,\n CuiFormFieldModule,\n CuiLabelModule,\n CuiSvgModule\n} from '../../components';\nimport { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';\nimport { CuiCriterionFormValues, CuiCriterionInfoFormComponent } from '../criterion-info-form';\nimport type { CuiTools, CuiEditorConfig } from '../../editor';\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityModalService } from '../utility-modal';\n\n@Component({\n selector: 'cui-criterion-info',\n imports: [\n CuiBadgeModule,\n CuiButtonModule,\n CuiCategoriesComponent,\n CuiDialogModule,\n CuiFormFieldModule,\n CuiCriterionInfoFormComponent,\n CuiLabelModule,\n CuiSvgModule,\n TranslocoModule\n ],\n standalone: true,\n templateUrl: './criterion-info.component.html',\n styleUrls: ['./criterion-info.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiSelectedCategoryService]\n})\nexport class CuiCriterionInfoComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly translocoService = inject(TranslocoService);\n private readonly cuiIdService = inject(CuiIdService);\n private readonly cuiCategoriesModalService = inject(CuiSelectedCategoryService);\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\n private readonly criterionApiService = inject<UtilityModalService<Criterion>>(UTILITY_MODAL_SERVICE_TOKEN);\n\n private subscription!: Subscription;\n private skipCategoryChange = false;\n\n protected readonly TYPE = TreeStructType.Criteria;\n\n protected readonly categoryId = this.cuiIdService.generate();\n\n protected readonly category = this.cuiCategoriesModalService.category;\n protected readonly isFormValid = signal(false);\n protected readonly prevCategoryId = signal<CuiNullable<string>>(null);\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\n protected readonly labelColor = computed(() =>\n this.category()?.title ? 'var(--cui-base-900)' : 'var(--cui-base-400)'\n );\n protected readonly selectTitle = computed(\n () => this.category()?.title ?? this.translocoService.translate('SELECT') + '...'\n );\n\n protected readonly element = viewChild<ElementRef<HTMLElement>>('scrollContent');\n\n public readonly criterion = model<StorageObject<Criterion>>();\n public readonly tools = input.required<CuiTools>();\n public readonly editorResourceUrl = input.required<string>();\n\n public readonly validationChanged = output<boolean>();\n public readonly criterionCreated = output<string>();\n\n constructor() {\n this.initConfigEffect();\n this.initCategoryEffect();\n }\n\n public ngOnInit(): void {\n this.initCategory();\n }\n\n protected onFormChanged(values: Partial<CuiCriterionFormValues>, criterionId: string): void {\n const actions: Record<keyof CuiCriterionFormValues, (value: string) => Observable<void>> = {\n title: (title: string) => this.changeTitle(title, criterionId)\n };\n\n forkJoin(\n Object.keys(values).map((key) =>\n actions[key as keyof CuiCriterionFormValues](values[key as keyof CuiCriterionFormValues] || '')\n )\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n\n protected onFormValidationChanged(isValid: boolean): void {\n this.isFormValid.set(isValid);\n this.validationChanged.emit(isValid);\n }\n\n private initCategoryEffect(): void {\n effect(() => {\n const category = this.category();\n const storageObjectCriterion = untracked(this.criterion);\n\n if (!category || this.skipCategoryChange) {\n this.skipCategoryChange = false;\n\n return;\n }\n\n if (storageObjectCriterion) {\n this.changeCategory(category.id, storageObjectCriterion.id);\n\n return;\n }\n\n this.createCriterion(category.id);\n });\n }\n\n private initConfigEffect(): void {\n effect(() => {\n const element = this.element()?.nativeElement;\n\n if (!element) {\n return;\n }\n\n this.editorConfig.set({ tools: this.tools(), element });\n });\n }\n\n private initCategory(): void {\n const storageObjectId = this.criterion()?.id;\n\n if (!storageObjectId) {\n return;\n }\n\n this.treeStructNavigatorApiService\n .getCategory(storageObjectId, TreeStructType.Criteria)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((category) => {\n this.skipCategoryChange = true;\n this.prevCategoryId.set(category.id);\n this.cuiCategoriesModalService.setCurrentCategory(category as TreeStruct);\n });\n }\n\n private changeCategory(categoryId: string, targetId: string): void {\n const prevCategoryId = untracked(this.prevCategoryId);\n\n if (!prevCategoryId) {\n return;\n }\n\n this.subscription?.unsubscribe();\n this.subscription = this.treeStructNavigatorApiService\n .moveElement({\n type: MovingType.TARGET_TREE_STRUCT,\n movableItemId: targetId,\n treeStructTargetItemId: categoryId,\n treeStructMovableItemId: prevCategoryId\n })\n .subscribe(() => this.prevCategoryId.set(categoryId));\n }\n\n private createCriterion(categoryId: string): void {\n this.criterionCreated.emit(categoryId);\n this.prevCategoryId.set(categoryId);\n }\n\n private changeTitle(value: string, criterionId: string): Observable<void> {\n return this.criterionApiService.changeTitle(criterionId, value).pipe(\n finalize(() =>\n this.criterion.update((prev) => ({\n ...prev!,\n storageElement: { ...prev!.storageElement, title: value }\n }))\n )\n );\n }\n}\n","<div\n class=\"wrapper\"\n *transloco=\"let t\"\n>\n <div\n #scrollContent\n class=\"content content_scrollable\"\n >\n <div class=\"category\">\n <cui-form-field>\n <label\n cuiLabel\n [for]=\"categoryId\"\n [isRequired]=\"true\"\n >\n {{ t('SELECT_CATEGORY') }}\n </label>\n <cui-categories\n [buttonId]=\"categoryId\"\n [treeStructType]=\"TYPE\"\n >\n <div class=\"select\">\n <span [style.color]=\"labelColor()\">\n {{ selectTitle() }}\n </span>\n\n <cui-svg icon=\"cuiIconChevronDown\" />\n </div>\n </cui-categories>\n </cui-form-field>\n </div>\n\n @let criterionData = criterion();\n @let editorConfigData = editorConfig();\n\n @if (editorConfigData && criterionData) {\n <cui-criterion-info-form\n [config]=\"editorConfigData\"\n [baseResourceUrl]=\"editorResourceUrl()\"\n [title]=\"criterionData.storageElement.title\"\n [framerId]=\"criterionData.storageElement.framerCriterionId\"\n class=\"utility\"\n (isFormValidChanged)=\"onFormValidationChanged($event)\"\n (formChanged)=\"onFormChanged($event, criterionData.id)\"\n />\n }\n </div>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { CuiCardWrapperComponent } from '../../../../components/card-wrapper';\nimport { CuiSvgModule } from '../../../../components/svg';\n\n@Component({\n selector: 'cui-select-modal-folder',\n imports: [CuiSvgModule, CuiCardWrapperComponent, NgTemplateOutlet],\n templateUrl: 'select-modal-folder.component.html',\n styleUrl: 'select-modal-folder.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSelectModalFolderComponent {\n protected readonly icon = computed(() => (this.isOpen() ? 'cuiIconFolderOpen' : 'cuiIconFolder'));\n\n public readonly title = input.required<string>();\n public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n public readonly isOpen = input(false);\n}\n","<cui-card-wrapper class=\"wrapper\">\n <ng-container [ngTemplateOutlet]=\"buttonSlot()\" />\n\n <cui-svg\n [icon]=\"icon()\"\n class=\"icon\"\n />\n\n <span class=\"title\">{{ title() }}</span>\n</cui-card-wrapper>\n","import { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { debounceTime } from 'rxjs';\n\nimport { CuiIconButtonModule } from '../../../../components/icon-button';\nimport { CuiInputModule } from '../../../../components/input-text';\n\n@Component({\n selector: 'cui-select-modal-search',\n imports: [CuiInputModule, CuiIconButtonModule, ReactiveFormsModule],\n templateUrl: 'select-modal-search.component.html',\n styleUrl: 'select-modal-search.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSelectModalSearchComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n\n public readonly searchControl = input<FormControl>(new FormControl(''));\n public readonly controlDelay = input<number>(700);\n\n public readonly searchStringChanged = output<string>();\n\n public ngOnInit(): void {\n this.searchControl()\n .valueChanges.pipe(debounceTime(this.controlDelay()), takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => this.searchStringChanged.emit(value));\n }\n}\n","<cui-input-text\n cuiTextFieldPlaceholder=\"Search...\"\n cuiTextFieldIconLeft=\"cuiIconSearch\"\n [formControl]=\"searchControl()\"\n class=\"search\"\n/>\n<button\n class=\"filters\"\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconFiltersLines\"\n></button>\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport type { CuiSelectModalDialogData } from './select-modal.interfaces';\n\nimport type { CuiDialogContext } from '../../components/dialog';\nimport { CUI_DIALOG_CONTEXT, CuiDialogModule } from '../../components/dialog';\nimport { CuiButtonModule } from '../../components/button';\nimport { CuiIconButtonModule } from '../../components/icon-button';\nimport { CuiInputModule } from '../../components/input-text';\n\n@Component({\n imports: [\n CuiButtonModule,\n CuiDialogModule,\n CuiIconButtonModule,\n CuiInputModule,\n NgComponentOutlet,\n TranslocoDirective\n ],\n templateUrl: './select-modal.component.html',\n styleUrl: './select-modal.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSelectModalComponent {\n protected readonly context = inject<CuiDialogContext<CuiSelectModalDialogData>>(CUI_DIALOG_CONTEXT);\n\n private readonly data = this.context.data;\n protected readonly heading = this.data.heading;\n protected readonly leftData = this.data.leftData;\n protected readonly rightData = this.data.rightData;\n\n protected onCancel(): void {\n this.context.completeWith();\n }\n}\n","<ng-container *transloco=\"let t\">\n <div class=\"content\">\n <header\n class=\"header\"\n cuiDialogHeader\n [heading]=\"heading\"\n (closed)=\"onCancel()\"\n ></header>\n <div class=\"wrapper\">\n <div class=\"left-block\">\n @if (leftData) {\n <ng-container\n [ngComponentOutlet]=\"leftData.component\"\n [ngComponentOutletInputs]=\"leftData.inputs\"\n />\n }\n </div>\n <div class=\"right-block\">\n @if (rightData) {\n <ng-container\n [ngComponentOutlet]=\"rightData.component\"\n [ngComponentOutletInputs]=\"rightData.inputs\"\n />\n }\n </div>\n </div>\n </div>\n</ng-container>\n","import type { Signal } from '@angular/core';\nimport { Injectable, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport type { CuiSelectModalElement } from './select-modal.interfaces';\n\n@Injectable()\nexport class CuiSelectModalService {\n private readonly selectedElementSignal = signal<CuiNullable<CuiSelectModalElement>>(null);\n\n public readonly selectedElement = this.selectedElementSignal.asReadonly();\n\n public getSelectedData<T>(): Signal<CuiNullable<T>> {\n return this.selectedElementSignal.asReadonly() as Signal<CuiNullable<T>>;\n }\n\n public set(element: CuiSelectModalElement): void {\n this.selectedElementSignal.set(element);\n }\n\n public delete(): void {\n this.selectedElementSignal.set(null);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Observable } from 'rxjs';\n\nexport const CUI_STORAGE_LIST_SERVICE_TOKEN = new InjectionToken<CuiStorageListService>('STORAGE_LIST_SERVICE_TOKEN');\n\nexport interface CuiStorageListService<T = CuiStorageBase> {\n getChildren?(children: CuiStorage<T>, prevChildrens: CuiStorage<T>[]): Observable<CuiStorage<T>[]>;\n getElements?(element: CuiStorage<T>, prevElements: T[]): Observable<T[]>;\n}\n\nexport interface CuiStorageBase {\n readonly id: string;\n readonly name?: string;\n readonly title?: string;\n}\n\nexport interface CuiStorage<T = CuiStorageBase> extends CuiStorageBase {\n readonly elements?: T[];\n readonly children: CuiStorage<T>[] | string[];\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n untracked\n} from '@angular/core';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { finalize } from 'rxjs';\n\nimport { CuiSvgModule } from '../../../../components/svg';\nimport { CuiStorageListComponent } from '../..';\nimport type { CuiStorage, CuiStorageBase } from '../../storage-list.options';\nimport { CUI_STORAGE_LIST_SERVICE_TOKEN } from '../../storage-list.options';\n\n@Component({\n selector: 'li[cuiStorageListItem]',\n imports: [CuiLetDirective, CuiSvgModule, NgTemplateOutlet, forwardRef(() => CuiStorageListComponent)],\n templateUrl: './storage-list-item.component.html',\n styleUrl: './storage-list-item.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiStorageListItemComponent<T = CuiStorageBase> {\n private readonly storageListService = inject(CUI_STORAGE_LIST_SERVICE_TOKEN);\n\n private isLoadingChildren = false;\n private isLoadingElements = false;\n\n protected readonly storageChildren = signal<CuiStorage[]>([]);\n protected readonly storageElements = signal<CuiStorageBase[]>([]);\n protected readonly areContentOpened = signal(false);\n protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\n this.areContentOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\n );\n protected readonly hasContent = computed(\n () => this.storage().children.length || this.storageChildren().length || this.storageElements().length\n );\n\n public readonly storage = input.required<CuiStorage<T>>();\n public readonly elementSlot = input<TemplateRef<unknown>>();\n public readonly itemSlot = input<TemplateRef<unknown>>();\n\n constructor() {\n this.initStorageChildrenEffect();\n this.initStorageElementsEffect();\n }\n\n protected onToggleChildren(event: MouseEvent): void {\n event.preventDefault();\n\n this.areContentOpened.update((prevAreChildrenOpened) => !prevAreChildrenOpened);\n }\n\n private initStorageChildrenEffect(): void {\n effect(() => {\n const storage = this.storage() as CuiStorage<CuiStorageBase>;\n\n this.areContentOpened();\n untracked(this.setChildren.bind(this, storage));\n });\n }\n\n private initStorageElementsEffect(): void {\n effect(() => {\n const storage = this.storage() as CuiStorage<CuiStorageBase>;\n\n untracked(this.setElements.bind(this, storage));\n });\n }\n\n private setChildren(storage: CuiStorage<CuiStorageBase>): void {\n const storageChildren = storage.children;\n\n if (!storageChildren.length) {\n this.storageChildren.set([]);\n }\n\n if (this.isLoadingChildren || !this.areContentOpened()) {\n return;\n }\n\n if (typeof storageChildren[0] !== 'string') {\n this.storageChildren.set(storageChildren as CuiStorage[]);\n\n return;\n }\n\n this.isLoadingChildren = true;\n this.storageListService\n .getChildren?.(storage, this.storageChildren())\n .pipe(finalize(() => (this.isLoadingChildren = false)))\n .subscribe((response) => this.storageChildren.set(response));\n }\n\n private setElements(storage: CuiStorage<CuiStorageBase>): void {\n const storageElements = storage.elements;\n\n if (this.isLoadingElements) {\n return;\n }\n\n if (!storageElements?.length) {\n this.storageElements.set([]);\n\n return;\n }\n\n if (this.storageElements.length) {\n this.storageElements.set(storageElements);\n\n return;\n }\n\n this.isLoadingElements = true;\n this.storageListService\n .getElements?.(storage, this.storageElements())\n .pipe(finalize(() => (this.isLoadingElements = false)))\n .subscribe((response) => this.storageElements.set(response));\n }\n}\n","<ng-container *cuiLet=\"storage() as storage\">\n <div class=\"wrapper\">\n <ng-template #openCloseButton>\n @if (hasContent()) {\n <button\n type=\"button\"\n class=\"button\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n }\n </ng-template>\n\n @if (itemSlot(); as item) {\n <ng-container\n *ngTemplateOutlet=\"\n item;\n context: {\n $implicit: storage,\n openCloseButton,\n areContentOpened: areContentOpened(),\n hasContent: hasContent()\n }\n \"\n />\n }\n\n <div\n class=\"content\"\n [class.content_hidden]=\"!areContentOpened()\"\n >\n <div class=\"lists\">\n @if (storageChildren().length) {\n <cui-storage-list\n [storages]=\"storageChildren()\"\n [elementSlot]=\"elementSlot()\"\n [itemSlot]=\"itemSlot()\"\n />\n }\n @if (storageElements().length && elementSlot()) {\n <ul class=\"list\">\n @for (element of storageElements(); track element.id) {\n <li class=\"item\">\n <ng-container\n *ngTemplateOutlet=\"\n elementSlot()!;\n context: { $implicit: element, storage: storage }\n \"\n />\n </li>\n }\n </ul>\n }\n </div>\n </div>\n </div>\n</ng-container>\n","import type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { CuiStorageListItemComponent } from './components';\nimport type { CuiStorage } from './storage-list.options';\n\n@Component({\n selector: 'cui-storage-list',\n imports: [CuiStorageListItemComponent],\n templateUrl: './storage-list.component.html',\n styleUrl: './storage-list.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiStorageListComponent<T> {\n public readonly storages = input.required<CuiStorage<T>[]>();\n public readonly elementSlot = input<TemplateRef<unknown>>();\n public readonly itemSlot = input<TemplateRef<unknown>>();\n}\n","<ul class=\"list\">\n @for (storage of storages(); track storage.id) {\n <li\n cuiStorageListItem\n [storage]=\"storage\"\n [elementSlot]=\"elementSlot()\"\n [itemSlot]=\"itemSlot()\"\n class=\"item\"\n ></li>\n }\n</ul>\n","import {computed, inject, Injectable, Signal, signal} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport type { CuiUserCompany } from '@cuby-ui/api';\nimport { UserCompanyApiService } from '@cuby-ui/api';\nimport { CuiActivityService } from '../user-action-context.option';\nimport {CuiUserCompanyActivity} from \"@cuby-ui/api/platform/models/user-company-api.options\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiActivityBaseService implements CuiActivityService {\n private readonly userCompanyApiService = inject(UserCompanyApiService);\n\n private readonly companiesSignal = signal<CuiUserCompany[]>([]);\n\n public readonly companies = this.companiesSignal.asReadonly();\n\n public initActivityData(): void {\n this.userCompanyApiService\n .getMyCompanies()\n .pipe(takeUntilDestroyed())\n .subscribe((response) => this.companiesSignal.set(response));\n }\n\n public checkIsCurrentActivity(activityId: string): boolean {\n return false;\n }\n\n public checkIsCurrentCompany(companyId: string): boolean {\n return false;\n }\n}\n","import {inject, Injectable, signal} from '@angular/core';\n\nimport type { CuiActivityService } from '../user-action-context.option';\nimport { CuiAuthService } from '../../../providers';\nimport type { CuiExchangeTokenSession } from '../../../services';\nimport { CuiActivityBaseService } from './activity-base.service';\n\n@Injectable({\n providedIn: 'any'\n})\nexport class CuiActivityImplService extends CuiActivityBaseService implements CuiActivityService {\n private readonly cuiAuthService = inject(CuiAuthService);\n\n private readonly authData = this.cuiAuthService.getAccessTokenData<CuiExchangeTokenSession>();\n private readonly currentActivityId = this.authData.employee_session?.activityId;\n private readonly currentCompanyId = this.authData.employee_session?.companyId;\n private isCheckActivity = false;\n\n public override checkIsCurrentActivity(activityId: string): boolean {\n if(this.currentActivityId === activityId) {\n this.isCheckActivity = true;\n }\n\n return this.currentActivityId === activityId;\n }\n\n public override checkIsCurrentCompany(companyId: string): boolean {\n if(this.isCheckActivity){\n return false;\n }\n\n return this.currentCompanyId === companyId;\n }\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { CuiUserCompany } from '@cuby-ui/api';\nimport {CuiUserCompanyActivity} from \"@cuby-ui/api/platform/models/user-company-api.options\";\n\nexport const CUI_ACTIVITY_SERVICE_TOKEN = new InjectionToken<CuiActivityService>('ACTIVITY_SERVICE_TOKEN');\n\nexport interface CuiActivityData {\n readonly companies: Signal<CuiUserCompany[]>;\n}\n\nexport interface CuiActivityService extends CuiActivityData {\n initActivityData(): void;\n checkIsCurrentActivity(activityId: string): boolean;\n checkIsCurrentCompany(companyId: string): boolean;\n}\n\nexport interface LinkConfig {\n userLink: string;\n adminLink: string;\n}\n","import { Translation } from '@jsverse/transloco';\n\nexport const CuiActivityContextMenuTranslations: Record<string, Promise<Translation>> = {\n en: import('../i18n/en.json'),\n ru: import('../i18n/ru.json')\n} as const;\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input } from '@angular/core';\nimport { CuiApiUrl, CuiTokenExchangeType, CuiUserCompanyActivity, CuiUserCompanyActivityType } from '@cuby-ui/api';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CuiLetterBoxComponent } from '../../../components/letter-box/letter-box.component';\nimport { CuiSvgModule } from '../../../components/svg/svg.module';\nimport { CuiAuthService } from '../../../providers';\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from '../user-action-context.option';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { CuiTooltipDirective } from '../../../directives';\nimport {Router} from \"@angular/router\";\n\n@Component({\n selector: 'cui-activity-item',\n standalone: true,\n imports: [CuiLetterBoxComponent, CuiSvgModule, CuiTooltipDirective],\n templateUrl: './activity-item.component.html',\n styleUrl: './activity-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.selected]': 'isSelected()'\n }\n})\nexport class CuiActivityItemComponent {\n private readonly transloco = inject(TranslocoService);\n private readonly router = inject(Router);\n private readonly destroy = inject(DestroyRef);\n private readonly cuiAuthService = inject(CuiAuthService);\n private readonly cuiActivityService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\n\n protected readonly isSelected = computed(() =>\n this.cuiActivityService.checkIsCurrentActivity(this.activity().activityId)\n );\n protected readonly letterBackgroundColor = computed(() => {\n const licenseType = this.activity().type;\n\n return licenseType === CuiUserCompanyActivityType.Manufacture\n ? 'var(--cui-orange-500)'\n : 'var(--cui-light-blue-500)';\n });\n\n public readonly activity = input.required<CuiUserCompanyActivity>();\n public readonly companyId = input.required<string>();\n\n protected readonly typeCompany = computed(() => {\n return this.transloco.translate(this.activity().type);\n });\n\n protected onGoToActivity(): void {\n if (this.isSelected()) {\n return;\n }\n\n this.cuiAuthService\n .exchangeToken({\n type: CuiTokenExchangeType.Activity,\n activityId: this.activity().activityId,\n companyId: this.companyId()\n })\n .pipe(takeUntilDestroyed(this.destroy))\n .subscribe(() => {\n const type = this.activity().type;\n const activityMap = {\n [CuiUserCompanyActivityType.Developer]: CuiApiUrl.Project,\n [CuiUserCompanyActivityType.Manufacture]: CuiApiUrl.Manufacturing\n };\n\n this.router.navigate([activityMap[type]]);\n });\n }\n}\n","<div\n class=\"wrapper\"\n (click)=\"onGoToActivity()\"\n [cuiTooltip]=\"activity().description\"\n>\n <button\n type=\"button\"\n class=\"activity-button\"\n >\n <cui-letter-box\n [letter]=\"activity().description[0]\"\n [shape]=\"'rounded'\"\n [backgroundColor]=\"letterBackgroundColor()\"\n size=\"md\"\n />\n <div class=\"text\">\n <span class=\"title\">{{ activity().description }}</span>\n <span class=\"sub-title\">{{ typeCompany() }}</span>\n </div>\n </button>\n\n @if (isSelected()) {\n <div class=\"icon-wrapper\">\n <cui-svg\n [icon]=\"'cuiIconCheck'\"\n color=\"var(--cui-info)\"\n />\n </div>\n }\n</div>\n","import { Component, computed, DestroyRef, inject, input } from '@angular/core';\nimport {CuiTokenExchangeType, CuiTokenResponse, CuiUserCompany} from '@cuby-ui/api';\nimport { CuiLetterBoxComponent, CuiSvgModule } from '../../../components';\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from '../user-action-context.option';\n\nimport { CuiAuthService } from '../../../providers';\nimport { CuiTokenData, CuiTokenRole } from '../../../services';\nimport { TranslocoPipe } from '@jsverse/transloco';\nimport { CuiTooltip } from '../../../directives';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\nimport {Observable} from \"rxjs\";\nimport {Router} from \"@angular/router\";\n\n@Component({\n selector: 'cui-company-item',\n standalone: true,\n imports: [CuiLetterBoxComponent, CuiSvgModule, TranslocoPipe, CuiTooltip],\n templateUrl: './company-item.component.html',\n styleUrl: './company-item.component.scss',\n host: {\n '[class.selected]': 'isSelected()'\n }\n})\nexport class CompanyItemComponent {\n private readonly router = inject(Router);\n private readonly cuiAuthService = inject(CuiAuthService);\n private readonly cuiActivityCompanyService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\n\n private readonly COMPANY: string = 'company';\n private readonly destroy = inject(DestroyRef);\n\n protected readonly isSelected = computed(() =>\n this.cuiActivityCompanyService.checkIsCurrentCompany(this.company().companyId)\n );\n\n protected readonly urlCompanyTemplate = computed(() => {\n const origin = window.location.origin;\n const userBasePath = '/cuby-platform/user/works';\n const adminBasePath = '/cuby-platform/admin/companies/edit';\n\n return {\n userLink: `${origin}${userBasePath}/${this.COMPANY}/{id}/company-structure`,\n adminLink: `${origin}${adminBasePath}/{id}`\n };\n });\n\n public readonly company = input.required<CuiUserCompany>();\n public readonly selected = input(false);\n\n public getRoles(): string[] {\n const token = this.cuiAuthService.getAccessTokenData<CuiTokenData>();\n\n return token.realm_access.roles;\n }\n\n public checkIsAdmin(): boolean {\n const roles = this.getRoles();\n\n return roles.includes(CuiTokenRole.Admin);\n }\n\n protected onGoToCompany(): void {\n if (this.isSelected()) {\n return;\n }\n\n const { adminLink, userLink } = this.urlCompanyTemplate();\n const linkTemplate = this.checkIsAdmin() ? adminLink : userLink;\n const url = linkTemplate.replace('{id}', this.company().companyId);\n\n this.wentWorkspace(CuiTokenExchangeType.Company, this.company().companyId).subscribe(() => {\n this.router.navigateByUrl(url);\n });\n }\n\n private wentWorkspace(type: CuiTokenExchangeType, companyId: string): Observable<CuiTokenResponse> {\n return this.cuiAuthService\n .exchangeToken({\n type,\n companyId\n })\n .pipe(takeUntilDestroyed(this.destroy));\n }\n}\n","<div\n class=\"title-company\"\n (click)=\"onGoToCompany()\"\n [cuiTooltip]=\"company().name\"\n>\n <button\n type=\"button\"\n class=\"company-button\"\n >\n <cui-letter-box\n [letter]=\"company().name[0]\"\n [backgroundColor]=\"'var(--cui-orange-500)'\"\n size=\"md\"\n />\n <div class=\"text\">\n <span class=\"title\">{{ company().name }}</span>\n <span class=\"sub-title\">{{ 'COMPANY' | transloco }}</span>\n </div>\n </button>\n\n @if (isSelected()) {\n <div class=\"icon-wrapper\">\n <cui-svg\n [icon]=\"'cuiIconCheck'\"\n color=\"var(--cui-info)\"\n />\n </div>\n }\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport {ChangeDetectionStrategy, Component, effect, inject, output, signal} from '@angular/core';\nimport { LangDefinition, TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\nimport { CuiApiUrl } from '@cuby-ui/api';\n\nimport {\n CuiButtonModule,\n CuiContextMenuModule,\n CuiDropdownDirective,\n CuiDropdownWrapperComponent,\n CuiLetterBoxComponent,\n CuiSvgModule\n} from '../../components';\nimport type { CuiExchangeTokenSession, CuiTheme } from '../../services';\nimport { CuiThemeService } from '../../services';\nimport { CuiActivityItemComponent } from './activity-item';\nimport { CUI_ACTIVITY_SERVICE_TOKEN } from './user-action-context.option';\nimport { CuiAuthService } from '../../providers';\nimport { CompanyItemComponent } from './company-item';\nimport {CuiUserCompanyActivity} from \"@cuby-ui/api/platform/models/user-company-api.options\";\nimport {CuiActivityImplService} from \"./services\";\n\n@Component({\n selector: 'cui-user-action-context-menu',\n standalone: true,\n imports: [\n TranslocoDirective,\n CuiSvgModule,\n CuiDropdownDirective,\n CuiDropdownWrapperComponent,\n CuiLetterBoxComponent,\n CuiButtonModule,\n CuiContextMenuModule,\n CuiActivityItemComponent,\n AsyncPipe,\n CompanyItemComponent,\n CuiActivityItemComponent\n ],\n templateUrl: './user-action-context-menu.component.html',\n styleUrl: './user-action-context-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiUserActionContextMenuComponent {\n private readonly translocoService = inject(TranslocoService);\n private readonly cuiWindow = inject(CUI_WINDOW);\n private readonly cuiThemeService = inject(CuiThemeService);\n private readonly cuiAuthService = inject(CuiAuthService);\n private readonly cuiActivityService = inject(CUI_ACTIVITY_SERVICE_TOKEN);\n\n private readonly authData = this.cuiAuthService.getAccessTokenData<CuiExchangeTokenSession>();\n\n protected readonly langs = this.translocoService.getAvailableLangs();\n protected readonly email = this.authData.email;\n protected readonly fullName = this.authData.name;\n\n protected readonly theme$ = this.cuiThemeService.asObservable();\n protected readonly lang$ = this.translocoService.langChanges$;\n\n protected readonly isOpen = signal(false);\n protected readonly companies = this.cuiActivityService.companies;\n\n public readonly currentActivityChange = output<CuiUserCompanyActivity | null>();\n\n constructor() {\n this.cuiActivityService.initActivityData();\n this.findCurrentActivity()\n }\n\n protected onLogout(): void {\n this.cuiAuthService.logOut();\n }\n\n protected onToggleOpenState(open: boolean): void {\n this.isOpen.set(open);\n }\n\n protected onGoToPlatform(): void {\n this.cuiWindow.location.href = `${this.cuiWindow.location.origin}/${CuiApiUrl.Platform}`;\n }\n\n protected onChangeTheme(theme: CuiTheme): void {\n this.cuiThemeService.next(theme);\n }\n\n protected onChangeLang(lang: string | LangDefinition): void {\n if (typeof lang === 'string') {\n this.translocoService.setActiveLang(lang);\n\n return;\n }\n\n this.translocoService.setActiveLang(lang.label);\n }\n\n protected findCurrentActivity(): void {\n effect(() => {\n const companies = this.companies();\n for (const company of companies) {\n for (const activity of company.contexts) {\n if (this.cuiActivityService.checkIsCurrentActivity(activity.activityId)) {\n return this.currentActivityChange.emit(activity);\n }\n }\n }\n this.currentActivityChange.emit(null);\n });\n }\n}\n","@let currentTheme = theme$ | async;\n@let currentLang = lang$ | async;\n\n<ng-container *transloco=\"let t\">\n <button\n type=\"button\"\n [cuiDropdown]=\"content\"\n class=\"select\"\n (isOpened)=\"onToggleOpenState($event)\"\n >\n <ng-content />\n </button>\n\n <ng-template #content>\n @if (isOpen()) {\n <cui-dropdown-wrapper\n width=\"300px\"\n maxHeight=\"500px\"\n >\n <div\n #dropdownContainer\n class=\"wrapper\"\n >\n <div class=\"block-name\">\n <div>\n <cui-letter-box\n [letter]=\"fullName[0]\"\n [shape]=\"'rounded'\"\n size=\"md\"\n />\n </div>\n <div>\n <ul class=\"title-text\">\n {{\n fullName\n }}\n </ul>\n <ul class=\"subtitle-text\">\n {{\n email\n }}\n </ul>\n </div>\n </div>\n <div\n class=\"wrapper-platform block-platform\"\n (click)=\"onGoToPlatform()\"\n >\n <cui-svg\n icon=\"cuiIconLogo\"\n color=\"var(--cui-base-900)\"\n />\n <div>{{ t('CUBY_PLATFORM') }}</div>\n </div>\n <div class=\"list-company\">\n @for (company of companies(); track company.id) {\n <cui-company-item [company]=\"company\" />\n\n <div class=\"list-activity\">\n @for (activity of company.contexts; track activity) {\n <cui-activity-item\n class=\"activity-item\"\n [activity]=\"activity\"\n [companyId]=\"company.companyId\"\n />\n } @empty {\n <div class=\"sub-title-text\">{{ t('YOU_DONT_HAVE_ACTIVITY_IN_THIS_COMPANY') }}</div>\n }\n </div>\n } @empty {\n <div class=\"sub-title-text\">{{ t('YOU_DONT_HAVE_COMPANY') }}</div>\n }\n </div>\n <div class=\"block-button\">\n <button type=\"button\">\n <div class=\"content-button\">\n <cui-svg icon=\"cuiIconPaletteSm\" />\n <div class=\"text-and-sub-button\">\n {{ t('SWITCH_THEME') }}\n <div class=\"group-sub-button\">\n <div\n [class.container-sub-button__select]=\"currentTheme === 'dark'\"\n class=\"container-sub-button\"\n >\n <cui-svg\n icon=\"cuiIconMoon\"\n color=\"var(--cui-base-500)\"\n (click)=\"onChangeTheme('dark')\"\n />\n </div>\n <div\n [class.container-sub-button__select]=\"currentTheme === 'light'\"\n class=\"container-sub-button\"\n >\n <cui-svg\n icon=\"cuiIconSun\"\n color=\"var(--cui-base-500)\"\n (click)=\"onChangeTheme('light')\"\n />\n </div>\n </div>\n </div>\n </div>\n </button>\n <button type=\"button\">\n <div class=\"content-button\">\n <cui-svg icon=\"cuiIconGlobeSm\" />\n <div class=\"text-and-sub-button\">\n {{ t('LANGUAGE') }}\n <div class=\"group-sub-button\">\n @for (lang of langs; track lang) {\n <div\n [class.container-sub-button__select]=\"currentLang === lang\"\n class=\"container-sub-button\"\n (click)=\"onChangeLang(lang)\"\n >\n {{ lang }}\n </div>\n }\n </div>\n </div>\n </div>\n </button>\n <button\n type=\"button\"\n (click)=\"onLogout()\"\n >\n <div class=\"content-button\">\n <cui-svg icon=\"cuiIconLogOutSm\" />\n <div class=\"text-and-sub-button\">{{ t('LOG_OUT') }}</div>\n </div>\n </button>\n </div>\n </div>\n </cui-dropdown-wrapper>\n }\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiFrameApiService, Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { Subscription } from 'rxjs';\r\n\r\nimport type { CuiEditorConfig } from '../../editor';\r\nimport { CuiEditorComponent } from '../../editor';\r\nimport { CuiEmptyStateComponent } from '../../components';\r\n\r\nimport { CuiImageUrl } from './framer-preview.options';\r\n\r\n@Component({\r\n selector: 'cui-framer-preview',\r\n imports: [TranslocoDirective, CuiEditorComponent, CuiEmptyStateComponent],\r\n standalone: true,\r\n templateUrl: './framer-preview.component.html',\r\n styleUrl: './framer-preview.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFramerPreviewComponent {\r\n private readonly hostElement = inject(ElementRef).nativeElement;\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n\r\n private subscription!: Subscription;\r\n\r\n protected isVideo = false;\r\n protected editorConfig!: CuiEditorConfig;\r\n\r\n protected readonly jText = signal<CuiNullable<JTextFragment>>(null);\r\n protected readonly thumbnailUrl = signal<CuiNullable<CuiImageUrl>>(null);\r\n\r\n protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\r\n\r\n public readonly framerId = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly editorResourceUrl = input.required<string>();\r\n public readonly title = input<string>();\r\n\r\n constructor() {\r\n this.initConfigEffect();\r\n this.initFramerIdEffect();\r\n }\r\n\r\n private initConfigEffect(): void {\r\n effect(\r\n () => {\r\n this.editorConfig = {\r\n element: this.hostElement,\r\n ...this.config(),\r\n readOnly: true\r\n };\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n private initFramerIdEffect(): void {\r\n effect(\r\n () => {\r\n const framerId = this.framerId();\r\n\r\n if (!framerId) {\r\n return;\r\n }\r\n\r\n this.subscription?.unsubscribe();\r\n this.initFrameFragments();\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n private initFrameFragments(): void {\r\n const frameId = this.framerId();\r\n\r\n this.jText.set(null);\r\n this.thumbnailUrl.set(null);\r\n\r\n if (!frameId) {\r\n return;\r\n }\r\n\r\n const fragmentActions = {\r\n J_TEXT: (fragment: Fragment): void => {\r\n this.jText.set(fragment as JTextFragment);\r\n },\r\n RESOURCE_FILE: (fragment: Fragment): void => {\r\n this.setResourceFile(fragment as ResourceFragment);\r\n }\r\n };\r\n\r\n this.subscription = this.frameApiService\r\n .getFrame(frameId, this.editorConfig.requestOptions)\r\n .subscribe((frame) => {\r\n frame.fragments.forEach((fragment) => fragmentActions[fragment.type](fragment));\r\n });\r\n }\r\n\r\n private setResourceFile(resource: ResourceFragment): void {\r\n const url = `${this.editorResourceUrl()}/${resource.fileId}`;\r\n\r\n this.isVideo = resource?.name?.split('.').pop() === 'mp4';\r\n\r\n if (!url) {\r\n return;\r\n }\r\n\r\n this.thumbnailUrl.set({ src: resource.fileId && url, name: resource.name || resource.type });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (jText()) {\r\n @if (!isDescriptionEmpty()) {\r\n @let url = thumbnailUrl();\r\n\r\n @if (url?.src; as src) {\r\n @if (isVideo) {\r\n <video\r\n class=\"thumbnail\"\r\n [src]=\"src\"\r\n controls\r\n ></video>\r\n } @else {\r\n <img\r\n class=\"thumbnail\"\r\n [src]=\"src\"\r\n [alt]=\"url?.name\"\r\n />\r\n }\r\n }\r\n\r\n <div class=\"content\">\r\n @if (title(); as title) {\r\n <div class=\"title\">{{ title }}</div>\r\n }\r\n\r\n @if (jText()?.id; as id) {\r\n <div class=\"wrapper\">\r\n <cui-editor\r\n class=\"editor\"\r\n [editorApiId]=\"id\"\r\n [config]=\"editorConfig\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\r\n }\r\n }\r\n</ng-container>\r\n","/**\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.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","i1.CuiFormFieldComponent","i1.CuiBadgeComponent","i1.CuiInputTextComponent","i2.CuiTextFieldIconLeftDirective","i1.CuiDialogHeaderComponent","i2.CuiTooltipDirective"],"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/directives/text-field-controller/text-field.controller.ts","../../../projects/core/directives/text-field-controller/text-field-icon-left.directive.ts","../../../projects/core/directives/text-field-controller/text-field-id.directive.ts","../../../projects/core/directives/text-field-controller/text-field-is-error.directive.ts","../../../projects/core/directives/text-field-controller/text-field-placeholder.directive.ts","../../../projects/core/directives/text-field-controller/text-field-size.directive.ts","../../../projects/core/directives/text-field-controller/text-field-controller.module.ts","../../../projects/core/directives/text-field-controller/text-field-controller.provider.ts","../../../projects/core/animations/animations.ts","../../../projects/core/classes/accessors.ts","../../../projects/core/classes/vehicle.ts","../../../projects/core/classes/driver.ts","../../../projects/core/services/position.service.ts","../../../projects/core/services/theme.options.ts","../../../projects/core/services/theme.service.ts","../../../projects/core/services/loader.options.ts","../../../projects/core/services/loader.service.ts","../../../projects/core/services/visual-viewport.service.ts","../../../projects/core/services/token.service.ts","../../../projects/core/services/auth.service.ts","../../../projects/core/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/viewport.ts","../../../projects/core/utils/format/remove-spaces.ts","../../../projects/core/utils/format/replace.ts","../../../projects/core/utils/miscellaneous/is-obscured.ts","../../../projects/core/utils/miscellaneous/override-options.ts","../../../projects/core/utils/miscellaneous/to-animation-options.ts","../../../projects/core/utils/default-validators/extra-spaces.options.ts","../../../projects/core/utils/default-validators/extra-spaces.validators.ts","../../../projects/core/utils/default-validators/create-default-validators.ts","../../../projects/core/utils/check-fixed-position.ts","../../../projects/core/directives/tooltip/tooltip.providers.ts","../../../projects/core/directives/tooltip/tooltip.service.ts","../../../projects/core/directives/tooltip/tooltip-driver.directive.ts","../../../projects/core/directives/tooltip/tooltip-options.directive.ts","../../../projects/core/directives/tooltip/tooltip-hover.directive.ts","../../../projects/core/directives/tooltip/tooltip-position.directive.ts","../../../projects/core/directives/tooltip/tooltip.directive.ts","../../../projects/core/directives/tooltip/tooltip-pointer.directive.ts","../../../projects/core/directives/tooltip/tooltip-unstyled.component.ts","../../../projects/core/directives/tooltip/tooltip.component.ts","../../../projects/core/directives/tooltip/tooltip-describe.directive.ts","../../../projects/core/directives/tooltip/tooltip-host.directive.ts","../../../projects/core/directives/tooltip/tooltip-manual.directive.ts","../../../projects/core/directives/tooltip/tooltip-overflow.directive.ts","../../../projects/core/directives/tooltip/tooltip.ts","../../../projects/core/directives/tooltip/tooltips.component.ts","../../../projects/core/directives/tooltip/tooltips.template.html","../../../projects/core/components/alert-hint/alert-hint.component.ts","../../../projects/core/components/alert-hint/alert-hint.component.html","../../../projects/core/components/badge/badge.options.ts","../../../projects/core/components/badge/badge.component.ts","../../../projects/core/components/badge/badge.template.html","../../../projects/core/components/badge/badge.module.ts","../../../projects/core/components/banner/banner.options.ts","../../../projects/core/components/banner/banner.component.ts","../../../projects/core/components/banner/banner.template.html","../../../projects/core/components/banner/banner.module.ts","../../../projects/core/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/core/components/breadcrumbs/breadcrumbs.template.html","../../../projects/core/components/breadcrumbs/breadcrumb/breadcrumb.component.ts","../../../projects/core/components/breadcrumbs/breadcrumb/breadcrumb.template.html","../../../projects/core/components/breadcrumbs/breadcrumbs.module.ts","../../../projects/core/components/button-group/button-group.component.ts","../../../projects/core/components/button-group/button-group.template.html","../../../projects/core/components/button-group/button-group.module.ts","../../../projects/core/components/checkbox/checkbox.component.ts","../../../projects/core/components/checkbox/checkbox.module.ts","../../../projects/core/components/content-header/content-header.component.ts","../../../projects/core/components/content-header/content-header.component.html","../../../projects/core/components/root/root.options.ts","../../../projects/core/components/dialog/dialog.tokens.ts","../../../projects/core/components/dialog/dialogs.component.ts","../../../projects/core/components/dialog/dialogs.template.html","../../../projects/core/components/root/root.component.ts","../../../projects/core/components/root/root.template.html","../../../projects/core/components/dialog/dialog.component.ts","../../../projects/core/components/dialog/dialog.template.html","../../../projects/core/components/dialog/dialog-actions/dialog-actions.component.ts","../../../projects/core/components/dialog/dialog-actions/dialog-actions.template.html","../../../projects/core/components/dialog/dialog-header/dialog-header.component.ts","../../../projects/core/components/dialog/dialog-header/dialog-header.template.html","../../../projects/core/components/dialog/dialog.module.ts","../../../projects/core/components/dialog/dialog.service.ts","../../../projects/core/components/root/root.module.ts","../../../projects/core/components/context-menu/context-menu.component.ts","../../../projects/core/components/context-menu/context-menu.component.html","../../../projects/core/components/context-menu/context-menu.module.ts","../../../projects/core/components/dropdown/dropdown.directive.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.html","../../../projects/core/components/form-field/form-field.component.ts","../../../projects/core/components/form-field/form-field.template.html","../../../projects/core/components/form-field/form-field.module.ts","../../../projects/core/components/hint/hint.component.ts","../../../projects/core/components/hint/hint.template.html","../../../projects/core/components/hint/hint.module.ts","../../../projects/core/components/icon-button/icon-button.component.ts","../../../projects/core/components/icon-button/icon-button.template.html","../../../projects/core/components/icon-button/icon-button.module.ts","../../../projects/core/components/input-number/input-number.component.ts","../../../projects/core/components/input-number/input-number.template.html","../../../projects/core/components/input-number/input-number.module.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.html","../../../projects/core/components/ghost-input/ghost-input.component.ts","../../../projects/core/components/input-password/input-password.component.ts","../../../projects/core/components/input-password/input-password.template.html","../../../projects/core/components/input-password/input-password.module.ts","../../../projects/core/components/input-text/input-text.component.ts","../../../projects/core/components/input-text/input-text.template.html","../../../projects/core/components/input-text/input-text.module.ts","../../../projects/core/components/input-time/input-time.options.ts","../../../projects/core/components/input-time/input-time.component.ts","../../../projects/core/components/input-time/input-time.template.html","../../../projects/core/components/input-time/input-time.module.ts","../../../projects/core/components/inserted/inserted.component.ts","../../../projects/core/components/inserted/inserted.component.html","../../../projects/core/components/label/label.component.ts","../../../projects/core/components/label/label.template.html","../../../projects/core/components/label/label.module.ts","../../../projects/core/components/letter-box/letter-box.component.ts","../../../projects/core/components/letter-box/letter-box.component.html","../../../projects/core/components/render-dynamic-components/render-dynamic-components.service.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.html","../../../projects/core/widgets/ui/inserted/inserted.component.ts","../../../projects/core/widgets/ui/inserted/inserted.component.html","../../../projects/core/widgets/ui/modal-header/modal-header.component.ts","../../../projects/core/widgets/ui/modal-header/modal-header.component.html","../../../projects/core/components/options-button/options-button.component.ts","../../../projects/core/components/options-button/options-button.component.html","../../../projects/core/components/radio/radio.component.ts","../../../projects/core/components/radio/radio.module.ts","../../../projects/core/components/select/select.component.ts","../../../projects/core/components/select/select.template.html","../../../projects/core/components/select/select.module.ts","../../../projects/core/components/empty-state/empty-state.component.ts","../../../projects/core/components/empty-state/empty-state.component.html","../../../projects/core/components/sidebar/sidebar.options.ts","../../../projects/core/components/sidebar/sidebar.service.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.html","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.ts","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.html","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.ts","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.html","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.html","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.html","../../../projects/core/components/card-wrapper/card-wrapper.component.ts","../../../projects/core/components/card-wrapper/card-wrapper.component.html","../../../projects/core/components/layout/layout.component.ts","../../../projects/core/components/layout/layout.component.html","../../../projects/core/components/tabs/tabs.options.ts","../../../projects/core/components/tab/tab.component.ts","../../../projects/core/components/tabs/components/abstract-tabs/abstract-tabs.component.ts","../../../projects/core/components/tabs/components/abstract-tabs/abstract-tabs.component.html","../../../projects/core/components/tabs/services/tabs.service.ts","../../../projects/core/components/tabs/tabs.provider.ts","../../../projects/core/components/tabs/tabs.component.ts","../../../projects/core/components/tabs/tabs.component.html","../../../projects/core/components/textarea/textarea.component.ts","../../../projects/core/components/textarea/textarea.module.ts","../../../projects/core/components/toggle/toggle.component.ts","../../../projects/core/components/toggle/toggle.module.ts","../../../projects/core/components/file-icon/file-icon.options.ts","../../../projects/core/components/file-icon/file-icon.component.ts","../../../projects/core/components/file-icon/file-icon.component.html","../../../projects/core/editor/constants/editor.constants.ts","../../../projects/core/editor/tools/header.tool.ts","../../../projects/core/editor/tools/list.tool.ts","../../../projects/core/editor/tools/selection-base.tool.ts","../../../projects/core/editor/tools/bold.tool.ts","../../../projects/core/editor/tools/italic.tool.ts","../../../projects/core/editor/utils/url.validator.ts","../../../projects/core/editor/services/editor-service.options.ts","../../../projects/core/editor/utils/generate-id.ts","../../../projects/core/editor/services/editor.service.ts","../../../projects/core/editor/services/markers.service.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.html","../../../projects/core/editor/components/marker-select/marker-select.component.ts","../../../projects/core/editor/components/marker-select/marker-select.component.html","../../../projects/core/editor/components/marker-select/marker-select.options.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.html","../../../projects/core/editor/components/marker-modal/marker-modal.options.ts","../../../projects/core/editor/utils/create-link-modal.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.html","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.options.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.html","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.options.ts","../../../projects/core/editor/pipes/file-size.pipe.ts","../../../projects/core/editor/components/editor-tool/editor-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.html","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.options.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.html","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.options.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.html","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.options.ts","../../../projects/core/editor/utils/create-tool-modal.ts","../../../projects/core/editor/utils/open-file-in-browser.ts","../../../projects/core/editor/utils/file-uploader.ts","../../../projects/core/editor/utils/set-loading.ts","../../../projects/core/editor/utils/create-tools-data.ts","../../../projects/core/editor/utils/remove-element-tag-wrapper.ts","../../../projects/core/editor/utils/copy-text-to-clipboard.ts","../../../projects/core/editor/utils/create-tooltip.ts","../../../projects/core/editor/utils/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/events/editor-drag.event.ts","../../../projects/core/editor/events/editor-keyboard.event.ts","../../../projects/core/editor/events/editor-modal.event.ts","../../../projects/core/editor/events/editor-tooltip.event.ts","../../../projects/core/editor/events/set-editor-events.ts","../../../projects/core/editor/editor.component.ts","../../../projects/core/editor/editor.component.html","../../../projects/core/editor/widgets/editor-readonly/editor-resize-observer.directive.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.html","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.ts","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.html","../../../projects/core/editor/widgets/editor-block/editor-block.component.ts","../../../projects/core/editor/widgets/editor-block/editor-block.component.html","../../../projects/core/editor/config/custom-elements.ts","../../../projects/core/editor/providers/editor.provider.ts","../../../projects/core/interceptors/x-ndjson.interceptor.ts","../../../projects/core/interceptors/loader.interceptor.ts","../../../projects/core/interceptors/error-handler.interceptor.ts","../../../projects/core/providers/auth.options.ts","../../../projects/core/services/browser-auth.service.ts","../../../projects/core/services/mobile-auth.service.ts","../../../projects/core/providers/auth.provider.ts","../../../projects/core/interceptors/auth.interceptor.ts","../../../projects/core/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-accordion',\n templateUrl: './accordion.template.html',\n styleUrls: ['./accordion.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAccordionComponent {}\n","<ng-content select=\"cui-accordion-item\"></ng-content>\n","import { Directive, effect, inject, input, model, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[cuiAccordion]',\n standalone: true,\n host: {\n '(click)': 'onToggle($event)'\n }\n})\nexport class CuiAccordionDirective {\n private readonly renderer = inject(Renderer2);\n\n private wrapper!: HTMLElement;\n\n public readonly content = input.required<HTMLElement>();\n public readonly isOpen = model(true);\n\n constructor() {\n this.initWrapperEffect();\n this.initOpenChangesEffect();\n }\n\n protected onToggle(event: Event): void {\n if (event.defaultPrevented) {\n return;\n }\n\n this.isOpen.update((prev) => !prev);\n }\n\n private initWrapperEffect(): void {\n const effectRef = effect(() => {\n const content = this.content();\n\n this.wrapper = this.renderer.createElement('div');\n\n content.after(this.wrapper);\n this.renderer.appendChild(this.wrapper, content);\n\n effectRef.destroy();\n });\n }\n\n private initOpenChangesEffect(): void {\n effect(() => {\n const isOpen = this.isOpen();\n const doAction = isOpen ? this.close : this.open;\n\n doAction.call(this, this.wrapper);\n });\n }\n\n private open(wrapper: HTMLElement): void {\n this.renderer.setStyle(wrapper, 'visibility', 'hidden');\n this.renderer.setStyle(wrapper, 'height', '0');\n this.renderer.setStyle(wrapper, 'overflow', 'hidden');\n }\n\n private close(wrapper: HTMLElement): void {\n this.renderer.setStyle(wrapper, 'visibility', 'visible');\n this.renderer.setStyle(wrapper, 'height', '');\n this.renderer.setStyle(wrapper, 'overflow', '');\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type {\n CuiAppearanceAction,\n CuiAppearanceActionCyan,\n CuiAppearanceActionViolet,\n CuiAppearanceDestructive,\n CuiAppearanceFlat,\n CuiAppearanceGhost,\n CuiAppearanceLink,\n CuiAppearanceOutlined,\n CuiAppearanceOutlinedGray,\n CuiAppearanceSecondary,\n CuiAppearanceVividSuccess,\n CuiButtonThemeCyan,\n CuiButtonThemeDefault,\n CuiButtonThemeSuccess,\n CuiButtonThemeViolet,\n CuiButtonThemeVividSuccess,\n CuiShapeRounded,\n CuiSizeLg,\n CuiSizeMd,\n CuiSizeSm,\n CuiSizeXs,\n CuiSizeXxs,\n CuiSizeXxxs\n} from '../../types';\n\nexport interface CuiButtonOptions {\n readonly appearance: CuiButtonAppearance;\n readonly shape: CuiButtonShape;\n readonly size: CuiButtonSize;\n readonly theme: CuiButtonTheme;\n}\n\nexport type CuiButtonAppearance =\n | CuiAppearanceAction\n | CuiAppearanceSecondary\n | CuiAppearanceOutlined\n | CuiAppearanceOutlinedGray\n | CuiAppearanceGhost\n | CuiAppearanceFlat\n | CuiAppearanceVividSuccess\n | CuiAppearanceDestructive\n | CuiAppearanceLink\n | CuiAppearanceActionViolet\n | CuiAppearanceActionCyan;\nexport type CuiButtonTheme =\n | CuiButtonThemeDefault\n | CuiButtonThemeViolet\n | CuiButtonThemeCyan\n | CuiButtonThemeSuccess\n | CuiButtonThemeVividSuccess;\nexport type CuiButtonSize = CuiSizeXxxs | CuiSizeXxs | CuiSizeXs | CuiSizeSm | CuiSizeMd | CuiSizeLg;\nexport type CuiButtonShape = CuiShapeRounded | null;\n\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\n appearance: 'action',\n shape: null,\n size: 'sm',\n theme: 'default'\n};\n\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\n factory: () => CUI_BUTTON_DEFAULT_OPTIONS\n});\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { CUI_ICONS, cuiIsIcon } from '@cuby-ui/icons';\n\n@Component({\n selector: 'cui-svg[icon]',\n templateUrl: './svg.template.html',\n styleUrls: ['./svg.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSvgComponent {\n private readonly domSanitizer = inject(DomSanitizer);\n\n protected safeSvgContent!: SafeHtml;\n\n @Input()\n public width?: number;\n\n @Input()\n public height?: number;\n\n @Input()\n @HostBinding('style.--stroke-width')\n public strokeWidth?: number;\n\n @Input()\n @HostBinding('style.--color')\n public color?: string;\n\n @Input()\n public set icon(icon: CuiIcon | string) {\n // TODO: В данном случае подключаются все иконки (вероятно, можно как-то оптимизировано их подключать)\n this.safeSvgContent = this.domSanitizer.bypassSecurityTrustHtml(cuiIsIcon(icon) ? CUI_ICONS[icon] : icon);\n }\n\n @HostBinding('class._with-stroke-width')\n public get isWithStrokeWidth(): boolean {\n return !!this.strokeWidth;\n }\n\n @HostBinding('class._with-color')\n public get isWithColor(): boolean {\n return !!this.color;\n }\n}\n","<span\n [innerHTML]=\"safeSvgContent\"\n [style.width.px]=\"width\"\n [style.height.px]=\"height\"\n></span>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Input,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport {\n CUI_BUTTON_OPTIONS,\n CuiButtonAppearance,\n CuiButtonOptions,\n CuiButtonSize,\n CuiButtonTheme\n} from './button.options';\n\n@Component({\n selector: 'button[cuiButton], a[cuiButton]',\n templateUrl: './button.template.html',\n styleUrls: ['./styles/index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\n\n private readonly ICON_XS_SIZES = ['xxs', 'xxxs'];\n protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\n protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonAppearance[] = [\n 'secondary',\n 'outlined',\n 'outlined-gray',\n 'ghost'\n ];\n\n protected _theme = this.cuiButtonOptions.theme;\n protected _appearance = this.cuiButtonOptions.appearance;\n protected _size = this.cuiButtonOptions.size;\n\n protected iconColor = this.getIconColor(this._appearance);\n protected iconDimensions = {\n width: 20,\n height: 20\n };\n\n @Input()\n @HostBinding('attr.data-shape')\n public shape = this.cuiButtonOptions.shape;\n\n @Input()\n @HostBinding('class._disabled')\n public disabled = false;\n\n @Input()\n @HostBinding('class._loading')\n public isLoaderShown = false;\n\n @Input()\n public icon?: CuiIcon | string;\n\n @Input()\n public iconRight?: CuiIcon | string;\n\n @Input()\n @HostBinding('attr.data-appearance')\n public get appearance(): CuiButtonAppearance {\n return this._appearance;\n }\n\n public set appearance(appearance: CuiButtonAppearance) {\n this._appearance = appearance;\n\n this.changeIconColor();\n }\n\n @Input()\n @HostBinding('attr.data-theme')\n public get theme(): CuiButtonTheme {\n return this._theme;\n }\n\n public set theme(theme: CuiButtonTheme) {\n this._theme = theme;\n\n this.changeIconColor();\n }\n\n @Input()\n @HostBinding('attr.data-size')\n public get size(): CuiButtonSize {\n return this._size;\n }\n\n public set size(size: CuiButtonSize) {\n this._size = size;\n\n if (this.ICON_XS_SIZES.includes(size)) {\n this.iconDimensions = {\n width: 16,\n height: 16\n };\n\n return;\n }\n\n this.iconDimensions = {\n width: 20,\n height: 20\n };\n }\n\n @HostBinding('class._only-icon')\n protected containsOnlyIcon = false;\n\n @HostBinding('disabled')\n protected get isDisabled(): boolean {\n return this.disabled || this.isLoaderShown;\n }\n\n @ViewChild('content')\n protected content!: ElementRef<HTMLSpanElement>;\n\n public ngOnInit(): void {\n this.initIconColor();\n }\n\n private initIconColor(): void {\n this.changeIconColor();\n }\n\n private changeIconColor(): void {\n Promise.resolve().then(() => {\n this.iconColor = this.getIconColor(this._appearance);\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n private getIconColor(appearance: CuiButtonOptions['appearance']): string {\n if (this.BUTTON_ICONS_COLOR_BASE_500.includes(appearance)) {\n return this.COLOR_BASE_500;\n }\n\n return 'currentColor';\n }\n}\n","<span\n class=\"c-wrapper\"\n [class.c-wrapper_invisible]=\"isLoaderShown\"\n>\n <cui-svg\n *ngIf=\"icon\"\n [icon]=\"icon\"\n [width]=\"iconDimensions.width\"\n [height]=\"iconDimensions.height\"\n [color]=\"iconColor\"\n ></cui-svg>\n <span\n #content\n class=\"c-content\"\n >\n <ng-content></ng-content>\n </span>\n <cui-svg\n *ngIf=\"iconRight\"\n [icon]=\"iconRight\"\n [width]=\"iconDimensions.width\"\n [height]=\"iconDimensions.height\"\n [color]=\"iconColor\"\n ></cui-svg>\n</span>\n<cui-svg\n *ngIf=\"isLoaderShown\"\n icon=\"cuiIconLoading\"\n [color]=\"iconColor\"\n class=\"c-loader\"\n></cui-svg>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { CuiAccordionAppearance } from './accordion-item.options';\n\n@Component({\n selector: 'cui-accordion-item',\n templateUrl: './accordion-item.template.html',\n styleUrls: ['./accordion-item.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAccordionItemComponent {\n @Input()\n public isOpen = true;\n\n @Input()\n public appearance: CuiAccordionAppearance = 'default';\n\n @Output()\n public readonly isOpenChange = new EventEmitter<boolean>();\n\n protected get buttonIcon(): CuiIcon {\n return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';\n }\n\n @HostBinding('attr.appearance')\n public get _appearance(): string {\n return this.appearance;\n }\n\n protected onRowToggle(): void {\n this.isOpen = !this.isOpen;\n\n this.isOpenChange.emit(this.isOpen);\n }\n}\n","<header class=\"c-header\">\n <button\n cuiButton\n appearance=\"ghost\"\n size=\"xxs\"\n [icon]=\"buttonIcon\"\n (click)=\"onRowToggle()\"\n ></button>\n <div class=\"c-header__wrapper\">\n <ng-content></ng-content>\n </div>\n</header>\n<div\n *ngIf=\"isOpen\"\n class=\"c-content\"\n>\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiSvgComponent } from './svg.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CuiSvgComponent],\n exports: [CuiSvgComponent]\n})\nexport class CuiSvgModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiButtonComponent } from './button.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiButtonComponent],\n exports: [CuiButtonComponent]\n})\nexport class CuiButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiAccordionComponent } from './accordion.component';\nimport { CuiAccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiButtonModule } from '../button';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule, CuiButtonModule],\n declarations: [CuiAccordionComponent, CuiAccordionItemComponent],\n exports: [CuiAccordionComponent, CuiAccordionItemComponent]\n})\nexport class CuiAccordionModule {}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nimport type { CuiStatus } from '../../types';\n\nexport type CuiNotificationIcons = Record<CuiStatus, { icon: string }>;\n\nexport type CuiNotificationIconOptions = Record<CuiStatus, { color: string }>;\n\nexport interface CuiNotificationOptions {\n readonly status: CuiStatus;\n readonly mode: 'default' | 'light';\n}\n\nexport const CUI_NOTIFICATION_DEFAULT_OPTIONS: CuiNotificationOptions = {\n status: 'info',\n mode: 'default'\n};\n\nexport const CUI_NOTIFICATION_OPTIONS = cuiCreateToken(CUI_NOTIFICATION_DEFAULT_OPTIONS);\n\nexport const CUI_NOTIFICATION_ICONS: CuiNotificationIcons = {\n info: {\n icon: 'cuiIconInfo'\n },\n success: {\n icon: 'cuiIconCheckCircle'\n },\n alert: {\n icon: 'cuiIconAlertTriangle'\n },\n error: {\n icon: 'cuiIconXCircle'\n }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE: CuiNotificationIconOptions = {\n info: {\n color: 'var(--c-info-icon-color)'\n },\n success: {\n color: 'var(--cui-green-500)'\n },\n alert: {\n color: 'var(--cui-yellow-400)'\n },\n error: {\n color: 'var(--cui-danger)'\n }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE: CuiNotificationIconOptions = {\n info: {\n color: 'var(--cui-info)'\n },\n success: {\n color: 'var(--cui-green-700)'\n },\n alert: {\n color: 'var(--cui-yellow-400)'\n },\n error: {\n color: 'var(--cui-danger)'\n }\n} as const;\n\nexport const CUI_NOTIFICATION_ICON_OPTIONS: Record<CuiNotificationOptions['mode'], CuiNotificationIconOptions> = {\n default: CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE,\n light: CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport {\n CUI_NOTIFICATION_ICON_OPTIONS,\n CuiNotificationIconOptions,\n CuiNotificationOptions\n} from './notification.options';\nimport { CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS } from './notification.options';\n\n@Component({\n selector: 'cui-notification',\n templateUrl: './notification.template.html',\n styleUrls: ['./notification.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiNotificationComponent implements CuiNotificationOptions, OnInit {\n private readonly cuiNotificationOptions = inject(CUI_NOTIFICATION_OPTIONS);\n\n protected readonly ICONS = CUI_NOTIFICATION_ICONS;\n protected readonly ICON_OPTIONS = CUI_NOTIFICATION_ICON_OPTIONS;\n\n protected iconOptions!: CuiNotificationIconOptions;\n\n @Input()\n @HostBinding('attr.data-status')\n public status = this.cuiNotificationOptions.status;\n\n @Input()\n @HostBinding('attr.data-mode')\n public mode = this.cuiNotificationOptions.mode;\n\n @Input()\n public isCloseable = false;\n\n @Output()\n public readonly closed = new EventEmitter<void>();\n\n public ngOnInit(): void {\n this.initIconOptions();\n }\n\n protected onClose(): void {\n this.closed.next();\n }\n\n private initIconOptions(): void {\n this.iconOptions = this.ICON_OPTIONS[this.mode];\n }\n}\n","<cui-svg\n class=\"c-icon\"\n [icon]=\"ICONS[status].icon\"\n [color]=\"iconOptions[status].color\"\n></cui-svg>\n<div class=\"c-content\">\n <ng-content></ng-content>\n</div>\n<button\n *ngIf=\"isCloseable\"\n class=\"c-button\"\n (click)=\"onClose()\"\n>\n <cui-svg\n icon=\"cuiIconX\"\n color=\"var(--cui-gray-0)\"\n />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { CuiNotificationComponent } from './notification.component';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiNotificationComponent],\n exports: [CuiNotificationComponent]\n})\nexport class CuiNotificationModule {}\n","import { inject, InjectionToken } from '@angular/core';\nimport { cuiCreateTokenFromFactory, CuiPopover } from '@cuby-ui/cdk';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiAlertOptions } from './alert.interfaces';\nimport { CUI_NOTIFICATION_OPTIONS } from '../notification';\n\nexport const CUI_ALERTS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([]));\n\nexport const CUI_ALERT_DEFAULT_OPTIONS: Omit<CuiAlertOptions, 'status'> = {\n label: '',\n needAutoClose: true,\n isCloseable: true,\n mode: 'default',\n position: 'right',\n resizing: 'fixed'\n};\n\nexport const CUI_ALERT_OPTIONS = cuiCreateTokenFromFactory(() => ({\n ...CUI_ALERT_DEFAULT_OPTIONS,\n ...inject(CUI_NOTIFICATION_OPTIONS)\n}));\n\nexport const CUI_ALERT_CONTEXT = new InjectionToken<CuiPopover<CuiAlertOptions>>('');\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, HostBinding } from '@angular/core';\n\nimport { CUI_ALERT_CONTEXT } from './alert.tokens';\nimport type { CuiAlertResizing } from './alert.types';\n\n@Component({\n selector: 'cui-alert',\n templateUrl: './alert.template.html',\n styleUrls: ['./alert.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAlertComponent implements OnInit {\n protected readonly context = inject(CUI_ALERT_CONTEXT);\n\n protected readonly AUTO_CLOSE_DURATION_IN_MILLISECONDS = 3000;\n\n @HostBinding('attr.data-resizing')\n protected get resizing(): CuiAlertResizing {\n return this.context.resizing;\n }\n\n public ngOnInit(): void {\n this.initAutoClose();\n }\n\n protected onClosed(): void {\n this.context.$implicit.complete();\n }\n\n private initAutoClose(): void {\n if (!this.context.needAutoClose) {\n return;\n }\n\n setTimeout(this.onClosed.bind(this), this.AUTO_CLOSE_DURATION_IN_MILLISECONDS);\n }\n}\n","<cui-notification\n [status]=\"context.status\"\n [mode]=\"context.mode\"\n [isCloseable]=\"context.isCloseable\"\n (closed)=\"onClosed()\"\n>\n <h2\n *ngIf=\"context.label\"\n class=\"c-heading\"\n >\n {{ context.label }}\n </h2>\n {{ context.content }}\n</cui-notification>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport type { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs';\n\nimport { CUI_ALERT_CONTEXT, CUI_ALERTS } from './alert.tokens';\nimport type { CuiAlertOptions } from './alert.interfaces';\n\n@Component({\n selector: 'cui-alerts',\n templateUrl: './alerts.template.html',\n styleUrls: ['./alerts.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiDestroyService]\n})\nexport class CuiAlertsComponent implements OnInit {\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n protected readonly alerts$: Observable<ReadonlyArray<CuiPopover<CuiAlertOptions>>> = inject(CUI_ALERTS);\n protected alertInjectors!: ReadonlyArray<Injector>;\n\n public ngOnInit(): void {\n this.initAlertInjectorsSubscription();\n }\n\n protected trackByFn(_: number, alert: CuiPopover<CuiAlertOptions>): string {\n return alert.id;\n }\n\n protected alertsMatcher(alert: CuiPopover<CuiAlertOptions>, position: string): boolean {\n return alert.position === position;\n }\n\n protected initAlertInjectorsSubscription(): void {\n this.alerts$.pipe(takeUntil(this.destroy$)).subscribe(\n (dialogs) =>\n (this.alertInjectors = dialogs.map((useValue) =>\n Injector.create({\n providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\n })\n ))\n );\n }\n}\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\n <div class=\"c-wrapper c-wrapper_position_center\">\n <ng-container\n *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'center'; let i = index; trackBy: trackByFn\"\n >\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\n </ng-container>\n </div>\n <div class=\"c-wrapper c-wrapper_position_right\">\n <ng-container\n *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher : 'right'; let i = index; trackBy: trackByFn\"\n >\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\n </ng-container>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiFilterPipe, CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiAlertComponent } from './alert.component';\nimport { CuiAlertsComponent } from './alerts.component';\nimport { CuiNotificationModule } from '../notification';\n\n@NgModule({\n imports: [CommonModule, CuiFilterPipe, CuiNotificationModule, CuiLetDirective],\n declarations: [CuiAlertComponent, CuiAlertsComponent],\n exports: [CuiAlertComponent, CuiAlertComponent, CuiAlertsComponent]\n})\nexport class CuiAlertModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { CuiPopoverService } from '@cuby-ui/cdk';\n\nimport { CUI_ALERT_OPTIONS, CUI_ALERTS } from './alert.tokens';\nimport { CuiAlertComponent } from './alert.component';\nimport type { CuiAlertOptions } from './alert.interfaces';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new CuiAlertService(CUI_ALERTS, CuiAlertComponent, inject(CUI_ALERT_OPTIONS))\n})\nexport class CuiAlertService extends CuiPopoverService<CuiAlertOptions> {}\n","import type { CuiIcon } from '@cuby-ui/icons';\n\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport class CuiTextFieldController {\n constructor(\n private readonly iconLeftDirective: CuiTextFieldIconLeftDirective,\n private readonly idDirective: CuiTextFieldIdDirective,\n private readonly isErrorDirective: CuiTextFieldIsErrorDirective,\n private readonly placeholderDirective: CuiTextFieldPlaceholderDirective,\n private readonly sizeDirective: CuiTextFieldSizeDirective\n ) {}\n\n public get iconLeft(): CuiIcon | string | undefined {\n return this.iconLeftDirective.iconLeft;\n }\n\n public get id(): string | undefined {\n return this.idDirective.id;\n }\n\n public get isError(): boolean {\n return this.isErrorDirective.isError;\n }\n\n public get placeholder(): string | undefined {\n return this.placeholderDirective.placeholder;\n }\n\n public get size(): CuiSizeSm | CuiSizeMd {\n return this.sizeDirective.size;\n }\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nexport const CUI_TEXT_FIELD_ICON_LEFT = new InjectionToken<CuiTextFieldIconLeftDirective>('', {\n factory: () => new CuiTextFieldIconLeftDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldIconLeft]',\n providers: [cuiProvide(CUI_TEXT_FIELD_ICON_LEFT, CuiTextFieldIconLeftDirective)]\n})\nexport class CuiTextFieldIconLeftDirective {\n @Input('cuiTextFieldIconLeft')\n public iconLeft?: CuiIcon | string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_ID = new InjectionToken<CuiTextFieldIdDirective>('', {\n factory: () => new CuiTextFieldIdDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldId]',\n providers: [cuiProvide(CUI_TEXT_FIELD_ID, CuiTextFieldIdDirective)]\n})\nexport class CuiTextFieldIdDirective {\n @Input('cuiTextFieldId')\n public id?: string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_IS_ERROR = new InjectionToken<CuiTextFieldIsErrorDirective>('', {\n factory: () => new CuiTextFieldIsErrorDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldIsError]',\n providers: [cuiProvide(CUI_TEXT_FIELD_IS_ERROR, CuiTextFieldIsErrorDirective)]\n})\nexport class CuiTextFieldIsErrorDirective {\n @Input('cuiTextFieldIsError')\n public isError = false;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport const CUI_TEXT_FIELD_PLACEHOLDER = new InjectionToken<CuiTextFieldPlaceholderDirective>('', {\n factory: () => new CuiTextFieldPlaceholderDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldPlaceholder]',\n providers: [cuiProvide(CUI_TEXT_FIELD_PLACEHOLDER, CuiTextFieldPlaceholderDirective)]\n})\nexport class CuiTextFieldPlaceholderDirective {\n @Input('cuiTextFieldPlaceholder')\n public placeholder?: string;\n}\n","import { Directive, InjectionToken, Input } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport const CUI_TEXT_FIELD_SIZE = new InjectionToken<CuiTextFieldSizeDirective>('', {\n factory: () => new CuiTextFieldSizeDirective()\n});\n\n@Directive({\n selector: '[cuiTextFieldSize]',\n providers: [cuiProvide(CUI_TEXT_FIELD_SIZE, CuiTextFieldSizeDirective)]\n})\nexport class CuiTextFieldSizeDirective {\n @Input('cuiTextFieldSize')\n public size: CuiSizeSm | CuiSizeMd = 'sm';\n}\n","import { NgModule } from '@angular/core';\n\nimport { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\nimport { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport { CuiTextFieldSizeDirective } from './text-field-size.directive';\n\n@NgModule({\n declarations: [\n CuiTextFieldIconLeftDirective,\n CuiTextFieldIdDirective,\n CuiTextFieldPlaceholderDirective,\n CuiTextFieldIsErrorDirective,\n CuiTextFieldSizeDirective\n ],\n exports: [\n CuiTextFieldIconLeftDirective,\n CuiTextFieldIdDirective,\n CuiTextFieldPlaceholderDirective,\n CuiTextFieldIsErrorDirective,\n CuiTextFieldSizeDirective\n ]\n})\nexport class CuiTextFieldControllerModule {}\n","import { InjectionToken, Provider } from '@angular/core';\n\nimport { CuiTextFieldController } from './text-field.controller';\n\nimport { CUI_TEXT_FIELD_SIZE } from './text-field-size.directive';\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\nimport { CUI_TEXT_FIELD_ID } from './text-field-id.directive';\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\nimport { CUI_TEXT_FIELD_IS_ERROR } from './text-field-is-error.directive';\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\nimport { CUI_TEXT_FIELD_PLACEHOLDER } from './text-field-placeholder.directive';\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\nimport { CUI_TEXT_FIELD_ICON_LEFT } from './text-field-icon-left.directive';\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\n\nexport const CUI_TEXT_FIELD_CONTROLLER = new InjectionToken<CuiTextFieldController>('');\n\nexport const CUI_TEXT_FILED_CONTROLLER_PROVIDER: Provider = [\n {\n provide: CUI_TEXT_FIELD_CONTROLLER,\n useFactory: (\n ...controllers: [\n CuiTextFieldIconLeftDirective,\n CuiTextFieldIdDirective,\n CuiTextFieldIsErrorDirective,\n CuiTextFieldPlaceholderDirective,\n CuiTextFieldSizeDirective\n ]\n ) => {\n return new CuiTextFieldController(...controllers);\n },\n deps: [\n CUI_TEXT_FIELD_ICON_LEFT,\n CUI_TEXT_FIELD_ID,\n CUI_TEXT_FIELD_IS_ERROR,\n CUI_TEXT_FIELD_PLACEHOLDER,\n CUI_TEXT_FIELD_SIZE\n ]\n }\n];\n","import { animate, animateChild, query, stagger, style, transition, trigger } from '@angular/animations';\n\nconst TRANSITION = '{{duration}}ms ease-in-out';\nconst DURATION = { params: { duration: 300 } };\nconst STAGGER = 300;\n\nexport interface CuiDurationOptions {\n params: { duration: number };\n value: string;\n}\n\n/**\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\n */\nexport const cuiParentAnimation = trigger('cuiParentAnimation', [\n transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\n]);\n\n/**\n * Add on parent to stop initial :enter animation for children\n */\nexport const cuiParentStop = trigger('cuiParentStop', [transition(':enter', [])]);\n\nexport const cuiHost = trigger('cuiHost', [\n transition(':enter', [style({ overflow: 'clip' }), query(':scope > *', [animateChild()], { optional: true })]),\n transition(':leave', [query(':scope > *', [animateChild()], { optional: true })])\n]);\n\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\n transition(':enter', [style({ height: 0 }), animate(TRANSITION, style({ height: '*' }))], DURATION),\n transition(':leave', [style({ height: '*' }), animate(TRANSITION, style({ height: 0 }))], DURATION)\n]);\n\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\n transition(\n '* => *',\n [\n query(':enter', [style({ height: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ height: '*' }))])], {\n optional: true\n }),\n query(':leave', [style({ height: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ height: 0 }))])], {\n optional: true\n })\n ],\n DURATION\n )\n]);\n\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\n transition(':enter', [style({ width: 0 }), animate(TRANSITION, style({ width: '*' }))], DURATION),\n transition(':leave', [style({ width: '*' }), animate(TRANSITION, style({ width: 0 }))], DURATION)\n]);\n\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\n transition(\n '* => *',\n [\n query(':enter', [style({ width: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ width: '*' }))])], {\n optional: true\n }),\n query(':leave', [style({ width: '*' }), stagger(STAGGER, [animate(TRANSITION, style({ width: 0 }))])], {\n optional: true\n })\n ],\n DURATION\n )\n]);\n\nexport const cuiFadeIn = trigger('cuiFadeIn', [\n transition(':enter', [style({ opacity: 0 }), animate(TRANSITION, style({ opacity: 1 }))], DURATION),\n transition(':leave', [style({ opacity: 1 }), animate(TRANSITION, style({ opacity: 0 }))], DURATION)\n]);\n\nexport const cuiFadeInList = trigger('cuiFadeInList', [\n transition(\n '* => *',\n [\n query(':enter', [style({ opacity: 0 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 1 }))])], {\n optional: true\n }),\n query(':leave', [style({ opacity: 1 }), stagger(STAGGER, [animate(TRANSITION, style({ opacity: 0 }))])], {\n optional: true\n })\n ],\n DURATION\n )\n]);\n\nexport const cuiFadeInTop = trigger('cuiFadeInTop', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})', opacity: 1 }),\n animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n )\n]);\n\nexport const cuiFadeInBottom = trigger('cuiFadeInBottom', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY({{start}}px)', opacity: 0 }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})', opacity: 1 }),\n animate(TRANSITION, style({ transform: 'translateY({{start}}px)', opacity: 0 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n )\n]);\n\nexport const cuiDropdownAnimation = trigger('cuiDropdownAnimation', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})', opacity: 1 }),\n animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 }))\n ],\n { params: { end: 0, start: 10, duration: 300 } }\n )\n]);\n\nexport const cuiScaleIn = trigger('cuiScaleIn', [\n transition(\n ':enter',\n [\n style({ transform: 'scale({{start}})' }),\n animate('{{duration}}ms {{easing}}', style({ transform: 'scale({{end}})' }))\n ],\n { params: { end: 1, start: 0, duration: 300, easing: 'ease-in-out' } }\n ),\n transition(\n ':leave',\n [style({ transform: 'scale({{end}})' }), animate(TRANSITION, style({ transform: 'scale({{start}})' }))],\n { params: { end: 1, start: 0, duration: 300 } }\n )\n]);\n\nexport const cuiPop = trigger('cuiPop', [\n transition(\n ':enter',\n [\n style({ transform: 'scale({{start}})' }),\n animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\n animate(TRANSITION, style({ transform: 'scale({{end}})' }))\n ],\n { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'scale({{end}})' }),\n animate(TRANSITION, style({ transform: 'scale({{middle}})' })),\n animate(TRANSITION, style({ transform: 'scale({{start}})' }))\n ],\n { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }\n )\n]);\n\nexport const cuiScaleInList = trigger('cuiScaleInList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'scale({{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'scale({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'scale({{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 1, start: 0, duration: 300 } }\n )\n]);\n\nexport const cuiSlideIn = trigger('cuiSlideIn', [\n transition(\n '* => left',\n [\n style({ transform: 'translateX(-{{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n 'left => *',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n '* => right',\n [\n style({ transform: 'translateX({{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n 'right => *',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInLeft = trigger('cuiSlideInLeft', [\n transition(\n ':enter',\n [\n style({ transform: 'translateX(-{{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInLeftList = trigger('cuiSlideInLeftList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateX(-{{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX(-{{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInRight = trigger('cuiSlideInRight', [\n transition(\n ':enter',\n [\n style({ transform: 'translateX({{start}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateX({{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInRightList = trigger('cuiSlideInRightList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateX({{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateX({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateX({{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInTop = trigger('cuiSlideInTop', [\n transition(\n ':enter',\n [\n style({ transform: 'translate3d(0,{{start}},0)', pointerEvents: 'none' }),\n animate(TRANSITION, style({ transform: 'translate3d(0,{{end}},0)' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translate3d(0,{{end}},0)' }),\n animate(TRANSITION, style({ transform: 'translate3d(0,{{start}},0)' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInTopList = trigger('cuiSlideInTopList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateY({{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateY({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInBottom = trigger('cuiSlideInBottom', [\n transition(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}})' }),\n animate(TRANSITION, style({ transform: 'translateY({{end}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n ),\n transition(\n ':leave',\n [\n style({ transform: 'translateY({{end}})' }),\n animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n\nexport const cuiSlideInBottomList = trigger('cuiSlideInBottomList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({ transform: 'translateY(-{{start}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY({{end}})' }))])\n ],\n { optional: true }\n ),\n query(\n ':leave',\n [\n style({ transform: 'translateY({{end}})' }),\n stagger(STAGGER, [animate(TRANSITION, style({ transform: 'translateY(-{{start}})' }))])\n ],\n { optional: true }\n )\n ],\n { params: { end: 0, start: '100%', duration: 300 } }\n )\n]);\n","import type { AbstractType, ExistingProvider, FactoryProvider, Type } from '@angular/core';\nimport { Optional, SkipSelf } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiPoint } from '../types';\n\nexport abstract class CuiAccessor {\n public abstract readonly type: string;\n}\n\nexport abstract class CuiPositionAccessor extends CuiAccessor {\n /*\n * TODO @deprecated switching from DOMRect to HTMLElement in v5\n */\n public abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint;\n}\n\nexport abstract class CuiRectAccessor extends CuiAccessor {\n public abstract getClientRect(): DOMRect;\n}\n\nexport function cuiProvideAccessor<T extends CuiAccessor>(\n provide: AbstractType<T>,\n type: string,\n fallback: Type<T>\n): FactoryProvider {\n return {\n provide,\n deps: [[new SkipSelf(), new Optional(), provide], fallback],\n useFactory: cuiFallbackAccessor<T>(type)\n };\n}\n\nexport function cuiFallbackAccessor<T extends CuiAccessor>(\n type: string\n): (accessors: readonly T[] | null, fallback: T) => T {\n return (accessors, fallback) =>\n accessors?.find?.((accessor) => accessor !== fallback && accessor.type === type) || fallback;\n}\n\nexport function cuiPositionAccessorFor(type: string, fallback: Type<CuiPositionAccessor>): FactoryProvider {\n return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\n}\n\nexport function cuiRectAccessorFor(type: string, fallback: Type<CuiRectAccessor>): FactoryProvider {\n return cuiProvideAccessor(CuiRectAccessor, type, fallback);\n}\n\nexport function cuiAsPositionAccessor(accessor: Type<CuiPositionAccessor>): ExistingProvider {\n return cuiProvide(CuiPositionAccessor, accessor, true);\n}\n\nexport function cuiAsRectAccessor(accessor: Type<CuiRectAccessor>): ExistingProvider {\n return cuiProvide(CuiRectAccessor, accessor, true);\n}\n","import type { ExistingProvider, Type } from '@angular/core';\nimport { cuiProvide } from '@cuby-ui/cdk';\n\nexport abstract class CuiVehicle {\n public abstract readonly type: string;\n public abstract toggle(value: boolean): void;\n}\n\nexport function cuiAsVehicle(vehicle: Type<CuiVehicle>): ExistingProvider {\n return cuiProvide(CuiVehicle, vehicle, true);\n}\n","import type { AfterViewInit, ExistingProvider, Type } from '@angular/core';\nimport { DestroyRef, Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport { distinctUntilChanged, merge, Observable } from 'rxjs';\n\nimport { CuiVehicle } from './vehicle';\n\nexport abstract class CuiDriver extends Observable<boolean> {\n public abstract readonly type: string;\n}\n\nexport function cuiAsDriver(driver: Type<CuiDriver>): ExistingProvider {\n return cuiProvide(CuiDriver, driver, true);\n}\n\n@Directive()\nexport abstract class CuiDriverDirective implements AfterViewInit {\n public abstract type: string;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly drivers: readonly CuiDriver[] = inject<any>(CuiDriver, { self: true, optional: true }) || [];\n\n private readonly vehicles: readonly CuiVehicle[] = inject<any>(CuiVehicle, {\n self: true,\n optional: true\n });\n\n public ngAfterViewInit(): void {\n const vehicle = this.vehicles?.find(({ type }) => type === this.type);\n\n merge(...this.drivers.filter(({ type }) => type === this.type))\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n vehicle?.toggle(value);\n });\n }\n}\n","import { inject, Injectable, NgZone } from '@angular/core';\nimport { CUI_ANIMATION_FRAME } from '@cuby-ui/cdk';\nimport { EMPTY_CLIENT_RECT, cuiInjectElement, cuiZonefree } from '@cuby-ui/cdk';\nimport { CuiPositionAccessor } from '../classes';\nimport type { CuiPoint } from '../types';\nimport { finalize, map, Observable, startWith } from 'rxjs';\n\n@Injectable()\nexport class CuiPositionService extends Observable<CuiPoint> {\n private readonly el = cuiInjectElement();\n private readonly accessor = inject(CuiPositionAccessor);\n\n constructor() {\n const animationFrame$ = inject(CUI_ANIMATION_FRAME);\n const zone = inject(NgZone);\n\n super((subscriber) =>\n animationFrame$\n .pipe(\n startWith(null),\n map(() => this.accessor.getPosition(this.el.getBoundingClientRect(), this.el)),\n cuiZonefree(zone),\n finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT))\n )\n .subscribe(subscriber)\n );\n }\n}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nexport type CuiTheme = 'light' | 'dark';\n\nexport const CUI_THEME_STORAGE_DEFAULT_KEY = 'cuiTheme';\n\nexport const CUI_DEFAULT_THEME: CuiTheme = 'light';\n\nexport const CUI_THEME_STORAGE_KEY = cuiCreateToken(CUI_THEME_STORAGE_DEFAULT_KEY);\n\nexport const CUI_THEME = cuiCreateToken<CuiTheme>(CUI_DEFAULT_THEME);\n","import { inject, Injectable } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiTheme } from './theme.options';\nimport { CUI_THEME, CUI_THEME_STORAGE_KEY } from './theme.options';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiThemeService extends BehaviorSubject<CuiTheme> {\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\n private readonly key = inject(CUI_THEME_STORAGE_KEY);\n\n constructor() {\n super(\n (inject(CUI_LOCAL_STORAGE).getItem(inject(CUI_THEME_STORAGE_KEY)) as CuiNullable<CuiTheme>) ??\n inject(CUI_THEME)\n );\n }\n\n public override next(theme: CuiTheme): void {\n this.localStorage.setItem(this.key, theme);\n super.next(theme);\n }\n\n // При работе только двух тем\n public switch(): void {\n this.next(this.value === 'light' ? 'dark' : 'light');\n }\n}\n","import type { CuiValueOf } from '@cuby-ui/cdk';\n\nexport const CuiLoadingState = {\n LOADING: 'loading',\n COMPLETED: 'completed',\n INITIAL: 'initial'\n} as const;\n\nexport type CuiLoadingState = CuiValueOf<typeof CuiLoadingState>;\n","import { Injectable, signal } from '@angular/core';\r\n\r\nimport { CuiLoadingState } from './loader.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiLoaderService {\r\n private readonly RESET_TO_INITIAL_TIME = 1000;\r\n\r\n private readonly loaderStateSignal = signal<CuiLoadingState>(CuiLoadingState.INITIAL);\r\n\r\n private requestCount = 0;\r\n private resetLoadingStateTimerId?: ReturnType<typeof setTimeout>;\r\n\r\n public readonly loaderState = this.loaderStateSignal.asReadonly();\r\n\r\n constructor() {\r\n AngularOutsideLoaderService.setInstance(this);\r\n }\r\n\r\n public setLoading(): void {\r\n this.requestCount++;\r\n // need to use without queueMicrotask (error)\r\n queueMicrotask(() => this.loaderStateSignal.set(CuiLoadingState.LOADING));\r\n }\r\n\r\n public setCompleted(): void {\r\n this.requestCount = this.requestCount && this.requestCount - 1;\r\n\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n return this.loaderStateSignal.set(CuiLoadingState.COMPLETED);\r\n }\r\n\r\n public handleCompletedRequest(): void {\r\n this.setCompleted();\r\n clearTimeout(this.resetLoadingStateTimerId);\r\n\r\n this.resetLoadingStateTimerId = setTimeout(() => {\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }, this.RESET_TO_INITIAL_TIME);\r\n }\r\n\r\n public reset(): void {\r\n this.requestCount = 0;\r\n this.resetLoadingStateTimerId = undefined;\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }\r\n}\r\n\r\n// NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT\r\nexport class AngularOutsideLoaderService {\r\n private static instance: CuiLoaderService;\r\n\r\n public static getInstance(): CuiLoaderService {\r\n if (!this.instance) {\r\n throw new Error(\"The instance hasn't been initialized yet\");\r\n }\r\n\r\n return this.instance;\r\n }\r\n\r\n public static setInstance(instance: CuiLoaderService): void {\r\n this.instance = instance;\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\nimport { CUI_IS_WEBKIT } from '@cuby-ui/cdk';\nimport type { CuiPoint } from '../types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiVisualViewportService {\n private readonly isWebkit = inject(CUI_IS_WEBKIT);\n private readonly win = inject(CUI_WINDOW);\n\n // https://bugs.webkit.org/show_bug.cgi?id=207089\n public correct(point: CuiPoint): CuiPoint {\n return this.isWebkit\n ? [\n point[0] + (this.win.visualViewport?.offsetTop ?? 0),\n point[1] + (this.win.visualViewport?.offsetLeft ?? 0)\n ]\n : point;\n }\n}\n","import { inject, signal } from '@angular/core';\nimport type { CuiTokenExchangeRequestBody, CuiTokenResponse } from '@cuby-ui/api';\nimport { CuiExchangeContextApiService } from '@cuby-ui/api';\nimport type { TokenResponse } from 'angular-oauth2-oidc';\nimport { OAuthErrorEvent, OAuthService, OAuthSuccessEvent } from 'angular-oauth2-oidc';\nimport type { Observable } from 'rxjs';\nimport { catchError, from, map, of, switchMap, tap, throwError } from 'rxjs';\n\nimport type { CuiTokenData } from './token.options';\n\nabstract class CuiToken extends OAuthService {\n private readonly tokenData = signal<{ [key: string]: CuiTokenData }>({});\n\n private readonly CONVERT_TO_SECONDS_CONSTANT = 1000;\n\n public getRefreshTokenExpiration(): number {\n const refreshTokenExpiration = this.getTokenDataFromStore(this.getRefreshToken());\n\n return refreshTokenExpiration.exp;\n }\n\n public getAccessTokenData<T extends CuiTokenData = CuiTokenData>(): T {\n const token = this.getAccessToken();\n\n if (!token) {\n throw new Error('No access token found');\n }\n\n return this.getTokenDataFromStore(token) as T;\n }\n\n public checkIsTokenExpired(): boolean {\n const token = this.getAccessToken();\n\n if (!token) {\n return true;\n }\n\n return this.checkTokenExpired(this.getAccessTokenExpiration() / this.CONVERT_TO_SECONDS_CONSTANT);\n }\n\n public checkIsRefreshTokenExpired(): boolean {\n const token = this.getRefreshToken();\n\n if (!token) {\n return true;\n }\n\n return this.checkTokenExpired(this.getRefreshTokenExpiration());\n }\n\n protected getTokenDataFromStore(token: string): CuiTokenData {\n const tokenData = this.tokenData()[token];\n\n if (tokenData) {\n return tokenData;\n }\n\n const currentTokenData = this.parseToken(token);\n\n this.tokenData.update((prev) => ({ ...prev, [token]: currentTokenData }));\n\n return currentTokenData;\n }\n\n private parseToken(token: string): CuiTokenData {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n window\n .atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join('')\n );\n\n return JSON.parse(jsonPayload);\n } catch {\n throw new Error('Invalid token');\n }\n }\n\n private checkTokenExpired(expiredTimeInSeconds: number): boolean {\n const currentTime = Date.now() / this.CONVERT_TO_SECONDS_CONSTANT;\n\n return currentTime >= expiredTimeInSeconds;\n }\n}\n\nexport class CuiTokenBase extends CuiToken {\n private readonly exchangeContextApiService = inject(CuiExchangeContextApiService);\n private readonly EXCHANGE_TOKEN_VALUE = 'token-exchange';\n\n // TODO: override refreshToken with custom refresh token request to the backend\n public override refreshToken(): Promise<TokenResponse> {\n try {\n const tokenData = this.getTokenDataFromStore(this.getRefreshToken());\n\n if (tokenData.azp.includes(this.EXCHANGE_TOKEN_VALUE)) {\n return this.refreshExchangedToken();\n }\n } catch (error) {\n this.logger.error('Error refreshing token', error);\n }\n\n return super.refreshToken();\n }\n\n public refreshExchangedToken(): Promise<CuiTokenResponse> {\n return new Promise((resolve, reject) =>\n this.exchangeContextApiService\n .refresh(this.getRefreshToken())\n .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))\n .subscribe({\n next: (tokenResponse) => {\n this.setTokenResponse(tokenResponse);\n\n resolve(tokenResponse);\n },\n error: (error) => {\n this.logger.error('Error refreshing token', error);\n this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\n\n reject(error);\n }\n })\n );\n }\n\n public exchangeToken(params: CuiTokenExchangeRequestBody): Observable<CuiTokenResponse> {\n return this.exchangeContextApiService.exchange(params).pipe(\n switchMap((tokenResponse) => this.setIdToken(tokenResponse)),\n tap((tokenResponse) => this.setTokenResponse(tokenResponse)),\n catchError((error) => {\n this.logger.error('Error exchanging token', error);\n this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\n\n return throwError(() => error);\n })\n );\n }\n\n private setTokenResponse(tokenResponse: CuiTokenResponse): void {\n const expiresIn = tokenResponse.expires_in || this.fallbackAccessTokenExpirationTimeInSec!;\n\n this.debug('tokenResponse', tokenResponse);\n this.storeAccessTokenResponse(\n tokenResponse.access_token,\n tokenResponse.refresh_token,\n expiresIn,\n tokenResponse.scope\n );\n\n this.eventsSubject.next(new OAuthSuccessEvent('token_received'));\n this.eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));\n }\n\n private setIdToken(tokenResponse: CuiTokenResponse): Observable<CuiTokenResponse> {\n if (!this.oidc || !tokenResponse.id_token) {\n return of(tokenResponse);\n }\n\n return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(\n tap((result) => this.storeIdToken(result)),\n map(() => tokenResponse)\n );\n }\n}\n","import type { AuthConfig, TokenResponse } from 'angular-oauth2-oidc';\nimport { OAuthInfoEvent } from 'angular-oauth2-oidc';\nimport { filter } from 'rxjs';\n\nimport { CuiTokenBase } from './token.service';\n\nexport abstract class CuiAuthBase extends CuiTokenBase {\n public abstract initAuth(authConfig: AuthConfig): Promise<void>;\n\n public override createLoginUrl(\n state?: string,\n loginHint?: string,\n customRedirectUri?: string,\n noPrompt?: boolean,\n params?: object\n ): Promise<string> {\n return super.createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params);\n }\n\n public async useCheckTokenFlow(loginCallback: () => void): Promise<TokenResponse | void> {\n const isAccessTokenExpired = this.checkIsTokenExpired();\n const isRefreshTokenExpired = this.checkIsRefreshTokenExpired();\n\n if (isRefreshTokenExpired) {\n return loginCallback();\n }\n\n if (!isAccessTokenExpired) {\n return;\n }\n\n return await this.refreshToken();\n }\n\n public initAuthRefreshEvents(loginCallback: () => void): void {\n this.events.pipe(filter((event) => event instanceof OAuthInfoEvent)).subscribe((event) => {\n if (event.type !== 'token_expires' || event.info !== 'access_token') {\n return;\n }\n\n if (!this.hasValidAccessToken() || !this.getRefreshToken()) {\n return loginCallback();\n }\n\n this.refreshToken();\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nexport const CUI_REDUCED_MOTION = cuiCreateTokenFromFactory(\n () => inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false\n);\n","import { inject } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nimport { CUI_REDUCED_MOTION } from './reduced-motion';\n\n/**\n * Speed of all Taiga UI animations. 1 equals 300ms.\n */\nexport const CUI_ANIMATIONS_SPEED = cuiCreateTokenFromFactory<number>(() => (inject(CUI_REDUCED_MOTION) ? 0 : 1));\n","import type { Provider, Type } from '@angular/core';\nimport { inject } from '@angular/core';\nimport { CUI_WINDOW, cuiCreateTokenFromFactory, cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor } from '../classes';\n\n/**\n * Viewport accessor\n */\nexport const CUI_VIEWPORT = cuiCreateTokenFromFactory<CuiRectAccessor>(() => {\n const win = inject(CUI_WINDOW);\n\n return {\n type: 'viewport',\n getClientRect() {\n const rect = {\n top: 0,\n left: 0,\n right: win.innerWidth,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight,\n x: 0,\n y: 0\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect)\n };\n }\n };\n});\n\nexport function cuiAsViewport(accessor: Type<CuiRectAccessor>): Provider {\n return cuiProvide(CUI_VIEWPORT, accessor);\n}\n","export function cuiRemoveSpaces(value: string): string {\n return value.replace(/\\s+/g, '');\n}\n","export function cuiReplace(value: string, search: string, replace: string): string {\n const regex = new RegExp(search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\n\n return value.replace(regex, replace);\n}\n","import { cuiGetElementObscures } from '@cuby-ui/cdk';\n\n/**\n * @internal\n */\nexport function cuiIsObscured(el: HTMLElement, exceptSelector = 'cui-hints'): boolean {\n return !!cuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\n}\n","export function cuiOverrideOptions<T>(\n override: Partial<T>,\n fallback: T\n): (directive: T | null, options: T | null) => T {\n return (directive, options) => {\n const result: T = directive || { ...(options || fallback) };\n\n Object.keys(override).forEach((key) => {\n // Update directive props with new defaults before inputs are processed\n (result as Record<string, unknown>)[key] = override[key as keyof T];\n });\n\n return result;\n };\n}\n","import type { AnimationOptions } from '@angular/animations';\n\nexport const CUI_ANIMATIONS_DEFAULT_DURATION = 300;\n\nexport function cuiToAnimationOptions(speed: number, easing?: string): AnimationOptions {\n return {\n value: '',\n params: {\n duration: cuiGetDuration(speed),\n easing\n }\n } as unknown as AnimationOptions;\n}\n\nexport function cuiGetDuration(speed: number): number {\n return speed && CUI_ANIMATIONS_DEFAULT_DURATION / speed;\n}\n","import type { ValidationErrors } from '@angular/forms';\n\nconst LEADING_TRAILING_SPACES_REGEX = /^\\s|\\s$/;\nconst MULTIPLE_SPACES_REGEX = /\\s{2,}/;\n\nexport function hasExtraSpaces(value: string): ValidationErrors | null {\n const hasLeadingOrTrailingSpaces = LEADING_TRAILING_SPACES_REGEX.test(value);\n const hasMultipleSpaces = MULTIPLE_SPACES_REGEX.test(value);\n\n if (hasLeadingOrTrailingSpaces || hasMultipleSpaces) {\n return { extraSpaces: true };\n }\n\n return null;\n}\n","import type { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport type { Observable } from 'rxjs';\nimport { map, timer } from 'rxjs';\n\nimport { hasExtraSpaces } from './extra-spaces.options';\n\nexport function asyncExtraSpacesValidators(delay: number): AsyncValidatorFn {\n return ({ value }: AbstractControl): Observable<ValidationErrors | null> => {\n return timer(delay).pipe(map(() => hasExtraSpaces(value)));\n };\n}\n\nexport function syncExtraSpacesValidator(): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => hasExtraSpaces(value);\n}\n","import { Validators } from '@angular/forms';\nimport { CuiDefaultValidatorsOptions } from './create-default-validators.options';\nimport { asyncExtraSpacesValidators, syncExtraSpacesValidator } from './extra-spaces.validators';\n\nexport function cuiCreateDefaultValidators({ maxLength = 100, asyncDelay = 700 } = {}): CuiDefaultValidatorsOptions {\n // Need to offset because this delay must be before changing value\n const OFFSET = 1;\n\n const adjustedAsyncDelay = asyncDelay - OFFSET;\n const validators: CuiDefaultValidatorsOptions = {\n validators: [Validators.required, Validators.maxLength(maxLength)],\n asyncValidators: []\n };\n\n if (asyncDelay) {\n validators.asyncValidators.push(asyncExtraSpacesValidators(adjustedAsyncDelay));\n } else {\n validators.validators.push(syncExtraSpacesValidator());\n }\n\n return validators;\n}\n","export function cuiCheckFixedPosition(element?: HTMLElement | null): boolean {\n return !!element && (isFixed(element) || cuiCheckFixedPosition(element.parentElement));\n}\n\nfunction isFixed(element: HTMLElement): boolean {\n return element.ownerDocument.defaultView?.getComputedStyle(element).getPropertyValue('position') === 'fixed';\n}\n","import type { Type } from '@angular/core';\nimport { cuiCreateTokenFromFactory } from '@cuby-ui/cdk';\n\nimport { CuiTooltipComponent } from './tooltip.component';\n\n/**\n * A component to display a tooltip\n */\nexport const CUI_TOOLTIP_COMPONENT = cuiCreateTokenFromFactory<Type<unknown>>(() => CuiTooltipComponent);\n","import { Injectable } from '@angular/core';\nimport type { CuiPortalItem } from '../../types';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Service for displaying hints/tooltips\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiTooltipService extends BehaviorSubject<readonly CuiPortalItem[]> {\n constructor() {\n super([]);\n }\n\n public add(directive: CuiPortalItem): void {\n this.next(this.value.concat(directive));\n }\n\n public remove(directive: CuiPortalItem): void {\n if (this.value.includes(directive)) {\n this.next(this.value.filter((hint) => hint !== directive));\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { CuiDriverDirective } from '../../classes';\n\n@Directive({\n standalone: true\n})\nexport class CuiTooltipDriver extends CuiDriverDirective {\n public readonly type = 'hint';\n}\n","import type { FactoryProvider, OnChanges } from '@angular/core';\nimport { Directive, inject, Input, Optional, Self, SkipSelf } from '@angular/core';\nimport { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';\nimport { cuiOverrideOptions } from '../../utils';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { Subject } from 'rxjs';\n\nexport type CuiTooltipDirection =\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom'\n | 'left-bottom'\n | 'left-top'\n | 'left'\n | 'right-bottom'\n | 'right-top'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'top';\n\nexport const CUI_TOOLTIP_DIRECTIONS: readonly CuiTooltipDirection[] = [\n 'top',\n 'top-left',\n 'top-right',\n 'bottom',\n 'bottom-left',\n 'bottom-right',\n 'left-top',\n 'left',\n 'left-bottom',\n 'right-top',\n 'right',\n 'right-bottom'\n];\n\nexport interface CuiTooltipOptions {\n readonly appearance: string;\n readonly direction: CuiTooltipDirection | CuiTooltipDirection[];\n readonly hideDelay: number;\n readonly icon: string;\n readonly showDelay: number;\n}\n\n/** Default values for tooltip options */\nexport const CUI_TOOLTIP_DEFAULT_OPTIONS: CuiTooltipOptions = {\n direction: 'top',\n showDelay: 500,\n hideDelay: 200,\n appearance: '',\n /** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/\n icon: '@cui.circle-help'\n};\n\n/**\n * Default parameters for tooltip directive\n */\nexport const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);\n\nexport const cuiTooltipOptionsProvider: (options: Partial<CuiTooltipOptions>) => FactoryProvider = (\n override: Partial<CuiTooltipOptions>\n) => ({\n provide: CUI_TOOLTIP_OPTIONS,\n deps: [\n [new Optional(), new Self(), CuiTooltipOptionsDirective],\n [new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS]\n ],\n useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS)\n});\n\n/**\n * @deprecated: drop in 5.0\n */\n@Directive({\n standalone: true,\n selector: '[cuiTooltipContent]',\n providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)]\n})\nexport class CuiTooltipOptionsDirective implements CuiTooltipOptions, OnChanges {\n private readonly options = inject(CUI_TOOLTIP_OPTIONS, { skipSelf: true });\n\n @Input('cuiTooltipContent')\n public content: PolymorpheusContent;\n\n @Input('cuiTooltipDirection')\n public direction = this.options.direction;\n\n @Input('cuiTooltipAppearance')\n public appearance = this.options.appearance;\n\n @Input('cuiTooltipShowDelay')\n public showDelay = this.options.showDelay;\n\n @Input('cuiTooltipHideDelay')\n public hideDelay = this.options.hideDelay;\n\n public icon = this.options.icon;\n\n public readonly change$ = new Subject<void>();\n\n public ngOnChanges(): void {\n this.change$.next();\n }\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { CuiHoveredService, CUI_IS_MOBILE, cuiInjectElement } from '@cuby-ui/cdk';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport { cuiIsObscured } from '../../utils';\nimport { delay, filter, map, merge, of, repeat, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nimport type { CuiTooltipOptions } from './tooltip-options.directive';\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\n\n@Directive({\n standalone: true,\n providers: [cuiAsDriver(CuiTooltipHover), CuiHoveredService],\n exportAs: 'cuiTooltipHover'\n})\nexport class CuiTooltipHover extends CuiDriver {\n private readonly isMobile = inject(CUI_IS_MOBILE);\n private readonly el = cuiInjectElement();\n private readonly hovered$ = inject(CuiHoveredService);\n private readonly options = inject(CUI_TOOLTIP_OPTIONS);\n private visible = false;\n private readonly toggle$ = new Subject<boolean>();\n private readonly stream$ = merge(\n this.toggle$.pipe(\n switchMap((visible) =>\n this.isMobile ? of(visible) : of(visible).pipe(delay(visible ? 0 : this.cuiTooltipHideDelay))\n ),\n takeUntil(this.hovered$),\n repeat()\n ),\n this.hovered$.pipe(\n switchMap((visible) =>\n this.isMobile\n ? of(visible)\n : of(visible).pipe(delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay))\n ),\n takeUntil(this.toggle$),\n repeat()\n )\n ).pipe(\n filter(() => this.enabled),\n map((value) => value && (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el))),\n tap((visible) => {\n this.visible = visible;\n })\n );\n\n private readonly parent = inject(CuiTooltipHover, {\n optional: true,\n skipSelf: true\n });\n\n @Input()\n public cuiTooltipShowDelay: CuiTooltipOptions['showDelay'] = this.options.showDelay;\n\n @Input()\n public cuiTooltipHideDelay: CuiTooltipOptions['hideDelay'] = this.options.hideDelay;\n\n public readonly type = 'hint';\n\n public enabled = true;\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n public toggle(visible = !this.visible): void {\n this.toggle$.next(visible);\n this.parent?.toggle(visible);\n }\n}\n","import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';\nimport { cuiFallbackAccessor, CuiPositionAccessor, CuiRectAccessor } from '../../classes';\nimport { CUI_VIEWPORT } from '../../tokens';\nimport type { CuiPoint } from '../../types';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport type { CuiTooltipDirection, CuiTooltipOptions } from './tooltip-options.directive';\nimport { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 24;\nconst TOP = 0;\nconst LEFT = 1;\n\n@Directive({\n standalone: true\n})\nexport class CuiTooltipPosition extends CuiPositionAccessor {\n private readonly offset = inject(CUI_IS_MOBILE) ? 16 : 5;\n private readonly viewport = inject(CUI_VIEWPORT);\n private readonly accessor = cuiFallbackAccessor<CuiRectAccessor>('hint')(\n inject<any>(CuiRectAccessor),\n inject(CuiTooltipDirective)\n );\n\n private readonly points: Record<CuiTooltipDirection, [number, number]> = CUI_TOOLTIP_DIRECTIONS.reduce(\n (acc, direction) => ({ ...acc, [direction]: [0, 0] }),\n {} as Record<CuiTooltipDirection, [number, number]>\n );\n\n @Input('cuiTooltipDirection')\n public direction: CuiTooltipOptions['direction'] = inject(CUI_TOOLTIP_OPTIONS).direction;\n\n @Output('cuiTooltipDirectionChange')\n public readonly directionChange = new EventEmitter<CuiTooltipDirection>();\n\n public readonly type = 'hint';\n\n @cuiPure\n public emitDirection(direction: CuiTooltipDirection): void {\n this.directionChange.emit(direction);\n }\n\n public getPosition(rect: DOMRect, el?: HTMLElement): CuiPoint {\n const width = el?.clientWidth ?? rect.width;\n const height = el?.clientHeight ?? rect.height;\n const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;\n const leftCenter = hostRect.left + hostRect.width / 2;\n const topCenter = hostRect.top + hostRect.height / 2;\n\n this.points['top-left'][TOP] = hostRect.top - height - this.offset;\n this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\n this.points.top[TOP] = this.points['top-left'][TOP];\n this.points.top[LEFT] = leftCenter - width / 2;\n this.points['top-right'][TOP] = this.points['top-left'][TOP];\n this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\n\n this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\n this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\n this.points.bottom[TOP] = this.points['bottom-left'][TOP];\n this.points.bottom[LEFT] = this.points.top[LEFT];\n this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\n this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\n\n this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\n this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\n this.points.left[TOP] = topCenter - height / 2;\n this.points.left[LEFT] = this.points['left-top'][LEFT];\n this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\n this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\n\n this.points['right-top'][TOP] = this.points['left-top'][TOP];\n this.points['right-top'][LEFT] = hostRect.right + this.offset;\n this.points.right[TOP] = this.points.left[TOP];\n this.points.right[LEFT] = this.points['right-top'][LEFT];\n this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\n this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\n\n const priorityDirections = Array.isArray(this.direction) ? this.direction : [this.direction];\n const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);\n\n const direction = sortedDirections.find((direction) =>\n this.checkPosition(this.points[direction], width, height)\n );\n\n this.emitDirection(direction || this.fallback);\n\n return this.points[direction || this.fallback];\n }\n\n private get fallback(): CuiTooltipDirection {\n return this.points.top[TOP] > this.viewport.getClientRect().bottom - this.points.bottom[TOP] ? 'top' : 'bottom';\n }\n\n private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\n const viewport = this.viewport.getClientRect();\n\n return top > GAP && left > GAP && top + height < viewport.bottom - GAP && left + width < viewport.right - GAP;\n }\n}\n","import type { OnDestroy } from '@angular/core';\nimport { Directive, inject, INJECTOR, Input, signal } from '@angular/core';\nimport { cuiInjectElement, CuiActiveZone } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor, CuiVehicle } from '../../classes';\nimport { cuiAsRectAccessor, cuiAsVehicle } from '../../classes';\nimport type { CuiPortalItem } from '../../types';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { PolymorpheusComponent } from '@taiga-ui/polymorpheus';\n\nimport { CUI_TOOLTIP_COMPONENT } from './tooltip.providers';\nimport { CuiTooltipService } from './tooltip.service';\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip]:not(ng-container):not(ng-template)',\n providers: [\n cuiAsRectAccessor(CuiTooltipDirective),\n cuiAsVehicle(CuiTooltipDirective),\n {\n provide: PolymorpheusComponent,\n deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],\n useClass: PolymorpheusComponent\n }\n ],\n hostDirectives: [\n CuiTooltipDriver,\n {\n directive: CuiTooltipHover,\n inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay']\n },\n {\n directive: CuiTooltipPosition,\n inputs: ['cuiTooltipDirection'],\n outputs: ['cuiTooltipDirectionChange']\n }\n ]\n})\nexport class CuiTooltipDirective<C> implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle {\n private readonly service = inject(CuiTooltipService);\n\n @Input('cuiTooltipContext')\n public context?: C;\n\n @Input('cuiTooltipAppearance')\n public appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;\n\n public content = signal<PolymorpheusContent<C>>(null);\n public component = inject(PolymorpheusComponent<unknown>);\n public readonly el = cuiInjectElement();\n public readonly activeZone? = inject(CuiActiveZone, { optional: true });\n public readonly type = 'hint';\n\n @Input()\n public set cuiTooltip(content: PolymorpheusContent<C>) {\n this.content.set(content);\n\n if (!content) {\n this.toggle(false);\n }\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n if (show && this.content()) {\n this.service.add(this);\n } else {\n this.service.remove(this);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { EMPTY_CLIENT_RECT, cuiPointToClientRect } from '@cuby-ui/cdk';\nimport type { CuiRectAccessor } from '../../classes';\nimport { cuiAsDriver, cuiAsRectAccessor } from '../../classes';\n\nimport { CuiTooltipHover } from './tooltip-hover.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip][cuiTooltipPointer]',\n providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],\n host: {\n '(mousemove.silent)': 'onMove($event)'\n }\n})\nexport class CuiTooltipPointer extends CuiTooltipHover implements CuiRectAccessor {\n private currentRect = EMPTY_CLIENT_RECT;\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n protected onMove({ clientX, clientY }: MouseEvent): void {\n this.currentRect = cuiPointToClientRect(clientX, clientY);\n }\n}\n","import type { WritableSignal } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, Directive, inject, TemplateRef } from '@angular/core';\nimport type { CuiContext } from '@cuby-ui/cdk';\nimport { cuiParentAnimation } from '../../animations';\nimport type { CuiPortalItem } from '../../types';\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { injectContext, PolymorpheusComponent, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\n\n@Component({\n standalone: true,\n imports: [PolymorpheusOutlet],\n template: '<ng-container *polymorpheusOutlet=\"context.$implicit.content()\" />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [cuiParentAnimation],\n host: { '[@cuiParentAnimation]': '' }\n})\nexport class CuiTooltipUnstyledComponent {\n protected readonly context =\n injectContext<CuiContext<CuiPortalItem & { content: WritableSignal<PolymorpheusContent> }>>();\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[cuiTooltip]'\n})\nexport class CuiTooltipUnstyled<C> {\n constructor() {\n const hint = inject(CuiTooltipDirective<C>);\n\n hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);\n hint.content.set(inject(TemplateRef<C>));\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EMPTY_CLIENT_RECT, CuiHoveredService, CuiContext } from '@cuby-ui/cdk';\nimport { cuiFadeIn, cuiScaleIn } from '../../animations';\nimport { cuiPositionAccessorFor, CuiRectAccessor, cuiRectAccessorFor } from '../../classes';\nimport { CuiPositionService, CuiVisualViewportService } from '../../services';\nimport { CUI_ANIMATIONS_SPEED, CUI_VIEWPORT } from '../../tokens';\nimport { cuiIsObscured, cuiToAnimationOptions } from '../../utils';\nimport { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\nimport { map, takeWhile } from 'rxjs';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\nimport { CuiTooltipUnstyledComponent } from './tooltip-unstyled.component';\nimport { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';\n\nconst GAP = 8;\n\nexport const CUI_TOOLTIP_PROVIDERS = [\n CuiPositionService,\n CuiHoveredService,\n cuiPositionAccessorFor('hint', CuiTooltipPosition),\n cuiRectAccessorFor(\n 'hint',\n forwardRef(() => CuiTooltipDirective)\n )\n];\n\n@Component({\n standalone: true,\n selector: 'cui-tooltip',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"content() as text; context: hint.context\"\n [innerHTML]=\"text\"\n ></span>\n `,\n styleUrls: ['./tooltip.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: CUI_TOOLTIP_PROVIDERS,\n animations: [cuiFadeIn, cuiScaleIn],\n host: {\n '[@cuiScaleIn]': 'isMobile ? options : desktop',\n '[@cuiFadeIn]': 'options',\n '[class._untouchable]': 'pointer',\n '[class._mobile]': 'isMobile',\n '[attr.data-appearance]': 'appearance',\n '[attr.cuiTheme]': 'appearance',\n '(document:click)': 'onClick($event.target)'\n }\n})\nexport class CuiTooltipComponent<C = any> {\n private readonly el = cuiInjectElement();\n private readonly hover = inject(CuiTooltipHover);\n private readonly vvs = inject(CuiVisualViewportService);\n private readonly viewport = inject(CUI_VIEWPORT);\n\n protected readonly desktop = { value: '', params: { end: 1, start: 1 } };\n protected readonly options = cuiToAnimationOptions(\n inject(CUI_ANIMATIONS_SPEED),\n 'cubic-bezier(0.35, 1.3, 0.25, 1)'\n );\n\n protected readonly pointer = inject(CuiTooltipPointer, { optional: true });\n protected readonly accessor = inject(CuiRectAccessor);\n protected readonly hint = injectContext<CuiContext<CuiTooltipDirective<C>>>().$implicit;\n protected readonly isMobile = inject(CUI_IS_MOBILE);\n\n protected readonly content =\n this.hint.component.component === CuiTooltipUnstyledComponent ? signal('') : this.hint.content;\n\n protected readonly appearance =\n this.hint.appearance || this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');\n\n constructor() {\n inject(CuiPositionService)\n .pipe(\n takeWhile(() => this.hint.el.isConnected),\n map((point) => this.vvs.correct(point)),\n takeUntilDestroyed()\n )\n .subscribe({\n next: ([top, left]) => this.update(top, left),\n complete: () => this.hover.toggle(false)\n });\n\n inject(CuiHoveredService)\n .pipe(takeUntilDestroyed())\n .subscribe((hover) => this.hover.toggle(hover));\n }\n\n protected onClick(target: HTMLElement): void {\n if ((!target.closest('cui-hint') && !this.hint.el.contains(target)) || cuiIsObscured(this.hint.el)) {\n this.hover.toggle(false);\n }\n }\n\n @cuiPure\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\n this.el.style.top = top;\n this.el.style.left = left;\n this.el.style.setProperty('--top', `${beakTop}%`);\n this.el.style.setProperty('--left', `${beakLeft}%`);\n this.el.style.setProperty('--rotate', !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg');\n }\n\n private update(top: number, left: number): void {\n const { clientHeight, clientWidth } = this.el;\n const rect = this.accessor.getClientRect();\n const viewport = this.viewport.getClientRect();\n\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\n return;\n }\n\n const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);\n const [beakTop, beakLeft] = this.vvs.correct([\n rect.top + rect.height / 2 - top,\n rect.left + rect.width / 2 - safeLeft\n ]);\n\n this.apply(\n cuiPx(Math.round(top)),\n cuiPx(Math.round(safeLeft)),\n Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\n Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100)\n );\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, inject, Input, NgZone } from '@angular/core';\nimport {\n cuiIfMap,\n cuiTypedFromEvent,\n cuiZonefreeScheduler,\n cuiZoneOptimized,\n cuiInjectElement,\n cuiIsPresent,\n cuiPure,\n cuiIsNativeFocused\n} from '@cuby-ui/cdk';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport {\n BehaviorSubject,\n debounce,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n of,\n skip,\n startWith,\n switchMap,\n timer\n} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltipDescribe]',\n providers: [cuiAsDriver(CuiTooltipDescribe)]\n})\nexport class CuiTooltipDescribe extends CuiDriver {\n private readonly doc = inject(DOCUMENT);\n private readonly el = cuiInjectElement();\n private readonly zone = inject(NgZone);\n private readonly id$ = new BehaviorSubject('');\n private readonly stream$ = this.id$.pipe(\n distinctUntilChanged(),\n cuiIfMap(() => fromEvent(this.doc, 'keydown', { capture: true }), cuiIsPresent),\n switchMap(() =>\n this.focused\n ? of(false)\n : merge(cuiTypedFromEvent(this.doc, 'keyup'), cuiTypedFromEvent(this.element, 'blur')).pipe(\n map(() => this.focused)\n )\n ),\n debounce((visible) => (visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null))),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n cuiZoneOptimized()\n );\n\n public readonly type = 'hint';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n @Input()\n public set cuiTooltipDescribe(id: string | null | undefined) {\n this.id$.next(id || '');\n }\n\n @cuiPure\n private get element(): HTMLElement {\n return this.doc.getElementById(this.id$.value || '') || this.el;\n }\n\n private get focused(): boolean {\n return cuiIsNativeFocused(this.element);\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { EMPTY_CLIENT_RECT } from '@cuby-ui/cdk';\nimport { cuiAsRectAccessor, CuiRectAccessor } from '../../classes';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip][cuiTooltipHost]',\n providers: [cuiAsRectAccessor(CuiTooltipHost)]\n})\nexport class CuiTooltipHost extends CuiRectAccessor {\n @Input()\n public cuiTooltipHost?: HTMLElement;\n\n public readonly type = 'hint';\n\n public getClientRect(): DOMRect {\n return this.cuiTooltipHost?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\n }\n}\n","import type { OnChanges } from '@angular/core';\nimport { Directive, inject, Input } from '@angular/core';\nimport { cuiAsDriver, CuiDriver } from '../../classes';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { CuiTooltipHover } from './tooltip-hover.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltip][cuiTooltipManual]',\n providers: [cuiAsDriver(CuiTooltipManual)]\n})\nexport class CuiTooltipManual extends CuiDriver implements OnChanges {\n private readonly hover = inject(CuiTooltipHover);\n private readonly stream$ = new BehaviorSubject(false);\n\n @Input()\n public cuiTooltipManual = false;\n\n public readonly type = 'hint';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n this.hover.enabled = false;\n }\n\n public ngOnChanges(): void {\n this.stream$.next(this.cuiTooltipManual);\n }\n}\n","import { Directive, inject } from '@angular/core';\n\nimport { CuiTooltipDirective } from './tooltip.directive';\n\n@Directive({\n standalone: true,\n selector: '[cuiTooltipOverflow]',\n hostDirectives: [\n {\n directive: CuiTooltipDirective,\n inputs: ['cuiTooltipAppearance']\n }\n ],\n host: {\n '(mouseenter)': 'onMouseEnter($event.currentTarget)'\n }\n})\nexport class CuiTooltipOverflow {\n private readonly hint = inject(CuiTooltipDirective);\n\n protected onMouseEnter({ scrollWidth, clientWidth, textContent }: Element): void {\n this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';\n }\n}\n","import { CuiTooltipComponent } from './tooltip.component';\nimport { CuiTooltipDirective } from './tooltip.directive';\nimport { CuiTooltipDescribe } from './tooltip-describe.directive';\nimport { CuiTooltipDriver } from './tooltip-driver.directive';\nimport { CuiTooltipHost } from './tooltip-host.directive';\nimport { CuiTooltipHover } from './tooltip-hover.directive';\nimport { CuiTooltipManual } from './tooltip-manual.directive';\nimport { CuiTooltipOptionsDirective } from './tooltip-options.directive';\nimport { CuiTooltipOverflow } from './tooltip-overflow.directive';\nimport { CuiTooltipPointer } from './tooltip-pointer.directive';\nimport { CuiTooltipPosition } from './tooltip-position.directive';\nimport { CuiTooltipUnstyled } from './tooltip-unstyled.component';\n\nexport const CuiTooltip = [\n CuiTooltipComponent,\n CuiTooltipDirective,\n CuiTooltipOptionsDirective,\n CuiTooltipUnstyled,\n CuiTooltipDriver,\n CuiTooltipPosition,\n CuiTooltipHover,\n CuiTooltipOverflow,\n CuiTooltipDescribe,\n CuiTooltipHost,\n CuiTooltipManual,\n CuiTooltipPointer\n] as const;\n","import { NgForOf } from '@angular/common';\nimport type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CuiActiveZone } from '@cuby-ui/cdk';\nimport { cuiParentAnimation } from '../../animations';\nimport type { CuiPortalItem } from '../../types';\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\n\nimport { CuiTooltipService } from './tooltip.service';\n\n@Component({\n standalone: true,\n selector: 'cui-tooltips',\n imports: [NgForOf, PolymorpheusTemplate, CuiActiveZone, PolymorpheusOutlet],\n templateUrl: './tooltips.template.html',\n styleUrls: ['./tooltips.style.scss'],\n // So that we do not force OnPush on custom hints\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [cuiParentAnimation],\n host: {\n 'aria-live': 'polite'\n }\n})\nexport class CuiTooltips implements OnInit {\n private readonly hints$ = inject(CuiTooltipService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n protected hints: readonly CuiPortalItem[] = [];\n\n public ngOnInit(): void {\n // Due to this view being parallel to app content, `markForCheck` from `async` pipe\n // can happen after view was checked, so calling `detectChanges` instead\n this.hints$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hints) => {\n this.hints = hints;\n this.cdr.detectChanges();\n });\n }\n}\n","<div\n *ngFor=\"let hint of hints\"\n role=\"tooltip\"\n @cuiParentAnimation\n [cuiActiveZoneParent]=\"hint.activeZone || null\"\n>\n <ng-container *polymorpheusOutlet=\"hint.component; context: { $implicit: hint }\" />\n</div>\n","import { Component, computed, input } from '@angular/core';\nimport { ErrorStatus } from './error-status';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTooltipDirective } from '../../directives';\n\n@Component({\n selector: 'cui-alert-hint',\n standalone: true,\n imports: [CuiSvgModule, CuiTooltipDirective],\n templateUrl: './alert-hint.component.html',\n styleUrl: './alert-hint.component.scss'\n})\nexport class AlertHintComponent {\n private readonly DEFAULT_TOOLTIP_TEXT = 'In development';\n\n protected readonly IconColor: Record<ErrorStatus, string> = {\n warning: 'var(--cui-warning)',\n error: 'var(--cui-danger)'\n };\n\n protected readonly iconColor = computed(() => this.IconColor[this.status()]);\n\n public readonly status = input<ErrorStatus>('error');\n public readonly tooltipText = input(this.DEFAULT_TOOLTIP_TEXT, {\n transform: (value: string | string[]) => {\n return typeof value === 'string' ? value : value.join('<br />');\n }\n });\n}\n","<cui-svg\n [cuiTooltip]=\"tooltipText()\"\n icon=\"cuiIconAlertTriangle\"\n [color]=\"iconColor()\"\n class=\"icon\"\n/>\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport interface CuiBadgeOptions {\n readonly color: CuiBadgeColor;\n readonly size: CuiSizeSm | CuiSizeMd;\n readonly isWithDot: boolean;\n}\n\nexport type CuiBadgeColor = CuiBadgeColorSolid | CuiBadgeColorLight | CuiDeprecationColors;\n\nexport type CuiBadgeColorSolid =\n | 'violet-solid'\n | 'yellow-solid'\n | 'orange-solid'\n | 'lavender-solid'\n | 'magenta-solid'\n | 'green-solid'\n | 'black-solid'\n | 'red-solid'\n | 'blue-solid'\n | 'success-solid';\nexport type CuiBadgeColorLight =\n | 'gray'\n | 'dark-gray'\n | 'blue-light'\n | 'yellow-light'\n | 'green-light'\n | 'red-light'\n | 'lavender-light'\n | 'magenta-light'\n | 'violet-light'\n | 'orange-light';\n\nexport type CuiDeprecationColors = 'light-blue' | 'yellow' | 'green' | 'red' | 'violet' | 'orange';\n\nexport const CUI_BADGE_DEFAULT_OPTIONS: CuiBadgeOptions = {\n color: 'light-blue',\n size: 'sm',\n isWithDot: false\n};\n\nexport const CUI_BADGE_OPTIONS = cuiCreateToken(CUI_BADGE_DEFAULT_OPTIONS);\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\n\nimport type { CuiBadgeOptions } from './badge.options';\nimport { CUI_BADGE_OPTIONS } from './badge.options';\n\n@Component({\n selector: 'cui-badge',\n templateUrl: './badge.template.html',\n styleUrls: ['./badge.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBadgeComponent implements CuiBadgeOptions {\n private readonly options = inject(CUI_BADGE_OPTIONS);\n\n @Input()\n @HostBinding('attr.data-color')\n public color = this.options.color;\n\n @Input()\n @HostBinding('attr.data-size')\n public size = this.options.size;\n\n @Input()\n public isWithDot = this.options.isWithDot;\n}\n","<span\n *ngIf=\"isWithDot\"\n class=\"c-dots\"\n></span>\n<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiBadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CuiBadgeComponent],\n exports: [CuiBadgeComponent]\n})\nexport class CuiBadgeModule {}\n","import type { CuiStatus } from '../../types';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nexport type CuiBannerIconOptions = {\n [k in CuiStatus]: {\n icon: CuiIcon;\n color: string;\n };\n};\n\nexport interface CuiBannerOptions {\n readonly status: CuiStatus;\n}\n\nexport const CUI_BANNER_DEFAULT_OPTIONS: CuiBannerOptions = {\n status: 'info'\n};\n\nexport const CUI_BANNER_OPTIONS = cuiCreateToken(CUI_BANNER_DEFAULT_OPTIONS);\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\n\nimport type { CuiBannerIconOptions, CuiBannerOptions } from './banner.options';\nimport { CUI_BANNER_OPTIONS } from './banner.options';\nimport type { CuiTheme } from '../../services';\nimport { CuiThemeService } from '../../services';\nimport { map } from 'rxjs';\n\n@Component({\n selector: 'cui-banner',\n templateUrl: './banner.template.html',\n styleUrls: ['./banner.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBannerComponent implements CuiBannerOptions {\n private readonly options = inject(CUI_BANNER_OPTIONS);\n protected readonly theme$ = inject(CuiThemeService);\n\n protected readonly ICON_OPTIONS: CuiBannerIconOptions = {\n info: {\n icon: 'cuiIconInfo',\n color: 'var(--c-info-icon-color)'\n },\n success: {\n icon: 'cuiIconCheckCircle',\n color: 'var(--cui-success)'\n },\n alert: {\n icon: 'cuiIconAlertTriangle',\n color: 'var(--c-alert-icon-color)'\n },\n error: {\n icon: 'cuiIconAlertCircle',\n color: 'var(--cui-danger)'\n }\n };\n protected readonly THEME_CLOSE_BUTTON_ICON_COLORS: Record<CuiTheme, string> = {\n light: 'var(--cui-gray-500)',\n dark: 'var(--cui-gray-0)'\n };\n\n @Input()\n @HostBinding('attr.data-status')\n public status = this.options.status;\n\n @Input()\n public isCloseable = true;\n\n @Input()\n public label?: string;\n\n @Input()\n public actionButtonText?: string;\n\n @Output()\n public actionButtonClicked = new EventEmitter<void>();\n\n @Output()\n public closed = new EventEmitter<void>();\n\n protected onAction(): void {\n this.actionButtonClicked.emit();\n }\n\n protected onClose(): void {\n this.closed.emit();\n }\n}\n","<cui-svg\n *cuiLet=\"ICON_OPTIONS[status] as iconOption\"\n [icon]=\"iconOption.icon\"\n [color]=\"iconOption.color\"\n class=\"c-icon\"\n></cui-svg>\n<div class=\"c-wrapper\">\n <h2\n *ngIf=\"label\"\n class=\"c-heading\"\n >\n {{ label }}\n </h2>\n <ng-content></ng-content>\n <button\n cuiButton\n *ngIf=\"actionButtonText\"\n appearance=\"link\"\n class=\"c-action\"\n (click)=\"onAction()\"\n >\n {{ actionButtonText }}\n </button>\n</div>\n<button\n *ngIf=\"isCloseable\"\n class=\"c-button\"\n (click)=\"onClose()\"\n>\n @if (theme$ | async; as theme) {\n <cui-svg\n icon=\"cuiIconX\"\n [color]=\"THEME_CLOSE_BUTTON_ICON_COLORS[theme]\"\n />\n }\n</button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiBannerComponent } from './banner.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiButtonModule } from '../button';\n\n@NgModule({\n imports: [CommonModule, CuiLetDirective, CuiSvgModule, CuiButtonModule],\n declarations: [CuiBannerComponent],\n exports: [CuiBannerComponent]\n})\nexport class CuiBannerModule {}\n","import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\n\nimport { CuiItemDirective } from '@cuby-ui/cdk';\n\n@Component({\n selector: 'cui-breadcrumbs',\n templateUrl: './breadcrumbs.template.html',\n styleUrls: ['./breadcrumbs.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBreadcrumbsComponent {\n @ContentChildren(CuiItemDirective, { read: TemplateRef })\n protected readonly breadcrumbs!: QueryList<TemplateRef<unknown>>;\n}\n","<ng-container *ngIf=\"breadcrumbs.changes | async\" />\n<ng-container *ngFor=\"let breadcrumb of breadcrumbs; let isLast = last\">\n <ng-container *ngTemplateOutlet=\"breadcrumb\" />\n <cui-svg\n *ngIf=\"!isLast\"\n icon=\"cuiIconSlashDivider\"\n color=\"var(--cui-base-500)\"\n />\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: '[cuiBreadcrumb]',\n templateUrl: './breadcrumb.template.html',\n styleUrls: ['./breadcrumb.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiBreadcrumbComponent {\n @Input()\n public isLast = false;\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiBreadcrumbsComponent } from './breadcrumbs.component';\nimport { CuiBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent],\n exports: [CuiBreadcrumbsComponent, CuiBreadcrumbComponent]\n})\nexport class CuiBreadcrumbsModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-button-group',\n templateUrl: './button-group.template.html',\n styleUrls: ['./button-group.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiButtonGroupComponent {}\n","<ng-content select=\"button[cuiButton], a[cuiButton]\"></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { CuiButtonGroupComponent } from './button-group.component';\n\n@NgModule({\n declarations: [CuiButtonGroupComponent],\n exports: [CuiButtonGroupComponent]\n})\nexport class CuiButtonGroupModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'input[type=\"checkbox\"][cuiCheckbox]',\n template: '',\n styleUrls: ['./checkbox.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiCheckboxComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CuiCheckboxComponent],\n exports: [CuiCheckboxComponent]\n})\nexport class CuiCheckboxModule {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiTooltipDirective } from '../../directives';\nimport { CuiSvgModule } from '../svg';\n\n@Component({\n selector: 'header[cuiContentHeader]',\n imports: [CuiSvgModule, CuiTooltipDirective],\n templateUrl: './content-header.component.html',\n styleUrl: './content-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class ContentHeaderComponent {\n public readonly heading = input.required<string>();\n public readonly subheading = input<string>();\n public readonly tooltip = input<string>();\n}\n","<div class=\"wrapper\">\n <span class=\"heading\">\n {{ heading() }}\n\n @if (tooltip(); as tooltip) {\n <cui-svg\n icon=\"cuiIconQuestionCircleBold\"\n [cuiTooltip]=\"tooltip\"\n />\n }\n </span>\n\n @if (subheading(); as subheading) {\n <h2 class=\"subheading\">{{ subheading }}</h2>\n }\n</div>\n\n<ng-content />\n","export const CUI_ROOT_SELECTOR = 'cui-root';\n","import { InjectionToken } from '@angular/core';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { cuiCreateToken } from '@cuby-ui/cdk';\nimport { BehaviorSubject } from 'rxjs';\n\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\nexport const CUI_DIALOGS = cuiCreateToken(new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([]));\n\nexport const CUI_DIALOG_DEFAULT_OPTIONS: CuiDialogOptions = {\n size: 'auto',\n data: undefined,\n dismissible: true\n};\n\nexport const CUI_DIALOG_OPTIONS = cuiCreateToken(CUI_DIALOG_DEFAULT_OPTIONS);\n\nexport const CUI_DIALOG_CONTEXT = new InjectionToken<CuiPopover<CuiDialogOptions>>('');\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport type { CuiPopover } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport type { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs';\n\nimport { CUI_DIALOG_CONTEXT, CUI_DIALOGS } from './dialog.tokens';\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\n@Component({\n selector: 'cui-dialogs',\n templateUrl: './dialogs.template.html',\n styleUrls: ['./dialogs.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiDestroyService]\n})\nexport class CuiDialogsComponent implements OnInit {\n private readonly document = inject(DOCUMENT);\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n protected readonly dialogs$: Observable<ReadonlyArray<CuiPopover<CuiDialogOptions>>> = inject(CUI_DIALOGS);\n protected dialogInjectorCache = new Map<string, Injector>();\n protected dialogInjectors!: ReadonlyArray<Injector>;\n\n public ngOnInit(): void {\n this.initDialogsSubscription();\n }\n\n protected trackByFn(_: number, dialog: CuiPopover<CuiDialogOptions>): string {\n return dialog.id;\n }\n\n protected initDialogsSubscription(): void {\n this.dialogs$.pipe(takeUntil(this.destroy$)).subscribe((dialogs) => {\n this.document.body.style.overflow = dialogs.length ? 'hidden' : '';\n this.dialogInjectors = dialogs.map((dialog) => {\n if (!this.dialogInjectorCache.has(dialog.id)) {\n this.dialogInjectorCache.set(\n dialog.id,\n Injector.create({\n providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\n parent: dialog.injector\n })\n );\n }\n\n return this.dialogInjectorCache.get(dialog.id)!;\n });\n\n this.dialogInjectorCache.forEach((_, dialogId) => {\n if (dialogs.find((dialog) => dialog.id === dialogId)) {\n return;\n }\n\n this.dialogInjectorCache.delete(dialogId);\n });\n });\n }\n}\n","<ng-container *cuiLet=\"dialogs$ | async as dialogs\">\n <ng-container *ngFor=\"let dialog of dialogs; let i = index; trackBy: trackByFn\">\n <ng-container *ngComponentOutlet=\"dialog.component; injector: dialogInjectors[i]\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"dialogs!.length\"\n class=\"c-overlay\"\n ></div>\n</ng-container>\n","import type { OnInit } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { CuiThemeService } from '../../services';\nimport { CUI_ROOT_SELECTOR } from './root.options';\n\n@Component({\n selector: CUI_ROOT_SELECTOR,\n templateUrl: './root.template.html',\n styleUrls: ['./root.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRootComponent implements OnInit {\n private readonly document = inject(DOCUMENT);\n private readonly theme$ = inject(CuiThemeService);\n\n public ngOnInit(): void {\n this.initThemeSubscription();\n }\n\n private initThemeSubscription(): void {\n this.theme$.subscribe((theme) => this.document.documentElement.setAttribute('cuiTheme', theme));\n }\n}\n","<div class=\"c-content\">\n <ng-content />\n</div>\n<cui-dialogs />\n<cui-alerts />\n<cui-tooltips />\n","import type { OnInit } from '@angular/core';\nimport { HostBinding, HostListener, Type } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ElementRef } from '@angular/core';\nimport type { CuiValueOf } from '@cuby-ui/cdk';\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\n\nimport type { CuiDialogSize } from './dialog.interfaces';\nimport { CUI_DIALOG_CONTEXT } from './dialog.tokens';\n\n// TODO: сделать структурную директиву\nconst ContentType = {\n String: 'string',\n Template: 'template',\n Component: 'component'\n} as const;\n\ntype IContentType = CuiValueOf<typeof ContentType>;\n\n@Component({\n selector: 'cui-dialog',\n templateUrl: './dialog.template.html',\n styleUrls: ['./dialog.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiFocusTrapDirective]\n})\nexport class CuiDialogComponent implements OnInit {\n protected readonly element = inject(ElementRef).nativeElement as HTMLElement;\n protected readonly context = inject(CUI_DIALOG_CONTEXT);\n\n protected readonly LAST_OF_TYPE_SELECTOR = ':last-of-type';\n\n protected readonly ContentType = ContentType;\n\n protected contentType: IContentType = ContentType.Component;\n\n @HostBinding('attr.data-size')\n protected get size(): CuiDialogSize {\n return this.context.size;\n }\n\n public ngOnInit(): void {\n this.initContentType();\n }\n\n protected get contentTemplateRef(): TemplateRef<unknown> {\n return this.context.content as TemplateRef<unknown>;\n }\n\n protected get componentType(): Type<unknown> {\n return this.context.content as Type<unknown>;\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected onEscape(): void {\n if (!this.context.dismissible) {\n return;\n }\n\n if (!this.element.matches(this.LAST_OF_TYPE_SELECTOR)) {\n return;\n }\n\n this.context.completeWith();\n }\n\n private initContentType(): void {\n const content = this.context.content;\n\n switch (true) {\n case typeof content === 'string':\n this.contentType = ContentType.String;\n\n return;\n\n case content instanceof TemplateRef:\n this.contentType = ContentType.Template;\n\n return;\n }\n }\n}\n","<ng-container [ngSwitch]=\"contentType\">\n <ng-container *ngSwitchCase=\"ContentType.String\">\n {{ context.content }}\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.Template\">\n <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: context\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"ContentType.Component\">\n <div class=\"c-component-container\">\n <ng-container *ngComponentOutlet=\"componentType\"></ng-container>\n </div>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-dialog-actions',\n templateUrl: './dialog-actions.template.html',\n styleUrls: ['./dialog-actions.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDialogActionsComponent {}\n","<div class=\"c-divider\"></div>\n<div class=\"c-content\">\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PolymorpheusContent } from '@taiga-ui/polymorpheus';\nimport { PolymorpheusContext } from '@taiga-ui/polymorpheus/classes/context';\n\n@Component({\n selector: 'header[cuiDialogHeader][heading]',\n templateUrl: './dialog-header.template.html',\n styleUrls: ['./dialog-header.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiDialogHeaderComponent<T> {\n @Input()\n public heading!: PolymorpheusContent;\n\n @Input()\n public headingContext?: T;\n\n @Input()\n public subheading?: string;\n\n @Output()\n public readonly closed = new EventEmitter<MouseEvent>();\n\n protected onClose(event: MouseEvent): void {\n this.closed.emit(event);\n }\n}\n","<div class=\"c-heading\">\n <ng-container *polymorpheusOutlet=\"heading as heading; context: headingContext\">{{ heading }}</ng-container>\n</div>\n<button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n icon=\"cuiIconClearSm\"\n class=\"c-button\"\n (click)=\"onClose($event)\"\n></button>\n<span *ngIf=\"subheading\">{{ subheading }}</span>\n<ng-content />\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CuiLetDirective } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule } from '../button';\nimport { CuiDialogComponent } from './dialog.component';\nimport { CuiDialogsComponent } from './dialogs.component';\nimport { CuiDialogActionsComponent } from './dialog-actions/dialog-actions.component';\nimport { CuiDialogHeaderComponent } from './dialog-header/dialog-header.component';\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusOutlet, CuiLetDirective, CuiButtonModule],\n declarations: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent],\n exports: [CuiDialogComponent, CuiDialogsComponent, CuiDialogActionsComponent, CuiDialogHeaderComponent]\n})\nexport class CuiDialogModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { CuiPopoverService } from '@cuby-ui/cdk';\n\nimport { CUI_DIALOG_OPTIONS, CUI_DIALOGS } from './dialog.tokens';\nimport { CuiDialogComponent } from './dialog.component';\nimport type { CuiDialogOptions } from './dialog.interfaces';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new CuiDialogService(CUI_DIALOGS, CuiDialogComponent, inject(CUI_DIALOG_OPTIONS))\n})\nexport class CuiDialogService extends CuiPopoverService<CuiDialogOptions> {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiRootComponent } from './root.component';\nimport { CuiDialogModule } from '../dialog';\nimport { CuiAlertModule } from '../alert';\nimport { CuiTooltips } from '../../directives/tooltip';\n\n@NgModule({\n imports: [CommonModule, CuiDialogModule, CuiAlertModule, CuiTooltips],\n declarations: [CuiRootComponent],\n exports: [CuiRootComponent]\n})\nexport class CuiRootModule {}\n","import type { OnInit, AfterViewInit, TemplateRef, OnDestroy } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n Input,\n ViewContainerRef,\n ViewChild\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n CuiDestroyService,\n CuiClickOutsideDirective,\n CuiTargetDirective,\n CUI_WINDOW,\n cuiGetClosestFocusable\n} from '@cuby-ui/cdk';\nimport { fromEvent, take, takeUntil } from 'rxjs';\n\nimport type { CuiContextMenuItem } from '../../interfaces';\nimport { CUI_ROOT_SELECTOR } from '../root';\n\n@Component({\n selector: 'cui-context-menu[items][target]',\n templateUrl: './context-menu.component.html',\n styleUrls: ['./context-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiDestroyService],\n hostDirectives: [\n CuiClickOutsideDirective,\n {\n directive: CuiTargetDirective,\n inputs: ['ccTarget: target']\n }\n ]\n})\nexport class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly document = inject(DOCUMENT);\n private readonly documentElement = this.document.documentElement;\n private readonly window = inject(CUI_WINDOW);\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n private readonly cuiTargetDirective = inject(CuiTargetDirective, { self: true });\n\n protected readonly EXTRA_OFFSET_LEFT = 0;\n protected readonly EXTRA_OFFSET_TOP = 0;\n\n protected isVisible = false;\n protected node?: HTMLDivElement;\n\n @Input()\n public items!: CuiContextMenuItem[];\n\n @Input()\n public target!: HTMLElement;\n\n @Input()\n public width!: string;\n\n @Input()\n public withPaddings = true;\n\n @ViewChild('list')\n protected readonly list!: TemplateRef<any>;\n\n @ViewChild('backdrop')\n protected readonly backdrop!: TemplateRef<any>;\n\n public ngOnInit(): void {\n this.initClickOutsideSubscription();\n }\n\n public ngOnDestroy(): void {\n this.clearViewContainerRef();\n }\n\n public ngAfterViewInit(): void {\n this.initTargetElementListener();\n }\n\n protected onSelect(item: CuiContextMenuItem): void {\n this.close();\n\n item.command?.();\n }\n\n @HostListener('window:resize')\n protected onClose(): void {\n this.close();\n }\n\n @HostListener('click', ['$event'])\n protected onStopClickPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n protected trackByFn(_: number, item: CuiContextMenuItem): string {\n return item.label;\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe((target) => {\n if (this.target.contains(target)) {\n return;\n }\n\n this.close();\n });\n }\n\n private initTargetElementListener(): void {\n this.cuiTargetDirective.clicked.pipe(takeUntil(this.destroy$)).subscribe(this.targetEventListener.bind(this));\n }\n\n private initHidingSubscription(): void {\n this.initHidingFromWindowEvent('scroll');\n this.initHidingFromWindowEvent('resize');\n }\n\n private initHidingFromWindowEvent(eventName: keyof WindowEventMap): void {\n fromEvent(this.window, eventName)\n .pipe(take(1))\n .subscribe(() => this.close());\n }\n\n private targetEventListener(event: MouseEvent): void {\n event.stopPropagation();\n // TODO: нужен для перерисовки ngFor\n this.document.body.click();\n\n this.isVisible = !this.isVisible;\n\n this.clearViewContainerRef();\n\n if (!this.isVisible) {\n return;\n }\n\n this.renderList();\n this.changePosition(event.clientX, event.clientY);\n this.initHidingSubscription();\n }\n\n private close(): void {\n this.isVisible = false;\n\n this.clearViewContainerRef();\n }\n\n private renderList(): void {\n const root = this.document.querySelector(CUI_ROOT_SELECTOR)!;\n const backdropViewRef = this.viewContainerRef.createEmbeddedView(this.backdrop);\n const listViewRef = this.viewContainerRef.createEmbeddedView(this.list);\n\n this.node = listViewRef.rootNodes[0];\n\n root.append(backdropViewRef.rootNodes[0], this.node!);\n }\n\n private changePosition(x: number, y: number): void {\n this.node!.style.visibility = 'hidden';\n\n setTimeout(() => {\n const { clientWidth, clientHeight } = this.documentElement;\n const width = this.node!.offsetWidth;\n const height = this.node!.offsetHeight;\n let left = x;\n let top = y;\n\n if (left + width > clientWidth) {\n left -= width;\n }\n\n if (top + height > clientHeight) {\n top -= height;\n }\n\n left = Math.max(left, this.EXTRA_OFFSET_LEFT);\n top = Math.max(top, this.EXTRA_OFFSET_TOP);\n\n this.node!.style.left = left + 'px';\n this.node!.style.top = top + 'px';\n this.node!.style.visibility = '';\n\n cuiGetClosestFocusable({ initial: this.node!, root: this.node! })?.focus();\n });\n }\n\n private clearViewContainerRef(): void {\n this.viewContainerRef.clear();\n }\n}\n","<ng-template #backdrop>\n <div class=\"c-backdrop\"></div>\n</ng-template>\n\n<ng-template #list>\n <div\n class=\"c-container\"\n [style.width]=\"width\"\n >\n <ul\n class=\"c-ul\"\n [class.c-ul_with-padding]=\"withPaddings\"\n >\n <li\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [style.color]=\"item.color\"\n >\n <button\n type=\"button\"\n class=\"c-button\"\n (click)=\"onSelect(item)\"\n >\n <cui-svg\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.color\"\n ></cui-svg>\n <span>{{ item.label }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { CuiContextMenuComponent } from './context-menu.component';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiContextMenuComponent],\n exports: [CuiContextMenuComponent]\n})\nexport class CuiContextMenuModule {}\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output,\r\n signal,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nimport type { ChangePositionYParams, CuiDropdownOrientation } from './dropdown.interfaces';\r\nimport { cuiCheckFixedPosition } from '../../utils';\r\n\r\n@Directive({\r\n selector: '[cuiDropdown]',\r\n exportAs: 'cuiDropdown',\r\n standalone: true\r\n})\r\nexport class CuiDropdownDirective implements OnInit, OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly target = inject(ElementRef).nativeElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n\r\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n private readonly CONTAINER_SELECTOR = 'cui-dropdowns';\r\n private readonly DROPDOWN_SELECTOR = 'cui-dropdown';\r\n\r\n private container!: Element;\r\n private element!: HTMLElement;\r\n private backdrop!: HTMLDivElement;\r\n\r\n @Input({ required: true, alias: 'cuiDropdown' })\r\n public content!: TemplateRef<unknown>;\r\n\r\n @Input()\r\n public orientation: CuiDropdownOrientation = 'left';\r\n\r\n @Output()\r\n public readonly isOpened = new EventEmitter<boolean>();\r\n\r\n private readonly isOpen = signal(false);\r\n private readonly targetToggleEventListener = (): void => {\r\n if (!this.isOpen()) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.close();\r\n };\r\n private elementResizeObserver!: ResizeObserver;\r\n\r\n constructor() {\r\n this.initTargetElementListener();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onResize(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n protected onClick(event: MouseEvent): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const elements = this.document.elementsFromPoint(event.clientX, event.clientY);\r\n const doesExist = elements.some((element) => this.element.contains(element));\r\n\r\n if (this.target.contains(target) || this.element.contains(target) || doesExist) {\r\n return;\r\n }\r\n\r\n this.close();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initContainer();\r\n this.initDropdown();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.close();\r\n this.destroyElementResizeObserver();\r\n }\r\n\r\n public open(): void {\r\n this.element.style.position = cuiCheckFixedPosition(this.target) ? 'fixed' : 'absolute';\r\n this.isOpen.set(true);\r\n this.container.append(this.backdrop, this.element);\r\n this.calculateDropdownPosition();\r\n this.isOpened.emit(true);\r\n }\r\n\r\n public close(): void {\r\n this.isOpen.set(false);\r\n this.backdrop?.remove();\r\n this.element?.remove();\r\n this.isOpened.emit(false);\r\n }\r\n\r\n private initContainer(): void {\r\n const root = this.document.querySelector('cui-dialogs');\r\n const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);\r\n\r\n if (container) {\r\n this.container = container;\r\n\r\n return;\r\n }\r\n\r\n this.container = this.document.createElement(this.CONTAINER_SELECTOR);\r\n\r\n root?.after(this.container);\r\n }\r\n\r\n private initDropdown(): void {\r\n const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;\r\n\r\n this.backdrop = this.document.createElement('div');\r\n this.element = this.document.createElement(this.DROPDOWN_SELECTOR);\r\n\r\n this.backdrop.style.position = 'fixed';\r\n this.backdrop.style.inset = '0';\r\n this.element.style.top = '0';\r\n\r\n this.element.style.pointerEvents = 'auto';\r\n this.element.append(...content);\r\n\r\n this.initResizeObserver();\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);\r\n }\r\n\r\n private initResizeObserver(): void {\r\n this.elementResizeObserver = new ResizeObserver(() => {\r\n this.changeDropdownYCoordinateIfNeeded();\r\n });\r\n\r\n this.elementResizeObserver.observe(this.element);\r\n }\r\n\r\n private destroyElementResizeObserver(): void {\r\n this.elementResizeObserver.disconnect();\r\n }\r\n\r\n private changeDropdownYCoordinateIfNeeded(): void {\r\n const distanceToBottom =\r\n this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;\r\n\r\n if (distanceToBottom >= 0) {\r\n return;\r\n }\r\n\r\n this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.element.style.visibility = 'hidden';\r\n\r\n setTimeout(() => {\r\n const targetRect = this.target.getBoundingClientRect();\r\n const container = this.findScrollableContainer(this.target);\r\n const containerRect = container.getBoundingClientRect();\r\n const { clientHeight, clientWidth } = this.document.documentElement;\r\n const visibleTop = Math.max(targetRect.top, containerRect.top);\r\n const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);\r\n const dropdownHeight = this.element.offsetHeight;\r\n const windowScrollY = !cuiCheckFixedPosition(this.target) ? this.window.scrollY : 0;\r\n\r\n const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;\r\n const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;\r\n const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');\r\n\r\n this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight, windowScrollY });\r\n this.changePositionX(orientation, clientWidth, targetRect);\r\n\r\n this.element.style.visibility = 'visible';\r\n });\r\n }\r\n\r\n private changePositionX(orientation: string, clientWidth: number, targetRect: DOMRect): void {\r\n switch (orientation) {\r\n case 'right':\r\n this.element.style.left = 'auto';\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n case 'stretch':\r\n this.element.style.left = `${targetRect.left}px`;\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n default:\r\n this.element.style.right = 'auto';\r\n this.element.style.left = `${targetRect.left}px`;\r\n }\r\n }\r\n\r\n private changePositionY({\r\n shouldListOpenAbove,\r\n visibleTop,\r\n visibleBottom,\r\n dropdownHeight,\r\n windowScrollY\r\n }: ChangePositionYParams): void {\r\n const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;\r\n\r\n if (shouldListOpenAbove) {\r\n this.element.style.top = `${windowScrollY + visibleTop - dropdownHeight - offset}px`;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = `${windowScrollY + visibleBottom + offset}px`;\r\n }\r\n\r\n private findScrollableContainer(element: HTMLElement): HTMLElement {\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n const { overflowY } = window.getComputedStyle(parent);\r\n\r\n if (overflowY === 'auto' || overflowY === 'scroll') {\r\n return parent;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return this.document.body;\r\n }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n selector: 'cui-dropdown-wrapper',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './dropdown-wrapper.component.html',\r\n styleUrls: ['./dropdown-wrapper.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDropdownWrapperComponent {\r\n @Input()\r\n public title?: string;\r\n\r\n @Input()\r\n public width?: string;\r\n\r\n @Input()\r\n public maxHeight: string = '350px';\r\n}\r\n","<div\r\n [style.width]=\"width\"\r\n [style.max-height]=\"maxHeight\"\r\n class=\"dropdown\"\r\n>\r\n <header\r\n *ngIf=\"title\"\r\n class=\"header\"\r\n >\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'cui-form-field',\n templateUrl: './form-field.template.html',\n styleUrls: ['./form-field.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFormFieldComponent {}\n","<ng-content select=\"label[cuiLabel]\" />\n<ng-content />\n<div class=\"c-hint-container\">\n <ng-content select=\"cui-hint\" />\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { CuiFormFieldComponent } from './form-field.component';\n\n@NgModule({\n declarations: [CuiFormFieldComponent],\n exports: [CuiFormFieldComponent]\n})\nexport class CuiFormFieldModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport type { CuiHintType } from '../../types';\n\n@Component({\n selector: 'cui-hint',\n templateUrl: './hint.template.html',\n styleUrls: ['./hint.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiHintComponent {\n @Input()\n @HostBinding('attr.data-hint-type')\n public hintType: CuiHintType = 'info';\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { CuiHintComponent } from './hint.component';\n\n@NgModule({\n declarations: [CuiHintComponent],\n exports: [CuiHintComponent]\n})\nexport class CuiHintModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\n@Component({\n selector: 'button[cuiIconButton][icon], a[cuiIconButton][icon]',\n templateUrl: './icon-button.template.html',\n styleUrls: ['./icon-button.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiIconButtonComponent {\n protected readonly ICON_WIDTH = 16;\n protected readonly ICON_HEIGHT = 16;\n protected readonly ICON_STROKE_WIDTH = 1.5;\n\n @Input()\n public icon!: CuiIcon | string;\n\n @Input()\n public color?: string;\n\n @Input()\n @HostBinding('style.--icon-hover-color')\n public hoverColor?: string;\n\n @HostBinding('class._with-hover-color')\n protected get isWithHoverColor(): boolean {\n return !!this.hoverColor;\n }\n}\n","<cui-svg\n [icon]=\"icon\"\n [width]=\"ICON_WIDTH\"\n [height]=\"ICON_HEIGHT\"\n [color]=\"color\"\n [strokeWidth]=\"ICON_STROKE_WIDTH\"\n class=\"c-icon\"\n></cui-svg>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiIconButtonComponent } from './icon-button.component';\nimport { CuiSvgModule } from '../svg';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule],\n declarations: [CuiIconButtonComponent],\n exports: [CuiIconButtonComponent]\n})\nexport class CuiIconButtonModule {}\n","import type { ElementRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n inject,\n Input,\n ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { MaskitoOptions } from '@maskito/core';\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';\nimport { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n selector: 'cui-input-number',\n templateUrl: './input-number.template.html',\n styleUrls: ['./input-number.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)]\n})\nexport class CuiInputNumberComponent implements ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n protected maskOptions = this.generateMask();\n protected _precision = 0;\n protected _min = Number.MIN_SAFE_INTEGER;\n protected _max = Number.MAX_SAFE_INTEGER;\n protected value!: CuiNullable<string>;\n protected onChange!: CuiOnChange<CuiNullable<number>>;\n protected onTouched!: CuiOnTouched;\n\n @Input()\n public set precision(value: number) {\n this._precision = value;\n this.maskOptions = this.generateMask();\n }\n\n @Input()\n public set min(value: number) {\n this._min = value;\n this.maskOptions = this.generateMask();\n }\n\n @Input()\n public set max(value: number) {\n this._max = value;\n this.maskOptions = this.generateMask();\n }\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n @ViewChild('input')\n protected input!: ElementRef<HTMLInputElement>;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get iconLeft(): CuiIcon | string | undefined {\n return this.cuiTextFieldController.iconLeft;\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<number>): void {\n this.value = value?.toString();\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<CuiNullable<number>>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput({ target }: Event): void {\n this.changeModel((target as HTMLInputElement).value);\n }\n\n @HostListener('click')\n protected onFocus(): void {\n this.input.nativeElement.focus();\n }\n\n private changeModel(value: string): void {\n const parsedValue = maskitoParseNumber(value);\n\n this.value = value;\n\n this.onChange(Number.isNaN(parsedValue) ? null : parsedValue);\n }\n\n private generateMask(): MaskitoOptions {\n return maskitoNumberOptionsGenerator({\n precision: this._precision,\n min: this._min,\n max: this._max\n });\n }\n}\n","<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\n\nimport { CuiInputNumberComponent } from './input-number.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\n declarations: [CuiInputNumberComponent],\n exports: [CuiInputNumberComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputNumberModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, input } from '@angular/core';\n\n@Component({\n selector: 'cui-content-wrapper, [cuiContentWrapper]',\n standalone: true,\n templateUrl: './content-wrapper.component.html',\n styleUrl: './content-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiContentWrapperComponent {\n private readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-base-0)';\n private readonly DEFAULT_GAP = 8;\n\n public readonly backgroundColor = input(this.DEFAULT_BACKGROUND_COLOR);\n public readonly gap = input(this.DEFAULT_GAP);\n\n @HostBinding('style.background')\n protected get _backgroundColor(): string {\n return this.backgroundColor();\n }\n\n @HostBinding('style.gap.px')\n protected get _gap(): number {\n return this.gap();\n }\n}\n","<ng-content />\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'input [cuiGhostInput]',\n standalone: true,\n template: '',\n styleUrl: './ghost-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._with-error]': 'isError()'\n }\n})\nexport class CuiGhostInputComponent {\n public isError = input(false, { transform: booleanAttribute });\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiInputType, CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n selector: 'cui-input-password',\n templateUrl: './input-password.template.html',\n styleUrls: ['./input-password.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)]\n})\nexport class CuiInputPasswordComponent implements ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n protected isPasswordHidden = true;\n protected value!: CuiNullable<string>;\n protected onChange!: CuiOnChange<string>;\n protected onTouched!: CuiOnTouched;\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get iconLeft(): CuiIcon | string | undefined {\n return this.cuiTextFieldController.iconLeft;\n }\n\n protected get isToggleButtonShown(): boolean {\n return !this.isDisabled;\n }\n\n protected get icon(): CuiIcon {\n return this.isPasswordHidden ? 'cuiIconEye' : 'cuiIconEyeOff';\n }\n\n protected get type(): CuiInputType {\n return this.isPasswordHidden ? 'password' : 'text';\n }\n\n protected get buttonTitle(): string {\n return this.isPasswordHidden ? 'Reveal password' : 'Hide password';\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<string>): void {\n this.value = value;\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<string>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n if (this.isDisabled) {\n this.isPasswordHidden = true;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput({ target }: Event): void {\n const value = (target as HTMLInputElement).value;\n\n this.value = value;\n\n this.onChange(value);\n }\n\n protected onTogglePasswordVisibility(): void {\n this.isPasswordHidden = !this.isPasswordHidden;\n }\n}\n","<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n *ngIf=\"isToggleButtonShown\"\n [title]=\"buttonTitle\"\n class=\"c-button\"\n (click)=\"onTogglePasswordVisibility()\"\n>\n <cui-svg\n [icon]=\"icon\"\n [width]=\"16\"\n [height]=\"16\"\n color=\"var(--cui-base-500)\"\n ></cui-svg>\n</button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiInputPasswordComponent } from './input-password.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n imports: [CommonModule, FormsModule, CuiSvgModule],\n declarations: [CuiInputPasswordComponent],\n exports: [CuiInputPasswordComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputPasswordModule {}\n","import type { ElementRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n inject,\n ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\nimport { cuiProvide } from '@cuby-ui/cdk';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\n\n@Component({\n selector: 'cui-input-text',\n templateUrl: './input-text.template.html',\n styleUrls: ['./input-text.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)]\n})\nexport class CuiInputTextComponent implements ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n protected value!: CuiNullable<string>;\n protected onChange!: CuiOnChange<string>;\n protected onTouched!: CuiOnTouched;\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n @ViewChild('input')\n protected input!: ElementRef<HTMLInputElement>;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get iconLeft(): CuiIcon | string | undefined {\n return this.cuiTextFieldController.iconLeft;\n }\n\n protected get isClearButtonHidden(): boolean {\n return !(this.value && !this.isDisabled);\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<string>): void {\n this.value = value;\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<string>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput({ target }: Event): void {\n this.changeModel((target as HTMLInputElement).value);\n }\n\n protected onClear(): void {\n this.changeModel('');\n }\n\n @HostListener('click')\n protected onFocus(): void {\n this.input.nativeElement.focus();\n }\n\n private changeModel(value: string): void {\n this.value = value;\n\n this.onChange(value);\n }\n}\n","<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n type=\"button\"\n class=\"c-button\"\n [class.c-button_hidden]=\"isClearButtonHidden\"\n (click)=\"onClear()\"\n>\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"c-close-icon\"\n />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiTextFieldControllerModule } from '../../directives';\nimport { CuiSvgModule } from '../svg';\nimport { CuiInputTextComponent } from './input-text.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, CuiSvgModule],\n declarations: [CuiInputTextComponent],\n exports: [CuiInputTextComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputModule {}\n","import { InjectionToken } from '@angular/core';\nimport type { CuiTimeMode } from '@cuby-ui/cdk';\n\nexport interface CuiInputTimeOptions {\n readonly mode: CuiTimeMode;\n}\n\nexport const CUI_INPUT_TIME_DEFAULT_OPTIONS: CuiInputTimeOptions = {\n mode: 'HH:MM'\n};\n\nexport const CUI_INPUT_TIME_OPTIONS = new InjectionToken('', {\n factory: () => CUI_INPUT_TIME_DEFAULT_OPTIONS\n});\n","import type { ElementRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n inject,\n Input,\n ViewChild\n} from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { MaskitoTimeMode } from '@maskito/kit';\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\nimport type { MaskitoOptions } from '@maskito/core';\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { cuiProvide, CuiTime } from '@cuby-ui/cdk';\n\nimport { CUI_INPUT_TIME_OPTIONS, CuiInputTimeOptions } from './input-time.options';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\n\n@Component({\n selector: 'cui-input-time',\n templateUrl: './input-time.template.html',\n styleUrls: ['./input-time.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)]\n})\nexport class CuiInputTimeComponent implements CuiInputTimeOptions, ControlValueAccessor {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n private readonly options = inject(CUI_INPUT_TIME_OPTIONS);\n\n protected _mode = this.options.mode;\n protected maskOptions = this.generateMask(this._mode);\n protected defaultPlaceholder = this._mode.toLowerCase();\n protected value!: CuiNullable<CuiTime>;\n protected onChange!: CuiOnChange<CuiNullable<CuiTime>>;\n protected onTouched!: CuiOnTouched;\n\n @Input()\n public set mode(value: CuiInputTimeOptions['mode']) {\n this._mode = value;\n this.maskOptions = this.generateMask(value);\n this.defaultPlaceholder = value.toLowerCase();\n }\n\n @HostBinding('class._disabled')\n protected isDisabled!: boolean;\n\n @ViewChild('input')\n protected input!: ElementRef<HTMLInputElement>;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder ?? this.defaultPlaceholder;\n }\n\n public get computedValue(): string {\n return this.value ? this.value.toString(this._mode) : '';\n }\n\n @HostBinding('attr.data-size')\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n public writeValue(value: CuiNullable<CuiTime>): void {\n this.value = value;\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<CuiNullable<CuiTime>>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n\n if (value.length !== this._mode.length) {\n this.onChange(null);\n\n return;\n }\n\n const time = CuiTime.fromString(value);\n\n this.onChange(time);\n }\n\n @HostListener('click')\n protected onFocus(): void {\n this.input.nativeElement.focus();\n }\n\n private generateMask(mode: MaskitoTimeMode): MaskitoOptions {\n return maskitoTimeOptionsGenerator({ mode });\n }\n}\n","<cui-svg\n icon=\"cuiIconClock\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"computedValue\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaskitoDirective } from '@maskito/angular';\n\nimport { CuiInputTimeComponent } from './input-time.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MaskitoDirective, CuiSvgModule],\n declarations: [CuiInputTimeComponent],\n exports: [CuiInputTimeComponent, CuiTextFieldControllerModule]\n})\nexport class CuiInputTimeModule {}\n","import { Component } from '@angular/core';\nimport { CuiBadgeModule } from '../badge';\nimport { CuiSvgModule } from '../svg';\n\n@Component({\n selector: 'lib-inserted',\n standalone: true,\n imports: [CuiBadgeModule, CuiSvgModule],\n templateUrl: './inserted.component.html',\n styleUrl: './inserted.component.scss'\n})\nexport class InsertedComponent {}\n","<ng-container *transloco=\"let t\">\n <cui-badge color=\"violet\">\n <cui-svg\n class=\"icon\"\n icon=\"cuiIconVariant\"\n color=\"var(--cui-violet-400)\"\n />\n {{ t('INSERTED') }}\n </cui-badge>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'label[cuiLabel]',\n templateUrl: './label.template.html',\n styleUrls: ['./label.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiLabelComponent {\n @Input()\n public isRequired = false;\n}\n","<span class=\"c-wrapper\">\n <ng-content></ng-content>\n</span>\n<span\n *ngIf=\"isRequired\"\n class=\"c-star\"\n>\n *\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiLabelComponent } from './label.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CuiLabelComponent],\n exports: [CuiLabelComponent]\n})\nexport class CuiLabelModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport type { CuiShape, CuiSize } from './letter-box.interfaces';\n\n@Component({\n selector: 'cui-letter-box',\n standalone: true,\n templateUrl: './letter-box.component.html',\n styleUrls: ['./letter-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiLetterBoxComponent {\n protected readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-magenta-500)';\n\n @Input({ required: true })\n public letter!: string;\n\n @Input()\n public backgroundColor?: string;\n\n @Input()\n public size: CuiSize = 'sm';\n\n @Input()\n public shape: CuiShape = null;\n\n @HostBinding('style.background-color')\n protected get _backgroundColor(): string {\n return this.backgroundColor ?? this.DEFAULT_BACKGROUND_COLOR;\n }\n\n @HostBinding('attr.data-size')\n protected get _size(): CuiSize {\n return this.size;\n }\n\n @HostBinding('attr.data-shape')\n protected get _shape(): CuiShape {\n return this.shape;\n }\n}\n","{{ letter }}\n","import { Injectable, signal } from '@angular/core';\n\nimport type { CuiDynamicComponent } from './render-dynamic-components.options';\n\n@Injectable()\nexport class CuiRenderDynamicComponentsService {\n private readonly dynamicComponentsSignal = signal<CuiDynamicComponent[]>([]);\n\n public readonly dynamicComponents = this.dynamicComponentsSignal.asReadonly();\n\n public open(dynamicComponent: CuiDynamicComponent): void {\n this.dynamicComponentsSignal.update((prevDynamicComponents) => [...prevDynamicComponents, dynamicComponent]);\n }\n\n public closeLast(): void {\n this.dynamicComponentsSignal.update((prevDynamicComponents) => prevDynamicComponents.slice(0, -1));\n }\n\n public closeAllExceptFirst(): void {\n this.dynamicComponentsSignal.update((prevDynamicComponents) => {\n const firstDynamicComponent = prevDynamicComponents[0];\n\n return firstDynamicComponent ? [firstDynamicComponent] : [];\n });\n }\n\n public closeAll(): void {\n this.dynamicComponentsSignal.set([]);\n }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { CuiRenderDynamicComponentsService } from './render-dynamic-components.service';\n\n@Component({\n selector: 'cui-render-dynamic-components',\n imports: [NgComponentOutlet],\n standalone: true,\n templateUrl: './render-dynamic-components.component.html',\n styleUrl: './render-dynamic-components.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRenderDynamicComponentsComponent {\n private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n protected readonly dynamicComponents = this.renderDynamicComponentsService.dynamicComponents;\n}\n","@for (dynamicComponent of dynamicComponents(); let isLast = $last; track $index) {\n <div\n class=\"container\"\n [class.container_hidden]=\"!isLast\"\n >\n <ng-container *ngComponentOutlet=\"dynamicComponent.component; inputs: dynamicComponent.inputs\" />\n </div>\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CuiBadgeModule } from '../../../components';\nimport { CuiSvgModule } from '../../../components';\nimport { TranslocoModule } from '@jsverse/transloco';\n\n@Component({\n selector: 'cui-inserted',\n imports: [CuiBadgeModule, CuiSvgModule, TranslocoModule],\n templateUrl: './inserted.component.html',\n styleUrl: './inserted.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InsertedComponent {}\n","<ng-container *transloco=\"let t\">\n <cui-badge color=\"violet\">\n <cui-svg\n class=\"icon\"\n icon=\"cuiIconVariant\"\n color=\"var(--cui-violet-400)\"\n />\n {{ t('INSERTED') }}\n </cui-badge>\n</ng-container>\n","import { Component, computed, inject, input } from '@angular/core';\nimport { CUI_DIALOG_CONTEXT, CuiDialogModule } from '../../../components/dialog';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { CuiButtonModule } from '../../../components/button';\nimport { CuiRenderDynamicComponentsService } from '../../../components/render-dynamic-components';\nimport { InsertedComponent } from '../inserted';\n\n@Component({\n selector: 'cui-modal-header',\n standalone: true,\n imports: [TranslocoDirective, CuiDialogModule, CuiButtonModule, InsertedComponent],\n templateUrl: './modal-header.component.html',\n styleUrl: './modal-header.component.scss'\n})\nexport class ModalHeaderComponent {\n private readonly context = inject(CUI_DIALOG_CONTEXT);\n private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\n\n protected readonly areDynamicComponentsMoreThanTwo = computed(\n () => this.renderDynamicComponentsService.dynamicComponents().length > 1\n );\n\n public readonly heading = input.required<string>();\n public readonly isInserted = input(false);\n\n protected onClosed(): void {\n this.context.completeWith({ canceled: true });\n }\n\n protected onGoBack(): void {\n this.renderDynamicComponentsService.closeLast();\n }\n}\n","<header\n *transloco=\"let t\"\n cuiDialogHeader\n [heading]=\"headingTemplate\"\n class=\"header\"\n (closed)=\"onClosed()\"\n>\n <ng-template #headingTemplate>\n <div\n [title]=\"heading()\"\n class=\"heading\"\n >\n @if (areDynamicComponentsMoreThanTwo()) {\n <button\n type=\"button\"\n cuiButton\n appearance=\"ghost\"\n icon=\"cuiIconChevronLeftSm\"\n (click)=\"onGoBack()\"\n ></button>\n }\n <ng-content select=\"[cuiModalHeaderIcon]\" />\n <div class=\"heading__container\">\n <span class=\"heading__text\">{{ heading() }}</span>\n <ng-content select=\"[cuiModalHeaderCrums]\" />\n </div>\n @if (isInserted()) {\n <cui-inserted />\n }\n </div>\n </ng-template>\n <div class=\"header__content\">\n <ng-content select=\"[cuiModalHeaderButtons]\" />\n </div>\n</header>\n","import { Component, input } from '@angular/core';\nimport { CuiContextMenuItem } from '../../interfaces';\nimport { CuiContextMenuModule } from '../context-menu';\nimport { CuiButtonModule } from '../button';\nimport { CuiElementDirective } from '@cuby-ui/cdk';\n\n@Component({\n selector: 'cui-options-button',\n standalone: true,\n imports: [CuiContextMenuModule, CuiButtonModule, CuiElementDirective],\n templateUrl: './options-button.component.html'\n})\nexport class OptionsButtonComponent {\n public readonly options = input.required<CuiContextMenuItem[]>();\n public readonly hoverBackgroundColor = input<string>();\n}\n","<button\n #actionButton=\"elementRef\"\n cuiButton\n type=\"button\"\n cuiElement\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconMoreVertical\"\n [style.--cui-base-50]=\"hoverBackgroundColor()\"\n></button>\n<cui-context-menu\n [items]=\"options()\"\n [target]=\"actionButton.nativeElement\"\n/>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'input[type=\"radio\"][cuiRadio]',\n template: '',\n styleUrls: ['./radio.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiRadioComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiRadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [CuiRadioComponent],\n exports: [CuiRadioComponent]\n})\nexport class CuiRadioModule {}\n","import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ElementRef,\n ViewChild,\n HostBinding,\n ViewContainerRef,\n HostListener\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\nimport { CuiDestroyService } from '@cuby-ui/cdk';\nimport { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { takeUntil } from 'rxjs';\n\nimport type { CuiOption } from '../../interfaces';\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\nimport { CUI_ROOT_SELECTOR } from '../root';\n\n@Component({\n selector: 'cui-select[options]',\n templateUrl: './select.template.html',\n styleUrls: ['./select.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\n cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),\n CuiDestroyService\n ],\n hostDirectives: [CuiClickOutsideDirective]\n})\nexport class CuiSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\n private readonly element = inject(ElementRef).nativeElement;\n private readonly document = inject(DOCUMENT);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n\n protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;\n\n protected isOpened = false;\n protected isOptionsListAbove = false;\n protected value!: CuiNullable<unknown>;\n protected onChange!: CuiOnChange<unknown>;\n protected onTouched!: CuiOnTouched;\n protected isDisabled!: boolean;\n protected selectedOption?: CuiOption;\n\n @Input()\n public options!: CuiOption[];\n\n @Input()\n public defaultOptionText?: string;\n\n @ViewChild('button')\n protected readonly button!: ElementRef<HTMLButtonElement>;\n\n @ViewChild('getOptionsListHeightContainer')\n protected readonly getOptionsListHeightContainer!: ElementRef<HTMLUListElement>;\n\n @ViewChild('backdrop')\n protected readonly backdrop!: TemplateRef<unknown>;\n\n @ViewChild('optionsWrapper')\n protected readonly optionsWrapper!: TemplateRef<unknown>;\n\n @HostBinding('style.--c-gap')\n protected gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;\n\n protected get id(): string | undefined {\n return this.cuiTextFieldController.id;\n }\n\n protected get size(): CuiSizeSm | CuiSizeMd {\n return this.cuiTextFieldController.size;\n }\n\n protected get placeholder(): string | undefined {\n return this.cuiTextFieldController.placeholder;\n }\n\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n\n protected trackByFn(_: number, item: CuiOption): string {\n return item.label;\n }\n\n public writeValue(value: unknown): void {\n this.value = value;\n // TODO: Непонятно, зачем нужно в construction вторая часть выражения\n this.selectedOption = this.options.find((option) => option.value === value) ?? (value as CuiOption);\n\n this.changeDetectorRef.markForCheck();\n }\n\n public registerOnChange(fn: CuiOnChange<unknown>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n public ngOnInit(): void {\n this.initClickOutsideSubscription();\n }\n\n public ngOnDestroy(): void {\n this.clearViewContainerRef();\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n\n this.changeDetectorRef.markForCheck();\n }\n\n protected onSelect(event: Event, option: CuiOption): void {\n event.stopPropagation();\n\n if (option.isDisabled) {\n return;\n }\n\n this.value = option.value;\n this.selectedOption = option;\n\n this.onChange(this.value);\n this.onSwitch();\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n }\n\n protected onSwitch(): void {\n if (!this.options.length && !this.defaultOptionText) {\n return;\n }\n\n if (!this.isOpened) {\n this.open();\n\n return;\n }\n\n this.close();\n }\n\n protected onClose(): void {\n this.close();\n }\n\n @HostListener('window:resize')\n protected onWindowResize(): void {\n this.button.nativeElement.blur();\n this.close();\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isOpened) {\n this.onTouched();\n }\n\n this.close();\n });\n }\n\n private open(): void {\n this.isOpened = true;\n\n const rootElement = this.document.querySelector(CUI_ROOT_SELECTOR)!;\n const {\n top: elementRectTop,\n left: elementRectLeft,\n bottom: elementRectBottom\n } = this.element.getBoundingClientRect();\n const distanceToBottom =\n this.document.documentElement.clientHeight - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);\n const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);\n const node = embeddedViewRef.rootNodes[0];\n const nodeStyles = node.style;\n\n this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;\n\n embeddedViewRef.detectChanges();\n\n nodeStyles.width = this.element.offsetWidth + 'px';\n nodeStyles.left = window.scrollX + elementRectLeft + 'px';\n\n if (this.isOptionsListAbove) {\n nodeStyles.top =\n window.scrollY +\n elementRectTop -\n this.getOptionsListHeightContainer.nativeElement.offsetHeight -\n this.SPACE_BETWEEN_BUTTON_AND_OPTIONS +\n 'px';\n } else {\n nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';\n }\n\n rootElement.appendChild(this.viewContainerRef.createEmbeddedView(this.backdrop).rootNodes[0]);\n rootElement.appendChild(embeddedViewRef.rootNodes[0]);\n }\n\n private close(): void {\n this.isOpened = false;\n\n this.clearViewContainerRef();\n }\n\n private clearViewContainerRef(): void {\n this.viewContainerRef.clear();\n }\n}\n","<button\n #button\n type=\"button\"\n [attr.id]=\"id\"\n [attr.data-size]=\"size\"\n [disabled]=\"isDisabled\"\n class=\"c-button\"\n [class.c-button_active]=\"isOpened\"\n [class.c-button_with-error]=\"isError\"\n (click)=\"onSwitch()\"\n>\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\n {{ selectedOption.label }}\n </ng-container>\n <ng-template #placeholderTemplate>\n <span class=\"c-placeholder\">{{ placeholder }}</span>\n </ng-template>\n <cui-svg\n icon=\"cuiIconChevronDown\"\n color=\"var(--cui-base-500)\"\n />\n</button>\n<ng-template #backdrop>\n <div class=\"c-backdrop\"></div>\n</ng-template>\n<ng-template #optionsWrapper>\n <div\n cuiFocusTrap\n class=\"c-options__wrapper\"\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\n >\n <ng-container *ngTemplateOutlet=\"optionsList\" />\n </div>\n</ng-template>\n<div\n #getOptionsListHeightContainer\n class=\"c-get-options-list-height-container\"\n>\n <ng-container *ngTemplateOutlet=\"optionsList\" />\n</div>\n<ng-template #optionsList>\n <ul\n class=\"c-options\"\n [class.c-options_top]=\"isOptionsListAbove\"\n >\n <ng-container *ngIf=\"options.length; else empty\">\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n [class.c-option-button_selected]=\"selectedOption === option\"\n [disabled]=\"option.isDisabled\"\n (click)=\"onSelect($event, option)\"\n >\n <span>{{ option.label }}</span>\n <cui-svg\n *ngIf=\"selectedOption === option\"\n icon=\"cuiIconCheckSm\"\n color=\"var(--cui-info)\"\n class=\"c-option-button__icon\"\n />\n </button>\n </li>\n </ng-container>\n <ng-template #empty>\n <li *ngIf=\"defaultOptionText\">\n <button\n type=\"button\"\n class=\"c-option-button\"\n (click)=\"onClose()\"\n >\n {{ defaultOptionText }}\n </button>\n </li>\n </ng-template>\n </ul>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CuiSelectComponent } from './select.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\n\n@NgModule({\n imports: [CommonModule, CuiSvgModule, CuiFocusTrapDirective],\n declarations: [CuiSelectComponent],\n exports: [CuiSelectComponent, CuiTextFieldControllerModule]\n})\nexport class CuiSelectModule {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'cui-empty-state, [cuiEmptyState]',\n standalone: true,\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._with-title]': '!!this.title()'\n }\n})\nexport class CuiEmptyStateComponent {\n public readonly title = input<string>();\n public readonly subtitle = input<string>();\n}\n","@if (title(); as title) {\n <p class=\"title\">{{ title }}</p>\n}\n@if (subtitle(); as subtitle) {\n <p class=\"subtitle\">{{ subtitle }}</p>\n}\n<ng-content />\n","export const IS_SIDEBAR_OPENED_STORAGE_KEY = 'is-sidebar-opened';\n\nexport interface CuiSidebarLink {\n readonly text: string;\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\n\nimport { IS_SIDEBAR_OPENED_STORAGE_KEY } from './sidebar.options';\nimport { CuiRenderDynamicComponentsService } from '../render-dynamic-components';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiSidebarService extends CuiRenderDynamicComponentsService {\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\n\n private readonly isOpenedSignal = signal(this.localStorage.getItem(IS_SIDEBAR_OPENED_STORAGE_KEY) === 'true');\n private readonly isHiddenSignal = signal(false);\n private readonly widthSignal = signal<number>(0);\n\n public readonly isOpened = this.isOpenedSignal.asReadonly();\n public readonly isHidden = this.isHiddenSignal.asReadonly();\n public readonly width = this.widthSignal.asReadonly();\n\n public hide(): void {\n this.isHiddenSignal.set(true);\n }\n\n public show(): void {\n this.isHiddenSignal.set(false);\n }\n\n public switch(): void {\n this.isOpenedSignal.update((value) => !value);\n this.localStorage.setItem(IS_SIDEBAR_OPENED_STORAGE_KEY, this.isOpenedSignal().toString());\n }\n\n public setWidth(value: number): void {\n this.widthSignal.set(value);\n }\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\n\nimport { CuiSvgModule } from '../../svg';\nimport { CuiSidebarService } from '../sidebar.service';\n\n@Component({\n selector: 'header[cuiSidebarHeader]',\n imports: [CuiSvgModule, NgTemplateOutlet],\n standalone: true,\n templateUrl: 'sidebar-header.component.html',\n styleUrl: 'sidebar-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarHeaderComponent {\n private readonly document = inject(DOCUMENT);\n private readonly sidebarService = inject(CuiSidebarService);\n\n protected readonly isOpened = this.sidebarService.isOpened;\n protected readonly buttonIcon = computed<CuiIcon>(() =>\n this.isOpened() ? 'cuiIconChevronsLeft' : 'cuiIconChevronsRight'\n );\n\n public readonly headerSlot = input.required<TemplateRef<unknown>>();\n\n protected onSwitch(event: MouseEvent): void {\n event.stopPropagation();\n\n this.document.body.click();\n this.sidebarService.switch();\n }\n}\n","<ng-container\n [ngTemplateOutlet]=\"headerSlot()\"\n [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\"\n/>\n<button\n type=\"button\"\n class=\"button\"\n [class.button_opened]=\"isOpened()\"\n (click)=\"onSwitch($event)\"\n>\n <cui-svg\n [icon]=\"buttonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n</button>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { CuiDimensionsObserverDirective } from '@cuby-ui/cdk';\n\nimport { CuiSidebarService } from '../sidebar.service';\n\n@Component({\n selector: 'cui-sidebar-container',\n standalone: true,\n templateUrl: 'sidebar-container.component.html',\n styleUrl: 'sidebar-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CuiDimensionsObserverDirective,\n outputs: ['cuiResizeObserver']\n }\n ],\n host: {\n '(cuiResizeObserver)': 'onResize($event.width)',\n '[class._opened]': 'isOpened()'\n }\n})\nexport class CuiSidebarContainerComponent {\n private readonly sidebarService = inject(CuiSidebarService);\n\n protected readonly isOpened = this.sidebarService.isOpened;\n protected readonly isHidden = this.sidebarService.isHidden;\n\n protected onResize(width: number): void {\n this.sidebarService.setWidth(width);\n }\n}\n","@if (!isHidden()) {\n <ng-content />\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiSidebarLink } from '../sidebar.options';\n\n@Component({\n selector: 'cui-sidebar-navigation',\n imports: [NgTemplateOutlet],\n standalone: true,\n templateUrl: 'sidebar-navigation.component.html',\n styleUrl: 'sidebar-navigation.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarNavigationComponent {\n public readonly links = input.required<CuiSidebarLink[]>();\n public readonly slot = input.required<TemplateRef<unknown>>();\n}\n","<nav class=\"nav\">\n <ul class=\"list\">\n @for (link of links(); track link.text; let isLast = $last) {\n <ng-container\n [ngTemplateOutlet]=\"slot()\"\n [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\"\n />\n }\n </ul>\n</nav>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CuiIcon } from '@cuby-ui/icons';\n\nimport { CuiSvgModule } from '../../svg';\n\n@Component({\n selector: '[cuiSidebarNavigationItem]',\n imports: [CuiSvgModule],\n standalone: true,\n templateUrl: 'sidebar-navigation-item.component.html',\n styleUrl: 'sidebar-navigation-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._active]': 'active()'\n }\n})\nexport class CuiSidebarNavigationItemComponent {\n public readonly text = input.required<string>();\n public readonly icon = input<CuiIcon>();\n public readonly active = input<boolean>();\n public readonly isOpen = input<boolean>();\n}\n","@if (icon(); as icon) {\n <cui-svg\n [icon]=\"icon\"\n color=\"var(--cui-base-500)\"\n />\n}\n@if (isOpen()) {\n {{ text() }}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'cui-sidebar-navigation-container',\n imports: [NgTemplateOutlet],\n standalone: true,\n templateUrl: 'sidebar-navigation-container.component.html',\n styleUrl: 'sidebar-navigation-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiSidebarNavigationContainerComponent {\n public readonly slot = input.required<TemplateRef<unknown>>();\n public readonly title = input<string>();\n}\n","@if (title(); as title) {\n <h3 class=\"title\">{{ title }}</h3>\n}\n\n<ng-container [ngTemplateOutlet]=\"slot()\" />\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'cui-card-wrapper, [cuiCardWrapper]',\n standalone: true,\n templateUrl: 'card-wrapper.component.html',\n styleUrl: 'card-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._with-border]': 'withBorder()',\n '[class._selected]': 'isSelected()'\n }\n})\nexport class CuiCardWrapperComponent {\n public readonly withBorder = input(true);\n public readonly isSelected = input(false);\n}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'cui-layout',\n standalone: true,\n templateUrl: './layout.component.html',\n styleUrl: './layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.marginLeft.px]': 'sidebarWidth()'\n }\n})\nexport class CuiLayoutComponent {\n public readonly sidebarWidth = input.required<number>();\n}\n","<div class=\"content\">\n <ng-content />\n</div>\n","import { InjectionToken, Signal, type TemplateRef } from '@angular/core';\nimport { CuiNullable } from '@cuby-ui/cdk';\n\nexport const CUI_TABS_SERVICE_TOKEN = new InjectionToken<CuiAbstractTabsService>('CUI_TABS_SERVICE');\n\nexport abstract class CuiAbstractTabsService implements CuiTabsService {\n abstract readonly tabs: Signal<CuiTabOptions[]>;\n abstract readonly activeTab: Signal<CuiNullable<CuiTabOptions>>;\n\n abstract set(tab: CuiTabOptions): void;\n abstract addTab(tab: CuiTabOptions): void;\n abstract removeTab(tabId: string): void;\n}\n\nexport interface CuiTabsService {\n set(tab: CuiTabOptions): void;\n addTab(tab: CuiTabOptions): void;\n removeTab(tabId: string): void;\n}\n\nexport interface CuiTabOptions {\n readonly id: string;\n readonly button: TemplateRef<unknown>;\n readonly content: TemplateRef<unknown>;\n readonly data?: unknown;\n}\n","import type { TemplateRef } from '@angular/core';\nimport { Directive, effect, inject, input, untracked } from '@angular/core';\nimport { CuiIdService } from '@cuby-ui/cdk';\n\nimport { CUI_TABS_SERVICE_TOKEN } from '../tabs/tabs.options';\n\n@Directive({\n selector: 'cui-tab, [cuiTab]',\n standalone: true\n})\nexport class CuiTabDirective {\n private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\n private readonly tabId = inject(CuiIdService).generate();\n\n public readonly buttonSlot = input.required<TemplateRef<unknown>>();\n public readonly contentSlot = input.required<TemplateRef<unknown>>();\n public readonly data = input<unknown>();\n\n constructor() {\n this.initTabEffect();\n }\n\n private initTabEffect(): void {\n effect(\n (onCleanup) => {\n this.addTab(this.buttonSlot(), this.contentSlot());\n\n onCleanup(this.removeTab.bind(this));\n },\n { allowSignalWrites: true }\n );\n }\n\n private addTab(button: TemplateRef<unknown>, content: TemplateRef<unknown>): void {\n this.tabsService.addTab({ id: this.tabId, button, content, data: untracked(this.data) });\n }\n\n private removeTab(): void {\n this.tabsService.removeTab(this.tabId);\n }\n}\n","import { Component, ChangeDetectionStrategy, inject, TemplateRef, input, effect } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport { CUI_TABS_SERVICE_TOKEN, CuiTabOptions } from '../../tabs.options';\n\n@Component({\n selector: 'cui-abstract-tabs',\n imports: [NgTemplateOutlet],\n standalone: true,\n templateUrl: 'abstract-tabs.component.html',\n styleUrl: 'abstract-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiAbstractTabsComponent {\n private readonly tabsService = inject(CUI_TABS_SERVICE_TOKEN);\n\n protected readonly tabs = this.tabsService.tabs;\n protected readonly activeTab = this.tabsService.activeTab;\n\n public readonly headerSlot = input<TemplateRef<unknown>>();\n public readonly selectedIndex = input<number>(0);\n\n constructor() {\n this.initSelectedTabEffect();\n }\n\n protected onSelectTab(event: Event, tab: CuiTabOptions): void {\n if (event.defaultPrevented) {\n return;\n }\n\n this.tabsService.set(tab);\n }\n\n private initSelectedTabEffect() {\n effect(\n () => {\n const index = this.selectedIndex();\n const length = this.tabs().length;\n\n if (index === undefined || !length) {\n return;\n }\n\n if (index < 0 || index >= length) {\n throw new Error('Invalid tab index');\n }\n\n this.tabsService.set(this.tabs()[index]);\n },\n { allowSignalWrites: true }\n );\n }\n}\n","@if (headerSlot(); as header) {\n <ng-container\n [ngTemplateOutlet]=\"header\"\n [ngTemplateOutletContext]=\"{ $implicit: buttons }\"\n />\n} @else {\n <header class=\"header\">\n <ng-container [ngTemplateOutlet]=\"buttons\" />\n </header>\n}\n\n<ng-template #buttons>\n @for (tab of tabs(); track tab.id) {\n <button\n type=\"button\"\n class=\"button\"\n (click)=\"onSelectTab($event, tab)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"tab.button\"\n [ngTemplateOutletContext]=\"{ $implicit: tab.data, isActive: tab.id === activeTab()?.id }\"\n />\n </button>\n }\n</ng-template>\n\n@if (activeTab()?.content; as content) {\n <ng-container\n [ngTemplateOutlet]=\"content\"\n [ngTemplateOutletContext]=\"{ $implicit: activeTab()?.data }\"\n />\n}\n","import { computed, Injectable, signal, WritableSignal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport { CuiAbstractTabsService, CuiTabOptions } from '../tabs.options';\n\n@Injectable()\nexport class CuiTabsServiceImpl extends CuiAbstractTabsService {\n private readonly tabsSignal = signal<CuiTabOptions[]>([]);\n private readonly activeTabSignal = computed<WritableSignal<CuiNullable<CuiTabOptions>>>(() =>\n signal(this.tabsSignal()[0])\n );\n\n public readonly tabs = this.tabsSignal.asReadonly();\n public readonly activeTab = computed(() => this.activeTabSignal()());\n\n public set(tab: CuiTabOptions): void {\n this.activeTabSignal().set(tab);\n }\n\n public addTab(tab: CuiTabOptions): void {\n this.tabsSignal.update((prev) => [...prev, tab]);\n }\n\n public removeTab(tabId: string): void {\n this.tabsSignal.update((prev) => prev.filter((tab) => tab.id !== tabId));\n }\n}\n","import { Provider, Type } from '@angular/core';\nimport { CuiTabsServiceImpl } from './services';\nimport { CUI_TABS_SERVICE_TOKEN, CuiAbstractTabsService } from './tabs.options';\n\nexport function provideCuiTabs(Implementation: Type<CuiAbstractTabsService> = CuiTabsServiceImpl): Provider {\n return {\n provide: CUI_TABS_SERVICE_TOKEN,\n useClass: Implementation\n };\n}\n","import { ChangeDetectionStrategy, Component, input, TemplateRef } from '@angular/core';\n\nimport { CuiAbstractTabsComponent } from './components';\nimport { provideCuiTabs } from './tabs.provider';\n\n@Component({\n selector: 'cui-tabs',\n imports: [CuiAbstractTabsComponent],\n standalone: true,\n templateUrl: 'tabs.component.html',\n styleUrl: 'tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideCuiTabs()]\n})\nexport class CuiTabsComponent {\n public readonly headerSlot = input<TemplateRef<unknown>>();\n public readonly selectedIndex = input<number>(0);\n}\n","<cui-abstract-tabs\n [headerSlot]=\"headerSlot()\"\n [selectedIndex]=\"selectedIndex()\"\n/>\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { CuiAutoResizingDirective } from '@cuby-ui/cdk';\n\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\n\n@Component({\n selector: 'textarea[cuiTextarea]',\n template: '',\n styleUrls: ['./textarea.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER],\n hostDirectives: [CuiAutoResizingDirective]\n})\nexport class CuiTextareaComponent {\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\n\n @Input()\n @HostBinding('rows')\n public rows = 4;\n\n @Input()\n @HostBinding('class._no-borders-and-paddings')\n public noBordersAndPaddings = false;\n\n @HostBinding('class._with-error')\n protected get isError(): boolean {\n return this.cuiTextFieldController.isError;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CuiTextareaComponent } from './textarea.component';\n\n@NgModule({\n declarations: [CuiTextareaComponent],\n exports: [CuiTextareaComponent]\n})\nexport class CuiTextareaModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'input[type=\"checkbox\"][cuiToggle]',\n template: '',\n styleUrls: ['./toggle.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiToggleComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { CuiToggleComponent } from './toggle.component';\n\n@NgModule({\n declarations: [CuiToggleComponent],\n exports: [CuiToggleComponent]\n})\nexport class CuiToggleModule {}\n","export const EXTENSION_GROUP_COLOR = {\n model: 'var(--cui-light-green-500)',\n doc: 'var(--cui-light-blue-500)',\n image: 'var(--cui-yellow-400)',\n sheet: 'var(--cui-green-600)',\n presentations: 'var(--cui-green-600)',\n video: 'var(--cui-light-green-500)',\n audio: 'var(--cui-lavender-400)',\n archive: 'var(--cui-orange-600)',\n geo: 'var(--cui-magenta-400)'\n} as const;\n\nexport const EXTENSION_TO_GROUP: Record<string, keyof typeof EXTENSION_GROUP_COLOR> = {\n // 3D Model formats - var(--cui-light-green-500)\n dae: 'model',\n fbx: 'model',\n glb: 'model',\n gltf: 'model',\n mtl: 'model',\n obj: 'model',\n ply: 'model',\n step: 'model',\n stl: 'model',\n usd: 'model',\n usda: 'model',\n usdc: 'model',\n usdz: 'model',\n dxf: 'model',\n\n // Document formats - var(--cui-light-blue-500)\n azw: 'doc',\n doc: 'doc',\n docx: 'doc',\n epub: 'doc',\n mobi: 'doc',\n odt: 'doc',\n pdf: 'doc',\n ps: 'doc',\n rtf: 'doc',\n txt: 'doc',\n w: 'doc',\n\n // Spreadsheet formats - var(--cui-green-600)\n ods: 'sheet',\n x: 'sheet',\n xls: 'sheet',\n xlsx: 'sheet',\n\n // Presentation formats - var(--cui-green-600)\n odp: 'presentations',\n p: 'presentations',\n pt: 'presentations',\n ppt: 'presentations',\n pptx: 'presentations',\n sldx: 'presentations',\n\n // Video formats - var(--cui-light-green-500)\n '3g2': 'video',\n '3gp': 'video',\n avi: 'video',\n flv: 'video',\n m4v: 'video',\n mkv: 'video',\n mov: 'video',\n mp4: 'video',\n mpg: 'video',\n pr: 'video',\n rm: 'video',\n rmvb: 'video',\n vob: 'video',\n webm: 'video',\n wmv: 'video',\n\n // Audio formats - var(--cui-lavender-400)\n aac: 'audio',\n aif: 'audio',\n aiff: 'audio',\n alac: 'audio',\n amr: 'audio',\n au: 'audio',\n dsd: 'audio',\n flac: 'audio',\n m4a: 'audio',\n mp3: 'audio',\n ogg: 'audio',\n opus: 'audio',\n pcm: 'audio',\n wav: 'audio',\n wma: 'audio',\n\n // Archive formats - var(--cui-orange-600)\n '7z': 'archive',\n arj: 'archive',\n gz: 'archive',\n rar: 'archive',\n sfx: 'archive',\n tar: 'archive',\n zip: 'archive',\n\n // Geographic Data formats - var(--cui-magenta-400)\n geojson: 'geo',\n gpx: 'geo',\n kml: 'geo',\n kmz: 'geo',\n shp: 'geo',\n\n // Image formats - var(--cui-yellow-400)\n arw: 'image',\n bmp: 'image',\n cr2: 'image',\n dng: 'image',\n gif: 'image',\n ico: 'image',\n jpeg: 'image',\n jpg: 'image',\n nef: 'image',\n orf: 'image',\n pef: 'image',\n png: 'image',\n raf: 'image',\n raw: 'image',\n svg: 'image',\n tga: 'image',\n tif: 'image',\n tiff: 'image',\n webp: 'image',\n xcf: 'image'\n} as const;\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { CuiSvgModule } from '../svg';\nimport { EXTENSION_GROUP_COLOR, EXTENSION_TO_GROUP } from './file-icon.options';\n\n@Component({\n selector: 'cui-file-icon',\n imports: [CuiSvgModule],\n standalone: true,\n templateUrl: 'file-icon.component.html',\n styleUrl: 'file-icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiFileIconComponent {\n protected readonly extensionColor = computed(() => this.color() ?? this.getColorByExtension(this.extension()));\n\n public readonly extension = input.required<string>();\n public readonly color = input<string>();\n\n private getColorByExtension(extension: string): string {\n return EXTENSION_GROUP_COLOR[EXTENSION_TO_GROUP[extension]];\n }\n}\n","@if (extensionColor(); as color) {\n <cui-svg\n icon=\"cuiIconBoldFileDefaultSm\"\n [color]=\"color\"\n class=\"icon\"\n ></cui-svg>\n\n <span class=\"extension\">{{ extension() }}</span>\n}\n","import { Translation } from '@jsverse/transloco';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\n\r\nexport const COMBINED_TEXT_BLOCK_PART = 'combined-text-block-part';\r\nexport const COMBINED_TEXT_BLOCK = 'combined-text-block';\r\nexport const COMBINED_TEXT_BLOCK_NAME = 'paragraph';\r\nexport const COMBINED_TEXT_BLOCK_ADDED = 'combinedTextBlockAdded';\r\nexport const COMBINED_TEXT_BLOCK_UPDATED = 'combinedTextBlockUpdated';\r\nexport const COMBINED_TEXT_BLOCK_REMOVED = 'combinedTextBlockRemoved';\r\n\r\nexport const SPLIT_MAX_LENGTH = 1000;\r\nexport const SPLIT_LENGTH = 500;\r\n\r\nexport const EDITOR_SELECTOR = '[data-editor]';\r\nexport const DEFAULT_PLACEHOLDER = \"Type text or '/' for commands...\";\r\nexport const DEFAULT_READONLY_PLACEHOLDER = \"No 'Description' was provided\";\r\nexport const DEFAULT_CONFIG: CuiEditorConfig = {\r\n tools: {},\r\n readOnly: false,\r\n autofocus: false\r\n};\r\n\r\nexport const CuiEditorTranslations: Record<string, Promise<Translation>> = {\r\n en: import('../i18n/en.json')\r\n} as const;\r\n","import type { BlockToolData } from '@editorjs/editorjs';\r\nimport Header from '@editorjs/header';\r\n\r\nexport class CuiHeaderTool extends Header {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override validate(): boolean {\r\n return true;\r\n }\r\n\r\n public override render(): HTMLHeadingElement {\r\n return super.render();\r\n }\r\n\r\n public override save(block: HTMLHeadingElement): BlockToolData {\r\n return super.save(block);\r\n }\r\n}\r\n","import List from '@editorjs/list';\r\n\r\nexport class CuiListTool extends List {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLElement {\r\n return super.render() as HTMLElement;\r\n }\r\n}\r\n","import type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport type { CuiParent } from '../interfaces/parent';\r\n\r\nexport class CuiSelectionBase {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n private readonly SELECTED_TEXT_CLASS = '_selected';\r\n\r\n public TAG = 'B';\r\n public COMMAND = 'bold';\r\n\r\n protected readonly api!: API;\r\n protected button!: HTMLButtonElement;\r\n protected _state = false;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n this.addSelectionToDOM(range, startContainer, endContainer);\r\n }\r\n\r\n public unwrap(): void {\r\n document.execCommand(this.COMMAND);\r\n }\r\n\r\n public checkState(): boolean {\r\n this.state = document.queryCommandState(this.COMMAND);\r\n\r\n return this.state;\r\n }\r\n\r\n public surround(range: Range): void {\r\n if (this.state) {\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.wrap(range);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addSelectionToDOM(range: Range, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n this.addSelectionForOnlyChild(range);\r\n\r\n return;\r\n }\r\n\r\n this.addSelectionForChildren(startParent, endParent);\r\n }\r\n\r\n private addSelectionForOnlyChild(range: Range): void {\r\n const selectedText = range.extractContents();\r\n const selection = this.createElement();\r\n\r\n selection.appendChild(selectedText);\r\n range.insertNode(selection);\r\n }\r\n\r\n private addSelectionForChildren(startParent: Element, endParent: Element): void {\r\n const nodes = this.getSelectedNodesFromDOM(startParent, endParent);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.add(this.SELECTED_TEXT_CLASS));\r\n\r\n document.execCommand(this.COMMAND);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.remove(this.SELECTED_TEXT_CLASS));\r\n }\r\n\r\n private getSelectedNodesFromDOM(startParent: Element, endParent: Element): Element[] {\r\n const nodes = [startParent];\r\n let next = startParent.nextSibling;\r\n\r\n while (next && next !== endParent) {\r\n nodes.push(next as Element);\r\n\r\n next = next?.nextSibling || null;\r\n }\r\n\r\n nodes.push(endParent);\r\n\r\n return nodes;\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiBoldInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'bold';\r\n\r\n public static title = 'Bold';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n b: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--bold'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 10.0002V5.91683C7.5 5.8708 7.53731 5.8335 7.58333 5.8335H8.66667C9.58333 5.8335 11.6667 5.91683 11.6667 7.91683C11.6667 7.91683 11.6667 10.0002 9.16667 10.0002M7.5 10.0002V14.0002C7.5 14.0922 7.57462 14.1668 7.66667 14.1668H10.4167C11.6667 14.1668 12.5 13.3335 12.5 12.0835C12.5 9.754 9.16667 10.0002 9.16667 10.0002M7.5 10.0002H9.16667\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+B';\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiItalicInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'italic';\r\n\r\n public override readonly TAG = 'I';\r\n public static title = 'Italic';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n i: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--italic'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.118 8.3335C10.3532 10.6116 9.16797 14.1668 9.16797 14.1668\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n <path d=\"M11.8404 5.8335H11.832\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+I';\r\n }\r\n}\r\n","import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function urlValidator(): ValidatorFn {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n try {\n new URL(value);\n\n return null;\n } catch {\n return { url: true };\n }\n };\n}\n","export const BlockConversionToCombined = {\r\n paragraph: 'combinedTextBlock'\r\n};\r\n\r\nexport const enum EventActions {\r\n add = 'block-added',\r\n update = 'block-changed',\r\n remove = 'block-removed'\r\n}\r\n","export function generateId(): string {\r\n return '_' + Math.random().toString(36).substring(2, 9);\r\n}\r\n","import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type EditorJS from '@editorjs/editorjs';\r\nimport type { BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport type { Observable } from 'rxjs';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { CuiBlock, CuiJTextApiService } from '@cuby-ui/api';\r\n\r\nimport {\r\n COMBINED_TEXT_BLOCK_ADDED,\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n COMBINED_TEXT_BLOCK_REMOVED,\r\n COMBINED_TEXT_BLOCK_UPDATED\r\n} from '../constants';\r\nimport type {\r\n CuiCombinedBlockAddingEvent,\r\n CuiCombinedBlockToolData,\r\n CuiCombinedPartBlock,\r\n CuiEventActionData,\r\n CuiFullBlockData\r\n} from '../interfaces';\r\nimport { generateId } from '../utils/generate-id';\r\nimport { EventActions } from './editor-service.options';\r\n\r\n@Injectable()\r\nexport class CuiEditorService {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly jtextService = inject(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(\r\n updatedBlocks: CuiBlock[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<CuiBlock[]> {\r\n const updatedBlocksWithId = updatedBlocks.reduce((acc, block) => {\r\n const blockWithId = {\r\n ...block,\r\n id: blockIdsMap.get(block.id!)\r\n };\r\n\r\n if (blockWithId.id) {\r\n acc.push(blockWithId);\r\n }\r\n\r\n return acc;\r\n }, [] as CuiBlock[]);\r\n\r\n const updateBlocksArray = updatedBlocksWithId.map((block) => this.jtextService.updateBlock(block));\r\n const updateBlocks$ = updatedBlocksWithId.length ? forkJoin(updateBlocksArray) : of([]);\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n public collectRemovedBlocksRequest(\r\n editorId: string,\r\n removedBlocksIds: string[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<void> {\r\n const removedBlocks: string[] = removedBlocksIds.reduce((blockIds, blockId) => {\r\n const backendID = blockIdsMap.get(blockId) 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: CuiBlock[]) => void;\r\n addedCallback: (data: CuiCombinedBlockAddingEvent) => void;\r\n }\r\n ): void {\r\n editor.on(COMBINED_TEXT_BLOCK_ADDED, data.addedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_UPDATED, data.updatedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_REMOVED, data.removedCallback);\r\n }\r\n\r\n public setStartBlock(\r\n editorId: string,\r\n callback: (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => void\r\n ): void {\r\n const blockId = generateId();\r\n const emptyBlock: CuiCombinedPartBlock = {\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: '',\r\n parentId: blockId,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n const body = {\r\n position: 0,\r\n block: emptyBlock,\r\n jtextContainerId: editorId\r\n };\r\n\r\n this.jtextService\r\n .createBlock(body)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((id) => {\r\n emptyBlock.id = id;\r\n\r\n const block: CuiBlock<CuiCombinedBlockToolData> = {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: blockId,\r\n textBlocks: [emptyBlock]\r\n }\r\n };\r\n\r\n callback(block, id);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { Tool } from '../components/editor-tool-modal';\r\n\r\nimport { MarkerType } from './markers-service.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiMarkersService {\r\n protected roles: Tool[] = [];\r\n protected tools: Tool[] = [\r\n {\r\n id: '0',\r\n image: 'blob:https://www.figma.com/f985f4fc-abc6-4727-857e-80633836e2b2',\r\n title: 'Шуруповерт',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '1',\r\n image: 'blob:https://www.figma.com/92ad9b38-566c-4ff6-84ba-0b20b24fef39',\r\n title: 'Молоток',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '2',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '3',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '4',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '5',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '6',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '7',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '8',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n }\r\n ];\r\n\r\n public getMarkersByType(type: MarkerType): Tool[] {\r\n return type === MarkerType.role ? this.roles : this.tools;\r\n }\r\n\r\n public getMarkerObjectByType(type: MarkerType, id: string): Tool | undefined {\r\n const markersArray = this.getMarkersByType(type);\r\n\r\n return markersArray.find((marker) => marker.id === id);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\nimport type { Tool } from '../../../editor-tool-modal';\n\n@Component({\n selector: 'cc-select-option',\n standalone: true,\n imports: [NgIf],\n templateUrl: './select-option.component.html',\n styleUrls: ['./select-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectOptionComponent {\n @Input({ required: true })\n public tool!: Tool;\n}\n","<ng-container *ngIf=\"tool\">\n <img\n *ngIf=\"tool.image\"\n class=\"image\"\n [src]=\"tool.image\"\n alt=\"\"\n />\n <h3 class=\"title\">{{ tool.title }}</h3>\n</ng-container>\n","import { DOCUMENT, NgFor, NgIf } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n Input,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\nimport { CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';\n\nimport type { Tool } from '../editor-tool-modal/editor-tool-modal.options';\n\nimport { EDITOR_SELECTOR } from '../../constants';\nimport { MarkerType } from '../../services/markers-service.options';\nimport { CuiMarkersService } from '../../services/markers.service';\n\nimport { SelectOptionComponent } from './component/select-item/select-option.component';\n\n@Component({\n selector: 'cc-marker-select',\n imports: [\n CuiButtonModule,\n CuiContextMenuModule,\n CuiInputModule,\n CuiLabelModule,\n FormsModule,\n ReactiveFormsModule,\n SelectOptionComponent,\n NgIf,\n NgFor\n ],\n standalone: true,\n templateUrl: './marker-select.component.html',\n styleUrls: ['./marker-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiClickOutsideDirective],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MarkerSelectComponent),\n multi: true\n }\n ]\n})\nexport class MarkerSelectComponent implements OnInit, OnDestroy {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n private readonly element = inject(ElementRef).nativeElement;\n private readonly markersService = inject(CuiMarkersService);\n\n private SPACE_BETWEEN_TARGET_AND_LIST = 5;\n\n @Input()\n public target!: HTMLButtonElement;\n\n @Input()\n public set space(value: number) {\n this.SPACE_BETWEEN_TARGET_AND_LIST = value;\n }\n\n protected isVisible = signal(false);\n protected isHidden = signal(true);\n protected editor!: HTMLElement;\n protected value!: CuiNullable<Tool>;\n // TODO: set current type\n protected elements = this.markersService.getMarkersByType(MarkerType.tool);\n protected onChange!: CuiOnChange<unknown>;\n protected onTouched!: CuiOnTouched;\n protected readonly targetToggleEventListener = (): void => {\n this.isVisible.update((prev) => !prev);\n\n if (!this.isVisible()) {\n return;\n }\n\n this.calculateDropdownPosition();\n };\n\n @HostBinding('class._hidden')\n protected get hide(): boolean {\n return this.isHidden();\n }\n\n public writeValue(value: Tool): void {\n this.value = value;\n }\n\n public registerOnChange(fn: CuiOnChange<unknown>): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: CuiOnTouched): void {\n this.onTouched = fn;\n }\n\n protected onScroll(): void {\n this.isVisible.set(false);\n }\n\n public ngOnInit(): void {\n this.initTargetElementListener();\n this.initClickOutsideSubscription();\n this.initOnCloseWhenEditorScroll();\n }\n\n public ngOnDestroy(): void {\n this.destroyEventListeners();\n }\n\n protected onToolClick(tool: Tool): void {\n this.value = tool;\n\n this.onChange(this.value);\n this.onTouched();\n\n // this.isVisible.set(false);\n }\n\n private initTargetElementListener(): void {\n this.target.addEventListener('click', this.targetToggleEventListener);\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\n if (this.target.contains(target) || !this.isVisible()) {\n return;\n }\n\n this.isVisible.set(false);\n });\n }\n\n private initOnCloseWhenEditorScroll(): void {\n this.editor = this.element.closest(EDITOR_SELECTOR);\n\n this.editor?.addEventListener('scroll', this.onScroll.bind(this));\n }\n\n private destroyEventListeners(): void {\n this.editor?.removeEventListener('scroll', this.onScroll.bind(this));\n this.target?.addEventListener('click', this.targetToggleEventListener);\n }\n\n private calculateDropdownPosition(): void {\n this.isHidden.set(true);\n\n setTimeout(() => {\n const target = this.target;\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\n this.document.documentElement;\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);\n const distanceToRight = documentClientWidth - targetRectLeft;\n const isListRight = distanceToRight < this.element.offsetWidth;\n const isListAbove = distanceToBottom < this.element.offsetHeight;\n\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\n this.isHidden.set(false);\n });\n }\n\n private changePositionX(isListRight: boolean, width: number, left: number): void {\n if (isListRight) {\n this.element.style.right = 'auto';\n this.element.style.left = left;\n\n return;\n }\n\n this.element.style.right = left - this.element.offsetWidth + width;\n this.element.style.left = 'auto';\n }\n\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\n if (isListAbove) {\n this.element.style.top =\n bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n\n return;\n }\n\n this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n }\n}\n","<ng-container *ngIf=\"isVisible()\">\n <div\n #dropdown\n class=\"dropdown\"\n >\n <header class=\"header\">\n <cui-input-text\n class=\"header__input\"\n cuiTextFieldId=\"estimated\"\n cuiTextFieldPlaceholder=\"Search...\"\n />\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconFiltersLines\"\n ></button>\n </header>\n <div class=\"scrollable-content\">\n <cc-select-option\n *ngFor=\"let element of elements\"\n [class._selected]=\"element.id === value?.id\"\n (click)=\"onToolClick(element)\"\n [tool]=\"element\"\n />\n </div>\n </div>\n</ng-container>\n","export const MARKER_SELECT_SELECTOR = 'marker-select';\r\n","import { DOCUMENT, NgIf } from '@angular/common';\nimport type { OnDestroy, OnInit } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport {\n CuiButtonModule,\n CuiFormFieldModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiSvgModule\n} from '../../../components';\n\nimport { urlValidator } from '../../utils/url.validator';\n\nimport { EDITOR_SELECTOR } from '../../constants';\nimport { CuiMarkersService } from '../../services';\nimport type { Tool } from '../editor-tool-modal';\nimport { MarkerSelectComponent } from '../marker-select';\n\nimport type { MarkerData, MarkerDataControl } from './marker-modal.interfaces';\n\n@Component({\n standalone: true,\n imports: [\n CuiButtonModule,\n CuiElementDirective,\n CuiFormFieldModule,\n CuiHintModule,\n CuiInputModule,\n CuiLabelModule,\n CuiSvgModule,\n FormsModule,\n MarkerSelectComponent,\n ReactiveFormsModule,\n TranslocoDirective,\n NgIf\n ],\n templateUrl: './marker-modal.component.html',\n styleUrls: ['./marker-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiClickOutsideDirective]\n})\nexport class MarkerModalComponent implements OnInit, OnDestroy {\n private readonly element = inject(ElementRef).nativeElement;\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n private readonly cuiIdService = inject(CuiIdService);\n private readonly markersService = inject(CuiMarkersService);\n\n protected readonly TITLE_MAX_LENGTH = 100;\n\n protected readonly formTitle = signal('');\n protected readonly isTitleEmpty = computed(() => !this.formTitle().length);\n protected readonly isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);\n protected readonly isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());\n protected readonly titleId = this.cuiIdService.generate();\n protected readonly dataId = this.cuiIdService.generate();\n\n protected dynamicDataControl!: MarkerDataControl;\n protected spaceBetweenTargetAndList = 5;\n protected startTitle = '';\n\n @Input()\n public set title(value: string) {\n this.startTitle = value;\n this.formTitle.set(value);\n }\n\n @Input()\n public set url(value: string) {\n this.dynamicDataControl = new FormControl(value, {\n nonNullable: true,\n validators: [Validators.required, urlValidator()]\n });\n }\n\n @Input()\n public set tool(value: Tool) {\n const tool = this.markersService.getMarkerObjectByType(value.type!, value.id);\n this.dynamicDataControl = new FormControl(tool, {\n nonNullable: true,\n validators: [Validators.required]\n });\n }\n\n @Input()\n public isGlobal = false;\n\n @Input()\n public isTool = false;\n\n @Input()\n public target!: HTMLButtonElement;\n\n @Input()\n public set space(value: number) {\n this.spaceBetweenTargetAndList = value;\n }\n\n @Output()\n public saveClicked = new EventEmitter<MarkerData>();\n\n @Output()\n public cancelClicked = new EventEmitter();\n\n protected isVisible = signal(false);\n protected isHidden = signal(true);\n protected editor!: HTMLElement;\n protected currentTool?: Tool;\n protected readonly targetToggleEventListener = (): void => {\n this.isVisible.update((prev) => !prev);\n\n if (!this.isVisible()) {\n return;\n }\n\n this.calculateDropdownPosition();\n };\n\n protected get isFormInvalid(): boolean {\n return this.dynamicDataControl.invalid || this.isTitleInvalid();\n }\n\n protected get isDynamicDataErrorShown(): boolean {\n return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;\n }\n\n @HostBinding('class._hidden')\n protected get hide(): boolean {\n return this.isHidden();\n }\n\n @HostBinding('class._fixed')\n protected get fixed(): boolean {\n return this.isGlobal;\n }\n\n public ngOnInit(): void {\n this.initTargetElementListener();\n this.initClickOutsideSubscription();\n this.initOnCloseWhenEditorScroll();\n }\n\n public ngOnDestroy(): void {\n this.destroyEventListeners();\n }\n\n protected onTitleLabelClick(element: HTMLDivElement): void {\n const range = document.createRange();\n const selection = window.getSelection();\n\n range.selectNodeContents(element);\n range.collapse(false);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n\n protected onSave(): void {\n if (this.isFormInvalid) {\n return;\n }\n\n this.isVisible.set(false);\n this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });\n }\n\n protected onScroll(): void {\n this.isVisible.set(false);\n }\n\n protected onCancel(): void {\n this.isVisible.set(false);\n this.cancelClicked.emit();\n }\n\n protected onClearTitle(titleElement: HTMLElement): void {\n this.formTitle.set('');\n\n titleElement.textContent = '';\n titleElement.focus();\n }\n\n protected onTitleChange(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n\n return;\n }\n\n const target = event.target as HTMLInputElement;\n const value = target.textContent!;\n\n this.formTitle.set(value);\n }\n\n protected onTitlePaste(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n if (!this.document) {\n return;\n }\n\n const value = event.clipboardData?.getData('text/plain');\n const target = event.target as HTMLElement;\n\n this.document.execCommand('insertText', false, value);\n setTimeout(() => this.formTitle.set(target.textContent!));\n }\n\n private initTargetElementListener(): void {\n this.target.addEventListener('click', this.targetToggleEventListener);\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\n if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {\n return;\n }\n\n this.isVisible.set(false);\n });\n }\n\n private initOnCloseWhenEditorScroll(): void {\n this.editor = this.document.querySelector(EDITOR_SELECTOR) as HTMLElement;\n\n this.editor.addEventListener('scroll', this.onScroll.bind(this));\n }\n\n private destroyEventListeners(): void {\n this.editor.removeEventListener('scroll', this.onScroll.bind(this));\n this.target.addEventListener('click', this.targetToggleEventListener);\n }\n\n private calculateDropdownPosition(): void {\n this.isHidden.set(true);\n\n setTimeout(() => {\n const target = this.target;\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\n this.document.documentElement;\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);\n const distanceToRight = documentClientWidth - targetRectLeft;\n const isListRight = distanceToRight < this.element.offsetWidth;\n const isListAbove = distanceToBottom < this.element.offsetHeight;\n\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\n\n this.isHidden.set(false);\n });\n }\n\n private changePositionX(isListRight: boolean, width: number, left: number): void {\n if (this.isGlobal) {\n this.changeGlobalPositionX(isListRight, width, left);\n\n return;\n }\n\n if (isListRight) {\n this.element.style.right = '0';\n this.element.style.left = 'auto';\n\n return;\n }\n\n this.element.style.right = 'auto';\n this.element.style.left = '0';\n }\n\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\n if (this.isGlobal) {\n this.changeGlobalPositionY(isListAbove, height, bottom);\n\n return;\n }\n\n if (isListAbove) {\n this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';\n this.element.style.top = 'auto';\n\n return;\n }\n\n this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';\n this.element.style.bottom = 'auto';\n }\n\n private changeGlobalPositionX(isListRight: boolean, width: number, left: number): void {\n if (isListRight) {\n this.element.style.left = left - this.element.offsetWidth + width + 'px';\n\n return;\n }\n\n this.element.style.left = left + 'px';\n }\n\n private changeGlobalPositionY(isListAbove: boolean, height: number, bottom: number): void {\n if (isListAbove) {\n this.element.style.top =\n bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';\n\n return;\n }\n\n this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';\n }\n}\n","<ng-container *transloco=\"let t\">\n <ng-container *ngIf=\"isVisible()\">\n <form\n autocomplete=\"off\"\n class=\"wrapper\"\n >\n <cui-form-field>\n <!-- eslint-disable-next-line -->\n <label\n [for]=\"titleId\"\n cuiLabel\n [isRequired]=\"true\"\n (click)=\"onTitleLabelClick(titleElement)\"\n >\n {{ t('TITLE') }}\n </label>\n <!-- TODO: если найдется варик сделать через форму -->\n <div\n class=\"title\"\n [class.title_invalid]=\"isTitleInvalid()\"\n >\n <div\n #titleElement\n class=\"title__text\"\n contenteditable\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\n (paste)=\"onTitlePaste($event)\"\n (keyup)=\"onTitleChange($event)\"\n [innerHTML]=\"startTitle\"\n ></div>\n <button\n type=\"button\"\n class=\"title__clear\"\n (click)=\"onClearTitle(titleElement)\"\n >\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"title__icon\"\n />\n </button>\n </div>\n\n <cui-hint\n *ngIf=\"isTitleInvalid()\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"isTitleEmpty()\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: TITLE_MAX_LENGTH }) }}\n </ng-container>\n </cui-hint>\n </cui-form-field>\n <cui-form-field>\n <label\n [for]=\"dataId\"\n cuiLabel\n [isRequired]=\"true\"\n >\n {{ isTool ? t('TOOL') : t('URL') }}\n </label>\n <ng-container *ngIf=\"dynamicDataControl\">\n <ng-container *ngIf=\"isTool; else input\">\n <div>\n <button\n #target=\"elementRef\"\n class=\"button tool-button\"\n cuiButton\n type=\"button\"\n cuiElement\n appearance=\"outlined-gray\"\n size=\"sm\"\n >\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\n </button>\n </div>\n <cc-marker-select\n [formControl]=\"dynamicDataControl\"\n [target]=\"target.nativeElement\"\n />\n </ng-container>\n <ng-template #input>\n <cui-input-text\n [cuiTextFieldId]=\"dataId\"\n [formControl]=\"dynamicDataControl\"\n autocomplete=\"off\"\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\n />\n <cui-hint\n *ngIf=\"isDynamicDataErrorShown\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\n {{ t('INVALID_URL') }}\n </ng-container>\n </cui-hint>\n </ng-template>\n </ng-container>\n </cui-form-field>\n <div class=\"buttons\">\n <button\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n size=\"sm\"\n (click)=\"onCancel()\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n cuiButton\n type=\"submit\"\n appearance=\"action\"\n size=\"sm\"\n [disabled]=\"isFormInvalid\"\n (click)=\"onSave()\"\n >\n {{ t('SAVE') }}\n </button>\n </div>\n </form>\n </ng-container>\n</ng-container>\n","export const MARKER_MODAL_SELECTOR = 'cc-marker-modal';\r\n","import { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, MarkerModalComponent } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal';\r\n\r\nexport function createLinkModal(tooltip: HTMLElement, link: HTMLLinkElement): CuiAngularElement<MarkerModalComponent> {\r\n const linkModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n linkModal.url = link.href;\r\n linkModal.title = link.innerText;\r\n linkModal.target = button;\r\n linkModal.space = 15;\r\n\r\n linkModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n\r\n if (typeof customEvent.detail.data === 'string') {\r\n link.setAttribute('href', customEvent.detail.data);\r\n }\r\n\r\n link.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n linkModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return linkModal;\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CUI_WINDOW, CuiClickOutsideDirective } from '@cuby-ui/cdk';\nimport { skip } from 'rxjs';\n\nimport { CuiButtonModule } from '../../../components';\nimport type { Tool } from './editor-tool-modal.options';\n\n@Component({\n standalone: true,\n imports: [CuiButtonModule],\n templateUrl: './editor-tool-modal.component.html',\n styleUrls: ['./editor-tool-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CuiClickOutsideDirective]\n})\nexport class EditorToolModalComponent {\n private readonly element = inject(ElementRef).nativeElement;\n private readonly window = inject(CUI_WINDOW);\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\n\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 10;\n\n public isFullscreen = signal(false);\n public isHidden = signal(true);\n\n @Input({ required: true })\n public tool!: Tool;\n\n @Input()\n public set marker(value: HTMLElement) {\n this.calculateModalPosition(value);\n }\n\n @Output()\n public closed = new EventEmitter<void>();\n\n @HostBinding('class._hidden')\n protected get _isHidden(): boolean {\n return this.isHidden();\n }\n\n @HostBinding('class._fullscreen')\n protected get _isFullscreen(): boolean {\n return this.isFullscreen();\n }\n\n constructor() {\n this.initClickOutsideSubscription();\n }\n\n protected onCloseModal(): void {\n this.closed.emit();\n }\n\n protected onMaximizeModal(): void {\n this.isFullscreen.update((prev) => !prev);\n }\n\n private initClickOutsideSubscription(): void {\n this.cuiClickOutsideDirective.cuiClickOutside\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe(() => this.onCloseModal());\n }\n\n private calculateModalPosition(marker: HTMLElement): void {\n const { bottom, left } = marker.getBoundingClientRect();\n\n setTimeout(() => {\n const modalWidth = this.element.offsetWidth;\n\n this.element.style.top = bottom + this.window.scrollY + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\n this.element.style.left = left + this.window.scrollX + marker.offsetWidth / 2 - modalWidth / 2 + 'px';\n\n this.isHidden.set(false);\n });\n }\n}\n","<div class=\"triangle\"></div>\n<div class=\"wrapper\">\n <header class=\"header\">\n <h3 class=\"title\">{{ tool.title }}</h3>\n <div class=\"header__buttons\">\n <!-- TODO: replace icon with 'maximize' -->\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconArrowSortSm\"\n (click)=\"onMaximizeModal()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconX\"\n (click)=\"onCloseModal()\"\n ></button>\n </div>\n </header>\n <div class=\"content\">\n <div class=\"info\">\n <!-- TODO: будет картинка-->\n <p class=\"info__item\">\n <span class=\"info__field\">Тип:</span>\n <span class=\"info__title\">{{ tool.title }}</span>\n </p>\n <p class=\"info__item\">\n <span class=\"info__field\">Страна производитель:</span>\n <span class=\"info__title\">{{ tool.title }}</span>\n </p>\n </div>\n </div>\n</div>\n","import type { MarkerType } from '../../services/markers-service.options';\n\nexport interface Tool {\n id: string;\n image?: string;\n title?: string;\n type?: MarkerType;\n}\n\nexport const EDITOR_TOOL_MODAL_SELECTOR = 'cc-editor-tool-modal';\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgFor } from '@angular/common';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { EditorTooltipButton, EditorTooltipOption, EditorTooltipOptions } from './editor-tooltip.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule, NgFor],\r\n templateUrl: './editor-tooltip.component.html',\r\n styleUrls: ['./editor-tooltip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorTooltipComponent {\r\n // TODO: Удалить класс\r\n protected readonly BUTTONS_OPTIONS = new Map<EditorTooltipOption, EditorTooltipButton>([\r\n ['copy', { icon: 'cuiIconCopy', handler: (event): void => this.copyClicked.emit(event) }],\r\n ['edit', { icon: 'cuiIconEdit', handler: (event): void => this.editClicked.emit(event), class: 'edit' }],\r\n ['delete', { icon: 'cuiIconTrash', handler: (event): void => this.deleteClicked.emit(event) }]\r\n ]);\r\n\r\n protected _options: EditorTooltipOptions = ['edit', 'delete'];\r\n protected buttons = this.getButtonsFromOptions(this._options);\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n @Input()\r\n public set options(value: EditorTooltipOptions) {\r\n this._options = value;\r\n this.buttons = this.getButtonsFromOptions(value);\r\n }\r\n\r\n @Output()\r\n public readonly copyClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly editClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly deleteClicked = new EventEmitter<MouseEvent>();\r\n\r\n private getButtonsFromOptions(options: EditorTooltipOptions): EditorTooltipButton[] {\r\n return options.map((option) => this.BUTTONS_OPTIONS.get(option)!);\r\n }\r\n}\r\n","<h3 class=\"title\">{{ title }}</h3>\r\n<div class=\"buttons-container\">\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <div class=\"divider\"></div>\r\n <!-- TODO: class должен быть удалён в будущем-->\r\n <button\r\n class=\"button\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"button.icon\"\r\n [class]=\"button.class\"\r\n (click)=\"button.handler($event)\"\r\n ></button>\r\n </ng-container>\r\n</div>\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type EditorTooltipOption = 'copy' | 'edit' | 'delete';\r\n\r\nexport type EditorTooltipOptions = EditorTooltipOption[];\r\n\r\n// TODO: class должен быть удалён в будущем\r\nexport interface EditorTooltipButton {\r\n readonly icon: CuiIcon;\r\n readonly handler: (event: MouseEvent) => void;\r\n readonly class?: string;\r\n}\r\n\r\nexport const EDITOR_TOOLTIP_SELECTOR = 'cc-editor-tooltip';\r\n","import type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n standalone: true\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\r\n private readonly BYTES_IN_KILOBYTE = 1024;\r\n\r\n public transform(bytes: number): string {\r\n if (isNaN(bytes) || bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n\r\n const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\r\n\r\n return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport type { API } from '@editorjs/editorjs';\r\n\r\n@Component({\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorToolComponent {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly document = inject(DOCUMENT);\r\n\r\n @Input({ required: true })\r\n public api!: API;\r\n\r\n @Input({ required: true })\r\n public preview!: string;\r\n\r\n @Input({ required: true })\r\n public caption!: string;\r\n\r\n @Input({ required: true })\r\n public buttonContent!: string;\r\n\r\n @Input()\r\n public readOnly = false;\r\n\r\n @Input()\r\n public isLoading = false;\r\n\r\n @Output()\r\n public fileSelected = new EventEmitter<void>();\r\n\r\n @Output()\r\n public captionChanged = new EventEmitter<string>();\r\n\r\n private previousValue = this.caption;\r\n\r\n protected get isCaptionShown(): boolean {\r\n return !this.readOnly || !!this.caption;\r\n }\r\n\r\n protected onSelectFile(): void {\r\n this.fileSelected.emit();\r\n }\r\n\r\n protected onTitleChange(event: KeyboardEvent): void {\r\n const target = event.currentTarget as HTMLElement;\r\n\r\n if (target.innerHTML === '<br>') {\r\n target.innerHTML = '';\r\n }\r\n\r\n const value = target.innerHTML!;\r\n\r\n if (this.previousValue === value) {\r\n return;\r\n }\r\n\r\n this.previousValue = value;\r\n this.captionChanged.emit(value);\r\n }\r\n\r\n protected onTitlePaste(event: ClipboardEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n if (!this.document) {\r\n return;\r\n }\r\n\r\n const value = event.clipboardData?.getData('text/plain');\r\n const target = event.target as HTMLElement;\r\n\r\n this.document.execCommand('insertText', false, value);\r\n setTimeout(() => this.captionChanged.emit(target.textContent!));\r\n }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiFileIconComponent, CuiSvgModule } from '../../../components';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FileSizePipe, FormsModule, NgIf, TranslocoDirective, CuiFileIconComponent, CuiSvgModule],\r\n templateUrl: './editor-attaches-tool.component.html',\r\n styleUrls: ['./editor-attaches-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorAttachesToolComponent extends EditorToolComponent {\r\n private _file!: CuiFileData;\r\n private _title!: string;\r\n\r\n @Input({ required: true })\r\n public get file(): CuiFileData | undefined {\r\n return this._file;\r\n }\r\n\r\n public set file(value: CuiFileData) {\r\n this._file = value;\r\n }\r\n\r\n @Input({ required: true })\r\n public get title(): string {\r\n return this._title;\r\n }\r\n\r\n public set title(value: string) {\r\n this._title = value;\r\n }\r\n\r\n @Output()\r\n public readonly fileClicked = new EventEmitter<CuiFileData>();\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.file && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onFileClick(): void {\r\n this.fileClicked.emit(this.file);\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return event.key !== 'Enter';\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div\r\n *ngIf=\"file; else buttonTemplate\"\r\n class=\"file\"\r\n >\r\n <cui-file-icon\r\n *ngIf=\"file.extension\"\r\n [extension]=\"file.extension\"\r\n ></cui-file-icon>\r\n\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div\r\n *ngIf=\"file.size; let size\"\r\n class=\"size\"\r\n >\r\n {{ size | fileSize }}\r\n </div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n (click)=\"onFileClick()\"\r\n >\r\n <cui-svg\r\n icon=\"cuiIconChevronRightSm\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_ATTACHES_TOOL_SELECTOR = 'cc-editor-attaches-tool';\r\n\r\nexport interface CuiAttachesToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n readonly fileClicked: (file: CuiFileData) => void;\r\n}\r\n\r\nexport interface CuiAttachesToolOptions {\r\n readonly api: API;\r\n readonly config: CuiAttachesToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiAttachesToolData {\r\n title: string;\r\n file: CuiFileData;\r\n}\r\n","import { NgClass, NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\nimport type { CuiImageTunes } from './editor-image-tool.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgClass, NgIf, TranslocoDirective],\r\n templateUrl: './editor-image-tool.component.html',\r\n styleUrls: ['./editor-image-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorImageToolComponent extends EditorToolComponent {\r\n protected readonly isLoaded = signal(false);\r\n protected readonly tunesSignal = signal<CuiImageTunes>({});\r\n\r\n @Input({ required: true })\r\n public image!: string;\r\n\r\n @Input()\r\n public set tunes(tunes: CuiImageTunes) {\r\n this.tunesSignal.set(tunes);\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.image && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"image; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [ngClass]=\"tunesSignal()\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <img\r\n class=\"image\"\r\n [src]=\"image\"\r\n alt=\"Image\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #buttonTemplate>\r\n <button\r\n #button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n />\r\n <path\r\n d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11.4805 7.77783H11.4879\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_IMAGE_TOOL_SELECTOR = 'cc-editor-image-tool';\r\n\r\nexport type CuiImageKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiImageToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiImageToolOptions {\r\n readonly api: API;\r\n readonly config: CuiImageToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiImageToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n tunes: CuiImageTunes;\r\n}\r\n\r\nexport interface CuiImageTunes {\r\n stretched?: boolean;\r\n left?: boolean;\r\n right?: boolean;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgIf } from '@angular/common';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgIf, TranslocoDirective],\r\n templateUrl: './editor-video-tool.component.html',\r\n styleUrls: ['./editor-video-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorVideoToolComponent extends EditorToolComponent {\r\n protected isLoaded = signal(false);\r\n\r\n @Input({ required: true })\r\n public video!: string;\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.video && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPlay(): void {\r\n this.isLoaded.set(true);\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *ngIf=\"video; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <video\r\n *ngIf=\"isLoaded(); else playButtonTemplate\"\r\n class=\"video\"\r\n [src]=\"video\"\r\n controls\r\n autoplay\r\n muted\r\n playsinline\r\n ></video>\r\n\r\n <ng-template #playButtonTemplate>\r\n <button\r\n type=\"button\"\r\n class=\"play\"\r\n (click)=\"onPlay()\"\r\n >\r\n <cui-svg\r\n class=\"play\"\r\n icon=\"cuiIconPlayCircleSm\"\r\n [height]=\"72\"\r\n [width]=\"72\"\r\n [strokeWidth]=\"0.5\"\r\n />\r\n </button>\r\n </ng-template>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n\r\n <ng-template #buttonTemplate>\r\n <button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <cui-svg icon=\"cuiIconPlayCircle\" />\r\n {{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_VIDEO_TOOL_SELECTOR = 'cc-editor-video-tool';\r\n\r\nexport type VideoKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiVideoToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiVideoToolPlayer {\r\n readonly pip: boolean;\r\n readonly controls: boolean;\r\n readonly light: boolean;\r\n readonly playing: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolOptions {\r\n readonly api: API;\r\n readonly config: CuiVideoToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n}\r\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, Tool, MarkerSelectComponent, MarkerModalComponent } from '../components';\r\nimport { MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function createSelect(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerSelectComponent> {\r\n const select = document.createElement(MARKER_SELECT_SELECTOR) as CuiAngularElement<MarkerSelectComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n select.space = 8;\r\n select.target = button;\r\n select.addEventListener('toolClick', (event) => onToolClick(marker, tooltip, event));\r\n\r\n return select;\r\n}\r\n\r\nexport function createToolModal(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerModalComponent> {\r\n const toolModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n const toolId = marker.dataset['id']!;\r\n const toolType = marker.dataset['type'] as MarkerType;\r\n\r\n toolModal.title = marker.innerText;\r\n toolModal.target = button;\r\n toolModal.isTool = true;\r\n toolModal.tool = {\r\n id: toolId,\r\n type: toolType\r\n };\r\n toolModal.space = 8;\r\n\r\n toolModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail.data;\r\n\r\n if (data && typeof data !== 'string') {\r\n marker.setAttribute('data-id', data.id);\r\n marker.setAttribute('data-type', data.type!);\r\n }\r\n\r\n marker.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n toolModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return toolModal;\r\n}\r\n\r\nfunction onToolClick(marker: HTMLElement, tooltip: HTMLElement, event: Event): void {\r\n event.stopPropagation();\r\n\r\n const customEvent = event as CustomEvent<Tool>;\r\n const tool = customEvent.detail;\r\n\r\n marker.dataset['id'] = tool.id;\r\n\r\n tooltip.remove();\r\n}\r\n","import { CuiFileData } from '../interfaces';\n\nexport async function openFileInBrowser(file: CuiFileData): Promise<void> {\n if (!file?.url) {\n return;\n }\n\n const encodedUrl = encodeURIComponent(file.url);\n const googleViewerUrl = `https://docs.google.com/viewer?url=${encodedUrl}&embedded=true`;\n\n window.open(googleViewerUrl, '_blank');\n}\n","import type { CuiFileResponseData } 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 { AngularOutsideLoaderService } from '../../services';\nimport { CuiFileUploaderStatus } from './file-uploader';\n\nexport function setLoading(status: CuiFileUploaderStatus): void {\n const service = AngularOutsideLoaderService.getInstance();\n const loadingActions: Record<CuiFileUploaderStatus, () => void> = {\n [CuiFileUploaderStatus.Loading]: () => service.setLoading(),\n [CuiFileUploaderStatus.Completed]: () => {\n service.setCompleted();\n service.handleCompletedRequest();\n }\n };\n\n return loadingActions[status]();\n}\n","import type { CuiTools } from '../interfaces';\nimport { CuiAttachesTool, CuiHeaderTool, CuiImageTool, CuiListTool, CuiVideoTool } from '../tools';\nimport { openFileInBrowser } from './open-file-in-browser';\nimport { setLoading } from './set-loading';\n\nexport function createEditorTools(resourceUrl: string): CuiTools;\nexport function createEditorTools(config: Partial<CuiTools>, resourceUrl?: string): CuiTools;\nexport function createEditorTools(config: Partial<CuiTools> | string, resourceUrl?: string): CuiTools {\n const endpoint = typeof config === 'string' ? config : resourceUrl;\n const tools = typeof config !== 'string' ? config : {};\n\n return {\n header: {\n class: CuiHeaderTool,\n config: {\n levels: [2, 3, 4],\n defaultLevel: 2\n },\n ...(tools?.['header'] ?? {})\n },\n list: {\n class: CuiListTool,\n inlineToolbar: true,\n config: {\n defaultStyle: 'unordered'\n },\n ...(tools?.['list'] ?? {})\n },\n attaches: {\n class: CuiAttachesTool,\n config: {\n endpoint,\n field: 'resource',\n types: '.pdf,.doc,.docx',\n load: setLoading,\n fileClicked: openFileInBrowser\n },\n ...(tools?.['attaches'] ?? {})\n },\n video: {\n class: CuiVideoTool,\n config: {\n endpoint,\n field: 'resource',\n load: setLoading\n },\n ...(tools?.['video'] ?? {})\n },\n image: {\n class: CuiImageTool,\n config: {\n endpoint,\n field: 'resource',\n load: setLoading\n },\n ...(tools?.['image'] ?? {})\n },\n ...(tools ?? {})\n };\n}\n","export function removeElementTagWrapper(element: HTMLElement): void {\r\n const parent = element.parentElement;\r\n const innerElementNodes = element.childNodes;\r\n\r\n let node: Node;\r\n\r\n while (innerElementNodes.length) {\r\n node = innerElementNodes.item(0);\r\n\r\n parent?.insertBefore(node, element);\r\n }\r\n\r\n element.remove();\r\n}\r\n","export function copyTextToClipboard(text: string): void {\n if (window?.navigator.clipboard && window.isSecureContext) {\n window.navigator.clipboard.writeText(text);\n }\n\n copyTextToClipboardFallback(text);\n}\n\n// TODO: Remove when switch to https\nfunction copyTextToClipboardFallback(text: string): void {\n const textarea = document.createElement('textarea');\n\n textarea.value = text;\n document.body.appendChild(textarea);\n textarea.focus({ preventScroll: true });\n textarea.select();\n\n document.execCommand('copy');\n document.body.removeChild(textarea);\n}\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { EditorTooltipComponent, EditorTooltipOptions } from '../components';\r\nimport { EDITOR_TOOLTIP_SELECTOR } from '../components';\r\n\r\nimport { createLinkModal } from './create-link-modal';\r\nimport { createToolModal } from './create-tool-modal';\r\nimport { removeElementTagWrapper } from './remove-element-tag-wrapper';\r\nimport { copyTextToClipboard } from './copy-text-to-clipboard';\r\nexport const tooltipMap = {\r\n MARK: createMarkerTooltip,\r\n A: createLinkTooltip\r\n};\r\n\r\nexport function createMarkerTooltip(marker: HTMLElement): HTMLElement {\r\n const tooltip = createTooltip(marker, marker.innerText);\r\n\r\n setTimeout(() => {\r\n const select = createToolModal(marker, tooltip);\r\n\r\n tooltip.append(select);\r\n });\r\n\r\n return tooltip;\r\n}\r\n\r\nexport function createLinkTooltip(link: HTMLElement): HTMLElement {\r\n const linkElement = link as HTMLLinkElement;\r\n const options: EditorTooltipOptions = ['copy', 'edit', 'delete'];\r\n const linkUrl = linkElement.href;\r\n const tooltip = createTooltip(linkElement, linkUrl, options);\r\n\r\n tooltip.addEventListener('copyClicked', () => copyTextToClipboard(linkUrl));\r\n\r\n setTimeout(() => {\r\n const linkModal = createLinkModal(tooltip, linkElement);\r\n\r\n tooltip.append(linkModal);\r\n });\r\n\r\n return tooltip;\r\n}\r\n\r\nexport function createTooltip(element: HTMLElement, title: string, options?: EditorTooltipOptions): HTMLElement {\r\n const tooltip = document.createElement(EDITOR_TOOLTIP_SELECTOR) as CuiAngularElement<EditorTooltipComponent>;\r\n\r\n tooltip.title = title;\r\n\r\n if (options) {\r\n tooltip.options = options;\r\n }\r\n\r\n tooltip.addEventListener('deleteClicked', (event: Event) => {\r\n event.stopPropagation();\r\n\r\n removeElementTagWrapper(element);\r\n\r\n tooltip.remove();\r\n });\r\n\r\n return tooltip;\r\n}\r\n","import 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<\r\n CuiImageToolData,\r\n Partial<CuiImageToolConfig>\r\n >;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => {}),\r\n field: config?.field ?? 'image',\r\n types: config?.types ?? 'image/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select an Image'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders || {}\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n this.data.tunes = this.data.tunes || {};\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.imageTool.preview = url;\r\n this.imageTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n const actions = {\r\n tag: this.pasteByTag.bind(this),\r\n file: this.pasteByFile.bind(this)\r\n };\r\n const key = event.type as keyof typeof actions;\r\n\r\n this.imageTool.isLoading = true;\r\n actions[key](event);\r\n }\r\n\r\n private pasteByFile(event: CustomEvent): void {\r\n const file = event.detail.file;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n private pasteByTag(event: CustomEvent): void {\r\n const file = event.detail.data.src;\r\n\r\n this.selectedFile = file;\r\n this.uploader.uploadByUrl(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.imageTool = document.createElement(\r\n EDITOR_IMAGE_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorImageToolComponent>;\r\n\r\n this.imageTool.api = this.api;\r\n this.imageTool.image = this.data.file?.url || '';\r\n this.imageTool.caption = this.data.caption || '';\r\n this.imageTool.tunes = this.data.tunes;\r\n this.imageTool.readOnly = this.readOnly;\r\n this.imageTool.buttonContent = this.config.buttonContent;\r\n\r\n this.imageTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.imageTool;\r\n }\r\n\r\n public renderSettings(): TunesMenuConfig {\r\n return this.Tunes.map((tune) => ({\r\n icon: tune.icon,\r\n label: this.api.i18n.t(tune.title),\r\n name: tune.name,\r\n toggle: tune.toggle,\r\n isActive: this.data.tunes[tune.name as keyof CuiImageTunes],\r\n onActivate: (): void => this.tuneToggled(tune.name as keyof CuiImageTunes)\r\n }));\r\n }\r\n\r\n public save(): CuiImageToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.imageTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set image(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.imageTool.image = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: 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<\r\n CuiVideoToolData,\r\n CuiVideoToolConfig\r\n >;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => {}),\r\n field: config?.field ?? 'video',\r\n types: config?.types ?? 'video/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a Video'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {}\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.getCaptureFromVideo(url);\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n if (event.type !== 'file') {\r\n return;\r\n }\r\n\r\n const file = event.detail.file;\r\n\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.videoTool = document.createElement(\r\n EDITOR_VIDEO_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorVideoToolComponent>;\r\n\r\n this.videoTool.api = this.api;\r\n this.videoTool.video = this.data.file?.url || '';\r\n this.videoTool.caption = this.data.caption || '';\r\n this.videoTool.readOnly = this.readOnly;\r\n this.videoTool.buttonContent = this.config.buttonContent;\r\n\r\n this.videoTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.videoTool;\r\n }\r\n\r\n public save(): CuiVideoToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.videoTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set video(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.videoTool.video = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: 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 private readonly abortController = new AbortController();\r\n private readonly abortSignal = this.abortController.signal;\r\n\r\n private attachesTool!: CuiAngularElement<EditorAttachesToolComponent>;\r\n private selectedFile: CuiNullable<File> = null;\r\n\r\n public api: API;\r\n public config: CuiAttachesToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public data: CuiAttachesToolData;\r\n public uploader: CuiFileUploader;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n icon: CUI_ICONS.cuiIconPaperclipSm,\r\n title: 'File'\r\n };\r\n }\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<\r\n CuiAttachesToolData,\r\n CuiAttachesToolConfig\r\n >;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n field: config?.field ?? 'file',\r\n types: config?.types ?? '*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a File'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {},\r\n load: config?.load ?? (() => {}),\r\n fileClicked: config?.fileClicked ?? (() => {})\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public appendCallback(): void {\r\n this.selectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.attachesTool = document.createElement(\r\n EDITOR_ATTACHES_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorAttachesToolComponent>;\r\n\r\n this.attachesTool.api = this.api;\r\n this.attachesTool.file = this.data.file ?? '';\r\n this.attachesTool.title = this.data.title ?? '';\r\n this.attachesTool.readOnly = this.readOnly;\r\n this.attachesTool.buttonContent = this.config.buttonContent;\r\n\r\n this.attachesTool.addEventListener('fileSelected', this.selectFile, { signal: this.abortSignal });\r\n this.attachesTool.addEventListener('fileClicked', this.clickFile, { signal: this.abortSignal });\r\n this.attachesTool.addEventListener('captionChanged', this.changeCaption, { signal: this.abortSignal });\r\n\r\n return this.attachesTool;\r\n }\r\n\r\n public save(): CuiAttachesToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.abortController.abort();\r\n }\r\n\r\n public changeCaption = (event: Event): void => {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.title = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n };\r\n\r\n public selectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n this.attachesTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public clickFile = (): void => {\r\n this.config.fileClicked(this.data.file);\r\n };\r\n\r\n public set file(file: CuiFileData) {\r\n this.data.title = file.name!;\r\n this.data.file = {\r\n name: file.name,\r\n extension: file.name?.split('.').pop(),\r\n size: file.size,\r\n url: file.url\r\n };\r\n this.attachesTool.file = { ...this.data.file };\r\n this.attachesTool.title = file.name!;\r\n }\r\n\r\n private onUpload(response: 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 { MarkerData } from '../components/marker-modal/marker-modal.interfaces';\r\nimport type { MarkerModalComponent } from '../components/marker-modal/marker-modal.component';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\nimport { removeElementTagWrapper } from '../utils';\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiLinkMarker extends CuiMarkerTool {\r\n protected override readonly TAG = 'A';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n a: {\r\n href: true,\r\n class: true,\r\n target: true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg width=\"20\" height=\"15\" viewBox=\"-3 -3 24 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M18.2813 1.22405C17.9329 0.874451 17.5189 0.597062 17.0631 0.407792C16.6073 0.218522 16.1186 0.121094 15.625 0.121094C15.1315 0.121094 14.6428 0.218522 14.187 0.407792C13.7312 0.597062 13.3172 0.874451 12.9688 1.22405L13.8563 2.11155C14.089 1.87886 14.3652 1.69429 14.6692 1.56836C14.9733 1.44243 15.2991 1.37762 15.6282 1.37762C15.9572 1.37762 16.2831 1.44243 16.5871 1.56836C16.8911 1.69429 17.1674 1.87886 17.4 2.11155C17.6327 2.34424 17.8173 2.62047 17.9432 2.92449C18.0692 3.22851 18.134 3.55436 18.134 3.88343C18.134 4.21249 18.0692 4.53834 17.9432 4.84236C17.8173 5.14638 17.6327 5.42261 17.4 5.6553L12.4 10.6553C11.9309 11.1252 11.2944 11.3896 10.6304 11.3901C9.96638 11.3907 9.32935 11.1275 8.85942 10.6584C8.38949 10.1893 8.12515 9.55275 8.12457 8.88876C8.12398 8.22476 8.38719 7.58773 8.85629 7.1178L9.73754 6.2303L8.85629 5.3428L7.96879 6.2303C7.61919 6.57869 7.3418 6.99266 7.15253 7.44848C6.96326 7.9043 6.86583 8.393 6.86583 8.88655C6.86583 9.3801 6.96326 9.8688 7.15253 10.3246C7.3418 10.7804 7.61919 11.1944 7.96879 11.5428C8.67597 12.2409 9.63134 12.6298 10.625 12.624C11.1205 12.6261 11.6114 12.5299 12.0695 12.3411C12.5276 12.1523 12.9437 11.8746 13.2938 11.524L18.2938 6.52405C18.9944 5.81927 19.3866 4.86522 19.3842 3.87146C19.3819 2.87771 18.9852 1.92552 18.2813 1.22405Z\" fill=\"#595E6A\"/>\r\n <path d=\"M2.61879 12.5115C2.38541 12.2793 2.20022 12.0031 2.07386 11.6991C1.94749 11.395 1.88244 11.069 1.88244 10.7397C1.88244 10.4104 1.94749 10.0844 2.07386 9.78028C2.20022 9.47621 2.38541 9.2001 2.61879 8.9678L7.61879 3.9678C7.85109 3.73442 8.1272 3.54923 8.43127 3.42287C8.73534 3.2965 9.06138 3.23145 9.39067 3.23145C9.71995 3.23145 10.046 3.2965 10.3501 3.42287C10.6541 3.54923 10.9302 3.73442 11.1625 3.9678C11.3944 4.20193 11.577 4.48022 11.6994 4.78619C11.8218 5.09215 11.8815 5.41958 11.875 5.74905C11.8769 6.07955 11.8133 6.40715 11.6878 6.7129C11.5623 7.01865 11.3774 7.29647 11.1438 7.5303L9.81879 8.87405L10.7063 9.76155L12.0313 8.43655C12.7366 7.73124 13.1328 6.77463 13.1328 5.77718C13.1328 4.77972 12.7366 3.82311 12.0313 3.1178C11.326 2.41249 10.3694 2.01625 9.37192 2.01625C8.37446 2.01625 7.41785 2.41249 6.71254 3.1178L1.71254 8.1178C1.362 8.4663 1.08382 8.88066 0.893994 9.33706C0.704168 9.79346 0.606445 10.2829 0.606445 10.7772C0.606445 11.2715 0.704168 11.7609 0.893994 12.2173C1.08382 12.6737 1.362 13.088 1.71254 13.4365C2.42431 14.1293 3.38185 14.5115 4.37504 14.499C5.37698 14.5 6.33862 14.1046 7.05004 13.399L6.16254 12.5115C5.93025 12.7449 5.65413 12.9301 5.35006 13.0565C5.04599 13.1829 4.71995 13.2479 4.39067 13.2479C4.06138 13.2479 3.73534 13.1829 3.43127 13.0565C3.1272 12.9301 2.85109 12.7449 2.61879 12.5115Z\" fill=\"#595E6A\"/>\r\n </svg>\r\n `;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const linkModal = this.createLinkModal();\r\n\r\n this.dropdown.append(linkModal);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public wrapLink(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n const url = markerData.data?.toString();\r\n const link = this.createElement(url, markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.addMarkerToDOM(range, link, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(link);\r\n }\r\n\r\n public override unwrap(): void {\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n\r\n if (!mark) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(mark);\r\n }\r\n\r\n public override createElement(url = '', text = ''): HTMLLinkElement {\r\n const link = super.createElement(text) as HTMLLinkElement;\r\n\r\n link.href = url;\r\n link.contentEditable = 'false';\r\n link.target = '_blank';\r\n\r\n return link;\r\n }\r\n\r\n public checkState(): void {\r\n const link = this.api.selection.findParentTag(this.TAG);\r\n\r\n this.state = !!link;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.url = '';\r\n this.markerModal.target = this.button;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapLink(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent, MarkerData } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiCustomMarkerTool extends CuiMarkerTool {\r\n protected id!: string;\r\n protected type!: string;\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n mark: {\r\n class: true,\r\n 'data-id': true,\r\n 'data-type': true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public wrapTool(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n if (markerData.data && typeof markerData.data !== 'string') {\r\n this.id = markerData.data.id!;\r\n this.type = markerData.data.type!;\r\n }\r\n\r\n const mark = this.createElement(markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(mark);\r\n }\r\n\r\n private onToolButtonClick(event: MouseEvent): void {\r\n const range = window.getSelection()?.getRangeAt(0);\r\n\r\n if (range) {\r\n return;\r\n }\r\n\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.onclick = this.onToolButtonClick.bind(this);\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const markerSelect = this.createLinkModal();\r\n\r\n this.dropdown.append(markerSelect);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public override createElement(text = ''): HTMLElement {\r\n const element = super.createElement(text);\r\n\r\n element.contentEditable = 'false';\r\n element.classList.add(this.CLASS);\r\n element.setAttribute('data-id', this.id);\r\n element.setAttribute('data-type', this.type);\r\n\r\n return element;\r\n }\r\n\r\n public checkState(select: Selection): void {\r\n const range = select.getRangeAt(0);\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n const isCorrectTool = mark?.classList.contains(this.CLASS);\r\n\r\n if (!mark || !isCorrectTool) {\r\n this.state = false;\r\n\r\n return;\r\n }\r\n\r\n const startContainer = range.startContainer;\r\n const endContainer = range.endContainer;\r\n\r\n const isStartMarker = mark.contains(startContainer);\r\n const isEndMarker = mark.contains(endContainer);\r\n\r\n this.state = isStartMarker && isEndMarker && isStartMarker === isEndMarker;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.tool = { id: '', title: '', type: undefined };\r\n this.markerModal.target = this.button;\r\n this.markerModal.isTool = true;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapTool(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\n\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\n\nexport class CuiRoleMarker extends CuiCustomMarkerTool {\n protected override readonly CLASS = 'role-marker';\n\n constructor(data: InlineToolConstructorOptions) {\n super(data);\n }\n\n public override render(): HTMLButtonElement {\n super.render();\n\n /* eslint-disable */\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"-3 -3 24 24\" fill=\"none\">\n <path d=\"M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n /* eslint-enable */\n\n return this.button;\n }\n}\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\n\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\n\nexport class CuiToolMarker extends CuiCustomMarkerTool {\n protected override readonly CLASS = 'tool-marker';\n\n constructor(data: InlineToolConstructorOptions) {\n super(data);\n }\n\n public override render(): HTMLButtonElement {\n super.render();\n\n this.button.innerHTML =\n '<svg width=\"20\" height=\"20\" viewBox=\"-2 -3 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"technologies-tools\"><path id=\"Vector\" d=\"M16.3581 15.3966L16.3581 11.4729C16.3581 11.4158 16.3469 11.3592 16.325 11.3064C16.3031 11.2536 16.2711 11.2056 16.2307 11.1652C16.1903 11.1248 16.1423 11.0928 16.0895 11.0709C16.0368 11.0491 15.9802 11.0378 15.923 11.0378H13.2574L13.2593 11.0372C13.2007 11.0348 13.1422 11.0443 13.0874 11.0651C13.0326 11.0859 12.9825 11.1176 12.9402 11.1582C12.898 11.1989 12.8643 11.2476 12.8414 11.3016C12.8184 11.3556 12.8066 11.4136 12.8067 11.4723L12.8067 15.3972M14.584 11.0334V5.8334M16.3582 15.1022L16.3582 17.0647C16.3583 17.1234 16.3465 17.1814 16.3235 17.2354C16.3006 17.2893 16.2669 17.3381 16.2247 17.3787C16.1824 17.4194 16.1323 17.4511 16.0775 17.4719C16.0227 17.4927 15.9642 17.5022 15.9056 17.4998L15.9075 17.4992H13.2419C13.1847 17.4992 13.1282 17.4879 13.0754 17.466C13.0226 17.4442 12.9746 17.4121 12.9342 17.3717C12.8938 17.3313 12.8618 17.2834 12.8399 17.2306C12.818 17.1778 12.8068 17.1212 12.8068 17.0641L12.8068 15.1022M5.59636 9.88719L5.59636 15.9284C5.59627 16.0872 5.62748 16.2445 5.68821 16.3912C5.74895 16.5379 5.838 16.6713 5.9503 16.7836C6.06259 16.8959 6.19591 16.9849 6.34265 17.0456C6.48938 17.1064 6.64665 17.1376 6.80545 17.1375C7.12589 17.1375 7.43318 17.0101 7.65976 16.7836C7.88634 16.557 8.01365 16.2497 8.0137 15.9293L8.01284 9.88719C9.29329 9.32793 10.4298 8.05047 10.4298 6.56367C10.4302 5.07729 9.22194 3.54264 8.01284 3.241L8.01327 5.83907L6.8046 7.2887L5.59636 5.83864L5.59636 3.241C4.38769 3.54306 3.17902 5.07729 3.17902 6.5641C3.17944 8.05048 4.31591 9.32793 5.59636 9.88719ZM14.9916 5.56545L14.1253 5.56545L13.2589 4.69909L13.6921 2.5332L15.4248 2.5332L15.858 4.69909L14.9916 5.56545Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>';\n\n return this.button;\n }\n}\n","import type { CuiNullable } from '@cuby-ui/cdk';\nimport type { API, BlockTool, BlockToolConstructorOptions, ToolConfig } from '@editorjs/editorjs';\n\nimport {\n COMBINED_TEXT_BLOCK,\n COMBINED_TEXT_BLOCK_ADDED,\n COMBINED_TEXT_BLOCK_NAME,\n COMBINED_TEXT_BLOCK_PART,\n COMBINED_TEXT_BLOCK_REMOVED,\n COMBINED_TEXT_BLOCK_UPDATED,\n DEFAULT_PLACEHOLDER,\n DEFAULT_READONLY_PLACEHOLDER,\n SPLIT_MAX_LENGTH\n} from '../constants';\nimport type {\n CuiCombinedBlockToolData,\n CuiCombinedPartBlock,\n CuiMutationActions,\n CuiMutationCallback\n} from '../interfaces';\nimport { recalculateIndexes, splitHTML, generateId } from '../utils';\n\nexport class CuiCombinedTextBlockTool implements BlockTool {\n private readonly TAG = 'span';\n private readonly DEBOUNCE_TIME = 350;\n private readonly MAX_CHILD_COUNT_FOR_EMPTY = 1;\n private readonly PLACEHOLDER_ATTRIBUTE_NAME = 'placeholderActive';\n\n private mutationConfig = {\n subtree: true,\n childList: true,\n characterData: true\n };\n private api: API;\n private data: CuiCombinedBlockToolData;\n private placeholder: string;\n private wrapper?: HTMLElement;\n private observer?: MutationObserver;\n private lastBlockElement?: HTMLElement;\n private readOnly?: boolean;\n private changes = new Map();\n\n constructor(options: unknown) {\n const body = options as BlockToolConstructorOptions;\n const data = body.data;\n\n this.readOnly = body.readOnly;\n this.placeholder = this.getPlaceholder(body.config);\n this.api = body.api;\n this.data = {\n id: data.id || generateId(),\n textBlocks: data.textBlocks || []\n };\n\n this.convertDefaultDataToCustom(data);\n }\n\n public static get isInline(): boolean {\n return false;\n }\n\n public static get isReadOnlySupported(): boolean {\n return true;\n }\n\n public static get enableLineBreaks(): boolean {\n return false;\n }\n\n public static get toolbox(): { icon: string; title: string } {\n return {\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\" d=\"M8 9V7.2C8 7.08954 8.08954 7 8.2 7L12 7M16 9V7.2C16 7.08954 15.9105 7 15.8 7L12 7M12 7L12 17M12 17H10M12 17H14\"></path></svg>',\n title: 'Text'\n };\n }\n\n public static get pasteConfig(): object {\n return {\n tags: ['P']\n };\n }\n\n public onPaste(event: CustomEvent): void {\n if (event.type !== 'tag') {\n return;\n }\n\n const text = event.detail.data.textContent;\n\n this.data.textBlocks.splice(this.data.textBlocks.length - 1, 1, this.getBlockPartObject(generateId(), text));\n this.update(this.data.textBlocks);\n }\n\n public render(): HTMLElement {\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add(COMBINED_TEXT_BLOCK);\n this.wrapper.dataset[this.PLACEHOLDER_ATTRIBUTE_NAME] = this.api.i18n.t(this.placeholder);\n\n if (!this.readOnly) {\n this.wrapper.contentEditable = 'true';\n }\n\n if (!this.data.textBlocks.length) {\n this.data.textBlocks.push(this.getBlockPartObject(generateId(), ''));\n }\n\n this.update(this.data.textBlocks);\n this.checkIsEditorEmpty();\n\n if (!this.readOnly) {\n const callback = this.getMutationCallback(this.DEBOUNCE_TIME);\n\n this.observer = new MutationObserver(this.onMutationEvent.bind(this, callback));\n this.observer.observe(this.wrapper, this.mutationConfig);\n }\n\n return this.wrapper;\n }\n\n public merge(blocksData: CuiCombinedPartBlock[]): void {\n if (!this.wrapper) {\n return;\n }\n\n let blocksTextContent = '';\n this.data.textBlocks = [];\n\n blocksData.forEach((block) => {\n blocksTextContent += block.data.text;\n });\n\n for (let i = 0; i < this.wrapper.childNodes.length; i++) {\n const node = this.wrapper.childNodes.item(i);\n\n if (!(node instanceof HTMLSpanElement)) {\n return;\n }\n\n i--;\n blocksTextContent = node.innerHTML + blocksTextContent;\n node.remove();\n }\n\n const parts = blocksTextContent.length < SPLIT_MAX_LENGTH ? [blocksTextContent] : splitHTML(blocksTextContent);\n\n parts.forEach((part: string) => {\n const blockObject = this.getBlockPartObject(generateId(), part);\n\n this.data.textBlocks.push(blockObject);\n });\n\n this.update(this.data.textBlocks);\n }\n\n public save(blockContent: HTMLElement): CuiCombinedPartBlock[] {\n const textBlocks: CuiCombinedPartBlock[] = [];\n\n blockContent.querySelectorAll(this.TAG).forEach((span: HTMLElement) => {\n textBlocks.push(this.getBlockPartObject(span.dataset['id']!, span.innerHTML));\n });\n\n return textBlocks;\n }\n\n public removed(): void {\n this.observer?.disconnect();\n\n const blockIds = new Set<string>();\n\n this.data.textBlocks.forEach((block: CuiCombinedPartBlock) => {\n blockIds.add(block.id || '');\n });\n\n this.removeBlocks(blockIds);\n }\n\n private onMutationEvent(callback: (mutationList: MutationRecord[]) => void, mutationList: MutationRecord[]): void {\n if (mutationList.length === 0) {\n return;\n }\n\n mutationList.forEach((mutation) => {\n if (mutation.removedNodes.length) {\n this.changes.set(generateId(), mutation);\n\n return;\n }\n\n this.changes.set(mutation.target, mutation);\n });\n\n callback(mutationList);\n this.checkIsEditorEmpty();\n }\n\n private getMutationCallback = (wait: number): CuiMutationCallback => {\n let timeoutId: CuiNullable<ReturnType<typeof setTimeout>> = null;\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => this.handleMutations(), wait);\n };\n };\n\n private handleMutations(): void {\n const mutationsList = [...this.changes.values()];\n const { updatedElements, removedElementsIds } = this.getMutationActions(mutationsList);\n const splitedParts: HTMLElement[] = [];\n\n updatedElements.forEach((element: HTMLElement) => {\n const elementContent: string = element.innerHTML;\n\n if (elementContent.length < SPLIT_MAX_LENGTH) {\n return;\n }\n\n const parts = splitHTML(elementContent);\n\n parts.forEach((part: string, index) => {\n if (index === 0) {\n return;\n }\n\n const blockId = generateId();\n const textElement = this.createBlock(blockId, part);\n\n splitedParts.push(textElement);\n });\n\n element.innerHTML = parts[0];\n element.after(...splitedParts);\n });\n\n this.addBlocks(splitedParts, updatedElements);\n this.updateBlocks(updatedElements);\n this.removeBlocks(removedElementsIds);\n this.changes.clear();\n }\n\n private getNextIndex(): number {\n recalculateIndexes(this.api.blocks);\n const index = this.api.blocks.getCurrentBlockIndex();\n const block = this.api.blocks.getBlockByIndex(index);\n const dataIndex = Number(block?.holder.dataset['index']);\n\n const selection = window.getSelection();\n const range = selection?.rangeCount ? selection.getRangeAt(0) : null;\n const caretPosition = range?.startOffset ?? 1;\n\n let nextBlockIndex = dataIndex;\n\n if (caretPosition !== 0) {\n const blockContainer = block?.holder.querySelector('.' + COMBINED_TEXT_BLOCK) as HTMLElement;\n const childrenCount = blockContainer?.children?.length ? blockContainer?.children?.length - 1 : 0;\n\n nextBlockIndex = dataIndex + childrenCount + 1;\n }\n\n if (!nextBlockIndex) {\n nextBlockIndex ||= 0;\n }\n\n return nextBlockIndex;\n }\n\n private getBlockPartObject(blockId: string, text: string): CuiCombinedPartBlock {\n return {\n id: blockId,\n type: COMBINED_TEXT_BLOCK_PART,\n data: {\n text,\n parentId: this.data.id,\n parentType: COMBINED_TEXT_BLOCK_NAME\n }\n };\n }\n\n private getMutationActions(mutationList: MutationRecord[]): CuiMutationActions {\n const updatedElements = new Set<HTMLElement>();\n const removedElementsIds = new Set<string>();\n const changedOutsideElements: Node[] = [];\n\n this.lastBlockElement = undefined;\n\n mutationList.forEach((mutation: MutationRecord): void => {\n this.handleUpdatedBlocks(mutation, updatedElements, changedOutsideElements);\n this.handleRemovedBlocks(mutation, removedElementsIds);\n });\n\n if (this.lastBlockElement) {\n const lastBlockElement = this.lastBlockElement as HTMLElement;\n\n lastBlockElement.append(...changedOutsideElements);\n this.setCaretToBlocksEnd(lastBlockElement);\n }\n\n return {\n updatedElements,\n removedElementsIds\n };\n }\n\n private setCaretToBlocksEnd(block: HTMLElement): void {\n const selection = window.getSelection();\n const range = document.createRange();\n\n range.setStart(block, block.childNodes.length);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n\n private handleUpdatedBlocks(\n mutation: MutationRecord,\n updatedElements: Set<HTMLElement>,\n outsideChanges: Node[]\n ): void {\n let element = mutation.target as HTMLElement;\n\n if (mutation.target.nodeType === Node.TEXT_NODE) {\n element = mutation.target.parentElement as HTMLElement;\n }\n\n const span = element?.closest('.' + COMBINED_TEXT_BLOCK_PART) as HTMLElement;\n\n if (span) {\n updatedElements.add(span);\n\n return;\n }\n\n this.handleChangesOutsideBlock(element, outsideChanges);\n }\n\n private handleChangesOutsideBlock(element: HTMLElement, outsideChanges: Node[]): void {\n if (!element || this.lastBlockElement) {\n return;\n }\n\n element.childNodes.forEach((block) => {\n const blockElement = block as HTMLElement;\n\n if (blockElement.classList?.contains(COMBINED_TEXT_BLOCK_PART)) {\n this.lastBlockElement = blockElement;\n\n return;\n }\n\n outsideChanges.push(block);\n });\n }\n\n private addBlocks(splicedParts: HTMLElement[], updatedElements: Set<HTMLElement>): void {\n if (!splicedParts.length) {\n return;\n }\n\n const addedBlocks: CuiCombinedPartBlock[] = splicedParts.map((block) => {\n const blockId = block.dataset['id'];\n\n return {\n id: blockId,\n type: COMBINED_TEXT_BLOCK_PART,\n data: {\n text: block.innerHTML,\n parentId: this.data.id,\n parentType: COMBINED_TEXT_BLOCK_NAME\n }\n };\n });\n\n const previousElement = updatedElements.values().next().value;\n const id = previousElement?.dataset['id'];\n const index = Number(previousElement?.dataset['index']) + 1;\n const blockIndex = this.data.textBlocks.findIndex((block) => block.id === id);\n\n this.data.textBlocks.splice(blockIndex, 0, ...addedBlocks);\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\n index,\n blockIndex,\n blocks: addedBlocks,\n data: this.data.textBlocks\n });\n }\n\n private updateBlocks(updatedElements: Set<HTMLElement>): void {\n if (!updatedElements.size) {\n return;\n }\n\n const updatedBlocks = [...updatedElements.values()].map((block) => {\n return {\n id: block.dataset['id'],\n type: COMBINED_TEXT_BLOCK_PART,\n data: {\n text: block.innerHTML,\n parentId: this.data.id,\n parentType: COMBINED_TEXT_BLOCK_NAME\n }\n };\n });\n\n this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, updatedBlocks);\n }\n\n private handleRemovedBlocks(mutation: MutationRecord, removedElementsIds: Set<string>): void {\n if (mutation.removedNodes.length === 0) {\n return;\n }\n\n mutation.removedNodes.forEach((node: Node): void => {\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n const blockId = (node as HTMLElement).dataset['id'];\n\n if (!blockId) {\n return;\n }\n\n removedElementsIds.add(blockId);\n });\n }\n\n private removeBlocks(ids: Set<string>): void {\n if (!ids.size) {\n return;\n }\n\n const removedElementIds = [...ids.values()];\n\n this.data.textBlocks = this.data.textBlocks.filter((block) => !ids.has(block.id || ''));\n this.api.events.emit(COMBINED_TEXT_BLOCK_REMOVED, removedElementIds);\n }\n\n private update(blocks: CuiCombinedPartBlock[]): void {\n if (!blocks.length) {\n return;\n }\n\n blocks.forEach((block: CuiCombinedPartBlock) => {\n const textElement = this.createBlock(block.id || generateId(), block.data.text);\n\n if (!this.wrapper) {\n return;\n }\n\n if (this.wrapper.querySelector('.' + COMBINED_TEXT_BLOCK_PART)) {\n this.wrapper.append(textElement);\n\n return;\n }\n\n this.wrapper.replaceChildren(textElement);\n });\n\n setTimeout(() => {\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\n blocks\n });\n });\n }\n\n private createBlock(id: string, text: string): HTMLElement {\n const textElement = document.createElement(this.TAG);\n textElement.classList.add(COMBINED_TEXT_BLOCK_PART);\n textElement.innerHTML = text;\n textElement.dataset['id'] = id;\n\n return textElement;\n }\n\n private convertDefaultDataToCustom(data: { text: string }): void {\n if (Array.isArray(data)) {\n this.data.textBlocks = data.map((block) => {\n block.id = generateId();\n block.data.parentId = this.data.id;\n\n return block;\n });\n }\n\n if (!data.text) {\n return;\n }\n\n const fragment = document.createRange().createContextualFragment(data.text);\n let elementContent = '';\n\n fragment.childNodes.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n elementContent += node.textContent;\n\n return;\n }\n\n elementContent += (node as HTMLElement).innerHTML;\n });\n\n const parts = elementContent.length < SPLIT_MAX_LENGTH ? [elementContent] : splitHTML(elementContent);\n\n parts.forEach((part: string) => {\n const blockObject = this.getBlockPartObject(generateId(), part);\n\n this.data.textBlocks.push(blockObject);\n });\n }\n\n private checkIsEditorEmpty(): void {\n if (!this.wrapper || this.wrapper.children.length > this.MAX_CHILD_COUNT_FOR_EMPTY) {\n return;\n }\n\n const item = this.wrapper.children.item(0) as HTMLElement;\n const isItemEmpty = !item.textContent?.length;\n\n this.wrapper.dataset['empty'] = `${isItemEmpty}`;\n }\n\n private getPlaceholder(config: ToolConfig): string {\n if (this.readOnly) {\n return config.readonlyPlaceholder ?? DEFAULT_READONLY_PLACEHOLDER;\n }\n\n return config.placeholder ?? DEFAULT_PLACEHOLDER;\n }\n}\n","import type { EditorConfig, LogLevels } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_NAME, DEFAULT_CONFIG } from '../constants';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\nimport { CuiCombinedTextBlockTool, CuiBoldInlineTool, CuiItalicInlineTool, CuiLinkMarker } from '../tools';\r\n\r\nexport const getEditorConfig = (id: string, config: CuiEditorConfig = DEFAULT_CONFIG): EditorConfig => ({\r\n holder: id,\r\n logLevel: 'ERROR' as LogLevels,\r\n readOnly: config.readOnly,\r\n autofocus: config.autofocus,\r\n tools: {\r\n paragraph: {\r\n class: CuiCombinedTextBlockTool,\r\n inlineToolbar: true,\r\n config: {\r\n placeholder: config.placeholder,\r\n readonlyPlaceholder: config.readonlyPlaceholder\r\n }\r\n },\r\n link: {\r\n class: CuiLinkMarker\r\n },\r\n bold: {\r\n class: CuiBoldInlineTool\r\n },\r\n italic: {\r\n class: CuiItalicInlineTool\r\n },\r\n ...config.tools\r\n },\r\n defaultBlock: COMBINED_TEXT_BLOCK_NAME\r\n});\r\n","export function setEditorDragEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('dragstart', dragstartListener, { signal });\r\n}\r\n\r\nexport function dragstartListener(event: DragEvent): void {\r\n event.preventDefault();\r\n}\r\n","import { COMBINED_TEXT_BLOCK, COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nconst FIRST_CHILD_SELECTOR = '_selected';\r\n\r\nexport function setEditorKeyboardEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('keydown', keydownListener, { signal });\r\n}\r\n\r\nexport function keydownListener(event: KeyboardEvent): void {\r\n const target = event.target as HTMLElement;\r\n const block = target.closest(`.${COMBINED_TEXT_BLOCK}`);\r\n\r\n if (!block) {\r\n return;\r\n }\r\n\r\n const selection = window.getSelection();\r\n const ranges = selection?.rangeCount;\r\n\r\n if (!ranges || !checkIsBlockFullySelected(block)) {\r\n return;\r\n }\r\n\r\n const firstChild = block?.firstElementChild;\r\n\r\n firstChild?.classList.add(FIRST_CHILD_SELECTOR);\r\n setTimeout(() => firstChild?.classList.remove(FIRST_CHILD_SELECTOR));\r\n}\r\n\r\nfunction checkIsBlockFullySelected(blockElement: Element): boolean {\r\n const selection = window.getSelection();\r\n\r\n if (!selection || selection.rangeCount === 0) {\r\n return false;\r\n }\r\n\r\n const range = selection.getRangeAt(0);\r\n const startBlock = range.startContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n const endBlock = range.endContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n const isStartAtBlockStart = startBlock === blockElement.firstChild && range.startOffset === 0;\r\n const isEndAtBlockEnd = endBlock === blockElement.lastChild;\r\n\r\n return isStartAtBlockStart && isEndAtBlockEnd;\r\n}\r\n","import { CuiAngularElement } from '../interfaces';\r\n\r\nimport { EDITOR_TOOL_MODAL_SELECTOR, EditorToolModalComponent } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function setEditorInfoModalEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement?.addEventListener('pointerup', pointerUpListener, { signal });\r\n}\r\n\r\nexport function pointerUpListener(event: MouseEvent): void {\r\n const selection = window.getSelection();\r\n\r\n if (selection && selection.toString().length > 0) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (!marker) {\r\n return;\r\n }\r\n\r\n onMarkerClick(marker);\r\n}\r\n\r\nexport function onMarkerClick(marker: HTMLElement): void {\r\n const id = marker.dataset['id'];\r\n const type = marker.dataset['type'] as MarkerType;\r\n\r\n if (!(id && type)) {\r\n return;\r\n }\r\n\r\n const toolModal = document.createElement(EDITOR_TOOL_MODAL_SELECTOR) as CuiAngularElement<EditorToolModalComponent>;\r\n\r\n toolModal.tool = { id, type, title: 'Молоток КУБИПРО Ультра MAX 3000' };\r\n toolModal.marker = marker;\r\n\r\n toolModal.addEventListener('closed', function onCloseModal() {\r\n toolModal.remove();\r\n });\r\n\r\n document.body.append(toolModal);\r\n}\r\n","import { tooltipMap } from '../utils';\r\n\r\nconst TOOLTIP_POSITION_X = 5;\r\nconst TOOLTIP_POSITION_Y = 40;\r\nconst TOOLTIP_SAFE_RIGHT_SHIFT = 10;\r\nconst TOOLTIP_DEBOUNCE_TIME = 500;\r\nconst CLOSE_TOOLTIP_DEBOUNCE_TIME = 50;\r\n\r\nlet tooltip: HTMLElement;\r\nlet timeoutId: ReturnType<typeof setTimeout>;\r\nlet closeTimeoutId: ReturnType<typeof setTimeout>;\r\n\r\nconst closeTooltipHandler = (): void => closeTooltip();\r\n\r\nfunction closeTooltip(callback?: () => void): void {\r\n clearTimeout(closeTimeoutId);\r\n\r\n closeTimeoutId = setTimeout(() => {\r\n clearTimeout(timeoutId);\r\n tooltip?.remove();\r\n callback?.();\r\n }, CLOSE_TOOLTIP_DEBOUNCE_TIME);\r\n}\r\n\r\nconst debouncedEvent = (event: MouseEvent, marker: HTMLElement, target: HTMLElement): void => {\r\n clearTimeout(timeoutId);\r\n\r\n timeoutId = setTimeout(() => {\r\n if (tooltip && tooltip?.contains(target)) {\r\n return;\r\n }\r\n\r\n closeTooltip(() => openTooltip(event, marker));\r\n }, TOOLTIP_DEBOUNCE_TIME);\r\n};\r\n\r\nfunction openTooltip(event: MouseEvent, marker: HTMLElement): void {\r\n const type = marker.tagName as keyof typeof tooltipMap;\r\n\r\n tooltip = tooltipMap[type](marker);\r\n tooltip.style.visibility = 'hidden';\r\n\r\n document.body.append(tooltip);\r\n\r\n setTimeout(() => {\r\n const positionX = event.clientX;\r\n const positionY = event.clientY;\r\n const rightX = document.documentElement.clientWidth - positionX;\r\n const rightShiftDiffX = tooltip.offsetWidth - rightX;\r\n const rightShiftX = rightShiftDiffX > 0 ? rightShiftDiffX + TOOLTIP_SAFE_RIGHT_SHIFT : 0;\r\n\r\n tooltip.style.top = positionY - TOOLTIP_POSITION_Y + 'px';\r\n tooltip.style.left = positionX + TOOLTIP_POSITION_X - rightShiftX + 'px';\r\n tooltip.style.visibility = 'visible';\r\n });\r\n}\r\n\r\nexport function setEditorTooltipEvents(signal: AbortSignal): void {\r\n document.body.addEventListener('mousemove', mouseMoveListener, { signal });\r\n document.body.addEventListener('mouseleave', closeTooltipHandler, { signal });\r\n}\r\n\r\nexport function mouseMoveListener(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (tooltip?.contains(target)) {\r\n clearTimeout(timeoutId);\r\n clearTimeout(closeTimeoutId);\r\n\r\n return;\r\n }\r\n\r\n if (!marker) {\r\n closeTooltip();\r\n\r\n return;\r\n }\r\n\r\n clearTimeout(closeTimeoutId);\r\n debouncedEvent(event, marker, target);\r\n}\r\n","import { setEditorDragEvents } from './editor-drag.event';\r\nimport { setEditorKeyboardEvents } from './editor-keyboard.event';\r\nimport { setEditorInfoModalEvents } from './editor-modal.event';\r\nimport { setEditorTooltipEvents } from './editor-tooltip.event';\r\n\r\nexport function setEditorEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n setEditorTooltipEvents(signal);\r\n setEditorInfoModalEvents(editorElement, signal);\r\n setEditorDragEvents(editorElement, signal);\r\n setEditorKeyboardEvents(editorElement, signal);\r\n}\r\n","import type { ElementRef, OnDestroy } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { CuiIdService } from '@cuby-ui/cdk';\nimport type { API, BlockMutationEvent, OutputData } from '@editorjs/editorjs';\nimport EditorJS from '@editorjs/editorjs';\nimport type { Observable, Subscription } from 'rxjs';\nimport {\n concatMap,\n delay,\n finalize,\n fromEvent,\n map,\n Subject,\n takeWhile,\n tap,\n throttleTime,\n timer,\n toArray\n} from 'rxjs';\nimport { CuiBlock, CuiJTextApiService } from '@cuby-ui/api';\n\nimport { getEditorConfig } from './config';\nimport { COMBINED_TEXT_BLOCK_NAME, COMBINED_TEXT_BLOCK_PART, DEFAULT_CONFIG } from './constants/editor.constants';\nimport { setEditorEvents } from './events/set-editor-events';\nimport type {\n CuiBlockData,\n CuiBlocksRequestData,\n CuiCombinedBlockAddingEvent,\n CuiCombinedBlockToolData,\n CuiCombinedPartBlock,\n CuiEditorConfig,\n CuiEventActionData,\n CuiFullBlockData\n} from './interfaces';\nimport { CuiEditorService, EventActions } from './services';\nimport { recalculateIndexes } from './utils/recalculate-indexes';\n\n@Component({\n selector: 'cui-editor',\n standalone: true,\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CuiEditorService, CuiJTextApiService]\n})\nexport class CuiEditorComponent implements OnDestroy {\n private readonly destroy = inject(DestroyRef);\n private readonly cuiIdService = inject(CuiIdService);\n private readonly editorService = inject(CuiEditorService);\n private readonly jTextService = inject(CuiJTextApiService);\n\n private readonly POOLING_DELAY = 100;\n private readonly ELEMENT_SPACE_TO_BOTTOM = 150;\n private readonly SCROLL_THROTTLE_TIME = 200;\n\n private readonly emptyQueue = new Subject();\n\n private poolingSubscription!: Subscription;\n private scrollSubscription!: Subscription;\n private isSkipCombinedBlockOnChange: boolean[] = [];\n private isFirst = true;\n private isChanging = false;\n private isSkip = false;\n private isRequested = false;\n private isDestroyed = false;\n private blockIdsMap = new Map<string, string>();\n private combinedBlocks = new Map();\n private index = 0;\n private page = 0;\n private addedBlocks: CuiBlockData[] = [];\n private updatedBlocks: CuiBlock[] = [];\n private removedBlocksIds: string[] = [];\n private changesQueue: BlockMutationEvent[][] = [];\n private abortController = new AbortController();\n\n protected readonly editorId = this.cuiIdService.generate();\n\n private readonly isReadonly = computed(() => this.config()?.readOnly);\n\n protected readonly editorRef = viewChild.required<ElementRef<HTMLElement>>('editor');\n\n public readonly editorApiId = input.required<string>();\n public readonly config = input<CuiEditorConfig>(DEFAULT_CONFIG);\n public readonly requestSize = input<number>(40);\n\n public readonly editorEmpty = output<boolean>();\n\n public editor!: EditorJS;\n public editorElement!: HTMLElement;\n\n constructor() {\n this.initEditorEffect();\n }\n\n public ngOnDestroy(): void {\n this.isDestroyed = true;\n\n this.destroyEditor();\n }\n\n private onScrollEvent(element: HTMLElement): void {\n const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;\n const currentHeight = element.scrollTop + element.clientHeight;\n\n if (currentHeight < overallHeight || this.isRequested) {\n return;\n }\n\n this.isRequested = true;\n\n const size = this.requestSize();\n let blocksCount = 0;\n\n this.getBlocks(this.page, size)\n .pipe(\n tap((blocks) => (blocksCount = blocks.length)),\n finalize(() => {\n this.isRequested = false;\n\n if (blocksCount >= size) {\n return;\n }\n\n this.scrollSubscription.unsubscribe();\n })\n )\n .subscribe();\n\n this.page++;\n }\n\n private onEditorChange(_: API, event: BlockMutationEvent | BlockMutationEvent[]): void {\n if (this.isReadonly() || this.isDestroyed) {\n return;\n }\n\n if (!Array.isArray(event)) {\n event = [event];\n }\n\n recalculateIndexes(this.editor.blocks);\n\n if (this.isChanging) {\n this.changesQueue.unshift(event);\n }\n\n this.startChanges(event);\n this.editorEmpty.emit(this.checkIsEmpty());\n }\n\n private onAddedCombinedBlock(data: CuiCombinedBlockAddingEvent): void {\n if (this.isSkipCombinedBlockOnChange.length) {\n this.isSkipCombinedBlockOnChange.pop();\n\n return;\n }\n\n const blocksWithoutId = data.blocks.map((block) => ({\n block: { ...block, id: undefined },\n id: block.id!\n }));\n\n this.addedBlocks.push(...blocksWithoutId);\n }\n\n private onUpdatedCombinedBlock(updatedBlocks: CuiBlock[]): void {\n if (!updatedBlocks.length) {\n return;\n }\n\n this.updatedBlocks.push(...updatedBlocks);\n }\n\n private onRemovedCombinedBlock(blockIds: string[]): void {\n if (!blockIds.length) {\n return;\n }\n\n this.removedBlocksIds.push(...blockIds);\n }\n\n private initEditorEffect(): void {\n effect(\n () => {\n if (this.editorApiId() || this.config()) {\n this.initEditorChanges();\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n private initEditorChanges(): void {\n this.jTextService.addOptions(this.config()?.requestOptions);\n\n this.editor = this.initEditor(this.editorId);\n this.editor.isReady.then(() => {\n if (this.isDestroyed) {\n return;\n }\n\n this.editorElement = this.editorRef().nativeElement;\n\n this.initEditorEvents(this.editorElement);\n this.initScrollObserver();\n this.startPooling(this.requestSize());\n this.setListenersOnCustomBlockChanges();\n });\n }\n\n private initEditor(id: string): EditorJS {\n const config = this.config();\n\n this.destroyEditor();\n this.editor = new EditorJS({\n ...getEditorConfig(id, config),\n onChange: this.onEditorChange.bind(this)\n });\n\n return this.editor;\n }\n\n private initScrollObserver(): void {\n const element = this.config()?.element ?? this.editorElement;\n const scrollObserver = fromEvent(element, 'scroll');\n\n this.scrollSubscription = scrollObserver\n .pipe(\n takeUntilDestroyed(this.destroy),\n throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {\n leading: true,\n trailing: true\n }),\n map(() => this.onScrollEvent(element))\n )\n .subscribe();\n }\n\n private initEditorEvents(element: HTMLElement): void {\n const readOnly = this.isReadonly();\n\n if (readOnly) {\n return;\n }\n\n setEditorEvents(element, this.abortController.signal);\n }\n\n private startPooling(size: number): void {\n const scrollElement = this.config()?.element ?? this.editorElement;\n const withoutPreload = this.config()?.withoutPreload;\n\n this.poolingSubscription = timer(0, this.POOLING_DELAY)\n .pipe(\n concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))),\n tap(() => this.page++),\n takeWhile(\n (blocks) =>\n !withoutPreload &&\n scrollElement.scrollHeight <= scrollElement.clientHeight &&\n blocks.length >= size\n ),\n finalize(() => {\n if (this.isDestroyed) {\n return;\n }\n\n this.setStartBlock();\n })\n )\n .subscribe();\n }\n\n private destroyEditor(): void {\n this.abortController.abort();\n this.resetData();\n // TODO: в рандом кейсах падает ошибка если убрать проверку на вызов destroy\n this.editor?.destroy?.();\n }\n\n private setListenersOnCustomBlockChanges(): void {\n this.editorService.setListenersOnCustomBlockChanges(this.editor, {\n removedCallback: this.onRemovedCombinedBlock.bind(this),\n updatedCallback: this.onUpdatedCombinedBlock.bind(this),\n addedCallback: this.onAddedCombinedBlock.bind(this)\n });\n }\n\n private async startChanges(event: BlockMutationEvent[]): Promise<void> {\n if (this.isSkip || this.isChanging) {\n this.isSkip = false;\n\n return;\n }\n\n this.isChanging = true;\n\n try {\n const editorOutput = await this.editor.save();\n const events = event.filter((data) => data.detail.target.name !== COMBINED_TEXT_BLOCK_NAME);\n const blocks = this.editorService.sortEventsByTypes(events);\n const { addBlocks$, addedBlocks } = this.collectAddedBlocksRequest(blocks, editorOutput);\n\n this.addedBlocks = [];\n\n addBlocks$\n .pipe(\n tap((blockIds) => this.setBlockIdsToMap(blockIds, addedBlocks)),\n concatMap(() => this.collectUpdatedBlocksRequest(blocks, editorOutput)),\n concatMap(() => this.collectRemovedBlocksRequest(blocks))\n )\n .subscribe({\n complete: () => this.startNextChange(),\n error: () => this.startNextChange()\n });\n } catch (e) {\n return;\n }\n }\n\n private startNextChange(): void {\n this.isChanging = false;\n\n const nextEvents = this.changesQueue.pop();\n\n if (nextEvents) {\n this.startChanges(nextEvents);\n }\n\n this.emptyQueue.next(null);\n }\n\n private collectAddedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): CuiBlocksRequestData {\n const defaultBlocksWithIndex = blocks[EventActions.add].map((addedBlock) =>\n this.editorService.getFullBlockData(addedBlock, editorOutput)\n );\n const combinedBlocksWithIndex = this.addedBlocks.map((block) => {\n const element = this.editorElement.querySelector(`[data-id=\"${block.id}\"]`) as HTMLElement;\n const index = Number(element?.dataset['index']);\n\n return { ...block, index };\n });\n\n const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort(\n (first, second) => first.index - second.index\n );\n const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorApiId(), addedBlocks);\n\n return {\n addedBlocks,\n addBlocks$\n };\n }\n\n private collectUpdatedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): Observable<CuiBlock[]> {\n blocks[EventActions.update].forEach((updateBlock) => {\n const { id, block } = this.editorService.getFullBlockData(updateBlock, editorOutput);\n block.id = id;\n\n this.updatedBlocks.push(block);\n });\n\n const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);\n\n this.updatedBlocks = [];\n\n return updateBlocks$;\n }\n\n private collectRemovedBlocksRequest(blocks: CuiEventActionData): Observable<void> {\n blocks[EventActions.remove].forEach((block) => {\n const id = block.detail.target.id;\n\n this.removedBlocksIds.push(id);\n });\n\n const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(\n this.editorApiId(),\n this.removedBlocksIds,\n this.blockIdsMap\n );\n this.removedBlocksIds = [];\n\n return removeBlocks$;\n }\n\n private getBlocks(page = 0, size = 40): Observable<CuiBlock[]> {\n let combinedBlock: CuiNullable<CuiBlock>;\n\n return this.jTextService.getBlocks(this.editorApiId(), page, size).pipe(\n takeUntilDestroyed(this.destroy),\n finalize(() => {\n if (combinedBlock) {\n this.addCombinedBlock(combinedBlock);\n combinedBlock = null;\n }\n\n recalculateIndexes(this.editor.blocks);\n }),\n map((block) => {\n if (block.type === COMBINED_TEXT_BLOCK_PART) {\n const blockData = block.data as { parentId: string };\n\n if (combinedBlock && blockData.parentId! !== combinedBlock?.id) {\n this.addCombinedBlock(combinedBlock);\n combinedBlock = null;\n }\n\n combinedBlock = this.setCombinedBlock(block);\n\n return;\n }\n\n if (combinedBlock) {\n this.addCombinedBlock(combinedBlock);\n combinedBlock = null;\n }\n\n this.addBlock(block);\n }),\n toArray()\n ) as unknown as Observable<CuiBlock[]>;\n }\n\n private addBlock(block: CuiBlock): void {\n if (typeof block.type !== 'string') {\n return;\n }\n\n this.blockIdsMap.set(block.id!, block.id!);\n this.insert(block);\n }\n\n private addCombinedBlock(combinedBlock: CuiBlock): void {\n this.isSkipCombinedBlockOnChange.push(true);\n const block = this.editor.blocks.getById(combinedBlock.id || '');\n\n if (block) {\n this.editor.blocks.update(block.id, combinedBlock.data as CuiCombinedPartBlock);\n\n return;\n }\n\n this.insert(combinedBlock);\n }\n\n private insert(block: CuiBlock): void {\n this.checkFirst(block);\n this.index++;\n }\n\n private checkFirst(block: CuiBlock): void {\n if (!this.isFirst) {\n this.isSkip = true;\n this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);\n\n return;\n }\n\n // TODO: есть варик что что то пойдет не так\n this.editor.blocks.render({ blocks: [block] }).then(() => (this.isSkip = false));\n this.isFirst = false;\n }\n\n private setCombinedBlock(block: CuiBlock): CuiBlock {\n const combinedBlockData = block.data as { parentId: string };\n const parent = this.combinedBlocks.get(combinedBlockData.parentId);\n\n this.blockIdsMap.set(block.id!, block.id!);\n\n if (parent) {\n const parentData = parent.data as { textBlocks: CuiBlock[] };\n parentData.textBlocks.push(block);\n\n return parent;\n }\n\n const parentObject: CuiBlock = {\n id: combinedBlockData.parentId,\n type: COMBINED_TEXT_BLOCK_NAME,\n data: {\n id: combinedBlockData.parentId,\n textBlocks: [block]\n }\n };\n\n this.combinedBlocks.set(combinedBlockData.parentId, parentObject);\n\n return parentObject;\n }\n\n private setBlockIdsToMap(blockIds: string[], addedBlocks: CuiFullBlockData[]): void {\n if (!blockIds.length) {\n return;\n }\n\n addedBlocks.forEach((blockData, index) => {\n this.blockIdsMap.set(blockData.id, blockIds[index]);\n });\n }\n\n private setStartBlock(): void {\n if (this.blockIdsMap.size) {\n this.setFocus();\n this.editorEmpty.emit(this.checkIsEmpty());\n\n return;\n }\n\n if (this.isReadonly()) {\n this.editor.render({ blocks: [] });\n\n return;\n }\n\n this.editorService.setStartBlock(\n this.editorApiId(),\n async (block: CuiBlock<CuiCombinedBlockToolData>, id: string) => {\n this.blockIdsMap.set(id, id);\n this.isSkipCombinedBlockOnChange.push(true);\n\n await this.editor.render({ blocks: [block] });\n\n this.setFocus();\n recalculateIndexes(this.editor.blocks);\n }\n );\n }\n\n private setFocus(): void {\n if (!this.config()?.autofocus) {\n return;\n }\n\n this.editor.caret.focus();\n }\n\n private checkIsEmpty(): boolean {\n const MIN_BLOCKS_COUNT = 1;\n const REDACTOR_SELECTOR = '.codex-editor__redactor';\n const redactor = this.editorElement.querySelector(REDACTOR_SELECTOR);\n const blocksCount = redactor?.childElementCount ?? 0;\n\n return blocksCount <= MIN_BLOCKS_COUNT && !redactor?.textContent;\n }\n\n private resetData(): void {\n this.scrollSubscription?.unsubscribe();\n this.poolingSubscription?.unsubscribe();\n this.isSkipCombinedBlockOnChange = [];\n this.isFirst = true;\n this.isChanging = false;\n this.isSkip = false;\n this.isRequested = false;\n this.blockIdsMap = new Map<string, string>();\n this.combinedBlocks = new Map();\n this.index = 0;\n this.page = 0;\n this.addedBlocks = [];\n this.updatedBlocks = [];\n this.removedBlocksIds = [];\n this.changesQueue = [];\n this.abortController = new AbortController();\n }\n}\n","<div\n #editor\n [id]=\"editorId\"\n data-editor\n [class._readonly]=\"config().readOnly\"\n></div>\n","import { Directive, effect, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[editorResizeObserver]',\n standalone: true\n})\nexport class EditorResizeObserverDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n private observer: ResizeObserver | null = null;\n\n public readonly target = input.required<HTMLElement>();\n public readonly shortHeight = input.required<number>();\n\n constructor() {\n this.initTargetEffect();\n }\n\n public ngOnDestroy(): void {\n this.destroyObserver();\n }\n\n private initTargetEffect(): void {\n effect(() => {\n const target = this.target();\n\n if (!target) {\n return;\n }\n\n this.initObserver();\n });\n }\n\n private initObserver(): void {\n this.observer = new ResizeObserver((entries) => {\n if (entries[0].target.scrollHeight <= this.shortHeight()) {\n this.viewContainerRef.clear();\n\n return;\n }\n\n if (this.viewContainerRef.length) {\n return;\n }\n\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n });\n\n this.observer.observe(this.target());\n }\n\n private destroyObserver(): void {\n this.observer?.disconnect();\n this.observer = null;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n signal,\r\n TemplateRef,\r\n viewChild\r\n} from '@angular/core';\r\nimport { CuiElementDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorReadonlyConfig } from './editor-readonly.options';\r\nimport { EditorResizeObserverDirective } from './editor-resize-observer.directive';\r\n\r\n@Component({\r\n selector: 'cui-editor-readonly',\r\n standalone: true,\r\n imports: [CuiEditorComponent, NgTemplateOutlet, EditorResizeObserverDirective, CuiElementDirective],\r\n templateUrl: './editor-readonly.component.html',\r\n styleUrls: ['./editor-readonly.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorReadonlyComponent {\r\n protected readonly isShowMore = signal(false);\r\n protected readonly editorConfig = computed(() => ({ readOnly: true, withoutPreload: true, ...this.config() }));\r\n\r\n protected readonly DEFAULT_SHORT_HEIGHT = 68;\r\n\r\n protected readonly editor = viewChild.required<CuiEditorComponent>('editor');\r\n\r\n public readonly editorId = input.required<string>();\r\n public readonly config = input.required<CuiEditorReadonlyConfig>();\r\n public readonly buttonTemplate = input.required<TemplateRef<unknown>>();\r\n public readonly shortHeight = input<number>(this.DEFAULT_SHORT_HEIGHT);\r\n\r\n constructor() {\r\n this.initEditorIdEffect();\r\n }\r\n\r\n protected onShow(editor: CuiEditorComponent): void {\r\n editor.editorElement.scrollTo(0, 0);\r\n this.isShowMore.update((prev) => !prev);\r\n }\r\n\r\n private initEditorIdEffect(): void {\r\n effect(\r\n () => {\r\n this.editorId();\r\n this.isShowMore.set(false);\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n}\r\n","<cui-editor\r\n cuiElement\r\n #editorElement=\"elementRef\"\r\n #editorComponent\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorApiId]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n\r\n<ng-template\r\n [editorResizeObserver]\r\n [target]=\"editorElement.nativeElement\"\r\n [shortHeight]=\"shortHeight()\"\r\n>\r\n <button\r\n class=\"c-button\"\r\n (click)=\"onShow(editorComponent)\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"buttonTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"\r\n ></ng-container>\r\n </button>\r\n</ng-template>\r\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { Component, input, output, signal } from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\n\nimport { CuiButtonModule, CuiSvgModule } from '../../../components';\nimport { CuiEditorComponent } from '../../editor.component';\nimport type { CuiEditorConfig } from '../../interfaces';\n\n@Component({\n selector: 'cui-editor-modal',\n imports: [CuiEditorComponent, CuiButtonModule, NgTemplateOutlet, CuiSvgModule],\n standalone: true,\n templateUrl: './editor-modal.component.html',\n styleUrl: './editor-modal.component.scss'\n})\nexport class CuiEditorModalComponent {\n protected readonly isOpen = signal(false);\n protected readonly isButtonDisabled = signal<boolean>(false);\n\n public readonly title = input.required<string>();\n public readonly buttonTemplate = input<TemplateRef<HTMLElement>>();\n public readonly config = input.required<CuiEditorConfig>();\n public readonly editorId = input<CuiNullable<string>>();\n\n public readonly editorCreated = output();\n public readonly modalClosed = output();\n\n protected onModalOpen(): void {\n this.isButtonDisabled.set(true);\n\n if (this.editorId()) {\n this.open();\n\n return;\n }\n\n this.editorCreated.emit();\n }\n public open(): void {\n this.isOpen.set(true);\n }\n\n public close(): void {\n this.isButtonDisabled.set(false);\n this.isOpen.set(false);\n this.modalClosed.emit();\n }\n}\n","@if (buttonTemplate(); as template) {\n <button\n type=\"button\"\n class=\"button\"\n (click)=\"onModalOpen()\"\n >\n <ng-container [ngTemplateOutlet]=\"template\" />\n </button>\n} @else {\n <button\n class=\"description\"\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n icon=\"cuiIconRichText\"\n size=\"sm\"\n (click)=\"onModalOpen()\"\n [disabled]=\"isButtonDisabled()\"\n >\n @if (editorId()) {\n <span class=\"description__text _created\">{{ 'Description' }}</span>\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconEdit\"\n color=\"var(--cui-base-500)\"\n />\n } @else {\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconPlus\"\n color=\"var(--cui-light-blue-600)\"\n />\n <span class=\"description__text\">{{ 'Add description' }}</span>\n }\n </button>\n}\n@if (isOpen()) {\n <div class=\"wrapper\">\n @if (editorId(); as id) {\n <header class=\"header\">\n <div class=\"info\">\n <button\n cuiButton\n type=\"button\"\n icon=\"cuiIconChevronLeft\"\n size=\"xxs\"\n appearance=\"secondary\"\n shape=\"rounded\"\n (click)=\"close()\"\n ></button>\n <h1 class=\"title\">{{ title() }}</h1>\n </div>\n <div class=\"actions\">\n <!-- <cui-loader /> -->\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n (click)=\"close()\"\n >\n {{ 'Done' }}\n </button>\n </div>\n </header>\n\n <section class=\"section\">\n <cui-editor\n #editorComponent\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"config()\"\n />\n </section>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport type { CuiNullable } from '@cuby-ui/cdk';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { CuiButtonModule, CuiContentWrapperComponent, CuiHintModule } from '../../../components';\nimport { CuiTooltip } from '../../../directives';\n\nimport { CuiEditorComponent } from '../../editor.component';\nimport type { CuiEditorConfig } from '../../interfaces';\nimport { CuiEditorModalComponent } from '../editor-modal/editor-modal.component';\n\n@Component({\n selector: 'cui-editor-block',\n imports: [\n CuiButtonModule,\n CuiEditorModalComponent,\n CuiEditorComponent,\n TranslocoDirective,\n CuiContentWrapperComponent,\n CuiTooltip,\n CuiHintModule\n ],\n standalone: true,\n templateUrl: './editor-block.component.html',\n styleUrls: ['./editor-block.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiEditorBlockComponent {\n private skipFirstValidation = true;\n\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\n protected readonly isDescriptionModalOpen = signal(false);\n protected readonly isDescriptionEmpty = signal(false);\n\n public readonly editorContainer = viewChild<string, ElementRef<HTMLElement>>('editorContainer', {\n read: ElementRef\n });\n\n public readonly title = input.required<string>();\n public readonly editorId = input.required<string>();\n public readonly config = input.required<CuiEditorConfig>();\n public readonly required = input(false);\n\n public readonly editorEmpty = output<boolean>();\n\n constructor() {\n this.initEditorConfig();\n }\n\n protected onToggleDescriptionModal(): void {\n this.isDescriptionModalOpen.update((prev) => !prev);\n }\n\n protected onDescriptionChange(value: boolean): void {\n this.editorEmpty.emit(value);\n\n if (this.skipFirstValidation) {\n this.skipFirstValidation = false;\n\n return;\n }\n\n this.isDescriptionEmpty.set(value);\n }\n\n private initEditorConfig(): void {\n const effectRef = effect(\n () => {\n const element = this.editorContainer()?.nativeElement;\n\n if (!element) {\n return;\n }\n\n this.editorConfig.set({ element, ...this.config() });\n effectRef.destroy();\n },\n { allowSignalWrites: true }\n );\n }\n}\n","<ng-container *transloco=\"let t\">\n <div class=\"wrapper\">\n <span class=\"title\">\n {{ t('DESCRIPTION') }}\n @if (required()) {\n <span class=\"title__required\">*</span>\n }\n </span>\n <ng-template #button>\n <button\n [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\n cuiButton\n size=\"xxs\"\n type=\"button\"\n appearance=\"ghost\"\n icon=\"cuiIconMaximizeSm\"\n (click)=\"onToggleDescriptionModal()\"\n ></button>\n </ng-template>\n <cui-editor-modal\n [title]=\"title()\"\n [editorId]=\"editorId()\"\n [buttonTemplate]=\"button\"\n [config]=\"config()\"\n (modalClosed)=\"onToggleDescriptionModal()\"\n />\n </div>\n <div\n #editorContainer\n cuiContentWrapper\n class=\"editor\"\n [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\n >\n @if (!isDescriptionModalOpen() && editorConfig()) {\n <cui-editor\n #editorComponent\n [editorApiId]=\"editorId()\"\n [config]=\"editorConfig()!\"\n (editorEmpty)=\"onDescriptionChange($event)\"\n />\n }\n </div>\n @if (required() && isDescriptionEmpty()) {\n <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\n }\n</ng-container>\n","import {\n EDITOR_ATTACHES_TOOL_SELECTOR,\n EDITOR_IMAGE_TOOL_SELECTOR,\n EDITOR_TOOL_MODAL_SELECTOR,\n EDITOR_TOOLTIP_SELECTOR,\n EDITOR_VIDEO_TOOL_SELECTOR,\n EditorAttachesToolComponent,\n EditorImageToolComponent,\n EditorToolModalComponent,\n EditorTooltipComponent,\n EditorVideoToolComponent,\n MARKER_MODAL_SELECTOR,\n MARKER_SELECT_SELECTOR,\n MarkerModalComponent,\n MarkerSelectComponent\n} from '../components';\nimport { CuiCustomElement } from '../interfaces';\n\nexport const EDITOR_CUSTOM_ELEMENTS: readonly CuiCustomElement[] = [\n {\n selector: EDITOR_TOOLTIP_SELECTOR,\n component: EditorTooltipComponent\n },\n {\n selector: MARKER_SELECT_SELECTOR,\n component: MarkerSelectComponent\n },\n {\n selector: EDITOR_TOOL_MODAL_SELECTOR,\n component: EditorToolModalComponent\n },\n {\n selector: MARKER_MODAL_SELECTOR,\n component: MarkerModalComponent\n },\n {\n selector: EDITOR_VIDEO_TOOL_SELECTOR,\n component: EditorVideoToolComponent\n },\n {\n selector: EDITOR_IMAGE_TOOL_SELECTOR,\n component: EditorImageToolComponent\n },\n {\n selector: EDITOR_ATTACHES_TOOL_SELECTOR,\n component: EditorAttachesToolComponent\n }\n];\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\nimport { EDITOR_CUSTOM_ELEMENTS } from '../config/custom-elements';\r\n\r\nexport function cuiProvideEditor(): Provider {\r\n return [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (injector: Injector) => () => {\r\n EDITOR_CUSTOM_ELEMENTS.forEach(({ component, selector }) => {\r\n const element = createCustomElement(component, { injector });\r\n\r\n window.customElements.define(selector, element);\r\n });\r\n },\r\n deps: [Injector],\r\n multi: true\r\n }\r\n ];\r\n}\r\n","import type { HttpEvent, HttpInterceptorFn } from '@angular/common/http';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nexport const cuiXNdjsonInterceptor: HttpInterceptorFn = (request, next) => {\n if (request.headers.get('Content-Type') !== 'application/x-ndjson') {\n return next(request);\n }\n\n return new Observable<HttpEvent<unknown>>((observer) => {\n const controller = new AbortController();\n const signal = controller.signal;\n\n (async (): Promise<void> => {\n try {\n const response = await fetch(request.urlWithParams, {\n method: request.method,\n headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\n headers[key] = request.headers.get(key)!;\n\n return headers;\n }, {}),\n body: request.body ? JSON.stringify(request.body) : null,\n signal\n });\n\n if (!response.ok) {\n const error = await response.json();\n\n observer.error(new HttpErrorResponse({ error }));\n\n return;\n }\n\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n for (;;) {\n const { done, value } = await reader.read();\n\n if (done) {\n observer.complete();\n\n return;\n }\n\n buffer += decoder.decode(value);\n const lines = buffer.split('\\n');\n buffer = lines.pop() ?? '';\n\n lines.forEach((line) => observer.next(JSON.parse(line)));\n }\n } catch (error) {\n observer.error(new HttpErrorResponse({ error }));\n }\n })();\n\n return () => controller.abort();\n });\n};\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { catchError, finalize, throwError } from 'rxjs';\r\n\r\nimport { CuiLoaderService } from '../services';\r\n\r\nexport const cuiLoaderInterceptor: HttpInterceptorFn = (request, next) => {\r\n const loaderService = inject(CuiLoaderService);\r\n\r\n if (request.method === 'GET') {\r\n return next(request);\r\n }\r\n\r\n loaderService.setLoading();\r\n\r\n return next(request).pipe(\r\n catchError((error) => throwError(() => error)),\r\n finalize(loaderService.handleCompletedRequest.bind(loaderService))\r\n );\r\n};\r\n","import { HttpErrorResponse, type HttpEvent, type HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport type { Observable } from 'rxjs';\nimport { catchError, throwError } from 'rxjs';\n\nimport { CuiAlertService } from '../components';\n\nexport const cuiErrorHandlerInterceptor: HttpInterceptorFn = (request, next) => {\n const translocoService = inject(TranslocoService);\n const cuiAlertService = inject(CuiAlertService);\n\n return next(request).pipe(\n catchError((error) => {\n console.error(error);\n\n if (error instanceof HttpErrorResponse) {\n cuiAlertService\n .open(translocoService.translate(`BACKEND.${error.error.code}`), { status: 'error' })\n .subscribe();\n }\n\n return throwError(() => error) as Observable<HttpEvent<unknown>>;\n })\n );\n};\n","import { InjectionToken } from '@angular/core';\nimport type { AuthConfig, OAuthModuleConfig } from 'angular-oauth2-oidc';\n\nimport type { CuiBrowserAuthService } from '../services/browser-auth.service';\nimport type { CuiMobileAuthService } from '../services/mobile-auth.service';\nimport { CuiAuthBase } from '../services/auth.service';\n\nexport type CuiAuthPlatform = 'mobile' | 'browser';\n\nexport interface CuiAuthConfig extends AuthConfig {\n readonly tokenExpiredCallback?: (this: CuiAuthBase) => void;\n}\n\nexport interface CuiAuthProviderConfig {\n readonly authConfig: CuiAuthConfig;\n readonly moduleConfig?: OAuthModuleConfig;\n readonly platform?: CuiAuthPlatform;\n}\n\nexport const CuiAuthService = new InjectionToken<CuiMobileAuthService | CuiBrowserAuthService>('CUI_AUTH_SERVICE');\n","import { Location } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CuiAuthConfig } from '../providers';\nimport { CuiAuthBase } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiBrowserAuthService extends CuiAuthBase {\n private readonly router = inject(Router);\n private readonly location = inject(Location);\n\n public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\n this.setStorage(localStorage);\n this.configure(authConfig);\n\n await this.loadDiscoveryDocument();\n await this.tryLogin();\n\n const tokenExpiredCallback = authConfig.tokenExpiredCallback?.bind(this) ?? this.initLoginFlow.bind(this);\n\n this.initAuthRefreshEvents(tokenExpiredCallback);\n\n await this.useCheckTokenFlow(tokenExpiredCallback);\n\n this.router.navigateByUrl(this.location.path(false).split('?')[0]);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { CuiAuthConfig } from '../providers';\nimport { CuiAuthBase } from './auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiMobileAuthService extends CuiAuthBase {\n public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\n this.setStorage(localStorage);\n this.configure(authConfig);\n\n if (!authConfig.tokenExpiredCallback) {\n return;\n }\n\n await this.loadDiscoveryDocument();\n await this.tryLogin();\n\n this.initAuthRefreshEvents(authConfig.tokenExpiredCallback.bind(this));\n\n await this.useCheckTokenFlow(authConfig.tokenExpiredCallback.bind(this));\n }\n}\n","import type { Provider } from '@angular/core';\nimport { APP_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';\nimport type { AuthConfig } from 'angular-oauth2-oidc';\nimport { provideOAuthClient } from 'angular-oauth2-oidc';\n\nimport { CuiBrowserAuthService } from '../services/browser-auth.service';\nimport { CuiMobileAuthService } from '../services/mobile-auth.service';\nimport type { CuiAuthConfig, CuiAuthProviderConfig } from './auth.options';\nimport { CuiAuthService } from './auth.options';\n\nexport function provideCuiAuth({ authConfig, moduleConfig, platform = 'browser' }: CuiAuthProviderConfig): Provider {\n return [\n provideOAuthClient(moduleConfig),\n {\n provide: CuiAuthService,\n useFactory: (): CuiMobileAuthService | CuiBrowserAuthService => {\n if (platform === 'mobile') {\n return inject(CuiMobileAuthService);\n }\n\n return inject(CuiBrowserAuthService);\n }\n },\n makeEnvironmentProviders([\n {\n provide: APP_INITIALIZER,\n useValue: (): Promise<void> => initAuth(authConfig),\n multi: true\n }\n ])\n ];\n}\n\nasync function initAuth(authConfig: CuiAuthConfig): Promise<void> {\n const authService = inject(CuiAuthService);\n\n return await authService.initAuth(authConfig);\n}\n","import type { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\n\nimport { CuiAuthService } from '../providers';\n\nexport const cuiAuthInterceptor: HttpInterceptorFn = (request, next) => {\n const authService = inject(CuiAuthService);\n\n if (!authService.hasValidAccessToken()) {\n return next(request);\n }\n\n const modifiedRequest = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + authService.getAccessToken()\n }\n });\n\n return next(modifiedRequest);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.CuiSvgComponent","i2.CuiButtonComponent","i2.CuiNotificationComponent","i2","GAP","i1.CuiTooltipDriver","i2.CuiTooltipHover","i3.CuiTooltipPosition","i1.CuiTooltipDirective","i3.CuiSvgComponent","i4.CuiButtonComponent","i1.CuiDialogsComponent","i2.CuiAlertsComponent","i3.CuiTooltips","i3.CuiButtonComponent","i1","i1.CuiSvgComponent","i4.CuiSvgComponent","InsertedComponent","i1.CuiBadgeComponent","i3","i1.CuiDialogHeaderComponent","i1.CuiContextMenuComponent","i3.CuiInputTextComponent","i4.CuiTextFieldIdDirective","i5.CuiTextFieldPlaceholderDirective","i3.CuiFormFieldComponent","i4.CuiHintComponent","i9.CuiLabelComponent","i10.CuiSvgComponent","i11","i1.CuiButtonComponent","i3.CuiHintComponent"],"mappings":"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"}
|