@cuby-ui/core 0.0.320 → 0.0.322

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.
Files changed (361) hide show
  1. package/README.md +24 -24
  2. package/components/button/button.component.d.ts +2 -2
  3. package/components/notification/notification.component.d.ts +2 -2
  4. package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
  5. package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
  6. package/directives/tooltip/tooltip.component.d.ts +1 -1
  7. package/esm2022/animations/animations.mjs +1 -1
  8. package/esm2022/classes/accessors.mjs +1 -1
  9. package/esm2022/classes/driver.mjs +1 -1
  10. package/esm2022/classes/index.mjs +1 -1
  11. package/esm2022/classes/vehicle.mjs +1 -1
  12. package/esm2022/components/accordion/accordion-item/accordion-item.component.mjs +3 -3
  13. package/esm2022/components/accordion/accordion-item/accordion-item.options.mjs +1 -1
  14. package/esm2022/components/accordion/accordion.component.mjs +3 -3
  15. package/esm2022/components/accordion/accordion.directive.mjs +1 -1
  16. package/esm2022/components/accordion/accordion.module.mjs +1 -1
  17. package/esm2022/components/accordion/index.mjs +1 -1
  18. package/esm2022/components/alert/alert.component.mjs +3 -3
  19. package/esm2022/components/alert/alert.interfaces.mjs +1 -1
  20. package/esm2022/components/alert/alert.module.mjs +1 -1
  21. package/esm2022/components/alert/alert.service.mjs +1 -1
  22. package/esm2022/components/alert/alert.tokens.mjs +1 -1
  23. package/esm2022/components/alert/alert.types.mjs +1 -1
  24. package/esm2022/components/alert/alerts.component.mjs +3 -3
  25. package/esm2022/components/alert/index.mjs +1 -1
  26. package/esm2022/components/badge/badge.component.mjs +3 -3
  27. package/esm2022/components/badge/badge.module.mjs +1 -1
  28. package/esm2022/components/badge/badge.options.mjs +1 -1
  29. package/esm2022/components/badge/index.mjs +1 -1
  30. package/esm2022/components/banner/banner.component.mjs +3 -3
  31. package/esm2022/components/banner/banner.module.mjs +1 -1
  32. package/esm2022/components/banner/banner.options.mjs +1 -1
  33. package/esm2022/components/banner/index.mjs +1 -1
  34. package/esm2022/components/breadcrumbs/breadcrumb/breadcrumb.component.mjs +3 -3
  35. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
  36. package/esm2022/components/breadcrumbs/breadcrumbs.module.mjs +1 -1
  37. package/esm2022/components/breadcrumbs/index.mjs +1 -1
  38. package/esm2022/components/button/button.component.mjs +3 -3
  39. package/esm2022/components/button/button.module.mjs +1 -1
  40. package/esm2022/components/button/button.options.mjs +1 -1
  41. package/esm2022/components/button/index.mjs +1 -1
  42. package/esm2022/components/button-group/button-group.component.mjs +3 -3
  43. package/esm2022/components/button-group/button-group.module.mjs +1 -1
  44. package/esm2022/components/button-group/index.mjs +1 -1
  45. package/esm2022/components/card-wrapper/card-wrapper.component.mjs +3 -3
  46. package/esm2022/components/card-wrapper/index.mjs +1 -1
  47. package/esm2022/components/checkbox/checkbox.component.mjs +1 -1
  48. package/esm2022/components/checkbox/checkbox.module.mjs +1 -1
  49. package/esm2022/components/checkbox/index.mjs +1 -1
  50. package/esm2022/components/content-wrapper/content-wrapper.component.mjs +3 -3
  51. package/esm2022/components/content-wrapper/index.mjs +1 -1
  52. package/esm2022/components/context-menu/context-menu.component.mjs +3 -3
  53. package/esm2022/components/context-menu/context-menu.module.mjs +1 -1
  54. package/esm2022/components/context-menu/index.mjs +1 -1
  55. package/esm2022/components/dialog/dialog-actions/dialog-actions.component.mjs +3 -3
  56. package/esm2022/components/dialog/dialog-header/dialog-header.component.mjs +3 -3
  57. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  58. package/esm2022/components/dialog/dialog.interfaces.mjs +1 -1
  59. package/esm2022/components/dialog/dialog.module.mjs +1 -1
  60. package/esm2022/components/dialog/dialog.service.mjs +1 -1
  61. package/esm2022/components/dialog/dialog.tokens.mjs +1 -1
  62. package/esm2022/components/dialog/dialogs.component.mjs +3 -3
  63. package/esm2022/components/dialog/index.mjs +1 -1
  64. package/esm2022/components/dropdown/dropdown.interfaces.mjs +1 -1
  65. package/esm2022/components/dropdown/index.mjs +1 -1
  66. package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
  67. package/esm2022/components/empty-state/index.mjs +1 -1
  68. package/esm2022/components/form-field/form-field.component.mjs +3 -3
  69. package/esm2022/components/form-field/form-field.module.mjs +1 -1
  70. package/esm2022/components/form-field/index.mjs +1 -1
  71. package/esm2022/components/ghost-input/ghost-input.component.mjs +1 -1
  72. package/esm2022/components/ghost-input/index.mjs +1 -1
  73. package/esm2022/components/hint/hint.component.mjs +3 -3
  74. package/esm2022/components/hint/hint.module.mjs +1 -1
  75. package/esm2022/components/hint/index.mjs +1 -1
  76. package/esm2022/components/icon-button/icon-button.component.mjs +3 -3
  77. package/esm2022/components/icon-button/icon-button.module.mjs +1 -1
  78. package/esm2022/components/icon-button/index.mjs +1 -1
  79. package/esm2022/components/index.mjs +1 -1
  80. package/esm2022/components/input-number/index.mjs +1 -1
  81. package/esm2022/components/input-number/input-number.component.mjs +3 -3
  82. package/esm2022/components/input-number/input-number.module.mjs +1 -1
  83. package/esm2022/components/input-password/index.mjs +1 -1
  84. package/esm2022/components/input-password/input-password.component.mjs +3 -3
  85. package/esm2022/components/input-password/input-password.module.mjs +1 -1
  86. package/esm2022/components/input-text/index.mjs +1 -1
  87. package/esm2022/components/input-text/input-text.component.mjs +3 -3
  88. package/esm2022/components/input-text/input-text.module.mjs +1 -1
  89. package/esm2022/components/input-time/index.mjs +1 -1
  90. package/esm2022/components/input-time/input-time.component.mjs +3 -3
  91. package/esm2022/components/input-time/input-time.module.mjs +1 -1
  92. package/esm2022/components/input-time/input-time.options.mjs +1 -1
  93. package/esm2022/components/label/index.mjs +1 -1
  94. package/esm2022/components/label/label.component.mjs +3 -3
  95. package/esm2022/components/label/label.module.mjs +1 -1
  96. package/esm2022/components/layout/index.mjs +1 -1
  97. package/esm2022/components/layout/layout.component.mjs +3 -3
  98. package/esm2022/components/letter-box/index.mjs +1 -1
  99. package/esm2022/components/letter-box/letter-box.component.mjs +3 -3
  100. package/esm2022/components/letter-box/letter-box.interfaces.mjs +1 -1
  101. package/esm2022/components/notification/index.mjs +1 -1
  102. package/esm2022/components/notification/notification.component.mjs +3 -3
  103. package/esm2022/components/notification/notification.module.mjs +1 -1
  104. package/esm2022/components/notification/notification.options.mjs +1 -1
  105. package/esm2022/components/radio/index.mjs +1 -1
  106. package/esm2022/components/radio/radio.component.mjs +1 -1
  107. package/esm2022/components/radio/radio.module.mjs +1 -1
  108. package/esm2022/components/render-dynamic-components/index.mjs +1 -1
  109. package/esm2022/components/render-dynamic-components/render-dynamic-components.component.mjs +3 -3
  110. package/esm2022/components/render-dynamic-components/render-dynamic-components.options.mjs +1 -1
  111. package/esm2022/components/render-dynamic-components/render-dynamic-components.service.mjs +1 -1
  112. package/esm2022/components/root/index.mjs +1 -1
  113. package/esm2022/components/root/root.component.mjs +3 -3
  114. package/esm2022/components/root/root.module.mjs +1 -1
  115. package/esm2022/components/select/index.mjs +1 -1
  116. package/esm2022/components/select/select.component.mjs +3 -3
  117. package/esm2022/components/select/select.module.mjs +1 -1
  118. package/esm2022/components/sidebar/index.mjs +1 -1
  119. package/esm2022/components/sidebar/sidebar-container/index.mjs +1 -1
  120. package/esm2022/components/sidebar/sidebar-container/sidebar-container.component.mjs +3 -3
  121. package/esm2022/components/sidebar/sidebar-header/index.mjs +1 -1
  122. package/esm2022/components/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  123. package/esm2022/components/sidebar/sidebar-navigation/index.mjs +1 -1
  124. package/esm2022/components/sidebar/sidebar-navigation/sidebar-navigation.component.mjs +3 -3
  125. package/esm2022/components/sidebar/sidebar-navigation-container/index.mjs +1 -1
  126. package/esm2022/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.mjs +3 -3
  127. package/esm2022/components/sidebar/sidebar-navigation-item/index.mjs +1 -1
  128. package/esm2022/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.mjs +3 -3
  129. package/esm2022/components/sidebar/sidebar.options.mjs +1 -1
  130. package/esm2022/components/sidebar/sidebar.service.mjs +1 -1
  131. package/esm2022/components/svg/index.mjs +1 -1
  132. package/esm2022/components/svg/svg.component.mjs +3 -3
  133. package/esm2022/components/svg/svg.module.mjs +1 -1
  134. package/esm2022/components/tabs/index.mjs +1 -1
  135. package/esm2022/components/tabs/tab/tab.component.mjs +3 -3
  136. package/esm2022/components/tabs/tabs.component.mjs +3 -3
  137. package/esm2022/components/tabs/tabs.module.mjs +1 -1
  138. package/esm2022/components/textarea/index.mjs +1 -1
  139. package/esm2022/components/textarea/textarea.component.mjs +1 -1
  140. package/esm2022/components/textarea/textarea.module.mjs +1 -1
  141. package/esm2022/components/toggle/index.mjs +1 -1
  142. package/esm2022/components/toggle/toggle.component.mjs +1 -1
  143. package/esm2022/components/toggle/toggle.module.mjs +1 -1
  144. package/esm2022/directives/index.mjs +1 -1
  145. package/esm2022/directives/text-field-controller/index.mjs +1 -1
  146. package/esm2022/directives/text-field-controller/text-field-controller.module.mjs +1 -1
  147. package/esm2022/directives/text-field-controller/text-field-controller.provider.mjs +1 -1
  148. package/esm2022/directives/text-field-controller/text-field-icon-left.directive.mjs +1 -1
  149. package/esm2022/directives/text-field-controller/text-field-id.directive.mjs +1 -1
  150. package/esm2022/directives/text-field-controller/text-field-is-error.directive.mjs +1 -1
  151. package/esm2022/directives/text-field-controller/text-field-placeholder.directive.mjs +1 -1
  152. package/esm2022/directives/text-field-controller/text-field-size.directive.mjs +1 -1
  153. package/esm2022/directives/text-field-controller/text-field.controller.mjs +1 -1
  154. package/esm2022/directives/tooltip/index.mjs +1 -1
  155. package/esm2022/directives/tooltip/tooltip-describe.directive.mjs +1 -1
  156. package/esm2022/directives/tooltip/tooltip-driver.directive.mjs +1 -1
  157. package/esm2022/directives/tooltip/tooltip-host.directive.mjs +1 -1
  158. package/esm2022/directives/tooltip/tooltip-hover.directive.mjs +1 -1
  159. package/esm2022/directives/tooltip/tooltip-manual.directive.mjs +1 -1
  160. package/esm2022/directives/tooltip/tooltip-options.directive.mjs +1 -1
  161. package/esm2022/directives/tooltip/tooltip-overflow.directive.mjs +1 -1
  162. package/esm2022/directives/tooltip/tooltip-pointer.directive.mjs +1 -1
  163. package/esm2022/directives/tooltip/tooltip-position.directive.mjs +1 -1
  164. package/esm2022/directives/tooltip/tooltip-unstyled.component.mjs +1 -1
  165. package/esm2022/directives/tooltip/tooltip.component.mjs +13 -13
  166. package/esm2022/directives/tooltip/tooltip.directive.mjs +1 -1
  167. package/esm2022/directives/tooltip/tooltip.mjs +1 -1
  168. package/esm2022/directives/tooltip/tooltip.providers.mjs +1 -1
  169. package/esm2022/directives/tooltip/tooltip.service.mjs +1 -1
  170. package/esm2022/directives/tooltip/tooltips.component.mjs +3 -3
  171. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.component.mjs +3 -3
  172. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.options.mjs +1 -1
  173. package/esm2022/editor/components/marker-modal/marker-modal.component.mjs +3 -3
  174. package/esm2022/editor/components/marker-select/component/select-item/select-option.component.mjs +3 -3
  175. package/esm2022/editor/components/marker-select/marker-select.component.mjs +3 -3
  176. package/esm2022/editor/config/custom-elements.mjs +1 -1
  177. package/esm2022/editor/editor.component.mjs +3 -3
  178. package/esm2022/editor/interfaces/angular-element.mjs +1 -1
  179. package/esm2022/editor/interfaces/custom-element.mjs +1 -1
  180. package/esm2022/editor/tools/combined-text-block.tool.mjs +1 -1
  181. package/esm2022/editor/tools/role-marker.tool.mjs +3 -3
  182. package/esm2022/editor/tools/tool-marker.tool.mjs +1 -1
  183. package/esm2022/editor/utils/copy-text-to-clipboard.mjs +1 -1
  184. package/esm2022/editor/utils/url.validator.mjs +1 -1
  185. package/esm2022/editor/widgets/editor-block/editor-block.component.mjs +3 -3
  186. package/esm2022/editor/widgets/editor-modal/editor-modal.component.mjs +3 -3
  187. package/esm2022/editor/widgets/editor-modal/index.mjs +1 -1
  188. package/esm2022/editor/widgets/editor-readonly/editor-readonly.options.mjs +1 -1
  189. package/esm2022/editor/widgets/index.mjs +1 -1
  190. package/esm2022/index.mjs +1 -1
  191. package/esm2022/interceptors/auth.interceptor.mjs +1 -1
  192. package/esm2022/interceptors/error-handler.interceptor.mjs +1 -1
  193. package/esm2022/interceptors/x-ndjson.interceptor.mjs +1 -1
  194. package/esm2022/interfaces/context-menu-item.mjs +1 -1
  195. package/esm2022/interfaces/image.mjs +2 -0
  196. package/esm2022/interfaces/index.mjs +2 -1
  197. package/esm2022/interfaces/option.mjs +1 -1
  198. package/esm2022/providers/auth.options.mjs +1 -1
  199. package/esm2022/providers/auth.provider.mjs +1 -1
  200. package/esm2022/providers/index.mjs +1 -1
  201. package/esm2022/services/auth.service.mjs +1 -1
  202. package/esm2022/services/browser-auth.service.mjs +1 -1
  203. package/esm2022/services/index.mjs +1 -1
  204. package/esm2022/services/loader.options.mjs +1 -1
  205. package/esm2022/services/mobile-auth.service.mjs +1 -1
  206. package/esm2022/services/position.service.mjs +1 -1
  207. package/esm2022/services/theme.options.mjs +1 -1
  208. package/esm2022/services/theme.service.mjs +1 -1
  209. package/esm2022/services/token.options.mjs +1 -1
  210. package/esm2022/services/token.service.mjs +1 -1
  211. package/esm2022/services/visual-viewport.service.mjs +1 -1
  212. package/esm2022/tokens/animations-speed.mjs +1 -1
  213. package/esm2022/tokens/index.mjs +1 -1
  214. package/esm2022/tokens/reduced-motion.mjs +1 -1
  215. package/esm2022/tokens/viewport.mjs +1 -1
  216. package/esm2022/types/appearance.mjs +1 -1
  217. package/esm2022/types/hint-type.mjs +1 -1
  218. package/esm2022/types/index.mjs +1 -1
  219. package/esm2022/types/point.mjs +1 -1
  220. package/esm2022/types/portal-item.mjs +1 -1
  221. package/esm2022/types/position.mjs +1 -1
  222. package/esm2022/types/resizing.mjs +1 -1
  223. package/esm2022/types/shape.mjs +1 -1
  224. package/esm2022/types/size.mjs +1 -1
  225. package/esm2022/types/status.mjs +1 -1
  226. package/esm2022/utils/default-validators/create-default-validators.mjs +1 -1
  227. package/esm2022/utils/default-validators/create-default-validators.options.mjs +1 -1
  228. package/esm2022/utils/default-validators/extra-spaces.options.mjs +1 -1
  229. package/esm2022/utils/default-validators/extra-spaces.validators.mjs +1 -1
  230. package/esm2022/utils/default-validators/index.mjs +1 -1
  231. package/esm2022/utils/format/index.mjs +1 -1
  232. package/esm2022/utils/format/remove-spaces.mjs +1 -1
  233. package/esm2022/utils/format/replace.mjs +1 -1
  234. package/esm2022/utils/index.mjs +1 -1
  235. package/esm2022/utils/miscellaneous/index.mjs +1 -1
  236. package/esm2022/utils/miscellaneous/is-obscured.mjs +1 -1
  237. package/esm2022/utils/miscellaneous/override-options.mjs +1 -1
  238. package/esm2022/utils/miscellaneous/to-animation-options.mjs +1 -1
  239. package/esm2022/widgets/categories/components/categories-list/categories-list.component.mjs +3 -3
  240. package/esm2022/widgets/categories/components/category-form/category-form.component.mjs +3 -3
  241. package/esm2022/widgets/categories/components/category-item/category-item.component.mjs +3 -3
  242. package/esm2022/widgets/categories/components/create-category-item/create-category-item.component.mjs +3 -3
  243. package/esm2022/widgets/checklist-block/checklist-block.component.mjs +3 -3
  244. package/esm2022/widgets/checklist-block/checklist-block.options.mjs +1 -1
  245. package/esm2022/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.mjs +3 -3
  246. package/esm2022/widgets/checklist-block/components/checklist-block-list/index.mjs +1 -1
  247. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.mjs +3 -3
  248. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-card/index.mjs +1 -1
  249. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.mjs +3 -3
  250. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/index.mjs +1 -1
  251. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.mjs +3 -3
  252. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/index.mjs +1 -1
  253. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.mjs +3 -3
  254. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.mjs +1 -1
  255. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-container/index.mjs +1 -1
  256. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.mjs +3 -3
  257. package/esm2022/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.mjs +3 -3
  258. package/esm2022/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.mjs +3 -3
  259. package/esm2022/widgets/checklist-block/components/index.mjs +1 -1
  260. package/esm2022/widgets/checklist-block/index.mjs +1 -1
  261. package/esm2022/widgets/checklist-block/services/checklist-block.service.mjs +1 -1
  262. package/esm2022/widgets/checklist-block/services/index.mjs +1 -1
  263. package/esm2022/widgets/criterion-info/criterion-info.component.mjs +137 -0
  264. package/esm2022/widgets/criterion-info/index.mjs +2 -0
  265. package/esm2022/widgets/criterion-info-form/criterion-info-form.component.mjs +147 -0
  266. package/esm2022/widgets/criterion-info-form/criterion-info-form.options.mjs +2 -0
  267. package/esm2022/widgets/criterion-info-form/index.mjs +2 -0
  268. package/esm2022/widgets/criterion-readonly-info/criterion-readonly-info.component.mjs +72 -0
  269. package/esm2022/widgets/criterion-readonly-info/index.mjs +2 -0
  270. package/esm2022/widgets/general-control-error-hint/general-control-error-hint.component.mjs +3 -3
  271. package/esm2022/widgets/general-control-error-hint/index.mjs +1 -1
  272. package/esm2022/widgets/index.mjs +2 -2
  273. package/esm2022/widgets/instruction-info/index.mjs +2 -0
  274. package/esm2022/widgets/instruction-info/instruction-info.component.mjs +147 -0
  275. package/esm2022/widgets/instruction-info-form/index.mjs +2 -0
  276. package/esm2022/widgets/instruction-info-form/instruction-info-form.component.mjs +153 -0
  277. package/esm2022/widgets/instruction-info-form/instruction-info-form.options.mjs +2 -0
  278. package/esm2022/widgets/instruction-readonly-info/index.mjs +2 -0
  279. package/esm2022/widgets/instruction-readonly-info/instruction-readonly-info.component.mjs +72 -0
  280. package/esm2022/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.mjs +40 -0
  281. package/esm2022/widgets/utility-modal/components/criterion-modal-create/index.mjs +2 -0
  282. package/esm2022/widgets/utility-modal/components/index.mjs +5 -0
  283. package/esm2022/widgets/utility-modal/components/instruction-modal-create/index.mjs +2 -0
  284. package/esm2022/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.mjs +40 -0
  285. package/esm2022/widgets/utility-modal/components/readonly-criterion-modal/index.mjs +2 -0
  286. package/esm2022/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.mjs +40 -0
  287. package/esm2022/widgets/utility-modal/components/readonly-instruction-modal/index.mjs +2 -0
  288. package/esm2022/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.mjs +40 -0
  289. package/esm2022/widgets/utility-modal/components/readonly-utility-modal/index.mjs +2 -0
  290. package/esm2022/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.mjs +42 -0
  291. package/esm2022/widgets/utility-modal/components/utility-modal-create/index.mjs +2 -0
  292. package/esm2022/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.mjs +55 -0
  293. package/esm2022/widgets/utility-modal/index.mjs +4 -0
  294. package/esm2022/widgets/utility-modal/utility-modal.component.mjs +22 -0
  295. package/esm2022/widgets/utility-modal/utility-modal.options.mjs +3 -0
  296. package/esm2022/widgets/utility-readonly-thumbnail/index.mjs +2 -0
  297. package/esm2022/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.mjs +15 -0
  298. package/esm2022/widgets/utility-thumbnail/index.mjs +2 -0
  299. package/esm2022/widgets/utility-thumbnail/utility-thumbnail.component.mjs +94 -0
  300. package/fesm2022/cuby-ui-core.mjs +1120 -373
  301. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  302. package/fonts/Inter-Bold.svg +25443 -25443
  303. package/fonts/Inter-Medium.svg +25400 -25400
  304. package/fonts/Inter-Regular.svg +24341 -24341
  305. package/fonts/Inter-SemiBold.svg +25459 -25459
  306. package/interfaces/image.d.ts +5 -0
  307. package/interfaces/index.d.ts +1 -0
  308. package/package.json +4 -4
  309. package/providers/auth.options.d.ts +1 -1
  310. package/styles/fonts.scss +51 -51
  311. package/styles/global.scss +10 -10
  312. package/styles/mixins/buttons.scss +13 -13
  313. package/styles/mixins/flex.scss +21 -21
  314. package/styles/mixins/headings.scss +115 -115
  315. package/styles/mixins/inputs.scss +91 -91
  316. package/styles/mixins/lists.scss +42 -42
  317. package/styles/mixins/paddings.scss +35 -35
  318. package/styles/mixins/shadows.scss +38 -38
  319. package/styles/mixins/texts.scss +225 -225
  320. package/styles/theme.scss +420 -412
  321. package/styles/variables/colors.scss +281 -277
  322. package/widgets/categories/components/category-item/category-item.component.d.ts +3 -3
  323. package/widgets/criterion-info/criterion-info.component.d.ts +43 -0
  324. package/widgets/criterion-info/index.d.ts +1 -0
  325. package/widgets/criterion-info-form/criterion-info-form.component.d.ts +39 -0
  326. package/widgets/criterion-info-form/criterion-info-form.options.d.ts +7 -0
  327. package/widgets/criterion-info-form/index.d.ts +2 -0
  328. package/widgets/criterion-readonly-info/criterion-readonly-info.component.d.ts +26 -0
  329. package/widgets/criterion-readonly-info/index.d.ts +1 -0
  330. package/widgets/index.d.ts +1 -1
  331. package/widgets/instruction-info/index.d.ts +1 -0
  332. package/widgets/instruction-info/instruction-info.component.d.ts +45 -0
  333. package/widgets/instruction-info-form/index.d.ts +2 -0
  334. package/widgets/{utility-info/utility-info.component.d.ts → instruction-info-form/instruction-info-form.component.d.ts} +12 -23
  335. package/widgets/{utility-info/utility-info.options.d.ts → instruction-info-form/instruction-info-form.options.d.ts} +3 -3
  336. package/widgets/instruction-readonly-info/index.d.ts +1 -0
  337. package/widgets/instruction-readonly-info/instruction-readonly-info.component.d.ts +26 -0
  338. package/widgets/utility-modal/components/criterion-modal-create/criterion-modal-create.component.d.ts +18 -0
  339. package/widgets/utility-modal/components/criterion-modal-create/index.d.ts +1 -0
  340. package/widgets/utility-modal/components/index.d.ts +4 -0
  341. package/widgets/utility-modal/components/instruction-modal-create/index.d.ts +1 -0
  342. package/widgets/utility-modal/components/instruction-modal-create/instruction-modal-create.component.d.ts +18 -0
  343. package/widgets/utility-modal/components/readonly-criterion-modal/index.d.ts +1 -0
  344. package/widgets/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.d.ts +16 -0
  345. package/widgets/utility-modal/components/readonly-instruction-modal/index.d.ts +1 -0
  346. package/widgets/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.d.ts +16 -0
  347. package/widgets/utility-modal/components/readonly-utility-modal/index.d.ts +1 -0
  348. package/widgets/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.d.ts +18 -0
  349. package/widgets/utility-modal/components/utility-modal-create/index.d.ts +1 -0
  350. package/widgets/utility-modal/components/utility-modal-create/utility-modal-create.component.d.ts +25 -0
  351. package/widgets/utility-modal/index.d.ts +3 -0
  352. package/widgets/utility-modal/utility-modal.component.d.ts +10 -0
  353. package/widgets/utility-modal/utility-modal.options.d.ts +12 -0
  354. package/widgets/utility-readonly-thumbnail/index.d.ts +1 -0
  355. package/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.component.d.ts +8 -0
  356. package/widgets/utility-thumbnail/index.d.ts +1 -0
  357. package/widgets/utility-thumbnail/utility-thumbnail.component.d.ts +21 -0
  358. package/esm2022/widgets/utility-info/index.mjs +0 -2
  359. package/esm2022/widgets/utility-info/utility-info.component.mjs +0 -249
  360. package/esm2022/widgets/utility-info/utility-info.options.mjs +0 -2
  361. package/widgets/utility-info/index.d.ts +0 -2
@@ -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/directives/tooltip/tooltip.providers.ts","../../../projects/core/directives/tooltip/tooltip-driver.directive.ts","../../../projects/core/directives/tooltip/tooltip-options.directive.ts","../../../projects/core/directives/tooltip/tooltip-hover.directive.ts","../../../projects/core/directives/tooltip/tooltip-position.directive.ts","../../../projects/core/directives/tooltip/tooltip.directive.ts","../../../projects/core/directives/tooltip/tooltip-pointer.directive.ts","../../../projects/core/directives/tooltip/tooltip-unstyled.component.ts","../../../projects/core/directives/tooltip/tooltip.component.ts","../../../projects/core/directives/tooltip/tooltip-describe.directive.ts","../../../projects/core/directives/tooltip/tooltip-host.directive.ts","../../../projects/core/directives/tooltip/tooltip-manual.directive.ts","../../../projects/core/directives/tooltip/tooltip-overflow.directive.ts","../../../projects/core/directives/tooltip/tooltip.ts","../../../projects/core/components/root/root.module.ts","../../../projects/core/components/context-menu/context-menu.component.ts","../../../projects/core/components/context-menu/context-menu.component.html","../../../projects/core/components/context-menu/context-menu.module.ts","../../../projects/core/components/dropdown/dropdown.directive.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.html","../../../projects/core/components/form-field/form-field.component.ts","../../../projects/core/components/form-field/form-field.template.html","../../../projects/core/components/form-field/form-field.module.ts","../../../projects/core/components/hint/hint.component.ts","../../../projects/core/components/hint/hint.template.html","../../../projects/core/components/hint/hint.module.ts","../../../projects/core/components/icon-button/icon-button.component.ts","../../../projects/core/components/icon-button/icon-button.template.html","../../../projects/core/components/icon-button/icon-button.module.ts","../../../projects/core/directives/text-field-controller/text-field.controller.ts","../../../projects/core/directives/text-field-controller/text-field-icon-left.directive.ts","../../../projects/core/directives/text-field-controller/text-field-id.directive.ts","../../../projects/core/directives/text-field-controller/text-field-is-error.directive.ts","../../../projects/core/directives/text-field-controller/text-field-placeholder.directive.ts","../../../projects/core/directives/text-field-controller/text-field-size.directive.ts","../../../projects/core/directives/text-field-controller/text-field-controller.module.ts","../../../projects/core/directives/text-field-controller/text-field-controller.provider.ts","../../../projects/core/components/input-number/input-number.component.ts","../../../projects/core/components/input-number/input-number.template.html","../../../projects/core/components/input-number/input-number.module.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.html","../../../projects/core/components/ghost-input/ghost-input.component.ts","../../../projects/core/components/input-password/input-password.component.ts","../../../projects/core/components/input-password/input-password.template.html","../../../projects/core/components/input-password/input-password.module.ts","../../../projects/core/components/input-text/input-text.component.ts","../../../projects/core/components/input-text/input-text.template.html","../../../projects/core/components/input-text/input-text.module.ts","../../../projects/core/components/input-time/input-time.options.ts","../../../projects/core/components/input-time/input-time.component.ts","../../../projects/core/components/input-time/input-time.template.html","../../../projects/core/components/input-time/input-time.module.ts","../../../projects/core/components/label/label.component.ts","../../../projects/core/components/label/label.template.html","../../../projects/core/components/label/label.module.ts","../../../projects/core/components/letter-box/letter-box.component.ts","../../../projects/core/components/letter-box/letter-box.component.html","../../../projects/core/components/radio/radio.component.ts","../../../projects/core/components/radio/radio.module.ts","../../../projects/core/components/select/select.component.ts","../../../projects/core/components/select/select.template.html","../../../projects/core/components/select/select.module.ts","../../../projects/core/components/empty-state/empty-state.component.ts","../../../projects/core/components/empty-state/empty-state.component.html","../../../projects/core/components/sidebar/sidebar.options.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.service.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.html","../../../projects/core/components/sidebar/sidebar.service.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.html","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.ts","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.html","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.ts","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.html","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.html","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.html","../../../projects/core/components/card-wrapper/card-wrapper.component.ts","../../../projects/core/components/card-wrapper/card-wrapper.component.html","../../../projects/core/components/layout/layout.component.ts","../../../projects/core/components/layout/layout.component.html","../../../projects/core/components/tabs/tab/tab.component.ts","../../../projects/core/components/tabs/tab/tab.template.html","../../../projects/core/components/tabs/tabs.component.ts","../../../projects/core/components/tabs/tabs.template.html","../../../projects/core/components/tabs/tabs.module.ts","../../../projects/core/components/textarea/textarea.component.ts","../../../projects/core/components/textarea/textarea.module.ts","../../../projects/core/components/toggle/toggle.component.ts","../../../projects/core/components/toggle/toggle.module.ts","../../../projects/core/editor/constants/editor.constants.ts","../../../projects/core/editor/tools/header.tool.ts","../../../projects/core/editor/tools/list.tool.ts","../../../projects/core/editor/tools/selection-base.tool.ts","../../../projects/core/editor/tools/bold.tool.ts","../../../projects/core/editor/tools/italic.tool.ts","../../../projects/core/editor/utils/url.validator.ts","../../../projects/core/editor/services/editor-service.options.ts","../../../projects/core/editor/utils/generate-id.ts","../../../projects/core/editor/services/jtext-api.service.ts","../../../projects/core/editor/services/editor.service.ts","../../../projects/core/editor/services/markers.service.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.html","../../../projects/core/editor/components/marker-select/marker-select.component.ts","../../../projects/core/editor/components/marker-select/marker-select.component.html","../../../projects/core/editor/components/marker-select/marker-select.options.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.html","../../../projects/core/editor/components/marker-modal/marker-modal.options.ts","../../../projects/core/editor/utils/create-link-modal.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.html","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.options.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.html","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.options.ts","../../../projects/core/editor/components/editor-tool/editor-tool.component.ts","../../../projects/core/editor/pipes/file-size.pipe.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.html","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.options.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.html","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.options.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.html","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.options.ts","../../../projects/core/editor/utils/create-tool-modal.ts","../../../projects/core/editor/utils/remove-element-tag-wrapper.ts","../../../projects/core/editor/utils/copy-text-to-clipboard.ts","../../../projects/core/editor/utils/create-tooltip.ts","../../../projects/core/editor/utils/file-uploader.ts","../../../projects/core/editor/utils/recalculate-indexes.ts","../../../projects/core/editor/utils/split-html.ts","../../../projects/core/editor/tools/image.tool.ts","../../../projects/core/editor/tools/video.tool.ts","../../../projects/core/editor/tools/attaches.tool.ts","../../../projects/core/editor/tools/marker.tool.ts","../../../projects/core/editor/tools/link-marker.tool.ts","../../../projects/core/editor/tools/custom-marker.tool.ts","../../../projects/core/editor/tools/role-marker.tool.ts","../../../projects/core/editor/tools/tool-marker.tool.ts","../../../projects/core/editor/tools/combined-text-block.tool.ts","../../../projects/core/editor/config/editor.config.ts","../../../projects/core/editor/config/custom-elements.ts","../../../projects/core/editor/config/editor.provider.ts","../../../projects/core/editor/events/editor-drag.event.ts","../../../projects/core/editor/events/editor-keyboard.event.ts","../../../projects/core/editor/events/editor-modal.event.ts","../../../projects/core/editor/events/editor-tooltip.event.ts","../../../projects/core/editor/events/set-editor-events.ts","../../../projects/core/editor/editor.component.ts","../../../projects/core/editor/editor.component.html","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.html","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.ts","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.html","../../../projects/core/editor/widgets/editor-block/editor-block.component.ts","../../../projects/core/editor/widgets/editor-block/editor-block.component.html","../../../projects/core/interceptors/x-ndjson.interceptor.ts","../../../projects/core/interceptors/loader.interceptor.ts","../../../projects/core/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/utility-info/utility-info.component.ts","../../../projects/core/widgets/utility-info/utility-info.component.html","../../../projects/core/widgets/checklist-block/services/checklist-block.service.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.html","../../../projects/core/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.ts","../../../projects/core/widgets/checklist-block/components/checklist-block-list/checklist-block-list.component.html","../../../projects/core/widgets/checklist-block/checklist-block.component.ts","../../../projects/core/widgets/checklist-block/checklist-block.component.html","../../../projects/core/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\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}\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 CuiShapeRounded,\n CuiSizeMd,\n CuiSizeSm,\n CuiSizeXs,\n CuiSizeXxs,\n CuiSizeXxxs\n} from '../../types';\n\nexport interface CuiButtonOptions {\n readonly appearance:\n | CuiAppearanceAction\n | CuiAppearanceSecondary\n | CuiAppearanceOutlined\n | CuiAppearanceOutlinedGray\n | CuiAppearanceGhost\n | CuiAppearanceFlat\n | CuiAppearanceVividSuccess\n | CuiAppearanceDestructive\n | CuiAppearanceLink\n | CuiAppearanceActionViolet\n | CuiAppearanceActionCyan\n readonly shape: CuiShapeRounded | null;\n readonly size:\n | CuiSizeXxxs\n | CuiSizeXxs\n | CuiSizeXs\n | CuiSizeSm\n | CuiSizeMd;\n}\n\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\n appearance: 'action',\n shape: null,\n size: 'sm'\n};\n\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\n factory: () => CUI_BUTTON_DEFAULT_OPTIONS\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n inject,\n Input\n} 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)\n ? CUI_ICONS[icon]\n : 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>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Input,\n ViewChild,\n OnInit\n} from '@angular/core';\nimport type { CuiIcon } from '@cuby-ui/icons';\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\n\nimport { CUI_BUTTON_OPTIONS, CuiButtonOptions } from './button.options';\n\n@Component({\n selector: 'button[cuiButton], a[cuiButton]',\n templateUrl: './button.template.html',\n styleUrls: ['./button.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\n private readonly window = inject(CUI_WINDOW);\n private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\n\n private readonly ICON_XS_SIZES = ['xxs', 'xxxs'];\n protected readonly AppearanceIconColors: Record<CuiButtonOptions['appearance'], string> = {\n action: '--c-action-icon-color',\n secondary: '--c-secondary-icon-color',\n outlined: '--c-outlined-icon-color',\n 'outlined-gray': '--c-outlined-gray-icon-color',\n ghost: '--c-ghost-icon-color',\n flat: '--c-flat-icon-color',\n destructive: '--c-destructive-icon-color',\n link: '--c-link-icon-color',\n 'action-violet': '--c-action-violet-icon-color',\n 'action-cyan': '--c-action-cyan-icon-color',\n 'vivid-success': '--c-vivid-success-icon-color'\n };\n\n protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\n protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonOptions['appearance'][] = [\n 'secondary',\n 'outlined',\n 'outlined-gray',\n 'ghost'\n ];\n\n protected _appearance = this.cuiButtonOptions.appearance;\n protected iconColor = this.getIconColor(this._appearance);\n protected _size = this.cuiButtonOptions.size;\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(): CuiButtonOptions['appearance'] {\n return this._appearance;\n }\n\n public set appearance(appearance: CuiButtonOptions['appearance']) {\n this._appearance = appearance;\n\n this.changeIconColor();\n }\n\n @Input()\n @HostBinding('attr.data-size')\n public get size(): CuiButtonOptions['size'] {\n return this._size;\n }\n\n public set size(size: CuiButtonOptions['size']) {\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 const customIconColor = this.window\n .getComputedStyle(this.element)\n .getPropertyValue(this.AppearanceIconColors[appearance]);\n\n if (customIconColor) {\n return customIconColor;\n }\n\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 ><ng-content></ng-content></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 *ngIf=\"isOpen\" class=\"c-content\">\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}\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: [\n CommonModule,\n CuiSvgModule\n ],\n declarations: [CuiButtonComponent],\n exports: [CuiButtonComponent]\n})\nexport class CuiButtonModule {\n}\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: [\n CommonModule,\n CuiSvgModule,\n CuiButtonModule\n ],\n declarations: [\n CuiAccordionComponent,\n CuiAccordionItemComponent\n ],\n exports: [\n CuiAccordionComponent,\n CuiAccordionItemComponent\n ]\n})\nexport class CuiAccordionModule {\n}\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}","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: [\n CommonModule,\n CuiSvgModule\n ],\n declarations: [CuiNotificationComponent],\n exports: [CuiNotificationComponent]\n})\nexport class CuiNotificationModule {\n}\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(\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([])\n);\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 () => ({\n ...CUI_ALERT_DEFAULT_OPTIONS,\n ...inject(CUI_NOTIFICATION_OPTIONS)\n })\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$\n .pipe(takeUntil(this.destroy$))\n .subscribe(dialogs => this.alertInjectors = dialogs.map(useValue => Injector.create({\n providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\n })));\n }\n}\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\n <div class=\"c-wrapper c-wrapper_position_center\">\n <ng-container *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'center'; let i = index; trackBy: trackByFn\">\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 *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'right'; let i = index; trackBy: trackByFn\">\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: [\n CommonModule,\n CuiFilterPipe,\n CuiNotificationModule,\n CuiLetDirective\n ],\n declarations: [\n CuiAlertComponent,\n CuiAlertsComponent\n ],\n exports: [\n CuiAlertComponent,\n CuiAlertComponent,\n CuiAlertsComponent\n ]\n})\nexport class CuiAlertModule {\n}\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}\n","import { cuiCreateToken } from '@cuby-ui/cdk';\n\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\n\nexport interface CuiBadgeOptions {\n readonly color: 'light-blue' | 'yellow' | 'green' | 'gray' | 'dark-gray' | 'red' | 'violet';\n readonly size: CuiSizeSm | CuiSizeMd;\n readonly isWithDot: boolean;\n}\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);","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 />","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}\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?.(\n (accessor) => accessor !== fallback && accessor.type === type,\n ) || fallback;\n}\n\nexport function cuiPositionAccessorFor(\n type: string,\n fallback: Type<CuiPositionAccessor>,\n): FactoryProvider {\n return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\n}\n\nexport function cuiRectAccessorFor(\n type: string,\n fallback: Type<CuiRectAccessor>,\n): FactoryProvider {\n return cuiProvideAccessor(CuiRectAccessor, type, fallback);\n}\n\nexport function cuiAsPositionAccessor(\n accessor: Type<CuiPositionAccessor>,\n): 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[] =\n 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(() =>\n this.accessor.getPosition(\n this.el.getBoundingClientRect(),\n this.el,\n ),\n ),\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);","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}","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\n return JSON.parse(atob(base64));\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 = 'employee_session';\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.getAccessTokenData();\n\n if (this.EXCHANGE_TOKEN_VALUE in tokenData) {\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\n public abstract initAuth(authConfig: AuthConfig): Promise<void>;\n\n public override createLoginUrl(state?: string, loginHint?: string, customRedirectUri?: string, noPrompt?: boolean, params?: object): 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\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: [\n CommonModule,\n CuiLetDirective,\n CuiSvgModule,\n CuiButtonModule\n ],\n declarations: [CuiBannerComponent],\n exports: [CuiBannerComponent]\n})\nexport class CuiBannerModule {\n}\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: [\n CommonModule,\n CuiSvgModule\n ],\n declarations: [\n CuiBreadcrumbsComponent,\n CuiBreadcrumbComponent\n ],\n exports: [\n CuiBreadcrumbsComponent,\n CuiBreadcrumbComponent\n ]\n})\nexport class CuiBreadcrumbsModule {\n}\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}\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}\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}\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}\n","export const CUI_ROOT_SELECTOR = 'cui-root';","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(\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([])\n);\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$\n .pipe(takeUntil(this.destroy$))\n .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(dialog.id, Injector.create({\n providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\n parent: dialog.injector\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 {\n animate,\n animateChild,\n query,\n stagger,\n style,\n transition,\n trigger,\n} 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', [\n style({overflow: 'clip'}),\n query(':scope > *', [animateChild()], {optional: true}),\n ]),\n transition(':leave', [query(':scope > *', [animateChild()], {optional: true})]),\n]);\n\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\n transition(\n ':enter',\n [style({height: 0}), animate(TRANSITION, style({height: '*'}))],\n DURATION,\n ),\n transition(\n ':leave',\n [style({height: '*'}), animate(TRANSITION, style({height: 0}))],\n DURATION,\n ),\n]);\n\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({height: 0}),\n stagger(STAGGER, [animate(TRANSITION, style({height: '*'}))]),\n ],\n {\n optional: true,\n },\n ),\n query(\n ':leave',\n [\n style({height: '*'}),\n stagger(STAGGER, [animate(TRANSITION, style({height: 0}))]),\n ],\n {\n optional: true,\n },\n ),\n ],\n DURATION,\n ),\n]);\n\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\n transition(\n ':enter',\n [style({width: 0}), animate(TRANSITION, style({width: '*'}))],\n DURATION,\n ),\n transition(\n ':leave',\n [style({width: '*'}), animate(TRANSITION, style({width: 0}))],\n DURATION,\n ),\n]);\n\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({width: 0}),\n stagger(STAGGER, [animate(TRANSITION, style({width: '*'}))]),\n ],\n {\n optional: true,\n },\n ),\n query(\n ':leave',\n [\n style({width: '*'}),\n stagger(STAGGER, [animate(TRANSITION, style({width: 0}))]),\n ],\n {\n optional: true,\n },\n ),\n ],\n DURATION,\n ),\n]);\n\nexport const cuiFadeIn = trigger('cuiFadeIn', [\n transition(\n ':enter',\n [style({opacity: 0}), animate(TRANSITION, style({opacity: 1}))],\n DURATION,\n ),\n transition(\n ':leave',\n [style({opacity: 1}), animate(TRANSITION, style({opacity: 0}))],\n DURATION,\n ),\n]);\n\nexport const cuiFadeInList = trigger('cuiFadeInList', [\n transition(\n '* => *',\n [\n query(\n ':enter',\n [\n style({opacity: 0}),\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 1}))]),\n ],\n {\n optional: true,\n },\n ),\n query(\n ':leave',\n [\n style({opacity: 1}),\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 0}))]),\n ],\n {\n optional: true,\n },\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(\n TRANSITION,\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\n ),\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(\n TRANSITION,\n style({transform: 'translateY({{start}}px)', opacity: 0}),\n ),\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(\n TRANSITION,\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\n ),\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 [\n style({transform: 'scale({{end}})'}),\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\n ],\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, [\n animate(TRANSITION, style({transform: 'scale({{end}})'})),\n ]),\n ],\n {optional: true},\n ),\n query(\n ':leave',\n [\n style({transform: 'scale({{end}})'}),\n stagger(STAGGER, [\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\n ]),\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, [\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\n ]),\n ],\n {optional: true},\n ),\n query(\n ':leave',\n [\n style({transform: 'translateX({{end}})'}),\n stagger(STAGGER, [\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\n ]),\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, [\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\n ]),\n ],\n {optional: true},\n ),\n query(\n ':leave',\n [\n style({transform: 'translateX({{end}})'}),\n stagger(STAGGER, [\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\n ]),\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, [\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\n ]),\n ],\n {optional: true},\n ),\n query(\n ':leave',\n [\n style({transform: 'translateY({{end}})'}),\n stagger(STAGGER, [\n animate(TRANSITION, style({transform: 'translateY({{start}})'})),\n ]),\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, [\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\n ]),\n ],\n {optional: true},\n ),\n query(\n ':leave',\n [\n style({transform: 'translateY({{end}})'}),\n stagger(STAGGER, [\n animate(TRANSITION, style({transform: 'translateY(-{{start}})'})),\n ]),\n ],\n {optional: true},\n ),\n ],\n {params: {end: 0, start: '100%', duration: 300}},\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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n} 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>\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$\n .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}\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 type { 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 {\n @Input()\n public heading!: PolymorpheusContent;\n\n @Input()\n public headingContext?: PolymorpheusContext<any>['$implicit'];\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: [\n CommonModule,\n PolymorpheusOutlet,\n CuiLetDirective,\n CuiButtonModule\n ],\n declarations: [\n CuiDialogComponent,\n CuiDialogsComponent,\n CuiDialogActionsComponent,\n CuiDialogHeaderComponent\n ],\n exports: [\n CuiDialogComponent,\n CuiDialogsComponent,\n CuiDialogActionsComponent,\n CuiDialogHeaderComponent\n ]\n})\nexport class CuiDialogModule {\n}\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}\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 () =>\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\n .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>(() =>\n inject(CUI_REDUCED_MOTION) ? 0 : 1,\n);\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","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>>(\n () => CuiTooltipComponent,\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: (\n options: Partial<CuiTooltipOptions>,\n) => FactoryProvider = (override: Partial<CuiTooltipOptions>) => ({\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 {\n delay,\n filter,\n map,\n merge,\n of,\n repeat,\n Subject,\n switchMap,\n takeUntil,\n tap,\n} 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\n ? of(visible)\n : 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(\n delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay),\n ),\n ),\n takeUntil(this.toggle$),\n repeat(),\n ),\n ).pipe(\n filter(() => this.enabled),\n map(\n (value) =>\n value &&\n (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el)),\n ),\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 {\n cuiFallbackAccessor,\n CuiPositionAccessor,\n CuiRectAccessor,\n} 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]> =\n 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)\n ? this.direction\n : [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] >\n this.viewport.getClientRect().bottom - this.points.bottom[TOP]\n ? 'top'\n : 'bottom';\n }\n\n private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\n const viewport = this.viewport.getClientRect();\n\n return (\n top > GAP &&\n left > GAP &&\n top + height < viewport.bottom - GAP &&\n left + width < viewport.right - GAP\n );\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>\n implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle\n{\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 {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n TemplateRef,\n} 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 {\n injectContext,\n PolymorpheusComponent,\n PolymorpheusOutlet,\n} 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<\n CuiContext<CuiPortalItem & {content: WritableSignal<PolymorpheusContent>}>\n >();\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 {\n cuiPositionAccessorFor,\n CuiRectAccessor,\n cuiRectAccessorFor,\n} 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('hint', forwardRef(() => CuiTooltipDirective)),\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\n ? signal('')\n : this.hint.content;\n\n protected readonly appearance =\n this.hint.appearance ||\n 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 (\n (!target.closest('cui-hint') && !this.hint.el.contains(target)) ||\n cuiIsObscured(this.hint.el)\n ) {\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(\n '--rotate',\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\n );\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, 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(\n cuiTypedFromEvent(this.doc, 'keyup'),\n cuiTypedFromEvent(this.element, 'blur'),\n ).pipe(map(() => this.focused)),\n ),\n debounce((visible) =>\n visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null),\n ),\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: [\n CommonModule,\n CuiDialogModule,\n CuiAlertModule,\n CuiTooltips\n ],\n declarations: [CuiRootComponent],\n exports: [CuiRootComponent]\n})\nexport class CuiRootModule {\n}\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 { CuiDestroyService, CuiClickOutsideDirective, CuiTargetDirective, CUI_WINDOW, cuiGetClosestFocusable } 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\n .pipe(takeUntil(this.destroy$))\n .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\n .pipe(takeUntil(this.destroy$))\n .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 class=\"c-container\" [style.width]=\"width\">\n <ul class=\"c-ul\" [class.c-ul_with-padding]=\"withPaddings\">\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: [\n CommonModule,\n CuiSvgModule\n ],\n declarations: [CuiContextMenuComponent],\n exports: [CuiContextMenuComponent]\n})\nexport class CuiContextMenuModule {\n}\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, signal, ViewContainerRef } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nimport type { ChangePositionYParams, CuiDropdownOrientation } from './dropdown.interfaces';\r\n\r\n@Directive({\r\n selector: '[cuiDropdown]',\r\n exportAs: 'cuiDropdown',\r\n standalone: true,\r\n})\r\nexport class CuiDropdownDirective implements OnInit, OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly target = inject(ElementRef).nativeElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n\r\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n private readonly CONTAINER_SELECTOR = 'cui-dropdowns';\r\n private readonly DROPDOWN_SELECTOR = 'cui-dropdown';\r\n\r\n private container!: Element;\r\n private element!: HTMLElement;\r\n private backdrop!: HTMLDivElement;\r\n\r\n @Input({ required: true, alias: 'cuiDropdown' })\r\n public content!: TemplateRef<unknown>;\r\n\r\n @Input()\r\n public orientation: CuiDropdownOrientation = 'left';\r\n\r\n @Output()\r\n public readonly isOpened = new EventEmitter<boolean>();\r\n\r\n private readonly isOpen = signal(false);\r\n private readonly targetToggleEventListener = (): void => {\r\n if (!this.isOpen()) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.close();\r\n };\r\n private elementResizeObserver!: ResizeObserver;\r\n\r\n constructor() {\r\n this.initTargetElementListener();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onResize(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n protected onClick(event: MouseEvent): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const elements = this.document.elementsFromPoint(event.clientX, event.clientY);\r\n const doesExist = elements.some((element) => this.element.contains(element));\r\n\r\n if (this.target.contains(target) || this.element.contains(target) || doesExist) {\r\n return;\r\n }\r\n\r\n this.close();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initContainer();\r\n this.initDropdown();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.close();\r\n this.destroyElementResizeObserver();\r\n }\r\n\r\n public open(): void {\r\n this.isOpen.set(true);\r\n this.container.append(this.backdrop, this.element);\r\n this.calculateDropdownPosition();\r\n this.isOpened.emit(true);\r\n }\r\n\r\n public close(): void {\r\n this.isOpen.set(false);\r\n this.element?.remove();\r\n this.backdrop?.remove();\r\n this.isOpened.emit(false);\r\n }\r\n\r\n private initContainer(): void {\r\n const root = this.document.querySelector('cui-dialogs');\r\n const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);\r\n\r\n if (container) {\r\n this.container = container;\r\n\r\n return;\r\n }\r\n\r\n this.container = this.document.createElement(this.CONTAINER_SELECTOR);\r\n\r\n root?.after(this.container);\r\n }\r\n\r\n private initDropdown(): void {\r\n const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;\r\n this.element = this.document.createElement(this.DROPDOWN_SELECTOR);\r\n this.backdrop = this.document.createElement('div');\r\n\r\n this.element.style.top = '0';\r\n this.element.style.position = 'absolute';\r\n this.backdrop.style.position = 'fixed';\r\n this.backdrop.style.inset = '0';\r\n this.element.append(...content);\r\n\r\n this.initResizeObserver();\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);\r\n }\r\n\r\n private initResizeObserver(): void {\r\n this.elementResizeObserver = new ResizeObserver(() => {\r\n this.changeDropdownYCoordinateIfNeeded();\r\n });\r\n\r\n this.elementResizeObserver.observe(this.element);\r\n }\r\n\r\n private destroyElementResizeObserver(): void {\r\n this.elementResizeObserver.disconnect();\r\n }\r\n\r\n private changeDropdownYCoordinateIfNeeded(): void {\r\n const distanceToBottom =\r\n this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;\r\n\r\n if (distanceToBottom >= 0) {\r\n return;\r\n }\r\n\r\n this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.element.style.visibility = 'hidden';\r\n\r\n setTimeout(() => {\r\n const targetRect = this.target.getBoundingClientRect();\r\n const container = this.findScrollableContainer(this.target);\r\n const containerRect = container.getBoundingClientRect();\r\n const { clientHeight, clientWidth } = this.document.documentElement;\r\n const visibleTop = Math.max(targetRect.top, containerRect.top);\r\n const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);\r\n const dropdownHeight = this.element.offsetHeight;\r\n\r\n const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;\r\n const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;\r\n const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');\r\n\r\n this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight });\r\n this.changePositionX(orientation, clientWidth, targetRect);\r\n\r\n this.element.style.visibility = 'visible';\r\n });\r\n }\r\n\r\n private changePositionX(orientation: string, clientWidth: number, targetRect: DOMRect): void {\r\n switch (orientation) {\r\n case 'right':\r\n this.element.style.left = 'auto';\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n case 'stretch':\r\n this.element.style.left = `${targetRect.left}px`;\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n default:\r\n this.element.style.right = 'auto';\r\n this.element.style.left = `${targetRect.left}px`;\r\n }\r\n }\r\n\r\n private changePositionY({\r\n shouldListOpenAbove,\r\n visibleTop,\r\n visibleBottom,\r\n dropdownHeight\r\n }: ChangePositionYParams): void {\r\n const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;\r\n\r\n if (shouldListOpenAbove) {\r\n this.element.style.top = `${this.window.scrollY + visibleTop - dropdownHeight - offset}px`;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = `${this.window.scrollY + visibleBottom + offset}px`;\r\n }\r\n\r\n private findScrollableContainer(element: HTMLElement): HTMLElement {\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n const { overflowY } = window.getComputedStyle(parent);\r\n\r\n if (overflowY === 'auto' || overflowY === 'scroll') {\r\n return parent;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return this.document.body;\r\n }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n selector: 'cui-dropdown-wrapper',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './dropdown-wrapper.component.html',\r\n styleUrls: ['./dropdown-wrapper.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDropdownWrapperComponent {\r\n @Input()\r\n public title?: string;\r\n\r\n @Input()\r\n public width?: string;\r\n}\r\n","<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\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}\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}\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}\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: [\n CommonModule,\n CuiSvgModule\n ],\n declarations: [CuiIconButtonComponent],\n exports: [CuiIconButtonComponent]\n})\nexport class CuiIconButtonModule {\n}\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(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}\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: (...controllers: [\n CuiTextFieldIconLeftDirective,\n CuiTextFieldIdDirective,\n CuiTextFieldIsErrorDirective,\n CuiTextFieldPlaceholderDirective,\n CuiTextFieldSizeDirective\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: [\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)\n ]\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\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: [\n CommonModule,\n FormsModule,\n MaskitoDirective,\n CuiSvgModule,\n ],\n declarations: [CuiInputNumberComponent],\n exports: [\n CuiInputNumberComponent,\n CuiTextFieldControllerModule\n ]\n})\nexport class CuiInputNumberModule {\n}\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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n inject\n} 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: [\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)\n ]\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: [\n CommonModule,\n FormsModule,\n CuiSvgModule\n ],\n declarations: [CuiInputPasswordComponent],\n exports: [\n CuiInputPasswordComponent,\n CuiTextFieldControllerModule\n ]\n})\nexport class CuiInputPasswordModule {\n}\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: [\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)\n ]\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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { CuiInputTextComponent } from './input-text.component';\nimport { CuiSvgModule } from '../svg';\nimport { CuiTextFieldControllerModule } from '../../directives';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n CuiSvgModule\n ],\n declarations: [CuiInputTextComponent],\n exports: [\n CuiInputTextComponent,\n CuiTextFieldControllerModule\n ]\n})\nexport class CuiInputModule {\n}\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});","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: [\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)\n ]\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>","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: [\n CommonModule,\n FormsModule,\n MaskitoDirective,\n CuiSvgModule\n ],\n declarations: [CuiInputTimeComponent],\n exports: [\n CuiInputTimeComponent,\n CuiTextFieldControllerModule\n ]\n})\nexport class CuiInputTimeModule {\n}\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}\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}\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}\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\n .pipe(takeUntil(this.destroy$))\n .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 = this.document.documentElement.clientHeight\n - (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 = window.scrollY + 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: [\n CommonModule,\n CuiSvgModule,\n CuiFocusTrapDirective\n ],\n declarations: [CuiSelectComponent],\n exports: [\n CuiSelectComponent,\n CuiTextFieldControllerModule\n ]\n})\nexport class CuiSelectModule {\n}\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}","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 [ngTemplateOutlet]=\"headerSlot()\" [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\" />\n<button type=\"button\" class=\"button\" [class.button_opened]=\"isOpened()\" (click)=\"onSwitch($event)\">\n <cui-svg [icon]=\"buttonIcon()\" color=\"var(--cui-base-500)\" />\n</button>","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 [ngTemplateOutlet]=\"slot()\" [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\" />\n }\n </ul>\n</nav>","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 [icon]=\"icon\" color=\"var(--cui-base-500)\" />\n}\n@if (isOpen()) {\n{{ text() }}\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 { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject } from '@angular/core';\n\nexport const CUI_TAB_ACTIVATE = 'cui-tab-activate';\n\n@Component({\n selector: 'button[cuiTab]',\n templateUrl: './tab.template.html',\n styleUrls: ['./tab.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiTabComponent {\n protected readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\n\n @HostListener('click')\n protected onClick(): void {\n this.element.dispatchEvent(new CustomEvent(CUI_TAB_ACTIVATE, { bubbles: true }));\n }\n}\n","<ng-content />\n","import type { AfterViewChecked } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output\n} from '@angular/core';\n\nimport { CUI_TAB_ACTIVATE } from './tab';\n\n@Component({\n selector: 'cui-tabs',\n templateUrl: './tabs.template.html',\n styleUrls: ['./tabs.style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CuiTabsComponent implements AfterViewChecked {\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n private readonly activeElementClass = '_active';\n\n protected get tabs(): readonly HTMLElement[] {\n return Array.from(this.element.querySelectorAll<HTMLElement>('[cuiTab]'));\n }\n\n public get activeElement(): HTMLElement | null {\n return this.tabs[this.activeItemIndex] || null;\n }\n\n public ngAfterViewChecked(): void {\n this.changeActiveItem();\n }\n\n @Input()\n public activeItemIndex = 0;\n\n @Output()\n public readonly activeItemIndexChange = new EventEmitter<number>();\n\n @HostListener(CUI_TAB_ACTIVATE, ['$event'])\n protected onActivate(event: CustomEvent): void {\n event.stopPropagation();\n\n const index = this.tabs.findIndex((tab) => tab === event.target);\n\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndexChange.emit(index);\n this.activeItemIndex = index;\n }\n\n private changeActiveItem(): void {\n this.tabs.forEach(nativeElement => {\n const active = nativeElement === this.activeElement;\n\n nativeElement.classList.toggle(this.activeElementClass, active);\n });\n }\n}\n","<ng-content select=\"[cuiTab]\" />\n","import { NgModule } from '@angular/core';\n\nimport { CuiTabsComponent } from './tabs.component';\nimport { CuiTabComponent } from './tab';\n\n@NgModule({\n imports: [],\n declarations: [CuiTabsComponent, CuiTabComponent],\n exports: [CuiTabsComponent, CuiTabComponent]\n})\nexport class CuiTabsModule {\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}\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}\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}\n","import { Translation } from '@jsverse/transloco';\r\n\r\nimport type { CuiEditorConfig } from '../interfaces';\r\n\r\nexport const COMBINED_TEXT_BLOCK_PART = 'combined-text-block-part';\r\nexport const COMBINED_TEXT_BLOCK = 'combined-text-block';\r\nexport const COMBINED_TEXT_BLOCK_NAME = 'paragraph';\r\nexport const COMBINED_TEXT_BLOCK_ADDED = 'combinedTextBlockAdded';\r\nexport const COMBINED_TEXT_BLOCK_UPDATED = 'combinedTextBlockUpdated';\r\nexport const COMBINED_TEXT_BLOCK_REMOVED = 'combinedTextBlockRemoved';\r\n\r\nexport const SPLIT_MAX_LENGTH = 1000;\r\nexport const SPLIT_LENGTH = 500;\r\n\r\nexport const EDITOR_SELECTOR = '[data-editor]';\r\nexport const DEFAULT_PLACEHOLDER = \"Type text or '/' for commands...\";\r\nexport const DEFAULT_READONLY_PLACEHOLDER = \"No 'Description' was provided\";\r\nexport const DEFAULT_CONFIG: CuiEditorConfig = {\r\n tools: {},\r\n readOnly: false,\r\n autofocus: false\r\n};\r\n\r\nexport const CuiEditorTranslations: Record<string, Promise<Translation>> = {\r\n en: import('../i18n/en.json'),\r\n} as const;\r\n","import type { BlockToolData } from '@editorjs/editorjs';\r\nimport Header from '@editorjs/header';\r\n\r\nexport class CuiHeaderTool extends Header {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override validate(): boolean {\r\n return true;\r\n }\r\n\r\n public override render(): HTMLHeadingElement {\r\n return super.render();\r\n }\r\n\r\n public override save(block: HTMLHeadingElement): BlockToolData {\r\n return super.save(block);\r\n }\r\n}\r\n","import List from '@editorjs/list';\r\n\r\nexport class CuiListTool extends List {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLElement {\r\n return super.render() as HTMLElement;\r\n }\r\n}\r\n","import type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport type { CuiParent } from '../interfaces/parent';\r\n\r\nexport class CuiSelectionBase {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n private readonly SELECTED_TEXT_CLASS = '_selected';\r\n\r\n public TAG = 'B';\r\n public COMMAND = 'bold';\r\n\r\n protected readonly api!: API;\r\n protected button!: HTMLButtonElement;\r\n protected _state = false;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n this.addSelectionToDOM(range, startContainer, endContainer);\r\n }\r\n\r\n public unwrap(): void {\r\n document.execCommand(this.COMMAND);\r\n }\r\n\r\n public checkState(): boolean {\r\n this.state = document.queryCommandState(this.COMMAND);\r\n\r\n return this.state;\r\n }\r\n\r\n public surround(range: Range): void {\r\n if (this.state) {\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.wrap(range);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addSelectionToDOM(range: Range, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n this.addSelectionForOnlyChild(range);\r\n\r\n return;\r\n }\r\n\r\n this.addSelectionForChildren(startParent, endParent);\r\n }\r\n\r\n private addSelectionForOnlyChild(range: Range): void {\r\n const selectedText = range.extractContents();\r\n const selection = this.createElement();\r\n\r\n selection.appendChild(selectedText);\r\n range.insertNode(selection);\r\n }\r\n\r\n private addSelectionForChildren(startParent: Element, endParent: Element): void {\r\n const nodes = this.getSelectedNodesFromDOM(startParent, endParent);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.add(this.SELECTED_TEXT_CLASS));\r\n\r\n document.execCommand(this.COMMAND);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.remove(this.SELECTED_TEXT_CLASS));\r\n }\r\n\r\n private getSelectedNodesFromDOM(startParent: Element, endParent: Element): Element[] {\r\n const nodes = [startParent];\r\n let next = startParent.nextSibling;\r\n\r\n while (next && next !== endParent) {\r\n nodes.push(next as Element);\r\n\r\n next = next?.nextSibling || null;\r\n }\r\n\r\n nodes.push(endParent);\r\n\r\n return nodes;\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiBoldInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'bold';\r\n\r\n public static title = 'Bold';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n b: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--bold'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 10.0002V5.91683C7.5 5.8708 7.53731 5.8335 7.58333 5.8335H8.66667C9.58333 5.8335 11.6667 5.91683 11.6667 7.91683C11.6667 7.91683 11.6667 10.0002 9.16667 10.0002M7.5 10.0002V14.0002C7.5 14.0922 7.57462 14.1668 7.66667 14.1668H10.4167C11.6667 14.1668 12.5 13.3335 12.5 12.0835C12.5 9.754 9.16667 10.0002 9.16667 10.0002M7.5 10.0002H9.16667\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+B';\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiItalicInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'italic';\r\n\r\n public override readonly TAG = 'I';\r\n public static title = 'Italic';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n i: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--italic'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.118 8.3335C10.3532 10.6116 9.16797 14.1668 9.16797 14.1668\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n <path d=\"M11.8404 5.8335H11.832\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+I';\r\n }\r\n}\r\n","import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\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 { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport type { Block, JTextCreateBlockRequestBody, JTextCreateBlocksRequestBody } from './jtext-api.options';\r\nimport { CuiRequestOptions } from '../interfaces';\r\n\r\n@Injectable()\r\nexport class CuiJTextApiService {\r\n private readonly httpClient = inject(HttpClient);\r\n\r\n private readonly GET_BLOCK_DEFAULT_SIZE = 40;\r\n private readonly JTEXT_URL = 'framer/jtext';\r\n private readonly BLOCK_URL = 'block';\r\n private readonly BLOCKS_URL = 'blocks';\r\n private readonly JTEXT_BLOCK_URL = this.JTEXT_URL + '/' + this.BLOCK_URL;\r\n private readonly JTEXT_BLOCKS_URL = this.JTEXT_URL + '/' + this.BLOCKS_URL;\r\n\r\n private options: CuiRequestOptions = {};\r\n\r\n public addOptions(options?: CuiRequestOptions): void {\r\n this.options = options ?? {};\r\n }\r\n\r\n public createBlock(body: JTextCreateBlockRequestBody): Observable<string> {\r\n return this.httpClient.post<string>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public updateBlock(body: Block): Observable<Block> {\r\n return this.httpClient.patch<Block>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public getBlocks(fragmentId: string, page = 0, sizeBlock = this.GET_BLOCK_DEFAULT_SIZE): Observable<Block> {\r\n return this.httpClient.get(`${this.JTEXT_URL}/${fragmentId}`, {\r\n params: { page, sizeBlock },\r\n headers: { 'Content-Type': 'application/x-ndjson' },\r\n observe: 'events',\r\n ...this.options\r\n }) as unknown as Observable<Block>;\r\n }\r\n\r\n public createBlocks(body: JTextCreateBlocksRequestBody): Observable<string[]> {\r\n return this.httpClient.post<string[]>(this.JTEXT_BLOCKS_URL, body, this.options);\r\n }\r\n\r\n public deleteBlock(containerId: string, blockId: string): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCK_URL}/${blockId}`, this.options);\r\n }\r\n\r\n public deleteBlocks(containerId: string, blocksIds: string[]): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCKS_URL}`, {\r\n params: { blocksIds },\r\n ...this.options\r\n });\r\n }\r\n}\r\n","import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type EditorJS from '@editorjs/editorjs';\r\nimport type { BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport type { Observable } from 'rxjs';\r\nimport { forkJoin, of } from 'rxjs';\r\n\r\nimport {\r\n COMBINED_TEXT_BLOCK_ADDED,\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n COMBINED_TEXT_BLOCK_REMOVED,\r\n COMBINED_TEXT_BLOCK_UPDATED\r\n} from '../constants';\r\nimport type {\r\n CuiCombinedBlockAddingEvent,\r\n CuiCombinedBlockToolData,\r\n CuiCombinedPartBlock,\r\n CuiEventActionData,\r\n CuiFullBlockData\r\n} from '../interfaces';\r\nimport { generateId } from '../utils/generate-id';\r\nimport type { Block } from './jtext-api.options';\r\nimport { CuiJTextApiService } from './jtext-api.service';\r\nimport { EventActions } from './editor-service.options';\r\n\r\n@Injectable()\r\nexport class CuiEditorService {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly jtextService = inject(CuiJTextApiService);\r\n\r\n public sortEventsByTypes(events: BlockMutationEvent[]): CuiEventActionData {\r\n const blocks: CuiEventActionData = {\r\n 'block-removed': [],\r\n 'block-added': [],\r\n 'block-changed': []\r\n };\r\n\r\n events.forEach((editorEvent) => {\r\n if (editorEvent.detail.target.name === COMBINED_TEXT_BLOCK_NAME) {\r\n return;\r\n }\r\n\r\n const eventType = editorEvent.type;\r\n\r\n if (eventType === EventActions.update) {\r\n const changedBlock = blocks[EventActions.add].find(\r\n (block) => block.detail.target.id === editorEvent.detail.target.id\r\n );\r\n\r\n if (changedBlock) {\r\n return;\r\n }\r\n }\r\n\r\n if (eventType === EventActions.remove) {\r\n const len = blocks[EventActions.add].length;\r\n\r\n blocks[EventActions.add] = blocks[EventActions.add].filter(\r\n (block) => block.detail.target.id !== editorEvent.detail.target.id\r\n );\r\n\r\n if (len > blocks[EventActions.add].length) {\r\n return;\r\n }\r\n }\r\n\r\n blocks[eventType as EventActions].push(editorEvent);\r\n });\r\n\r\n return blocks;\r\n }\r\n\r\n public collectAddedBlocksRequest(editorId: string, addedBlocks: CuiFullBlockData[]): Observable<string[]> {\r\n const addBlocksBody = {\r\n jtextContainerId: editorId,\r\n position: addedBlocks[0]?.index,\r\n block: addedBlocks.map((e) => e.block)\r\n };\r\n const addBlocks$ = addedBlocks.length ? this.jtextService.createBlocks(addBlocksBody) : of([]);\r\n\r\n return addBlocks$;\r\n }\r\n\r\n public collectUpdatedBlocksRequest(updatedBlocks: Block[], blockIdsMap: Map<string, string>): Observable<Block[]> {\r\n const updatedBlocksWithId = updatedBlocks.reduce((acc, block) => {\r\n const blockWithId = {\r\n ...block,\r\n id: blockIdsMap.get(block.id!)\r\n };\r\n\r\n if (blockWithId.id) {\r\n acc.push(blockWithId);\r\n }\r\n\r\n return acc;\r\n }, [] as Block[]);\r\n\r\n const updateBlocksArray = updatedBlocksWithId.map((block) => this.jtextService.updateBlock(block));\r\n const updateBlocks$ = updatedBlocksWithId.length ? forkJoin(updateBlocksArray) : of([]);\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n public collectRemovedBlocksRequest(\r\n editorId: string,\r\n removedBlocksIds: string[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<void> {\r\n const removedBlocks: string[] = removedBlocksIds.reduce((blockIds, blockId) => {\r\n const backendID = blockIdsMap.get(blockId) as string;\r\n\r\n if (backendID) {\r\n blockIds.push(backendID);\r\n }\r\n\r\n return blockIds;\r\n }, [] as string[]);\r\n\r\n const removeBlocks$ = removedBlocks.length ? this.jtextService.deleteBlocks(editorId, removedBlocks) : of();\r\n\r\n removedBlocks.forEach((removedBlock) => {\r\n blockIdsMap.delete(removedBlock);\r\n });\r\n\r\n return removeBlocks$;\r\n }\r\n\r\n public getFullBlockData(event: BlockMutationEvent, editorData: OutputData): CuiFullBlockData {\r\n const target = event.detail.target;\r\n const index = Number(target.holder.dataset['index']);\r\n const blockIndex = (event.detail as unknown as { index: number }).index;\r\n const blockType = target.name;\r\n const blockId = target.id;\r\n const currentBlockByIndex = editorData.blocks[blockIndex];\r\n const blockData = currentBlockByIndex?.id === blockId ? editorData.blocks[blockIndex].data : { text: '' };\r\n\r\n return {\r\n index,\r\n id: blockId,\r\n block: {\r\n type: blockType,\r\n data: blockData\r\n }\r\n };\r\n }\r\n\r\n public setListenersOnCustomBlockChanges(\r\n editor: EditorJS,\r\n data: {\r\n removedCallback: (blockIds: string[]) => void;\r\n updatedCallback: (updatedBlocks: Block[]) => void;\r\n addedCallback: (data: CuiCombinedBlockAddingEvent) => void;\r\n }\r\n ): void {\r\n editor.on(COMBINED_TEXT_BLOCK_ADDED, data.addedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_UPDATED, data.updatedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_REMOVED, data.removedCallback);\r\n }\r\n\r\n public setStartBlock(editorId: string, callback: (block: Block<CuiCombinedBlockToolData>, id: string) => void): void {\r\n const blockId = generateId();\r\n const emptyBlock: CuiCombinedPartBlock = {\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: '',\r\n parentId: blockId,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n const body = {\r\n position: 0,\r\n block: emptyBlock,\r\n jtextContainerId: editorId\r\n };\r\n\r\n this.jtextService\r\n .createBlock(body)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((id) => {\r\n emptyBlock.id = id;\r\n\r\n const block: Block<CuiCombinedBlockToolData> = {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: blockId,\r\n textBlocks: [emptyBlock]\r\n }\r\n };\r\n\r\n callback(block, id);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { Tool } from '../components/editor-tool-modal';\r\n\r\nimport { MarkerType } from './markers-service.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiMarkersService {\r\n protected roles: Tool[] = [];\r\n protected tools: Tool[] = [\r\n {\r\n id: '0',\r\n image: 'blob:https://www.figma.com/f985f4fc-abc6-4727-857e-80633836e2b2',\r\n title: 'Шуруповерт',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '1',\r\n image: 'blob:https://www.figma.com/92ad9b38-566c-4ff6-84ba-0b20b24fef39',\r\n title: 'Молоток',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '2',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '3',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '4',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '5',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '6',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '7',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '8',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n }\r\n ];\r\n\r\n public getMarkersByType(type: MarkerType): Tool[] {\r\n return type === MarkerType.role ? this.roles : this.tools;\r\n }\r\n\r\n public getMarkerObjectByType(type: MarkerType, id: string): Tool | undefined {\r\n const markersArray = this.getMarkersByType(type);\r\n\r\n return markersArray.find((marker) => marker.id === id);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\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 *ngIf=\"isTitleInvalid()\" hintType=\"error\">\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') }}\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 *ngIf=\"isDynamicDataErrorShown\" hintType=\"error\">\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\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 { 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 type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n standalone: true\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\r\n private readonly BYTES_IN_KILOBYTE = 1024;\r\n\r\n public transform(bytes: number): string {\r\n if (isNaN(bytes) || bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n\r\n const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\r\n\r\n return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\r\n }\r\n}\r\n","import { NgIf, UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FileSizePipe, FormsModule, UpperCasePipe, NgIf, TranslocoDirective],\r\n templateUrl: './editor-attaches-tool.component.html',\r\n styleUrls: ['./editor-attaches-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorAttachesToolComponent extends EditorToolComponent {\r\n protected readonly Extensions = {\r\n doc: '#1483E9',\r\n docx: '#1483E9',\r\n odt: '#1483E9',\r\n pdf: '#DB2F2F',\r\n rtf: '#744FDC',\r\n tex: '#5a5a5b',\r\n txt: '#5a5a5b',\r\n pptx: '#E35200',\r\n ppt: '#E35200',\r\n mp3: '#eab456',\r\n mp4: '#f676a6',\r\n xls: '#11AE3D',\r\n html: '#2988f0',\r\n htm: '#2988f0',\r\n png: '#AA2284',\r\n jpg: '#D13359',\r\n jpeg: '#D13359',\r\n gif: '#f6af76',\r\n zip: '#4f566f',\r\n rar: '#4f566f',\r\n exe: '#e26f6f',\r\n svg: '#bf5252',\r\n key: '#00B2FF',\r\n sketch: '#FFC700',\r\n ai: '#FB601D',\r\n psd: '#388ae5',\r\n dmg: '#e26f6f',\r\n json: '#2988f0',\r\n csv: '#11AE3D'\r\n };\r\n\r\n @Input({ required: true })\r\n public file?: CuiFileData;\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n protected get color(): string {\r\n return this.Extensions[this.file?.extension as keyof typeof this.Extensions];\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.file && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return event.key !== 'Enter';\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_ATTACHES_TOOL_SELECTOR = 'cc-editor-attaches-tool';\r\n\r\nexport interface CuiAttachesToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiAttachesToolOptions {\r\n readonly api: API;\r\n readonly config: CuiAttachesToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiAttachesToolData {\r\n title: string;\r\n file: CuiFileData;\r\n}\r\n","import { NgClass, NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\nimport type { CuiImageTunes } from './editor-image-tool.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgClass, NgIf, TranslocoDirective],\r\n templateUrl: './editor-image-tool.component.html',\r\n styleUrls: ['./editor-image-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorImageToolComponent extends EditorToolComponent {\r\n protected readonly isLoaded = signal(false);\r\n protected readonly tunesSignal = signal<CuiImageTunes>({});\r\n\r\n @Input({ required: true })\r\n public image!: string;\r\n\r\n @Input()\r\n public set tunes(tunes: CuiImageTunes) {\r\n this.tunesSignal.set(tunes);\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.image && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"image; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [ngClass]=\"tunesSignal()\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <img\r\n class=\"image\"\r\n [src]=\"image\"\r\n alt=\"Image\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #buttonTemplate>\r\n <button\r\n #button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n />\r\n <path\r\n d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11.4805 7.77783H11.4879\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_IMAGE_TOOL_SELECTOR = 'cc-editor-image-tool';\r\n\r\nexport type CuiImageKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiImageToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiImageToolOptions {\r\n readonly api: API;\r\n readonly config: CuiImageToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiImageToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n tunes: CuiImageTunes;\r\n}\r\n\r\nexport interface CuiImageTunes {\r\n stretched?: boolean;\r\n left?: boolean;\r\n right?: boolean;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgIf } from '@angular/common';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgIf, TranslocoDirective],\r\n templateUrl: './editor-video-tool.component.html',\r\n styleUrls: ['./editor-video-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorVideoToolComponent extends EditorToolComponent {\r\n protected isLoaded = signal(false);\r\n\r\n @Input({ required: true })\r\n public video!: string;\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.video && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPlay(): void {\r\n this.isLoaded.set(true);\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *ngIf=\"video; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <video\r\n *ngIf=\"isLoaded(); else playButtonTemplate\"\r\n class=\"video\"\r\n [src]=\"video\"\r\n controls\r\n autoplay\r\n muted\r\n playsinline\r\n ></video>\r\n\r\n <ng-template #playButtonTemplate>\r\n <button\r\n type=\"button\"\r\n class=\"play\"\r\n (click)=\"onPlay()\"\r\n >\r\n <cui-svg\r\n class=\"play\"\r\n icon=\"cuiIconPlayCircleSm\"\r\n [height]=\"72\"\r\n [width]=\"72\"\r\n [strokeWidth]=\"0.5\"\r\n />\r\n </button>\r\n </ng-template>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n\r\n <ng-template #buttonTemplate>\r\n <button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <cui-svg icon=\"cuiIconPlayCircle\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_VIDEO_TOOL_SELECTOR = 'cc-editor-video-tool';\r\n\r\nexport type VideoKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiVideoToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiVideoToolPlayer {\r\n readonly pip: boolean;\r\n readonly controls: boolean;\r\n readonly light: boolean;\r\n readonly playing: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolOptions {\r\n readonly api: API;\r\n readonly config: CuiVideoToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n}\r\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, Tool, MarkerSelectComponent, MarkerModalComponent } from '../components';\r\nimport { MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function createSelect(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerSelectComponent> {\r\n const select = document.createElement(MARKER_SELECT_SELECTOR) as CuiAngularElement<MarkerSelectComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n select.space = 8;\r\n select.target = button;\r\n select.addEventListener('toolClick', (event) => onToolClick(marker, tooltip, event));\r\n\r\n return select;\r\n}\r\n\r\nexport function createToolModal(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerModalComponent> {\r\n const toolModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n const toolId = marker.dataset['id']!;\r\n const toolType = marker.dataset['type'] as MarkerType;\r\n\r\n toolModal.title = marker.innerText;\r\n toolModal.target = button;\r\n toolModal.isTool = true;\r\n toolModal.tool = {\r\n id: toolId,\r\n type: toolType\r\n };\r\n toolModal.space = 8;\r\n\r\n toolModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail.data;\r\n\r\n if (data && typeof data !== 'string') {\r\n marker.setAttribute('data-id', data.id);\r\n marker.setAttribute('data-type', data.type!);\r\n }\r\n\r\n marker.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n toolModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return toolModal;\r\n}\r\n\r\nfunction onToolClick(marker: HTMLElement, tooltip: HTMLElement, event: Event): void {\r\n event.stopPropagation();\r\n\r\n const customEvent = event as CustomEvent<Tool>;\r\n const tool = customEvent.detail;\r\n\r\n marker.dataset['id'] = tool.id;\r\n\r\n tooltip.remove();\r\n}\r\n","export function removeElementTagWrapper(element: HTMLElement): void {\r\n const parent = element.parentElement;\r\n const innerElementNodes = element.childNodes;\r\n\r\n let node: Node;\r\n\r\n while (innerElementNodes.length) {\r\n node = innerElementNodes.item(0);\r\n\r\n parent?.insertBefore(node, element);\r\n }\r\n\r\n element.remove();\r\n}\r\n","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}","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 { CuiFileResponseData } from '../interfaces';\r\n\r\nexport enum CuiFileUploaderStatus {\r\n Loading = 'loading',\r\n Completed = 'completed'\r\n}\r\n\r\nexport interface CuiFileUploaderConfig {\r\n readonly endpoint: string;\r\n readonly types: string;\r\n readonly field: string;\r\n readonly additionalRequestHeaders: HeadersInit;\r\n readonly load: (status: CuiFileUploaderStatus) => void;\r\n}\r\n\r\nexport type OnUpload = (response: CuiFileResponseData, file?: File) => void;\r\n\r\nexport class CuiFileUploader {\r\n private readonly REQUEST_METHOD = 'POST';\r\n private readonly config: CuiFileUploaderConfig;\r\n private readonly onUpload: OnUpload;\r\n private readonly onError: () => void;\r\n\r\n constructor(config: CuiFileUploaderConfig, onUpload: OnUpload, onError: () => void) {\r\n this.config = config;\r\n this.onUpload = onUpload;\r\n this.onError = onError;\r\n }\r\n\r\n public selectFile = ({ fileSelected }: { fileSelected: (file: File) => void }): void => {\r\n const input = document.createElement('input');\r\n const types = this.config?.types || '*';\r\n input.type = 'file';\r\n input.accept = types;\r\n\r\n input.onchange = (): void => {\r\n const files = input.files;\r\n\r\n if (!files?.length) {\r\n return;\r\n }\r\n\r\n this.getFile(files, fileSelected);\r\n };\r\n\r\n input.click();\r\n };\r\n\r\n public getFile(files: FileList, fileSelected: (file: File) => void): void {\r\n const file = files.item(0);\r\n\r\n if (!file) {\r\n return;\r\n }\r\n\r\n fileSelected(file);\r\n }\r\n\r\n public uploadFile(file: File): void {\r\n const formData = new FormData();\r\n const formField = this.config.field || 'file';\r\n formData.append(formField, file);\r\n\r\n if (!this.config.endpoint) {\r\n return;\r\n }\r\n\r\n this.config.load(CuiFileUploaderStatus.Loading);\r\n\r\n const upload = fetch(this.config.endpoint, {\r\n headers: this.config.additionalRequestHeaders,\r\n method: this.REQUEST_METHOD,\r\n body: formData\r\n });\r\n\r\n upload\r\n .then((response) => response.json())\r\n .then((response) => this.onUpload(response, file))\r\n .catch(() => this.onError())\r\n .finally(() => this.config.load(CuiFileUploaderStatus.Completed));\r\n }\r\n\r\n public uploadByUrl(url: string): void {\r\n this.onUpload({ success: 1, file: { url } });\r\n }\r\n}\r\n","import type { Blocks } from '@editorjs/editorjs/types/api';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nexport function recalculateIndexes(blocksApi: Blocks): void {\r\n if (!blocksApi) {\r\n return;\r\n }\r\n\r\n const blocks = blocksApi.getBlocksCount();\r\n let index = 0;\r\n\r\n for (let i = 0; i < blocks; i++) {\r\n const block = blocksApi.getBlockByIndex(i);\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n const blockElement = block?.holder;\r\n const subblocks = blockElement.querySelectorAll('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n blockElement.setAttribute('data-index', String(index));\r\n\r\n if (!subblocks.length) {\r\n index++;\r\n\r\n continue;\r\n }\r\n\r\n subblocks.forEach((subblock) => {\r\n const subBlockIndex = subblock.getAttribute('data-index');\r\n const indexAsNumber = subBlockIndex ? Number(subBlockIndex) : null;\r\n\r\n if (indexAsNumber !== null && indexAsNumber === index) {\r\n index++;\r\n\r\n return;\r\n }\r\n\r\n subblock.setAttribute('data-index', String(index));\r\n index++;\r\n });\r\n }\r\n}\r\n","import { SPLIT_LENGTH } from '../constants';\r\n\r\ninterface TagInfo {\r\n tag: string;\r\n tagName: string;\r\n newIndex: number;\r\n}\r\n\r\nconst unsplittableTags: { [key: string]: boolean } = { mark: true, a: true };\r\nconst PART_LENGTH_MEASUREMENT_ERROR = 20;\r\nconst BR_TAG = '<br>';\r\n\r\nexport function splitHTML(input: string, maxLength: number = SPLIT_LENGTH): string[] {\r\n const parts: string[] = [];\r\n const tagNames: string[] = [];\r\n const tags: string[] = [];\r\n let currentPart = '';\r\n let index = 0;\r\n // remove specsymbols\r\n input = input.replaceAll('&nbsp;', ' ');\r\n\r\n while (input.length > index) {\r\n while (currentPart.length < maxLength && input.length > index) {\r\n if (checkIsBrTag(input, index)) {\r\n // when br tag\r\n if (currentPart.length + BR_TAG.length > maxLength) {\r\n parts.push(currentPart);\r\n currentPart = BR_TAG;\r\n } else {\r\n currentPart += BR_TAG;\r\n }\r\n\r\n index += BR_TAG.length - 1;\r\n } else if (checkIsEndOfTag(input, index)) {\r\n // when tag ends\r\n const tagName = getEndTag(tagNames.pop()!);\r\n\r\n tags.pop();\r\n\r\n if ((currentPart + tagName).length > maxLength) {\r\n parts.push(currentPart);\r\n currentPart = '';\r\n } else {\r\n currentPart += tagName;\r\n }\r\n\r\n index += tagName.length - 1;\r\n } else if (input[index] === '<') {\r\n // when tag starts\r\n const { tag, tagName, newIndex } = getTagAndTagName(input, index);\r\n\r\n index = newIndex;\r\n\r\n if (checkIsLengthEnough(currentPart, tag)) {\r\n currentPart = switchPartWhenUnclosedTagsExist(tagNames, tags, parts, currentPart);\r\n }\r\n\r\n currentPart += tag;\r\n\r\n if (!unsplittableTags[tagName]) {\r\n tagNames.push(tagName);\r\n tags.push(tag);\r\n }\r\n } else {\r\n // other symbols\r\n currentPart += input[index];\r\n }\r\n\r\n index += 1;\r\n }\r\n\r\n currentPart = switchPartWhenUnclosedTagsExist(tagNames, tags, parts, currentPart);\r\n }\r\n\r\n return parts;\r\n}\r\n\r\nfunction switchPartWhenUnclosedTagsExist(\r\n tagNames: string[],\r\n tags: string[],\r\n parts: string[],\r\n currentPart: string\r\n): string {\r\n if (!tagNames.length) {\r\n parts.push(currentPart);\r\n\r\n return '';\r\n }\r\n\r\n let closeAllTags = '';\r\n\r\n for (let i = tagNames.length - 1; i >= 0; i -= 1) {\r\n closeAllTags += getEndTag(tagNames[i]);\r\n }\r\n\r\n currentPart += closeAllTags;\r\n\r\n parts.push(currentPart);\r\n\r\n currentPart = tags.reduce((openTags, tag) => (openTags += tag), '');\r\n\r\n return currentPart;\r\n}\r\n\r\nfunction getTagAndTagName(input: string, index: number): TagInfo {\r\n let tag = '';\r\n let tagName = '';\r\n\r\n tag += input[index];\r\n index += 1;\r\n\r\n while (input[index] !== ' ' && input[index] !== '>') {\r\n tag += input[index];\r\n tagName += input[index];\r\n index += 1;\r\n }\r\n\r\n while (input[index] !== '>') {\r\n tag += input[index];\r\n index += 1;\r\n }\r\n\r\n tag += input[index];\r\n [tag, index] = getFullTag(input, index, tag, tagName);\r\n\r\n return { tag, tagName, newIndex: index };\r\n}\r\n\r\nfunction getFullTag(input: string, index: number, tag: string, tagName: string): [string, number] {\r\n if (!unsplittableTags[tagName]) {\r\n return [tag, index];\r\n }\r\n\r\n let fullTag = tag;\r\n\r\n index += 1;\r\n\r\n while (!checkIsEndOfTag(input, index)) {\r\n fullTag += input[index];\r\n index += 1;\r\n }\r\n\r\n const endTag = getEndTag(tagName);\r\n\r\n index += endTag.length - 1;\r\n\r\n return [fullTag + endTag, index];\r\n}\r\n\r\nfunction checkIsLengthEnough(currentPart: string, tag: string): boolean {\r\n return currentPart.length + tag.length + PART_LENGTH_MEASUREMENT_ERROR > SPLIT_LENGTH;\r\n}\r\n\r\nfunction getEndTag(tagName: string): string {\r\n return '</' + tagName + '>';\r\n}\r\n\r\nfunction checkIsEndOfTag(input: string, index: number): boolean {\r\n return input[index] === '<' && input[index + 1] === '/';\r\n}\r\n\r\nfunction checkIsBrTag(input: string, index: number): boolean {\r\n let tag = '';\r\n\r\n if (input[index] !== '<') {\r\n return false;\r\n }\r\n\r\n while (input[index] && input[index] !== '>') {\r\n tag += input[index];\r\n index += 1;\r\n }\r\n\r\n return tag + '>' === BR_TAG;\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, PasteConfig, ToolboxConfig } from '@editorjs/editorjs';\r\nimport type { TunesMenuConfig } from '@editorjs/editorjs/types/tools';\r\n\r\nimport { CuiFileUploader } from '../utils';\r\nimport { EditorImageToolComponent, EDITOR_IMAGE_TOOL_SELECTOR } from '../components/editor-image-tool';\r\nimport type { CuiImageToolConfig, CuiImageToolData, CuiImageTunes } from '../components/editor-image-tool';\r\nimport type { CuiFileData, CuiFileResponseData, CuiTune, CuiAngularElement } from '../interfaces';\r\n\r\nexport class CuiImageTool {\r\n private selectedFile: CuiNullable<string | File> = null;\r\n private get Tunes(): CuiTune[] {\r\n return [\r\n {\r\n name: 'stretched',\r\n title: 'Stretch image',\r\n toggle: true\r\n },\r\n {\r\n name: 'center',\r\n title: 'Center image',\r\n toggle: true\r\n }\r\n ];\r\n }\r\n\r\n public api: API;\r\n public data: CuiImageToolData;\r\n public config: CuiImageToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public uploader: CuiFileUploader;\r\n public imageTool!: CuiAngularElement<EditorImageToolComponent>;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n /* eslint-disable */\r\n icon: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\" stroke=\"#121315\" stroke-width=\"1.66667\"/>\r\n <path d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M11.4805 7.77783H11.4879\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>`,\r\n /* eslint-enable */\r\n title: 'Image'\r\n };\r\n }\r\n\r\n public static get pasteConfig(): PasteConfig {\r\n return {\r\n tags: [\r\n {\r\n img: { src: true }\r\n }\r\n ],\r\n files: {\r\n mimeTypes: ['image/*']\r\n }\r\n };\r\n }\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<CuiImageToolData, Partial<CuiImageToolConfig>>;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => { }),\r\n field: config?.field ?? 'image',\r\n types: config?.types ?? 'image/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select an Image'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders || {},\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n this.data.tunes = this.data.tunes || {};\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.imageTool.preview = url;\r\n this.imageTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n const actions = {\r\n tag: this.pasteByTag.bind(this),\r\n file: this.pasteByFile.bind(this)\r\n };\r\n const key = event.type as keyof typeof actions;\r\n\r\n this.imageTool.isLoading = true;\r\n actions[key](event);\r\n }\r\n\r\n private pasteByFile(event: CustomEvent): void {\r\n const file = event.detail.file;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n private pasteByTag(event: CustomEvent): void {\r\n const file = event.detail.data.src;\r\n\r\n this.selectedFile = file;\r\n this.uploader.uploadByUrl(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.imageTool = document.createElement(EDITOR_IMAGE_TOOL_SELECTOR) as CuiAngularElement<EditorImageToolComponent>;\r\n\r\n this.imageTool.api = this.api;\r\n this.imageTool.image = this.data.file?.url || '';\r\n this.imageTool.caption = this.data.caption || '';\r\n this.imageTool.tunes = this.data.tunes;\r\n this.imageTool.readOnly = this.readOnly;\r\n this.imageTool.buttonContent = this.config.buttonContent;\r\n\r\n this.imageTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.imageTool;\r\n }\r\n\r\n public renderSettings(): TunesMenuConfig {\r\n return this.Tunes.map((tune) => ({\r\n icon: tune.icon,\r\n label: this.api.i18n.t(tune.title),\r\n name: tune.name,\r\n toggle: tune.toggle,\r\n isActive: this.data.tunes[tune.name as keyof CuiImageTunes],\r\n onActivate: (): void => this.tuneToggled(tune.name as keyof CuiImageTunes)\r\n }));\r\n }\r\n\r\n public save(): CuiImageToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.imageTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set image(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.imageTool.image = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: CuiFileResponseData): void {\r\n if (!response.success || !response.file || !this.selectedFile) {\r\n this.uploadingFailed();\r\n\r\n return;\r\n }\r\n\r\n const url =\r\n this.selectedFile instanceof File ? window.URL.createObjectURL(this.selectedFile) : this.selectedFile;\r\n\r\n this.data.file = response.file;\r\n this.imageTool.image = url;\r\n this.imageTool.isLoading = false;\r\n }\r\n\r\n private uploadingFailed(): void {\r\n this.imageTool.image = '';\r\n this.imageTool.isLoading = false;\r\n }\r\n\r\n private tuneToggled(tuneName: keyof CuiImageTunes): void {\r\n const value = !(this.data.tunes[tuneName] || false);\r\n\r\n this.data.tunes[tuneName] = value;\r\n this.imageTool.tunes = { ...this.data.tunes };\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_ICONS } from '@cuby-ui/icons';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, PasteConfig, ToolboxConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { CuiVideoToolConfig, EditorVideoToolComponent, CuiVideoToolData } from '../components/editor-video-tool';\r\nimport { EDITOR_VIDEO_TOOL_SELECTOR } from '../components/editor-video-tool/editor-video-tool.options';\r\nimport type { CuiFileData, CuiFileResponseData } from '../interfaces/file-response-data';\r\nimport { CuiFileUploader } from '../utils/file-uploader';\r\n\r\nexport class CuiVideoTool {\r\n private selectedFile: CuiNullable<string | File> = null;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n icon: CUI_ICONS.cuiIconPlayCircle,\r\n title: 'Video'\r\n };\r\n }\r\n\r\n public static get pasteConfig(): PasteConfig {\r\n return {\r\n tags: ['video'],\r\n patterns: {\r\n video: /https?:\\/\\/\\S+\\.(mp4)$/i\r\n },\r\n files: {\r\n mimeTypes: ['video/*']\r\n }\r\n };\r\n }\r\n\r\n public api: API;\r\n public config: CuiVideoToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public data: CuiVideoToolData;\r\n public videoTool!: CuiAngularElement<EditorVideoToolComponent>;\r\n public uploader: CuiFileUploader;\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<CuiVideoToolData, CuiVideoToolConfig>;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => { }),\r\n field: config?.field ?? 'video',\r\n types: config?.types ?? 'video/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a Video'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {},\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.getCaptureFromVideo(url);\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n if (event.type !== 'file') {\r\n return;\r\n }\r\n\r\n const file = event.detail.file;\r\n\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.videoTool = document.createElement(EDITOR_VIDEO_TOOL_SELECTOR) as CuiAngularElement<EditorVideoToolComponent>;\r\n\r\n this.videoTool.api = this.api;\r\n this.videoTool.video = this.data.file?.url || '';\r\n this.videoTool.caption = this.data.caption || '';\r\n this.videoTool.readOnly = this.readOnly;\r\n this.videoTool.buttonContent = this.config.buttonContent;\r\n\r\n this.videoTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.videoTool;\r\n }\r\n\r\n public save(): CuiVideoToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.videoTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set video(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.videoTool.video = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: CuiFileResponseData): void {\r\n if (!response.success || !response.file || !this.selectedFile) {\r\n this.uploadingFailed();\r\n\r\n return;\r\n }\r\n\r\n const url =\r\n this.selectedFile instanceof File ? window.URL.createObjectURL(this.selectedFile) : this.selectedFile;\r\n\r\n this.data.file = response.file;\r\n this.videoTool.video = url;\r\n this.videoTool.isLoading = false;\r\n }\r\n\r\n private uploadingFailed(): void {\r\n this.videoTool.video = '';\r\n this.videoTool.isLoading = false;\r\n }\r\n\r\n private getCaptureFromVideo(url: string): void {\r\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\r\n const video = document.createElement('video') as HTMLVideoElement;\r\n\r\n video.src = url;\r\n video.currentTime = 1;\r\n canvas.width = 120;\r\n canvas.height = 120;\r\n\r\n video.onloadeddata = (): void => {\r\n const context = canvas.getContext('2d');\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n\r\n canvas.toBlob((blob) => {\r\n if (!blob) {\r\n return;\r\n }\r\n\r\n this.videoTool.preview = URL.createObjectURL(blob);\r\n });\r\n };\r\n\r\n video.load();\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_ICONS } from '@cuby-ui/icons';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, ToolboxConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement, CuiFileData, CuiFileResponseData } from '../interfaces';\r\n\r\nimport type { EditorAttachesToolComponent } from '../components/editor-attaches-tool/editor-attaches-tool.component';\r\nimport type {\r\n CuiAttachesToolConfig,\r\n CuiAttachesToolData\r\n} from '../components/editor-attaches-tool/editor-attaches-tool.options';\r\nimport { EDITOR_ATTACHES_TOOL_SELECTOR } from '../components/editor-attaches-tool/editor-attaches-tool.options';\r\nimport { CuiFileUploader } from '../utils/file-uploader';\r\n\r\nexport class CuiAttachesTool {\r\n public api: API;\r\n public config: CuiAttachesToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public data: CuiAttachesToolData;\r\n public uploader: CuiFileUploader;\r\n private attachesTool!: CuiAngularElement<EditorAttachesToolComponent>;\r\n private selectedFile: CuiNullable<File> = null;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n icon: CUI_ICONS.cuiIconPaperclipSm,\r\n title: 'File'\r\n };\r\n }\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<CuiAttachesToolData, CuiAttachesToolConfig>;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => { }),\r\n field: config?.field ?? 'file',\r\n types: config?.types ?? '*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a File'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {},\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n this.attachesTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.attachesTool = document.createElement(\r\n EDITOR_ATTACHES_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorAttachesToolComponent>;\r\n\r\n this.attachesTool.api = this.api;\r\n this.attachesTool.file = this.data.file ?? '';\r\n this.attachesTool.title = this.data.title ?? '';\r\n this.attachesTool.readOnly = this.readOnly;\r\n this.attachesTool.buttonContent = this.config.buttonContent;\r\n\r\n this.attachesTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.attachesTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.attachesTool;\r\n }\r\n\r\n public save(): CuiAttachesToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.attachesTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.attachesTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.title = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set file(file: CuiFileData) {\r\n this.data.title = file.name!;\r\n this.data.file = {\r\n name: file.name,\r\n extension: file.name?.split('.').pop(),\r\n size: file.size,\r\n url: file.url\r\n };\r\n this.attachesTool.file = { ...this.data.file };\r\n this.attachesTool.title = file.name!;\r\n }\r\n\r\n private onUpload(response: CuiFileResponseData): void {\r\n if (!response.success || !response.file || !this.selectedFile) {\r\n this.uploadingFailed();\r\n\r\n return;\r\n }\r\n\r\n this.file = {\r\n name: this.selectedFile.name,\r\n extension: this.selectedFile.name.split('.').pop(),\r\n size: this.selectedFile.size,\r\n url: response.file.url\r\n };\r\n this.attachesTool.isLoading = false;\r\n }\r\n\r\n private uploadingFailed(): void {\r\n this.attachesTool.file = undefined;\r\n this.attachesTool.isLoading = false;\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement, CuiParent } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent } from '../components/marker-modal/marker-modal.component';\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport { removeElementTagWrapper } from '../utils/remove-element-tag-wrapper';\r\n\r\nexport enum RangeContainer {\r\n start = 'startContainer',\r\n end = 'endContainer'\r\n}\r\n\r\nexport class CuiMarkerTool {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n protected readonly DEFAULT_CLASS = 'marker';\r\n protected readonly DIV = 'div';\r\n protected readonly TAG: string = 'MARK';\r\n protected readonly api!: API;\r\n\r\n protected CLASS = 'tool-marker';\r\n protected _state = false;\r\n protected button!: HTMLButtonElement;\r\n protected dropdown!: HTMLElement;\r\n protected range!: Range;\r\n protected markerModal!: CuiAngularElement<MarkerModalComponent>;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button');\r\n this.button.type = 'button';\r\n this.button.classList.add(this.api.styles.inlineToolButton);\r\n\r\n this.range = window.getSelection()?.getRangeAt(0).cloneRange() as Range;\r\n\r\n return this.button;\r\n }\r\n\r\n public surround(): void {\r\n if (this.state) {\r\n this.api.inlineToolbar.close();\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.markerModal.title = this.range.toString();\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n const selectedText = range.extractContents();\r\n const mark = this.createElement();\r\n\r\n mark.appendChild(selectedText);\r\n\r\n this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(mark);\r\n }\r\n\r\n public unwrap(): void {\r\n const mark = this.api.selection.findParentTag(this.TAG, this.CLASS);\r\n\r\n if (!mark) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(mark);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.classList.add(this.DEFAULT_CLASS);\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addMarkerToDOM(range: Range, mark: HTMLElement, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n range.insertNode(mark);\r\n\r\n return;\r\n }\r\n\r\n this.removeAllParentsFromMarker(mark, className);\r\n startParent?.append(mark);\r\n }\r\n\r\n public removeEmptyMarkers(range: Range): void {\r\n range.commonAncestorContainer.childNodes.forEach((node) => {\r\n if (node.nodeName !== this.TAG) {\r\n return;\r\n }\r\n\r\n if (node.textContent?.length) {\r\n return;\r\n }\r\n\r\n node.remove();\r\n });\r\n }\r\n\r\n public removeExternalMarkers(range: Range, className: string): void {\r\n const startContainer = this.getElementFromContainerNode(range, RangeContainer.start, className);\r\n const endContainer = this.getElementFromContainerNode(range, RangeContainer.end, className);\r\n\r\n const startElement = startContainer?.closest('.' + className);\r\n const endElement = endContainer?.closest('.' + className);\r\n\r\n if (startElement !== endElement || !startElement?.classList.contains(className)) {\r\n return;\r\n }\r\n\r\n const marker = startElement as HTMLElement;\r\n\r\n removeElementTagWrapper(marker);\r\n }\r\n\r\n public removeNestedMarkers(element: HTMLElement, selector: string): void {\r\n const markers = element.querySelectorAll('.' + selector);\r\n\r\n markers.forEach((node) => {\r\n const marker = node as HTMLElement;\r\n\r\n removeElementTagWrapper(marker);\r\n });\r\n }\r\n\r\n private getElementFromContainerNode(\r\n range: Range,\r\n key: RangeContainer,\r\n className: string\r\n ): CuiNullable<HTMLElement> {\r\n const container = range[key] as HTMLElement;\r\n\r\n if (container?.classList?.contains(className)) {\r\n return container as HTMLElement;\r\n }\r\n\r\n return container.parentElement;\r\n }\r\n\r\n private removeAllParentsFromMarker(mark: HTMLElement, className: string): void {\r\n const innerMarkerNodes: Node[] = [];\r\n\r\n mark.childNodes.forEach((node) => {\r\n innerMarkerNodes.push(node);\r\n });\r\n\r\n innerMarkerNodes.forEach((node) => {\r\n const element = node as HTMLElement;\r\n const isBlock = element.classList?.contains(className);\r\n\r\n if (!isBlock) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(element);\r\n });\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { 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 { CuiCombinedBlockToolData, CuiCombinedPartBlock, CuiMutationActions, CuiMutationCallback } 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","import { EDITOR_ATTACHES_TOOL_SELECTOR, EDITOR_IMAGE_TOOL_SELECTOR, EDITOR_TOOL_MODAL_SELECTOR, EDITOR_TOOLTIP_SELECTOR, EDITOR_VIDEO_TOOL_SELECTOR, EditorAttachesToolComponent, EditorImageToolComponent, EditorToolModalComponent, EditorTooltipComponent, EditorVideoToolComponent, MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR, MarkerModalComponent, MarkerSelectComponent } from \"../components\";\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 './custom-elements';\r\n\r\nexport function cuiProvideEditor(): Provider {\r\n return [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (injector: Injector) => () => {\r\n EDITOR_CUSTOM_ELEMENTS.forEach(({ component, selector }) => {\r\n const element = createCustomElement(component, { injector });\r\n\r\n window.customElements.define(selector, element);\r\n });\r\n },\r\n deps: [Injector],\r\n multi: true,\r\n },\r\n ];\r\n}\r\n","export function setEditorDragEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('dragstart', dragstartListener, { signal });\r\n}\r\n\r\nexport function dragstartListener(event: DragEvent): void {\r\n event.preventDefault();\r\n}\r\n","import { COMBINED_TEXT_BLOCK, COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nconst FIRST_CHILD_SELECTOR = '_selected';\r\n\r\nexport function setEditorKeyboardEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('keydown', keydownListener, { signal });\r\n}\r\n\r\nexport function keydownListener(event: KeyboardEvent): void {\r\n const target = event.target as HTMLElement;\r\n const block = target.closest(`.${COMBINED_TEXT_BLOCK}`);\r\n\r\n if (!block) {\r\n return;\r\n }\r\n\r\n const selection = window.getSelection();\r\n const ranges = selection?.rangeCount;\r\n\r\n if (!ranges || !checkIsBlockFullySelected(block)) {\r\n return;\r\n }\r\n\r\n const firstChild = block?.firstElementChild;\r\n\r\n firstChild?.classList.add(FIRST_CHILD_SELECTOR);\r\n setTimeout(() => firstChild?.classList.remove(FIRST_CHILD_SELECTOR));\r\n}\r\n\r\nfunction checkIsBlockFullySelected(blockElement: Element): boolean {\r\n const selection = window.getSelection();\r\n\r\n if (!selection || selection.rangeCount === 0) {\r\n return false;\r\n }\r\n\r\n const range = selection.getRangeAt(0);\r\n const startBlock = range.startContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n const endBlock = range.endContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n const isStartAtBlockStart = startBlock === blockElement.firstChild && range.startOffset === 0;\r\n const isEndAtBlockEnd = endBlock === blockElement.lastChild;\r\n\r\n return isStartAtBlockStart && isEndAtBlockEnd;\r\n}\r\n","import { CuiAngularElement } from '../interfaces';\r\n\r\nimport { EDITOR_TOOL_MODAL_SELECTOR, EditorToolModalComponent } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function setEditorInfoModalEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement?.addEventListener('pointerup', pointerUpListener, { signal });\r\n}\r\n\r\nexport function pointerUpListener(event: MouseEvent): void {\r\n const selection = window.getSelection();\r\n\r\n if (selection && selection.toString().length > 0) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (!marker) {\r\n return;\r\n }\r\n\r\n onMarkerClick(marker);\r\n}\r\n\r\nexport function onMarkerClick(marker: HTMLElement): void {\r\n const id = marker.dataset['id'];\r\n const type = marker.dataset['type'] as MarkerType;\r\n\r\n if (!(id && type)) {\r\n return;\r\n }\r\n\r\n const toolModal = document.createElement(EDITOR_TOOL_MODAL_SELECTOR) as CuiAngularElement<EditorToolModalComponent>;\r\n\r\n toolModal.tool = { id, type, title: 'Молоток КУБИПРО Ультра MAX 3000' };\r\n toolModal.marker = marker;\r\n\r\n toolModal.addEventListener('closed', function onCloseModal() {\r\n toolModal.remove();\r\n });\r\n\r\n document.body.append(toolModal);\r\n}\r\n","import { tooltipMap } from '../utils';\r\n\r\nconst TOOLTIP_POSITION_X = 5;\r\nconst TOOLTIP_POSITION_Y = 40;\r\nconst TOOLTIP_SAFE_RIGHT_SHIFT = 10;\r\nconst TOOLTIP_DEBOUNCE_TIME = 500;\r\nconst CLOSE_TOOLTIP_DEBOUNCE_TIME = 50;\r\n\r\nlet tooltip: HTMLElement;\r\nlet timeoutId: ReturnType<typeof setTimeout>;\r\nlet closeTimeoutId: ReturnType<typeof setTimeout>;\r\n\r\nconst closeTooltipHandler = (): void => closeTooltip();\r\n\r\nfunction closeTooltip(callback?: () => void): void {\r\n clearTimeout(closeTimeoutId);\r\n\r\n closeTimeoutId = setTimeout(() => {\r\n clearTimeout(timeoutId);\r\n tooltip?.remove();\r\n callback?.();\r\n }, CLOSE_TOOLTIP_DEBOUNCE_TIME);\r\n}\r\n\r\nconst debouncedEvent = (event: MouseEvent, marker: HTMLElement, target: HTMLElement): void => {\r\n clearTimeout(timeoutId);\r\n\r\n timeoutId = setTimeout(() => {\r\n if (tooltip && tooltip?.contains(target)) {\r\n return;\r\n }\r\n\r\n closeTooltip(() => openTooltip(event, marker));\r\n }, TOOLTIP_DEBOUNCE_TIME);\r\n};\r\n\r\nfunction openTooltip(event: MouseEvent, marker: HTMLElement): void {\r\n const type = marker.tagName as keyof typeof tooltipMap;\r\n\r\n tooltip = tooltipMap[type](marker);\r\n tooltip.style.visibility = 'hidden';\r\n\r\n document.body.append(tooltip);\r\n\r\n setTimeout(() => {\r\n const positionX = event.clientX;\r\n const positionY = event.clientY;\r\n const rightX = document.documentElement.clientWidth - positionX;\r\n const rightShiftDiffX = tooltip.offsetWidth - rightX;\r\n const rightShiftX = rightShiftDiffX > 0 ? rightShiftDiffX + TOOLTIP_SAFE_RIGHT_SHIFT : 0;\r\n\r\n tooltip.style.top = positionY - TOOLTIP_POSITION_Y + 'px';\r\n tooltip.style.left = positionX + TOOLTIP_POSITION_X - rightShiftX + 'px';\r\n tooltip.style.visibility = 'visible';\r\n });\r\n}\r\n\r\nexport function setEditorTooltipEvents(signal: AbortSignal): void {\r\n document.body.addEventListener('mousemove', mouseMoveListener, { signal });\r\n document.body.addEventListener('mouseleave', closeTooltipHandler, { signal });\r\n}\r\n\r\nexport function mouseMoveListener(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (tooltip?.contains(target)) {\r\n clearTimeout(timeoutId);\r\n clearTimeout(closeTimeoutId);\r\n\r\n return;\r\n }\r\n\r\n if (!marker) {\r\n closeTooltip();\r\n\r\n return;\r\n }\r\n\r\n clearTimeout(closeTimeoutId);\r\n debouncedEvent(event, marker, target);\r\n}\r\n","import { setEditorDragEvents } from './editor-drag.event';\r\nimport { setEditorKeyboardEvents } from './editor-keyboard.event';\r\nimport { setEditorInfoModalEvents } from './editor-modal.event';\r\nimport { setEditorTooltipEvents } from './editor-tooltip.event';\r\n\r\nexport function setEditorEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n setEditorTooltipEvents(signal);\r\n setEditorInfoModalEvents(editorElement, signal);\r\n setEditorDragEvents(editorElement, signal);\r\n setEditorKeyboardEvents(editorElement, signal);\r\n}\r\n","import type { ElementRef, OnDestroy, SimpleChanges } from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n EventEmitter,\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';\n\nimport { getEditorConfig } from './config';\nimport {\n COMBINED_TEXT_BLOCK_NAME,\n COMBINED_TEXT_BLOCK_PART,\n DEFAULT_CONFIG\n} 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 { Block, CuiEditorService, CuiJTextApiService, 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 isReadonly = computed(() => this.config?.readOnly);\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: Block[] = [];\n private removedBlocksIds: string[] = [];\n private changesQueue: BlockMutationEvent[][] = [];\n private abortController = new AbortController();\n\n protected readonly editorId = this.cuiIdService.generate();\n\n @ViewChild('editor')\n protected readonly editorRef!: ElementRef;\n\n @Output()\n public readonly editorEmpty = new EventEmitter<boolean>();\n\n @Input({ required: true })\n public editorApiId!: string;\n\n @Input()\n public config: CuiEditorConfig = DEFAULT_CONFIG;\n\n @Input()\n public requestSize = 40;\n\n public editor!: EditorJS;\n public editorElement!: HTMLElement;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['editorApiId'] || changes['config']) {\n this.initEditorChanges();\n }\n }\n\n public ngOnDestroy(): void {\n this.isDestroyed = true;\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: Block[]): 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 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((first, second) => first.index - second.index);\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<Block[]> {\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<Block[]> {\n let combinedBlock: CuiNullable<Block>;\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<Block[]>;\n }\n\n private addBlock(block: Block): 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: Block): 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: Block): void {\n this.checkFirst(block);\n this.index++;\n }\n\n private checkFirst(block: Block): 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: Block): Block {\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: Block[] };\n parentData.textBlocks.push(block);\n\n return parent;\n }\n\n const parentObject: Block = {\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(this.editorApiId, async (block: Block<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 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 { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRender,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n signal,\r\n TemplateRef,\r\n viewChild\r\n} from '@angular/core';\r\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorReadonlyConfig } from './editor-readonly.options';\r\n\r\n@Component({\r\n selector: 'cui-editor-readonly',\r\n standalone: true,\r\n imports: [CuiEditorComponent, NgTemplateOutlet],\r\n templateUrl: './editor-readonly.component.html',\r\n styleUrls: ['./editor-readonly.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorReadonlyComponent {\r\n protected readonly isShowMore = signal(false);\r\n protected readonly isMoreButtonShown = signal(false);\r\n protected readonly editorConfig = computed(() => ({ readOnly: true, withoutPreload: true, ...this.config() }));\r\n\r\n protected readonly editor = viewChild.required<CuiEditorComponent>('editor');\r\n\r\n public readonly editorId = input.required<string>();\r\n public readonly config = input.required<CuiEditorReadonlyConfig>();\r\n public readonly buttonTemplate = input.required<TemplateRef<unknown>>();\r\n public readonly shortHeight = input<number>(68);\r\n\r\n constructor() {\r\n this.initEditorIdEffect();\r\n this.initReadEditorProperty();\r\n }\r\n\r\n protected onShow(editor: CuiEditorComponent): void {\r\n editor.editorElement.scrollTo(0, 0);\r\n this.isShowMore.update((prev) => !prev);\r\n }\r\n\r\n private initReadEditorProperty(): void {\r\n afterRender({\r\n read: () => this.isMoreButtonShown.set(this.editor().editorElement?.scrollHeight > this.shortHeight())\r\n });\r\n }\r\n\r\n private initEditorIdEffect(): void {\r\n effect(() => {\r\n this.editorId();\r\n this.isShowMore.set(false);\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<cui-editor\r\n #editor\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorApiId]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n@if (isMoreButtonShown()) {\r\n <button class=\"c-button\" (click)=\"onShow(editor)\">\r\n <ng-container [ngTemplateOutlet]=\"buttonTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"></ng-container>\r\n </button>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\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: [\n CuiEditorComponent,\n CuiButtonModule,\n NgTemplateOutlet,\n CuiSvgModule\n ],\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 const element = this.editorContainer()?.nativeElement;\n\n if (!element) {\n return;\n }\n\n this.editorConfig.set({ element, ...this.config() });\n effectRef.destroy();\n }, { allowSignalWrites: true });\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 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 { 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\n public readonly stageStorage = input.required<TreeStruct>();\n public readonly categoryTitle = signal<string>('');\n public readonly category = computed(() => ({\n ...this.stageStorage(),\n title: this.categoryTitle() || this.stageStorage().title\n }));\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).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)\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 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).subscribe((storage) => {\n this.stageStorageChildren.update((prevStageStorages) =>\n prevStageStorages ? [...prevStageStorages, storage] : [storage]\n );\n });\n }, { allowSignalWrites: true });\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 { 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}\n","@for (stageStorage of stageStorages(); track stageStorage.id) {\n <cui-category-item [stageStorage]=\"stageStorage\" />\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 { CuiTreeStructNavigatorApiService, TreeStruct, TreeStructType } from '@cuby-ui/api';\r\n\r\nimport { CuiCategoriesListComponent, CuiCreateCategoryItemComponent } from './components';\r\nimport { CuiEmptyStateComponent, CuiButtonModule, CuiDropdownDirective, CuiDropdownWrapperComponent } from '../../components';\r\nimport { CuiSelectedCategoryService } from './services';\r\n\r\n@Component({\r\n selector: 'cui-categories',\r\n imports: [\r\n CuiButtonModule,\r\n CuiLetDirective,\r\n CuiDropdownDirective,\r\n CuiDropdownWrapperComponent,\r\n CuiEmptyStateComponent,\r\n CuiCreateCategoryItemComponent,\r\n CuiCategoriesListComponent,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './categories.component.html',\r\n styleUrls: ['./categories.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly stageStorages = signal<CuiNullable<TreeStruct[]>>(null);\r\n protected readonly isCategoryCreating = signal(false);\r\n protected readonly isCategoryCreationLoading = signal(false);\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.treeStructType() && this.isCategoryCreating()) ||\r\n this.isCategoryCreationLoading()\r\n );\r\n\r\n protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\r\n\r\n public readonly treeStructType = input.required<TreeStructType>();\r\n public readonly buttonId = input<string>();\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n this.initSelectCategoryEffect();\r\n }\r\n\r\n protected onOpenStageStorages(): void {\r\n this.selectedCategoryService.clearCreatingId();\r\n this.selectedCategoryService.clearEditingId();\r\n\r\n if (this.stageStorages()?.length) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStorages(this.treeStructType()).subscribe((stageStorage) => {\r\n this.stageStorages.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, stageStorage] : [stageStorage]\r\n );\r\n });\r\n }\r\n\r\n protected onStartCreatingNewCategory(): void {\r\n this.isCategoryCreating.set(true);\r\n this.selectedCategoryService.setCreatingId(this.treeStructType());\r\n }\r\n\r\n protected onCreateNewCategory(title: string): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n this.isCategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorage(title, this.treeStructType())\r\n .pipe(finalize(this.isCategoryCreationLoading.set.bind(this, false)))\r\n .subscribe((stateStorage) => this.stageStorages.update((value) => [...(value || []), stateStorage]));\r\n }\r\n\r\n protected onCreatingCategoryCanceled(): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initSelectCategoryEffect(): void {\r\n effect(() => {\r\n this.selectedCategoryService.category();\r\n this.dropdown().close();\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<button\r\n [attr.id]=\"buttonId()\"\r\n #dropdown=\"cuiDropdown\"\r\n [cuiDropdown]=\"dropdownContent\"\r\n orientation=\"stretch\"\r\n type=\"button\"\r\n class=\"target\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"onOpenStageStorages()\"\r\n>\r\n <ng-content />\r\n</button>\r\n\r\n<ng-template #dropdownContent>\r\n <cui-dropdown-wrapper\r\n *transloco=\"let t\"\r\n [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\r\n width=\"100%\"\r\n class=\"dropdown-wrapper\"\r\n >\r\n <ng-container *cuiLet=\"stageStorages() as stageStorages\">\r\n @if (stageStorages && stageStorages?.length) {\r\n <cui-categories-list [stageStorages]=\"stageStorages\" />\r\n }\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isCategoryCreationLoading()\"\r\n (created)=\"onCreateNewCategory($event)\"\r\n (canceled)=\"onCreatingCategoryCanceled()\"\r\n />\r\n } @else if (!stageStorages?.length) {\r\n <cui-empty-state\r\n class=\"empty\"\r\n [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\r\n />\r\n }\r\n </ng-container>\r\n <button\r\n ccDropdownFooterContent\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n (click)=\"onStartCreatingNewCategory()\"\r\n >\r\n {{ t('NEW_CATEGORY') }}\r\n </button>\r\n </cui-dropdown-wrapper>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { CuiFrameApiService, FragmentType, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiIdService, type CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\r\n\r\nimport {\r\n CuiAccordionModule,\r\n CuiAlertService,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../components';\r\nimport { CuiTooltip } from '../../directives';\r\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../editor';\r\nimport { cuiCreateDefaultValidators } from '../../utils';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport { CuiUtilityFormGroup, CuiUtilityFormValues } from './utility-info.options';\r\n\r\n@Component({\r\n selector: 'cui-utility-info',\r\n imports: [\r\n CuiAccordionModule,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n forwardRef(() => CuiEditorBlockComponent),\r\n CuiGeneralControlErrorHintComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiTooltip\r\n ],\r\n standalone: true,\r\n templateUrl: './utility-info.component.html',\r\n styleUrl: './utility-info.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityInfoComponent {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly formBuilder = inject(NonNullableFormBuilder);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n private readonly cuiAlertService = inject(CuiAlertService);\r\n private readonly cuiIdService = inject(CuiIdService);\r\n\r\n protected readonly CONTROL_DELAY = 500;\r\n protected readonly MAX_FILE_SIZE = 20971520;\r\n\r\n protected readonly titleId = this.cuiIdService.generate();\r\n protected readonly descriptionId = this.cuiIdService.generate();\r\n protected readonly form = this.formBuilder.group<CuiUtilityFormGroup>({\r\n title: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY })),\r\n description: this.formBuilder.control('', cuiCreateDefaultValidators({ asyncDelay: this.CONTROL_DELAY }))\r\n });\r\n protected readonly isDescriptionModalOpen = signal(false);\r\n protected readonly isDescriptionEmpty = signal(false);\r\n protected readonly editorId = signal<CuiNullable<string>>(null);\r\n protected readonly thumbnail = signal<CuiNullable<ResourceFragment>>(null);\r\n protected readonly thumbnailUrl = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.resource) {\r\n return thumbnail.resource;\r\n }\r\n\r\n return this.baseResourceUrl() + thumbnail!.fileId!;\r\n });\r\n protected readonly uploadButtonName = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.name) {\r\n return this.translocoService.translate('REPLACE_FILE');\r\n }\r\n\r\n return this.translocoService.translate('UPLOAD_FILE');\r\n });\r\n\r\n protected heading: CuiNullable<string> = null;\r\n\r\n protected get controls(): CuiUtilityFormGroup {\r\n return this.form.controls;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.controls.title.invalid && this.controls.title.dirty;\r\n }\r\n\r\n protected get isDescriptionError(): boolean {\r\n return this.controls.description.invalid && this.controls.description.dirty;\r\n }\r\n\r\n public readonly title = input.required<string>();\r\n public readonly 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<CuiUtilityFormValues>>();\r\n public readonly isFormValidChanged = output<boolean>();\r\n\r\n constructor() {\r\n this.initUtilityEffect();\r\n }\r\n\r\n protected onSelectFile(): void {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = 'image/jpg, image/jpeg, image/png, video/mp4';\r\n\r\n input.onchange = (): void => {\r\n const files = input.files;\r\n\r\n if (!files?.length) {\r\n return;\r\n }\r\n\r\n this.getFile(files);\r\n };\r\n\r\n input.click();\r\n }\r\n\r\n protected onEditorEmpty(isEmpty: boolean): void {\r\n this.isDescriptionEmpty.set(isEmpty);\r\n this.isFormValidChanged.emit(this.checkFormValidation());\r\n }\r\n\r\n protected onRemoveThumbnail(): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n this.frameApiService.deleteResource(frameId, fragmentId).subscribe(() => {\r\n this.thumbnail.update((prev) => ({ ...prev!, fileId: null, name: null, resource: null }));\r\n });\r\n }\r\n\r\n protected onToggleDescriptionModal(): void {\r\n this.isDescriptionModalOpen.update((prev) => !prev);\r\n }\r\n\r\n private initUtilityEffect(): void {\r\n const effectRef = effect(() => {\r\n const title = this.title();\r\n\r\n if (!title) {\r\n return;\r\n }\r\n\r\n this.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([prevGroup, currentGruop]: Partial<CuiUtilityFormValues>[]): Partial<CuiUtilityFormValues> {\r\n const keys = Object.keys(currentGruop) as (keyof CuiUtilityFormGroup)[];\r\n const changedFields: Record<string, unknown> = {};\r\n\r\n keys.forEach((key) => {\r\n const prev = prevGroup[key];\r\n const current = currentGruop[key];\r\n\r\n if (prev === current || 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 getFile(files: FileList): void {\r\n const file = files.item(0);\r\n\r\n if (!file) {\r\n return;\r\n }\r\n\r\n if (file.size > this.MAX_FILE_SIZE) {\r\n this.cuiAlertService\r\n .open(this.translocoService.translate('INVALID_FILE_SIZE'), {\r\n status: 'error'\r\n })\r\n .subscribe();\r\n\r\n return;\r\n }\r\n\r\n const isVideo = file.name.split('.').at(-1) === 'mp4';\r\n const url = URL.createObjectURL(file);\r\n\r\n if (isVideo) {\r\n this.getCaptureFromVideo(url, file);\r\n } else {\r\n this.thumbnail.update((prev) => ({ ...prev!, name: file.name, resource: url }));\r\n }\r\n\r\n this.uploadFile(file);\r\n }\r\n\r\n private uploadFile(file: File): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('resource', file);\r\n\r\n this.frameApiService.uploadResource(formData, frameId, fragmentId).subscribe();\r\n }\r\n\r\n private getCaptureFromVideo(url: string, file?: File): void {\r\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\r\n const video = document.createElement('video') as HTMLVideoElement;\r\n\r\n video.src = url;\r\n video.currentTime = 1;\r\n canvas.width = 184;\r\n canvas.height = 120;\r\n\r\n video.onloadeddata = (): void => {\r\n const context = canvas.getContext('2d');\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n\r\n canvas.toBlob((blob) => {\r\n if (!blob) {\r\n return;\r\n }\r\n\r\n const videoCaptureUrl = URL.createObjectURL(blob);\r\n this.thumbnail.update((prev) => ({\r\n ...prev!,\r\n name: (file?.name || prev?.name)!,\r\n resource: videoCaptureUrl\r\n }));\r\n });\r\n };\r\n\r\n video.load();\r\n }\r\n\r\n private checkFormValidation(): boolean {\r\n return !this.isDescriptionEmpty() && !this.form.invalid;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <section class=\"content\">\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"titleId\">\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"titleId\"\r\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n [formControl]=\"form.controls.title\"\r\n />\r\n @if (isTitleError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.title\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label cuiLabel [isRequired]=\"true\" [for]=\"descriptionId\">\r\n {{ t('SHORT_DESCRIPTION') }}\r\n </label>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"descriptionId\"\r\n cuiTextFieldPlaceholder=\"{{t('SHORT_DESCRIPTION')}}...\"\r\n [cuiTextFieldIsError]=\"isDescriptionError\"\r\n [formControl]=\"form.controls.description\"\r\n />\r\n @if (isDescriptionError) {\r\n <cui-general-control-error-hint [control]=\"form.controls.description\" [isVisible]=\"true\" />\r\n }\r\n </cui-form-field>\r\n <section class=\"file\">\r\n <span class=\"title\">{{ t('THUMBNAIL') }}</span>\r\n <div class=\"content__upload\">\r\n <div class=\"content__upload-file\">\r\n @if (thumbnail()?.name; as fileId) {\r\n <div class=\"image\">\r\n <span class=\"image__name\">{{ thumbnail()?.name }}</span>\r\n <!-- TODO: ngSrc -->\r\n <img class=\"image__view\" [src]=\"thumbnailUrl()\" height=\"120\" width=\"184\" alt=\"Thumbnail\" />\r\n </div>\r\n }\r\n <div class=\"content__info\">\r\n <button type=\"button\" cuiButton appearance=\"outlined-gray\" size=\"xxs\" icon=\"cuiIconUpload\"\r\n (click)=\"onSelectFile()\">\r\n {{ uploadButtonName() }}\r\n </button>\r\n @if (thumbnail()?.name) {\r\n <button class=\"content__remove-button\" cuiButton appearance=\"link\" size=\"sm\" type=\"button\"\r\n (click)=\"onRemoveThumbnail()\">\r\n {{ t('REMOVE') }}\r\n </button>\r\n }\r\n\r\n <span class=\"content__accepted\">\r\n {{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n @if (editorId(); as editorId) {\r\n <cui-editor-block\r\n [title]=\"form.controls.title.value || title()\"\r\n [config]=\"config()\"\r\n [editorId]=\"editorId\"\r\n [required]=\"true\"\r\n class=\"editor\"\r\n (editorEmpty)=\"onEditorEmpty($event)\"\r\n ></cui-editor-block>\r\n }\r\n </section>\r\n</ng-container>\r\n","import { Injectable, signal } from '@angular/core';\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 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 }, { allowSignalWrites: true });\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 { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } 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 assigneePurposeType: 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 assigneePurposeType: 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 { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } 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 assigneePurposeType: '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 { CuiTreeStructApiService, CuiNodeChecklistApiService, NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\n\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\nimport { CuiTooltip } from '../../../../directives';\nimport { CuiButtonModule, CuiContextMenuModule, CuiDialogService, CuiLabelModule, CuiSvgModule } 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<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 );\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 { CuiNodeChecklistApiService, NodeCheckListEvaluationCriteria, NodeCheckListEvaluationItemContent, NodeCheckListItem, NodeCheckListItemContentAction, NodeCheckListItemSwitchContentPointer, NodeCheckListItemSwitchContentRequestParams } 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 assigneePurposeType: '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 { CuiNodeChecklistApiService, CuiTreeStructApiService, NodeCheckListItem, NodeCheckListItemContentType } 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 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 }, { allowSignalWrites: true });\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(takeUntilDestroyed(this.destroyRef), finalize(() => this.isLoading.set(false)))\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.CuiSvgComponent","i2.CuiButtonComponent","i2.CuiNotificationComponent","i2","i3.CuiSvgComponent","i4.CuiButtonComponent","i1.CuiDialogsComponent","i2.CuiAlertsComponent","i3.CuiTooltips","i3.CuiButtonComponent","GAP","i1.CuiTooltipDriver","i2.CuiTooltipHover","i3.CuiTooltipPosition","i1.CuiTooltipDirective","i1","i1.CuiSvgComponent","i4.CuiSvgComponent","i3.CuiInputTextComponent","i4.CuiTextFieldIdDirective","i5.CuiTextFieldPlaceholderDirective","i3.CuiFormFieldComponent","i4.CuiHintComponent","i9.CuiLabelComponent","i10.CuiSvgComponent","i11","i1.CuiButtonComponent","i3.CuiHintComponent","i3.CuiTooltipDirective","i2.CuiFormFieldComponent","i6.CuiTextFieldIsErrorDirective","i7.CuiLabelComponent","i8","i2.CuiLabelComponent","i4.CuiToggleComponent","i5","i2.CuiInputTextComponent","i3.CuiTextFieldIdDirective","i4.CuiTextFieldPlaceholderDirective","i5.CuiTextFieldIsErrorDirective","i3.CuiContextMenuComponent","i2.CuiIconButtonComponent","i3.CuiTextFieldPlaceholderDirective","i4.CuiTextFieldIsErrorDirective","i5.CuiSvgComponent","i6.CuiTextareaComponent","i7","i8.CuiInputNumberComponent","i2.CuiCheckboxComponent","i3.CuiLabelComponent","i2.CuiContextMenuComponent"],"mappings":"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"}
1
+ {"version":3,"file":"cuby-ui-core.mjs","sources":["../../../projects/core/components/accordion/accordion.component.ts","../../../projects/core/components/accordion/accordion.template.html","../../../projects/core/components/accordion/accordion.directive.ts","../../../projects/core/components/button/button.options.ts","../../../projects/core/components/svg/svg.component.ts","../../../projects/core/components/svg/svg.template.html","../../../projects/core/components/button/button.component.ts","../../../projects/core/components/button/button.template.html","../../../projects/core/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/core/components/accordion/accordion-item/accordion-item.template.html","../../../projects/core/components/svg/svg.module.ts","../../../projects/core/components/button/button.module.ts","../../../projects/core/components/accordion/accordion.module.ts","../../../projects/core/components/notification/notification.options.ts","../../../projects/core/components/notification/notification.component.ts","../../../projects/core/components/notification/notification.template.html","../../../projects/core/components/notification/notification.module.ts","../../../projects/core/components/alert/alert.tokens.ts","../../../projects/core/components/alert/alert.component.ts","../../../projects/core/components/alert/alert.template.html","../../../projects/core/components/alert/alerts.component.ts","../../../projects/core/components/alert/alerts.template.html","../../../projects/core/components/alert/alert.module.ts","../../../projects/core/components/alert/alert.service.ts","../../../projects/core/components/badge/badge.options.ts","../../../projects/core/components/badge/badge.component.ts","../../../projects/core/components/badge/badge.template.html","../../../projects/core/components/badge/badge.module.ts","../../../projects/core/components/banner/banner.options.ts","../../../projects/core/classes/accessors.ts","../../../projects/core/classes/vehicle.ts","../../../projects/core/classes/driver.ts","../../../projects/core/services/position.service.ts","../../../projects/core/services/theme.options.ts","../../../projects/core/services/theme.service.ts","../../../projects/core/services/loader.options.ts","../../../projects/core/services/loader.service.ts","../../../projects/core/services/visual-viewport.service.ts","../../../projects/core/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/directives/tooltip/tooltip.providers.ts","../../../projects/core/directives/tooltip/tooltip-driver.directive.ts","../../../projects/core/directives/tooltip/tooltip-options.directive.ts","../../../projects/core/directives/tooltip/tooltip-hover.directive.ts","../../../projects/core/directives/tooltip/tooltip-position.directive.ts","../../../projects/core/directives/tooltip/tooltip.directive.ts","../../../projects/core/directives/tooltip/tooltip-pointer.directive.ts","../../../projects/core/directives/tooltip/tooltip-unstyled.component.ts","../../../projects/core/directives/tooltip/tooltip.component.ts","../../../projects/core/directives/tooltip/tooltip-describe.directive.ts","../../../projects/core/directives/tooltip/tooltip-host.directive.ts","../../../projects/core/directives/tooltip/tooltip-manual.directive.ts","../../../projects/core/directives/tooltip/tooltip-overflow.directive.ts","../../../projects/core/directives/tooltip/tooltip.ts","../../../projects/core/components/root/root.module.ts","../../../projects/core/components/context-menu/context-menu.component.ts","../../../projects/core/components/context-menu/context-menu.component.html","../../../projects/core/components/context-menu/context-menu.module.ts","../../../projects/core/components/dropdown/dropdown.directive.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.ts","../../../projects/core/components/dropdown/dropdown-wrapper.component.html","../../../projects/core/components/form-field/form-field.component.ts","../../../projects/core/components/form-field/form-field.template.html","../../../projects/core/components/form-field/form-field.module.ts","../../../projects/core/components/hint/hint.component.ts","../../../projects/core/components/hint/hint.template.html","../../../projects/core/components/hint/hint.module.ts","../../../projects/core/components/icon-button/icon-button.component.ts","../../../projects/core/components/icon-button/icon-button.template.html","../../../projects/core/components/icon-button/icon-button.module.ts","../../../projects/core/directives/text-field-controller/text-field.controller.ts","../../../projects/core/directives/text-field-controller/text-field-icon-left.directive.ts","../../../projects/core/directives/text-field-controller/text-field-id.directive.ts","../../../projects/core/directives/text-field-controller/text-field-is-error.directive.ts","../../../projects/core/directives/text-field-controller/text-field-placeholder.directive.ts","../../../projects/core/directives/text-field-controller/text-field-size.directive.ts","../../../projects/core/directives/text-field-controller/text-field-controller.module.ts","../../../projects/core/directives/text-field-controller/text-field-controller.provider.ts","../../../projects/core/components/input-number/input-number.component.ts","../../../projects/core/components/input-number/input-number.template.html","../../../projects/core/components/input-number/input-number.module.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.ts","../../../projects/core/components/content-wrapper/content-wrapper.component.html","../../../projects/core/components/ghost-input/ghost-input.component.ts","../../../projects/core/components/input-password/input-password.component.ts","../../../projects/core/components/input-password/input-password.template.html","../../../projects/core/components/input-password/input-password.module.ts","../../../projects/core/components/input-text/input-text.component.ts","../../../projects/core/components/input-text/input-text.template.html","../../../projects/core/components/input-text/input-text.module.ts","../../../projects/core/components/input-time/input-time.options.ts","../../../projects/core/components/input-time/input-time.component.ts","../../../projects/core/components/input-time/input-time.template.html","../../../projects/core/components/input-time/input-time.module.ts","../../../projects/core/components/label/label.component.ts","../../../projects/core/components/label/label.template.html","../../../projects/core/components/label/label.module.ts","../../../projects/core/components/letter-box/letter-box.component.ts","../../../projects/core/components/letter-box/letter-box.component.html","../../../projects/core/components/radio/radio.component.ts","../../../projects/core/components/radio/radio.module.ts","../../../projects/core/components/select/select.component.ts","../../../projects/core/components/select/select.template.html","../../../projects/core/components/select/select.module.ts","../../../projects/core/components/empty-state/empty-state.component.ts","../../../projects/core/components/empty-state/empty-state.component.html","../../../projects/core/components/sidebar/sidebar.options.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.service.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.ts","../../../projects/core/components/render-dynamic-components/render-dynamic-components.component.html","../../../projects/core/components/sidebar/sidebar.service.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.ts","../../../projects/core/components/sidebar/sidebar-header/sidebar-header.component.html","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.ts","../../../projects/core/components/sidebar/sidebar-container/sidebar-container.component.html","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.ts","../../../projects/core/components/sidebar/sidebar-navigation/sidebar-navigation.component.html","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.html","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.ts","../../../projects/core/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.html","../../../projects/core/components/card-wrapper/card-wrapper.component.ts","../../../projects/core/components/card-wrapper/card-wrapper.component.html","../../../projects/core/components/layout/layout.component.ts","../../../projects/core/components/layout/layout.component.html","../../../projects/core/components/tabs/tab/tab.component.ts","../../../projects/core/components/tabs/tab/tab.template.html","../../../projects/core/components/tabs/tabs.component.ts","../../../projects/core/components/tabs/tabs.template.html","../../../projects/core/components/tabs/tabs.module.ts","../../../projects/core/components/textarea/textarea.component.ts","../../../projects/core/components/textarea/textarea.module.ts","../../../projects/core/components/toggle/toggle.component.ts","../../../projects/core/components/toggle/toggle.module.ts","../../../projects/core/editor/constants/editor.constants.ts","../../../projects/core/editor/tools/header.tool.ts","../../../projects/core/editor/tools/list.tool.ts","../../../projects/core/editor/tools/selection-base.tool.ts","../../../projects/core/editor/tools/bold.tool.ts","../../../projects/core/editor/tools/italic.tool.ts","../../../projects/core/editor/utils/url.validator.ts","../../../projects/core/editor/services/editor-service.options.ts","../../../projects/core/editor/utils/generate-id.ts","../../../projects/core/editor/services/jtext-api.service.ts","../../../projects/core/editor/services/editor.service.ts","../../../projects/core/editor/services/markers.service.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.ts","../../../projects/core/editor/components/marker-select/component/select-item/select-option.component.html","../../../projects/core/editor/components/marker-select/marker-select.component.ts","../../../projects/core/editor/components/marker-select/marker-select.component.html","../../../projects/core/editor/components/marker-select/marker-select.options.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.ts","../../../projects/core/editor/components/marker-modal/marker-modal.component.html","../../../projects/core/editor/components/marker-modal/marker-modal.options.ts","../../../projects/core/editor/utils/create-link-modal.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.ts","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.component.html","../../../projects/core/editor/components/editor-tool-modal/editor-tool-modal.options.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.ts","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.component.html","../../../projects/core/editor/components/editor-tooltip/editor-tooltip.options.ts","../../../projects/core/editor/components/editor-tool/editor-tool.component.ts","../../../projects/core/editor/pipes/file-size.pipe.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.ts","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.component.html","../../../projects/core/editor/components/editor-attaches-tool/editor-attaches-tool.options.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.ts","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.component.html","../../../projects/core/editor/components/editor-image-tool/editor-image-tool.options.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.ts","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.component.html","../../../projects/core/editor/components/editor-video-tool/editor-video-tool.options.ts","../../../projects/core/editor/utils/create-tool-modal.ts","../../../projects/core/editor/utils/remove-element-tag-wrapper.ts","../../../projects/core/editor/utils/copy-text-to-clipboard.ts","../../../projects/core/editor/utils/create-tooltip.ts","../../../projects/core/editor/utils/file-uploader.ts","../../../projects/core/editor/utils/recalculate-indexes.ts","../../../projects/core/editor/utils/split-html.ts","../../../projects/core/editor/tools/image.tool.ts","../../../projects/core/editor/tools/video.tool.ts","../../../projects/core/editor/tools/attaches.tool.ts","../../../projects/core/editor/tools/marker.tool.ts","../../../projects/core/editor/tools/link-marker.tool.ts","../../../projects/core/editor/tools/custom-marker.tool.ts","../../../projects/core/editor/tools/role-marker.tool.ts","../../../projects/core/editor/tools/tool-marker.tool.ts","../../../projects/core/editor/tools/combined-text-block.tool.ts","../../../projects/core/editor/config/editor.config.ts","../../../projects/core/editor/config/custom-elements.ts","../../../projects/core/editor/config/editor.provider.ts","../../../projects/core/editor/events/editor-drag.event.ts","../../../projects/core/editor/events/editor-keyboard.event.ts","../../../projects/core/editor/events/editor-modal.event.ts","../../../projects/core/editor/events/editor-tooltip.event.ts","../../../projects/core/editor/events/set-editor-events.ts","../../../projects/core/editor/editor.component.ts","../../../projects/core/editor/editor.component.html","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.ts","../../../projects/core/editor/widgets/editor-readonly/editor-readonly.component.html","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.ts","../../../projects/core/editor/widgets/editor-modal/editor-modal.component.html","../../../projects/core/editor/widgets/editor-block/editor-block.component.ts","../../../projects/core/editor/widgets/editor-block/editor-block.component.html","../../../projects/core/interceptors/x-ndjson.interceptor.ts","../../../projects/core/interceptors/loader.interceptor.ts","../../../projects/core/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-modal/utility-modal.options.ts","../../../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/criterion-info/criterion-info.component.ts","../../../projects/core/widgets/criterion-info/criterion-info.component.html","../../../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-readonly-thumbnail/utility-readonly-thumbnail.component.ts","../../../projects/core/widgets/utility-readonly-thumbnail/utility-readonly-thumbnail.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-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/instruction-readonly-info/instruction-readonly-info.component.ts","../../../projects/core/widgets/instruction-readonly-info/instruction-readonly-info.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/cuby-ui-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-accordion',\r\n templateUrl: './accordion.template.html',\r\n styleUrls: ['./accordion.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionComponent {\r\n}\r\n","<ng-content select=\"cui-accordion-item\"></ng-content>\r\n","import { Directive, effect, inject, input, model, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cuiAccordion]',\r\n standalone: true,\r\n host: {\r\n '(click)': 'onToggle($event)'\r\n }\r\n})\r\nexport class CuiAccordionDirective {\r\n private readonly renderer = inject(Renderer2);\r\n\r\n private wrapper!: HTMLElement;\r\n\r\n public readonly content = input.required<HTMLElement>();\r\n public readonly isOpen = model(true);\r\n\r\n constructor() {\r\n this.initWrapperEffect();\r\n this.initOpenChangesEffect();\r\n }\r\n\r\n protected onToggle(event: Event): void {\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n\r\n this.isOpen.update((prev) => !prev);\r\n }\r\n\r\n private initWrapperEffect(): void {\r\n const effectRef = effect(() => {\r\n const content = this.content();\r\n\r\n this.wrapper = this.renderer.createElement('div');\r\n\r\n content.after(this.wrapper);\r\n this.renderer.appendChild(this.wrapper, content);\r\n\r\n effectRef.destroy();\r\n });\r\n }\r\n\r\n private initOpenChangesEffect(): void {\r\n effect(() => {\r\n const isOpen = this.isOpen();\r\n const doAction = isOpen ? this.close : this.open;\r\n\r\n doAction.call(this, this.wrapper);\r\n });\r\n }\r\n\r\n private open(wrapper: HTMLElement): void {\r\n this.renderer.setStyle(wrapper, 'visibility', 'hidden');\r\n this.renderer.setStyle(wrapper, 'height', '0');\r\n this.renderer.setStyle(wrapper, 'overflow', 'hidden')\r\n }\r\n\r\n private close(wrapper: HTMLElement): void {\r\n this.renderer.setStyle(wrapper, 'visibility', 'visible');\r\n this.renderer.setStyle(wrapper, 'height', '');\r\n this.renderer.setStyle(wrapper, 'overflow', '');\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type {\r\n CuiAppearanceAction,\r\n CuiAppearanceActionCyan,\r\n CuiAppearanceActionViolet,\r\n CuiAppearanceDestructive,\r\n CuiAppearanceFlat,\r\n CuiAppearanceGhost,\r\n CuiAppearanceLink,\r\n CuiAppearanceOutlined,\r\n CuiAppearanceOutlinedGray,\r\n CuiAppearanceSecondary,\r\n CuiAppearanceVividSuccess,\r\n CuiShapeRounded,\r\n CuiSizeMd,\r\n CuiSizeSm,\r\n CuiSizeXs,\r\n CuiSizeXxs,\r\n CuiSizeXxxs\r\n} from '../../types';\r\n\r\nexport interface CuiButtonOptions {\r\n readonly appearance:\r\n | CuiAppearanceAction\r\n | CuiAppearanceSecondary\r\n | CuiAppearanceOutlined\r\n | CuiAppearanceOutlinedGray\r\n | CuiAppearanceGhost\r\n | CuiAppearanceFlat\r\n | CuiAppearanceVividSuccess\r\n | CuiAppearanceDestructive\r\n | CuiAppearanceLink\r\n | CuiAppearanceActionViolet\r\n | CuiAppearanceActionCyan\r\n readonly shape: CuiShapeRounded | null;\r\n readonly size:\r\n | CuiSizeXxxs\r\n | CuiSizeXxs\r\n | CuiSizeXs\r\n | CuiSizeSm\r\n | CuiSizeMd;\r\n}\r\n\r\nexport const CUI_BUTTON_DEFAULT_OPTIONS: CuiButtonOptions = {\r\n appearance: 'action',\r\n shape: null,\r\n size: 'sm'\r\n};\r\n\r\nexport const CUI_BUTTON_OPTIONS = new InjectionToken('', {\r\n factory: () => CUI_BUTTON_DEFAULT_OPTIONS\r\n});\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CUI_ICONS, cuiIsIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n selector: 'cui-svg[icon]',\r\n templateUrl: './svg.template.html',\r\n styleUrls: ['./svg.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSvgComponent {\r\n private readonly domSanitizer = inject(DomSanitizer);\r\n\r\n protected safeSvgContent!: SafeHtml;\r\n\r\n @Input()\r\n public width?: number;\r\n\r\n @Input()\r\n public height?: number;\r\n\r\n @Input()\r\n @HostBinding('style.--stroke-width')\r\n public strokeWidth?: number;\r\n\r\n @Input()\r\n @HostBinding('style.--color')\r\n public color?: string;\r\n\r\n @Input()\r\n public set icon(icon: CuiIcon | string) {\r\n // TODO: В данном случае подключаются все иконки (вероятно, можно как-то оптимизировано их подключать)\r\n this.safeSvgContent = this.domSanitizer.bypassSecurityTrustHtml(cuiIsIcon(icon)\r\n ? CUI_ICONS[icon]\r\n : icon);\r\n }\r\n\r\n @HostBinding('class._with-stroke-width')\r\n public get isWithStrokeWidth(): boolean {\r\n return !!this.strokeWidth;\r\n }\r\n\r\n @HostBinding('class._with-color')\r\n public get isWithColor(): boolean {\r\n return !!this.color;\r\n }\r\n}\r\n","<span\r\n [innerHTML]=\"safeSvgContent\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n></span>","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n Input,\r\n ViewChild,\r\n OnInit\r\n} from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_BUTTON_OPTIONS, CuiButtonOptions } from './button.options';\r\n\r\n@Component({\r\n selector: 'button[cuiButton], a[cuiButton]',\r\n templateUrl: './button.template.html',\r\n styleUrls: ['./button.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonComponent implements CuiButtonOptions, OnInit {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly cuiButtonOptions = inject(CUI_BUTTON_OPTIONS);\r\n\r\n private readonly ICON_XS_SIZES = ['xxs', 'xxxs'];\r\n protected readonly AppearanceIconColors: Record<CuiButtonOptions['appearance'], string> = {\r\n action: '--c-action-icon-color',\r\n secondary: '--c-secondary-icon-color',\r\n outlined: '--c-outlined-icon-color',\r\n 'outlined-gray': '--c-outlined-gray-icon-color',\r\n ghost: '--c-ghost-icon-color',\r\n flat: '--c-flat-icon-color',\r\n destructive: '--c-destructive-icon-color',\r\n link: '--c-link-icon-color',\r\n 'action-violet': '--c-action-violet-icon-color',\r\n 'action-cyan': '--c-action-cyan-icon-color',\r\n 'vivid-success': '--c-vivid-success-icon-color'\r\n };\r\n\r\n protected readonly COLOR_BASE_500 = 'var(--cui-base-500)';\r\n protected readonly BUTTON_ICONS_COLOR_BASE_500: CuiButtonOptions['appearance'][] = [\r\n 'secondary',\r\n 'outlined',\r\n 'outlined-gray',\r\n 'ghost'\r\n ];\r\n\r\n protected _appearance = this.cuiButtonOptions.appearance;\r\n protected iconColor = this.getIconColor(this._appearance);\r\n protected _size = this.cuiButtonOptions.size;\r\n protected iconDimensions = {\r\n width: 20,\r\n height: 20\r\n };\r\n\r\n @Input()\r\n @HostBinding('attr.data-shape')\r\n public shape = this.cuiButtonOptions.shape;\r\n\r\n @Input()\r\n @HostBinding('class._disabled')\r\n public disabled = false;\r\n\r\n @Input()\r\n @HostBinding('class._loading')\r\n public isLoaderShown = false;\r\n\r\n @Input()\r\n public icon?: CuiIcon | string;\r\n\r\n @Input()\r\n public iconRight?: CuiIcon | string;\r\n\r\n @Input()\r\n @HostBinding('attr.data-appearance')\r\n public get appearance(): CuiButtonOptions['appearance'] {\r\n return this._appearance;\r\n }\r\n\r\n public set appearance(appearance: CuiButtonOptions['appearance']) {\r\n this._appearance = appearance;\r\n\r\n this.changeIconColor();\r\n }\r\n\r\n @Input()\r\n @HostBinding('attr.data-size')\r\n public get size(): CuiButtonOptions['size'] {\r\n return this._size;\r\n }\r\n\r\n public set size(size: CuiButtonOptions['size']) {\r\n this._size = size;\r\n\r\n if (this.ICON_XS_SIZES.includes(size)) {\r\n this.iconDimensions = {\r\n width: 16,\r\n height: 16\r\n };\r\n\r\n return;\r\n }\r\n\r\n this.iconDimensions = {\r\n width: 20,\r\n height: 20\r\n };\r\n }\r\n\r\n @HostBinding('class._only-icon')\r\n protected containsOnlyIcon = false;\r\n\r\n @HostBinding('disabled')\r\n protected get isDisabled(): boolean {\r\n return this.disabled || this.isLoaderShown;\r\n }\r\n\r\n @ViewChild('content')\r\n protected content!: ElementRef<HTMLSpanElement>;\r\n\r\n public ngOnInit(): void {\r\n this.initIconColor();\r\n }\r\n\r\n private initIconColor(): void {\r\n this.changeIconColor();\r\n }\r\n\r\n private changeIconColor(): void {\r\n Promise.resolve().then(() => {\r\n this.iconColor = this.getIconColor(this._appearance);\r\n\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private getIconColor(appearance: CuiButtonOptions['appearance']): string {\r\n const customIconColor = this.window\r\n .getComputedStyle(this.element)\r\n .getPropertyValue(this.AppearanceIconColors[appearance]);\r\n\r\n if (customIconColor) {\r\n return customIconColor;\r\n }\r\n\r\n if (this.BUTTON_ICONS_COLOR_BASE_500.includes(appearance)) {\r\n return this.COLOR_BASE_500;\r\n }\r\n\r\n return 'currentColor';\r\n }\r\n}\r\n","<span\r\n class=\"c-wrapper\"\r\n [class.c-wrapper_invisible]=\"isLoaderShown\"\r\n>\r\n <cui-svg\r\n *ngIf=\"icon\"\r\n [icon]=\"icon\"\r\n [width]=\"iconDimensions.width\"\r\n [height]=\"iconDimensions.height\"\r\n [color]=\"iconColor\"\r\n ></cui-svg>\r\n <span\r\n #content\r\n class=\"c-content\"\r\n ><ng-content></ng-content></span>\r\n <cui-svg\r\n *ngIf=\"iconRight\"\r\n [icon]=\"iconRight\"\r\n [width]=\"iconDimensions.width\"\r\n [height]=\"iconDimensions.height\"\r\n [color]=\"iconColor\"\r\n ></cui-svg>\r\n</span>\r\n<cui-svg\r\n *ngIf=\"isLoaderShown\"\r\n icon=\"cuiIconLoading\"\r\n [color]=\"iconColor\"\r\n class=\"c-loader\"\r\n></cui-svg>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { CuiAccordionAppearance } from './accordion-item.options';\r\n\r\n@Component({\r\n selector: 'cui-accordion-item',\r\n templateUrl: './accordion-item.template.html',\r\n styleUrls: ['./accordion-item.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAccordionItemComponent {\r\n @Input()\r\n public isOpen = true;\r\n\r\n @Input()\r\n public appearance: CuiAccordionAppearance = 'default';\r\n\r\n @Output()\r\n public readonly isOpenChange = new EventEmitter<boolean>();\r\n\r\n protected get buttonIcon(): CuiIcon {\r\n return this.isOpen ? 'cuiIconChevronDown' : 'cuiIconChevronRight';\r\n }\r\n\r\n @HostBinding('attr.appearance')\r\n public get _appearance(): string {\r\n return this.appearance;\r\n }\r\n\r\n protected onRowToggle(): void {\r\n this.isOpen = !this.isOpen;\r\n\r\n this.isOpenChange.emit(this.isOpen);\r\n }\r\n}\r\n","<header class=\"c-header\">\r\n <button\r\n cuiButton\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"buttonIcon\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <div class=\"c-header__wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</header>\r\n<div *ngIf=\"isOpen\" class=\"c-content\">\r\n <ng-content select=\"[cuiAccordionItemContent]\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSvgComponent } from './svg.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiSvgComponent],\r\n exports: [CuiSvgComponent]\r\n})\r\nexport class CuiSvgModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiButtonComponent } from './button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiButtonComponent],\r\n exports: [CuiButtonComponent]\r\n})\r\nexport class CuiButtonModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiAccordionComponent } from './accordion.component';\r\nimport { CuiAccordionItemComponent } from './accordion-item/accordion-item.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule,\r\n CuiButtonModule\r\n ],\r\n declarations: [\r\n CuiAccordionComponent,\r\n CuiAccordionItemComponent\r\n ],\r\n exports: [\r\n CuiAccordionComponent,\r\n CuiAccordionItemComponent\r\n ]\r\n})\r\nexport class CuiAccordionModule {\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiStatus } from '../../types';\r\n\r\nexport type CuiNotificationIcons = Record<CuiStatus, { icon: string }>;\r\n\r\nexport type CuiNotificationIconOptions = Record<CuiStatus, { color: string }>;\r\n\r\nexport interface CuiNotificationOptions {\r\n readonly status: CuiStatus;\r\n readonly mode: 'default' | 'light';\r\n}\r\n\r\nexport const CUI_NOTIFICATION_DEFAULT_OPTIONS: CuiNotificationOptions = {\r\n status: 'info',\r\n mode: 'default'\r\n};\r\n\r\nexport const CUI_NOTIFICATION_OPTIONS = cuiCreateToken(CUI_NOTIFICATION_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_NOTIFICATION_ICONS: CuiNotificationIcons = {\r\n info: {\r\n icon: 'cuiIconInfo'\r\n },\r\n success: {\r\n icon: 'cuiIconCheckCircle'\r\n },\r\n alert: {\r\n icon: 'cuiIconAlertTriangle'\r\n },\r\n error: {\r\n icon: 'cuiIconXCircle'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE: CuiNotificationIconOptions = {\r\n info: {\r\n color: 'var(--c-info-icon-color)'\r\n },\r\n success: {\r\n color: 'var(--cui-green-500)'\r\n },\r\n alert: {\r\n color: 'var(--cui-yellow-400)'\r\n },\r\n error: {\r\n color: 'var(--cui-danger)'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE: CuiNotificationIconOptions = {\r\n info: {\r\n color: 'var(--cui-info)'\r\n },\r\n success: {\r\n color: 'var(--cui-green-700)'\r\n },\r\n alert: {\r\n color: 'var(--cui-yellow-400)'\r\n },\r\n error: {\r\n color: 'var(--cui-danger)'\r\n },\r\n} as const;\r\n\r\nexport const CUI_NOTIFICATION_ICON_OPTIONS: Record<CuiNotificationOptions['mode'], CuiNotificationIconOptions> = {\r\n default: CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE,\r\n light: CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE\r\n}","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport {\r\n CUI_NOTIFICATION_ICON_OPTIONS,\r\n CuiNotificationIconOptions,\r\n CuiNotificationOptions\r\n} from './notification.options';\r\nimport { CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS } from './notification.options';\r\n\r\n@Component({\r\n selector: 'cui-notification',\r\n templateUrl: './notification.template.html',\r\n styleUrls: ['./notification.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiNotificationComponent implements CuiNotificationOptions, OnInit {\r\n private readonly cuiNotificationOptions = inject(CUI_NOTIFICATION_OPTIONS);\r\n\r\n protected readonly ICONS = CUI_NOTIFICATION_ICONS;\r\n protected readonly ICON_OPTIONS = CUI_NOTIFICATION_ICON_OPTIONS;\r\n\r\n protected iconOptions!: CuiNotificationIconOptions;\r\n\r\n @Input()\r\n @HostBinding('attr.data-status')\r\n public status = this.cuiNotificationOptions.status;\r\n\r\n @Input()\r\n @HostBinding('attr.data-mode')\r\n public mode = this.cuiNotificationOptions.mode;\r\n\r\n @Input()\r\n public isCloseable = false;\r\n\r\n @Output()\r\n public readonly closed = new EventEmitter<void>();\r\n\r\n public ngOnInit(): void {\r\n this.initIconOptions();\r\n }\r\n\r\n protected onClose(): void {\r\n this.closed.next();\r\n }\r\n\r\n private initIconOptions(): void {\r\n this.iconOptions = this.ICON_OPTIONS[this.mode];\r\n }\r\n}\r\n","<cui-svg\r\n class=\"c-icon\"\r\n [icon]=\"ICONS[status].icon\"\r\n [color]=\"iconOptions[status].color\"\r\n></cui-svg>\r\n<div class=\"c-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n<button\r\n *ngIf=\"isCloseable\"\r\n class=\"c-button\"\r\n (click)=\"onClose()\"\r\n>\r\n <cui-svg\r\n icon=\"cuiIconX\"\r\n color=\"var(--cui-gray-0)\"\r\n />\r\n</button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiNotificationComponent } from './notification.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiNotificationComponent],\r\n exports: [CuiNotificationComponent]\r\n})\r\nexport class CuiNotificationModule {\r\n}\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { cuiCreateTokenFromFactory, CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\nimport { CUI_NOTIFICATION_OPTIONS } from '../notification';\r\n\r\nexport const CUI_ALERTS = cuiCreateToken(\r\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiAlertOptions>>>([])\r\n);\r\n\r\nexport const CUI_ALERT_DEFAULT_OPTIONS: Omit<CuiAlertOptions, 'status'> = {\r\n label: '',\r\n needAutoClose: true,\r\n isCloseable: true,\r\n mode: 'default',\r\n position: 'right',\r\n resizing: 'fixed'\r\n};\r\n\r\nexport const CUI_ALERT_OPTIONS = cuiCreateTokenFromFactory(\r\n () => ({\r\n ...CUI_ALERT_DEFAULT_OPTIONS,\r\n ...inject(CUI_NOTIFICATION_OPTIONS)\r\n })\r\n);\r\n\r\nexport const CUI_ALERT_CONTEXT = new InjectionToken<CuiPopover<CuiAlertOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, HostBinding } from '@angular/core';\r\n\r\nimport { CUI_ALERT_CONTEXT } from './alert.tokens';\r\nimport type { CuiAlertResizing } from './alert.types';\r\n\r\n@Component({\r\n selector: 'cui-alert',\r\n templateUrl: './alert.template.html',\r\n styleUrls: ['./alert.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiAlertComponent implements OnInit {\r\n protected readonly context = inject(CUI_ALERT_CONTEXT);\r\n\r\n protected readonly AUTO_CLOSE_DURATION_IN_MILLISECONDS = 3000;\r\n\r\n @HostBinding('attr.data-resizing')\r\n protected get resizing(): CuiAlertResizing {\r\n return this.context.resizing;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initAutoClose();\r\n }\r\n\r\n protected onClosed(): void {\r\n this.context.$implicit.complete();\r\n }\r\n\r\n private initAutoClose(): void {\r\n if (!this.context.needAutoClose) {\r\n return;\r\n }\r\n\r\n setTimeout(this.onClosed.bind(this), this.AUTO_CLOSE_DURATION_IN_MILLISECONDS);\r\n }\r\n}\r\n","<cui-notification\r\n [status]=\"context.status\"\r\n [mode]=\"context.mode\"\r\n [isCloseable]=\"context.isCloseable\"\r\n (closed)=\"onClosed()\"\r\n>\r\n <h2\r\n *ngIf=\"context.label\"\r\n class=\"c-heading\"\r\n >\r\n {{ context.label }}\r\n </h2>\r\n {{ context.content }}\r\n</cui-notification>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_ALERT_CONTEXT, CUI_ALERTS } from './alert.tokens';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-alerts',\r\n templateUrl: './alerts.template.html',\r\n styleUrls: ['./alerts.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiAlertsComponent implements OnInit {\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n protected readonly alerts$: Observable<ReadonlyArray<CuiPopover<CuiAlertOptions>>> = inject(CUI_ALERTS);\r\n protected alertInjectors!: ReadonlyArray<Injector>;\r\n\r\n public ngOnInit(): void {\r\n this.initAlertInjectorsSubscription();\r\n }\r\n\r\n protected trackByFn(_: number, alert: CuiPopover<CuiAlertOptions>): string {\r\n return alert.id;\r\n }\r\n\r\n protected alertsMatcher(alert: CuiPopover<CuiAlertOptions>, position: string): boolean {\r\n return alert.position === position;\r\n }\r\n\r\n protected initAlertInjectorsSubscription(): void {\r\n this.alerts$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(dialogs => this.alertInjectors = dialogs.map(useValue => Injector.create({\r\n providers: [{ provide: CUI_ALERT_CONTEXT, useValue }]\r\n })));\r\n }\r\n}\r\n","<ng-container *cuiLet=\"alerts$ | async as alerts\">\r\n <div class=\"c-wrapper c-wrapper_position_center\">\r\n <ng-container *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'center'; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n </ng-container>\r\n </div>\r\n <div class=\"c-wrapper c-wrapper_position_right\">\r\n <ng-container *ngFor=\"let alert of alerts! | cuiFilter: alertsMatcher: 'right'; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"alert.component; injector: alertInjectors[i]\" />\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiFilterPipe, CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport { CuiAlertsComponent } from './alerts.component';\r\nimport { CuiNotificationModule } from '../notification';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiFilterPipe,\r\n CuiNotificationModule,\r\n CuiLetDirective\r\n ],\r\n declarations: [\r\n CuiAlertComponent,\r\n CuiAlertsComponent\r\n ],\r\n exports: [\r\n CuiAlertComponent,\r\n CuiAlertComponent,\r\n CuiAlertsComponent\r\n ]\r\n})\r\nexport class CuiAlertModule {\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_ALERT_OPTIONS, CUI_ALERTS } from './alert.tokens';\r\nimport { CuiAlertComponent } from './alert.component';\r\nimport type { CuiAlertOptions } from './alert.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n useFactory: () => new CuiAlertService(CUI_ALERTS, CuiAlertComponent, inject(CUI_ALERT_OPTIONS))\r\n})\r\nexport class CuiAlertService extends CuiPopoverService<CuiAlertOptions> {\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport interface CuiBadgeOptions {\r\n readonly color: 'light-blue' | 'yellow' | 'green' | 'gray' | 'dark-gray' | 'red' | 'violet';\r\n readonly size: CuiSizeSm | CuiSizeMd;\r\n readonly isWithDot: boolean;\r\n}\r\n\r\nexport const CUI_BADGE_DEFAULT_OPTIONS: CuiBadgeOptions = {\r\n color: 'light-blue',\r\n size: 'sm',\r\n isWithDot: false\r\n};\r\n\r\nexport const CUI_BADGE_OPTIONS = cuiCreateToken(CUI_BADGE_DEFAULT_OPTIONS);","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\n\r\nimport type { CuiBadgeOptions } from './badge.options';\r\nimport { CUI_BADGE_OPTIONS } from './badge.options';\r\n\r\n@Component({\r\n selector: 'cui-badge',\r\n templateUrl: './badge.template.html',\r\n styleUrls: ['./badge.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBadgeComponent implements CuiBadgeOptions {\r\n private readonly options = inject(CUI_BADGE_OPTIONS);\r\n\r\n @Input()\r\n @HostBinding('attr.data-color')\r\n public color = this.options.color;\r\n\r\n @Input()\r\n @HostBinding('attr.data-size')\r\n public size = this.options.size;\r\n\r\n @Input()\r\n public isWithDot = this.options.isWithDot;\r\n}\r\n","<span\r\n *ngIf=\"isWithDot\"\r\n class=\"c-dots\"\r\n></span>\r\n<ng-content />","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiBadgeComponent],\r\n exports: [CuiBadgeComponent]\r\n})\r\nexport class CuiBadgeModule {\r\n}\r\n","import type { CuiStatus } from '../../types';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type CuiBannerIconOptions = {\r\n [k in CuiStatus]: {\r\n icon: CuiIcon;\r\n color: string;\r\n }\r\n}\r\n\r\nexport interface CuiBannerOptions {\r\n readonly status: CuiStatus;\r\n}\r\n\r\nexport const CUI_BANNER_DEFAULT_OPTIONS: CuiBannerOptions = {\r\n status: 'info'\r\n};\r\n\r\nexport const CUI_BANNER_OPTIONS = cuiCreateToken(CUI_BANNER_DEFAULT_OPTIONS);\r\n","import type {AbstractType, ExistingProvider, FactoryProvider, Type} from '@angular/core';\r\nimport {Optional, SkipSelf} from '@angular/core';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\nimport type {CuiPoint} from '../types';\r\n\r\nexport abstract class CuiAccessor {\r\n public abstract readonly type: string;\r\n}\r\n\r\nexport abstract class CuiPositionAccessor extends CuiAccessor {\r\n /*\r\n * TODO @deprecated switching from DOMRect to HTMLElement in v5\r\n */\r\n public abstract getPosition(rect: DOMRect, element?: HTMLElement): CuiPoint;\r\n}\r\n\r\nexport abstract class CuiRectAccessor extends CuiAccessor {\r\n public abstract getClientRect(): DOMRect;\r\n}\r\n\r\nexport function cuiProvideAccessor<T extends CuiAccessor>(\r\n provide: AbstractType<T>,\r\n type: string,\r\n fallback: Type<T>,\r\n): FactoryProvider {\r\n return {\r\n provide,\r\n deps: [[new SkipSelf(), new Optional(), provide], fallback],\r\n useFactory: cuiFallbackAccessor<T>(type),\r\n };\r\n}\r\n\r\nexport function cuiFallbackAccessor<T extends CuiAccessor>(\r\n type: string,\r\n): (accessors: readonly T[] | null, fallback: T) => T {\r\n return (accessors, fallback) =>\r\n accessors?.find?.(\r\n (accessor) => accessor !== fallback && accessor.type === type,\r\n ) || fallback;\r\n}\r\n\r\nexport function cuiPositionAccessorFor(\r\n type: string,\r\n fallback: Type<CuiPositionAccessor>,\r\n): FactoryProvider {\r\n return cuiProvideAccessor(CuiPositionAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiRectAccessorFor(\r\n type: string,\r\n fallback: Type<CuiRectAccessor>,\r\n): FactoryProvider {\r\n return cuiProvideAccessor(CuiRectAccessor, type, fallback);\r\n}\r\n\r\nexport function cuiAsPositionAccessor(\r\n accessor: Type<CuiPositionAccessor>,\r\n): ExistingProvider {\r\n return cuiProvide(CuiPositionAccessor, accessor, true);\r\n}\r\n\r\nexport function cuiAsRectAccessor(accessor: Type<CuiRectAccessor>): ExistingProvider {\r\n return cuiProvide(CuiRectAccessor, accessor, true);\r\n}\r\n","import type {ExistingProvider, Type} from '@angular/core';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\n\r\nexport abstract class CuiVehicle {\r\n public abstract readonly type: string;\r\n public abstract toggle(value: boolean): void;\r\n}\r\n\r\nexport function cuiAsVehicle(vehicle: Type<CuiVehicle>): ExistingProvider {\r\n return cuiProvide(CuiVehicle, vehicle, true);\r\n}\r\n","import type {AfterViewInit, ExistingProvider, Type} from '@angular/core';\r\nimport {DestroyRef, Directive, inject} from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {cuiProvide} from '@cuby-ui/cdk';\r\nimport {distinctUntilChanged, merge, Observable} from 'rxjs';\r\n\r\nimport {CuiVehicle} from './vehicle';\r\n\r\nexport abstract class CuiDriver extends Observable<boolean> {\r\n public abstract readonly type: string;\r\n}\r\n\r\nexport function cuiAsDriver(driver: Type<CuiDriver>): ExistingProvider {\r\n return cuiProvide(CuiDriver, driver, true);\r\n}\r\n\r\n@Directive()\r\nexport abstract class CuiDriverDirective implements AfterViewInit {\r\n public abstract type: string;\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly drivers: readonly CuiDriver[] =\r\n inject<any>(CuiDriver, {self: true, optional: true}) || [];\r\n\r\n private readonly vehicles: readonly CuiVehicle[] = inject<any>(CuiVehicle, {\r\n self: true,\r\n optional: true,\r\n });\r\n\r\n public ngAfterViewInit(): void {\r\n const vehicle = this.vehicles?.find(({type}) => type === this.type);\r\n\r\n merge(...this.drivers.filter(({type}) => type === this.type))\r\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n .subscribe((value) => {\r\n vehicle?.toggle(value);\r\n });\r\n }\r\n}\r\n","import {inject, Injectable, NgZone} from '@angular/core';\r\nimport {CUI_ANIMATION_FRAME} from '@cuby-ui/cdk';\r\nimport {EMPTY_CLIENT_RECT, cuiInjectElement, cuiZonefree} from '@cuby-ui/cdk';\r\nimport {CuiPositionAccessor} from '../classes';\r\nimport type {CuiPoint} from '../types';\r\nimport {finalize, map, Observable, startWith} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CuiPositionService extends Observable<CuiPoint> {\r\n private readonly el = cuiInjectElement();\r\n private readonly accessor = inject(CuiPositionAccessor);\r\n\r\n constructor() {\r\n const animationFrame$ = inject(CUI_ANIMATION_FRAME);\r\n const zone = inject(NgZone);\r\n\r\n super((subscriber) =>\r\n animationFrame$\r\n .pipe(\r\n startWith(null),\r\n map(() =>\r\n this.accessor.getPosition(\r\n this.el.getBoundingClientRect(),\r\n this.el,\r\n ),\r\n ),\r\n cuiZonefree(zone),\r\n finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT)),\r\n )\r\n .subscribe(subscriber),\r\n );\r\n }\r\n}\r\n","import { cuiCreateToken } from '@cuby-ui/cdk';\r\n\r\nexport type CuiTheme = 'light' | 'dark';\r\n\r\nexport const CUI_THEME_STORAGE_DEFAULT_KEY = 'cuiTheme';\r\n\r\nexport const CUI_DEFAULT_THEME: CuiTheme = 'light';\r\n\r\nexport const CUI_THEME_STORAGE_KEY = cuiCreateToken(CUI_THEME_STORAGE_DEFAULT_KEY);\r\n\r\nexport const CUI_THEME = cuiCreateToken<CuiTheme>(CUI_DEFAULT_THEME);","import { inject, Injectable } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiTheme } from './theme.options';\r\nimport { CUI_THEME, CUI_THEME_STORAGE_KEY } from './theme.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiThemeService extends BehaviorSubject<CuiTheme> {\r\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n private readonly key = inject(CUI_THEME_STORAGE_KEY);\r\n\r\n constructor() {\r\n super(\r\n inject(CUI_LOCAL_STORAGE).getItem(inject(CUI_THEME_STORAGE_KEY)) as CuiNullable<CuiTheme>\r\n ?? inject(CUI_THEME)\r\n );\r\n }\r\n\r\n public override next(theme: CuiTheme): void {\r\n this.localStorage.setItem(this.key, theme);\r\n super.next(theme);\r\n }\r\n\r\n // При работе только двух тем\r\n public switch(): void {\r\n this.next(this.value === 'light' ? 'dark' : 'light');\r\n }\r\n}","import type { CuiValueOf } from '@cuby-ui/cdk';\r\n\r\nexport const CuiLoadingState = {\r\n LOADING: 'loading',\r\n COMPLETED: 'completed',\r\n INITIAL: 'initial'\r\n} as const;\r\n\r\nexport type CuiLoadingState = CuiValueOf<typeof CuiLoadingState>;\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nimport { CuiLoadingState } from './loader.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiLoaderService {\r\n private readonly RESET_TO_INITIAL_TIME = 1000;\r\n\r\n private readonly loaderStateSignal = signal<CuiLoadingState>(CuiLoadingState.INITIAL);\r\n\r\n private requestCount = 0;\r\n private resetLoadingStateTimerId?: ReturnType<typeof setTimeout>;\r\n\r\n public readonly loaderState = this.loaderStateSignal.asReadonly();\r\n\r\n constructor() {\r\n AngularOutsideLoaderService.setInstance(this);\r\n }\r\n\r\n public setLoading(): void {\r\n this.requestCount++;\r\n // need to use without queueMicrotask (error)\r\n queueMicrotask(() => this.loaderStateSignal.set(CuiLoadingState.LOADING));\r\n }\r\n\r\n public setCompleted(): void {\r\n this.requestCount = this.requestCount && this.requestCount - 1;\r\n\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n return this.loaderStateSignal.set(CuiLoadingState.COMPLETED);\r\n }\r\n\r\n public handleCompletedRequest(): void {\r\n this.setCompleted();\r\n clearTimeout(this.resetLoadingStateTimerId);\r\n\r\n this.resetLoadingStateTimerId = setTimeout(() => {\r\n if (this.requestCount) {\r\n return;\r\n }\r\n\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }, this.RESET_TO_INITIAL_TIME);\r\n }\r\n\r\n public reset(): void {\r\n this.requestCount = 0;\r\n this.resetLoadingStateTimerId = undefined;\r\n this.loaderStateSignal.set(CuiLoadingState.INITIAL);\r\n }\r\n}\r\n\r\n// NEED TO USE LoaderService OUTSIDE ANGULAR INJECTION CONTEXT\r\nexport class AngularOutsideLoaderService {\r\n private static instance: CuiLoaderService;\r\n\r\n public static getInstance(): CuiLoaderService {\r\n if (!this.instance) {\r\n throw new Error(\"The instance hasn't been initialized yet\");\r\n }\r\n\r\n return this.instance;\r\n }\r\n\r\n public static setInstance(instance: CuiLoaderService): void {\r\n this.instance = instance;\r\n }\r\n}\r\n","import {inject, Injectable} from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport {CUI_IS_WEBKIT} from '@cuby-ui/cdk';\r\nimport type {CuiPoint} from '../types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CuiVisualViewportService {\r\n private readonly isWebkit = inject(CUI_IS_WEBKIT);\r\n private readonly win = inject(CUI_WINDOW);\r\n\r\n // https://bugs.webkit.org/show_bug.cgi?id=207089\r\n public correct(point: CuiPoint): CuiPoint {\r\n return this.isWebkit\r\n ? [\r\n point[0] + (this.win.visualViewport?.offsetTop ?? 0),\r\n point[1] + (this.win.visualViewport?.offsetLeft ?? 0),\r\n ]\r\n : point;\r\n }\r\n}\r\n","import { inject, signal } from '@angular/core';\r\nimport type { CuiTokenExchangeRequestBody, CuiTokenResponse } from '@cuby-ui/api';\r\nimport { CuiExchangeContextApiService } from '@cuby-ui/api';\r\nimport type { TokenResponse } from 'angular-oauth2-oidc';\r\nimport { OAuthErrorEvent, OAuthService, OAuthSuccessEvent } from 'angular-oauth2-oidc';\r\nimport type { Observable } from 'rxjs';\r\nimport { catchError, from, map, of, switchMap, tap, throwError } from 'rxjs';\r\n\r\nimport type { CuiTokenData } from './token.options';\r\n\r\nabstract class CuiToken extends OAuthService {\r\n private readonly tokenData = signal<{ [key: string]: CuiTokenData }>({});\r\n\r\n private readonly CONVERT_TO_SECONDS_CONSTANT = 1000;\r\n\r\n public getRefreshTokenExpiration(): number {\r\n const refreshTokenExpiration = this.getTokenDataFromStore(this.getRefreshToken());\r\n\r\n return refreshTokenExpiration.exp;\r\n }\r\n\r\n public getAccessTokenData<T extends CuiTokenData = CuiTokenData>(): T {\r\n const token = this.getAccessToken();\r\n\r\n if (!token) {\r\n throw new Error('No access token found');\r\n }\r\n\r\n return this.getTokenDataFromStore(token) as T;\r\n }\r\n\r\n public checkIsTokenExpired(): boolean {\r\n const token = this.getAccessToken();\r\n\r\n if (!token) {\r\n return true;\r\n }\r\n\r\n return this.checkTokenExpired(this.getAccessTokenExpiration() / this.CONVERT_TO_SECONDS_CONSTANT);\r\n }\r\n\r\n public checkIsRefreshTokenExpired(): boolean {\r\n const token = this.getRefreshToken();\r\n\r\n if (!token) {\r\n return true;\r\n }\r\n\r\n return this.checkTokenExpired(this.getRefreshTokenExpiration());\r\n }\r\n\r\n protected getTokenDataFromStore(token: string): CuiTokenData {\r\n const tokenData = this.tokenData()[token];\r\n\r\n if (tokenData) {\r\n return tokenData;\r\n }\r\n\r\n const currentTokenData = this.parseToken(token);\r\n\r\n this.tokenData.update((prev) => ({ ...prev, [token]: currentTokenData }));\r\n\r\n return currentTokenData;\r\n }\r\n\r\n private parseToken(token: string): CuiTokenData {\r\n try {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n\r\n return JSON.parse(atob(base64));\r\n } catch {\r\n throw new Error('Invalid token');\r\n }\r\n }\r\n\r\n private checkTokenExpired(expiredTimeInSeconds: number): boolean {\r\n const currentTime = Date.now() / this.CONVERT_TO_SECONDS_CONSTANT;\r\n\r\n return currentTime >= expiredTimeInSeconds;\r\n }\r\n}\r\n\r\nexport class CuiTokenBase extends CuiToken {\r\n private readonly exchangeContextApiService = inject(CuiExchangeContextApiService);\r\n private readonly EXCHANGE_TOKEN_VALUE = 'employee_session';\r\n\r\n // TODO: override refreshToken with custom refresh token request to the backend\r\n public override refreshToken(): Promise<TokenResponse> {\r\n try {\r\n const tokenData = this.getAccessTokenData();\r\n\r\n if (this.EXCHANGE_TOKEN_VALUE in tokenData) {\r\n return this.refreshExchangedToken();\r\n }\r\n } catch (error) {\r\n this.logger.error('Error refreshing token', error);\r\n }\r\n\r\n return super.refreshToken();\r\n }\r\n\r\n public refreshExchangedToken(): Promise<CuiTokenResponse> {\r\n return new Promise((resolve, reject) =>\r\n this.exchangeContextApiService\r\n .refresh(this.getRefreshToken())\r\n .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))\r\n .subscribe({\r\n next: (tokenResponse) => {\r\n this.setTokenResponse(tokenResponse);\r\n\r\n resolve(tokenResponse);\r\n },\r\n error: (error) => {\r\n this.logger.error('Error refreshing token', error);\r\n this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\r\n\r\n reject(error);\r\n }\r\n })\r\n );\r\n }\r\n\r\n public exchangeToken(params: CuiTokenExchangeRequestBody): Observable<CuiTokenResponse> {\r\n return this.exchangeContextApiService.exchange(params).pipe(\r\n switchMap((tokenResponse) => this.setIdToken(tokenResponse)),\r\n tap((tokenResponse) => this.setTokenResponse(tokenResponse)),\r\n catchError((error) => {\r\n this.logger.error('Error exchanging token', error);\r\n this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));\r\n\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n private setTokenResponse(tokenResponse: CuiTokenResponse): void {\r\n const expiresIn = tokenResponse.expires_in || this.fallbackAccessTokenExpirationTimeInSec!;\r\n\r\n this.debug('tokenResponse', tokenResponse);\r\n this.storeAccessTokenResponse(\r\n tokenResponse.access_token,\r\n tokenResponse.refresh_token,\r\n expiresIn,\r\n tokenResponse.scope\r\n );\r\n\r\n this.eventsSubject.next(new OAuthSuccessEvent('token_received'));\r\n this.eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));\r\n }\r\n\r\n private setIdToken(tokenResponse: CuiTokenResponse): Observable<CuiTokenResponse> {\r\n if (!this.oidc || !tokenResponse.id_token) {\r\n return of(tokenResponse);\r\n }\r\n\r\n return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(\r\n tap((result) => this.storeIdToken(result)),\r\n map(() => tokenResponse)\r\n );\r\n }\r\n}\r\n","import type { AuthConfig, TokenResponse } from 'angular-oauth2-oidc';\r\nimport { OAuthInfoEvent } from 'angular-oauth2-oidc';\r\nimport { filter } from 'rxjs';\r\n\r\nimport { CuiTokenBase } from './token.service';\r\n\r\nexport abstract class CuiAuthBase extends CuiTokenBase {\r\n\r\n public abstract initAuth(authConfig: AuthConfig): Promise<void>;\r\n\r\n public override createLoginUrl(state?: string, loginHint?: string, customRedirectUri?: string, noPrompt?: boolean, params?: object): Promise<string> {\r\n return super.createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params);\r\n }\r\n\r\n public async useCheckTokenFlow(loginCallback: () => void): Promise<TokenResponse | void> {\r\n const isAccessTokenExpired = this.checkIsTokenExpired();\r\n const isRefreshTokenExpired = this.checkIsRefreshTokenExpired();\r\n\r\n if (isRefreshTokenExpired) {\r\n return loginCallback();\r\n }\r\n\r\n if (!isAccessTokenExpired) {\r\n return;\r\n }\r\n\r\n return await this.refreshToken();\r\n }\r\n\r\n public initAuthRefreshEvents(loginCallback: () => void): void {\r\n this.events.pipe(filter((event) => event instanceof OAuthInfoEvent)).subscribe((event) => {\r\n if (event.type !== 'token_expires' || event.info !== 'access_token') {\r\n return;\r\n }\r\n\r\n if (!this.hasValidAccessToken() || !this.getRefreshToken()) {\r\n return loginCallback();\r\n }\r\n\r\n this.refreshToken();\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\r\n\r\nimport type { CuiBannerIconOptions, CuiBannerOptions } from './banner.options';\r\nimport { CUI_BANNER_OPTIONS } from './banner.options';\r\nimport type { CuiTheme } from '../../services';\r\nimport { CuiThemeService } from '../../services';\r\nimport { map } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'cui-banner',\r\n templateUrl: './banner.template.html',\r\n styleUrls: ['./banner.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBannerComponent implements CuiBannerOptions {\r\n private readonly options = inject(CUI_BANNER_OPTIONS);\r\n protected readonly theme$ = inject(CuiThemeService);\r\n\r\n protected readonly ICON_OPTIONS: CuiBannerIconOptions = {\r\n info: {\r\n icon: 'cuiIconInfo',\r\n color: 'var(--c-info-icon-color)'\r\n },\r\n success: {\r\n icon: 'cuiIconCheckCircle',\r\n color: 'var(--cui-success)'\r\n },\r\n alert: {\r\n icon: 'cuiIconAlertTriangle',\r\n color: 'var(--c-alert-icon-color)'\r\n },\r\n error: {\r\n icon: 'cuiIconAlertCircle',\r\n color: 'var(--cui-danger)'\r\n },\r\n };\r\n protected readonly THEME_CLOSE_BUTTON_ICON_COLORS: Record<CuiTheme, string> = {\r\n light: 'var(--cui-gray-500)',\r\n dark: 'var(--cui-gray-0)'\r\n }\r\n\r\n @Input()\r\n @HostBinding('attr.data-status')\r\n public status = this.options.status;\r\n\r\n @Input()\r\n public isCloseable = true;\r\n\r\n @Input()\r\n public label?: string;\r\n\r\n @Input()\r\n public actionButtonText?: string;\r\n\r\n @Output()\r\n public actionButtonClicked = new EventEmitter<void>();\r\n\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n protected onAction(): void {\r\n this.actionButtonClicked.emit();\r\n }\r\n\r\n protected onClose(): void {\r\n this.closed.emit();\r\n }\r\n}\r\n","<cui-svg\r\n *cuiLet=\"ICON_OPTIONS[status] as iconOption\"\r\n [icon]=\"iconOption.icon\"\r\n [color]=\"iconOption.color\"\r\n class=\"c-icon\"\r\n></cui-svg>\r\n<div class=\"c-wrapper\">\r\n <h2\r\n *ngIf=\"label\"\r\n class=\"c-heading\"\r\n >\r\n {{ label }}\r\n </h2>\r\n <ng-content></ng-content>\r\n <button\r\n cuiButton\r\n *ngIf=\"actionButtonText\"\r\n appearance=\"link\"\r\n class=\"c-action\"\r\n (click)=\"onAction()\"\r\n >\r\n {{ actionButtonText }}\r\n </button>\r\n</div>\r\n<button\r\n *ngIf=\"isCloseable\"\r\n class=\"c-button\"\r\n (click)=\"onClose()\"\r\n>\r\n\r\n@if (theme$ | async; as theme) {\r\n <cui-svg\r\n icon=\"cuiIconX\"\r\n [color]=\"THEME_CLOSE_BUTTON_ICON_COLORS[theme]\"\r\n />\r\n}\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiBannerComponent } from './banner.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiButtonModule } from '../button';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiButtonModule\r\n ],\r\n declarations: [CuiBannerComponent],\r\n exports: [CuiBannerComponent]\r\n})\r\nexport class CuiBannerModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef } from '@angular/core';\r\n\r\nimport { CuiItemDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n selector: 'cui-breadcrumbs',\r\n templateUrl: './breadcrumbs.template.html',\r\n styleUrls: ['./breadcrumbs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbsComponent {\r\n @ContentChildren(CuiItemDirective, { read: TemplateRef })\r\n protected readonly breadcrumbs!: QueryList<TemplateRef<unknown>>;\r\n}\r\n","<ng-container *ngIf=\"breadcrumbs.changes | async\"/>\r\n<ng-container *ngFor=\"let breadcrumb of breadcrumbs; let isLast = last\">\r\n <ng-container *ngTemplateOutlet=\"breadcrumb\" />\r\n <cui-svg\r\n *ngIf=\"!isLast\"\r\n icon=\"cuiIconSlashDivider\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: '[cuiBreadcrumb]',\r\n templateUrl: './breadcrumb.template.html',\r\n styleUrls: ['./breadcrumb.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiBreadcrumbComponent {\r\n @Input()\r\n public isLast = false;\r\n}\r\n","<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiBreadcrumbsComponent } from './breadcrumbs.component';\r\nimport { CuiBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [\r\n CuiBreadcrumbsComponent,\r\n CuiBreadcrumbComponent\r\n ],\r\n exports: [\r\n CuiBreadcrumbsComponent,\r\n CuiBreadcrumbComponent\r\n ]\r\n})\r\nexport class CuiBreadcrumbsModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-button-group',\r\n templateUrl: './button-group.template.html',\r\n styleUrls: ['./button-group.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiButtonGroupComponent {\r\n}\r\n","<ng-content select=\"button[cuiButton], a[cuiButton]\"></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiButtonGroupComponent } from './button-group.component';\r\n\r\n@NgModule({\r\n declarations: [CuiButtonGroupComponent],\r\n exports: [CuiButtonGroupComponent]\r\n})\r\nexport class CuiButtonGroupModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"checkbox\"][cuiCheckbox]',\r\n template: '',\r\n styleUrls: ['./checkbox.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckboxComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiCheckboxComponent } from './checkbox.component';\r\n\r\n@NgModule({\r\n declarations: [CuiCheckboxComponent],\r\n exports: [CuiCheckboxComponent]\r\n})\r\nexport class CuiCheckboxModule {\r\n}\r\n","export const CUI_ROOT_SELECTOR = 'cui-root';","import { InjectionToken } from '@angular/core';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { cuiCreateToken } from '@cuby-ui/cdk';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\nexport const CUI_DIALOGS = cuiCreateToken(\r\n new BehaviorSubject<ReadonlyArray<CuiPopover<CuiDialogOptions>>>([])\r\n);\r\n\r\nexport const CUI_DIALOG_DEFAULT_OPTIONS: CuiDialogOptions = {\r\n size: 'auto',\r\n data: undefined,\r\n dismissible: true\r\n};\r\n\r\nexport const CUI_DIALOG_OPTIONS = cuiCreateToken(CUI_DIALOG_DEFAULT_OPTIONS);\r\n\r\nexport const CUI_DIALOG_CONTEXT = new InjectionToken<CuiPopover<CuiDialogOptions>>('');\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport type { CuiPopover } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport type { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CUI_DIALOGS } from './dialog.tokens';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-dialogs',\r\n templateUrl: './dialogs.template.html',\r\n styleUrls: ['./dialogs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService]\r\n})\r\nexport class CuiDialogsComponent implements OnInit {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n\r\n protected readonly dialogs$: Observable<ReadonlyArray<CuiPopover<CuiDialogOptions>>> = inject(CUI_DIALOGS);\r\n protected dialogInjectorCache = new Map<string, Injector>();\r\n protected dialogInjectors!: ReadonlyArray<Injector>;\r\n\r\n public ngOnInit(): void {\r\n this.initDialogsSubscription();\r\n }\r\n\r\n protected trackByFn(_: number, dialog: CuiPopover<CuiDialogOptions>): string {\r\n return dialog.id;\r\n }\r\n\r\n protected initDialogsSubscription(): void {\r\n this.dialogs$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(dialogs => {\r\n this.document.body.style.overflow = dialogs.length ? 'hidden' : '';\r\n this.dialogInjectors = dialogs.map(dialog => {\r\n if (!this.dialogInjectorCache.has(dialog.id)) {\r\n this.dialogInjectorCache.set(dialog.id, Injector.create({\r\n providers: [{ provide: CUI_DIALOG_CONTEXT, useValue: dialog }],\r\n parent: dialog.injector\r\n }));\r\n }\r\n\r\n return this.dialogInjectorCache.get(dialog.id)!;\r\n });\r\n\r\n this.dialogInjectorCache.forEach((_, dialogId) => {\r\n if (dialogs.find(dialog => dialog.id === dialogId)) {\r\n return;\r\n }\r\n\r\n this.dialogInjectorCache.delete(dialogId);\r\n });\r\n });\r\n }\r\n}\r\n","<ng-container *cuiLet=\"dialogs$ | async as dialogs\">\r\n <ng-container *ngFor=\"let dialog of dialogs; let i = index; trackBy: trackByFn\">\r\n <ng-container *ngComponentOutlet=\"dialog.component; injector: dialogInjectors[i]\"></ng-container>\r\n </ng-container>\r\n <div\r\n *ngIf=\"dialogs!.length\"\r\n class=\"c-overlay\"\r\n ></div>\r\n</ng-container>\r\n","import {\r\n animate,\r\n animateChild,\r\n query,\r\n stagger,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nconst TRANSITION = '{{duration}}ms ease-in-out';\r\nconst DURATION = {params: {duration: 300}};\r\nconst STAGGER = 300;\r\n\r\nexport interface CuiDurationOptions {\r\n params: {duration: number};\r\n value: string;\r\n}\r\n\r\n/**\r\n * Add to enable child :leave animation (fixes https://github.com/angular/angular/issues/15753)\r\n */\r\nexport const cuiParentAnimation = trigger('cuiParentAnimation', [\r\n transition(':leave', [query(':scope > *', [animateChild()], {optional: true})]),\r\n]);\r\n\r\n/**\r\n * Add on parent to stop initial :enter animation for children\r\n */\r\nexport const cuiParentStop = trigger('cuiParentStop', [transition(':enter', [])]);\r\n\r\nexport const cuiHost = trigger('cuiHost', [\r\n transition(':enter', [\r\n style({overflow: 'clip'}),\r\n query(':scope > *', [animateChild()], {optional: true}),\r\n ]),\r\n transition(':leave', [query(':scope > *', [animateChild()], {optional: true})]),\r\n]);\r\n\r\nexport const cuiHeightCollapse = trigger('cuiHeightCollapse', [\r\n transition(\r\n ':enter',\r\n [style({height: 0}), animate(TRANSITION, style({height: '*'}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({height: '*'}), animate(TRANSITION, style({height: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiHeightCollapseList = trigger('cuiHeightCollapseList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({height: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({height: '*'}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({height: '*'}),\r\n stagger(STAGGER, [animate(TRANSITION, style({height: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiWidthCollapse = trigger('cuiWidthCollapse', [\r\n transition(\r\n ':enter',\r\n [style({width: 0}), animate(TRANSITION, style({width: '*'}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({width: '*'}), animate(TRANSITION, style({width: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiWidthCollapseList = trigger('cuiWidthCollapseList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({width: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({width: '*'}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({width: '*'}),\r\n stagger(STAGGER, [animate(TRANSITION, style({width: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeIn = trigger('cuiFadeIn', [\r\n transition(\r\n ':enter',\r\n [style({opacity: 0}), animate(TRANSITION, style({opacity: 1}))],\r\n DURATION,\r\n ),\r\n transition(\r\n ':leave',\r\n [style({opacity: 1}), animate(TRANSITION, style({opacity: 0}))],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInList = trigger('cuiFadeInList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({opacity: 0}),\r\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 1}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({opacity: 1}),\r\n stagger(STAGGER, [animate(TRANSITION, style({opacity: 0}))]),\r\n ],\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ],\r\n DURATION,\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInTop = trigger('cuiFadeInTop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiFadeInBottom = trigger('cuiFadeInBottom', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY({{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY({{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiDropdownAnimation = trigger('cuiDropdownAnimation', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})', opacity: 1})),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})', opacity: 1}),\r\n animate(\r\n TRANSITION,\r\n style({transform: 'translateY(-{{start}}px)', opacity: 0}),\r\n ),\r\n ],\r\n {params: {end: 0, start: 10, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiScaleIn = trigger('cuiScaleIn', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n animate('{{duration}}ms {{easing}}', style({transform: 'scale({{end}})'})),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300, easing: 'ease-in-out'}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiPop = trigger('cuiPop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{middle}})'})),\r\n animate(TRANSITION, style({transform: 'scale({{end}})'})),\r\n ],\r\n {params: {end: 1, middle: 1.1, start: 0, duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n animate(TRANSITION, style({transform: 'scale({{middle}})'})),\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ],\r\n {params: {end: 1, middle: 1.1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiScaleInList = trigger('cuiScaleInList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'scale({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'scale({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'scale({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'scale({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 1, start: 0, duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideIn = trigger('cuiSlideIn', [\r\n transition(\r\n '* => left',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n 'left => *',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n '* => right',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n 'right => *',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInLeft = trigger('cuiSlideInLeft', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInLeftList = trigger('cuiSlideInLeftList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateX(-{{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX(-{{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInRight = trigger('cuiSlideInRight', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInRightList = trigger('cuiSlideInRightList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateX({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateX({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateX({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInTop = trigger('cuiSlideInTop', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translate3d(0,{{start}},0)', pointerEvents: 'none'}),\r\n animate(TRANSITION, style({transform: 'translate3d(0,{{end}},0)'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translate3d(0,{{end}},0)'}),\r\n animate(TRANSITION, style({transform: 'translate3d(0,{{start}},0)'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInTopList = trigger('cuiSlideInTopList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateY({{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInBottom = trigger('cuiSlideInBottom', [\r\n transition(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}})'}),\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n animate(TRANSITION, style({transform: 'translateY(-{{start}})'})),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);\r\n\r\nexport const cuiSlideInBottomList = trigger('cuiSlideInBottomList', [\r\n transition(\r\n '* => *',\r\n [\r\n query(\r\n ':enter',\r\n [\r\n style({transform: 'translateY(-{{start}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY({{end}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n query(\r\n ':leave',\r\n [\r\n style({transform: 'translateY({{end}})'}),\r\n stagger(STAGGER, [\r\n animate(TRANSITION, style({transform: 'translateY(-{{start}})'})),\r\n ]),\r\n ],\r\n {optional: true},\r\n ),\r\n ],\r\n {params: {end: 0, start: '100%', duration: 300}},\r\n ),\r\n]);","import {Injectable} from '@angular/core';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\n/**\r\n * Service for displaying hints/tooltips\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CuiTooltipService extends BehaviorSubject<readonly CuiPortalItem[]> {\r\n constructor() {\r\n super([]);\r\n }\r\n\r\n public add(directive: CuiPortalItem): void {\r\n this.next(this.value.concat(directive));\r\n }\r\n\r\n public remove(directive: CuiPortalItem): void {\r\n if (this.value.includes(directive)) {\r\n this.next(this.value.filter((hint) => hint !== directive));\r\n }\r\n }\r\n}\r\n","import {NgForOf} from '@angular/common';\r\nimport type {OnInit} from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n inject,\r\n} from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {CuiActiveZone} from '@cuby-ui/cdk';\r\nimport {cuiParentAnimation} from '../../animations';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';\r\n\r\nimport {CuiTooltipService} from './tooltip.service';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'cui-tooltips',\r\n imports: [NgForOf, PolymorpheusTemplate, CuiActiveZone, PolymorpheusOutlet],\r\n templateUrl: './tooltips.template.html',\r\n styleUrls: ['./tooltips.style.scss'],\r\n // So that we do not force OnPush on custom hints\r\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n animations: [cuiParentAnimation],\r\n host: {\r\n 'aria-live': 'polite',\r\n },\r\n})\r\nexport class CuiTooltips implements OnInit {\r\n private readonly hints$ = inject(CuiTooltipService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n protected hints: readonly CuiPortalItem[] = [];\r\n\r\n public ngOnInit(): void {\r\n // Due to this view being parallel to app content, `markForCheck` from `async` pipe\r\n // can happen after view was checked, so calling `detectChanges` instead\r\n this.hints$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hints) => {\r\n this.hints = hints;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n}\r\n","<div\r\n *ngFor=\"let hint of hints\"\r\n role=\"tooltip\"\r\n @cuiParentAnimation\r\n [cuiActiveZoneParent]=\"hint.activeZone || null\"\r\n\r\n>\r\n <ng-container *polymorpheusOutlet=\"hint.component; context: {$implicit: hint}\" />\r\n</div>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { CuiThemeService } from '../../services';\r\nimport { CUI_ROOT_SELECTOR } from './root.options';\r\n\r\n@Component({\r\n selector: CUI_ROOT_SELECTOR,\r\n templateUrl: './root.template.html',\r\n styleUrls: ['./root.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuiRootComponent implements OnInit {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly theme$ = inject(CuiThemeService);\r\n\r\n public ngOnInit(): void {\r\n this.initThemeSubscription();\r\n }\r\n\r\n private initThemeSubscription(): void {\r\n this.theme$\r\n .subscribe(theme => this.document.documentElement.setAttribute('cuiTheme', theme));\r\n }\r\n}\r\n","<div class=\"c-content\">\r\n <ng-content />\r\n</div>\r\n<cui-dialogs />\r\n<cui-alerts />\r\n<cui-tooltips />\r\n","import type { OnInit } from '@angular/core';\r\nimport { HostBinding, HostListener, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ElementRef } from '@angular/core';\r\nimport type { CuiValueOf } from '@cuby-ui/cdk';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiDialogSize } from './dialog.interfaces';\r\nimport { CUI_DIALOG_CONTEXT } from './dialog.tokens';\r\n\r\n// TODO: сделать структурную директиву\r\nconst ContentType = {\r\n String: 'string',\r\n Template: 'template',\r\n Component: 'component'\r\n} as const;\r\n\r\ntype IContentType = CuiValueOf<typeof ContentType>;\r\n\r\n@Component({\r\n selector: 'cui-dialog',\r\n templateUrl: './dialog.template.html',\r\n styleUrls: ['./dialog.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDialogComponent implements OnInit {\r\n protected readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n protected readonly context = inject(CUI_DIALOG_CONTEXT);\r\n\r\n protected readonly LAST_OF_TYPE_SELECTOR = ':last-of-type';\r\n\r\n protected readonly ContentType = ContentType;\r\n\r\n protected contentType: IContentType = ContentType.Component;\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiDialogSize {\r\n return this.context.size;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initContentType();\r\n }\r\n\r\n protected get contentTemplateRef(): TemplateRef<unknown> {\r\n return this.context.content as TemplateRef<unknown>;\r\n }\r\n\r\n protected get componentType(): Type<unknown> {\r\n return this.context.content as Type<unknown>;\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n protected onEscape(): void {\r\n if (!this.context.dismissible) {\r\n return\r\n }\r\n\r\n if (!this.element.matches(this.LAST_OF_TYPE_SELECTOR)) {\r\n return;\r\n }\r\n\r\n this.context.completeWith();\r\n }\r\n\r\n private initContentType(): void {\r\n const content = this.context.content;\r\n\r\n switch (true) {\r\n case (typeof content === 'string'):\r\n this.contentType = ContentType.String;\r\n\r\n return;\r\n\r\n case (content instanceof TemplateRef):\r\n this.contentType = ContentType.Template;\r\n\r\n return;\r\n }\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"contentType\">\r\n <ng-container *ngSwitchCase=\"ContentType.String\">\r\n {{ context.content }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ContentType.Template\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplateRef; context: context\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ContentType.Component\">\r\n <div class=\"c-component-container\">\r\n <ng-container *ngComponentOutlet=\"componentType\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-dialog-actions',\r\n templateUrl: './dialog-actions.template.html',\r\n styleUrls: ['./dialog-actions.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogActionsComponent {\r\n}\r\n","<div class=\"c-divider\"></div>\r\n<div class=\"c-content\">\r\n <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport type { PolymorpheusContent } from '@taiga-ui/polymorpheus';\r\nimport { PolymorpheusContext } from '@taiga-ui/polymorpheus/classes/context';\r\n\r\n@Component({\r\n selector: 'header[cuiDialogHeader][heading]',\r\n templateUrl: './dialog-header.template.html',\r\n styleUrls: ['./dialog-header.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDialogHeaderComponent {\r\n @Input()\r\n public heading!: PolymorpheusContent;\r\n\r\n @Input()\r\n public headingContext?: PolymorpheusContext<any>['$implicit'];\r\n\r\n @Input()\r\n public subheading?: string;\r\n\r\n @Output()\r\n public readonly closed = new EventEmitter<MouseEvent>();\r\n\r\n protected onClose(event: MouseEvent): void {\r\n this.closed.emit(event);\r\n }\r\n}\r\n","<div class=\"c-heading\">\r\n <ng-container *polymorpheusOutlet=\"heading as heading; context: headingContext\">{{ heading }}</ng-container>\r\n</div>\r\n<button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n icon=\"cuiIconClearSm\"\r\n class=\"c-button\"\r\n (click)=\"onClose($event)\"\r\n></button>\r\n<span *ngIf=\"subheading\">{{ subheading }}</span>\r\n<ng-content />\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule } from '../button';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport { CuiDialogsComponent } from './dialogs.component';\r\nimport { CuiDialogActionsComponent } from './dialog-actions/dialog-actions.component';\r\nimport { CuiDialogHeaderComponent } from './dialog-header/dialog-header.component';\r\nimport { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n PolymorpheusOutlet,\r\n CuiLetDirective,\r\n CuiButtonModule\r\n ],\r\n declarations: [\r\n CuiDialogComponent,\r\n CuiDialogsComponent,\r\n CuiDialogActionsComponent,\r\n CuiDialogHeaderComponent\r\n ],\r\n exports: [\r\n CuiDialogComponent,\r\n CuiDialogsComponent,\r\n CuiDialogActionsComponent,\r\n CuiDialogHeaderComponent\r\n ]\r\n})\r\nexport class CuiDialogModule {\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { CuiPopoverService } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_DIALOG_OPTIONS, CUI_DIALOGS } from './dialog.tokens';\r\nimport { CuiDialogComponent } from './dialog.component';\r\nimport type { CuiDialogOptions } from './dialog.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n useFactory: () => new CuiDialogService(CUI_DIALOGS, CuiDialogComponent, inject(CUI_DIALOG_OPTIONS))\r\n})\r\nexport class CuiDialogService extends CuiPopoverService<CuiDialogOptions> {\r\n}\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {inject} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nexport const CUI_REDUCED_MOTION = cuiCreateTokenFromFactory(\r\n () =>\r\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\r\n .matches ?? false,\r\n);\r\n","import {inject} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nimport {CUI_REDUCED_MOTION} from './reduced-motion';\r\n\r\n/**\r\n * Speed of all Taiga UI animations. 1 equals 300ms.\r\n */\r\nexport const CUI_ANIMATIONS_SPEED = cuiCreateTokenFromFactory<number>(() =>\r\n inject(CUI_REDUCED_MOTION) ? 0 : 1,\r\n);\r\n","import type {Provider, Type} from '@angular/core';\r\nimport {inject} from '@angular/core';\r\nimport { CUI_WINDOW, cuiCreateTokenFromFactory, cuiProvide } from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor} from '../classes';\r\n\r\n/**\r\n * Viewport accessor\r\n */\r\nexport const CUI_VIEWPORT = cuiCreateTokenFromFactory<CuiRectAccessor>(() => {\r\n const win = inject(CUI_WINDOW);\r\n\r\n return {\r\n type: 'viewport',\r\n getClientRect() {\r\n const rect = {\r\n top: 0,\r\n left: 0,\r\n right: win.innerWidth,\r\n bottom: win.innerHeight,\r\n width: win.innerWidth,\r\n height: win.innerHeight,\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n return {\r\n ...rect,\r\n toJSON: () => JSON.stringify(rect),\r\n };\r\n },\r\n };\r\n});\r\n\r\nexport function cuiAsViewport(accessor: Type<CuiRectAccessor>): Provider {\r\n return cuiProvide(CUI_VIEWPORT, accessor);\r\n}\r\n","export function cuiRemoveSpaces(value: string): string {\r\n return value.replace(/\\s+/g, '');\r\n}\r\n","export function cuiReplace(value: string, search: string, replace: string): string {\r\n const regex = new RegExp(search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\r\n\r\n return value.replace(regex, replace);\r\n}\r\n","import {cuiGetElementObscures} from '@cuby-ui/cdk';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function cuiIsObscured(el: HTMLElement, exceptSelector = 'cui-hints'): boolean {\r\n return !!cuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\r\n}\r\n","export function cuiOverrideOptions<T>(\r\n override: Partial<T>,\r\n fallback: T,\r\n): (directive: T | null, options: T | null) => T {\r\n return (directive, options) => {\r\n const result: T = directive || {...(options || fallback)};\r\n\r\n Object.keys(override).forEach((key) => {\r\n // Update directive props with new defaults before inputs are processed\r\n (result as Record<string, unknown>)[key] = override[key as keyof T];\r\n });\r\n\r\n return result;\r\n };\r\n}\r\n","import type {AnimationOptions} from '@angular/animations';\r\n\r\nexport const CUI_ANIMATIONS_DEFAULT_DURATION = 300;\r\n\r\nexport function cuiToAnimationOptions(speed: number, easing?: string): AnimationOptions {\r\n return {\r\n value: '',\r\n params: {\r\n duration: cuiGetDuration(speed),\r\n easing,\r\n },\r\n } as unknown as AnimationOptions;\r\n}\r\n\r\nexport function cuiGetDuration(speed: number): number {\r\n return speed && CUI_ANIMATIONS_DEFAULT_DURATION / speed;\r\n}\r\n","import type { ValidationErrors } from '@angular/forms';\r\n\r\nconst LEADING_TRAILING_SPACES_REGEX = /^\\s|\\s$/;\r\nconst MULTIPLE_SPACES_REGEX = /\\s{2,}/;\r\n\r\nexport function hasExtraSpaces(value: string): ValidationErrors | null {\r\n const hasLeadingOrTrailingSpaces = LEADING_TRAILING_SPACES_REGEX.test(value);\r\n const hasMultipleSpaces = MULTIPLE_SPACES_REGEX.test(value);\r\n\r\n if (hasLeadingOrTrailingSpaces || hasMultipleSpaces) {\r\n return { extraSpaces: true };\r\n }\r\n\r\n return null;\r\n}\r\n","import type { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport type { Observable } from 'rxjs';\r\nimport { map, timer } from 'rxjs';\r\n\r\nimport { hasExtraSpaces } from './extra-spaces.options';\r\n\r\nexport function asyncExtraSpacesValidators(delay: number): AsyncValidatorFn {\r\n return ({ value }: AbstractControl): Observable<ValidationErrors | null> => {\r\n return timer(delay).pipe(map(() => hasExtraSpaces(value)));\r\n };\r\n}\r\n\r\nexport function syncExtraSpacesValidator(): ValidatorFn {\r\n return ({ value }: AbstractControl): ValidationErrors | null => hasExtraSpaces(value);\r\n}\r\n","import { Validators } from '@angular/forms';\r\nimport { CuiDefaultValidatorsOptions } from './create-default-validators.options';\r\nimport { asyncExtraSpacesValidators, syncExtraSpacesValidator } from './extra-spaces.validators';\r\n\r\nexport function cuiCreateDefaultValidators({ maxLength = 100, asyncDelay = 700 } = {}): CuiDefaultValidatorsOptions {\r\n // Need to offset because this delay must be before changing value\r\n const OFFSET = 1;\r\n\r\n const adjustedAsyncDelay = asyncDelay - OFFSET;\r\n const validators: CuiDefaultValidatorsOptions = {\r\n validators: [Validators.required, Validators.maxLength(maxLength)],\r\n asyncValidators: []\r\n };\r\n\r\n if (asyncDelay) {\r\n validators.asyncValidators.push(asyncExtraSpacesValidators(adjustedAsyncDelay));\r\n } else {\r\n validators.validators.push(syncExtraSpacesValidator());\r\n }\r\n\r\n return validators;\r\n}\r\n","import type {Type} from '@angular/core';\r\nimport {cuiCreateTokenFromFactory} from '@cuby-ui/cdk';\r\n\r\nimport {CuiTooltipComponent} from './tooltip.component';\r\n\r\n/**\r\n * A component to display a tooltip\r\n */\r\nexport const CUI_TOOLTIP_COMPONENT = cuiCreateTokenFromFactory<Type<unknown>>(\r\n () => CuiTooltipComponent,\r\n);\r\n","import {Directive} from '@angular/core';\r\nimport {CuiDriverDirective} from '../../classes';\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class CuiTooltipDriver extends CuiDriverDirective {\r\n public readonly type = 'hint';\r\n}\r\n","import type {FactoryProvider, OnChanges} from '@angular/core';\r\nimport {Directive, inject, Input, Optional, Self, SkipSelf} from '@angular/core';\r\nimport { cuiCreateToken, cuiProvide } from '@cuby-ui/cdk';\r\nimport {cuiOverrideOptions} from '../../utils';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {Subject} from 'rxjs';\r\n\r\nexport type CuiTooltipDirection =\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n | 'bottom'\r\n | 'left-bottom'\r\n | 'left-top'\r\n | 'left'\r\n | 'right-bottom'\r\n | 'right-top'\r\n | 'right'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'top';\r\n\r\nexport const CUI_TOOLTIP_DIRECTIONS: readonly CuiTooltipDirection[] = [\r\n 'top',\r\n 'top-left',\r\n 'top-right',\r\n 'bottom',\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'left-top',\r\n 'left',\r\n 'left-bottom',\r\n 'right-top',\r\n 'right',\r\n 'right-bottom',\r\n];\r\n\r\nexport interface CuiTooltipOptions {\r\n readonly appearance: string;\r\n readonly direction: CuiTooltipDirection | CuiTooltipDirection[];\r\n readonly hideDelay: number;\r\n readonly icon: string;\r\n readonly showDelay: number;\r\n}\r\n\r\n/** Default values for tooltip options */\r\nexport const CUI_TOOLTIP_DEFAULT_OPTIONS: CuiTooltipOptions = {\r\n direction: 'top',\r\n showDelay: 500,\r\n hideDelay: 200,\r\n appearance: '',\r\n /** TODO @deprecated use {@link CUI_TOOLTIP_OPTIONS} instead **/\r\n icon: '@cui.circle-help',\r\n};\r\n\r\n/**\r\n * Default parameters for tooltip directive\r\n */\r\nexport const CUI_TOOLTIP_OPTIONS = cuiCreateToken(CUI_TOOLTIP_DEFAULT_OPTIONS);\r\n\r\nexport const cuiTooltipOptionsProvider: (\r\n options: Partial<CuiTooltipOptions>,\r\n) => FactoryProvider = (override: Partial<CuiTooltipOptions>) => ({\r\n provide: CUI_TOOLTIP_OPTIONS,\r\n deps: [\r\n [new Optional(), new Self(), CuiTooltipOptionsDirective],\r\n [new Optional(), new SkipSelf(), CUI_TOOLTIP_OPTIONS],\r\n ],\r\n useFactory: cuiOverrideOptions(override, CUI_TOOLTIP_DEFAULT_OPTIONS),\r\n});\r\n\r\n/**\r\n * @deprecated: drop in 5.0\r\n */\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipContent]',\r\n providers: [cuiProvide(CUI_TOOLTIP_OPTIONS, CuiTooltipOptionsDirective)],\r\n})\r\nexport class CuiTooltipOptionsDirective implements CuiTooltipOptions, OnChanges {\r\n private readonly options = inject(CUI_TOOLTIP_OPTIONS, {skipSelf: true});\r\n\r\n @Input('cuiTooltipContent')\r\n public content: PolymorpheusContent;\r\n\r\n @Input('cuiTooltipDirection')\r\n public direction = this.options.direction;\r\n\r\n @Input('cuiTooltipAppearance')\r\n public appearance = this.options.appearance;\r\n\r\n @Input('cuiTooltipShowDelay')\r\n public showDelay = this.options.showDelay;\r\n\r\n @Input('cuiTooltipHideDelay')\r\n public hideDelay = this.options.hideDelay;\r\n\r\n public icon = this.options.icon;\r\n\r\n public readonly change$ = new Subject<void>();\r\n\r\n public ngOnChanges(): void {\r\n this.change$.next();\r\n }\r\n}\r\n","import {Directive, inject, Input} from '@angular/core';\r\nimport {CuiHoveredService, CUI_IS_MOBILE, cuiInjectElement} from '@cuby-ui/cdk';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {cuiIsObscured} from '../../utils';\r\nimport {\r\n delay,\r\n filter,\r\n map,\r\n merge,\r\n of,\r\n repeat,\r\n Subject,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs';\r\n\r\nimport type {CuiTooltipOptions} from './tooltip-options.directive';\r\nimport {CUI_TOOLTIP_OPTIONS} from './tooltip-options.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n providers: [cuiAsDriver(CuiTooltipHover), CuiHoveredService],\r\n exportAs: 'cuiTooltipHover',\r\n})\r\nexport class CuiTooltipHover extends CuiDriver {\r\n private readonly isMobile = inject(CUI_IS_MOBILE);\r\n private readonly el = cuiInjectElement();\r\n private readonly hovered$ = inject(CuiHoveredService);\r\n private readonly options = inject(CUI_TOOLTIP_OPTIONS);\r\n private visible = false;\r\n private readonly toggle$ = new Subject<boolean>();\r\n private readonly stream$ = merge(\r\n this.toggle$.pipe(\r\n switchMap((visible) =>\r\n this.isMobile\r\n ? of(visible)\r\n : of(visible).pipe(delay(visible ? 0 : this.cuiTooltipHideDelay)),\r\n ),\r\n takeUntil(this.hovered$),\r\n repeat(),\r\n ),\r\n this.hovered$.pipe(\r\n switchMap((visible) =>\r\n this.isMobile\r\n ? of(visible)\r\n : of(visible).pipe(\r\n delay(visible ? this.cuiTooltipShowDelay : this.cuiTooltipHideDelay),\r\n ),\r\n ),\r\n takeUntil(this.toggle$),\r\n repeat(),\r\n ),\r\n ).pipe(\r\n filter(() => this.enabled),\r\n map(\r\n (value) =>\r\n value &&\r\n (this.el.hasAttribute('cuiTooltipPointer') || !cuiIsObscured(this.el)),\r\n ),\r\n tap((visible) => {\r\n this.visible = visible;\r\n }),\r\n );\r\n\r\n private readonly parent = inject(CuiTooltipHover, {\r\n optional: true,\r\n skipSelf: true,\r\n });\r\n\r\n @Input()\r\n public cuiTooltipShowDelay: CuiTooltipOptions['showDelay'] = this.options.showDelay;\r\n\r\n @Input()\r\n public cuiTooltipHideDelay: CuiTooltipOptions['hideDelay'] = this.options.hideDelay;\r\n\r\n public readonly type = 'hint';\r\n\r\n public enabled = true;\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n\r\n public toggle(visible = !this.visible): void {\r\n this.toggle$.next(visible);\r\n this.parent?.toggle(visible);\r\n }\r\n}\r\n","import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { EMPTY_CLIENT_RECT, CUI_IS_MOBILE, cuiPure } from '@cuby-ui/cdk';\r\nimport {\r\n cuiFallbackAccessor,\r\n CuiPositionAccessor,\r\n CuiRectAccessor,\r\n} from '../../classes';\r\nimport { CUI_VIEWPORT } from '../../tokens';\r\nimport type { CuiPoint } from '../../types';\r\n\r\nimport { CuiTooltipDirective } from './tooltip.directive';\r\nimport type { CuiTooltipDirection, CuiTooltipOptions } from './tooltip-options.directive';\r\nimport { CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS } from './tooltip-options.directive';\r\n\r\nconst GAP = 8;\r\nconst ARROW_OFFSET = 24;\r\nconst TOP = 0;\r\nconst LEFT = 1;\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class CuiTooltipPosition extends CuiPositionAccessor {\r\n private readonly offset = inject(CUI_IS_MOBILE) ? 16 : 5;\r\n private readonly viewport = inject(CUI_VIEWPORT);\r\n private readonly accessor = cuiFallbackAccessor<CuiRectAccessor>('hint')(\r\n inject<any>(CuiRectAccessor),\r\n inject(CuiTooltipDirective),\r\n );\r\n\r\n private readonly points: Record<CuiTooltipDirection, [number, number]> =\r\n CUI_TOOLTIP_DIRECTIONS.reduce(\r\n (acc, direction) => ({ ...acc, [direction]: [0, 0] }),\r\n {} as Record<CuiTooltipDirection, [number, number]>,\r\n );\r\n\r\n @Input('cuiTooltipDirection')\r\n public direction: CuiTooltipOptions['direction'] = inject(CUI_TOOLTIP_OPTIONS).direction;\r\n\r\n @Output('cuiTooltipDirectionChange')\r\n public readonly directionChange = new EventEmitter<CuiTooltipDirection>();\r\n\r\n public readonly type = 'hint';\r\n\r\n @cuiPure\r\n public emitDirection(direction: CuiTooltipDirection): void {\r\n this.directionChange.emit(direction);\r\n }\r\n\r\n public getPosition(rect: DOMRect, el?: HTMLElement): CuiPoint {\r\n const width = el?.clientWidth ?? rect.width;\r\n const height = el?.clientHeight ?? rect.height;\r\n const hostRect = this.accessor.getClientRect() ?? EMPTY_CLIENT_RECT;\r\n const leftCenter = hostRect.left + hostRect.width / 2;\r\n const topCenter = hostRect.top + hostRect.height / 2;\r\n\r\n this.points['top-left'][TOP] = hostRect.top - height - this.offset;\r\n this.points['top-left'][LEFT] = leftCenter - width + ARROW_OFFSET;\r\n this.points.top[TOP] = this.points['top-left'][TOP];\r\n this.points.top[LEFT] = leftCenter - width / 2;\r\n this.points['top-right'][TOP] = this.points['top-left'][TOP];\r\n this.points['top-right'][LEFT] = leftCenter - ARROW_OFFSET;\r\n\r\n this.points['bottom-left'][TOP] = hostRect.bottom + this.offset;\r\n this.points['bottom-left'][LEFT] = this.points['top-left'][LEFT];\r\n this.points.bottom[TOP] = this.points['bottom-left'][TOP];\r\n this.points.bottom[LEFT] = this.points.top[LEFT];\r\n this.points['bottom-right'][TOP] = this.points['bottom-left'][TOP];\r\n this.points['bottom-right'][LEFT] = this.points['top-right'][LEFT];\r\n\r\n this.points['left-top'][TOP] = topCenter - height + ARROW_OFFSET;\r\n this.points['left-top'][LEFT] = hostRect.left - width - this.offset;\r\n this.points.left[TOP] = topCenter - height / 2;\r\n this.points.left[LEFT] = this.points['left-top'][LEFT];\r\n this.points['left-bottom'][TOP] = topCenter - ARROW_OFFSET;\r\n this.points['left-bottom'][LEFT] = this.points['left-top'][LEFT];\r\n\r\n this.points['right-top'][TOP] = this.points['left-top'][TOP];\r\n this.points['right-top'][LEFT] = hostRect.right + this.offset;\r\n this.points.right[TOP] = this.points.left[TOP];\r\n this.points.right[LEFT] = this.points['right-top'][LEFT];\r\n this.points['right-bottom'][TOP] = this.points['left-bottom'][TOP];\r\n this.points['right-bottom'][LEFT] = this.points['right-top'][LEFT];\r\n\r\n const priorityDirections = Array.isArray(this.direction)\r\n ? this.direction\r\n : [this.direction];\r\n const sortedDirections = priorityDirections.concat(CUI_TOOLTIP_DIRECTIONS);\r\n\r\n const direction = sortedDirections.find((direction) =>\r\n this.checkPosition(this.points[direction], width, height),\r\n );\r\n\r\n this.emitDirection(direction || this.fallback);\r\n\r\n return this.points[direction || this.fallback];\r\n }\r\n\r\n private get fallback(): CuiTooltipDirection {\r\n return this.points.top[TOP] >\r\n this.viewport.getClientRect().bottom - this.points.bottom[TOP]\r\n ? 'top'\r\n : 'bottom';\r\n }\r\n\r\n private checkPosition([top, left]: CuiPoint, width: number, height: number): boolean {\r\n const viewport = this.viewport.getClientRect();\r\n\r\n return (\r\n top > GAP &&\r\n left > GAP &&\r\n top + height < viewport.bottom - GAP &&\r\n left + width < viewport.right - GAP\r\n );\r\n }\r\n}\r\n","import type {OnDestroy} from '@angular/core';\r\nimport {Directive, inject, INJECTOR, Input, signal} from '@angular/core';\r\nimport {cuiInjectElement, CuiActiveZone} from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor, CuiVehicle } from '../../classes';\r\nimport {cuiAsRectAccessor, cuiAsVehicle } from '../../classes';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\r\n\r\nimport {CUI_TOOLTIP_COMPONENT} from './tooltip.providers';\r\nimport {CuiTooltipService} from './tooltip.service';\r\nimport {CuiTooltipDriver} from './tooltip-driver.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CUI_TOOLTIP_OPTIONS} from './tooltip-options.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip]:not(ng-container):not(ng-template)',\r\n providers: [\r\n cuiAsRectAccessor(CuiTooltipDirective),\r\n cuiAsVehicle(CuiTooltipDirective),\r\n {\r\n provide: PolymorpheusComponent,\r\n deps: [CUI_TOOLTIP_COMPONENT, INJECTOR],\r\n useClass: PolymorpheusComponent,\r\n },\r\n ],\r\n hostDirectives: [\r\n CuiTooltipDriver,\r\n {\r\n directive: CuiTooltipHover,\r\n inputs: ['cuiTooltipHideDelay', 'cuiTooltipShowDelay'],\r\n },\r\n {\r\n directive: CuiTooltipPosition,\r\n inputs: ['cuiTooltipDirection'],\r\n outputs: ['cuiTooltipDirectionChange'],\r\n },\r\n ],\r\n})\r\nexport class CuiTooltipDirective<C>\r\n implements OnDestroy, CuiPortalItem<C>, CuiRectAccessor, CuiVehicle\r\n{\r\n private readonly service = inject(CuiTooltipService);\r\n\r\n @Input('cuiTooltipContext')\r\n public context?: C;\r\n\r\n @Input('cuiTooltipAppearance')\r\n public appearance = inject(CUI_TOOLTIP_OPTIONS).appearance;\r\n\r\n public content = signal<PolymorpheusContent<C>>(null);\r\n public component = inject(PolymorpheusComponent<unknown>);\r\n public readonly el = cuiInjectElement();\r\n public readonly activeZone? = inject(CuiActiveZone, {optional: true});\r\n public readonly type = 'hint';\r\n\r\n @Input()\r\n public set cuiTooltip(content: PolymorpheusContent<C>) {\r\n this.content.set(content);\r\n\r\n if (!content) {\r\n this.toggle(false);\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.toggle(false);\r\n }\r\n\r\n public getClientRect(): DOMRect {\r\n return this.el.getBoundingClientRect();\r\n }\r\n\r\n public toggle(show: boolean): void {\r\n if (show && this.content()) {\r\n this.service.add(this);\r\n } else {\r\n this.service.remove(this);\r\n }\r\n }\r\n}\r\n","import {Directive} from '@angular/core';\r\nimport {EMPTY_CLIENT_RECT, cuiPointToClientRect} from '@cuby-ui/cdk';\r\nimport type {CuiRectAccessor} from '../../classes';\r\nimport {cuiAsDriver, cuiAsRectAccessor} from '../../classes';\r\n\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipPointer]',\r\n providers: [cuiAsRectAccessor(CuiTooltipPointer), cuiAsDriver(CuiTooltipPointer)],\r\n host: {\r\n '(mousemove.silent)': 'onMove($event)',\r\n },\r\n})\r\nexport class CuiTooltipPointer extends CuiTooltipHover implements CuiRectAccessor {\r\n private currentRect = EMPTY_CLIENT_RECT;\r\n\r\n public getClientRect(): DOMRect {\r\n return this.currentRect;\r\n }\r\n\r\n protected onMove({clientX, clientY}: MouseEvent): void {\r\n this.currentRect = cuiPointToClientRect(clientX, clientY);\r\n }\r\n}\r\n","import type {WritableSignal} from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n inject,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport type {CuiContext} from '@cuby-ui/cdk';\r\nimport {cuiParentAnimation} from '../../animations';\r\nimport type {CuiPortalItem} from '../../types';\r\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\r\nimport {\r\n injectContext,\r\n PolymorpheusComponent,\r\n PolymorpheusOutlet,\r\n} from '@taiga-ui/polymorpheus';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [PolymorpheusOutlet],\r\n template: '<ng-container *polymorpheusOutlet=\"context.$implicit.content()\" />',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [cuiParentAnimation],\r\n host: {'[@cuiParentAnimation]': ''},\r\n})\r\nexport class CuiTooltipUnstyledComponent {\r\n protected readonly context =\r\n injectContext<\r\n CuiContext<CuiPortalItem & {content: WritableSignal<PolymorpheusContent>}>\r\n >();\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'ng-template[cuiTooltip]',\r\n})\r\nexport class CuiTooltipUnstyled<C> {\r\n constructor() {\r\n const hint = inject(CuiTooltipDirective<C>);\r\n\r\n hint.component = new PolymorpheusComponent(CuiTooltipUnstyledComponent);\r\n hint.content.set(inject(TemplateRef<C>));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, signal } from '@angular/core';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {EMPTY_CLIENT_RECT,CuiHoveredService, CuiContext} from '@cuby-ui/cdk';\r\nimport {cuiFadeIn, cuiScaleIn} from '../../animations';\r\nimport {\r\n cuiPositionAccessorFor,\r\n CuiRectAccessor,\r\n cuiRectAccessorFor,\r\n} from '../../classes';\r\nimport {CuiPositionService, CuiVisualViewportService} from '../../services';\r\nimport {CUI_ANIMATIONS_SPEED, CUI_VIEWPORT} from '../../tokens';\r\nimport {cuiIsObscured, cuiToAnimationOptions} from '../../utils';\r\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\r\nimport {map, takeWhile} from 'rxjs';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CuiTooltipPointer} from './tooltip-pointer.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\nimport {CuiTooltipUnstyledComponent} from './tooltip-unstyled.component';\r\nimport { CUI_IS_MOBILE, cuiClamp, cuiInjectElement, cuiPure, cuiPx } from '@cuby-ui/cdk';\r\n\r\nconst GAP = 8;\r\n\r\nexport const CUI_TOOLTIP_PROVIDERS = [\r\n CuiPositionService,\r\n CuiHoveredService,\r\n cuiPositionAccessorFor('hint', CuiTooltipPosition),\r\n cuiRectAccessorFor('hint', forwardRef(() => CuiTooltipDirective)),\r\n];\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'cui-tooltip',\r\n imports: [PolymorpheusOutlet],\r\n template: `\r\n <ng-content />\r\n <span\r\n *polymorpheusOutlet=\"content() as text; context: hint.context\"\r\n [innerHTML]=\"text\"\r\n ></span>\r\n `,\r\n styleUrls: ['./tooltip.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: CUI_TOOLTIP_PROVIDERS,\r\n animations: [cuiFadeIn, cuiScaleIn],\r\n host: {\r\n '[@cuiScaleIn]': 'isMobile ? options : desktop',\r\n '[@cuiFadeIn]': 'options',\r\n '[class._untouchable]': 'pointer',\r\n '[class._mobile]': 'isMobile',\r\n '[attr.data-appearance]': 'appearance',\r\n '[attr.cuiTheme]': 'appearance',\r\n '(document:click)': 'onClick($event.target)',\r\n },\r\n})\r\nexport class CuiTooltipComponent<C = any> {\r\n private readonly el = cuiInjectElement();\r\n private readonly hover = inject(CuiTooltipHover);\r\n private readonly vvs = inject(CuiVisualViewportService);\r\n private readonly viewport = inject(CUI_VIEWPORT);\r\n\r\n protected readonly desktop = {value: '', params: {end: 1, start: 1}};\r\n protected readonly options = cuiToAnimationOptions(\r\n inject(CUI_ANIMATIONS_SPEED),\r\n 'cubic-bezier(0.35, 1.3, 0.25, 1)',\r\n );\r\n\r\n protected readonly pointer = inject(CuiTooltipPointer, {optional: true});\r\n protected readonly accessor = inject(CuiRectAccessor);\r\n protected readonly hint = injectContext<CuiContext<CuiTooltipDirective<C>>>().$implicit;\r\n protected readonly isMobile = inject(CUI_IS_MOBILE);\r\n\r\n protected readonly content =\r\n this.hint.component.component === CuiTooltipUnstyledComponent\r\n ? signal('')\r\n : this.hint.content;\r\n\r\n protected readonly appearance =\r\n this.hint.appearance ||\r\n this.hint.el.closest('[cuiTheme]')?.getAttribute('cuiTheme');\r\n\r\n constructor() {\r\n inject(CuiPositionService)\r\n .pipe(\r\n takeWhile(() => this.hint.el.isConnected),\r\n map((point) => this.vvs.correct(point)),\r\n takeUntilDestroyed(),\r\n )\r\n .subscribe({\r\n next: ([top, left]) => this.update(top, left),\r\n complete: () => this.hover.toggle(false),\r\n });\r\n\r\n inject(CuiHoveredService)\r\n .pipe(takeUntilDestroyed())\r\n .subscribe((hover) => this.hover.toggle(hover));\r\n }\r\n\r\n protected onClick(target: HTMLElement): void {\r\n if (\r\n (!target.closest('cui-hint') && !this.hint.el.contains(target)) ||\r\n cuiIsObscured(this.hint.el)\r\n ) {\r\n this.hover.toggle(false);\r\n }\r\n }\r\n\r\n @cuiPure\r\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\r\n this.el.style.top = top;\r\n this.el.style.left = left;\r\n this.el.style.setProperty('--top', `${beakTop}%`);\r\n this.el.style.setProperty('--left', `${beakLeft}%`);\r\n this.el.style.setProperty(\r\n '--rotate',\r\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\r\n );\r\n }\r\n\r\n private update(top: number, left: number): void {\r\n const {clientHeight, clientWidth} = this.el;\r\n const rect = this.accessor.getClientRect();\r\n const viewport = this.viewport.getClientRect();\r\n\r\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\r\n return;\r\n }\r\n\r\n const safeLeft = cuiClamp(left, GAP, viewport.width - clientWidth - GAP);\r\n const [beakTop, beakLeft] = this.vvs.correct([\r\n rect.top + rect.height / 2 - top,\r\n rect.left + rect.width / 2 - safeLeft,\r\n ]);\r\n\r\n this.apply(\r\n cuiPx(Math.round(top)),\r\n cuiPx(Math.round(safeLeft)),\r\n Math.round((cuiClamp(beakTop, 0, clientHeight) / clientHeight) * 100),\r\n Math.round((cuiClamp(beakLeft, 0, clientWidth) / clientWidth) * 100),\r\n );\r\n }\r\n}\r\n","import {DOCUMENT} from '@angular/common';\r\nimport {Directive, inject, Input, NgZone} from '@angular/core';\r\nimport {\r\n cuiIfMap,\r\n cuiTypedFromEvent,\r\n cuiZonefreeScheduler,\r\n cuiZoneOptimized,\r\n cuiInjectElement,\r\n cuiIsPresent, cuiPure,\r\n cuiIsNativeFocused\r\n} from '@cuby-ui/cdk';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {\r\n BehaviorSubject,\r\n debounce,\r\n distinctUntilChanged,\r\n fromEvent,\r\n map,\r\n merge,\r\n of,\r\n skip,\r\n startWith,\r\n switchMap,\r\n timer,\r\n} from 'rxjs';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipDescribe]',\r\n providers: [cuiAsDriver(CuiTooltipDescribe)],\r\n})\r\nexport class CuiTooltipDescribe extends CuiDriver {\r\n private readonly doc = inject(DOCUMENT);\r\n private readonly el = cuiInjectElement();\r\n private readonly zone = inject(NgZone);\r\n private readonly id$ = new BehaviorSubject('');\r\n private readonly stream$ = this.id$.pipe(\r\n distinctUntilChanged(),\r\n cuiIfMap(() => fromEvent(this.doc, 'keydown', {capture: true}), cuiIsPresent),\r\n switchMap(() =>\r\n this.focused\r\n ? of(false)\r\n : merge(\r\n cuiTypedFromEvent(this.doc, 'keyup'),\r\n cuiTypedFromEvent(this.element, 'blur'),\r\n ).pipe(map(() => this.focused)),\r\n ),\r\n debounce((visible) =>\r\n visible ? timer(1000, cuiZonefreeScheduler(this.zone)) : of(null),\r\n ),\r\n startWith(false),\r\n distinctUntilChanged(),\r\n skip(1),\r\n cuiZoneOptimized(),\r\n );\r\n\r\n public readonly type = 'hint';\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n }\r\n\r\n @Input()\r\n public set cuiTooltipDescribe(id: string | null | undefined) {\r\n this.id$.next(id || '');\r\n }\r\n\r\n @cuiPure\r\n private get element(): HTMLElement {\r\n return this.doc.getElementById(this.id$.value || '') || this.el;\r\n }\r\n\r\n private get focused(): boolean {\r\n return cuiIsNativeFocused(this.element);\r\n }\r\n}\r\n","import {Directive, Input} from '@angular/core';\r\nimport {EMPTY_CLIENT_RECT} from '@cuby-ui/cdk';\r\nimport {cuiAsRectAccessor, CuiRectAccessor} from '../../classes';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipHost]',\r\n providers: [cuiAsRectAccessor(CuiTooltipHost)],\r\n})\r\nexport class CuiTooltipHost extends CuiRectAccessor {\r\n @Input()\r\n public cuiTooltipHost?: HTMLElement;\r\n\r\n public readonly type = 'hint';\r\n\r\n public getClientRect(): DOMRect {\r\n return this.cuiTooltipHost?.getBoundingClientRect() || EMPTY_CLIENT_RECT;\r\n }\r\n}\r\n","import type {OnChanges} from '@angular/core';\r\nimport {Directive, inject, Input} from '@angular/core';\r\nimport {cuiAsDriver, CuiDriver} from '../../classes';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltip][cuiTooltipManual]',\r\n providers: [cuiAsDriver(CuiTooltipManual)],\r\n})\r\nexport class CuiTooltipManual extends CuiDriver implements OnChanges {\r\n private readonly hover = inject(CuiTooltipHover);\r\n private readonly stream$ = new BehaviorSubject(false);\r\n\r\n @Input()\r\n public cuiTooltipManual = false;\r\n\r\n public readonly type = 'hint';\r\n\r\n constructor() {\r\n super((subscriber) => this.stream$.subscribe(subscriber));\r\n this.hover.enabled = false;\r\n }\r\n\r\n public ngOnChanges(): void {\r\n this.stream$.next(this.cuiTooltipManual);\r\n }\r\n}\r\n","import {Directive, inject} from '@angular/core';\r\n\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[cuiTooltipOverflow]',\r\n hostDirectives: [\r\n {\r\n directive: CuiTooltipDirective,\r\n inputs: ['cuiTooltipAppearance'],\r\n },\r\n ],\r\n host: {\r\n '(mouseenter)': 'onMouseEnter($event.currentTarget)',\r\n },\r\n})\r\nexport class CuiTooltipOverflow {\r\n private readonly hint = inject(CuiTooltipDirective);\r\n\r\n protected onMouseEnter({scrollWidth, clientWidth, textContent}: Element): void {\r\n this.hint.cuiTooltip = scrollWidth > clientWidth ? textContent : '';\r\n }\r\n}\r\n","import {CuiTooltipComponent} from './tooltip.component';\r\nimport {CuiTooltipDirective} from './tooltip.directive';\r\nimport {CuiTooltipDescribe} from './tooltip-describe.directive';\r\nimport {CuiTooltipDriver} from './tooltip-driver.directive';\r\nimport {CuiTooltipHost} from './tooltip-host.directive';\r\nimport {CuiTooltipHover} from './tooltip-hover.directive';\r\nimport {CuiTooltipManual} from './tooltip-manual.directive';\r\nimport {CuiTooltipOptionsDirective} from './tooltip-options.directive';\r\nimport {CuiTooltipOverflow} from './tooltip-overflow.directive';\r\nimport {CuiTooltipPointer} from './tooltip-pointer.directive';\r\nimport {CuiTooltipPosition} from './tooltip-position.directive';\r\nimport {CuiTooltipUnstyled} from './tooltip-unstyled.component';\r\n\r\nexport const CuiTooltip = [\r\n CuiTooltipComponent,\r\n CuiTooltipDirective,\r\n CuiTooltipOptionsDirective,\r\n CuiTooltipUnstyled,\r\n CuiTooltipDriver,\r\n CuiTooltipPosition,\r\n CuiTooltipHover,\r\n CuiTooltipOverflow,\r\n CuiTooltipDescribe,\r\n CuiTooltipHost,\r\n CuiTooltipManual,\r\n CuiTooltipPointer,\r\n] as const;\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiRootComponent } from './root.component';\r\nimport { CuiDialogModule } from '../dialog';\r\nimport { CuiAlertModule } from '../alert';\r\nimport { CuiTooltips } from '../../directives/tooltip';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiDialogModule,\r\n CuiAlertModule,\r\n CuiTooltips\r\n ],\r\n declarations: [CuiRootComponent],\r\n exports: [CuiRootComponent]\r\n})\r\nexport class CuiRootModule {\r\n}\r\n","import type { OnInit, AfterViewInit, TemplateRef, OnDestroy } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewContainerRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CuiDestroyService, CuiClickOutsideDirective, CuiTargetDirective, CUI_WINDOW, cuiGetClosestFocusable } from '@cuby-ui/cdk';\r\nimport { fromEvent, take, takeUntil } from 'rxjs';\r\n\r\nimport type { CuiContextMenuItem } from '../../interfaces';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n selector: 'cui-context-menu[items][target]',\r\n templateUrl: './context-menu.component.html',\r\n styleUrls: ['./context-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiDestroyService],\r\n hostDirectives: [\r\n CuiClickOutsideDirective,\r\n {\r\n directive: CuiTargetDirective,\r\n inputs: ['ccTarget: target']\r\n }\r\n ]\r\n})\r\nexport class CuiContextMenuComponent implements OnInit, AfterViewInit, OnDestroy {\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly documentElement = this.document.documentElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly cuiTargetDirective = inject(CuiTargetDirective, { self: true });\r\n\r\n protected readonly EXTRA_OFFSET_LEFT = 0;\r\n protected readonly EXTRA_OFFSET_TOP = 0;\r\n\r\n protected isVisible = false;\r\n protected node?: HTMLDivElement;\r\n\r\n @Input()\r\n public items!: CuiContextMenuItem[];\r\n\r\n @Input()\r\n public target!: HTMLElement;\r\n\r\n @Input()\r\n public width!: string;\r\n\r\n @Input()\r\n public withPaddings = true;\r\n\r\n @ViewChild('list')\r\n protected readonly list!: TemplateRef<any>;\r\n\r\n @ViewChild('backdrop')\r\n protected readonly backdrop!: TemplateRef<any>;\r\n\r\n public ngOnInit(): void {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearViewContainerRef();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.initTargetElementListener();\r\n }\r\n\r\n protected onSelect(item: CuiContextMenuItem): void {\r\n this.close();\r\n\r\n item.command?.();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onClose(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n protected onStopClickPropagation(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected trackByFn(_: number, item: CuiContextMenuItem): string {\r\n return item.label;\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((target) => {\r\n if (this.target.contains(target)) {\r\n return;\r\n }\r\n\r\n this.close();\r\n })\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.cuiTargetDirective.clicked\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(this.targetEventListener.bind(this));\r\n }\r\n\r\n private initHidingSubscription(): void {\r\n this.initHidingFromWindowEvent('scroll');\r\n this.initHidingFromWindowEvent('resize');\r\n }\r\n\r\n private initHidingFromWindowEvent(eventName: keyof WindowEventMap): void {\r\n fromEvent(this.window, eventName)\r\n .pipe(take(1))\r\n .subscribe(() => this.close());\r\n }\r\n\r\n private targetEventListener(event: MouseEvent): void {\r\n event.stopPropagation();\r\n // TODO: нужен для перерисовки ngFor\r\n this.document.body.click();\r\n\r\n this.isVisible = !this.isVisible;\r\n\r\n this.clearViewContainerRef();\r\n\r\n if (!this.isVisible) {\r\n return;\r\n }\r\n\r\n this.renderList();\r\n this.changePosition(event.clientX, event.clientY);\r\n this.initHidingSubscription();\r\n };\r\n\r\n private close(): void {\r\n this.isVisible = false;\r\n\r\n this.clearViewContainerRef();\r\n }\r\n\r\n private renderList(): void {\r\n const root = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n const backdropViewRef = this.viewContainerRef.createEmbeddedView(this.backdrop);\r\n const listViewRef = this.viewContainerRef.createEmbeddedView(this.list);\r\n\r\n this.node = listViewRef.rootNodes[0];\r\n\r\n root.append(backdropViewRef.rootNodes[0], this.node!);\r\n }\r\n\r\n private changePosition(x: number, y: number): void {\r\n this.node!.style.visibility = 'hidden';\r\n\r\n setTimeout(() => {\r\n const { clientWidth, clientHeight } = this.documentElement;\r\n const width = this.node!.offsetWidth;\r\n const height = this.node!.offsetHeight;\r\n let left = x;\r\n let top = y;\r\n\r\n if (left + width > clientWidth) {\r\n left -= width;\r\n }\r\n\r\n if (top + height > clientHeight) {\r\n top -= height;\r\n }\r\n\r\n left = Math.max(left, this.EXTRA_OFFSET_LEFT);\r\n top = Math.max(top, this.EXTRA_OFFSET_TOP);\r\n\r\n this.node!.style.left = left + 'px';\r\n this.node!.style.top = top + 'px';\r\n this.node!.style.visibility = '';\r\n\r\n cuiGetClosestFocusable({ initial: this.node!, root: this.node! })?.focus();\r\n });\r\n }\r\n\r\n private clearViewContainerRef(): void {\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","<ng-template #backdrop>\r\n <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n\r\n<ng-template #list>\r\n <div class=\"c-container\" [style.width]=\"width\">\r\n <ul class=\"c-ul\" [class.c-ul_with-padding]=\"withPaddings\">\r\n <li\r\n *ngFor=\"let item of items; trackBy: trackByFn\"\r\n [style.color]=\"item.color\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"c-button\"\r\n (click)=\"onSelect(item)\"\r\n >\r\n <cui-svg\r\n *ngIf=\"item.icon\"\r\n [icon]=\"item.icon\"\r\n [color]=\"item.color\"\r\n ></cui-svg>\r\n <span>{{ item.label }}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiContextMenuComponent } from './context-menu.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiContextMenuComponent],\r\n exports: [CuiContextMenuComponent]\r\n})\r\nexport class CuiContextMenuModule {\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output, signal, ViewContainerRef } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport { fromEvent } from 'rxjs';\r\n\r\nimport type { ChangePositionYParams, CuiDropdownOrientation } from './dropdown.interfaces';\r\n\r\n@Directive({\r\n selector: '[cuiDropdown]',\r\n exportAs: 'cuiDropdown',\r\n standalone: true,\r\n})\r\nexport class CuiDropdownDirective implements OnInit, OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly target = inject(ElementRef).nativeElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n\r\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n private readonly CONTAINER_SELECTOR = 'cui-dropdowns';\r\n private readonly DROPDOWN_SELECTOR = 'cui-dropdown';\r\n\r\n private container!: Element;\r\n private element!: HTMLElement;\r\n private backdrop!: HTMLDivElement;\r\n\r\n @Input({ required: true, alias: 'cuiDropdown' })\r\n public content!: TemplateRef<unknown>;\r\n\r\n @Input()\r\n public orientation: CuiDropdownOrientation = 'left';\r\n\r\n @Output()\r\n public readonly isOpened = new EventEmitter<boolean>();\r\n\r\n private readonly isOpen = signal(false);\r\n private readonly targetToggleEventListener = (): void => {\r\n if (!this.isOpen()) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.close();\r\n };\r\n private elementResizeObserver!: ResizeObserver;\r\n\r\n constructor() {\r\n this.initTargetElementListener();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onResize(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n protected onClick(event: MouseEvent): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const elements = this.document.elementsFromPoint(event.clientX, event.clientY);\r\n const doesExist = elements.some((element) => this.element.contains(element));\r\n\r\n if (this.target.contains(target) || this.element.contains(target) || doesExist) {\r\n return;\r\n }\r\n\r\n this.close();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initContainer();\r\n this.initDropdown();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.close();\r\n this.destroyElementResizeObserver();\r\n }\r\n\r\n public open(): void {\r\n this.isOpen.set(true);\r\n this.container.append(this.backdrop, this.element);\r\n this.calculateDropdownPosition();\r\n this.isOpened.emit(true);\r\n }\r\n\r\n public close(): void {\r\n this.isOpen.set(false);\r\n this.element?.remove();\r\n this.backdrop?.remove();\r\n this.isOpened.emit(false);\r\n }\r\n\r\n private initContainer(): void {\r\n const root = this.document.querySelector('cui-dialogs');\r\n const container = this.document.body.querySelector(this.CONTAINER_SELECTOR);\r\n\r\n if (container) {\r\n this.container = container;\r\n\r\n return;\r\n }\r\n\r\n this.container = this.document.createElement(this.CONTAINER_SELECTOR);\r\n\r\n root?.after(this.container);\r\n }\r\n\r\n private initDropdown(): void {\r\n const content = this.viewContainerRef.createEmbeddedView(this.content).rootNodes;\r\n this.element = this.document.createElement(this.DROPDOWN_SELECTOR);\r\n this.backdrop = this.document.createElement('div');\r\n\r\n this.element.style.top = '0';\r\n this.element.style.position = 'absolute';\r\n this.backdrop.style.position = 'fixed';\r\n this.backdrop.style.inset = '0';\r\n this.element.append(...content);\r\n\r\n this.initResizeObserver();\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n fromEvent(this.target, 'click').pipe(takeUntilDestroyed()).subscribe(this.targetToggleEventListener);\r\n }\r\n\r\n private initResizeObserver(): void {\r\n this.elementResizeObserver = new ResizeObserver(() => {\r\n this.changeDropdownYCoordinateIfNeeded();\r\n });\r\n\r\n this.elementResizeObserver.observe(this.element);\r\n }\r\n\r\n private destroyElementResizeObserver(): void {\r\n this.elementResizeObserver.disconnect();\r\n }\r\n\r\n private changeDropdownYCoordinateIfNeeded(): void {\r\n const distanceToBottom =\r\n this.document.documentElement.clientHeight - this.element.getBoundingClientRect().bottom;\r\n\r\n if (distanceToBottom >= 0) {\r\n return;\r\n }\r\n\r\n this.element.style.top = parseFloat(this.element.style.top) + distanceToBottom + 'px';\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.element.style.visibility = 'hidden';\r\n\r\n setTimeout(() => {\r\n const targetRect = this.target.getBoundingClientRect();\r\n const container = this.findScrollableContainer(this.target);\r\n const containerRect = container.getBoundingClientRect();\r\n const { clientHeight, clientWidth } = this.document.documentElement;\r\n const visibleTop = Math.max(targetRect.top, containerRect.top);\r\n const visibleBottom = Math.min(targetRect.bottom, containerRect.bottom);\r\n const dropdownHeight = this.element.offsetHeight;\r\n\r\n const shouldListOpenAbove = clientHeight - visibleBottom < dropdownHeight;\r\n const shouldListAlignLeft = targetRect.left + dropdownHeight > clientWidth;\r\n const orientation = this.orientation ?? (shouldListAlignLeft ? 'left' : 'right');\r\n\r\n this.changePositionY({ shouldListOpenAbove, visibleTop, visibleBottom, dropdownHeight });\r\n this.changePositionX(orientation, clientWidth, targetRect);\r\n\r\n this.element.style.visibility = 'visible';\r\n });\r\n }\r\n\r\n private changePositionX(orientation: string, clientWidth: number, targetRect: DOMRect): void {\r\n switch (orientation) {\r\n case 'right':\r\n this.element.style.left = 'auto';\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n case 'stretch':\r\n this.element.style.left = `${targetRect.left}px`;\r\n this.element.style.right = `${clientWidth - targetRect.right}px`;\r\n break;\r\n\r\n default:\r\n this.element.style.right = 'auto';\r\n this.element.style.left = `${targetRect.left}px`;\r\n }\r\n }\r\n\r\n private changePositionY({\r\n shouldListOpenAbove,\r\n visibleTop,\r\n visibleBottom,\r\n dropdownHeight\r\n }: ChangePositionYParams): void {\r\n const offset = this.SPACE_BETWEEN_TARGET_AND_LIST;\r\n\r\n if (shouldListOpenAbove) {\r\n this.element.style.top = `${this.window.scrollY + visibleTop - dropdownHeight - offset}px`;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = `${this.window.scrollY + visibleBottom + offset}px`;\r\n }\r\n\r\n private findScrollableContainer(element: HTMLElement): HTMLElement {\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n const { overflowY } = window.getComputedStyle(parent);\r\n\r\n if (overflowY === 'auto' || overflowY === 'scroll') {\r\n return parent;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return this.document.body;\r\n }\r\n}\r\n","import { NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@Component({\r\n selector: 'cui-dropdown-wrapper',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './dropdown-wrapper.component.html',\r\n styleUrls: ['./dropdown-wrapper.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiFocusTrapDirective]\r\n})\r\nexport class CuiDropdownWrapperComponent {\r\n @Input()\r\n public title?: string;\r\n\r\n @Input()\r\n public width?: string;\r\n}\r\n","<div\r\n [style.width]=\"width\"\r\n class=\"dropdown\"\r\n>\r\n <header *ngIf=\"title\" class=\"header\">\r\n <h3 class=\"title\">{{ title }}</h3>\r\n <ng-content select=\"[ccDropdownHeaderContent]\" />\r\n </header>\r\n\r\n <div class=\"scrollable-content\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"footer\">\r\n <ng-content select=\"[ccDropdownFooterContent]\" />\r\n </footer>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-form-field',\r\n templateUrl: './form-field.template.html',\r\n styleUrls: ['./form-field.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiFormFieldComponent {\r\n}\r\n","<ng-content select=\"label[cuiLabel]\" />\r\n<ng-content />\r\n<div class=\"c-hint-container\">\r\n <ng-content select=\"cui-hint\" />\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n declarations: [CuiFormFieldComponent],\r\n exports: [CuiFormFieldComponent]\r\n})\r\nexport class CuiFormFieldModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiHintType } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-hint',\r\n templateUrl: './hint.template.html',\r\n styleUrls: ['./hint.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiHintComponent {\r\n @Input()\r\n @HostBinding('attr.data-hint-type')\r\n public hintType: CuiHintType = 'info';\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiHintComponent } from './hint.component';\r\n\r\n@NgModule({\r\n declarations: [CuiHintComponent],\r\n exports: [CuiHintComponent]\r\n})\r\nexport class CuiHintModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\n@Component({\r\n selector: 'button[cuiIconButton][icon], a[cuiIconButton][icon]',\r\n templateUrl: './icon-button.template.html',\r\n styleUrls: ['./icon-button.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiIconButtonComponent {\r\n protected readonly ICON_WIDTH = 16;\r\n protected readonly ICON_HEIGHT = 16;\r\n protected readonly ICON_STROKE_WIDTH = 1.5;\r\n\r\n @Input()\r\n public icon!: CuiIcon | string;\r\n\r\n @Input()\r\n public color?: string;\r\n\r\n @Input()\r\n @HostBinding('style.--icon-hover-color')\r\n public hoverColor?: string;\r\n\r\n @HostBinding('class._with-hover-color')\r\n protected get isWithHoverColor(): boolean {\r\n return !!this.hoverColor;\r\n }\r\n}\r\n","<cui-svg\r\n [icon]=\"icon\"\r\n [width]=\"ICON_WIDTH\"\r\n [height]=\"ICON_HEIGHT\"\r\n [color]=\"color\"\r\n [strokeWidth]=\"ICON_STROKE_WIDTH\"\r\n class=\"c-icon\"\r\n></cui-svg>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiIconButtonComponent } from './icon-button.component';\r\nimport { CuiSvgModule } from '../svg';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiIconButtonComponent],\r\n exports: [CuiIconButtonComponent]\r\n})\r\nexport class CuiIconButtonModule {\r\n}\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport class CuiTextFieldController {\r\n constructor(private readonly iconLeftDirective: CuiTextFieldIconLeftDirective,\r\n private readonly idDirective: CuiTextFieldIdDirective,\r\n private readonly isErrorDirective: CuiTextFieldIsErrorDirective,\r\n private readonly placeholderDirective: CuiTextFieldPlaceholderDirective,\r\n private readonly sizeDirective: CuiTextFieldSizeDirective) {\r\n }\r\n\r\n public get iconLeft(): CuiIcon | string | undefined {\r\n return this.iconLeftDirective.iconLeft;\r\n }\r\n\r\n public get id(): string | undefined {\r\n return this.idDirective.id;\r\n }\r\n\r\n public get isError(): boolean {\r\n return this.isErrorDirective.isError;\r\n }\r\n\r\n public get placeholder(): string | undefined {\r\n return this.placeholderDirective.placeholder;\r\n }\r\n\r\n public get size(): CuiSizeSm | CuiSizeMd {\r\n return this.sizeDirective.size;\r\n }\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport const CUI_TEXT_FIELD_ICON_LEFT = new InjectionToken<CuiTextFieldIconLeftDirective>('', {\r\n factory: () => new CuiTextFieldIconLeftDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldIconLeft]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_ICON_LEFT, CuiTextFieldIconLeftDirective)]\r\n})\r\nexport class CuiTextFieldIconLeftDirective {\r\n @Input('cuiTextFieldIconLeft')\r\n public iconLeft?: CuiIcon | string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_ID = new InjectionToken<CuiTextFieldIdDirective>('', {\r\n factory: () => new CuiTextFieldIdDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldId]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_ID, CuiTextFieldIdDirective)]\r\n})\r\nexport class CuiTextFieldIdDirective {\r\n @Input('cuiTextFieldId')\r\n public id?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_IS_ERROR = new InjectionToken<CuiTextFieldIsErrorDirective>('', {\r\n factory: () => new CuiTextFieldIsErrorDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldIsError]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_IS_ERROR, CuiTextFieldIsErrorDirective)]\r\n})\r\nexport class CuiTextFieldIsErrorDirective {\r\n @Input('cuiTextFieldIsError')\r\n public isError = false;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nexport const CUI_TEXT_FIELD_PLACEHOLDER = new InjectionToken<CuiTextFieldPlaceholderDirective>('', {\r\n factory: () => new CuiTextFieldPlaceholderDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldPlaceholder]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_PLACEHOLDER, CuiTextFieldPlaceholderDirective)]\r\n})\r\nexport class CuiTextFieldPlaceholderDirective {\r\n @Input('cuiTextFieldPlaceholder')\r\n public placeholder?: string;\r\n}\r\n","import { Directive, InjectionToken, Input } from '@angular/core';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\nexport const CUI_TEXT_FIELD_SIZE = new InjectionToken<CuiTextFieldSizeDirective>('', {\r\n factory: () => new CuiTextFieldSizeDirective()\r\n});\r\n\r\n@Directive({\r\n selector: '[cuiTextFieldSize]',\r\n providers: [cuiProvide(CUI_TEXT_FIELD_SIZE, CuiTextFieldSizeDirective)]\r\n})\r\nexport class CuiTextFieldSizeDirective {\r\n @Input('cuiTextFieldSize')\r\n public size: CuiSizeSm | CuiSizeMd = 'sm';\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\nimport { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldSizeDirective\r\n ],\r\n exports: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldSizeDirective\r\n ]\r\n})\r\nexport class CuiTextFieldControllerModule {\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nimport { CuiTextFieldController } from './text-field.controller';\r\n\r\nimport { CUI_TEXT_FIELD_SIZE } from './text-field-size.directive';\r\nimport type { CuiTextFieldSizeDirective } from './text-field-size.directive';\r\nimport { CUI_TEXT_FIELD_ID } from './text-field-id.directive';\r\nimport type { CuiTextFieldIdDirective } from './text-field-id.directive';\r\nimport { CUI_TEXT_FIELD_IS_ERROR } from './text-field-is-error.directive';\r\nimport type { CuiTextFieldIsErrorDirective } from './text-field-is-error.directive';\r\nimport { CUI_TEXT_FIELD_PLACEHOLDER } from './text-field-placeholder.directive';\r\nimport type { CuiTextFieldPlaceholderDirective } from './text-field-placeholder.directive';\r\nimport { CUI_TEXT_FIELD_ICON_LEFT } from './text-field-icon-left.directive';\r\nimport type { CuiTextFieldIconLeftDirective } from './text-field-icon-left.directive';\r\n\r\nexport const CUI_TEXT_FIELD_CONTROLLER = new InjectionToken<CuiTextFieldController>('');\r\n\r\nexport const CUI_TEXT_FILED_CONTROLLER_PROVIDER: Provider = [\r\n {\r\n provide: CUI_TEXT_FIELD_CONTROLLER,\r\n useFactory: (...controllers: [\r\n CuiTextFieldIconLeftDirective,\r\n CuiTextFieldIdDirective,\r\n CuiTextFieldIsErrorDirective,\r\n CuiTextFieldPlaceholderDirective,\r\n CuiTextFieldSizeDirective\r\n ]) => {\r\n return new CuiTextFieldController(...controllers);\r\n },\r\n deps: [\r\n CUI_TEXT_FIELD_ICON_LEFT,\r\n CUI_TEXT_FIELD_ID,\r\n CUI_TEXT_FIELD_IS_ERROR,\r\n CUI_TEXT_FIELD_PLACEHOLDER,\r\n CUI_TEXT_FIELD_SIZE\r\n ]\r\n }\r\n];\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport { maskitoNumberOptionsGenerator, maskitoParseNumber } from '@maskito/kit';\r\nimport { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-number',\r\n templateUrl: './input-number.template.html',\r\n styleUrls: ['./input-number.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)\r\n ]\r\n})\r\nexport class CuiInputNumberComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected maskOptions = this.generateMask();\r\n protected _precision = 0;\r\n protected _min = Number.MIN_SAFE_INTEGER;\r\n protected _max = Number.MAX_SAFE_INTEGER;\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<CuiNullable<number>>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @Input()\r\n public set precision(value: number) {\r\n this._precision = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @Input()\r\n public set min(value: number) {\r\n this._min = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @Input()\r\n public set max(value: number) {\r\n this._max = value;\r\n this.maskOptions = this.generateMask();\r\n }\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<number>): void {\r\n this.value = value?.toString();\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<CuiNullable<number>>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n this.changeModel((target as HTMLInputElement).value);\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private changeModel(value: string): void {\r\n const parsedValue = maskitoParseNumber(value);\r\n\r\n this.value = value;\r\n\r\n this.onChange(Number.isNaN(parsedValue) ? null : parsedValue);\r\n }\r\n\r\n private generateMask(): MaskitoOptions {\r\n return maskitoNumberOptionsGenerator({\r\n precision: this._precision,\r\n min: this._min,\r\n max: this._max\r\n });\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [maskito]=\"maskOptions\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputNumberComponent } from './input-number.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaskitoDirective,\r\n CuiSvgModule,\r\n ],\r\n declarations: [CuiInputNumberComponent],\r\n exports: [\r\n CuiInputNumberComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputNumberModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-content-wrapper, [cuiContentWrapper]',\r\n standalone: true,\r\n templateUrl: './content-wrapper.component.html',\r\n styleUrl: './content-wrapper.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiContentWrapperComponent {\r\n private readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-base-0)';\r\n private readonly DEFAULT_GAP = 8;\r\n\r\n public readonly backgroundColor = input(this.DEFAULT_BACKGROUND_COLOR);\r\n public readonly gap = input(this.DEFAULT_GAP);\r\n\r\n @HostBinding('style.background')\r\n protected get _backgroundColor(): string {\r\n return this.backgroundColor();\r\n }\r\n\r\n @HostBinding('style.gap.px')\r\n protected get _gap(): number {\r\n return this.gap();\r\n }\r\n}\r\n","<ng-content />\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input [cuiGhostInput]',\r\n standalone: true,\r\n template: '',\r\n styleUrl: './ghost-input.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-error]': 'isError()'\r\n }\r\n})\r\nexport class CuiGhostInputComponent {\r\n public isError = input(false, { transform: booleanAttribute });\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n inject\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiInputType, CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-password',\r\n templateUrl: './input-password.template.html',\r\n styleUrls: ['./input-password.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)\r\n ]\r\n})\r\nexport class CuiInputPasswordComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected isPasswordHidden = true;\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n protected get isToggleButtonShown(): boolean {\r\n return !this.isDisabled;\r\n }\r\n\r\n protected get icon(): CuiIcon {\r\n return this.isPasswordHidden ? 'cuiIconEye' : 'cuiIconEyeOff';\r\n }\r\n\r\n protected get type(): CuiInputType {\r\n return this.isPasswordHidden ? 'password' : 'text';\r\n }\r\n\r\n protected get buttonTitle(): string {\r\n return this.isPasswordHidden ? 'Reveal password' : 'Hide password';\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n if (this.isDisabled) {\r\n this.isPasswordHidden = true;\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n const value = (target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n }\r\n\r\n protected onTogglePasswordVisibility(): void {\r\n this.isPasswordHidden = !this.isPasswordHidden;\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n [type]=\"type\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n<button\r\n *ngIf=\"isToggleButtonShown\"\r\n [title]=\"buttonTitle\"\r\n class=\"c-button\"\r\n (click)=\"onTogglePasswordVisibility()\"\r\n>\r\n <cui-svg\r\n [icon]=\"icon\"\r\n [width]=\"16\"\r\n [height]=\"16\"\r\n color=\"var(--cui-base-500)\"\r\n ></cui-svg>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiInputPasswordComponent } from './input-password.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputPasswordComponent],\r\n exports: [\r\n CuiInputPasswordComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputPasswordModule {\r\n}\r\n","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { cuiProvide } from '@cuby-ui/cdk';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CuiSizeMd, CuiSizeSm } from '../../types';\r\n\r\n@Component({\r\n selector: 'cui-input-text',\r\n templateUrl: './input-text.template.html',\r\n styleUrls: ['./input-text.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)\r\n ]\r\n})\r\nexport class CuiInputTextComponent implements ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n protected value!: CuiNullable<string>;\r\n protected onChange!: CuiOnChange<string>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get iconLeft(): CuiIcon | string | undefined {\r\n return this.cuiTextFieldController.iconLeft;\r\n }\r\n\r\n protected get isClearButtonHidden(): boolean {\r\n return !(this.value && !this.isDisabled);\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<string>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<string>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput({ target }: Event): void {\r\n this.changeModel((target as HTMLInputElement).value);\r\n }\r\n\r\n protected onClear(): void {\r\n this.changeModel('');\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private changeModel(value: string): void {\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n }\r\n}\r\n","<cui-svg\r\n *ngIf=\"iconLeft\"\r\n [icon]=\"iconLeft\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"value\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>\r\n<button\r\n type=\"button\"\r\n class=\"c-button\"\r\n [class.c-button_hidden]=\"isClearButtonHidden\"\r\n (click)=\"onClear()\"\r\n>\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"c-close-icon\"\r\n />\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CuiInputTextComponent } from './input-text.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputTextComponent],\r\n exports: [\r\n CuiInputTextComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputModule {\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { CuiTimeMode } from '@cuby-ui/cdk';\r\n\r\nexport interface CuiInputTimeOptions {\r\n readonly mode: CuiTimeMode;\r\n}\r\n\r\nexport const CUI_INPUT_TIME_DEFAULT_OPTIONS: CuiInputTimeOptions = {\r\n mode: 'HH:MM'\r\n};\r\n\r\nexport const CUI_INPUT_TIME_OPTIONS = new InjectionToken('', {\r\n factory: () => CUI_INPUT_TIME_DEFAULT_OPTIONS\r\n});","import type { ElementRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewChild\r\n} from '@angular/core';\r\nimport type { ControlValueAccessor } from '@angular/forms';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { MaskitoTimeMode } from '@maskito/kit';\r\nimport { maskitoTimeOptionsGenerator } from '@maskito/kit';\r\nimport type { MaskitoOptions } from '@maskito/core';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiTime } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_INPUT_TIME_OPTIONS, CuiInputTimeOptions } from './input-time.options';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n selector: 'cui-input-time',\r\n templateUrl: './input-time.template.html',\r\n styleUrls: ['./input-time.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)\r\n ]\r\n})\r\nexport class CuiInputTimeComponent implements CuiInputTimeOptions, ControlValueAccessor {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n private readonly options = inject(CUI_INPUT_TIME_OPTIONS);\r\n\r\n protected _mode = this.options.mode\r\n protected maskOptions = this.generateMask(this._mode);\r\n protected defaultPlaceholder = this._mode.toLowerCase();\r\n protected value!: CuiNullable<CuiTime>;\r\n protected onChange!: CuiOnChange<CuiNullable<CuiTime>>;\r\n protected onTouched!: CuiOnTouched;\r\n\r\n @Input()\r\n public set mode(value: CuiInputTimeOptions['mode']) {\r\n this._mode = value;\r\n this.maskOptions = this.generateMask(value);\r\n this.defaultPlaceholder = value.toLowerCase();\r\n }\r\n\r\n @HostBinding('class._disabled')\r\n protected isDisabled!: boolean;\r\n\r\n @ViewChild('input')\r\n protected input!: ElementRef<HTMLInputElement>;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder ?? this.defaultPlaceholder;\r\n }\r\n\r\n public get computedValue(): string {\r\n return this.value ? this.value.toString(this._mode) : '';\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n public writeValue(value: CuiNullable<CuiTime>): void {\r\n this.value = value;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<CuiNullable<CuiTime>>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onInput(event: Event): void {\r\n const value = (event.target as HTMLInputElement).value;\r\n\r\n if (value.length !== this._mode.length) {\r\n this.onChange(null);\r\n\r\n return;\r\n }\r\n\r\n const time = CuiTime.fromString(value);\r\n\r\n this.onChange(time);\r\n }\r\n\r\n @HostListener('click')\r\n protected onFocus(): void {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n private generateMask(mode: MaskitoTimeMode): MaskitoOptions {\r\n return maskitoTimeOptionsGenerator({ mode });\r\n }\r\n}\r\n","<cui-svg\r\n icon=\"cuiIconClock\"\r\n color=\"var(--cui-base-500)\"\r\n></cui-svg>\r\n<input\r\n #input\r\n [ngModel]=\"computedValue\"\r\n [attr.id]=\"id\"\r\n [attr.placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [maskito]=\"maskOptions\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-input\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onTouched()\"\r\n>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { CuiInputTimeComponent } from './input-time.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaskitoDirective,\r\n CuiSvgModule\r\n ],\r\n declarations: [CuiInputTimeComponent],\r\n exports: [\r\n CuiInputTimeComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiInputTimeModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'label[cuiLabel]',\r\n templateUrl: './label.template.html',\r\n styleUrls: ['./label.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLabelComponent {\r\n @Input()\r\n public isRequired = false;\r\n}\r\n","<span class=\"c-wrapper\">\r\n <ng-content></ng-content>\r\n</span>\r\n<span\r\n *ngIf=\"isRequired\"\r\n class=\"c-star\"\r\n>\r\n *\r\n</span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiLabelComponent } from './label.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [CuiLabelComponent],\r\n exports: [CuiLabelComponent]\r\n})\r\nexport class CuiLabelModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\n\r\nimport type { CuiShape, CuiSize } from './letter-box.interfaces';\r\n\r\n@Component({\r\n selector: 'cui-letter-box',\r\n standalone: true,\r\n templateUrl: './letter-box.component.html',\r\n styleUrls: ['./letter-box.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLetterBoxComponent {\r\n protected readonly DEFAULT_BACKGROUND_COLOR = 'var(--cui-magenta-500)';\r\n\r\n @Input({ required: true })\r\n public letter!: string;\r\n\r\n @Input()\r\n public backgroundColor?: string;\r\n\r\n @Input()\r\n public size: CuiSize = 'sm';\r\n\r\n @Input()\r\n public shape: CuiShape = null;\r\n\r\n @HostBinding('style.background-color')\r\n protected get _backgroundColor(): string {\r\n return this.backgroundColor ?? this.DEFAULT_BACKGROUND_COLOR;\r\n }\r\n\r\n @HostBinding('attr.data-size')\r\n protected get _size(): CuiSize {\r\n return this.size;\r\n }\r\n\r\n @HostBinding('attr.data-shape')\r\n protected get _shape(): CuiShape {\r\n return this.shape;\r\n }\r\n}\r\n","{{ letter }}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"radio\"][cuiRadio]',\r\n template: '',\r\n styleUrls: ['./radio.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRadioComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiRadioComponent } from './radio.component';\r\n\r\n@NgModule({\r\n declarations: [CuiRadioComponent],\r\n exports: [CuiRadioComponent]\r\n})\r\nexport class CuiRadioModule {\r\n}\r\n","import type { OnDestroy, OnInit, TemplateRef } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n ElementRef,\r\n ViewChild,\r\n HostBinding,\r\n ViewContainerRef,\r\n HostListener\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport type { CuiOnChange, CuiOnTouched, CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiDestroyService } from '@cuby-ui/cdk';\r\nimport { cuiProvide, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport type { CuiOption } from '../../interfaces';\r\nimport type { CuiSizeMd, CuiSizeSm } from '../../types';\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\nimport { CUI_ROOT_SELECTOR } from '../root';\r\n\r\n@Component({\r\n selector: 'cui-select[options]',\r\n templateUrl: './select.template.html',\r\n styleUrls: ['./select.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n CUI_TEXT_FILED_CONTROLLER_PROVIDER,\r\n cuiProvide(NG_VALUE_ACCESSOR, CuiSelectComponent, true),\r\n CuiDestroyService\r\n ],\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class CuiSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly document = inject(DOCUMENT);\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly destroy$ = inject(CuiDestroyService, {self: true});\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, {self: true});\r\n\r\n protected readonly SPACE_BETWEEN_BUTTON_AND_OPTIONS = 3;\r\n\r\n protected isOpened = false;\r\n protected isOptionsListAbove = false;\r\n protected value!: CuiNullable<unknown>;\r\n protected onChange!: CuiOnChange<unknown>;\r\n protected onTouched!: CuiOnTouched;\r\n protected isDisabled!: boolean;\r\n protected selectedOption?: CuiOption;\r\n\r\n @Input()\r\n public options!: CuiOption[];\r\n\r\n @Input()\r\n public defaultOptionText?: string;\r\n\r\n @ViewChild('button')\r\n protected readonly button!: ElementRef<HTMLButtonElement>;\r\n\r\n @ViewChild('getOptionsListHeightContainer')\r\n protected readonly getOptionsListHeightContainer!: ElementRef<HTMLUListElement>;\r\n\r\n @ViewChild('backdrop')\r\n protected readonly backdrop!: TemplateRef<unknown>;\r\n\r\n @ViewChild('optionsWrapper')\r\n protected readonly optionsWrapper!: TemplateRef<unknown>;\r\n\r\n @HostBinding('style.--c-gap')\r\n protected gap = `${this.SPACE_BETWEEN_BUTTON_AND_OPTIONS}px`;\r\n\r\n protected get id(): string | undefined {\r\n return this.cuiTextFieldController.id;\r\n }\r\n\r\n protected get size(): CuiSizeSm | CuiSizeMd {\r\n return this.cuiTextFieldController.size;\r\n }\r\n\r\n protected get placeholder(): string | undefined {\r\n return this.cuiTextFieldController.placeholder;\r\n }\r\n\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n\r\n protected trackByFn(_: number, item: CuiOption): string {\r\n return item.label;\r\n }\r\n\r\n public writeValue(value: unknown): void {\r\n this.value = value;\r\n // TODO: Непонятно, зачем нужно в construction вторая часть выражения\r\n this.selectedOption = this.options.find(option => option.value === value) ?? value as CuiOption;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.clearViewContainerRef();\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onSelect(event: Event, option: CuiOption): void {\r\n event.stopPropagation();\r\n\r\n if (option.isDisabled) {\r\n return\r\n }\r\n\r\n this.value = option.value;\r\n this.selectedOption = option;\r\n\r\n this.onChange(this.value);\r\n this.onSwitch();\r\n this.onTouched();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n protected onSwitch(): void {\r\n if (!this.options.length && !this.defaultOptionText) {\r\n return;\r\n }\r\n\r\n if (!this.isOpened) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.close();\r\n }\r\n\r\n protected onClose(): void {\r\n this.close();\r\n }\r\n\r\n @HostListener('window:resize')\r\n protected onWindowResize(): void {\r\n this.button.nativeElement.blur();\r\n this.close();\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n if (this.isOpened) {\r\n this.onTouched();\r\n }\r\n\r\n this.close();\r\n });\r\n }\r\n\r\n private open(): void {\r\n this.isOpened = true;\r\n\r\n const rootElement = this.document.querySelector(CUI_ROOT_SELECTOR)!;\r\n const {\r\n top: elementRectTop,\r\n left: elementRectLeft,\r\n bottom: elementRectBottom\r\n } = this.element.getBoundingClientRect();\r\n const distanceToBottom = this.document.documentElement.clientHeight\r\n - (elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS);\r\n const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.optionsWrapper);\r\n const node = embeddedViewRef.rootNodes[0];\r\n const nodeStyles = node.style;\r\n\r\n this.isOptionsListAbove = distanceToBottom < this.getOptionsListHeightContainer.nativeElement.offsetHeight;\r\n\r\n embeddedViewRef.detectChanges();\r\n\r\n nodeStyles.width = this.element.offsetWidth + 'px';\r\n nodeStyles.left = window.scrollX + elementRectLeft + 'px';\r\n\r\n if (this.isOptionsListAbove) {\r\n nodeStyles.top = window.scrollY + elementRectTop\r\n - this.getOptionsListHeightContainer.nativeElement.offsetHeight\r\n - this.SPACE_BETWEEN_BUTTON_AND_OPTIONS\r\n + 'px';\r\n } else {\r\n nodeStyles.top = window.scrollY + elementRectBottom + this.SPACE_BETWEEN_BUTTON_AND_OPTIONS + 'px';\r\n }\r\n\r\n rootElement.appendChild(this.viewContainerRef.createEmbeddedView(this.backdrop).rootNodes[0]);\r\n rootElement.appendChild(embeddedViewRef.rootNodes[0]);\r\n }\r\n\r\n private close(): void {\r\n this.isOpened = false;\r\n\r\n this.clearViewContainerRef();\r\n }\r\n\r\n private clearViewContainerRef(): void {\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","<button\r\n #button\r\n type=\"button\"\r\n [attr.id]=\"id\"\r\n [attr.data-size]=\"size\"\r\n [disabled]=\"isDisabled\"\r\n class=\"c-button\"\r\n [class.c-button_active]=\"isOpened\"\r\n [class.c-button_with-error]=\"isError\"\r\n (click)=\"onSwitch()\"\r\n>\r\n <ng-container *ngIf=\"selectedOption; else placeholderTemplate\">\r\n {{ selectedOption.label }}\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <span class=\"c-placeholder\">{{ placeholder }}</span>\r\n </ng-template>\r\n <cui-svg\r\n icon=\"cuiIconChevronDown\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n</button>\r\n<ng-template #backdrop>\r\n <div class=\"c-backdrop\"></div>\r\n</ng-template>\r\n<ng-template #optionsWrapper>\r\n <div\r\n cuiFocusTrap\r\n class=\"c-options__wrapper\"\r\n [class.c-options__wrapper_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n </div>\r\n</ng-template>\r\n<div\r\n #getOptionsListHeightContainer\r\n class=\"c-get-options-list-height-container\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"optionsList\"/>\r\n</div>\r\n<ng-template #optionsList>\r\n <ul\r\n class=\"c-options\"\r\n [class.c-options_top]=\"isOptionsListAbove\"\r\n >\r\n <ng-container *ngIf=\"options.length; else empty\">\r\n <li *ngFor=\"let option of options; trackBy: trackByFn\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n [class.c-option-button_selected]=\"selectedOption === option\"\r\n [disabled]=\"option.isDisabled\"\r\n (click)=\"onSelect($event, option)\"\r\n >\r\n <span>{{ option.label }}</span>\r\n <cui-svg\r\n *ngIf=\"selectedOption === option\"\r\n icon=\"cuiIconCheckSm\"\r\n color=\"var(--cui-info)\"\r\n class=\"c-option-button__icon\"\r\n />\r\n </button>\r\n </li>\r\n </ng-container>\r\n <ng-template #empty>\r\n <li *ngIf=\"defaultOptionText\">\r\n <button\r\n type=\"button\"\r\n class=\"c-option-button\"\r\n (click)=\"onClose()\"\r\n >\r\n {{ defaultOptionText }}\r\n </button>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { CuiSelectComponent } from './select.component';\r\nimport { CuiSvgModule } from '../svg';\r\nimport { CuiTextFieldControllerModule } from '../../directives';\r\nimport { CuiFocusTrapDirective } from '@cuby-ui/cdk';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CuiSvgModule,\r\n CuiFocusTrapDirective\r\n ],\r\n declarations: [CuiSelectComponent],\r\n exports: [\r\n CuiSelectComponent,\r\n CuiTextFieldControllerModule\r\n ]\r\n})\r\nexport class CuiSelectModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-empty-state, [cuiEmptyState]',\r\n standalone: true,\r\n templateUrl: './empty-state.component.html',\r\n styleUrl: './empty-state.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-title]': '!!this.title()'\r\n }\r\n})\r\nexport class CuiEmptyStateComponent {\r\n public readonly title = input<string>();\r\n public readonly subtitle = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n <p class=\"title\">{{ title }}</p>\r\n}\r\n@if (subtitle(); as subtitle) {\r\n <p class=\"subtitle\">{{ subtitle }}</p>\r\n}\r\n<ng-content />\r\n","export const IS_SIDEBAR_OPENED_STORAGE_KEY = 'is-sidebar-opened';\r\n\r\nexport interface CuiSidebarLink {\r\n readonly text: string;\r\n}","import { Injectable, signal } from '@angular/core';\r\n\r\nimport type { CuiDynamicComponent } from './render-dynamic-components.options';\r\n\r\n@Injectable()\r\nexport class CuiRenderDynamicComponentsService {\r\n private readonly dynamicComponentsSignal = signal<CuiDynamicComponent[]>([]);\r\n\r\n public readonly dynamicComponents = this.dynamicComponentsSignal.asReadonly();\r\n\r\n public open(dynamicComponent: CuiDynamicComponent): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => [...prevDynamicComponents, dynamicComponent]);\r\n }\r\n\r\n public closeLast(): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => prevDynamicComponents.slice(0, -1));\r\n }\r\n\r\n public closeAllExceptFirst(): void {\r\n this.dynamicComponentsSignal.update((prevDynamicComponents) => {\r\n const firstDynamicComponent = prevDynamicComponents[0];\r\n\r\n return firstDynamicComponent ? [firstDynamicComponent] : [];\r\n });\r\n }\r\n\r\n public closeAll(): void {\r\n this.dynamicComponentsSignal.set([]);\r\n }\r\n}\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\n\r\nimport { CuiRenderDynamicComponentsService } from './render-dynamic-components.service';\r\n\r\n@Component({\r\n selector: 'cui-render-dynamic-components',\r\n imports: [NgComponentOutlet],\r\n standalone: true,\r\n templateUrl: './render-dynamic-components.component.html',\r\n styleUrl: './render-dynamic-components.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiRenderDynamicComponentsComponent {\r\n private readonly renderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n protected readonly dynamicComponents = this.renderDynamicComponentsService.dynamicComponents;\r\n}\r\n","@for (dynamicComponent of dynamicComponents(); let isLast = $last; track $index) {\r\n <div\r\n class=\"container\"\r\n [class.container_hidden]=\"!isLast\"\r\n >\r\n <ng-container *ngComponentOutlet=\"dynamicComponent.component; inputs: dynamicComponent.inputs\" />\r\n </div>\r\n}\r\n","import { inject, Injectable, signal } from '@angular/core';\r\nimport { CUI_LOCAL_STORAGE } from '@cuby-ui/cdk';\r\n\r\nimport { IS_SIDEBAR_OPENED_STORAGE_KEY } from './sidebar.options';\r\nimport { CuiRenderDynamicComponentsService } from '../render-dynamic-components';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiSidebarService extends CuiRenderDynamicComponentsService {\r\n private readonly localStorage = inject(CUI_LOCAL_STORAGE);\r\n\r\n private readonly isOpenedSignal = signal(this.localStorage.getItem(IS_SIDEBAR_OPENED_STORAGE_KEY) === 'true');\r\n private readonly isHiddenSignal = signal(false);\r\n private readonly widthSignal = signal<number>(0);\r\n\r\n public readonly isOpened = this.isOpenedSignal.asReadonly();\r\n public readonly isHidden = this.isHiddenSignal.asReadonly();\r\n public readonly width = this.widthSignal.asReadonly();\r\n\r\n public hide(): void {\r\n this.isHiddenSignal.set(true);\r\n }\r\n\r\n public show(): void {\r\n this.isHiddenSignal.set(false);\r\n }\r\n\r\n public switch(): void {\r\n this.isOpenedSignal.update((value) => !value);\r\n this.localStorage.setItem(IS_SIDEBAR_OPENED_STORAGE_KEY, this.isOpenedSignal().toString());\r\n }\r\n\r\n public setWidth(value: number): void {\r\n this.widthSignal.set(value);\r\n }\r\n}\r\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n selector: 'header[cuiSidebarHeader]',\r\n imports: [CuiSvgModule, NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-header.component.html',\r\n styleUrl: 'sidebar-header.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarHeaderComponent {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n protected readonly isOpened = this.sidebarService.isOpened;\r\n protected readonly buttonIcon = computed<CuiIcon>(() =>\r\n this.isOpened() ? 'cuiIconChevronsLeft' : 'cuiIconChevronsRight'\r\n );\r\n\r\n public readonly headerSlot = input.required<TemplateRef<unknown>>();\r\n\r\n protected onSwitch(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.document.body.click();\r\n this.sidebarService.switch();\r\n }\r\n}\r\n","<ng-container [ngTemplateOutlet]=\"headerSlot()\" [ngTemplateOutletContext]=\"{ $implicit: isOpened() }\" />\r\n<button type=\"button\" class=\"button\" [class.button_opened]=\"isOpened()\" (click)=\"onSwitch($event)\">\r\n <cui-svg [icon]=\"buttonIcon()\" color=\"var(--cui-base-500)\" />\r\n</button>","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { CuiDimensionsObserverDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiSidebarService } from '../sidebar.service';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-container',\r\n standalone: true,\r\n templateUrl: 'sidebar-container.component.html',\r\n styleUrl: 'sidebar-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [\r\n {\r\n directive: CuiDimensionsObserverDirective,\r\n outputs: ['cuiResizeObserver']\r\n }\r\n ],\r\n host: {\r\n '(cuiResizeObserver)': 'onResize($event.width)',\r\n '[class._opened]': 'isOpened()'\r\n }\r\n})\r\nexport class CuiSidebarContainerComponent {\r\n private readonly sidebarService = inject(CuiSidebarService);\r\n\r\n protected readonly isOpened = this.sidebarService.isOpened;\r\n protected readonly isHidden = this.sidebarService.isHidden;\r\n\r\n protected onResize(width: number): void {\r\n this.sidebarService.setWidth(width);\r\n }\r\n}\r\n","@if (!isHidden()) {\r\n <ng-content />\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiSidebarLink } from '../sidebar.options';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-navigation',\r\n imports: [NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation.component.html',\r\n styleUrl: 'sidebar-navigation.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationComponent {\r\n public readonly links = input.required<CuiSidebarLink[]>();\r\n public readonly slot = input.required<TemplateRef<unknown>>();\r\n}\r\n","<nav class=\"nav\">\r\n <ul class=\"list\">\r\n @for (link of links(); track link.text; let isLast = $last) {\r\n <ng-container [ngTemplateOutlet]=\"slot()\" [ngTemplateOutletContext]=\"{ $implicit: link, isLast }\" />\r\n }\r\n </ul>\r\n</nav>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CuiIcon } from '@cuby-ui/icons';\r\n\r\nimport { CuiSvgModule } from '../../svg';\r\n\r\n@Component({\r\n selector: '[cuiSidebarNavigationItem]',\r\n imports: [CuiSvgModule],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation-item.component.html',\r\n styleUrl: 'sidebar-navigation-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._active]': 'active()'\r\n }\r\n})\r\nexport class CuiSidebarNavigationItemComponent {\r\n public readonly text = input.required<string>();\r\n public readonly icon = input<CuiIcon>();\r\n public readonly active = input<boolean>();\r\n public readonly isOpen = input<boolean>();\r\n}\r\n","@if (icon(); as icon) {\r\n<cui-svg [icon]=\"icon\" color=\"var(--cui-base-500)\" />\r\n}\r\n@if (isOpen()) {\r\n{{ text() }}\r\n}","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-sidebar-navigation-container',\r\n imports: [NgTemplateOutlet],\r\n standalone: true,\r\n templateUrl: 'sidebar-navigation-container.component.html',\r\n styleUrl: 'sidebar-navigation-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiSidebarNavigationContainerComponent {\r\n public readonly slot = input.required<TemplateRef<unknown>>();\r\n public readonly title = input<string>();\r\n}\r\n","@if (title(); as title) {\r\n <h3 class=\"title\">{{ title }}</h3>\r\n}\r\n\r\n<ng-container [ngTemplateOutlet]=\"slot()\" />\r\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-card-wrapper, [cuiCardWrapper]',\r\n standalone: true,\r\n templateUrl: 'card-wrapper.component.html',\r\n styleUrl: 'card-wrapper.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._with-border]': 'withBorder()'\r\n }\r\n})\r\nexport class CuiCardWrapperComponent {\r\n public readonly withBorder = input(true);\r\n}\r\n","<ng-content />\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cui-layout',\r\n standalone: true,\r\n templateUrl: './layout.component.html',\r\n styleUrl: './layout.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[style.marginLeft.px]': 'sidebarWidth()'\r\n }\r\n})\r\nexport class CuiLayoutComponent {\r\n public readonly sidebarWidth = input.required<number>();\r\n}\r\n","<div class=\"content\">\r\n <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\nexport const CUI_TAB_ACTIVATE = 'cui-tab-activate';\r\n\r\n@Component({\r\n selector: 'button[cuiTab]',\r\n templateUrl: './tab.template.html',\r\n styleUrls: ['./tab.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiTabComponent {\r\n protected readonly element = inject(ElementRef).nativeElement as HTMLButtonElement;\r\n\r\n @HostListener('click')\r\n protected onClick(): void {\r\n this.element.dispatchEvent(new CustomEvent(CUI_TAB_ACTIVATE, { bubbles: true }));\r\n }\r\n}\r\n","<ng-content />\r\n","import type { AfterViewChecked } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\nimport { CUI_TAB_ACTIVATE } from './tab';\r\n\r\n@Component({\r\n selector: 'cui-tabs',\r\n templateUrl: './tabs.template.html',\r\n styleUrls: ['./tabs.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiTabsComponent implements AfterViewChecked {\r\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\r\n\r\n private readonly activeElementClass = '_active';\r\n\r\n protected get tabs(): readonly HTMLElement[] {\r\n return Array.from(this.element.querySelectorAll<HTMLElement>('[cuiTab]'));\r\n }\r\n\r\n public get activeElement(): HTMLElement | null {\r\n return this.tabs[this.activeItemIndex] || null;\r\n }\r\n\r\n public ngAfterViewChecked(): void {\r\n this.changeActiveItem();\r\n }\r\n\r\n @Input()\r\n public activeItemIndex = 0;\r\n\r\n @Output()\r\n public readonly activeItemIndexChange = new EventEmitter<number>();\r\n\r\n @HostListener(CUI_TAB_ACTIVATE, ['$event'])\r\n protected onActivate(event: CustomEvent): void {\r\n event.stopPropagation();\r\n\r\n const index = this.tabs.findIndex((tab) => tab === event.target);\r\n\r\n if (index === this.activeItemIndex) {\r\n return;\r\n }\r\n\r\n this.activeItemIndexChange.emit(index);\r\n this.activeItemIndex = index;\r\n }\r\n\r\n private changeActiveItem(): void {\r\n this.tabs.forEach(nativeElement => {\r\n const active = nativeElement === this.activeElement;\r\n\r\n nativeElement.classList.toggle(this.activeElementClass, active);\r\n });\r\n }\r\n}\r\n","<ng-content select=\"[cuiTab]\" />\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTabsComponent } from './tabs.component';\r\nimport { CuiTabComponent } from './tab';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [CuiTabsComponent, CuiTabComponent],\r\n exports: [CuiTabsComponent, CuiTabComponent]\r\n})\r\nexport class CuiTabsModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { CuiAutoResizingDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FILED_CONTROLLER_PROVIDER } from '../../directives';\r\n\r\n@Component({\r\n selector: 'textarea[cuiTextarea]',\r\n template: '',\r\n styleUrls: ['./textarea.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER],\r\n hostDirectives: [CuiAutoResizingDirective]\r\n})\r\nexport class CuiTextareaComponent {\r\n private readonly cuiTextFieldController = inject(CUI_TEXT_FIELD_CONTROLLER);\r\n\r\n @Input()\r\n @HostBinding('rows')\r\n public rows = 4;\r\n\r\n @Input()\r\n @HostBinding('class._no-borders-and-paddings')\r\n public noBordersAndPaddings = false;\r\n\r\n @HostBinding('class._with-error')\r\n protected get isError(): boolean {\r\n return this.cuiTextFieldController.isError;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiTextareaComponent } from './textarea.component';\r\n\r\n@NgModule({\r\n declarations: [CuiTextareaComponent],\r\n exports: [CuiTextareaComponent]\r\n})\r\nexport class CuiTextareaModule {\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[type=\"checkbox\"][cuiToggle]',\r\n template: '',\r\n styleUrls: ['./toggle.style.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiToggleComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CuiToggleComponent } from './toggle.component';\r\n\r\n@NgModule({\r\n declarations: [CuiToggleComponent],\r\n exports: [CuiToggleComponent]\r\n})\r\nexport class CuiToggleModule {\r\n}\r\n","import { Translation } from '@jsverse/transloco';\r\n\r\nimport type { CuiEditorConfig } from '../interfaces';\r\n\r\nexport const COMBINED_TEXT_BLOCK_PART = 'combined-text-block-part';\r\nexport const COMBINED_TEXT_BLOCK = 'combined-text-block';\r\nexport const COMBINED_TEXT_BLOCK_NAME = 'paragraph';\r\nexport const COMBINED_TEXT_BLOCK_ADDED = 'combinedTextBlockAdded';\r\nexport const COMBINED_TEXT_BLOCK_UPDATED = 'combinedTextBlockUpdated';\r\nexport const COMBINED_TEXT_BLOCK_REMOVED = 'combinedTextBlockRemoved';\r\n\r\nexport const SPLIT_MAX_LENGTH = 1000;\r\nexport const SPLIT_LENGTH = 500;\r\n\r\nexport const EDITOR_SELECTOR = '[data-editor]';\r\nexport const DEFAULT_PLACEHOLDER = \"Type text or '/' for commands...\";\r\nexport const DEFAULT_READONLY_PLACEHOLDER = \"No 'Description' was provided\";\r\nexport const DEFAULT_CONFIG: CuiEditorConfig = {\r\n tools: {},\r\n readOnly: false,\r\n autofocus: false\r\n};\r\n\r\nexport const CuiEditorTranslations: Record<string, Promise<Translation>> = {\r\n en: import('../i18n/en.json'),\r\n} as const;\r\n","import type { BlockToolData } from '@editorjs/editorjs';\r\nimport Header from '@editorjs/header';\r\n\r\nexport class CuiHeaderTool extends Header {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override validate(): boolean {\r\n return true;\r\n }\r\n\r\n public override render(): HTMLHeadingElement {\r\n return super.render();\r\n }\r\n\r\n public override save(block: HTMLHeadingElement): BlockToolData {\r\n return super.save(block);\r\n }\r\n}\r\n","import List from '@editorjs/list';\r\n\r\nexport class CuiListTool extends List {\r\n constructor(data: any) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLElement {\r\n return super.render() as HTMLElement;\r\n }\r\n}\r\n","import type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport type { CuiParent } from '../interfaces/parent';\r\n\r\nexport class CuiSelectionBase {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n private readonly SELECTED_TEXT_CLASS = '_selected';\r\n\r\n public TAG = 'B';\r\n public COMMAND = 'bold';\r\n\r\n protected readonly api!: API;\r\n protected button!: HTMLButtonElement;\r\n protected _state = false;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n this.addSelectionToDOM(range, startContainer, endContainer);\r\n }\r\n\r\n public unwrap(): void {\r\n document.execCommand(this.COMMAND);\r\n }\r\n\r\n public checkState(): boolean {\r\n this.state = document.queryCommandState(this.COMMAND);\r\n\r\n return this.state;\r\n }\r\n\r\n public surround(range: Range): void {\r\n if (this.state) {\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.wrap(range);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addSelectionToDOM(range: Range, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n this.addSelectionForOnlyChild(range);\r\n\r\n return;\r\n }\r\n\r\n this.addSelectionForChildren(startParent, endParent);\r\n }\r\n\r\n private addSelectionForOnlyChild(range: Range): void {\r\n const selectedText = range.extractContents();\r\n const selection = this.createElement();\r\n\r\n selection.appendChild(selectedText);\r\n range.insertNode(selection);\r\n }\r\n\r\n private addSelectionForChildren(startParent: Element, endParent: Element): void {\r\n const nodes = this.getSelectedNodesFromDOM(startParent, endParent);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.add(this.SELECTED_TEXT_CLASS));\r\n\r\n document.execCommand(this.COMMAND);\r\n\r\n nodes.forEach((node) => (node as HTMLElement).classList.remove(this.SELECTED_TEXT_CLASS));\r\n }\r\n\r\n private getSelectedNodesFromDOM(startParent: Element, endParent: Element): Element[] {\r\n const nodes = [startParent];\r\n let next = startParent.nextSibling;\r\n\r\n while (next && next !== endParent) {\r\n nodes.push(next as Element);\r\n\r\n next = next?.nextSibling || null;\r\n }\r\n\r\n nodes.push(endParent);\r\n\r\n return nodes;\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiBoldInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'bold';\r\n\r\n public static title = 'Bold';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n b: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--bold'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 10.0002V5.91683C7.5 5.8708 7.53731 5.8335 7.58333 5.8335H8.66667C9.58333 5.8335 11.6667 5.91683 11.6667 7.91683C11.6667 7.91683 11.6667 10.0002 9.16667 10.0002M7.5 10.0002V14.0002C7.5 14.0922 7.57462 14.1668 7.66667 14.1668H10.4167C11.6667 14.1668 12.5 13.3335 12.5 12.0835C12.5 9.754 9.16667 10.0002 9.16667 10.0002M7.5 10.0002H9.16667\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+B';\r\n }\r\n}\r\n","import type { InlineTool, InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport { CuiSelectionBase } from './selection-base.tool';\r\n\r\nexport class CuiItalicInlineTool extends CuiSelectionBase implements InlineTool {\r\n public override readonly COMMAND = 'italic';\r\n\r\n public override readonly TAG = 'I';\r\n public static title = 'Italic';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n i: {}\r\n };\r\n }\r\n\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--italic'\r\n };\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button') as HTMLButtonElement;\r\n this.button.type = 'button';\r\n this.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.118 8.3335C10.3532 10.6116 9.16797 14.1668 9.16797 14.1668\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n <path d=\"M11.8404 5.8335H11.832\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public get shortcut(): string {\r\n return 'CMD+I';\r\n }\r\n}\r\n","import type { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return ({ value }: AbstractControl): ValidationErrors | null => {\r\n try {\r\n new URL(value);\r\n\r\n return null;\r\n } catch {\r\n return { url: true };\r\n }\r\n };\r\n}\r\n","export const BlockConversionToCombined = {\r\n paragraph: 'combinedTextBlock'\r\n};\r\n\r\nexport const enum EventActions {\r\n add = 'block-added',\r\n update = 'block-changed',\r\n remove = 'block-removed'\r\n}\r\n","export function generateId(): string {\r\n return '_' + Math.random().toString(36).substring(2, 9);\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport type { Block, JTextCreateBlockRequestBody, JTextCreateBlocksRequestBody } from './jtext-api.options';\r\nimport { CuiRequestOptions } from '../interfaces';\r\n\r\n@Injectable()\r\nexport class CuiJTextApiService {\r\n private readonly httpClient = inject(HttpClient);\r\n\r\n private readonly GET_BLOCK_DEFAULT_SIZE = 40;\r\n private readonly JTEXT_URL = 'framer/jtext';\r\n private readonly BLOCK_URL = 'block';\r\n private readonly BLOCKS_URL = 'blocks';\r\n private readonly JTEXT_BLOCK_URL = this.JTEXT_URL + '/' + this.BLOCK_URL;\r\n private readonly JTEXT_BLOCKS_URL = this.JTEXT_URL + '/' + this.BLOCKS_URL;\r\n\r\n private options: CuiRequestOptions = {};\r\n\r\n public addOptions(options?: CuiRequestOptions): void {\r\n this.options = options ?? {};\r\n }\r\n\r\n public createBlock(body: JTextCreateBlockRequestBody): Observable<string> {\r\n return this.httpClient.post<string>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public updateBlock(body: Block): Observable<Block> {\r\n return this.httpClient.patch<Block>(this.JTEXT_BLOCK_URL, body, this.options);\r\n }\r\n\r\n public getBlocks(fragmentId: string, page = 0, sizeBlock = this.GET_BLOCK_DEFAULT_SIZE): Observable<Block> {\r\n return this.httpClient.get(`${this.JTEXT_URL}/${fragmentId}`, {\r\n params: { page, sizeBlock },\r\n headers: { 'Content-Type': 'application/x-ndjson' },\r\n observe: 'events',\r\n ...this.options\r\n }) as unknown as Observable<Block>;\r\n }\r\n\r\n public createBlocks(body: JTextCreateBlocksRequestBody): Observable<string[]> {\r\n return this.httpClient.post<string[]>(this.JTEXT_BLOCKS_URL, body, this.options);\r\n }\r\n\r\n public deleteBlock(containerId: string, blockId: string): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCK_URL}/${blockId}`, this.options);\r\n }\r\n\r\n public deleteBlocks(containerId: string, blocksIds: string[]): Observable<void> {\r\n return this.httpClient.delete<void>(`${this.JTEXT_URL}/${containerId}/${this.BLOCKS_URL}`, {\r\n params: { blocksIds },\r\n ...this.options\r\n });\r\n }\r\n}\r\n","import { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type EditorJS from '@editorjs/editorjs';\r\nimport type { BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport type { Observable } from 'rxjs';\r\nimport { forkJoin, of } from 'rxjs';\r\n\r\nimport {\r\n COMBINED_TEXT_BLOCK_ADDED,\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n COMBINED_TEXT_BLOCK_REMOVED,\r\n COMBINED_TEXT_BLOCK_UPDATED\r\n} from '../constants';\r\nimport type {\r\n CuiCombinedBlockAddingEvent,\r\n CuiCombinedBlockToolData,\r\n CuiCombinedPartBlock,\r\n CuiEventActionData,\r\n CuiFullBlockData\r\n} from '../interfaces';\r\nimport { generateId } from '../utils/generate-id';\r\nimport type { Block } from './jtext-api.options';\r\nimport { CuiJTextApiService } from './jtext-api.service';\r\nimport { EventActions } from './editor-service.options';\r\n\r\n@Injectable()\r\nexport class CuiEditorService {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly jtextService = inject(CuiJTextApiService);\r\n\r\n public sortEventsByTypes(events: BlockMutationEvent[]): CuiEventActionData {\r\n const blocks: CuiEventActionData = {\r\n 'block-removed': [],\r\n 'block-added': [],\r\n 'block-changed': []\r\n };\r\n\r\n events.forEach((editorEvent) => {\r\n if (editorEvent.detail.target.name === COMBINED_TEXT_BLOCK_NAME) {\r\n return;\r\n }\r\n\r\n const eventType = editorEvent.type;\r\n\r\n if (eventType === EventActions.update) {\r\n const changedBlock = blocks[EventActions.add].find(\r\n (block) => block.detail.target.id === editorEvent.detail.target.id\r\n );\r\n\r\n if (changedBlock) {\r\n return;\r\n }\r\n }\r\n\r\n if (eventType === EventActions.remove) {\r\n const len = blocks[EventActions.add].length;\r\n\r\n blocks[EventActions.add] = blocks[EventActions.add].filter(\r\n (block) => block.detail.target.id !== editorEvent.detail.target.id\r\n );\r\n\r\n if (len > blocks[EventActions.add].length) {\r\n return;\r\n }\r\n }\r\n\r\n blocks[eventType as EventActions].push(editorEvent);\r\n });\r\n\r\n return blocks;\r\n }\r\n\r\n public collectAddedBlocksRequest(editorId: string, addedBlocks: CuiFullBlockData[]): Observable<string[]> {\r\n const addBlocksBody = {\r\n jtextContainerId: editorId,\r\n position: addedBlocks[0]?.index,\r\n block: addedBlocks.map((e) => e.block)\r\n };\r\n const addBlocks$ = addedBlocks.length ? this.jtextService.createBlocks(addBlocksBody) : of([]);\r\n\r\n return addBlocks$;\r\n }\r\n\r\n public collectUpdatedBlocksRequest(updatedBlocks: Block[], blockIdsMap: Map<string, string>): Observable<Block[]> {\r\n const updatedBlocksWithId = updatedBlocks.reduce((acc, block) => {\r\n const blockWithId = {\r\n ...block,\r\n id: blockIdsMap.get(block.id!)\r\n };\r\n\r\n if (blockWithId.id) {\r\n acc.push(blockWithId);\r\n }\r\n\r\n return acc;\r\n }, [] as Block[]);\r\n\r\n const updateBlocksArray = updatedBlocksWithId.map((block) => this.jtextService.updateBlock(block));\r\n const updateBlocks$ = updatedBlocksWithId.length ? forkJoin(updateBlocksArray) : of([]);\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n public collectRemovedBlocksRequest(\r\n editorId: string,\r\n removedBlocksIds: string[],\r\n blockIdsMap: Map<string, string>\r\n ): Observable<void> {\r\n const removedBlocks: string[] = removedBlocksIds.reduce((blockIds, blockId) => {\r\n const backendID = blockIdsMap.get(blockId) as string;\r\n\r\n if (backendID) {\r\n blockIds.push(backendID);\r\n }\r\n\r\n return blockIds;\r\n }, [] as string[]);\r\n\r\n const removeBlocks$ = removedBlocks.length ? this.jtextService.deleteBlocks(editorId, removedBlocks) : of();\r\n\r\n removedBlocks.forEach((removedBlock) => {\r\n blockIdsMap.delete(removedBlock);\r\n });\r\n\r\n return removeBlocks$;\r\n }\r\n\r\n public getFullBlockData(event: BlockMutationEvent, editorData: OutputData): CuiFullBlockData {\r\n const target = event.detail.target;\r\n const index = Number(target.holder.dataset['index']);\r\n const blockIndex = (event.detail as unknown as { index: number }).index;\r\n const blockType = target.name;\r\n const blockId = target.id;\r\n const currentBlockByIndex = editorData.blocks[blockIndex];\r\n const blockData = currentBlockByIndex?.id === blockId ? editorData.blocks[blockIndex].data : { text: '' };\r\n\r\n return {\r\n index,\r\n id: blockId,\r\n block: {\r\n type: blockType,\r\n data: blockData\r\n }\r\n };\r\n }\r\n\r\n public setListenersOnCustomBlockChanges(\r\n editor: EditorJS,\r\n data: {\r\n removedCallback: (blockIds: string[]) => void;\r\n updatedCallback: (updatedBlocks: Block[]) => void;\r\n addedCallback: (data: CuiCombinedBlockAddingEvent) => void;\r\n }\r\n ): void {\r\n editor.on(COMBINED_TEXT_BLOCK_ADDED, data.addedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_UPDATED, data.updatedCallback);\r\n editor.on(COMBINED_TEXT_BLOCK_REMOVED, data.removedCallback);\r\n }\r\n\r\n public setStartBlock(editorId: string, callback: (block: Block<CuiCombinedBlockToolData>, id: string) => void): void {\r\n const blockId = generateId();\r\n const emptyBlock: CuiCombinedPartBlock = {\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: '',\r\n parentId: blockId,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n const body = {\r\n position: 0,\r\n block: emptyBlock,\r\n jtextContainerId: editorId\r\n };\r\n\r\n this.jtextService\r\n .createBlock(body)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((id) => {\r\n emptyBlock.id = id;\r\n\r\n const block: Block<CuiCombinedBlockToolData> = {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: blockId,\r\n textBlocks: [emptyBlock]\r\n }\r\n };\r\n\r\n callback(block, id);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport type { Tool } from '../components/editor-tool-modal';\r\n\r\nimport { MarkerType } from './markers-service.options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiMarkersService {\r\n protected roles: Tool[] = [];\r\n protected tools: Tool[] = [\r\n {\r\n id: '0',\r\n image: 'blob:https://www.figma.com/f985f4fc-abc6-4727-857e-80633836e2b2',\r\n title: 'Шуруповерт',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '1',\r\n image: 'blob:https://www.figma.com/92ad9b38-566c-4ff6-84ba-0b20b24fef39',\r\n title: 'Молоток',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '2',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '3',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '4',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '5',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '6',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '7',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n },\r\n {\r\n id: '8',\r\n image: '/assets/image 545.png',\r\n title: 'Лопата',\r\n type: MarkerType.tool\r\n }\r\n ];\r\n\r\n public getMarkersByType(type: MarkerType): Tool[] {\r\n return type === MarkerType.role ? this.roles : this.tools;\r\n }\r\n\r\n public getMarkerObjectByType(type: MarkerType, id: string): Tool | undefined {\r\n const markersArray = this.getMarkersByType(type);\r\n\r\n return markersArray.find((marker) => marker.id === id);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\n\r\nimport type { Tool } from '../../../editor-tool-modal';\r\n\r\n@Component({\r\n selector: 'cc-select-option',\r\n standalone: true,\r\n imports: [NgIf],\r\n templateUrl: './select-option.component.html',\r\n styleUrls: ['./select-option.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SelectOptionComponent {\r\n @Input({ required: true })\r\n public tool!: Tool;\r\n}\r\n","<ng-container *ngIf=\"tool\">\r\n <img\r\n *ngIf=\"tool.image\"\r\n class=\"image\"\r\n [src]=\"tool.image\"\r\n alt=\"\"\r\n />\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n</ng-container>\r\n","import { DOCUMENT, NgFor, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n forwardRef,\r\n HostBinding,\r\n inject,\r\n Input,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable, CuiOnChange, CuiOnTouched } from '@cuby-ui/cdk';\r\nimport { CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';\r\n\r\nimport type { Tool } from '../editor-tool-modal/editor-tool-modal.options';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { MarkerType } from '../../services/markers-service.options';\r\nimport { CuiMarkersService } from '../../services/markers.service';\r\n\r\nimport { SelectOptionComponent } from './component/select-item/select-option.component';\r\n\r\n@Component({\r\n selector: 'cc-marker-select',\r\n imports: [\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SelectOptionComponent,\r\n NgIf,\r\n NgFor\r\n ],\r\n standalone: true,\r\n templateUrl: './marker-select.component.html',\r\n styleUrls: ['./marker-select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MarkerSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MarkerSelectComponent implements OnInit, OnDestroy {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly markersService = inject(CuiMarkersService);\r\n\r\n private SPACE_BETWEEN_TARGET_AND_LIST = 5;\r\n\r\n @Input()\r\n public target!: HTMLButtonElement;\r\n\r\n @Input()\r\n public set space(value: number) {\r\n this.SPACE_BETWEEN_TARGET_AND_LIST = value;\r\n }\r\n\r\n protected isVisible = signal(false);\r\n protected isHidden = signal(true);\r\n protected editor!: HTMLElement;\r\n protected value!: CuiNullable<Tool>;\r\n // TODO: set current type\r\n protected elements = this.markersService.getMarkersByType(MarkerType.tool);\r\n protected onChange!: CuiOnChange<unknown>;\r\n protected onTouched!: CuiOnTouched;\r\n protected readonly targetToggleEventListener = (): void => {\r\n this.isVisible.update((prev) => !prev);\r\n\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.calculateDropdownPosition();\r\n };\r\n\r\n @HostBinding('class._hidden')\r\n protected get hide(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n public writeValue(value: Tool): void {\r\n this.value = value;\r\n }\r\n\r\n public registerOnChange(fn: CuiOnChange<unknown>): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: CuiOnTouched): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n protected onScroll(): void {\r\n this.isVisible.set(false);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initTargetElementListener();\r\n this.initClickOutsideSubscription();\r\n this.initOnCloseWhenEditorScroll();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEventListeners();\r\n }\r\n\r\n protected onToolClick(tool: Tool): void {\r\n this.value = tool;\r\n\r\n this.onChange(this.value);\r\n this.onTouched();\r\n\r\n // this.isVisible.set(false);\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n if (this.target.contains(target) || !this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n });\r\n }\r\n\r\n private initOnCloseWhenEditorScroll(): void {\r\n this.editor = this.element.closest(EDITOR_SELECTOR);\r\n\r\n this.editor?.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n private destroyEventListeners(): void {\r\n this.editor?.removeEventListener('scroll', this.onScroll.bind(this));\r\n this.target?.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.isHidden.set(true);\r\n\r\n setTimeout(() => {\r\n const target = this.target;\r\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n this.document.documentElement;\r\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);\r\n const distanceToRight = documentClientWidth - targetRectLeft;\r\n const isListRight = distanceToRight < this.element.offsetWidth;\r\n const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n this.isHidden.set(false);\r\n });\r\n }\r\n\r\n private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n if (isListRight) {\r\n this.element.style.right = 'auto';\r\n this.element.style.left = left;\r\n\r\n return;\r\n }\r\n\r\n this.element.style.right = left - this.element.offsetWidth + width;\r\n this.element.style.left = 'auto';\r\n }\r\n\r\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (isListAbove) {\r\n this.element.style.top =\r\n bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n }\r\n}\r\n","<ng-container *ngIf=\"isVisible()\">\r\n <div\r\n #dropdown\r\n class=\"dropdown\"\r\n >\r\n <header class=\"header\">\r\n <cui-input-text\r\n class=\"header__input\"\r\n cuiTextFieldId=\"estimated\"\r\n cuiTextFieldPlaceholder=\"Search...\"\r\n />\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconFiltersLines\"\r\n ></button>\r\n </header>\r\n <div class=\"scrollable-content\">\r\n <cc-select-option\r\n *ngFor=\"let element of elements\"\r\n [class._selected]=\"element.id === value?.id\"\r\n (click)=\"onToolClick(element)\"\r\n [tool]=\"element\"\r\n />\r\n </div>\r\n </div>\r\n</ng-container>\r\n","export const MARKER_SELECT_SELECTOR = 'marker-select';\r\n","import { DOCUMENT, NgIf } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n computed,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport {\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiSvgModule\r\n} from '../../../components';\r\n\r\nimport { urlValidator } from '../../utils/url.validator';\r\n\r\nimport { EDITOR_SELECTOR } from '../../constants';\r\nimport { CuiMarkersService } from '../../services';\r\nimport type { Tool } from '../editor-tool-modal';\r\nimport { MarkerSelectComponent } from '../marker-select';\r\n\r\nimport type { MarkerData, MarkerDataControl } from './marker-modal.interfaces';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n CuiButtonModule,\r\n CuiElementDirective,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiSvgModule,\r\n FormsModule,\r\n MarkerSelectComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n NgIf\r\n ],\r\n templateUrl: './marker-modal.component.html',\r\n styleUrls: ['./marker-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class MarkerModalComponent implements OnInit, OnDestroy {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly markersService = inject(CuiMarkersService);\r\n\r\n protected readonly TITLE_MAX_LENGTH = 100;\r\n\r\n protected readonly formTitle = signal('');\r\n protected readonly isTitleEmpty = computed(() => !this.formTitle().length);\r\n protected readonly isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);\r\n protected readonly isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());\r\n protected readonly titleId = this.cuiIdService.generate();\r\n protected readonly dataId = this.cuiIdService.generate();\r\n\r\n protected dynamicDataControl!: MarkerDataControl;\r\n protected spaceBetweenTargetAndList = 5;\r\n protected startTitle = '';\r\n\r\n @Input()\r\n public set title(value: string) {\r\n this.startTitle = value;\r\n this.formTitle.set(value);\r\n }\r\n\r\n @Input()\r\n public set url(value: string) {\r\n this.dynamicDataControl = new FormControl(value, {\r\n nonNullable: true,\r\n validators: [Validators.required, urlValidator()]\r\n });\r\n }\r\n\r\n @Input()\r\n public set tool(value: Tool) {\r\n const tool = this.markersService.getMarkerObjectByType(value.type!, value.id);\r\n this.dynamicDataControl = new FormControl(tool, {\r\n nonNullable: true,\r\n validators: [Validators.required]\r\n });\r\n }\r\n\r\n @Input()\r\n public isGlobal = false;\r\n\r\n @Input()\r\n public isTool = false;\r\n\r\n @Input()\r\n public target!: HTMLButtonElement;\r\n\r\n @Input()\r\n public set space(value: number) {\r\n this.spaceBetweenTargetAndList = value;\r\n }\r\n\r\n @Output()\r\n public saveClicked = new EventEmitter<MarkerData>();\r\n\r\n @Output()\r\n public cancelClicked = new EventEmitter();\r\n\r\n protected isVisible = signal(false);\r\n protected isHidden = signal(true);\r\n protected editor!: HTMLElement;\r\n protected currentTool?: Tool;\r\n protected readonly targetToggleEventListener = (): void => {\r\n this.isVisible.update((prev) => !prev);\r\n\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.calculateDropdownPosition();\r\n };\r\n\r\n protected get isFormInvalid(): boolean {\r\n return this.dynamicDataControl.invalid || this.isTitleInvalid();\r\n }\r\n\r\n protected get isDynamicDataErrorShown(): boolean {\r\n return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;\r\n }\r\n\r\n @HostBinding('class._hidden')\r\n protected get hide(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n @HostBinding('class._fixed')\r\n protected get fixed(): boolean {\r\n return this.isGlobal;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initTargetElementListener();\r\n this.initClickOutsideSubscription();\r\n this.initOnCloseWhenEditorScroll();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroyEventListeners();\r\n }\r\n\r\n protected onTitleLabelClick(element: HTMLDivElement): void {\r\n const range = document.createRange();\r\n const selection = window.getSelection();\r\n\r\n range.selectNodeContents(element);\r\n range.collapse(false);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n\r\n protected onSave(): void {\r\n if (this.isFormInvalid) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });\r\n }\r\n\r\n protected onScroll(): void {\r\n this.isVisible.set(false);\r\n }\r\n\r\n protected onCancel(): void {\r\n this.isVisible.set(false);\r\n this.cancelClicked.emit();\r\n }\r\n\r\n protected onClearTitle(titleElement: HTMLElement): void {\r\n this.formTitle.set('');\r\n\r\n titleElement.textContent = '';\r\n titleElement.focus();\r\n }\r\n\r\n protected onTitleChange(event: KeyboardEvent): void {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLInputElement;\r\n const value = target.textContent!;\r\n\r\n this.formTitle.set(value);\r\n }\r\n\r\n protected onTitlePaste(event: ClipboardEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n if (!this.document) {\r\n return;\r\n }\r\n\r\n const value = event.clipboardData?.getData('text/plain');\r\n const target = event.target as HTMLElement;\r\n\r\n this.document.execCommand('insertText', false, value);\r\n setTimeout(() => this.formTitle.set(target.textContent!));\r\n }\r\n\r\n private initTargetElementListener(): void {\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {\r\n if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {\r\n return;\r\n }\r\n\r\n this.isVisible.set(false);\r\n });\r\n }\r\n\r\n private initOnCloseWhenEditorScroll(): void {\r\n this.editor = this.document.querySelector(EDITOR_SELECTOR) as HTMLElement;\r\n\r\n this.editor.addEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n private destroyEventListeners(): void {\r\n this.editor.removeEventListener('scroll', this.onScroll.bind(this));\r\n this.target.addEventListener('click', this.targetToggleEventListener);\r\n }\r\n\r\n private calculateDropdownPosition(): void {\r\n this.isHidden.set(true);\r\n\r\n setTimeout(() => {\r\n const target = this.target;\r\n const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();\r\n const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } =\r\n this.document.documentElement;\r\n const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);\r\n const distanceToRight = documentClientWidth - targetRectLeft;\r\n const isListRight = distanceToRight < this.element.offsetWidth;\r\n const isListAbove = distanceToBottom < this.element.offsetHeight;\r\n\r\n this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);\r\n this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);\r\n\r\n this.isHidden.set(false);\r\n });\r\n }\r\n\r\n private changePositionX(isListRight: boolean, width: number, left: number): void {\r\n if (this.isGlobal) {\r\n this.changeGlobalPositionX(isListRight, width, left);\r\n\r\n return;\r\n }\r\n\r\n if (isListRight) {\r\n this.element.style.right = '0';\r\n this.element.style.left = 'auto';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.right = 'auto';\r\n this.element.style.left = '0';\r\n }\r\n\r\n private changePositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (this.isGlobal) {\r\n this.changeGlobalPositionY(isListAbove, height, bottom);\r\n\r\n return;\r\n }\r\n\r\n if (isListAbove) {\r\n this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';\r\n this.element.style.top = 'auto';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';\r\n this.element.style.bottom = 'auto';\r\n }\r\n\r\n private changeGlobalPositionX(isListRight: boolean, width: number, left: number): void {\r\n if (isListRight) {\r\n this.element.style.left = left - this.element.offsetWidth + width + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.left = left + 'px';\r\n }\r\n\r\n private changeGlobalPositionY(isListAbove: boolean, height: number, bottom: number): void {\r\n if (isListAbove) {\r\n this.element.style.top =\r\n bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';\r\n\r\n return;\r\n }\r\n\r\n this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"isVisible()\">\r\n <form\r\n autocomplete=\"off\"\r\n class=\"wrapper\"\r\n >\r\n <cui-form-field>\r\n <!-- eslint-disable-next-line -->\r\n <label\r\n [for]=\"titleId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n (click)=\"onTitleLabelClick(titleElement)\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <!-- TODO: если найдется варик сделать через форму -->\r\n <div\r\n class=\"title\"\r\n [class.title_invalid]=\"isTitleInvalid()\"\r\n >\r\n <div\r\n #titleElement\r\n class=\"title__text\"\r\n contenteditable\r\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"startTitle\"\r\n ></div>\r\n <button\r\n type=\"button\"\r\n class=\"title__clear\"\r\n (click)=\"onClearTitle(titleElement)\"\r\n >\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"title__icon\"\r\n />\r\n </button>\r\n </div>\r\n\r\n <cui-hint *ngIf=\"isTitleInvalid()\" hintType=\"error\">\r\n <ng-container *ngIf=\"isTitleEmpty()\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS') }}\r\n </ng-container>\r\n </cui-hint>\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label\r\n [for]=\"dataId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n >\r\n {{ isTool ? t('TOOL') : t('URL') }}\r\n </label>\r\n <ng-container *ngIf=\"dynamicDataControl\">\r\n <ng-container *ngIf=\"isTool; else input\">\r\n <div>\r\n <button\r\n #target=\"elementRef\"\r\n class=\"button tool-button\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n >\r\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\r\n </button>\r\n </div>\r\n <cc-marker-select\r\n [formControl]=\"dynamicDataControl\"\r\n [target]=\"target.nativeElement\"\r\n />\r\n </ng-container>\r\n <ng-template #input>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"dataId\"\r\n [formControl]=\"dynamicDataControl\"\r\n autocomplete=\"off\"\r\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\r\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\r\n />\r\n <cui-hint *ngIf=\"isDynamicDataErrorShown\" hintType=\"error\">\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\r\n {{ t('INVALID_URL') }}\r\n </ng-container>\r\n </cui-hint>\r\n </ng-template>\r\n </ng-container>\r\n </cui-form-field>\r\n <div class=\"buttons\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n cuiButton\r\n type=\"submit\"\r\n appearance=\"action\"\r\n size=\"sm\"\r\n [disabled]=\"isFormInvalid\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ t('SAVE') }}\r\n </button>\r\n </div>\r\n </form>\r\n </ng-container>\r\n</ng-container>\r\n\r\n","export const MARKER_MODAL_SELECTOR = 'cc-marker-modal';\r\n","import { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, MarkerModalComponent } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal';\r\n\r\nexport function createLinkModal(tooltip: HTMLElement, link: HTMLLinkElement): CuiAngularElement<MarkerModalComponent> {\r\n const linkModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n linkModal.url = link.href;\r\n linkModal.title = link.innerText;\r\n linkModal.target = button;\r\n linkModal.space = 15;\r\n\r\n linkModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n\r\n if (typeof customEvent.detail.data === 'string') {\r\n link.setAttribute('href', customEvent.detail.data);\r\n }\r\n\r\n link.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n linkModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return linkModal;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CUI_WINDOW, CuiClickOutsideDirective } from '@cuby-ui/cdk';\r\nimport { skip } from 'rxjs';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { Tool } from './editor-tool-modal.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule],\r\n templateUrl: './editor-tool-modal.component.html',\r\n styleUrls: ['./editor-tool-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [CuiClickOutsideDirective]\r\n})\r\nexport class EditorToolModalComponent {\r\n private readonly element = inject(ElementRef).nativeElement;\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });\r\n\r\n private readonly SPACE_BETWEEN_TARGET_AND_LIST = 10;\r\n\r\n public isFullscreen = signal(false);\r\n public isHidden = signal(true);\r\n\r\n @Input({ required: true })\r\n public tool!: Tool;\r\n\r\n @Input()\r\n public set marker(value: HTMLElement) {\r\n this.calculateModalPosition(value);\r\n }\r\n\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n @HostBinding('class._hidden')\r\n protected get _isHidden(): boolean {\r\n return this.isHidden();\r\n }\r\n\r\n @HostBinding('class._fullscreen')\r\n protected get _isFullscreen(): boolean {\r\n return this.isFullscreen();\r\n }\r\n\r\n constructor() {\r\n this.initClickOutsideSubscription();\r\n }\r\n\r\n protected onCloseModal(): void {\r\n this.closed.emit();\r\n }\r\n\r\n protected onMaximizeModal(): void {\r\n this.isFullscreen.update((prev) => !prev);\r\n }\r\n\r\n private initClickOutsideSubscription(): void {\r\n this.cuiClickOutsideDirective.cuiClickOutside\r\n .pipe(skip(1), takeUntilDestroyed())\r\n .subscribe(() => this.onCloseModal());\r\n }\r\n\r\n private calculateModalPosition(marker: HTMLElement): void {\r\n const { bottom, left } = marker.getBoundingClientRect();\r\n\r\n setTimeout(() => {\r\n const modalWidth = this.element.offsetWidth;\r\n\r\n this.element.style.top = bottom + this.window.scrollY + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';\r\n this.element.style.left = left + this.window.scrollX + marker.offsetWidth / 2 - modalWidth / 2 + 'px';\r\n\r\n this.isHidden.set(false);\r\n });\r\n }\r\n}\r\n","<div class=\"triangle\"></div>\r\n<div class=\"wrapper\">\r\n <header class=\"header\">\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n <div class=\"header__buttons\">\r\n <!-- TODO: replace icon with 'maximize' -->\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconArrowSortSm\"\r\n (click)=\"onMaximizeModal()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconX\"\r\n (click)=\"onCloseModal()\"\r\n ></button>\r\n </div>\r\n </header>\r\n <div class=\"content\">\r\n <div class=\"info\">\r\n <!-- TODO: будет картинка-->\r\n <p class=\"info__item\">\r\n <span class=\"info__field\">Тип:</span>\r\n <span class=\"info__title\">{{ tool.title }}</span>\r\n </p>\r\n <p class=\"info__item\">\r\n <span class=\"info__field\">Страна производитель:</span>\r\n <span class=\"info__title\">{{ tool.title }}</span>\r\n </p>\r\n </div>\r\n </div>\r\n</div>\r\n","import type { MarkerType } from '../../services/markers-service.options';\r\n\r\nexport interface Tool {\r\n id: string;\r\n image?: string;\r\n title?: string;\r\n type?: MarkerType;\r\n}\r\n\r\nexport const EDITOR_TOOL_MODAL_SELECTOR = 'cc-editor-tool-modal';\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgFor } from '@angular/common';\r\n\r\nimport { CuiButtonModule } from '../../../components';\r\nimport type { EditorTooltipButton, EditorTooltipOption, EditorTooltipOptions } from './editor-tooltip.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiButtonModule, NgFor],\r\n templateUrl: './editor-tooltip.component.html',\r\n styleUrls: ['./editor-tooltip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorTooltipComponent {\r\n // TODO: Удалить класс\r\n protected readonly BUTTONS_OPTIONS = new Map<EditorTooltipOption, EditorTooltipButton>([\r\n ['copy', { icon: 'cuiIconCopy', handler: (event): void => this.copyClicked.emit(event) }],\r\n ['edit', { icon: 'cuiIconEdit', handler: (event): void => this.editClicked.emit(event), class: 'edit' }],\r\n ['delete', { icon: 'cuiIconTrash', handler: (event): void => this.deleteClicked.emit(event) }]\r\n ]);\r\n\r\n protected _options: EditorTooltipOptions = ['edit', 'delete'];\r\n protected buttons = this.getButtonsFromOptions(this._options);\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n @Input()\r\n public set options(value: EditorTooltipOptions) {\r\n this._options = value;\r\n this.buttons = this.getButtonsFromOptions(value);\r\n }\r\n\r\n @Output()\r\n public readonly copyClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly editClicked = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n public readonly deleteClicked = new EventEmitter<MouseEvent>();\r\n\r\n private getButtonsFromOptions(options: EditorTooltipOptions): EditorTooltipButton[] {\r\n return options.map((option) => this.BUTTONS_OPTIONS.get(option)!);\r\n }\r\n}\r\n","<h3 class=\"title\">{{ title }}</h3>\r\n<div class=\"buttons-container\">\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <div class=\"divider\"></div>\r\n <!-- TODO: class должен быть удалён в будущем-->\r\n <button\r\n class=\"button\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"button.icon\"\r\n [class]=\"button.class\"\r\n (click)=\"button.handler($event)\"\r\n ></button>\r\n </ng-container>\r\n</div>\r\n","import type { CuiIcon } from '@cuby-ui/icons';\r\n\r\nexport type EditorTooltipOption = 'copy' | 'edit' | 'delete';\r\n\r\nexport type EditorTooltipOptions = EditorTooltipOption[];\r\n\r\n// TODO: class должен быть удалён в будущем\r\nexport interface EditorTooltipButton {\r\n readonly icon: CuiIcon;\r\n readonly handler: (event: MouseEvent) => void;\r\n readonly class?: string;\r\n}\r\n\r\nexport const EDITOR_TOOLTIP_SELECTOR = 'cc-editor-tooltip';\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\nimport type { API } from '@editorjs/editorjs';\r\n\r\n@Component({\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EditorToolComponent {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly document = inject(DOCUMENT);\r\n\r\n @Input({ required: true })\r\n public api!: API;\r\n\r\n @Input({ required: true })\r\n public preview!: string;\r\n\r\n @Input({ required: true })\r\n public caption!: string;\r\n\r\n @Input({ required: true })\r\n public buttonContent!: string;\r\n\r\n @Input()\r\n public readOnly = false;\r\n\r\n @Input()\r\n public isLoading = false;\r\n\r\n @Output()\r\n public fileSelected = new EventEmitter<void>();\r\n\r\n @Output()\r\n public captionChanged = new EventEmitter<string>();\r\n\r\n private previousValue = this.caption;\r\n\r\n protected get isCaptionShown(): boolean {\r\n return !this.readOnly || !!this.caption;\r\n }\r\n\r\n protected onSelectFile(): void {\r\n this.fileSelected.emit();\r\n }\r\n\r\n protected onTitleChange(event: KeyboardEvent): void {\r\n const target = event.currentTarget as HTMLElement;\r\n\r\n if (target.innerHTML === '<br>') {\r\n target.innerHTML = '';\r\n }\r\n\r\n const value = target.innerHTML!;\r\n\r\n if (this.previousValue === value) {\r\n return;\r\n }\r\n\r\n this.previousValue = value;\r\n this.captionChanged.emit(value);\r\n }\r\n\r\n protected 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 type { PipeTransform } from '@angular/core';\r\nimport { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'fileSize',\r\n standalone: true\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n private readonly SIZES = ['Bytes', 'KB', 'MB', 'GB'];\r\n private readonly BYTES_IN_KILOBYTE = 1024;\r\n\r\n public transform(bytes: number): string {\r\n if (isNaN(bytes) || bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n\r\n const index = Math.floor(Math.log(bytes) / Math.log(this.BYTES_IN_KILOBYTE));\r\n\r\n return `${parseFloat((bytes / Math.pow(this.BYTES_IN_KILOBYTE, index)).toFixed(1))} ${this.SIZES[index]}`;\r\n }\r\n}\r\n","import { NgIf, UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FileSizePipe, FormsModule, UpperCasePipe, NgIf, TranslocoDirective],\r\n templateUrl: './editor-attaches-tool.component.html',\r\n styleUrls: ['./editor-attaches-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorAttachesToolComponent extends EditorToolComponent {\r\n protected readonly Extensions = {\r\n doc: '#1483E9',\r\n docx: '#1483E9',\r\n odt: '#1483E9',\r\n pdf: '#DB2F2F',\r\n rtf: '#744FDC',\r\n tex: '#5a5a5b',\r\n txt: '#5a5a5b',\r\n pptx: '#E35200',\r\n ppt: '#E35200',\r\n mp3: '#eab456',\r\n mp4: '#f676a6',\r\n xls: '#11AE3D',\r\n html: '#2988f0',\r\n htm: '#2988f0',\r\n png: '#AA2284',\r\n jpg: '#D13359',\r\n jpeg: '#D13359',\r\n gif: '#f6af76',\r\n zip: '#4f566f',\r\n rar: '#4f566f',\r\n exe: '#e26f6f',\r\n svg: '#bf5252',\r\n key: '#00B2FF',\r\n sketch: '#FFC700',\r\n ai: '#FB601D',\r\n psd: '#388ae5',\r\n dmg: '#e26f6f',\r\n json: '#2988f0',\r\n csv: '#11AE3D'\r\n };\r\n\r\n @Input({ required: true })\r\n public file?: CuiFileData;\r\n\r\n @Input({ required: true })\r\n public title!: string;\r\n\r\n protected get color(): string {\r\n return this.Extensions[this.file?.extension as keyof typeof this.Extensions];\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.file && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return event.key !== 'Enter';\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_ATTACHES_TOOL_SELECTOR = 'cc-editor-attaches-tool';\r\n\r\nexport interface CuiAttachesToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiAttachesToolOptions {\r\n readonly api: API;\r\n readonly config: CuiAttachesToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiAttachesToolData {\r\n title: string;\r\n file: CuiFileData;\r\n}\r\n","import { NgClass, NgIf } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\nimport type { CuiImageTunes } from './editor-image-tool.options';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgClass, NgIf, TranslocoDirective],\r\n templateUrl: './editor-image-tool.component.html',\r\n styleUrls: ['./editor-image-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorImageToolComponent extends EditorToolComponent {\r\n protected readonly isLoaded = signal(false);\r\n protected readonly tunesSignal = signal<CuiImageTunes>({});\r\n\r\n @Input({ required: true })\r\n public image!: string;\r\n\r\n @Input()\r\n public set tunes(tunes: CuiImageTunes) {\r\n this.tunesSignal.set(tunes);\r\n }\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.image && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"image; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [ngClass]=\"tunesSignal()\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <img\r\n class=\"image\"\r\n [src]=\"image\"\r\n alt=\"Image\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #buttonTemplate>\r\n <button\r\n #button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n />\r\n <path\r\n d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M11.4805 7.77783H11.4879\"\r\n stroke=\"#121315\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_IMAGE_TOOL_SELECTOR = 'cc-editor-image-tool';\r\n\r\nexport type CuiImageKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiImageToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiImageToolOptions {\r\n readonly api: API;\r\n readonly config: CuiImageToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiImageToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n tunes: CuiImageTunes;\r\n}\r\n\r\nexport interface CuiImageTunes {\r\n stretched?: boolean;\r\n left?: boolean;\r\n right?: boolean;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgIf } from '@angular/common';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../../components';\r\nimport { EditorToolComponent } from '../editor-tool/editor-tool.component';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CuiSvgModule, FormsModule, NgIf, TranslocoDirective],\r\n templateUrl: './editor-video-tool.component.html',\r\n styleUrls: ['./editor-video-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class._hidden]': 'isShowLoadButton'\r\n }\r\n})\r\nexport class EditorVideoToolComponent extends EditorToolComponent {\r\n protected isLoaded = signal(false);\r\n\r\n @Input({ required: true })\r\n public video!: string;\r\n\r\n protected get isShowLoadButton(): boolean {\r\n return !this.video && !this.isCaptionShown && !this.isLoading;\r\n }\r\n\r\n protected onPlay(): void {\r\n this.isLoaded.set(true);\r\n }\r\n\r\n protected onPreventEnter(event: KeyboardEvent): void {\r\n if (this.checkKey(event)) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n private checkKey(event: KeyboardEvent): boolean {\r\n return (event.key !== 'Backspace' && event.key !== 'Enter') || event.shiftKey;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *ngIf=\"video; else buttonTemplate\">\r\n <div\r\n class=\"wrapper\"\r\n [class._loaded]=\"isLoaded()\"\r\n >\r\n <video\r\n *ngIf=\"isLoaded(); else playButtonTemplate\"\r\n class=\"video\"\r\n [src]=\"video\"\r\n controls\r\n autoplay\r\n muted\r\n playsinline\r\n ></video>\r\n\r\n <ng-template #playButtonTemplate>\r\n <button\r\n type=\"button\"\r\n class=\"play\"\r\n (click)=\"onPlay()\"\r\n >\r\n <cui-svg\r\n class=\"play\"\r\n icon=\"cuiIconPlayCircleSm\"\r\n [height]=\"72\"\r\n [width]=\"72\"\r\n [strokeWidth]=\"0.5\"\r\n />\r\n </button>\r\n </ng-template>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isCaptionShown\"\r\n class=\"caption cdx-input\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n attr.data-placeholder=\"{{ t('CAPTION') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"caption\"\r\n ></div>\r\n </ng-container>\r\n\r\n <ng-template #buttonTemplate>\r\n <button\r\n type=\"button\"\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n <cui-svg icon=\"cuiIconPlayCircle\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\">\r\n <img\r\n *ngIf=\"preview\"\r\n class=\"preloader__image\"\r\n [src]=\"preview\"\r\n alt=\"Preloader\"\r\n />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n","import type { API } from '@editorjs/editorjs';\r\n\r\nimport type { CuiFileData } from '../../interfaces/file-response-data';\r\nimport { CuiFileUploaderConfig } from '../../utils/file-uploader';\r\n\r\nexport const EDITOR_VIDEO_TOOL_SELECTOR = 'cc-editor-video-tool';\r\n\r\nexport type VideoKeysObject<V = string> = {\r\n [key: string]: V;\r\n};\r\n\r\nexport interface CuiVideoToolConfig extends CuiFileUploaderConfig {\r\n readonly buttonContent: string;\r\n}\r\n\r\nexport interface CuiVideoToolPlayer {\r\n readonly pip: boolean;\r\n readonly controls: boolean;\r\n readonly light: boolean;\r\n readonly playing: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolOptions {\r\n readonly api: API;\r\n readonly config: CuiVideoToolConfig;\r\n readonly onSelectFile: () => void;\r\n readonly readOnly: boolean;\r\n}\r\n\r\nexport interface CuiVideoToolData {\r\n caption: string;\r\n file: CuiFileData;\r\n}\r\n","import type { CuiAngularElement } from '../interfaces';\r\nimport type { MarkerData, Tool, MarkerSelectComponent, MarkerModalComponent } from '../components';\r\nimport { MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function createSelect(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerSelectComponent> {\r\n const select = document.createElement(MARKER_SELECT_SELECTOR) as CuiAngularElement<MarkerSelectComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n\r\n select.space = 8;\r\n select.target = button;\r\n select.addEventListener('toolClick', (event) => onToolClick(marker, tooltip, event));\r\n\r\n return select;\r\n}\r\n\r\nexport function createToolModal(marker: HTMLElement, tooltip: HTMLElement): CuiAngularElement<MarkerModalComponent> {\r\n const toolModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n const button = tooltip.querySelector('.edit') as HTMLButtonElement;\r\n const toolId = marker.dataset['id']!;\r\n const toolType = marker.dataset['type'] as MarkerType;\r\n\r\n toolModal.title = marker.innerText;\r\n toolModal.target = button;\r\n toolModal.isTool = true;\r\n toolModal.tool = {\r\n id: toolId,\r\n type: toolType\r\n };\r\n toolModal.space = 8;\r\n\r\n toolModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail.data;\r\n\r\n if (data && typeof data !== 'string') {\r\n marker.setAttribute('data-id', data.id);\r\n marker.setAttribute('data-type', data.type!);\r\n }\r\n\r\n marker.innerHTML = customEvent.detail.title;\r\n\r\n tooltip.remove();\r\n });\r\n\r\n toolModal.addEventListener('cancelClicked', () => {\r\n tooltip.remove();\r\n });\r\n\r\n return toolModal;\r\n}\r\n\r\nfunction onToolClick(marker: HTMLElement, tooltip: HTMLElement, event: Event): void {\r\n event.stopPropagation();\r\n\r\n const customEvent = event as CustomEvent<Tool>;\r\n const tool = customEvent.detail;\r\n\r\n marker.dataset['id'] = tool.id;\r\n\r\n tooltip.remove();\r\n}\r\n","export function removeElementTagWrapper(element: HTMLElement): void {\r\n const parent = element.parentElement;\r\n const innerElementNodes = element.childNodes;\r\n\r\n let node: Node;\r\n\r\n while (innerElementNodes.length) {\r\n node = innerElementNodes.item(0);\r\n\r\n parent?.insertBefore(node, element);\r\n }\r\n\r\n element.remove();\r\n}\r\n","export function copyTextToClipboard(text: string): void {\r\n if (window?.navigator.clipboard && window.isSecureContext) {\r\n window.navigator.clipboard.writeText(text);\r\n }\r\n\r\n copyTextToClipboardFallback(text);\r\n}\r\n\r\n// TODO: Remove when switch to https\r\nfunction copyTextToClipboardFallback(text: string): void {\r\n const textarea = document.createElement('textarea');\r\n\r\n textarea.value = text;\r\n document.body.appendChild(textarea);\r\n textarea.focus({ preventScroll: true });\r\n textarea.select();\r\n\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n}","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 { CuiFileResponseData } from '../interfaces';\r\n\r\nexport enum CuiFileUploaderStatus {\r\n Loading = 'loading',\r\n Completed = 'completed'\r\n}\r\n\r\nexport interface CuiFileUploaderConfig {\r\n readonly endpoint: string;\r\n readonly types: string;\r\n readonly field: string;\r\n readonly additionalRequestHeaders: HeadersInit;\r\n readonly load: (status: CuiFileUploaderStatus) => void;\r\n}\r\n\r\nexport type OnUpload = (response: CuiFileResponseData, file?: File) => void;\r\n\r\nexport class CuiFileUploader {\r\n private readonly REQUEST_METHOD = 'POST';\r\n private readonly config: CuiFileUploaderConfig;\r\n private readonly onUpload: OnUpload;\r\n private readonly onError: () => void;\r\n\r\n constructor(config: CuiFileUploaderConfig, onUpload: OnUpload, onError: () => void) {\r\n this.config = config;\r\n this.onUpload = onUpload;\r\n this.onError = onError;\r\n }\r\n\r\n public selectFile = ({ fileSelected }: { fileSelected: (file: File) => void }): void => {\r\n const input = document.createElement('input');\r\n const types = this.config?.types || '*';\r\n input.type = 'file';\r\n input.accept = types;\r\n\r\n input.onchange = (): void => {\r\n const files = input.files;\r\n\r\n if (!files?.length) {\r\n return;\r\n }\r\n\r\n this.getFile(files, fileSelected);\r\n };\r\n\r\n input.click();\r\n };\r\n\r\n public getFile(files: FileList, fileSelected: (file: File) => void): void {\r\n const file = files.item(0);\r\n\r\n if (!file) {\r\n return;\r\n }\r\n\r\n fileSelected(file);\r\n }\r\n\r\n public uploadFile(file: File): void {\r\n const formData = new FormData();\r\n const formField = this.config.field || 'file';\r\n formData.append(formField, file);\r\n\r\n if (!this.config.endpoint) {\r\n return;\r\n }\r\n\r\n this.config.load(CuiFileUploaderStatus.Loading);\r\n\r\n const upload = fetch(this.config.endpoint, {\r\n headers: this.config.additionalRequestHeaders,\r\n method: this.REQUEST_METHOD,\r\n body: formData\r\n });\r\n\r\n upload\r\n .then((response) => response.json())\r\n .then((response) => this.onUpload(response, file))\r\n .catch(() => this.onError())\r\n .finally(() => this.config.load(CuiFileUploaderStatus.Completed));\r\n }\r\n\r\n public uploadByUrl(url: string): void {\r\n this.onUpload({ success: 1, file: { url } });\r\n }\r\n}\r\n","import type { Blocks } from '@editorjs/editorjs/types/api';\r\n\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nexport function recalculateIndexes(blocksApi: Blocks): void {\r\n if (!blocksApi) {\r\n return;\r\n }\r\n\r\n const blocks = blocksApi.getBlocksCount();\r\n let index = 0;\r\n\r\n for (let i = 0; i < blocks; i++) {\r\n const block = blocksApi.getBlockByIndex(i);\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n const blockElement = block?.holder;\r\n const subblocks = blockElement.querySelectorAll('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n blockElement.setAttribute('data-index', String(index));\r\n\r\n if (!subblocks.length) {\r\n index++;\r\n\r\n continue;\r\n }\r\n\r\n subblocks.forEach((subblock) => {\r\n const subBlockIndex = subblock.getAttribute('data-index');\r\n const indexAsNumber = subBlockIndex ? Number(subBlockIndex) : null;\r\n\r\n if (indexAsNumber !== null && indexAsNumber === index) {\r\n index++;\r\n\r\n return;\r\n }\r\n\r\n subblock.setAttribute('data-index', String(index));\r\n index++;\r\n });\r\n }\r\n}\r\n","import { SPLIT_LENGTH } from '../constants';\r\n\r\ninterface TagInfo {\r\n tag: string;\r\n tagName: string;\r\n newIndex: number;\r\n}\r\n\r\nconst unsplittableTags: { [key: string]: boolean } = { mark: true, a: true };\r\nconst PART_LENGTH_MEASUREMENT_ERROR = 20;\r\nconst BR_TAG = '<br>';\r\n\r\nexport function splitHTML(input: string, maxLength: number = SPLIT_LENGTH): string[] {\r\n const parts: string[] = [];\r\n const tagNames: string[] = [];\r\n const tags: string[] = [];\r\n let currentPart = '';\r\n let index = 0;\r\n // remove specsymbols\r\n input = input.replaceAll('&nbsp;', ' ');\r\n\r\n while (input.length > index) {\r\n while (currentPart.length < maxLength && input.length > index) {\r\n if (checkIsBrTag(input, index)) {\r\n // when br tag\r\n if (currentPart.length + BR_TAG.length > maxLength) {\r\n parts.push(currentPart);\r\n currentPart = BR_TAG;\r\n } else {\r\n currentPart += BR_TAG;\r\n }\r\n\r\n index += BR_TAG.length - 1;\r\n } else if (checkIsEndOfTag(input, index)) {\r\n // when tag ends\r\n const tagName = getEndTag(tagNames.pop()!);\r\n\r\n tags.pop();\r\n\r\n if ((currentPart + tagName).length > maxLength) {\r\n parts.push(currentPart);\r\n currentPart = '';\r\n } else {\r\n currentPart += tagName;\r\n }\r\n\r\n index += tagName.length - 1;\r\n } else if (input[index] === '<') {\r\n // when tag starts\r\n const { tag, tagName, newIndex } = getTagAndTagName(input, index);\r\n\r\n index = newIndex;\r\n\r\n if (checkIsLengthEnough(currentPart, tag)) {\r\n currentPart = switchPartWhenUnclosedTagsExist(tagNames, tags, parts, currentPart);\r\n }\r\n\r\n currentPart += tag;\r\n\r\n if (!unsplittableTags[tagName]) {\r\n tagNames.push(tagName);\r\n tags.push(tag);\r\n }\r\n } else {\r\n // other symbols\r\n currentPart += input[index];\r\n }\r\n\r\n index += 1;\r\n }\r\n\r\n currentPart = switchPartWhenUnclosedTagsExist(tagNames, tags, parts, currentPart);\r\n }\r\n\r\n return parts;\r\n}\r\n\r\nfunction switchPartWhenUnclosedTagsExist(\r\n tagNames: string[],\r\n tags: string[],\r\n parts: string[],\r\n currentPart: string\r\n): string {\r\n if (!tagNames.length) {\r\n parts.push(currentPart);\r\n\r\n return '';\r\n }\r\n\r\n let closeAllTags = '';\r\n\r\n for (let i = tagNames.length - 1; i >= 0; i -= 1) {\r\n closeAllTags += getEndTag(tagNames[i]);\r\n }\r\n\r\n currentPart += closeAllTags;\r\n\r\n parts.push(currentPart);\r\n\r\n currentPart = tags.reduce((openTags, tag) => (openTags += tag), '');\r\n\r\n return currentPart;\r\n}\r\n\r\nfunction getTagAndTagName(input: string, index: number): TagInfo {\r\n let tag = '';\r\n let tagName = '';\r\n\r\n tag += input[index];\r\n index += 1;\r\n\r\n while (input[index] !== ' ' && input[index] !== '>') {\r\n tag += input[index];\r\n tagName += input[index];\r\n index += 1;\r\n }\r\n\r\n while (input[index] !== '>') {\r\n tag += input[index];\r\n index += 1;\r\n }\r\n\r\n tag += input[index];\r\n [tag, index] = getFullTag(input, index, tag, tagName);\r\n\r\n return { tag, tagName, newIndex: index };\r\n}\r\n\r\nfunction getFullTag(input: string, index: number, tag: string, tagName: string): [string, number] {\r\n if (!unsplittableTags[tagName]) {\r\n return [tag, index];\r\n }\r\n\r\n let fullTag = tag;\r\n\r\n index += 1;\r\n\r\n while (!checkIsEndOfTag(input, index)) {\r\n fullTag += input[index];\r\n index += 1;\r\n }\r\n\r\n const endTag = getEndTag(tagName);\r\n\r\n index += endTag.length - 1;\r\n\r\n return [fullTag + endTag, index];\r\n}\r\n\r\nfunction checkIsLengthEnough(currentPart: string, tag: string): boolean {\r\n return currentPart.length + tag.length + PART_LENGTH_MEASUREMENT_ERROR > SPLIT_LENGTH;\r\n}\r\n\r\nfunction getEndTag(tagName: string): string {\r\n return '</' + tagName + '>';\r\n}\r\n\r\nfunction checkIsEndOfTag(input: string, index: number): boolean {\r\n return input[index] === '<' && input[index + 1] === '/';\r\n}\r\n\r\nfunction checkIsBrTag(input: string, index: number): boolean {\r\n let tag = '';\r\n\r\n if (input[index] !== '<') {\r\n return false;\r\n }\r\n\r\n while (input[index] && input[index] !== '>') {\r\n tag += input[index];\r\n index += 1;\r\n }\r\n\r\n return tag + '>' === BR_TAG;\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, PasteConfig, ToolboxConfig } from '@editorjs/editorjs';\r\nimport type { TunesMenuConfig } from '@editorjs/editorjs/types/tools';\r\n\r\nimport { CuiFileUploader } from '../utils';\r\nimport { EditorImageToolComponent, EDITOR_IMAGE_TOOL_SELECTOR } from '../components/editor-image-tool';\r\nimport type { CuiImageToolConfig, CuiImageToolData, CuiImageTunes } from '../components/editor-image-tool';\r\nimport type { CuiFileData, CuiFileResponseData, CuiTune, CuiAngularElement } from '../interfaces';\r\n\r\nexport class CuiImageTool {\r\n private selectedFile: CuiNullable<string | File> = null;\r\n private get Tunes(): CuiTune[] {\r\n return [\r\n {\r\n name: 'stretched',\r\n title: 'Stretch image',\r\n toggle: true\r\n },\r\n {\r\n name: 'center',\r\n title: 'Center image',\r\n toggle: true\r\n }\r\n ];\r\n }\r\n\r\n public api: API;\r\n public data: CuiImageToolData;\r\n public config: CuiImageToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public uploader: CuiFileUploader;\r\n public imageTool!: CuiAngularElement<EditorImageToolComponent>;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n /* eslint-disable */\r\n icon: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5013 4.1665H7.5013C5.66035 4.1665 4.16797 5.65889 4.16797 7.49984V12.4998C4.16797 14.3408 5.66035 15.8332 7.5013 15.8332H12.5013C14.3423 15.8332 15.8346 14.3408 15.8346 12.4998V7.49984C15.8346 5.65889 14.3423 4.1665 12.5013 4.1665Z\" stroke=\"#121315\" stroke-width=\"1.66667\"/>\r\n <path d=\"M4.28125 12.7665L7.24033 9.63825C7.52263 9.33617 7.90546 9.1665 8.30463 9.1665C8.70377 9.1665 9.0866 9.33617 9.36893 9.63825L12.8208 13.3332M11.3154 11.7218L12.5092 10.444C12.7914 10.1419 13.1743 9.97217 13.5734 9.97217C13.9726 9.97217 14.3554 10.1419 14.6378 10.444L15.699 11.636\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M11.4805 7.77783H11.4879\" stroke=\"#121315\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>`,\r\n /* eslint-enable */\r\n title: 'Image'\r\n };\r\n }\r\n\r\n public static get pasteConfig(): PasteConfig {\r\n return {\r\n tags: [\r\n {\r\n img: { src: true }\r\n }\r\n ],\r\n files: {\r\n mimeTypes: ['image/*']\r\n }\r\n };\r\n }\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<CuiImageToolData, Partial<CuiImageToolConfig>>;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => { }),\r\n field: config?.field ?? 'image',\r\n types: config?.types ?? 'image/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select an Image'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders || {},\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n this.data.tunes = this.data.tunes || {};\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.imageTool.preview = url;\r\n this.imageTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n const actions = {\r\n tag: this.pasteByTag.bind(this),\r\n file: this.pasteByFile.bind(this)\r\n };\r\n const key = event.type as keyof typeof actions;\r\n\r\n this.imageTool.isLoading = true;\r\n actions[key](event);\r\n }\r\n\r\n private pasteByFile(event: CustomEvent): void {\r\n const file = event.detail.file;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n private pasteByTag(event: CustomEvent): void {\r\n const file = event.detail.data.src;\r\n\r\n this.selectedFile = file;\r\n this.uploader.uploadByUrl(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.imageTool = document.createElement(EDITOR_IMAGE_TOOL_SELECTOR) as CuiAngularElement<EditorImageToolComponent>;\r\n\r\n this.imageTool.api = this.api;\r\n this.imageTool.image = this.data.file?.url || '';\r\n this.imageTool.caption = this.data.caption || '';\r\n this.imageTool.tunes = this.data.tunes;\r\n this.imageTool.readOnly = this.readOnly;\r\n this.imageTool.buttonContent = this.config.buttonContent;\r\n\r\n this.imageTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.imageTool;\r\n }\r\n\r\n public renderSettings(): TunesMenuConfig {\r\n return this.Tunes.map((tune) => ({\r\n icon: tune.icon,\r\n label: this.api.i18n.t(tune.title),\r\n name: tune.name,\r\n toggle: tune.toggle,\r\n isActive: this.data.tunes[tune.name as keyof CuiImageTunes],\r\n onActivate: (): void => this.tuneToggled(tune.name as keyof CuiImageTunes)\r\n }));\r\n }\r\n\r\n public save(): CuiImageToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.imageTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.imageTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set image(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.imageTool.image = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: CuiFileResponseData): void {\r\n if (!response.success || !response.file || !this.selectedFile) {\r\n this.uploadingFailed();\r\n\r\n return;\r\n }\r\n\r\n const url =\r\n this.selectedFile instanceof File ? window.URL.createObjectURL(this.selectedFile) : this.selectedFile;\r\n\r\n this.data.file = response.file;\r\n this.imageTool.image = url;\r\n this.imageTool.isLoading = false;\r\n }\r\n\r\n private uploadingFailed(): void {\r\n this.imageTool.image = '';\r\n this.imageTool.isLoading = false;\r\n }\r\n\r\n private tuneToggled(tuneName: keyof CuiImageTunes): void {\r\n const value = !(this.data.tunes[tuneName] || false);\r\n\r\n this.data.tunes[tuneName] = value;\r\n this.imageTool.tunes = { ...this.data.tunes };\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_ICONS } from '@cuby-ui/icons';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, PasteConfig, ToolboxConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { CuiVideoToolConfig, EditorVideoToolComponent, CuiVideoToolData } from '../components/editor-video-tool';\r\nimport { EDITOR_VIDEO_TOOL_SELECTOR } from '../components/editor-video-tool/editor-video-tool.options';\r\nimport type { CuiFileData, CuiFileResponseData } from '../interfaces/file-response-data';\r\nimport { CuiFileUploader } from '../utils/file-uploader';\r\n\r\nexport class CuiVideoTool {\r\n private selectedFile: CuiNullable<string | File> = null;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n icon: CUI_ICONS.cuiIconPlayCircle,\r\n title: 'Video'\r\n };\r\n }\r\n\r\n public static get pasteConfig(): PasteConfig {\r\n return {\r\n tags: ['video'],\r\n patterns: {\r\n video: /https?:\\/\\/\\S+\\.(mp4)$/i\r\n },\r\n files: {\r\n mimeTypes: ['video/*']\r\n }\r\n };\r\n }\r\n\r\n public api: API;\r\n public config: CuiVideoToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public data: CuiVideoToolData;\r\n public videoTool!: CuiAngularElement<EditorVideoToolComponent>;\r\n public uploader: CuiFileUploader;\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<CuiVideoToolData, CuiVideoToolConfig>;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => { }),\r\n field: config?.field ?? 'video',\r\n types: config?.types ?? 'video/*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a Video'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {},\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n this.getCaptureFromVideo(url);\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public async onPaste(event: CustomEvent): Promise<void> {\r\n if (event.type !== 'file') {\r\n return;\r\n }\r\n\r\n const file = event.detail.file;\r\n\r\n this.videoTool.isLoading = true;\r\n this.selectedFile = file;\r\n this.uploader.uploadFile(file);\r\n }\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.videoTool = document.createElement(EDITOR_VIDEO_TOOL_SELECTOR) as CuiAngularElement<EditorVideoToolComponent>;\r\n\r\n this.videoTool.api = this.api;\r\n this.videoTool.video = this.data.file?.url || '';\r\n this.videoTool.caption = this.data.caption || '';\r\n this.videoTool.readOnly = this.readOnly;\r\n this.videoTool.buttonContent = this.config.buttonContent;\r\n\r\n this.videoTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.videoTool;\r\n }\r\n\r\n public save(): CuiVideoToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.videoTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.videoTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.caption = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set video(file: CuiFileData) {\r\n this.data.file = file || {};\r\n\r\n if (file && file.url) {\r\n this.videoTool.video = file.url;\r\n }\r\n }\r\n\r\n private onUpload(response: CuiFileResponseData): void {\r\n if (!response.success || !response.file || !this.selectedFile) {\r\n this.uploadingFailed();\r\n\r\n return;\r\n }\r\n\r\n const url =\r\n this.selectedFile instanceof File ? window.URL.createObjectURL(this.selectedFile) : this.selectedFile;\r\n\r\n this.data.file = response.file;\r\n this.videoTool.video = url;\r\n this.videoTool.isLoading = false;\r\n }\r\n\r\n private uploadingFailed(): void {\r\n this.videoTool.video = '';\r\n this.videoTool.isLoading = false;\r\n }\r\n\r\n private getCaptureFromVideo(url: string): void {\r\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\r\n const video = document.createElement('video') as HTMLVideoElement;\r\n\r\n video.src = url;\r\n video.currentTime = 1;\r\n canvas.width = 120;\r\n canvas.height = 120;\r\n\r\n video.onloadeddata = (): void => {\r\n const context = canvas.getContext('2d');\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n\r\n canvas.toBlob((blob) => {\r\n if (!blob) {\r\n return;\r\n }\r\n\r\n this.videoTool.preview = URL.createObjectURL(blob);\r\n });\r\n };\r\n\r\n video.load();\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CUI_ICONS } from '@cuby-ui/icons';\r\nimport type { API, BlockAPI, BlockToolConstructorOptions, ToolboxConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement, CuiFileData, CuiFileResponseData } from '../interfaces';\r\n\r\nimport type { EditorAttachesToolComponent } from '../components/editor-attaches-tool/editor-attaches-tool.component';\r\nimport type {\r\n CuiAttachesToolConfig,\r\n CuiAttachesToolData\r\n} from '../components/editor-attaches-tool/editor-attaches-tool.options';\r\nimport { EDITOR_ATTACHES_TOOL_SELECTOR } from '../components/editor-attaches-tool/editor-attaches-tool.options';\r\nimport { CuiFileUploader } from '../utils/file-uploader';\r\n\r\nexport class CuiAttachesTool {\r\n public api: API;\r\n public config: CuiAttachesToolConfig;\r\n public blockApi?: BlockAPI;\r\n public readOnly: boolean;\r\n public data: CuiAttachesToolData;\r\n public uploader: CuiFileUploader;\r\n private attachesTool!: CuiAngularElement<EditorAttachesToolComponent>;\r\n private selectedFile: CuiNullable<File> = null;\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get toolbox(): ToolboxConfig {\r\n return {\r\n icon: CUI_ICONS.cuiIconPaperclipSm,\r\n title: 'File'\r\n };\r\n }\r\n\r\n constructor(options: { api: API }) {\r\n const { api, readOnly, config, data, block } = options as BlockToolConstructorOptions<CuiAttachesToolData, CuiAttachesToolConfig>;\r\n\r\n this.blockApi = block;\r\n this.api = api;\r\n this.readOnly = readOnly;\r\n this.config = {\r\n load: config?.load ?? (() => { }),\r\n field: config?.field ?? 'file',\r\n types: config?.types ?? '*',\r\n endpoint: config?.endpoint ?? '',\r\n buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a File'),\r\n additionalRequestHeaders: config?.additionalRequestHeaders ?? {},\r\n };\r\n\r\n this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));\r\n this.data = data;\r\n }\r\n\r\n public onSelectFile = (): void => {\r\n return this.uploader.selectFile({\r\n fileSelected: (file) => {\r\n this.attachesTool.isLoading = true;\r\n this.selectedFile = file;\r\n\r\n this.uploader.uploadFile(file);\r\n }\r\n });\r\n };\r\n\r\n public appendCallback(): void {\r\n this.onSelectFile();\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.attachesTool = document.createElement(\r\n EDITOR_ATTACHES_TOOL_SELECTOR\r\n ) as CuiAngularElement<EditorAttachesToolComponent>;\r\n\r\n this.attachesTool.api = this.api;\r\n this.attachesTool.file = this.data.file ?? '';\r\n this.attachesTool.title = this.data.title ?? '';\r\n this.attachesTool.readOnly = this.readOnly;\r\n this.attachesTool.buttonContent = this.config.buttonContent;\r\n\r\n this.attachesTool.addEventListener('fileSelected', this.onSelectFile);\r\n this.attachesTool.addEventListener('captionChanged', this.changeCaption.bind(this));\r\n\r\n return this.attachesTool;\r\n }\r\n\r\n public save(): CuiAttachesToolData {\r\n return this.data;\r\n }\r\n\r\n public removed(): void {\r\n this.attachesTool.removeEventListener('fileSelected', this.onSelectFile);\r\n this.attachesTool.removeEventListener('captionChanged', this.changeCaption);\r\n }\r\n\r\n public changeCaption(event: Event): void {\r\n const customEvent = event as CustomEvent;\r\n const value = customEvent.detail;\r\n this.data.title = value;\r\n\r\n this.blockApi?.dispatchChange();\r\n }\r\n\r\n public set file(file: CuiFileData) {\r\n this.data.title = file.name!;\r\n this.data.file = {\r\n name: file.name,\r\n extension: file.name?.split('.').pop(),\r\n size: file.size,\r\n url: file.url\r\n };\r\n this.attachesTool.file = { ...this.data.file };\r\n this.attachesTool.title = file.name!;\r\n }\r\n\r\n private onUpload(response: CuiFileResponseData): void {\r\n if (!response.success || !response.file || !this.selectedFile) {\r\n this.uploadingFailed();\r\n\r\n return;\r\n }\r\n\r\n this.file = {\r\n name: this.selectedFile.name,\r\n extension: this.selectedFile.name.split('.').pop(),\r\n size: this.selectedFile.size,\r\n url: response.file.url\r\n };\r\n this.attachesTool.isLoading = false;\r\n }\r\n\r\n private uploadingFailed(): void {\r\n this.attachesTool.file = undefined;\r\n this.attachesTool.isLoading = false;\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement, CuiParent } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent } from '../components/marker-modal/marker-modal.component';\r\nimport { COMBINED_TEXT_BLOCK_PART } from '../constants/editor.constants';\r\nimport { removeElementTagWrapper } from '../utils/remove-element-tag-wrapper';\r\n\r\nexport enum RangeContainer {\r\n start = 'startContainer',\r\n end = 'endContainer'\r\n}\r\n\r\nexport class CuiMarkerTool {\r\n private readonly LIST_CLASS = 'cdx-list__item';\r\n protected readonly DEFAULT_CLASS = 'marker';\r\n protected readonly DIV = 'div';\r\n protected readonly TAG: string = 'MARK';\r\n protected readonly api!: API;\r\n\r\n protected CLASS = 'tool-marker';\r\n protected _state = false;\r\n protected button!: HTMLButtonElement;\r\n protected dropdown!: HTMLElement;\r\n protected range!: Range;\r\n protected markerModal!: CuiAngularElement<MarkerModalComponent>;\r\n\r\n public static get isInline(): boolean {\r\n return true;\r\n }\r\n\r\n public get state(): boolean {\r\n return this._state;\r\n }\r\n\r\n public set state(state: boolean) {\r\n this._state = state;\r\n\r\n this.button?.classList.toggle(this.api.styles.inlineToolButtonActive, state);\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n this.api = data.api;\r\n }\r\n\r\n public render(): HTMLButtonElement {\r\n this.button = document.createElement('button');\r\n this.button.type = 'button';\r\n this.button.classList.add(this.api.styles.inlineToolButton);\r\n\r\n this.range = window.getSelection()?.getRangeAt(0).cloneRange() as Range;\r\n\r\n return this.button;\r\n }\r\n\r\n public surround(): void {\r\n if (this.state) {\r\n this.api.inlineToolbar.close();\r\n this.unwrap();\r\n\r\n return;\r\n }\r\n\r\n this.markerModal.title = this.range.toString();\r\n }\r\n\r\n public wrap(range: Range): void {\r\n const { startContainer, endContainer } = range;\r\n const selectedText = range.extractContents();\r\n const mark = this.createElement();\r\n\r\n mark.appendChild(selectedText);\r\n\r\n this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(mark);\r\n }\r\n\r\n public unwrap(): void {\r\n const mark = this.api.selection.findParentTag(this.TAG, this.CLASS);\r\n\r\n if (!mark) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(mark);\r\n }\r\n\r\n public createElement(text = ''): HTMLElement {\r\n const element = document.createElement(this.TAG);\r\n\r\n element.classList.add(this.DEFAULT_CLASS);\r\n element.textContent = text;\r\n\r\n return element;\r\n }\r\n\r\n public addMarkerToDOM(range: Range, mark: HTMLElement, startBlock: Node, endBlock: Node): void {\r\n const classes = [this.LIST_CLASS, COMBINED_TEXT_BLOCK_PART];\r\n const { className, parent: startParent } = this.getClosestParentWithClass(startBlock, classes);\r\n const { parent: endParent } = this.getClosestParentWithClass(endBlock, classes);\r\n\r\n if (!className || startParent === endParent) {\r\n range.insertNode(mark);\r\n\r\n return;\r\n }\r\n\r\n this.removeAllParentsFromMarker(mark, className);\r\n startParent?.append(mark);\r\n }\r\n\r\n public removeEmptyMarkers(range: Range): void {\r\n range.commonAncestorContainer.childNodes.forEach((node) => {\r\n if (node.nodeName !== this.TAG) {\r\n return;\r\n }\r\n\r\n if (node.textContent?.length) {\r\n return;\r\n }\r\n\r\n node.remove();\r\n });\r\n }\r\n\r\n public removeExternalMarkers(range: Range, className: string): void {\r\n const startContainer = this.getElementFromContainerNode(range, RangeContainer.start, className);\r\n const endContainer = this.getElementFromContainerNode(range, RangeContainer.end, className);\r\n\r\n const startElement = startContainer?.closest('.' + className);\r\n const endElement = endContainer?.closest('.' + className);\r\n\r\n if (startElement !== endElement || !startElement?.classList.contains(className)) {\r\n return;\r\n }\r\n\r\n const marker = startElement as HTMLElement;\r\n\r\n removeElementTagWrapper(marker);\r\n }\r\n\r\n public removeNestedMarkers(element: HTMLElement, selector: string): void {\r\n const markers = element.querySelectorAll('.' + selector);\r\n\r\n markers.forEach((node) => {\r\n const marker = node as HTMLElement;\r\n\r\n removeElementTagWrapper(marker);\r\n });\r\n }\r\n\r\n private getElementFromContainerNode(\r\n range: Range,\r\n key: RangeContainer,\r\n className: string\r\n ): CuiNullable<HTMLElement> {\r\n const container = range[key] as HTMLElement;\r\n\r\n if (container?.classList?.contains(className)) {\r\n return container as HTMLElement;\r\n }\r\n\r\n return container.parentElement;\r\n }\r\n\r\n private removeAllParentsFromMarker(mark: HTMLElement, className: string): void {\r\n const innerMarkerNodes: Node[] = [];\r\n\r\n mark.childNodes.forEach((node) => {\r\n innerMarkerNodes.push(node);\r\n });\r\n\r\n innerMarkerNodes.forEach((node) => {\r\n const element = node as HTMLElement;\r\n const isBlock = element.classList?.contains(className);\r\n\r\n if (!isBlock) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(element);\r\n });\r\n }\r\n\r\n private getClosestParentWithClass(node: Node, classes: string[]): CuiParent {\r\n const nodeParent = node.parentElement as Element;\r\n let parent = nodeParent;\r\n let resultClassName = '';\r\n\r\n for (const className of classes) {\r\n const parentWithClass = parent.closest('.' + className);\r\n\r\n if (!parentWithClass) {\r\n continue;\r\n }\r\n\r\n parent = parentWithClass;\r\n resultClassName = className;\r\n break;\r\n }\r\n\r\n return { className: resultClassName, parent };\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { MarkerData } from '../components/marker-modal/marker-modal.interfaces';\r\nimport type { MarkerModalComponent } from '../components/marker-modal/marker-modal.component';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\nimport { removeElementTagWrapper } from '../utils';\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiLinkMarker extends CuiMarkerTool {\r\n protected override readonly TAG = 'A';\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n a: {\r\n href: true,\r\n class: true,\r\n target: true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg width=\"20\" height=\"15\" viewBox=\"-3 -3 24 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M18.2813 1.22405C17.9329 0.874451 17.5189 0.597062 17.0631 0.407792C16.6073 0.218522 16.1186 0.121094 15.625 0.121094C15.1315 0.121094 14.6428 0.218522 14.187 0.407792C13.7312 0.597062 13.3172 0.874451 12.9688 1.22405L13.8563 2.11155C14.089 1.87886 14.3652 1.69429 14.6692 1.56836C14.9733 1.44243 15.2991 1.37762 15.6282 1.37762C15.9572 1.37762 16.2831 1.44243 16.5871 1.56836C16.8911 1.69429 17.1674 1.87886 17.4 2.11155C17.6327 2.34424 17.8173 2.62047 17.9432 2.92449C18.0692 3.22851 18.134 3.55436 18.134 3.88343C18.134 4.21249 18.0692 4.53834 17.9432 4.84236C17.8173 5.14638 17.6327 5.42261 17.4 5.6553L12.4 10.6553C11.9309 11.1252 11.2944 11.3896 10.6304 11.3901C9.96638 11.3907 9.32935 11.1275 8.85942 10.6584C8.38949 10.1893 8.12515 9.55275 8.12457 8.88876C8.12398 8.22476 8.38719 7.58773 8.85629 7.1178L9.73754 6.2303L8.85629 5.3428L7.96879 6.2303C7.61919 6.57869 7.3418 6.99266 7.15253 7.44848C6.96326 7.9043 6.86583 8.393 6.86583 8.88655C6.86583 9.3801 6.96326 9.8688 7.15253 10.3246C7.3418 10.7804 7.61919 11.1944 7.96879 11.5428C8.67597 12.2409 9.63134 12.6298 10.625 12.624C11.1205 12.6261 11.6114 12.5299 12.0695 12.3411C12.5276 12.1523 12.9437 11.8746 13.2938 11.524L18.2938 6.52405C18.9944 5.81927 19.3866 4.86522 19.3842 3.87146C19.3819 2.87771 18.9852 1.92552 18.2813 1.22405Z\" fill=\"#595E6A\"/>\r\n <path d=\"M2.61879 12.5115C2.38541 12.2793 2.20022 12.0031 2.07386 11.6991C1.94749 11.395 1.88244 11.069 1.88244 10.7397C1.88244 10.4104 1.94749 10.0844 2.07386 9.78028C2.20022 9.47621 2.38541 9.2001 2.61879 8.9678L7.61879 3.9678C7.85109 3.73442 8.1272 3.54923 8.43127 3.42287C8.73534 3.2965 9.06138 3.23145 9.39067 3.23145C9.71995 3.23145 10.046 3.2965 10.3501 3.42287C10.6541 3.54923 10.9302 3.73442 11.1625 3.9678C11.3944 4.20193 11.577 4.48022 11.6994 4.78619C11.8218 5.09215 11.8815 5.41958 11.875 5.74905C11.8769 6.07955 11.8133 6.40715 11.6878 6.7129C11.5623 7.01865 11.3774 7.29647 11.1438 7.5303L9.81879 8.87405L10.7063 9.76155L12.0313 8.43655C12.7366 7.73124 13.1328 6.77463 13.1328 5.77718C13.1328 4.77972 12.7366 3.82311 12.0313 3.1178C11.326 2.41249 10.3694 2.01625 9.37192 2.01625C8.37446 2.01625 7.41785 2.41249 6.71254 3.1178L1.71254 8.1178C1.362 8.4663 1.08382 8.88066 0.893994 9.33706C0.704168 9.79346 0.606445 10.2829 0.606445 10.7772C0.606445 11.2715 0.704168 11.7609 0.893994 12.2173C1.08382 12.6737 1.362 13.088 1.71254 13.4365C2.42431 14.1293 3.38185 14.5115 4.37504 14.499C5.37698 14.5 6.33862 14.1046 7.05004 13.399L6.16254 12.5115C5.93025 12.7449 5.65413 12.9301 5.35006 13.0565C5.04599 13.1829 4.71995 13.2479 4.39067 13.2479C4.06138 13.2479 3.73534 13.1829 3.43127 13.0565C3.1272 12.9301 2.85109 12.7449 2.61879 12.5115Z\" fill=\"#595E6A\"/>\r\n </svg>\r\n `;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const linkModal = this.createLinkModal();\r\n\r\n this.dropdown.append(linkModal);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public wrapLink(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n const url = markerData.data?.toString();\r\n const link = this.createElement(url, markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.addMarkerToDOM(range, link, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(link);\r\n }\r\n\r\n public override unwrap(): void {\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n\r\n if (!mark) {\r\n return;\r\n }\r\n\r\n removeElementTagWrapper(mark);\r\n }\r\n\r\n public override createElement(url = '', text = ''): HTMLLinkElement {\r\n const link = super.createElement(text) as HTMLLinkElement;\r\n\r\n link.href = url;\r\n link.contentEditable = 'false';\r\n link.target = '_blank';\r\n\r\n return link;\r\n }\r\n\r\n public checkState(): void {\r\n const link = this.api.selection.findParentTag(this.TAG);\r\n\r\n this.state = !!link;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.url = '';\r\n this.markerModal.target = this.button;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapLink(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions, SanitizerConfig } from '@editorjs/editorjs';\r\n\r\nimport type { CuiAngularElement } from '../interfaces';\r\n\r\nimport type { MarkerModalComponent, MarkerData } from '../components/marker-modal';\r\nimport { MARKER_MODAL_SELECTOR } from '../components/marker-modal/marker-modal.options';\r\n\r\nimport { CuiMarkerTool } from './marker.tool';\r\n\r\nexport class CuiCustomMarkerTool extends CuiMarkerTool {\r\n protected id!: string;\r\n protected type!: string;\r\n\r\n public static get sanitize(): SanitizerConfig {\r\n return {\r\n mark: {\r\n class: true,\r\n 'data-id': true,\r\n 'data-type': true,\r\n contenteditable: true\r\n }\r\n };\r\n }\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public wrapTool(range: Range, markerData: MarkerData): void {\r\n const { startContainer, endContainer } = range;\r\n\r\n if (markerData.data && typeof markerData.data !== 'string') {\r\n this.id = markerData.data.id!;\r\n this.type = markerData.data.type!;\r\n }\r\n\r\n const mark = this.createElement(markerData.title);\r\n\r\n range.extractContents();\r\n\r\n this.removeNestedMarkers(mark, this.DEFAULT_CLASS);\r\n\r\n this.addMarkerToDOM(range, mark, startContainer, endContainer);\r\n\r\n this.removeExternalMarkers(range, this.DEFAULT_CLASS);\r\n this.removeEmptyMarkers(range);\r\n\r\n this.api.selection.expandToTag(mark);\r\n }\r\n\r\n private onToolButtonClick(event: MouseEvent): void {\r\n const range = window.getSelection()?.getRangeAt(0);\r\n\r\n if (range) {\r\n return;\r\n }\r\n\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.onclick = this.onToolButtonClick.bind(this);\r\n\r\n return this.button;\r\n }\r\n\r\n public renderActions(): HTMLElement {\r\n this.dropdown = document.createElement(this.DIV);\r\n\r\n if (this.state) {\r\n return this.dropdown;\r\n }\r\n\r\n const markerSelect = this.createLinkModal();\r\n\r\n this.dropdown.append(markerSelect);\r\n\r\n return this.dropdown;\r\n }\r\n\r\n public override createElement(text = ''): HTMLElement {\r\n const element = super.createElement(text);\r\n\r\n element.contentEditable = 'false';\r\n element.classList.add(this.CLASS);\r\n element.setAttribute('data-id', this.id);\r\n element.setAttribute('data-type', this.type);\r\n\r\n return element;\r\n }\r\n\r\n public checkState(select: Selection): void {\r\n const range = select.getRangeAt(0);\r\n const mark = this.api.selection.findParentTag(this.TAG);\r\n const isCorrectTool = mark?.classList.contains(this.CLASS);\r\n\r\n if (!mark || !isCorrectTool) {\r\n this.state = false;\r\n\r\n return;\r\n }\r\n\r\n const startContainer = range.startContainer;\r\n const endContainer = range.endContainer;\r\n\r\n const isStartMarker = mark.contains(startContainer);\r\n const isEndMarker = mark.contains(endContainer);\r\n\r\n this.state = isStartMarker && isEndMarker && isStartMarker === isEndMarker;\r\n }\r\n\r\n private createLinkModal(): CuiAngularElement<MarkerModalComponent> {\r\n this.markerModal = document.createElement(MARKER_MODAL_SELECTOR) as CuiAngularElement<MarkerModalComponent>;\r\n\r\n this.markerModal.tool = { id: '', title: '', type: undefined };\r\n this.markerModal.target = this.button;\r\n this.markerModal.isTool = true;\r\n this.markerModal.isGlobal = true;\r\n\r\n this.markerModal.addEventListener('saveClicked', (event: Event) => {\r\n const customEvent = event as CustomEvent<MarkerData>;\r\n const data = customEvent.detail;\r\n\r\n this.wrapTool(this.range, data);\r\n });\r\n\r\n return this.markerModal;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiRoleMarker extends CuiCustomMarkerTool {\r\n protected override readonly CLASS = 'role-marker';\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n /* eslint-disable */\r\n this.button.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"-3 -3 24 24\" fill=\"none\">\r\n <path d=\"M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>`;\r\n /* eslint-enable */\r\n\r\n return this.button;\r\n }\r\n}\r\n","import type { InlineToolConstructorOptions } from '@editorjs/editorjs';\r\n\r\nimport { CuiCustomMarkerTool } from './custom-marker.tool';\r\n\r\nexport class CuiToolMarker extends CuiCustomMarkerTool {\r\n protected override readonly CLASS = 'tool-marker';\r\n\r\n constructor(data: InlineToolConstructorOptions) {\r\n super(data);\r\n }\r\n\r\n public override render(): HTMLButtonElement {\r\n super.render();\r\n\r\n this.button.innerHTML =\r\n '<svg width=\"20\" height=\"20\" viewBox=\"-2 -3 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g id=\"technologies-tools\"><path id=\"Vector\" d=\"M16.3581 15.3966L16.3581 11.4729C16.3581 11.4158 16.3469 11.3592 16.325 11.3064C16.3031 11.2536 16.2711 11.2056 16.2307 11.1652C16.1903 11.1248 16.1423 11.0928 16.0895 11.0709C16.0368 11.0491 15.9802 11.0378 15.923 11.0378H13.2574L13.2593 11.0372C13.2007 11.0348 13.1422 11.0443 13.0874 11.0651C13.0326 11.0859 12.9825 11.1176 12.9402 11.1582C12.898 11.1989 12.8643 11.2476 12.8414 11.3016C12.8184 11.3556 12.8066 11.4136 12.8067 11.4723L12.8067 15.3972M14.584 11.0334V5.8334M16.3582 15.1022L16.3582 17.0647C16.3583 17.1234 16.3465 17.1814 16.3235 17.2354C16.3006 17.2893 16.2669 17.3381 16.2247 17.3787C16.1824 17.4194 16.1323 17.4511 16.0775 17.4719C16.0227 17.4927 15.9642 17.5022 15.9056 17.4998L15.9075 17.4992H13.2419C13.1847 17.4992 13.1282 17.4879 13.0754 17.466C13.0226 17.4442 12.9746 17.4121 12.9342 17.3717C12.8938 17.3313 12.8618 17.2834 12.8399 17.2306C12.818 17.1778 12.8068 17.1212 12.8068 17.0641L12.8068 15.1022M5.59636 9.88719L5.59636 15.9284C5.59627 16.0872 5.62748 16.2445 5.68821 16.3912C5.74895 16.5379 5.838 16.6713 5.9503 16.7836C6.06259 16.8959 6.19591 16.9849 6.34265 17.0456C6.48938 17.1064 6.64665 17.1376 6.80545 17.1375C7.12589 17.1375 7.43318 17.0101 7.65976 16.7836C7.88634 16.557 8.01365 16.2497 8.0137 15.9293L8.01284 9.88719C9.29329 9.32793 10.4298 8.05047 10.4298 6.56367C10.4302 5.07729 9.22194 3.54264 8.01284 3.241L8.01327 5.83907L6.8046 7.2887L5.59636 5.83864L5.59636 3.241C4.38769 3.54306 3.17902 5.07729 3.17902 6.5641C3.17944 8.05048 4.31591 9.32793 5.59636 9.88719ZM14.9916 5.56545L14.1253 5.56545L13.2589 4.69909L13.6921 2.5332L15.4248 2.5332L15.858 4.69909L14.9916 5.56545Z\" stroke=\"#595E6A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>';\r\n\r\n return this.button;\r\n }\r\n}\r\n","import type { CuiNullable } from '@cuby-ui/cdk';\r\nimport type { API, BlockTool, BlockToolConstructorOptions, ToolConfig } from '@editorjs/editorjs';\r\n\r\nimport {\r\n COMBINED_TEXT_BLOCK,\r\n COMBINED_TEXT_BLOCK_ADDED,\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n COMBINED_TEXT_BLOCK_REMOVED,\r\n COMBINED_TEXT_BLOCK_UPDATED,\r\n DEFAULT_PLACEHOLDER,\r\n DEFAULT_READONLY_PLACEHOLDER,\r\n SPLIT_MAX_LENGTH\r\n} from '../constants';\r\nimport type { CuiCombinedBlockToolData, CuiCombinedPartBlock, CuiMutationActions, CuiMutationCallback } from '../interfaces';\r\nimport { recalculateIndexes, splitHTML, generateId } from '../utils';\r\n\r\nexport class CuiCombinedTextBlockTool implements BlockTool {\r\n private readonly TAG = 'span';\r\n private readonly DEBOUNCE_TIME = 350;\r\n private readonly MAX_CHILD_COUNT_FOR_EMPTY = 1;\r\n private readonly PLACEHOLDER_ATTRIBUTE_NAME = 'placeholderActive';\r\n\r\n private mutationConfig = {\r\n subtree: true,\r\n childList: true,\r\n characterData: true\r\n };\r\n private api: API;\r\n private data: CuiCombinedBlockToolData;\r\n private placeholder: string;\r\n private wrapper?: HTMLElement;\r\n private observer?: MutationObserver;\r\n private lastBlockElement?: HTMLElement;\r\n private readOnly?: boolean;\r\n private changes = new Map();\r\n\r\n constructor(options: unknown) {\r\n const body = options as BlockToolConstructorOptions;\r\n const data = body.data;\r\n\r\n this.readOnly = body.readOnly;\r\n this.placeholder = this.getPlaceholder(body.config);\r\n this.api = body.api;\r\n this.data = {\r\n id: data.id || generateId(),\r\n textBlocks: data.textBlocks || []\r\n };\r\n\r\n this.convertDefaultDataToCustom(data);\r\n }\r\n\r\n public static get isInline(): boolean {\r\n return false;\r\n }\r\n\r\n public static get isReadOnlySupported(): boolean {\r\n return true;\r\n }\r\n\r\n public static get enableLineBreaks(): boolean {\r\n return false;\r\n }\r\n\r\n public static get toolbox(): { icon: string; title: string } {\r\n return {\r\n icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2\" d=\"M8 9V7.2C8 7.08954 8.08954 7 8.2 7L12 7M16 9V7.2C16 7.08954 15.9105 7 15.8 7L12 7M12 7L12 17M12 17H10M12 17H14\"></path></svg>',\r\n title: 'Text'\r\n };\r\n }\r\n\r\n public static get pasteConfig(): object {\r\n return {\r\n tags: ['P']\r\n };\r\n }\r\n\r\n public onPaste(event: CustomEvent): void {\r\n if (event.type !== 'tag') {\r\n return;\r\n }\r\n\r\n const text = event.detail.data.textContent;\r\n\r\n this.data.textBlocks.splice(this.data.textBlocks.length - 1, 1, this.getBlockPartObject(generateId(), text));\r\n this.update(this.data.textBlocks);\r\n }\r\n\r\n public render(): HTMLElement {\r\n this.wrapper = document.createElement('div');\r\n this.wrapper.classList.add(COMBINED_TEXT_BLOCK);\r\n this.wrapper.dataset[this.PLACEHOLDER_ATTRIBUTE_NAME] = this.api.i18n.t(this.placeholder);\r\n\r\n if (!this.readOnly) {\r\n this.wrapper.contentEditable = 'true';\r\n }\r\n\r\n if (!this.data.textBlocks.length) {\r\n this.data.textBlocks.push(this.getBlockPartObject(generateId(), ''));\r\n }\r\n\r\n this.update(this.data.textBlocks);\r\n this.checkIsEditorEmpty();\r\n\r\n if (!this.readOnly) {\r\n const callback = this.getMutationCallback(this.DEBOUNCE_TIME);\r\n\r\n this.observer = new MutationObserver(this.onMutationEvent.bind(this, callback));\r\n this.observer.observe(this.wrapper, this.mutationConfig);\r\n }\r\n\r\n return this.wrapper;\r\n }\r\n\r\n public merge(blocksData: CuiCombinedPartBlock[]): void {\r\n if (!this.wrapper) {\r\n return;\r\n }\r\n\r\n let blocksTextContent = '';\r\n this.data.textBlocks = [];\r\n\r\n blocksData.forEach((block) => {\r\n blocksTextContent += block.data.text;\r\n });\r\n\r\n for (let i = 0; i < this.wrapper.childNodes.length; i++) {\r\n const node = this.wrapper.childNodes.item(i);\r\n\r\n if (!(node instanceof HTMLSpanElement)) {\r\n return;\r\n }\r\n\r\n i--;\r\n blocksTextContent = node.innerHTML + blocksTextContent;\r\n node.remove();\r\n }\r\n\r\n const parts = blocksTextContent.length < SPLIT_MAX_LENGTH ? [blocksTextContent] : splitHTML(blocksTextContent);\r\n\r\n parts.forEach((part: string) => {\r\n const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n this.data.textBlocks.push(blockObject);\r\n });\r\n\r\n this.update(this.data.textBlocks);\r\n }\r\n\r\n public save(blockContent: HTMLElement): CuiCombinedPartBlock[] {\r\n const textBlocks: CuiCombinedPartBlock[] = [];\r\n\r\n blockContent.querySelectorAll(this.TAG).forEach((span: HTMLElement) => {\r\n textBlocks.push(this.getBlockPartObject(span.dataset['id']!, span.innerHTML));\r\n });\r\n\r\n return textBlocks;\r\n }\r\n\r\n public removed(): void {\r\n this.observer?.disconnect();\r\n\r\n const blockIds = new Set<string>();\r\n\r\n this.data.textBlocks.forEach((block: CuiCombinedPartBlock) => {\r\n blockIds.add(block.id || '');\r\n });\r\n\r\n this.removeBlocks(blockIds);\r\n }\r\n\r\n private onMutationEvent(callback: (mutationList: MutationRecord[]) => void, mutationList: MutationRecord[]): void {\r\n if (mutationList.length === 0) {\r\n return;\r\n }\r\n\r\n mutationList.forEach((mutation) => {\r\n if (mutation.removedNodes.length) {\r\n this.changes.set(generateId(), mutation);\r\n\r\n return;\r\n }\r\n\r\n this.changes.set(mutation.target, mutation);\r\n });\r\n\r\n callback(mutationList);\r\n this.checkIsEditorEmpty();\r\n }\r\n\r\n private getMutationCallback = (wait: number): CuiMutationCallback => {\r\n let timeoutId: CuiNullable<ReturnType<typeof setTimeout>> = null;\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n\r\n timeoutId = setTimeout(() => this.handleMutations(), wait);\r\n };\r\n };\r\n\r\n private handleMutations(): void {\r\n const mutationsList = [...this.changes.values()];\r\n const { updatedElements, removedElementsIds } = this.getMutationActions(mutationsList);\r\n const splitedParts: HTMLElement[] = [];\r\n\r\n updatedElements.forEach((element: HTMLElement) => {\r\n const elementContent: string = element.innerHTML;\r\n\r\n if (elementContent.length < SPLIT_MAX_LENGTH) {\r\n return;\r\n }\r\n\r\n const parts = splitHTML(elementContent);\r\n\r\n parts.forEach((part: string, index) => {\r\n if (index === 0) {\r\n return;\r\n }\r\n\r\n const blockId = generateId();\r\n const textElement = this.createBlock(blockId, part);\r\n\r\n splitedParts.push(textElement);\r\n });\r\n\r\n element.innerHTML = parts[0];\r\n element.after(...splitedParts);\r\n });\r\n\r\n this.addBlocks(splitedParts, updatedElements);\r\n this.updateBlocks(updatedElements);\r\n this.removeBlocks(removedElementsIds);\r\n this.changes.clear();\r\n }\r\n\r\n private getNextIndex(): number {\r\n recalculateIndexes(this.api.blocks);\r\n const index = this.api.blocks.getCurrentBlockIndex();\r\n const block = this.api.blocks.getBlockByIndex(index);\r\n const dataIndex = Number(block?.holder.dataset['index']);\r\n\r\n const selection = window.getSelection();\r\n const range = selection?.rangeCount ? selection.getRangeAt(0) : null;\r\n const caretPosition = range?.startOffset ?? 1;\r\n\r\n let nextBlockIndex = dataIndex;\r\n\r\n if (caretPosition !== 0) {\r\n const blockContainer = block?.holder.querySelector('.' + COMBINED_TEXT_BLOCK) as HTMLElement;\r\n const childrenCount = blockContainer?.children?.length ? blockContainer?.children?.length - 1 : 0;\r\n\r\n nextBlockIndex = dataIndex + childrenCount + 1;\r\n }\r\n\r\n if (!nextBlockIndex) {\r\n nextBlockIndex ||= 0;\r\n }\r\n\r\n return nextBlockIndex;\r\n }\r\n\r\n private getBlockPartObject(blockId: string, text: string): CuiCombinedPartBlock {\r\n return {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n }\r\n\r\n private getMutationActions(mutationList: MutationRecord[]): CuiMutationActions {\r\n const updatedElements = new Set<HTMLElement>();\r\n const removedElementsIds = new Set<string>();\r\n const changedOutsideElements: Node[] = [];\r\n\r\n this.lastBlockElement = undefined;\r\n\r\n mutationList.forEach((mutation: MutationRecord): void => {\r\n this.handleUpdatedBlocks(mutation, updatedElements, changedOutsideElements);\r\n this.handleRemovedBlocks(mutation, removedElementsIds);\r\n });\r\n\r\n if (this.lastBlockElement) {\r\n const lastBlockElement = this.lastBlockElement as HTMLElement;\r\n\r\n lastBlockElement.append(...changedOutsideElements);\r\n this.setCaretToBlocksEnd(lastBlockElement);\r\n }\r\n\r\n return {\r\n updatedElements,\r\n removedElementsIds\r\n };\r\n }\r\n\r\n private setCaretToBlocksEnd(block: HTMLElement): void {\r\n const selection = window.getSelection();\r\n const range = document.createRange();\r\n\r\n range.setStart(block, block.childNodes.length);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n\r\n private handleUpdatedBlocks(\r\n mutation: MutationRecord,\r\n updatedElements: Set<HTMLElement>,\r\n outsideChanges: Node[]\r\n ): void {\r\n let element = mutation.target as HTMLElement;\r\n\r\n if (mutation.target.nodeType === Node.TEXT_NODE) {\r\n element = mutation.target.parentElement as HTMLElement;\r\n }\r\n\r\n const span = element?.closest('.' + COMBINED_TEXT_BLOCK_PART) as HTMLElement;\r\n\r\n if (span) {\r\n updatedElements.add(span);\r\n\r\n return;\r\n }\r\n\r\n this.handleChangesOutsideBlock(element, outsideChanges);\r\n }\r\n\r\n private handleChangesOutsideBlock(element: HTMLElement, outsideChanges: Node[]): void {\r\n if (!element || this.lastBlockElement) {\r\n return;\r\n }\r\n\r\n element.childNodes.forEach((block) => {\r\n const blockElement = block as HTMLElement;\r\n\r\n if (blockElement.classList?.contains(COMBINED_TEXT_BLOCK_PART)) {\r\n this.lastBlockElement = blockElement;\r\n\r\n return;\r\n }\r\n\r\n outsideChanges.push(block);\r\n });\r\n }\r\n\r\n private addBlocks(splicedParts: HTMLElement[], updatedElements: Set<HTMLElement>): void {\r\n if (!splicedParts.length) {\r\n return;\r\n }\r\n\r\n const addedBlocks: CuiCombinedPartBlock[] = splicedParts.map((block) => {\r\n const blockId = block.dataset['id'];\r\n\r\n return {\r\n id: blockId,\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: block.innerHTML,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n });\r\n\r\n const previousElement = updatedElements.values().next().value;\r\n const id = previousElement?.dataset['id'];\r\n const index = Number(previousElement?.dataset['index']) + 1;\r\n const blockIndex = this.data.textBlocks.findIndex((block) => block.id === id);\r\n\r\n this.data.textBlocks.splice(blockIndex, 0, ...addedBlocks);\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n index,\r\n blockIndex,\r\n blocks: addedBlocks,\r\n data: this.data.textBlocks\r\n });\r\n }\r\n\r\n private updateBlocks(updatedElements: Set<HTMLElement>): void {\r\n if (!updatedElements.size) {\r\n return;\r\n }\r\n\r\n const updatedBlocks = [...updatedElements.values()].map((block) => {\r\n return {\r\n id: block.dataset['id'],\r\n type: COMBINED_TEXT_BLOCK_PART,\r\n data: {\r\n text: block.innerHTML,\r\n parentId: this.data.id,\r\n parentType: COMBINED_TEXT_BLOCK_NAME\r\n }\r\n };\r\n });\r\n\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_UPDATED, updatedBlocks);\r\n }\r\n\r\n private handleRemovedBlocks(mutation: MutationRecord, removedElementsIds: Set<string>): void {\r\n if (mutation.removedNodes.length === 0) {\r\n return;\r\n }\r\n\r\n mutation.removedNodes.forEach((node: Node): void => {\r\n if (!(node instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n const blockId = (node as HTMLElement).dataset['id'];\r\n\r\n if (!blockId) {\r\n return;\r\n }\r\n\r\n removedElementsIds.add(blockId);\r\n });\r\n }\r\n\r\n private removeBlocks(ids: Set<string>): void {\r\n if (!ids.size) {\r\n return;\r\n }\r\n\r\n const removedElementIds = [...ids.values()];\r\n\r\n this.data.textBlocks = this.data.textBlocks.filter((block) => !ids.has(block.id || ''));\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_REMOVED, removedElementIds);\r\n }\r\n\r\n private update(blocks: CuiCombinedPartBlock[]): void {\r\n if (!blocks.length) {\r\n return;\r\n }\r\n\r\n blocks.forEach((block: CuiCombinedPartBlock) => {\r\n const textElement = this.createBlock(block.id || generateId(), block.data.text);\r\n\r\n if (!this.wrapper) {\r\n return;\r\n }\r\n\r\n if (this.wrapper.querySelector('.' + COMBINED_TEXT_BLOCK_PART)) {\r\n this.wrapper.append(textElement);\r\n\r\n return;\r\n }\r\n\r\n this.wrapper.replaceChildren(textElement);\r\n });\r\n\r\n setTimeout(() => {\r\n this.api.events.emit(COMBINED_TEXT_BLOCK_ADDED, {\r\n blocks\r\n });\r\n });\r\n }\r\n\r\n private createBlock(id: string, text: string): HTMLElement {\r\n const textElement = document.createElement(this.TAG);\r\n textElement.classList.add(COMBINED_TEXT_BLOCK_PART);\r\n textElement.innerHTML = text;\r\n textElement.dataset['id'] = id;\r\n\r\n return textElement;\r\n }\r\n\r\n private convertDefaultDataToCustom(data: { text: string }): void {\r\n if (Array.isArray(data)) {\r\n this.data.textBlocks = data.map((block) => {\r\n block.id = generateId();\r\n block.data.parentId = this.data.id;\r\n\r\n return block;\r\n });\r\n }\r\n\r\n if (!data.text) {\r\n return;\r\n }\r\n\r\n const fragment = document.createRange().createContextualFragment(data.text);\r\n let elementContent = '';\r\n\r\n fragment.childNodes.forEach((node) => {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n elementContent += node.textContent;\r\n\r\n return;\r\n }\r\n\r\n elementContent += (node as HTMLElement).innerHTML;\r\n });\r\n\r\n const parts = elementContent.length < SPLIT_MAX_LENGTH ? [elementContent] : splitHTML(elementContent);\r\n\r\n parts.forEach((part: string) => {\r\n const blockObject = this.getBlockPartObject(generateId(), part);\r\n\r\n this.data.textBlocks.push(blockObject);\r\n });\r\n }\r\n\r\n private checkIsEditorEmpty(): void {\r\n if (!this.wrapper || this.wrapper.children.length > this.MAX_CHILD_COUNT_FOR_EMPTY) {\r\n return;\r\n }\r\n\r\n const item = this.wrapper.children.item(0) as HTMLElement;\r\n const isItemEmpty = !item.textContent?.length;\r\n\r\n this.wrapper.dataset['empty'] = `${isItemEmpty}`;\r\n }\r\n\r\n private getPlaceholder(config: ToolConfig): string {\r\n if (this.readOnly) {\r\n return config.readonlyPlaceholder ?? DEFAULT_READONLY_PLACEHOLDER;\r\n }\r\n\r\n return config.placeholder ?? DEFAULT_PLACEHOLDER;\r\n }\r\n}\r\n","import type { EditorConfig, LogLevels } from '@editorjs/editorjs';\r\n\r\nimport { COMBINED_TEXT_BLOCK_NAME, DEFAULT_CONFIG } from '../constants';\r\nimport type { CuiEditorConfig } from '../interfaces';\r\nimport { CuiCombinedTextBlockTool, CuiBoldInlineTool, CuiItalicInlineTool, CuiLinkMarker } from '../tools';\r\n\r\nexport const getEditorConfig = (id: string, config: CuiEditorConfig = DEFAULT_CONFIG): EditorConfig => ({\r\n holder: id,\r\n logLevel: 'ERROR' as LogLevels,\r\n readOnly: config.readOnly,\r\n autofocus: config.autofocus,\r\n tools: {\r\n paragraph: {\r\n class: CuiCombinedTextBlockTool,\r\n inlineToolbar: true,\r\n config: {\r\n placeholder: config.placeholder,\r\n readonlyPlaceholder: config.readonlyPlaceholder\r\n }\r\n },\r\n link: {\r\n class: CuiLinkMarker\r\n },\r\n bold: {\r\n class: CuiBoldInlineTool\r\n },\r\n italic: {\r\n class: CuiItalicInlineTool\r\n },\r\n ...config.tools\r\n },\r\n defaultBlock: COMBINED_TEXT_BLOCK_NAME\r\n});\r\n","import { EDITOR_ATTACHES_TOOL_SELECTOR, EDITOR_IMAGE_TOOL_SELECTOR, EDITOR_TOOL_MODAL_SELECTOR, EDITOR_TOOLTIP_SELECTOR, EDITOR_VIDEO_TOOL_SELECTOR, EditorAttachesToolComponent, EditorImageToolComponent, EditorToolModalComponent, EditorTooltipComponent, EditorVideoToolComponent, MARKER_MODAL_SELECTOR, MARKER_SELECT_SELECTOR, MarkerModalComponent, MarkerSelectComponent } from \"../components\";\r\nimport { CuiCustomElement } from \"../interfaces\";\r\n\r\nexport const EDITOR_CUSTOM_ELEMENTS: readonly CuiCustomElement[] = [\r\n {\r\n selector: EDITOR_TOOLTIP_SELECTOR,\r\n component: EditorTooltipComponent\r\n },\r\n {\r\n selector: MARKER_SELECT_SELECTOR,\r\n component: MarkerSelectComponent\r\n },\r\n {\r\n selector: EDITOR_TOOL_MODAL_SELECTOR,\r\n component: EditorToolModalComponent\r\n },\r\n {\r\n selector: MARKER_MODAL_SELECTOR,\r\n component: MarkerModalComponent\r\n },\r\n {\r\n selector: EDITOR_VIDEO_TOOL_SELECTOR,\r\n component: EditorVideoToolComponent\r\n },\r\n {\r\n selector: EDITOR_IMAGE_TOOL_SELECTOR,\r\n component: EditorImageToolComponent\r\n },\r\n {\r\n selector: EDITOR_ATTACHES_TOOL_SELECTOR,\r\n component: EditorAttachesToolComponent\r\n }\r\n];\r\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\nimport { EDITOR_CUSTOM_ELEMENTS } from './custom-elements';\r\n\r\nexport function cuiProvideEditor(): Provider {\r\n return [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (injector: Injector) => () => {\r\n EDITOR_CUSTOM_ELEMENTS.forEach(({ component, selector }) => {\r\n const element = createCustomElement(component, { injector });\r\n\r\n window.customElements.define(selector, element);\r\n });\r\n },\r\n deps: [Injector],\r\n multi: true,\r\n },\r\n ];\r\n}\r\n","export function setEditorDragEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('dragstart', dragstartListener, { signal });\r\n}\r\n\r\nexport function dragstartListener(event: DragEvent): void {\r\n event.preventDefault();\r\n}\r\n","import { COMBINED_TEXT_BLOCK, COMBINED_TEXT_BLOCK_PART } from '../constants';\r\n\r\nconst FIRST_CHILD_SELECTOR = '_selected';\r\n\r\nexport function setEditorKeyboardEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement.addEventListener('keydown', keydownListener, { signal });\r\n}\r\n\r\nexport function keydownListener(event: KeyboardEvent): void {\r\n const target = event.target as HTMLElement;\r\n const block = target.closest(`.${COMBINED_TEXT_BLOCK}`);\r\n\r\n if (!block) {\r\n return;\r\n }\r\n\r\n const selection = window.getSelection();\r\n const ranges = selection?.rangeCount;\r\n\r\n if (!ranges || !checkIsBlockFullySelected(block)) {\r\n return;\r\n }\r\n\r\n const firstChild = block?.firstElementChild;\r\n\r\n firstChild?.classList.add(FIRST_CHILD_SELECTOR);\r\n setTimeout(() => firstChild?.classList.remove(FIRST_CHILD_SELECTOR));\r\n}\r\n\r\nfunction checkIsBlockFullySelected(blockElement: Element): boolean {\r\n const selection = window.getSelection();\r\n\r\n if (!selection || selection.rangeCount === 0) {\r\n return false;\r\n }\r\n\r\n const range = selection.getRangeAt(0);\r\n const startBlock = range.startContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n const endBlock = range.endContainer.parentElement?.closest('.' + COMBINED_TEXT_BLOCK_PART);\r\n\r\n const isStartAtBlockStart = startBlock === blockElement.firstChild && range.startOffset === 0;\r\n const isEndAtBlockEnd = endBlock === blockElement.lastChild;\r\n\r\n return isStartAtBlockStart && isEndAtBlockEnd;\r\n}\r\n","import { CuiAngularElement } from '../interfaces';\r\n\r\nimport { EDITOR_TOOL_MODAL_SELECTOR, EditorToolModalComponent } from '../components';\r\nimport type { MarkerType } from '../services';\r\n\r\nexport function setEditorInfoModalEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n editorElement?.addEventListener('pointerup', pointerUpListener, { signal });\r\n}\r\n\r\nexport function pointerUpListener(event: MouseEvent): void {\r\n const selection = window.getSelection();\r\n\r\n if (selection && selection.toString().length > 0) {\r\n return;\r\n }\r\n\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (!marker) {\r\n return;\r\n }\r\n\r\n onMarkerClick(marker);\r\n}\r\n\r\nexport function onMarkerClick(marker: HTMLElement): void {\r\n const id = marker.dataset['id'];\r\n const type = marker.dataset['type'] as MarkerType;\r\n\r\n if (!(id && type)) {\r\n return;\r\n }\r\n\r\n const toolModal = document.createElement(EDITOR_TOOL_MODAL_SELECTOR) as CuiAngularElement<EditorToolModalComponent>;\r\n\r\n toolModal.tool = { id, type, title: 'Молоток КУБИПРО Ультра MAX 3000' };\r\n toolModal.marker = marker;\r\n\r\n toolModal.addEventListener('closed', function onCloseModal() {\r\n toolModal.remove();\r\n });\r\n\r\n document.body.append(toolModal);\r\n}\r\n","import { tooltipMap } from '../utils';\r\n\r\nconst TOOLTIP_POSITION_X = 5;\r\nconst TOOLTIP_POSITION_Y = 40;\r\nconst TOOLTIP_SAFE_RIGHT_SHIFT = 10;\r\nconst TOOLTIP_DEBOUNCE_TIME = 500;\r\nconst CLOSE_TOOLTIP_DEBOUNCE_TIME = 50;\r\n\r\nlet tooltip: HTMLElement;\r\nlet timeoutId: ReturnType<typeof setTimeout>;\r\nlet closeTimeoutId: ReturnType<typeof setTimeout>;\r\n\r\nconst closeTooltipHandler = (): void => closeTooltip();\r\n\r\nfunction closeTooltip(callback?: () => void): void {\r\n clearTimeout(closeTimeoutId);\r\n\r\n closeTimeoutId = setTimeout(() => {\r\n clearTimeout(timeoutId);\r\n tooltip?.remove();\r\n callback?.();\r\n }, CLOSE_TOOLTIP_DEBOUNCE_TIME);\r\n}\r\n\r\nconst debouncedEvent = (event: MouseEvent, marker: HTMLElement, target: HTMLElement): void => {\r\n clearTimeout(timeoutId);\r\n\r\n timeoutId = setTimeout(() => {\r\n if (tooltip && tooltip?.contains(target)) {\r\n return;\r\n }\r\n\r\n closeTooltip(() => openTooltip(event, marker));\r\n }, TOOLTIP_DEBOUNCE_TIME);\r\n};\r\n\r\nfunction openTooltip(event: MouseEvent, marker: HTMLElement): void {\r\n const type = marker.tagName as keyof typeof tooltipMap;\r\n\r\n tooltip = tooltipMap[type](marker);\r\n tooltip.style.visibility = 'hidden';\r\n\r\n document.body.append(tooltip);\r\n\r\n setTimeout(() => {\r\n const positionX = event.clientX;\r\n const positionY = event.clientY;\r\n const rightX = document.documentElement.clientWidth - positionX;\r\n const rightShiftDiffX = tooltip.offsetWidth - rightX;\r\n const rightShiftX = rightShiftDiffX > 0 ? rightShiftDiffX + TOOLTIP_SAFE_RIGHT_SHIFT : 0;\r\n\r\n tooltip.style.top = positionY - TOOLTIP_POSITION_Y + 'px';\r\n tooltip.style.left = positionX + TOOLTIP_POSITION_X - rightShiftX + 'px';\r\n tooltip.style.visibility = 'visible';\r\n });\r\n}\r\n\r\nexport function setEditorTooltipEvents(signal: AbortSignal): void {\r\n document.body.addEventListener('mousemove', mouseMoveListener, { signal });\r\n document.body.addEventListener('mouseleave', closeTooltipHandler, { signal });\r\n}\r\n\r\nexport function mouseMoveListener(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n const marker = target.closest('.marker') as HTMLElement;\r\n\r\n if (tooltip?.contains(target)) {\r\n clearTimeout(timeoutId);\r\n clearTimeout(closeTimeoutId);\r\n\r\n return;\r\n }\r\n\r\n if (!marker) {\r\n closeTooltip();\r\n\r\n return;\r\n }\r\n\r\n clearTimeout(closeTimeoutId);\r\n debouncedEvent(event, marker, target);\r\n}\r\n","import { setEditorDragEvents } from './editor-drag.event';\r\nimport { setEditorKeyboardEvents } from './editor-keyboard.event';\r\nimport { setEditorInfoModalEvents } from './editor-modal.event';\r\nimport { setEditorTooltipEvents } from './editor-tooltip.event';\r\n\r\nexport function setEditorEvents(editorElement: HTMLElement, signal: AbortSignal): void {\r\n setEditorTooltipEvents(signal);\r\n setEditorInfoModalEvents(editorElement, signal);\r\n setEditorDragEvents(editorElement, signal);\r\n setEditorKeyboardEvents(editorElement, signal);\r\n}\r\n","import type { ElementRef, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService } from '@cuby-ui/cdk';\r\nimport type { API, BlockMutationEvent, OutputData } from '@editorjs/editorjs';\r\nimport EditorJS from '@editorjs/editorjs';\r\nimport type { Observable, Subscription } from 'rxjs';\r\nimport {\r\n concatMap,\r\n delay,\r\n finalize,\r\n fromEvent,\r\n map,\r\n Subject,\r\n takeWhile,\r\n tap,\r\n throttleTime,\r\n timer,\r\n toArray\r\n} from 'rxjs';\r\n\r\nimport { getEditorConfig } from './config';\r\nimport {\r\n COMBINED_TEXT_BLOCK_NAME,\r\n COMBINED_TEXT_BLOCK_PART,\r\n DEFAULT_CONFIG\r\n} from './constants/editor.constants';\r\nimport { setEditorEvents } from './events/set-editor-events';\r\nimport type {\r\n CuiBlockData,\r\n CuiBlocksRequestData,\r\n CuiCombinedBlockAddingEvent,\r\n CuiCombinedBlockToolData,\r\n CuiCombinedPartBlock,\r\n CuiEditorConfig,\r\n CuiEventActionData,\r\n CuiFullBlockData\r\n} from './interfaces';\r\nimport { Block, CuiEditorService, CuiJTextApiService, EventActions } from './services';\r\nimport { recalculateIndexes } from './utils/recalculate-indexes';\r\n\r\n@Component({\r\n selector: 'cui-editor',\r\n standalone: true,\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['./editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiEditorService, CuiJTextApiService]\r\n})\r\nexport class CuiEditorComponent implements OnDestroy {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly editorService = inject(CuiEditorService);\r\n private readonly jTextService = inject(CuiJTextApiService);\r\n\r\n private readonly POOLING_DELAY = 100;\r\n private readonly ELEMENT_SPACE_TO_BOTTOM = 150;\r\n private readonly SCROLL_THROTTLE_TIME = 200;\r\n\r\n private readonly isReadonly = computed(() => this.config?.readOnly);\r\n private readonly emptyQueue = new Subject();\r\n\r\n private poolingSubscription!: Subscription;\r\n private scrollSubscription!: Subscription;\r\n private isSkipCombinedBlockOnChange: boolean[] = [];\r\n private isFirst = true;\r\n private isChanging = false;\r\n private isSkip = false;\r\n private isRequested = false;\r\n private isDestroyed = false;\r\n private blockIdsMap = new Map<string, string>();\r\n private combinedBlocks = new Map();\r\n private index = 0;\r\n private page = 0;\r\n private addedBlocks: CuiBlockData[] = [];\r\n private updatedBlocks: Block[] = [];\r\n private removedBlocksIds: string[] = [];\r\n private changesQueue: BlockMutationEvent[][] = [];\r\n private abortController = new AbortController();\r\n\r\n protected readonly editorId = this.cuiIdService.generate();\r\n\r\n @ViewChild('editor')\r\n protected readonly editorRef!: ElementRef;\r\n\r\n @Output()\r\n public readonly editorEmpty = new EventEmitter<boolean>();\r\n\r\n @Input({ required: true })\r\n public editorApiId!: string;\r\n\r\n @Input()\r\n public config: CuiEditorConfig = DEFAULT_CONFIG;\r\n\r\n @Input()\r\n public requestSize = 40;\r\n\r\n public editor!: EditorJS;\r\n public editorElement!: HTMLElement;\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['editorApiId'] || changes['config']) {\r\n this.initEditorChanges();\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.isDestroyed = true;\r\n this.destroyEditor();\r\n }\r\n\r\n private onScrollEvent(element: HTMLElement): void {\r\n const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;\r\n const currentHeight = element.scrollTop + element.clientHeight;\r\n\r\n if (currentHeight < overallHeight || this.isRequested) {\r\n return;\r\n }\r\n\r\n this.isRequested = true;\r\n\r\n const size = this.requestSize;\r\n let blocksCount = 0;\r\n\r\n this.getBlocks(this.page, size)\r\n .pipe(\r\n tap((blocks) => (blocksCount = blocks.length)),\r\n finalize(() => {\r\n this.isRequested = false;\r\n\r\n if (blocksCount >= size) {\r\n return;\r\n }\r\n\r\n this.scrollSubscription.unsubscribe();\r\n })\r\n )\r\n .subscribe();\r\n\r\n this.page++;\r\n }\r\n\r\n private onEditorChange(_: API, event: BlockMutationEvent | BlockMutationEvent[]): void {\r\n if (this.isReadonly() || this.isDestroyed) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(event)) {\r\n event = [event];\r\n }\r\n\r\n recalculateIndexes(this.editor.blocks);\r\n\r\n if (this.isChanging) {\r\n this.changesQueue.unshift(event);\r\n }\r\n\r\n this.startChanges(event);\r\n this.editorEmpty.emit(this.checkIsEmpty());\r\n }\r\n\r\n private onAddedCombinedBlock(data: CuiCombinedBlockAddingEvent): void {\r\n if (this.isSkipCombinedBlockOnChange.length) {\r\n this.isSkipCombinedBlockOnChange.pop();\r\n\r\n return;\r\n }\r\n\r\n const blocksWithoutId = data.blocks.map((block) => ({\r\n block: { ...block, id: undefined },\r\n id: block.id!\r\n }));\r\n\r\n this.addedBlocks.push(...blocksWithoutId);\r\n }\r\n\r\n private onUpdatedCombinedBlock(updatedBlocks: Block[]): void {\r\n if (!updatedBlocks.length) {\r\n return;\r\n }\r\n\r\n this.updatedBlocks.push(...updatedBlocks);\r\n }\r\n\r\n private onRemovedCombinedBlock(blockIds: string[]): void {\r\n if (!blockIds.length) {\r\n return;\r\n }\r\n\r\n this.removedBlocksIds.push(...blockIds);\r\n }\r\n\r\n private initEditorChanges(): void {\r\n this.jTextService.addOptions(this.config.requestOptions);\r\n\r\n this.editor = this.initEditor(this.editorId);\r\n this.editor.isReady.then(() => {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n\r\n this.editorElement = this.editorRef.nativeElement;\r\n\r\n this.initEditorEvents(this.editorElement);\r\n this.initScrollObserver();\r\n this.startPooling(this.requestSize);\r\n this.setListenersOnCustomBlockChanges();\r\n });\r\n }\r\n\r\n private initEditor(id: string): EditorJS {\r\n const config = this.config;\r\n\r\n this.destroyEditor();\r\n this.editor = new EditorJS({\r\n ...getEditorConfig(id, config),\r\n onChange: this.onEditorChange.bind(this)\r\n });\r\n\r\n return this.editor;\r\n }\r\n\r\n private initScrollObserver(): void {\r\n const element = this.config?.element ?? this.editorElement;\r\n const scrollObserver = fromEvent(element, 'scroll');\r\n\r\n this.scrollSubscription = scrollObserver\r\n .pipe(\r\n takeUntilDestroyed(this.destroy),\r\n throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {\r\n leading: true,\r\n trailing: true\r\n }),\r\n map(() => this.onScrollEvent(element))\r\n )\r\n .subscribe();\r\n }\r\n\r\n private initEditorEvents(element: HTMLElement): void {\r\n const readOnly = this.isReadonly();\r\n\r\n if (readOnly) {\r\n return;\r\n }\r\n\r\n setEditorEvents(element, this.abortController.signal);\r\n }\r\n\r\n private startPooling(size: number): void {\r\n const scrollElement = this.config?.element ?? this.editorElement;\r\n const withoutPreload = this.config?.withoutPreload;\r\n\r\n this.poolingSubscription = timer(0, this.POOLING_DELAY)\r\n .pipe(\r\n concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))),\r\n tap(() => this.page++),\r\n takeWhile(\r\n (blocks) =>\r\n !withoutPreload &&\r\n scrollElement.scrollHeight <= scrollElement.clientHeight &&\r\n blocks.length >= size\r\n ),\r\n finalize(() => {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n\r\n this.setStartBlock();\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private destroyEditor(): void {\r\n this.abortController.abort();\r\n this.resetData();\r\n // TODO: в рандом кейсах падает ошибка если убрать проверку на вызов destroy\r\n this.editor?.destroy?.();\r\n }\r\n\r\n private setListenersOnCustomBlockChanges(): void {\r\n this.editorService.setListenersOnCustomBlockChanges(this.editor, {\r\n removedCallback: this.onRemovedCombinedBlock.bind(this),\r\n updatedCallback: this.onUpdatedCombinedBlock.bind(this),\r\n addedCallback: this.onAddedCombinedBlock.bind(this)\r\n });\r\n }\r\n\r\n private async startChanges(event: BlockMutationEvent[]): Promise<void> {\r\n if (this.isSkip || this.isChanging) {\r\n this.isSkip = false;\r\n\r\n return;\r\n }\r\n\r\n this.isChanging = true;\r\n\r\n try {\r\n const editorOutput = await this.editor.save();\r\n const events = event.filter((data) => data.detail.target.name !== COMBINED_TEXT_BLOCK_NAME);\r\n const blocks = this.editorService.sortEventsByTypes(events);\r\n const { addBlocks$, addedBlocks } = this.collectAddedBlocksRequest(blocks, editorOutput);\r\n\r\n this.addedBlocks = [];\r\n\r\n addBlocks$\r\n .pipe(\r\n tap((blockIds) => this.setBlockIdsToMap(blockIds, addedBlocks)),\r\n concatMap(() => this.collectUpdatedBlocksRequest(blocks, editorOutput)),\r\n concatMap(() => this.collectRemovedBlocksRequest(blocks))\r\n )\r\n .subscribe({\r\n complete: () => this.startNextChange(),\r\n error: () => this.startNextChange()\r\n });\r\n } catch (e) {\r\n return;\r\n }\r\n }\r\n\r\n private startNextChange(): void {\r\n this.isChanging = false;\r\n\r\n const nextEvents = this.changesQueue.pop();\r\n\r\n if (nextEvents) {\r\n this.startChanges(nextEvents);\r\n }\r\n\r\n this.emptyQueue.next(null);\r\n }\r\n\r\n private collectAddedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): CuiBlocksRequestData {\r\n const defaultBlocksWithIndex = blocks[EventActions.add].map((addedBlock) =>\r\n this.editorService.getFullBlockData(addedBlock, editorOutput)\r\n );\r\n const combinedBlocksWithIndex = this.addedBlocks.map((block) => {\r\n const element = this.editorElement.querySelector(`[data-id=\"${block.id}\"]`) as HTMLElement;\r\n const index = Number(element?.dataset['index']);\r\n\r\n return { ...block, index };\r\n });\r\n\r\n const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort((first, second) => first.index - second.index);\r\n const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorApiId, addedBlocks);\r\n\r\n return {\r\n addedBlocks,\r\n addBlocks$\r\n };\r\n }\r\n\r\n private collectUpdatedBlocksRequest(blocks: CuiEventActionData, editorOutput: OutputData): Observable<Block[]> {\r\n blocks[EventActions.update].forEach((updateBlock) => {\r\n const { id, block } = this.editorService.getFullBlockData(updateBlock, editorOutput);\r\n block.id = id;\r\n\r\n this.updatedBlocks.push(block);\r\n });\r\n\r\n const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);\r\n\r\n this.updatedBlocks = [];\r\n\r\n return updateBlocks$;\r\n }\r\n\r\n private collectRemovedBlocksRequest(blocks: CuiEventActionData): Observable<void> {\r\n blocks[EventActions.remove].forEach((block) => {\r\n const id = block.detail.target.id;\r\n\r\n this.removedBlocksIds.push(id);\r\n });\r\n\r\n const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(\r\n this.editorApiId,\r\n this.removedBlocksIds,\r\n this.blockIdsMap\r\n );\r\n this.removedBlocksIds = [];\r\n\r\n return removeBlocks$;\r\n }\r\n\r\n private getBlocks(page = 0, size = 40): Observable<Block[]> {\r\n let combinedBlock: CuiNullable<Block>;\r\n\r\n return this.jTextService.getBlocks(this.editorApiId, page, size).pipe(\r\n takeUntilDestroyed(this.destroy),\r\n finalize(() => {\r\n if (combinedBlock) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n recalculateIndexes(this.editor.blocks);\r\n }),\r\n map((block) => {\r\n if (block.type === COMBINED_TEXT_BLOCK_PART) {\r\n const blockData = block.data as { parentId: string };\r\n\r\n if (combinedBlock && blockData.parentId! !== combinedBlock?.id) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n combinedBlock = this.setCombinedBlock(block);\r\n\r\n return;\r\n }\r\n\r\n if (combinedBlock) {\r\n this.addCombinedBlock(combinedBlock);\r\n combinedBlock = null;\r\n }\r\n\r\n this.addBlock(block);\r\n }),\r\n toArray()\r\n ) as unknown as Observable<Block[]>;\r\n }\r\n\r\n private addBlock(block: Block): void {\r\n if (typeof block.type !== 'string') {\r\n return;\r\n }\r\n\r\n this.blockIdsMap.set(block.id!, block.id!);\r\n this.insert(block);\r\n }\r\n\r\n private addCombinedBlock(combinedBlock: Block): void {\r\n this.isSkipCombinedBlockOnChange.push(true);\r\n const block = this.editor.blocks.getById(combinedBlock.id || '');\r\n\r\n if (block) {\r\n this.editor.blocks.update(block.id, combinedBlock.data as CuiCombinedPartBlock);\r\n\r\n return;\r\n }\r\n\r\n this.insert(combinedBlock);\r\n }\r\n\r\n private insert(block: Block): void {\r\n this.checkFirst(block);\r\n this.index++;\r\n }\r\n\r\n private checkFirst(block: Block): void {\r\n if (!this.isFirst) {\r\n this.isSkip = true;\r\n this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);\r\n\r\n return;\r\n }\r\n\r\n // TODO: есть варик что что то пойдет не так\r\n this.editor.blocks.render({ blocks: [block] }).then(() => this.isSkip = false);\r\n this.isFirst = false;\r\n }\r\n\r\n private setCombinedBlock(block: Block): Block {\r\n const combinedBlockData = block.data as { parentId: string };\r\n const parent = this.combinedBlocks.get(combinedBlockData.parentId);\r\n\r\n this.blockIdsMap.set(block.id!, block.id!);\r\n\r\n if (parent) {\r\n const parentData = parent.data as { textBlocks: Block[] };\r\n parentData.textBlocks.push(block);\r\n\r\n return parent;\r\n }\r\n\r\n const parentObject: Block = {\r\n id: combinedBlockData.parentId,\r\n type: COMBINED_TEXT_BLOCK_NAME,\r\n data: {\r\n id: combinedBlockData.parentId,\r\n textBlocks: [block]\r\n }\r\n };\r\n\r\n this.combinedBlocks.set(combinedBlockData.parentId, parentObject);\r\n\r\n return parentObject;\r\n }\r\n\r\n private setBlockIdsToMap(blockIds: string[], addedBlocks: CuiFullBlockData[]): void {\r\n if (!blockIds.length) {\r\n return;\r\n }\r\n\r\n addedBlocks.forEach((blockData, index) => {\r\n this.blockIdsMap.set(blockData.id, blockIds[index]);\r\n });\r\n }\r\n\r\n private setStartBlock(): void {\r\n if (this.blockIdsMap.size) {\r\n this.setFocus();\r\n this.editorEmpty.emit(this.checkIsEmpty());\r\n\r\n return;\r\n }\r\n\r\n if (this.isReadonly()) {\r\n this.editor.render({ blocks: [] });\r\n\r\n return;\r\n }\r\n\r\n this.editorService.setStartBlock(this.editorApiId, async (block: Block<CuiCombinedBlockToolData>, id: string) => {\r\n this.blockIdsMap.set(id, id);\r\n this.isSkipCombinedBlockOnChange.push(true);\r\n\r\n await this.editor.render({ blocks: [block] });\r\n\r\n this.setFocus();\r\n recalculateIndexes(this.editor.blocks);\r\n });\r\n }\r\n\r\n private setFocus(): void {\r\n if (!this.config?.autofocus) {\r\n return;\r\n }\r\n\r\n this.editor.caret.focus();\r\n }\r\n\r\n private checkIsEmpty(): boolean {\r\n const MIN_BLOCKS_COUNT = 1;\r\n const REDACTOR_SELECTOR = '.codex-editor__redactor';\r\n const redactor = this.editorElement.querySelector(REDACTOR_SELECTOR);\r\n const blocksCount = redactor?.childElementCount ?? 0;\r\n\r\n return blocksCount <= MIN_BLOCKS_COUNT && !redactor?.textContent;\r\n }\r\n\r\n private resetData(): void {\r\n this.scrollSubscription?.unsubscribe();\r\n this.poolingSubscription?.unsubscribe();\r\n this.isSkipCombinedBlockOnChange = [];\r\n this.isFirst = true;\r\n this.isChanging = false;\r\n this.isSkip = false;\r\n this.isRequested = false;\r\n this.blockIdsMap = new Map<string, string>();\r\n this.combinedBlocks = new Map();\r\n this.index = 0;\r\n this.page = 0;\r\n this.addedBlocks = [];\r\n this.updatedBlocks = [];\r\n this.removedBlocksIds = [];\r\n this.changesQueue = [];\r\n this.abortController = new AbortController();\r\n }\r\n}\r\n","<div\r\n #editor\r\n [id]=\"editorId\"\r\n data-editor\r\n [class._readonly]=\"config.readOnly\"\r\n></div>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRender,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n input,\r\n signal,\r\n TemplateRef,\r\n viewChild\r\n} from '@angular/core';\r\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport { CuiEditorReadonlyConfig } from './editor-readonly.options';\r\n\r\n@Component({\r\n selector: 'cui-editor-readonly',\r\n standalone: true,\r\n imports: [CuiEditorComponent, NgTemplateOutlet],\r\n templateUrl: './editor-readonly.component.html',\r\n styleUrls: ['./editor-readonly.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorReadonlyComponent {\r\n protected readonly isShowMore = signal(false);\r\n protected readonly isMoreButtonShown = signal(false);\r\n protected readonly editorConfig = computed(() => ({ readOnly: true, withoutPreload: true, ...this.config() }));\r\n\r\n protected readonly editor = viewChild.required<CuiEditorComponent>('editor');\r\n\r\n public readonly editorId = input.required<string>();\r\n public readonly config = input.required<CuiEditorReadonlyConfig>();\r\n public readonly buttonTemplate = input.required<TemplateRef<unknown>>();\r\n public readonly shortHeight = input<number>(68);\r\n\r\n constructor() {\r\n this.initEditorIdEffect();\r\n this.initReadEditorProperty();\r\n }\r\n\r\n protected onShow(editor: CuiEditorComponent): void {\r\n editor.editorElement.scrollTo(0, 0);\r\n this.isShowMore.update((prev) => !prev);\r\n }\r\n\r\n private initReadEditorProperty(): void {\r\n afterRender({\r\n read: () => this.isMoreButtonShown.set(this.editor().editorElement?.scrollHeight > this.shortHeight())\r\n });\r\n }\r\n\r\n private initEditorIdEffect(): void {\r\n effect(() => {\r\n this.editorId();\r\n this.isShowMore.set(false);\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<cui-editor\r\n #editor\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorApiId]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n@if (isMoreButtonShown()) {\r\n <button class=\"c-button\" (click)=\"onShow(editor)\">\r\n <ng-container [ngTemplateOutlet]=\"buttonTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"></ng-container>\r\n </button>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { TemplateRef } from '@angular/core';\r\nimport { Component, input, output, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiSvgModule } from '../../../components';\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'cui-editor-modal',\r\n imports: [\r\n CuiEditorComponent,\r\n CuiButtonModule,\r\n NgTemplateOutlet,\r\n CuiSvgModule\r\n ],\r\n standalone: true,\r\n templateUrl: './editor-modal.component.html',\r\n styleUrl: './editor-modal.component.scss'\r\n})\r\nexport class CuiEditorModalComponent {\r\n protected readonly isOpen = signal(false);\r\n protected readonly isButtonDisabled = signal<boolean>(false);\r\n\r\n public readonly title = input.required<string>();\r\n public readonly buttonTemplate = input<TemplateRef<HTMLElement>>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly editorId = input<CuiNullable<string>>();\r\n\r\n public readonly editorCreated = output();\r\n public readonly modalClosed = output();\r\n\r\n protected onModalOpen(): void {\r\n this.isButtonDisabled.set(true);\r\n\r\n if (this.editorId()) {\r\n this.open();\r\n\r\n return;\r\n }\r\n\r\n this.editorCreated.emit();\r\n }\r\n public open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n public close(): void {\r\n this.isButtonDisabled.set(false);\r\n this.isOpen.set(false);\r\n this.modalClosed.emit();\r\n }\r\n}\r\n","@if (buttonTemplate(); as template) {\r\n <button\r\n type=\"button\"\r\n class=\"button\"\r\n (click)=\"onModalOpen()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </button>\r\n} @else {\r\n <button\r\n class=\"description\"\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n icon=\"cuiIconRichText\"\r\n size=\"sm\"\r\n (click)=\"onModalOpen()\"\r\n [disabled]=\"isButtonDisabled()\"\r\n >\r\n @if (editorId()) {\r\n <span class=\"description__text _created\">{{ 'Description' }}</span>\r\n <cui-svg\r\n class=\"description__icon\"\r\n icon=\"cuiIconEdit\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n } @else {\r\n <cui-svg\r\n class=\"description__icon\"\r\n icon=\"cuiIconPlus\"\r\n color=\"var(--cui-light-blue-600)\"\r\n />\r\n <span class=\"description__text\">{{ 'Add description' }}</span>\r\n }\r\n </button>\r\n}\r\n@if (isOpen()) {\r\n <div class=\"wrapper\">\r\n @if (editorId(); as id) {\r\n <header class=\"header\">\r\n <div class=\"info\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n icon=\"cuiIconChevronLeft\"\r\n size=\"xxs\"\r\n appearance=\"secondary\"\r\n shape=\"rounded\"\r\n (click)=\"close()\"\r\n ></button>\r\n <h1 class=\"title\">{{ title() }}</h1>\r\n </div>\r\n <div class=\"actions\">\r\n <!-- <cui-loader /> -->\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n size=\"xs\"\r\n (click)=\"close()\"\r\n >\r\n {{ 'Done' }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <section class=\"section\">\r\n <cui-editor\r\n #editorComponent\r\n class=\"editor\"\r\n [editorApiId]=\"id\"\r\n [config]=\"config()\"\r\n />\r\n </section>\r\n }\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiButtonModule, CuiContentWrapperComponent, CuiHintModule } from '../../../components';\r\nimport { CuiTooltip } from '../../../directives';\r\n\r\nimport { CuiEditorComponent } from '../../editor.component';\r\nimport type { CuiEditorConfig } from '../../interfaces';\r\nimport { CuiEditorModalComponent } from '../editor-modal/editor-modal.component';\r\n\r\n@Component({\r\n selector: 'cui-editor-block',\r\n imports: [\r\n CuiButtonModule,\r\n CuiEditorModalComponent,\r\n CuiEditorComponent,\r\n TranslocoDirective,\r\n CuiContentWrapperComponent,\r\n CuiTooltip,\r\n CuiHintModule\r\n ],\r\n standalone: true,\r\n templateUrl: './editor-block.component.html',\r\n styleUrls: ['./editor-block.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiEditorBlockComponent {\r\n private skipFirstValidation = true;\r\n\r\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n protected readonly isDescriptionModalOpen = signal(false);\r\n protected readonly isDescriptionEmpty = signal(false);\r\n\r\n public readonly editorContainer = viewChild<string, ElementRef<HTMLElement>>('editorContainer', {\r\n read: ElementRef\r\n });\r\n\r\n public readonly title = input.required<string>();\r\n public readonly editorId = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly required = input(false);\r\n\r\n public readonly editorEmpty = output<boolean>();\r\n\r\n constructor() {\r\n this.initEditorConfig();\r\n }\r\n\r\n protected onToggleDescriptionModal(): void {\r\n this.isDescriptionModalOpen.update((prev) => !prev);\r\n }\r\n\r\n protected onDescriptionChange(value: boolean): void {\r\n this.editorEmpty.emit(value);\r\n\r\n if (this.skipFirstValidation) {\r\n this.skipFirstValidation = false;\r\n\r\n return;\r\n }\r\n\r\n this.isDescriptionEmpty.set(value);\r\n }\r\n\r\n private initEditorConfig(): void {\r\n const effectRef = effect(() => {\r\n const element = this.editorContainer()?.nativeElement;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n this.editorConfig.set({ element, ...this.config() });\r\n effectRef.destroy();\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"wrapper\">\r\n <span class=\"title\">\r\n {{ t('DESCRIPTION') }}\r\n @if (required()) {\r\n <span class=\"title__required\">*</span>\r\n }\r\n </span>\r\n <ng-template #button>\r\n <button\r\n [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\r\n cuiButton\r\n size=\"xxs\"\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n icon=\"cuiIconMaximizeSm\"\r\n (click)=\"onToggleDescriptionModal()\"\r\n ></button>\r\n </ng-template>\r\n <cui-editor-modal\r\n [title]=\"title()\"\r\n [editorId]=\"editorId()\"\r\n [buttonTemplate]=\"button\"\r\n [config]=\"config()\"\r\n (modalClosed)=\"onToggleDescriptionModal()\"\r\n />\r\n </div>\r\n <div\r\n #editorContainer\r\n cuiContentWrapper\r\n class=\"editor\"\r\n [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\r\n >\r\n @if (!isDescriptionModalOpen() && editorConfig()) {\r\n <cui-editor\r\n #editorComponent\r\n [editorApiId]=\"editorId()\"\r\n [config]=\"editorConfig()!\"\r\n (editorEmpty)=\"onDescriptionChange($event)\"\r\n />\r\n }\r\n </div>\r\n @if (required() && isDescriptionEmpty()) {\r\n <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\r\n }\r\n</ng-container>\r\n","import type { HttpEvent, HttpInterceptorFn } from '@angular/common/http';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const cuiXNdjsonInterceptor: HttpInterceptorFn = (request, next) => {\r\n if (request.headers.get('Content-Type') !== 'application/x-ndjson') {\r\n return next(request);\r\n }\r\n\r\n return new Observable<HttpEvent<unknown>>((observer) => {\r\n const controller = new AbortController();\r\n const signal = controller.signal;\r\n\r\n (async (): Promise<void> => {\r\n try {\r\n const response = await fetch(request.urlWithParams, {\r\n method: request.method,\r\n headers: request.headers.keys().reduce((headers: Record<string, string>, key) => {\r\n headers[key] = request.headers.get(key)!;\r\n\r\n return headers;\r\n }, {}),\r\n body: request.body ? JSON.stringify(request.body) : null,\r\n signal\r\n });\r\n\r\n if (!response.ok) {\r\n const error = await response.json();\r\n\r\n observer.error(new HttpErrorResponse({ error }));\r\n\r\n return;\r\n }\r\n\r\n const reader = response.body!.getReader();\r\n const decoder = new TextDecoder();\r\n let buffer = '';\r\n\r\n for (;;) {\r\n const { done, value } = await reader.read();\r\n\r\n if (done) {\r\n observer.complete();\r\n\r\n return;\r\n }\r\n\r\n buffer += decoder.decode(value);\r\n const lines = buffer.split('\\n');\r\n buffer = lines.pop() ?? '';\r\n\r\n lines.forEach((line) => observer.next(JSON.parse(line)));\r\n }\r\n } catch (error) {\r\n observer.error(new HttpErrorResponse({ error }));\r\n }\r\n })();\r\n\r\n return () => controller.abort();\r\n });\r\n};\r\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { catchError, finalize, throwError } from 'rxjs';\r\n\r\nimport { CuiLoaderService } from '../services';\r\n\r\nexport const cuiLoaderInterceptor: HttpInterceptorFn = (request, next) => {\r\n const loaderService = inject(CuiLoaderService);\r\n\r\n if (request.method === 'GET') {\r\n return next(request);\r\n }\r\n\r\n loaderService.setLoading();\r\n\r\n return next(request).pipe(\r\n catchError((error) => throwError(() => error)),\r\n finalize(loaderService.handleCompletedRequest.bind(loaderService))\r\n );\r\n};\r\n","import { HttpErrorResponse, type HttpEvent, type HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport type { Observable } from 'rxjs';\r\nimport { catchError, throwError } from 'rxjs';\r\n\r\nimport { CuiAlertService } from '../components';\r\n\r\nexport const cuiErrorHandlerInterceptor: HttpInterceptorFn = (request, next) => {\r\n const translocoService = inject(TranslocoService);\r\n const cuiAlertService = inject(CuiAlertService);\r\n\r\n return next(request).pipe(\r\n catchError((error) => {\r\n console.error(error);\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n cuiAlertService\r\n .open(translocoService.translate(`BACKEND.${error.error.code}`), { status: 'error' })\r\n .subscribe();\r\n }\r\n\r\n return throwError(() => error) as Observable<HttpEvent<unknown>>;\r\n })\r\n );\r\n};\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { AuthConfig, OAuthModuleConfig } from 'angular-oauth2-oidc';\r\n\r\nimport type { CuiBrowserAuthService } from '../services/browser-auth.service';\r\nimport type { CuiMobileAuthService } from '../services/mobile-auth.service';\r\nimport { CuiAuthBase } from '../services/auth.service';\r\n\r\nexport type CuiAuthPlatform = 'mobile' | 'browser';\r\n\r\nexport interface CuiAuthConfig extends AuthConfig {\r\n readonly tokenExpiredCallback?: (this: CuiAuthBase) => void;\r\n}\r\n\r\nexport interface CuiAuthProviderConfig {\r\n readonly authConfig: CuiAuthConfig;\r\n readonly moduleConfig?: OAuthModuleConfig;\r\n readonly platform?: CuiAuthPlatform;\r\n}\r\n\r\nexport const CuiAuthService = new InjectionToken<CuiMobileAuthService | CuiBrowserAuthService>('CUI_AUTH_SERVICE');\r\n","import { Location } from '@angular/common';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { CuiAuthConfig } from '../providers';\r\nimport { CuiAuthBase } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiBrowserAuthService extends CuiAuthBase {\r\n private readonly router = inject(Router);\r\n private readonly location = inject(Location);\r\n\r\n public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\r\n this.setStorage(localStorage);\r\n this.configure(authConfig);\r\n\r\n await this.loadDiscoveryDocument();\r\n await this.tryLogin();\r\n\r\n const tokenExpiredCallback = authConfig.tokenExpiredCallback?.bind(this) ?? this.initLoginFlow.bind(this);\r\n\r\n this.initAuthRefreshEvents(tokenExpiredCallback);\r\n\r\n await this.useCheckTokenFlow(tokenExpiredCallback);\r\n\r\n this.router.navigateByUrl(this.location.path(false).split('?')[0]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { CuiAuthConfig } from '../providers';\r\nimport { CuiAuthBase } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiMobileAuthService extends CuiAuthBase {\r\n public async initAuth(authConfig: CuiAuthConfig): Promise<void> {\r\n this.setStorage(localStorage);\r\n this.configure(authConfig);\r\n\r\n if (!authConfig.tokenExpiredCallback) {\r\n return;\r\n }\r\n\r\n await this.loadDiscoveryDocument();\r\n await this.tryLogin();\r\n\r\n this.initAuthRefreshEvents(authConfig.tokenExpiredCallback.bind(this));\r\n\r\n await this.useCheckTokenFlow(authConfig.tokenExpiredCallback.bind(this));\r\n }\r\n}\r\n","import type { Provider } from '@angular/core';\r\nimport { APP_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';\r\nimport type { AuthConfig } from 'angular-oauth2-oidc';\r\nimport { provideOAuthClient } from 'angular-oauth2-oidc';\r\n\r\nimport { CuiBrowserAuthService } from '../services/browser-auth.service';\r\nimport { CuiMobileAuthService } from '../services/mobile-auth.service';\r\nimport type { CuiAuthConfig, CuiAuthProviderConfig } from './auth.options';\r\nimport { CuiAuthService } from './auth.options';\r\n\r\nexport function provideCuiAuth({ authConfig, moduleConfig, platform = 'browser' }: CuiAuthProviderConfig): Provider {\r\n return [\r\n provideOAuthClient(moduleConfig),\r\n {\r\n provide: CuiAuthService,\r\n useFactory: (): CuiMobileAuthService | CuiBrowserAuthService => {\r\n if (platform === 'mobile') {\r\n return inject(CuiMobileAuthService);\r\n }\r\n\r\n return inject(CuiBrowserAuthService);\r\n }\r\n },\r\n makeEnvironmentProviders([\r\n {\r\n provide: APP_INITIALIZER,\r\n useValue: (): Promise<void> => initAuth(authConfig),\r\n multi: true\r\n }\r\n ])\r\n ];\r\n}\r\n\r\nasync function initAuth(authConfig: CuiAuthConfig): Promise<void> {\r\n const authService = inject(CuiAuthService);\r\n\r\n return await authService.initAuth(authConfig);\r\n}\r\n","import type { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\n\r\nimport { CuiAuthService } from '../providers';\r\n\r\nexport const cuiAuthInterceptor: HttpInterceptorFn = (request, next) => {\r\n const authService = inject(CuiAuthService);\r\n\r\n if (!authService.hasValidAccessToken()) {\r\n return next(request);\r\n }\r\n\r\n const modifiedRequest = request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + authService.getAccessToken()\r\n }\r\n });\r\n\r\n return next(modifiedRequest);\r\n};\r\n","import type { OnDestroy } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\n\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\nimport { CuiSvgModule } from '../../components';\r\nimport { CuiLoaderService, CuiLoadingState } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-loader',\r\n imports: [CuiSvgModule],\r\n standalone: true,\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiLoaderComponent implements OnDestroy {\r\n private readonly loaderService = inject(CuiLoaderService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n protected readonly state = CuiLoadingState;\r\n protected readonly LoaderString: Record<CuiLoadingState, string> = {\r\n [CuiLoadingState.LOADING]: `${this.translocoService.translate('SAVING')}...`,\r\n [CuiLoadingState.COMPLETED]: this.translocoService.translate('SAVED'),\r\n [CuiLoadingState.INITIAL]: ''\r\n };\r\n protected readonly LoaderIcon: Record<CuiLoadingState, string> = {\r\n [CuiLoadingState.LOADING]: 'cuiIconRefreshCcw',\r\n [CuiLoadingState.COMPLETED]: 'cuiIconCheck',\r\n [CuiLoadingState.INITIAL]: ''\r\n };\r\n\r\n protected readonly loaderState = this.loaderService.loaderState;\r\n protected readonly loaderString = computed(() => this.LoaderString[this.loaderState()]);\r\n protected readonly loaderIcon = computed(() => this.LoaderIcon[this.loaderState()]);\r\n\r\n public ngOnDestroy(): void {\r\n this.loaderService.reset();\r\n }\r\n}\r\n","@if (loaderState() !== state.INITIAL) {\r\n <cui-svg\r\n [icon]=\"loaderIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n [class.icon_loading]=\"loaderState() === state.LOADING\"\r\n />\r\n <span>{{ loaderString() }}</span>\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiTooltip, } from '../../directives';\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, type CuiDialogContext } from '../../components';\r\nimport type { CuiDialogDeleteData } from './delete-modal.options';\r\n\r\n@Component({\r\n selector: 'cui-delete-modal',\r\n imports: [CuiButtonModule, TranslocoModule, CuiTooltip],\r\n standalone: true,\r\n templateUrl: './delete-modal.component.html',\r\n styleUrls: ['./delete-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiDeleteModalComponent {\r\n private readonly context = inject<CuiDialogContext<CuiDialogDeleteData>>(CUI_DIALOG_CONTEXT);\r\n\r\n private readonly data = this.context.data;\r\n\r\n protected readonly title = this.data.title;\r\n protected readonly content = this.data.content;\r\n protected readonly isLoading = signal(false);\r\n protected readonly isDisabled = this.data.isDisabled ?? false;\r\n\r\n protected onDelete(): void {\r\n if (!this.data.delete) {\r\n return;\r\n }\r\n\r\n this.isLoading.set(true);\r\n this.data\r\n .delete()\r\n .pipe(finalize(() => this.isLoading.set(false)))\r\n .subscribe(() => this.context.completeWith());\r\n }\r\n\r\n protected onCancel(): void {\r\n this.context.completeWith({ canceled: true });\r\n }\r\n}\r\n","<div\r\n *transloco=\"let t\"\r\n class=\"wrapper\"\r\n>\r\n <div class=\"content\">\r\n <div class=\"header\">\r\n <h3 class=\"title\">{{ t(title) }}</h3>\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n icon=\"cuiIconX\"\r\n appearance=\"ghost\"\r\n [disabled]=\"isLoading()\"\r\n class=\"close-btn\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n </div>\r\n <div class=\"info\">\r\n @for (text of content; track text) {\r\n <p [innerHTML]=\"t(text)\"></p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"footer\">\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n (click)=\"onCancel()\"\r\n [disabled]=\"isLoading()\"\r\n appearance=\"secondary\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n [isLoaderShown]=\"isLoading()\"\r\n [disabled]=\"isDisabled\"\r\n [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\r\n appearance=\"destructive\"\r\n (click)=\"onDelete()\"\r\n >\r\n {{ t('YES_DELETE') }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { TreeStruct } from '@cuby-ui/api';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CuiSelectedCategoryService {\r\n private readonly editingIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly creatingIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly categorySignal = signal<CuiNullable<TreeStruct>>(null);\r\n\r\n public readonly editingId = this.editingIdSignal.asReadonly();\r\n public readonly creatingId = this.creatingIdSignal.asReadonly();\r\n public readonly category = this.categorySignal.asReadonly();\r\n\r\n public setCurrentCategory(category: CuiNullable<TreeStruct>): void {\r\n this.categorySignal.set(category);\r\n }\r\n\r\n public setEditingId(id: string): void {\r\n this.editingIdSignal.set(id);\r\n this.clearCreatingId();\r\n }\r\n\r\n public setCreatingId(id: string): void {\r\n this.creatingIdSignal.set(id);\r\n this.clearEditingId();\r\n }\r\n\r\n public clearEditingId(): void {\r\n this.editingIdSignal.set('');\r\n }\r\n\r\n public clearCreatingId(): void {\r\n this.creatingIdSignal.set('');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { AbstractControl } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiHintModule } from '../../components';\r\n\r\n@Component({\r\n selector: 'cui-general-control-error-hint',\r\n imports: [CuiHintModule, TranslocoDirective],\r\n standalone: true,\r\n templateUrl: './general-control-error-hint.component.html',\r\n styleUrl: './general-control-error-hint.component.scss',\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class CuiGeneralControlErrorHintComponent {\r\n public readonly control = input.required<AbstractControl>();\r\n public readonly isVisible = input<boolean>();\r\n\r\n protected get isInvalid(): boolean {\r\n return this.isVisible() ?? (this.control().invalid && this.control().dirty);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (isInvalid) {\r\n @if (control().errors; as errors) {\r\n <cui-hint hintType=\"error\">\r\n @if (errors['required']) {\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n } @else if (errors['minlength']) {\r\n {{ t('PLEASE_KEEP_FIELD_AT_LEAST_CHARACTERS', { value: errors['minlength'].requiredLength }) }}\r\n } @else if (errors['maxlength']) {\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: errors['maxlength'].requiredLength }) }}\r\n } @else if (errors['extraSpaces']) {\r\n {{ t('MUST_BE_WITHOUT_EXTRA_SPACES') }}\r\n } @else if (errors['min']) {\r\n {{ t('MIN_VALUE_MUST_BE_MORE_THAN', { value: errors['min'].min }) }}\r\n } @else if (errors['max']) {\r\n {{ t('MAX_VALUE_MUST_BE_LESS_THAN', { value: errors['max'].max }) }}\r\n } @else if (errors['email']) {\r\n {{ t('INVALID_EMAIL_ADDRESS') }}\r\n }\r\n </cui-hint>\r\n }\r\n }\r\n</ng-container>\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n viewChild\r\n} from '@angular/core';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\nimport { CuiFormFieldModule, CuiHintModule, CuiIconButtonModule, CuiGhostInputComponent } from '../../../../components';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\n\r\n@Component({\r\n selector: 'cui-category-form',\r\n imports: [\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiIconButtonModule,\r\n CuiGeneralControlErrorHintComponent,\r\n CuiGhostInputComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './category-form.component.html',\r\n styleUrl: './category-form.component.scss',\r\n host: {\r\n '(click)': 'onHostClick($event)'\r\n },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryFormComponent implements OnInit {\r\n protected readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n protected readonly form = this.nonNullableFormBuilder.group({\r\n title: ['', cuiCreateDefaultValidators({ asyncDelay: 0 })]\r\n });\r\n protected readonly titleControl = this.form.controls.title;\r\n\r\n public readonly isDisabled = input<boolean>(false);\r\n public readonly defaultTitle = input<string>('');\r\n\r\n protected readonly created = output<string>();\r\n protected readonly canceled = output<void>();\r\n\r\n protected readonly input = viewChild.required('input', { read: ElementRef<HTMLInputElement> });\r\n\r\n protected get isTitleInvalid(): boolean {\r\n return this.titleControl.invalid && this.titleControl.dirty;\r\n }\r\n\r\n protected get isSubmitButtonDisabled(): boolean {\r\n return this.isDisabled() || this.form.invalid;\r\n }\r\n\r\n constructor() {\r\n this.initInputDisableStateSubscription();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initDefaultTitle();\r\n this.initInputFocus();\r\n }\r\n\r\n protected onHostClick(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected onSubmit(): void {\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n\r\n this.created.emit(this.form.value.title!);\r\n }\r\n\r\n protected onCancel(event: Event): void {\r\n event.stopPropagation();\r\n this.canceled.emit();\r\n }\r\n\r\n private initInputDisableStateSubscription(): void {\r\n effect(() => {\r\n if (this.isDisabled()) {\r\n this.titleControl.disable();\r\n\r\n return;\r\n }\r\n\r\n this.titleControl.enable();\r\n });\r\n }\r\n\r\n private initDefaultTitle(): void {\r\n this.form.patchValue({ title: this.defaultTitle() });\r\n }\r\n\r\n private initInputFocus(): void {\r\n Promise.resolve().then(() => this.input().nativeElement.focus());\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <form\r\n [formGroup]=\"form\"\r\n class=\"form\"\r\n (ngSubmit)=\"onSubmit()\"\r\n >\r\n <div class=\"input\">\r\n <input\r\n #input\r\n cuiGhostInput\r\n formControlName=\"title\"\r\n type=\"text\"\r\n placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\r\n [isError]=\"isTitleInvalid\"\r\n (keyup)=\"$event.preventDefault()\"\r\n />\r\n <cui-general-control-error-hint [control]=\"titleControl\" />\r\n </div>\r\n <button\r\n cuiIconButton\r\n type=\"submit\"\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"isSubmitButtonDisabled\"\r\n class=\"button\"\r\n ></button>\r\n </form>\r\n <button\r\n cuiIconButton\r\n type=\"button\"\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n (click)=\"onCancel($event)\"\r\n [disabled]=\"isDisabled()\"\r\n class=\"button\"\r\n ></button>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\n\r\nimport { CuiSvgModule } from '../../../../components';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\n\r\n@Component({\r\n selector: 'cui-create-category-item',\r\n imports: [CuiSvgModule, CuiCategoryFormComponent],\r\n standalone: true,\r\n templateUrl: './create-category-item.component.html',\r\n styleUrl: './create-category-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCreateCategoryItemComponent {\r\n protected readonly created = output<string>();\r\n protected readonly canceled = output<void>();\r\n\r\n public readonly isDisabled = input<boolean>(false);\r\n\r\n protected onSubmit(title: string): void {\r\n this.created.emit(title);\r\n }\r\n\r\n protected onCancel(): void {\r\n this.canceled.emit();\r\n }\r\n}\r\n","<cui-svg\r\n icon=\"cuiIconFolder\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n/>\r\n<cui-category-form\r\n [isDisabled]=\"isDisabled()\"\r\n (created)=\"onSubmit($event)\"\r\n (canceled)=\"onCancel()\"\r\n/>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiTreeStructNavigatorApiService, TreeStruct } from '@cuby-ui/api';\r\nimport type { CuiIcon } from '@cuby-ui/icons';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiButtonModule, CuiIconButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiSelectedCategoryService } from '../../services';\r\nimport { CuiCategoriesListComponent } from '../categories-list';\r\nimport { CuiCategoryFormComponent } from '../category-form';\r\nimport { CuiCreateCategoryItemComponent } from '../create-category-item';\r\n\r\n@Component({\r\n selector: 'cui-category-item',\r\n imports: [\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiCategoryFormComponent,\r\n CuiCreateCategoryItemComponent,\r\n forwardRef(() => CuiCategoriesListComponent)\r\n ],\r\n standalone: true,\r\n templateUrl: './category-item.component.html',\r\n styleUrl: './category-item.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoryItemComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly isStageCreationLoading = signal(false);\r\n protected readonly stageStorageChildren = signal<TreeStruct[]>([]);\r\n protected readonly areChildrenOpened = signal(false);\r\n protected readonly openCloseButtonIcon = computed<CuiIcon>(() =>\r\n this.areChildrenOpened() ? 'cuiIconChevronDown' : 'cuiIconChevronRight'\r\n );\r\n protected readonly doChildrenExist = computed(\r\n () => this.stageStorage().children.length || this.stageStorageChildren().length\r\n );\r\n protected readonly isOpenCloseButtonHidden = computed(() => !this.doChildrenExist());\r\n protected readonly stageStorageIcon = computed<CuiIcon>(() =>\r\n this.areChildrenOpened() && this.doChildrenExist() ? 'cuiIconFolderOpen' : 'cuiIconFolder'\r\n );\r\n protected readonly isSubcategoryCreating = signal(false);\r\n protected readonly isSubcategoryCreationLoading = signal(false);\r\n protected readonly alignItems = computed(() => (this.isTitleEdit() ? 'flex-start' : 'center'));\r\n protected readonly isTitleEdit = computed(\r\n () => this.selectedCategoryService.editingId() === this.stageStorage().id\r\n );\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.stageStorage().id && this.isSubcategoryCreating()) ||\r\n this.isSubcategoryCreationLoading()\r\n );\r\n\r\n public readonly stageStorage = input.required<TreeStruct>();\r\n public readonly categoryTitle = signal<string>('');\r\n public readonly category = computed(() => ({\r\n ...this.stageStorage(),\r\n title: this.categoryTitle() || this.stageStorage().title\r\n }));\r\n\r\n constructor() {\r\n this.initStageStorageChildren();\r\n }\r\n\r\n protected onSelectCategory(): void {\r\n this.selectedCategoryService.setCurrentCategory(this.category());\r\n }\r\n\r\n protected onToggleChildren(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.areChildrenOpened.update((value) => !value);\r\n\r\n if (this.areChildrenOpened()) {\r\n return;\r\n }\r\n\r\n this.isSubcategoryCreating.set(false);\r\n }\r\n\r\n protected onTitleChanged(title: string): void {\r\n this.onCancelTitleEdit();\r\n\r\n if (title === this.category().title) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.updateTitle(this.stageStorage().id, title).subscribe(() => {\r\n this.categoryTitle.set(title);\r\n\r\n if (this.category().id === this.selectedCategoryService.category()?.id) {\r\n this.selectedCategoryService.setCurrentCategory(this.category());\r\n }\r\n });\r\n }\r\n\r\n protected onStartTitleEdit(event?: Event): void {\r\n event?.stopPropagation();\r\n\r\n this.selectedCategoryService.setEditingId(this.stageStorage().id);\r\n this.onCreatingSubcategoryCanceled();\r\n }\r\n\r\n protected onCancelTitleEdit(): void {\r\n this.selectedCategoryService.clearEditingId();\r\n }\r\n\r\n protected onStartCreatingSubcategory(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this.isSubcategoryCreating.set(true);\r\n this.areChildrenOpened.set(true);\r\n this.selectedCategoryService.setCreatingId(this.stageStorage().id);\r\n }\r\n\r\n protected onCreateNewSubcategoryCategory(title: string): void {\r\n this.isSubcategoryCreating.set(false);\r\n this.isSubcategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorageToParent(this.stageStorage().id, title)\r\n .pipe(finalize(this.isSubcategoryCreationLoading.set.bind(this.isSubcategoryCreationLoading, false)))\r\n .subscribe((stateStorage) => {\r\n this.stageStorageChildren.update((value) => [...value, stateStorage]);\r\n });\r\n }\r\n\r\n protected onCreatingSubcategoryCanceled(): void {\r\n this.isSubcategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initStageStorageChildren(): void {\r\n effect(() => {\r\n if (!this.areChildrenOpened() || this.stageStorageChildren().length) {\r\n return;\r\n }\r\n\r\n const stageStorage = this.stageStorage();\r\n const stageStorageChildren = stageStorage.children;\r\n\r\n if (!stageStorageChildren.length) {\r\n return;\r\n }\r\n\r\n if (typeof stageStorageChildren[0] !== 'string') {\r\n this.stageStorageChildren.set(stageStorageChildren as TreeStruct[]);\r\n\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStoragesByParent(stageStorage.id).subscribe((storage) => {\r\n this.stageStorageChildren.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, storage] : [storage]\r\n );\r\n });\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<ng-container *cuiLet=\"category() as stage\">\r\n <button\r\n type=\"button\"\r\n [style.align-items]=\"alignItems()\"\r\n [disabled]=\"isStageCreationLoading()\"\r\n class=\"category\"\r\n (click)=\"onSelectCategory()\"\r\n >\r\n <button\r\n type=\"button\"\r\n ccFlexContainerDirective\r\n class=\"category__open-close-button\"\r\n [class.category__open-close-button_hidden]=\"isOpenCloseButtonHidden()\"\r\n (click)=\"onToggleChildren($event)\"\r\n >\r\n <cui-svg\r\n [icon]=\"openCloseButtonIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n </button>\r\n <cui-svg\r\n [icon]=\"stageStorageIcon()\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n @if (isTitleEdit()) {\r\n <cui-category-form\r\n [defaultTitle]=\"stage.title\"\r\n (created)=\"onTitleChanged($event)\"\r\n (canceled)=\"onCancelTitleEdit()\"\r\n />\r\n } @else {\r\n <span class=\"category__title\">{{ stage.title }}</span>\r\n\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n class=\"category__add-subcategory-button\"\r\n (click)=\"onStartTitleEdit($event)\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n class=\"category__add-subcategory-button\"\r\n (click)=\"onStartCreatingSubcategory($event)\"\r\n ></button>\r\n }\r\n </button>\r\n <div\r\n [hidden]=\"!areChildrenOpened()\"\r\n class=\"list-wrapper\"\r\n >\r\n <cui-categories-list [stageStorages]=\"stageStorageChildren()\" />\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isSubcategoryCreationLoading()\"\r\n (created)=\"onCreateNewSubcategoryCategory($event)\"\r\n (canceled)=\"onCreatingSubcategoryCanceled()\"\r\n />\r\n }\r\n </div>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\r\nimport { TreeStruct } from '@cuby-ui/api';\r\n\r\nimport { CuiIconButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiCategoryItemComponent } from '../category-item';\r\n\r\n@Component({\r\n selector: 'cui-categories-list',\r\n imports: [CuiIconButtonModule, CuiSvgModule, forwardRef(() => CuiCategoryItemComponent)],\r\n standalone: true,\r\n templateUrl: './categories-list.component.html',\r\n styleUrl: './categories-list.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesListComponent {\r\n public readonly stageStorages = input.required<TreeStruct[]>();\r\n}\r\n","@for (stageStorage of stageStorages(); track stageStorage.id) {\r\n <cui-category-item [stageStorage]=\"stageStorage\" />\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\nimport { CuiTreeStructNavigatorApiService, TreeStruct, TreeStructType } from '@cuby-ui/api';\r\n\r\nimport { CuiCategoriesListComponent, CuiCreateCategoryItemComponent } from './components';\r\nimport { CuiEmptyStateComponent, CuiButtonModule, CuiDropdownDirective, CuiDropdownWrapperComponent } from '../../components';\r\nimport { CuiSelectedCategoryService } from './services';\r\n\r\n@Component({\r\n selector: 'cui-categories',\r\n imports: [\r\n CuiButtonModule,\r\n CuiLetDirective,\r\n CuiDropdownDirective,\r\n CuiDropdownWrapperComponent,\r\n CuiEmptyStateComponent,\r\n CuiCreateCategoryItemComponent,\r\n CuiCategoriesListComponent,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './categories.component.html',\r\n styleUrls: ['./categories.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCategoriesComponent {\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly selectedCategoryService = inject(CuiSelectedCategoryService);\r\n\r\n protected readonly stageStorages = signal<CuiNullable<TreeStruct[]>>(null);\r\n protected readonly isCategoryCreating = signal(false);\r\n protected readonly isCategoryCreationLoading = signal(false);\r\n protected readonly isCreateCategoryControlVisible = computed(\r\n () =>\r\n (this.selectedCategoryService.creatingId() === this.treeStructType() && this.isCategoryCreating()) ||\r\n this.isCategoryCreationLoading()\r\n );\r\n\r\n protected readonly dropdown = viewChild.required<CuiDropdownDirective>('dropdown');\r\n\r\n public readonly treeStructType = input.required<TreeStructType>();\r\n public readonly buttonId = input<string>();\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n this.initSelectCategoryEffect();\r\n }\r\n\r\n protected onOpenStageStorages(): void {\r\n this.selectedCategoryService.clearCreatingId();\r\n this.selectedCategoryService.clearEditingId();\r\n\r\n if (this.stageStorages()?.length) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService.getStageStorages(this.treeStructType()).subscribe((stageStorage) => {\r\n this.stageStorages.update((prevStageStorages) =>\r\n prevStageStorages ? [...prevStageStorages, stageStorage] : [stageStorage]\r\n );\r\n });\r\n }\r\n\r\n protected onStartCreatingNewCategory(): void {\r\n this.isCategoryCreating.set(true);\r\n this.selectedCategoryService.setCreatingId(this.treeStructType());\r\n }\r\n\r\n protected onCreateNewCategory(title: string): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n this.isCategoryCreationLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .createStageStorage(title, this.treeStructType())\r\n .pipe(finalize(this.isCategoryCreationLoading.set.bind(this, false)))\r\n .subscribe((stateStorage) => this.stageStorages.update((value) => [...(value || []), stateStorage]));\r\n }\r\n\r\n protected onCreatingCategoryCanceled(): void {\r\n this.isCategoryCreating.set(false);\r\n this.selectedCategoryService.clearCreatingId();\r\n }\r\n\r\n private initSelectCategoryEffect(): void {\r\n effect(() => {\r\n this.selectedCategoryService.category();\r\n this.dropdown().close();\r\n }, { allowSignalWrites: true });\r\n }\r\n}\r\n","<button\r\n [attr.id]=\"buttonId()\"\r\n #dropdown=\"cuiDropdown\"\r\n [cuiDropdown]=\"dropdownContent\"\r\n orientation=\"stretch\"\r\n type=\"button\"\r\n class=\"target\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"onOpenStageStorages()\"\r\n>\r\n <ng-content />\r\n</button>\r\n\r\n<ng-template #dropdownContent>\r\n <cui-dropdown-wrapper\r\n *transloco=\"let t\"\r\n [title]=\"t('SELECT_OR_CREATE_CATEGORY')\"\r\n width=\"100%\"\r\n class=\"dropdown-wrapper\"\r\n >\r\n <ng-container *cuiLet=\"stageStorages() as stageStorages\">\r\n @if (stageStorages && stageStorages?.length) {\r\n <cui-categories-list [stageStorages]=\"stageStorages\" />\r\n }\r\n @if (isCreateCategoryControlVisible()) {\r\n <cui-create-category-item\r\n class=\"create-category\"\r\n [isDisabled]=\"isCategoryCreationLoading()\"\r\n (created)=\"onCreateNewCategory($event)\"\r\n (canceled)=\"onCreatingCategoryCanceled()\"\r\n />\r\n } @else if (!stageStorages?.length) {\r\n <cui-empty-state\r\n class=\"empty\"\r\n [subtitle]=\"t('NO_CATEGORY_TO_VIEW_YET')\"\r\n />\r\n }\r\n </ng-container>\r\n <button\r\n ccDropdownFooterContent\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n (click)=\"onStartCreatingNewCategory()\"\r\n >\r\n {{ t('NEW_CATEGORY') }}\r\n </button>\r\n </cui-dropdown-wrapper>\r\n</ng-template>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\n@Injectable()\r\nexport class CuiCheckListBlockService {\r\n private readonly checkListItemsSignal =\r\n signal<CuiNullable<NodeCheckListItem<NodeCheckListItemContentType>[]>>(null);\r\n private readonly componentIdSignal = signal<CuiNullable<string>>(null);\r\n private readonly isDragAvailableSignal = signal<boolean>(false);\r\n\r\n public readonly checkListItems = this.checkListItemsSignal.asReadonly();\r\n public readonly componentId = this.componentIdSignal.asReadonly();\r\n public readonly isDragAvailable = this.isDragAvailableSignal.asReadonly();\r\n\r\n public setCheckListItems(checkListItems: NodeCheckListItem<NodeCheckListItemContentType>[]): void {\r\n this.checkListItemsSignal.set(checkListItems);\r\n }\r\n\r\n public addCheckListItem(checkListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n this.checkListItemsSignal.update((value) => (value ? [...value, checkListItem] : [checkListItem]));\r\n }\r\n\r\n public updateCheckListItem(updatedCheckListItem: NodeCheckListItem<NodeCheckListItemContentType>): void {\r\n if (!this.checkListItemsSignal()) {\r\n return;\r\n }\r\n\r\n this.checkListItemsSignal.update((value) => {\r\n const updateCheckListItemIndex = value!.findIndex(\r\n (checkListItem) => checkListItem.id === updatedCheckListItem.id\r\n );\r\n\r\n value![updateCheckListItemIndex] = updatedCheckListItem;\r\n\r\n return [...value!];\r\n });\r\n }\r\n\r\n public deleteCheckListItem(id: string): void {\r\n if (!this.checkListItemsSignal()) {\r\n return;\r\n }\r\n\r\n this.checkListItemsSignal.update((value) => {\r\n const deletedItemIndex = value!.findIndex((checklistItem) => checklistItem.id === id);\r\n\r\n value!.splice(deletedItemIndex, 1);\r\n\r\n return [...value!];\r\n });\r\n }\r\n\r\n public setComponentId(id: string): void {\r\n this.componentIdSignal.set(id);\r\n }\r\n\r\n public toggleDragPermission(isDragButtonVisible: boolean): void {\r\n this.isDragAvailableSignal.set(isDragButtonVisible);\r\n }\r\n}\r\n","import type { OnInit } from '@angular/core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { NodeCheckListActionItemContent, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport {\r\n CuiCheckboxModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiRadioModule,\r\n CuiSelectModule,\r\n CuiTextareaModule,\r\n CuiToggleModule\r\n} from '../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-card',\r\n imports: [\r\n CuiCheckboxModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiRadioModule,\r\n CuiSelectModule,\r\n CuiTextareaModule,\r\n CuiTextFieldControllerModule,\r\n CuiToggleModule,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-card.component.html',\r\n styleUrl: './checklist-block-list-item-action-card.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionCardComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n\r\n public actionForm!: FormGroup;\r\n\r\n public readonly purposeType = input<string>();\r\n public readonly isConsiderationNeeded = input<boolean>(false);\r\n public readonly actionInfo = input.required<NodeCheckListActionItemContent>();\r\n\r\n public readonly consideredCorrectChanged = output<string>();\r\n public readonly checkListActionChanged = output<NodeCheckListItemContentAction>();\r\n\r\n protected readonly _actionInfo = signal<CuiNullable<NodeCheckListActionItemContent>>(null);\r\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n );\r\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n () => this.actionInfo().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n );\r\n\r\n protected readonly isConsideredCorrectControl = this.nonNullableFormBuilder.control({\r\n value: false,\r\n disabled: false\r\n });\r\n\r\n protected get photoGroup(): FormGroup {\r\n return this.actionForm.get('photo') as FormGroup;\r\n }\r\n\r\n protected get commentGroup(): FormGroup {\r\n return this.actionForm.get('comment') as FormGroup;\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._actionInfo.set(this.actionInfo());\r\n\r\n if (!this.purposeType() || !this.isConsiderationNeeded()) {\r\n return;\r\n }\r\n\r\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initActionForm();\r\n }\r\n\r\n private initActionForm(): void {\r\n this.actionForm = this.nonNullableFormBuilder.group({\r\n photo: this.nonNullableFormBuilder.group({\r\n isEnable: this.attachmentPhotoAction().isEnable,\r\n isRequired: {\r\n value: this.attachmentPhotoAction().isRequired,\r\n disabled: !this.attachmentPhotoAction().isEnable\r\n }\r\n }),\r\n comment: this.nonNullableFormBuilder.group({\r\n isEnable: this.textAreaAction().isEnable,\r\n isRequired: {\r\n value: this.textAreaAction().isRequired,\r\n disabled: !this.textAreaAction().isEnable\r\n }\r\n })\r\n });\r\n\r\n this.initActionFormSegmentsSubscriptions();\r\n\r\n if (!this.isConsiderationNeeded()) {\r\n return;\r\n }\r\n\r\n this.isConsideredCorrectControl.setValue(this.actionInfo().considerCorrect, { emitEvent: false });\r\n }\r\n\r\n private initActionFormSegmentsSubscriptions(): void {\r\n this.isConsideredCorrectControlSubscription();\r\n this.initPhotoGroupSubscription();\r\n this.initCommentGroupSubscription();\r\n }\r\n\r\n private isConsideredCorrectControlSubscription(): void {\r\n this.isConsideredCorrectControl.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.consideredCorrectChanged.emit(this._actionInfo()!.id));\r\n }\r\n\r\n private initPhotoGroupSubscription(): void {\r\n this.photoGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.photoGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.photoGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.attachmentPhotoAction().id,\r\n ...this.photoGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.photoGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.attachmentPhotoAction().id,\r\n ...this.photoGroup.value\r\n });\r\n });\r\n }\r\n\r\n private initCommentGroupSubscription(): void {\r\n this.commentGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.commentGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.commentGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.textAreaAction().id,\r\n ...this.commentGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.commentGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.checkListActionChanged.emit({\r\n id: this.textAreaAction().id,\r\n ...this.commentGroup.value\r\n });\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div\r\n class=\"card\"\r\n [formGroup]=\"actionForm\"\r\n >\r\n <div class=\"title-container\">\r\n <span class=\"title\">{{ actionInfo().title }}</span>\r\n @if (isConsiderationNeeded()) {\r\n <label\r\n cuiLabel\r\n class=\"title__input\"\r\n >\r\n <input\r\n cuiRadio\r\n type=\"radio\"\r\n [checked]=\"actionInfo().considerCorrect\"\r\n [formControl]=\"isConsideredCorrectControl\"\r\n [value]=\"true\"\r\n />\r\n {{ t('CONSIDER_CORRECT') }}\r\n </label>\r\n }\r\n </div>\r\n <div class=\"blocks\">\r\n <div\r\n class=\"block-card\"\r\n [formGroup]=\"photoGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"block-card\"\r\n [formGroup]=\"commentGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-with-verification',\r\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-with-verification.component.html',\r\n styleUrl: './checklist-block-list-item-action-with-verification.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithVerificationComponent {\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n protected onConsiderCorrectChanged(actionId: string, purposeType: string): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: purposeType,\r\n actionId\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemIsConsideredCorrect(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n\r\n protected onCheckListActionChanged(\r\n actionContent: NodeCheckListItemContentAction,\r\n actionId: string,\r\n purposeType: string\r\n ): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: purposeType,\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemActionContent(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n <div class=\"action\">\r\n <div class=\"action__header action__assignee-header\">\r\n {{ t('CONDITIONAL_LOGIC_FOR_ASSIGNEE') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'ASSIGN'\"\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n [isConsiderationNeeded]=\"true\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id, 'ASSIGN')\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'ASSIGN'\"\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n [isConsiderationNeeded]=\"true\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'ASSIGN')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id, 'ASSIGN')\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"action\">\r\n <div class=\"action__header action__approver-header\">\r\n {{ t('CONDITIONAL_LOGIC_FOR_APPROVER') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'APPROVE'\"\r\n [actionInfo]=\"checkListItemContent.actionsApprove![0]\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![0].id, 'APPROVE')\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [purposeType]=\"'APPROVE'\"\r\n [actionInfo]=\"checkListItemContent.actionsApprove![1]\"\r\n (consideredCorrectChanged)=\"onConsiderCorrectChanged($event, 'APPROVE')\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsApprove![1].id, 'APPROVE')\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { CuiNodeChecklistApiService, NodeCheckListActionItemContent, NodeCheckListItem, NodeCheckListItemContentAction } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemActionCardComponent } from '../checklist-block-list-item-action-card';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-action-without-verification',\r\n imports: [CuiCheckListBlockListItemActionCardComponent, CuiLetDirective, TranslocoDirective, UpperCasePipe],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-action-without-verification.component.html',\r\n styleUrl: './checklist-block-list-item-action-without-verification.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemActionWithoutVerificationComponent {\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListActionItemContent>>();\r\n\r\n protected onCheckListActionChanged(actionContent: NodeCheckListItemContentAction, actionId: string): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: 'ASSIGN',\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemActionContent(requestData)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItem().content as checkListItemContent\">\r\n <div class=\"action\">\r\n <div class=\"action__header\">\r\n {{ t('CONDITIONAL_LOGIC') | uppercase }}\r\n </div>\r\n <div class=\"action__content\">\r\n <div class=\"cards-container\">\r\n <cui-checklist-block-list-item-action-card\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![0]\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![0].id)\r\n \"\r\n />\r\n <cui-checklist-block-list-item-action-card\r\n [actionInfo]=\"checkListItemContent.actionsAssignee![1]\"\r\n (checkListActionChanged)=\"\r\n onCheckListActionChanged($event, checkListItemContent.actionsAssignee![1].id)\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport type { FormControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n CuiContextMenuModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../../../components';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../../widgets';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-title-control',\r\n imports: [\r\n CuiContextMenuModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextFieldControllerModule,\r\n CuiGeneralControlErrorHintComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-title-control.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockTitleControlComponent {\r\n public readonly control = input.required<FormControl>();\r\n\r\n protected get isTitleError(): boolean {\r\n return this.control().invalid && this.control().dirty;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <cui-form-field>\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"title\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <cui-input-text\r\n [formControl]=\"control()\"\r\n cuiTextFieldId=\"title\"\r\n [cuiTextFieldIsError]=\"isTitleError\"\r\n cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\r\n />\r\n <cui-general-control-error-hint [control]=\"control()\" />\r\n </cui-form-field>\r\n</ng-container>\r\n","import { NgComponentOutlet } from '@angular/common';\r\nimport type { OnInit, Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder } from '@angular/forms';\r\nimport { CuiElementDirective, CuiLetDirective, CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\r\nimport { CuiTreeStructApiService, CuiNodeChecklistApiService, NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiTooltip } from '../../../../directives';\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiDialogService, CuiLabelModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiCheckListBlockService } from '../../services/checklist-block.service';\r\nimport { CuiChecklistBlockTitleControlComponent } from '../checklist-block-title-control';\r\nimport { CuiNodeCheckListItemWithOption } from './checklist-block-list-item-container.options';\r\nimport { CuiEditorBlockComponent, CuiEditorConfig } from '../../../../editor';\r\nimport { CuiDeleteModalComponent } from '../../../../widgets';\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-container',\r\n imports: [\r\n CuiTooltip,\r\n CuiEditorBlockComponent,\r\n CuiChecklistBlockTitleControlComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiElementDirective,\r\n CuiLabelModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n NgComponentOutlet,\r\n TranslocoDirective,\r\n CuiDragPointerDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-container.component.html',\r\n styleUrl: './checklist-block-list-item-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListItemContainerComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly cuiDialogService = inject(CuiDialogService);\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n\r\n protected readonly DEFAULT_CONTROL_DELAY = 700;\r\n\r\n protected readonly isOpen = signal(false);\r\n\r\n public readonly checkListBlockItem = input.required<CuiCheckListBlockItem>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n public readonly index = input<number>(0);\r\n\r\n protected readonly componentId = this.checkListBlockService.componentId;\r\n protected readonly rotate = computed(() => `rotate(${this.isOpen() ? '0deg' : '-90deg'})`);\r\n protected readonly headerText = computed(() =>\r\n this.checkListItem().title ? this.checkListItem().title : this.translocoService.translate('UNTITLED')\r\n );\r\n protected readonly checkListItem = computed<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n () => this.checkListBlockItem().content\r\n );\r\n protected readonly checkListItemComponent = computed<Type<unknown>>(() => this.checkListBlockItem().component);\r\n protected readonly checkListItemWithOptions = computed<CuiNodeCheckListItemWithOption<NodeCheckListItemContentType>>(\r\n () => ({\r\n ...this.checkListItem(),\r\n options: [\r\n {\r\n label: this.translocoService.translate('DUPLICATE'),\r\n icon: 'cuiIconCopy'\r\n },\r\n {\r\n label: this.translocoService.translate('DELETE'),\r\n icon: 'cuiIconTrash',\r\n color: 'var(--cui-danger)',\r\n command: this.openDeleteChecklistNodeModal.bind(this)\r\n }\r\n ]\r\n })\r\n );\r\n protected readonly headerBorderColor = computed(() => {\r\n const checkListItem = this.checkListItem();\r\n\r\n if (checkListItem.content.actionsApprove !== null) {\r\n return 'var(--cui-violet-bg)';\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n return 'var(--cui-cyan-bg)';\r\n }\r\n\r\n return null;\r\n });\r\n protected readonly iconChecklistType = computed(() => {\r\n const checkListItem = this.checkListItem();\r\n\r\n if (checkListItem.content.actionsApprove !== null) {\r\n return 'cuiIconUsersSm';\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in checkListItem.content.actionsAssignee![0]) {\r\n return 'cuiIconChecklist';\r\n }\r\n\r\n return 'cuiIconUserSm';\r\n });\r\n\r\n protected readonly titleControl = this.nonNullableFormBuilder.control(\r\n { value: '', disabled: true },\r\n cuiCreateDefaultValidators()\r\n );\r\n\r\n protected get isTitleEmpty(): boolean {\r\n return !this.titleControl.value;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.titleControl.invalid && this.titleControl.dirty;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initControls();\r\n }\r\n\r\n protected onRowToggle(): void {\r\n this.isOpen.update((prev) => !prev);\r\n }\r\n\r\n protected onAllowDrag(): void {\r\n this.checkListBlockService.toggleDragPermission(true);\r\n }\r\n\r\n protected onProhibitDrag(): void {\r\n this.checkListBlockService.toggleDragPermission(false);\r\n }\r\n\r\n private initControls(): void {\r\n this.initTitleControlValue();\r\n this.initTitleControlSubscription();\r\n }\r\n\r\n private initTitleControlValue(): void {\r\n this.titleControl.enable();\r\n this.titleControl.setValue(this.checkListItem().title ? this.checkListItem().title : '');\r\n }\r\n\r\n private initTitleControlSubscription(): void {\r\n this.titleControl.valueChanges\r\n .pipe(debounceTime(this.DEFAULT_CONTROL_DELAY), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\r\n .subscribe((titleValue) => {\r\n if (this.titleControl.invalid) {\r\n return;\r\n }\r\n\r\n this.nodeCheckListApiService\r\n .updateNodeCheckListItemTitle(this.checkListItem().id, titleValue)\r\n .subscribe(() => {\r\n this.checkListBlockService.updateCheckListItem({\r\n ...this.checkListItem(),\r\n title: titleValue\r\n });\r\n });\r\n });\r\n }\r\n\r\n private openDeleteChecklistNodeModal(): void {\r\n const content = ['THIS_ACTION_WILL_PERMANENTLY_DELETE_THE_ITEM_FROM_CHECKLIST'];\r\n\r\n this.cuiDialogService\r\n .open(CuiDeleteModalComponent, {\r\n data: {\r\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM_QUESTION',\r\n content,\r\n delete: () =>\r\n this.treeStructApiService.deleteTreeStructElement(this.componentId()!, this.checkListItem().id)\r\n }\r\n })\r\n .subscribe(\r\n (data) => data?.canceled || this.checkListBlockService.deleteCheckListItem(this.checkListItem().id)\r\n );\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItemWithOptions() as checkListItem\">\r\n <header\r\n class=\"header\"\r\n [style.border-left-color]=\"headerBorderColor()\"\r\n [class.header__opened]=\"isOpen()\"\r\n >\r\n <button\r\n class=\"icon-drag\"\r\n cuiButton\r\n cuiDragPointer\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [icon]=\"'cuiIconDragHandleDots'\"\r\n (mouseenter)=\"onAllowDrag()\"\r\n (mouseleave)=\"onProhibitDrag()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n [style.transform]=\"rotate()\"\r\n icon=\"cuiIconCaretDownFillXxs\"\r\n (click)=\"onRowToggle()\"\r\n ></button>\r\n <cui-svg\r\n [icon]=\"iconChecklistType()\"\r\n color=\"var(--cui-base-500)\"\r\n />\r\n <div class=\"header__content\">\r\n <div class=\"header__numeration\">{{ index() }}.</div>\r\n <div class=\"header__text\">{{ headerText() }}</div>\r\n </div>\r\n @if (isTitleEmpty) {\r\n <cui-svg\r\n [cuiTooltip]=\"t('TITLE_IS_REQUIRED')\"\r\n icon=\"cuiIconAlertTriangle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <button\r\n #actionButton=\"elementRef\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconMoreVertical\"\r\n class=\"list__context-menu-button\"\r\n ></button>\r\n <cui-context-menu\r\n [items]=\"checkListItem.options\"\r\n [target]=\"actionButton.nativeElement\"\r\n />\r\n </header>\r\n @if (isOpen()) {\r\n <div class=\"info\">\r\n <cui-checklist-block-title-control [control]=\"titleControl\" />\r\n <cui-editor-block\r\n [config]=\"config()\"\r\n [editorId]=\"checkListItem.textContainerId!\"\r\n [title]=\"titleControl.value\"\r\n />\r\n </div>\r\n <ng-container\r\n [ngComponentOutlet]=\"checkListItemComponent()\"\r\n [ngComponentOutletInputs]=\"{\r\n checkListItem: checkListItem\r\n }\"\r\n />\r\n }\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\r\nimport type { FormArray, FormGroup } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport {\r\n CuiAlertService,\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiInputModule,\r\n CuiInputNumberModule,\r\n CuiSvgModule,\r\n CuiTextareaModule\r\n} from '../../../../components';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\n\r\nimport type { CuiEvaluationCriteriaGroup } from '../checklist-block-list-item-evaluation';\r\n\r\nimport { CuiDragPointerDirective } from '@cuby-ui/cdk';\r\nimport { CuiGeneralControlErrorHintComponent } from '../../../general-control-error-hint';\r\nimport type { CuiEvaluationCriteriaData } from './checklist-block-list-item-evaluation-criteria.options';\r\n\r\n@Component({\r\n selector: 'li[cuiChecklistBlockListItemEvaluationCriteria]',\r\n imports: [\r\n CuiButtonModule,\r\n CuiIconButtonModule,\r\n CuiInputModule,\r\n CuiLetDirective,\r\n CuiSvgModule,\r\n CuiTextareaModule,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiInputNumberModule,\r\n CuiDragPointerDirective,\r\n CuiGeneralControlErrorHintComponent\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-evaluation-criteria.component.html',\r\n styleUrl: './checklist-block-list-item-evaluation-criteria.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationCriteriaComponent {\r\n private readonly cuiAlertService = inject(CuiAlertService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n private readonly EVALUATION_ALREADY_EXIST = `EVALUATION_ALREADY_EXIST`;\r\n\r\n private previousData: CuiNullable<CuiEvaluationCriteriaData> = null;\r\n\r\n protected readonly isEditMode = signal(false);\r\n protected readonly isNew = computed(() => this.criteriaGroup().controls.isNew.value);\r\n protected readonly gap = computed(() => (this.isEditMode() ? 8 : 0));\r\n protected readonly isLoading = computed(() => this.loadingIds()[this.criteriaGroup().controls.id.value]);\r\n protected readonly isDragEnabled = computed(() => !this.isEditMode() && !this.isLoading());\r\n\r\n protected get isEvaluationInvalid(): boolean {\r\n return this.criteriaGroup().controls.evaluation.invalid && this.isEditMode();\r\n }\r\n\r\n protected get isCriteriaInvalid(): boolean {\r\n return this.criteriaGroup().controls.criteria.invalid && this.isEditMode();\r\n }\r\n\r\n public readonly loadingIds = input.required<Record<string, boolean>>();\r\n public readonly index = input.required<number>();\r\n public readonly criteriaGroup = input.required<FormGroup<CuiEvaluationCriteriaGroup>>();\r\n public readonly evaluationCriteriaFormArray = input.required<FormArray<FormGroup>>();\r\n\r\n public readonly saveClicked = output<CuiEvaluationCriteriaGroup>();\r\n public readonly deleteClicked = output<string>();\r\n public readonly cancelClicked = output();\r\n\r\n constructor() {\r\n this.initNewEvaluationCriteriaEffect();\r\n this.initEditModeEffect();\r\n }\r\n\r\n protected onSave(): void {\r\n if (this.criteriaGroup().invalid) {\r\n return;\r\n }\r\n\r\n const evaluation = `${this.criteriaGroup().controls.evaluation.value}`;\r\n\r\n if (this.checkIsEvaluationCriteriaExist(evaluation)) {\r\n this.cuiAlertService\r\n .open(this.translocoService.translate(this.EVALUATION_ALREADY_EXIST, { evaluation }), {\r\n status: 'error'\r\n })\r\n .subscribe();\r\n\r\n return;\r\n }\r\n\r\n this.isEditMode.update((prev) => !prev);\r\n this.saveClicked.emit(this.criteriaGroup().controls);\r\n }\r\n\r\n protected onDelete(): void {\r\n const id = this.criteriaGroup().controls.id.value;\r\n\r\n this.deleteClicked.emit(id);\r\n }\r\n\r\n protected onCancel(): void {\r\n if (this.isNew()) {\r\n this.cancelClicked.emit();\r\n }\r\n\r\n this.isEditMode.update((prev) => !prev);\r\n\r\n if (!this.previousData) {\r\n return;\r\n }\r\n\r\n this.criteriaGroup().setValue({\r\n ...this.criteriaGroup().getRawValue(),\r\n ...this.previousData\r\n });\r\n }\r\n\r\n protected onToggleEditMode(): void {\r\n const { criteria, evaluation } = this.criteriaGroup().getRawValue();\r\n\r\n this.previousData = { criteria, evaluation };\r\n this.isEditMode.update((prev) => !prev);\r\n }\r\n\r\n // TODO: Компонент должен был быть построен исключительно на реактивных формах\r\n private initEditModeEffect(): void {\r\n effect(() => this.criteriaGroup()[this.isEditMode() ? 'enable' : 'disable']());\r\n }\r\n\r\n private initNewEvaluationCriteriaEffect(): void {\r\n effect(() => this.isEditMode.set(this.isNew()), { allowSignalWrites: true });\r\n }\r\n\r\n private checkIsEvaluationCriteriaExist(evaluation: string): boolean {\r\n const controls = this.evaluationCriteriaFormArray().controls;\r\n\r\n return controls.some((control: FormGroup<CuiEvaluationCriteriaGroup>) => {\r\n if (control.controls.id.value === this.criteriaGroup().controls.id.value) {\r\n return false;\r\n }\r\n\r\n return `${control.get('evaluation')?.value}` === evaluation;\r\n });\r\n }\r\n}\r\n","<div *transloco=\"let t\">\r\n <form\r\n *cuiLet=\"criteriaGroup() as form\"\r\n [formGroup]=\"form\"\r\n [class.form_edit]=\"isEditMode()\"\r\n clas=\"form\"\r\n >\r\n <div class=\"content\">\r\n <span class=\"index\">{{ index() }}.</span>\r\n @if (!isEditMode()) {\r\n <cui-svg\r\n cuiDragPointer\r\n icon=\"cuiIconDragHandleDots\"\r\n color=\"var(--cui-base-500)\"\r\n class=\"icon\"\r\n />\r\n }\r\n <div\r\n style.gap=\"{{gap()}}px\"\r\n class=\"wrapper\"\r\n >\r\n <cui-input-number\r\n formControlName=\"evaluation\"\r\n cuiTextFieldPlaceholder=\"0\"\r\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\r\n [min]=\"1\"\r\n [max]=\"99\"\r\n class=\"input-number\"\r\n />\r\n <textarea\r\n cuiTextarea\r\n formControlName=\"criteria\"\r\n [rows]=\"1\"\r\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\r\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\r\n class=\"textarea\"\r\n ></textarea>\r\n </div>\r\n @if (isEditMode()) {\r\n <button\r\n type=\"submit\"\r\n cuiIconButton\r\n icon=\"cuiIconCheck\"\r\n color=\"var(--cui-success)\"\r\n [disabled]=\"form.invalid\"\r\n class=\"button\"\r\n (click)=\"onSave()\"\r\n ></button>\r\n <button\r\n type=\"button\"\r\n cuiIconButton\r\n icon=\"cuiIconXCircle\"\r\n color=\"var(--cui-danger)\"\r\n class=\"button\"\r\n (click)=\"onCancel()\"\r\n ></button>\r\n } @else {\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconEdit\"\r\n [disabled]=\"isLoading()\"\r\n (click)=\"onToggleEditMode()\"\r\n ></button>\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconTrash\"\r\n [isLoaderShown]=\"isLoading()\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n }\r\n </div>\r\n <cui-general-control-error-hint\r\n [control]=\"form.controls.criteria\"\r\n class=\"error-hint\"\r\n />\r\n </form>\r\n</div>\r\n","import type { OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, signal } from '@angular/core';\r\nimport type { FormGroup } from '@angular/forms';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { CuiNullable, CuiDragDropData, CuiDragDropDirective, CuiDragListDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, of, Subject, switchMap, takeUntil } from 'rxjs';\r\nimport { CuiNodeChecklistApiService, NodeCheckListEvaluationCriteria, NodeCheckListEvaluationItemContent, NodeCheckListItem, NodeCheckListItemContentAction, NodeCheckListItemSwitchContentPointer, NodeCheckListItemSwitchContentRequestParams } from '@cuby-ui/api';\r\n\r\nimport { CuiCheckListBlockListItemEvaluationCriteriaComponent } from '../checklist-block-list-item-evaluation-criteria';\r\nimport {\r\n CuiButtonModule,\r\n CuiCheckboxModule,\r\n CuiContextMenuModule,\r\n CuiDialogService,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextareaModule,\r\n CuiToggleModule,\r\n CuiEmptyStateComponent\r\n} from '../../../../components';\r\nimport { CuiDeleteModalComponent } from '../../../../widgets';\r\nimport { CuiTextFieldControllerModule } from '../../../../directives';\r\nimport { cuiCreateDefaultValidators } from '../../../../utils';\r\n\r\nimport type {\r\n CuiEvaluationCriteriaElementData,\r\n CuiEvaluationCriteriaGroup\r\n} from './checklist-block-list-item-evaluation.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list-item-evaluation',\r\n imports: [\r\n CuiCheckListBlockListItemEvaluationCriteriaComponent,\r\n CuiButtonModule,\r\n CuiCheckboxModule,\r\n CuiContextMenuModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiTextareaModule,\r\n CuiTextFieldControllerModule,\r\n CuiToggleModule,\r\n CuiEmptyStateComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CuiDragDropDirective,\r\n CuiDragListDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list-item-evaluation.component.html',\r\n styleUrl: './checklist-block-list-item-evaluation.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCheckListBlockListItemEvaluationComponent implements OnInit {\r\n private readonly nonNullableFormBuilder = inject(NonNullableFormBuilder);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n private readonly cuiDialogService = inject(CuiDialogService);\r\n\r\n private readonly isAvailableObserver = new Subject<boolean>();\r\n\r\n protected readonly photoFormGroup = this.nonNullableFormBuilder.group({\r\n isEnable: false,\r\n isRequired: {\r\n value: false,\r\n disabled: true\r\n }\r\n });\r\n protected readonly commentFormGroup = this.nonNullableFormBuilder.group({\r\n isEnable: false,\r\n isRequired: {\r\n value: false,\r\n disabled: true\r\n }\r\n });\r\n protected readonly evaluationCriteriaFormArray = this.nonNullableFormBuilder.array<FormGroup>([]);\r\n\r\n protected readonly loadingIds = signal<Record<string, boolean>>({});\r\n protected readonly isAddButtonDisabled = signal(false);\r\n\r\n private readonly assignee = computed(() => this.checkListItem().content.actionsAssignee![0]);\r\n protected readonly attachmentPhotoAction = computed<NodeCheckListItemContentAction>(\r\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'ATTACHMENT_PHOTO')!\r\n );\r\n protected readonly textAreaAction = computed<NodeCheckListItemContentAction>(\r\n () => this.assignee().actions.find((contentAction) => contentAction.contentActionType === 'TEXT_AREA')!\r\n );\r\n\r\n public readonly checkListItem = input.required<NodeCheckListItem<NodeCheckListEvaluationItemContent>>();\r\n\r\n protected getPointer(currentIndex: number): NodeCheckListItemSwitchContentPointer {\r\n return currentIndex === 0\r\n ? NodeCheckListItemSwitchContentPointer.BEFORE\r\n : NodeCheckListItemSwitchContentPointer.AFTER;\r\n }\r\n\r\n protected getTargetIndex(currentIndex: number): number {\r\n return currentIndex === 0 ? 1 : currentIndex - 1;\r\n }\r\n\r\n protected onDrop(event: CuiDragDropData): void {\r\n const { prevIndex, index } = event;\r\n\r\n if (prevIndex === index) {\r\n return;\r\n }\r\n\r\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, prevIndex, index);\r\n const movingElementId: string = this.evaluationCriteriaFormArray.at(index).value.id;\r\n const targetItemId: string = this.evaluationCriteriaFormArray.at(this.getTargetIndex(index)).value.id;\r\n const pointer: NodeCheckListItemSwitchContentPointer = this.getPointer(index);\r\n\r\n const requestBody: NodeCheckListItemSwitchContentRequestParams = {\r\n nodeCheckListId: this.checkListItem().id,\r\n listEvaluationId: this.assignee().id,\r\n movingElementId,\r\n targetItemId,\r\n pointer\r\n };\r\n\r\n this.nodeCheckListApiService.updateNodeCheckListItemSwitchContent(requestBody).subscribe({\r\n error: () => {\r\n this.moveItemInArray(this.evaluationCriteriaFormArray.controls, index, prevIndex);\r\n this.cdRef.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n protected onAddEvaluationCriteriaItem(): void {\r\n const evaluationItemControl = this.createEvaluationFormGroup();\r\n\r\n this.isAddButtonDisabled.set(true);\r\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n }\r\n\r\n protected onSaveEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const isNew = group.isNew.value;\r\n\r\n if (isNew) {\r\n this.addEvaluationCriteria(group);\r\n\r\n return;\r\n }\r\n\r\n this.updateEvaluationCriteria(group);\r\n }\r\n\r\n protected onCancelNewEvaluationCriteria(): void {\r\n const lastIndex = this.evaluationCriteriaFormArray.length - 1;\r\n\r\n this.isAddButtonDisabled.set(false);\r\n this.evaluationCriteriaFormArray.removeAt(lastIndex);\r\n }\r\n\r\n protected openModalDeleteEvaluationCriteria(id: string): void {\r\n const content = ['DELETE_EVALUATION_CHECKLIST_ITEM_CONFIRMATION_TEXT'];\r\n const criteria = this.findExistingEvaluationCriteria(id);\r\n\r\n if (!criteria?.id) {\r\n return;\r\n }\r\n\r\n this.loadingIds.update((ids) => ({ ...ids, [criteria.id]: true }));\r\n this.cuiDialogService\r\n .open(CuiDeleteModalComponent, {\r\n data: {\r\n title: 'DELETE_EVALUATION_CHECKLIST_ITEM',\r\n content,\r\n delete: () =>\r\n this.nodeCheckListApiService\r\n .deleteEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria.id)\r\n .pipe(\r\n switchMap((checkListItem) => {\r\n const index = this.evaluationCriteriaFormArray.controls.findIndex(\r\n (control) => control.value.id === id\r\n );\r\n\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n this.evaluationCriteriaFormArray.removeAt(index);\r\n\r\n return of(null);\r\n })\r\n )\r\n }\r\n })\r\n .subscribe(() => this.completeEvaluationCriteriaDeletion(criteria));\r\n }\r\n\r\n protected completeEvaluationCriteriaDeletion(criteria: NodeCheckListEvaluationCriteria): void {\r\n this.loadingIds.update((ids) => {\r\n delete ids[criteria.id];\r\n\r\n return { ...ids };\r\n });\r\n }\r\n\r\n private onCheckListActionChanged(actionId: string, actionContent: NodeCheckListItemContentAction): void {\r\n const requestData = {\r\n nodeCheckListId: this.checkListItem().id,\r\n assigneePurposeType: 'ASSIGN',\r\n actionId,\r\n contentId: actionContent.id,\r\n isEnable: actionContent.isEnable,\r\n isRequired: actionContent.isRequired\r\n };\r\n\r\n this.nodeCheckListApiService.updateNodeCheckListItemActionContent(requestData).subscribe((checkListItem) => {\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initEvaluationFormValues();\r\n }\r\n\r\n private initEvaluationFormValues(): void {\r\n this.evaluationCriteriaFormArray.clear();\r\n this.photoFormGroup.patchValue({\r\n isEnable: this.attachmentPhotoAction().isEnable,\r\n isRequired: this.attachmentPhotoAction().isRequired\r\n });\r\n this.commentFormGroup.patchValue({\r\n isEnable: this.textAreaAction().isEnable,\r\n isRequired: this.textAreaAction().isRequired\r\n });\r\n\r\n if (this.attachmentPhotoAction().isEnable) {\r\n this.photoFormGroup.controls.isRequired.enable();\r\n }\r\n\r\n if (this.textAreaAction().isEnable) {\r\n this.commentFormGroup.controls.isRequired.enable();\r\n }\r\n\r\n this.initActionFormSegmentsSubscriptions();\r\n\r\n this.assignee().acceptanceCriteriaEvaluations.forEach((evaluationCriteria: NodeCheckListEvaluationCriteria) => {\r\n const evaluationItemControl = this.createEvaluationFormGroup({\r\n isNew: false,\r\n criteria: evaluationCriteria.criteria,\r\n evaluation: evaluationCriteria.evaluation,\r\n id: evaluationCriteria.id\r\n });\r\n\r\n this.evaluationCriteriaFormArray.push(evaluationItemControl);\r\n });\r\n }\r\n\r\n private initActionFormSegmentsSubscriptions(): void {\r\n this.initPhotoGroupSubscription();\r\n this.initCommentGroupSubscription();\r\n }\r\n\r\n private initPhotoGroupSubscription(): void {\r\n this.photoFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.photoFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.photoFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.attachmentPhotoAction().id,\r\n contentActionType: this.attachmentPhotoAction().contentActionType,\r\n ...this.photoFormGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.photoFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.attachmentPhotoAction().id,\r\n contentActionType: this.attachmentPhotoAction().contentActionType,\r\n ...this.photoFormGroup.getRawValue()\r\n });\r\n });\r\n }\r\n\r\n private initCommentGroupSubscription(): void {\r\n this.commentFormGroup.valueChanges.pipe(takeUntil(this.isAvailableObserver)).subscribe((value) => {\r\n if (!value.isEnable) {\r\n this.commentFormGroup.get('isRequired')?.setValue(false, { emitEvent: false });\r\n this.commentFormGroup.get('isRequired')?.disable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.textAreaAction().id,\r\n contentActionType: this.textAreaAction().contentActionType,\r\n ...this.commentFormGroup.getRawValue()\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.commentFormGroup.get('isRequired')?.enable({ emitEvent: false });\r\n this.onCheckListActionChanged(this.assignee().id, {\r\n id: this.textAreaAction().id,\r\n contentActionType: this.textAreaAction().contentActionType,\r\n ...this.commentFormGroup.getRawValue()\r\n });\r\n });\r\n }\r\n\r\n private updateEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const evaluation = group.evaluation.value;\r\n const criteria = group.criteria.value;\r\n const id = group.id.value;\r\n\r\n this.nodeCheckListApiService\r\n .updateEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, id, criteria, evaluation)\r\n .subscribe((checkListItem) => this.checkListBlockService.updateCheckListItem(checkListItem));\r\n }\r\n\r\n private addEvaluationCriteria(group: CuiEvaluationCriteriaGroup): void {\r\n const evaluation = group.evaluation.value;\r\n const criteria = group.criteria.value;\r\n\r\n this.nodeCheckListApiService\r\n .addEvaluationCriteriaItem(this.checkListItem().id, this.assignee().id, criteria, evaluation)\r\n .pipe(finalize(() => this.isAddButtonDisabled.set(false)))\r\n .subscribe((checkListItem) => this.updateCreatedEvaluationCriteria(checkListItem));\r\n }\r\n\r\n private updateCreatedEvaluationCriteria(\r\n checkListItem: NodeCheckListItem<NodeCheckListEvaluationItemContent>\r\n ): void {\r\n const acceptanceCriteriaEvaluations = checkListItem.content.actionsAssignee![0].acceptanceCriteriaEvaluations;\r\n const id = acceptanceCriteriaEvaluations.at(-1)?.id;\r\n const control = this.evaluationCriteriaFormArray.controls.at(-1)?.getRawValue();\r\n const createdControl = this.createEvaluationFormGroup({ ...control, id, isNew: false });\r\n\r\n this.evaluationCriteriaFormArray.removeAt(-1);\r\n this.evaluationCriteriaFormArray.push(createdControl);\r\n this.checkListBlockService.updateCheckListItem(checkListItem);\r\n }\r\n\r\n private createEvaluationFormGroup({\r\n id,\r\n criteria = '',\r\n evaluation = null,\r\n isNew = true\r\n }: CuiEvaluationCriteriaElementData = {}): FormGroup {\r\n return this.nonNullableFormBuilder.group({\r\n id: [id],\r\n criteria: [criteria, cuiCreateDefaultValidators({ maxLength: 500 })],\r\n evaluation: [evaluation, [Validators.required]],\r\n isNew: [isNew]\r\n });\r\n }\r\n\r\n private findExistingEvaluationCriteria(id: string): CuiNullable<NodeCheckListEvaluationCriteria> {\r\n return (\r\n this.assignee().acceptanceCriteriaEvaluations.find(\r\n (evaluationCriteria: NodeCheckListEvaluationCriteria) => evaluationCriteria.id === id\r\n ) || null\r\n );\r\n }\r\n\r\n private moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\r\n if (fromIndex === toIndex) {\r\n return;\r\n }\r\n\r\n const item = array[fromIndex];\r\n\r\n array.splice(fromIndex, 1);\r\n array.splice(toIndex, 0, item);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"action\">\r\n <div class=\"action__inputs-container\">\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"photoFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('PHOTO') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"action__input\"\r\n [formGroup]=\"commentFormGroup\"\r\n >\r\n <label cuiLabel>\r\n <input\r\n cuiCheckbox\r\n type=\"checkbox\"\r\n formControlName=\"isEnable\"\r\n />\r\n {{ t('COMMENT') }}\r\n </label>\r\n <label cuiLabel>\r\n <input\r\n cuiToggle\r\n type=\"checkbox\"\r\n formControlName=\"isRequired\"\r\n />\r\n {{ t('REQUIRED') }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"action__criteria-title-container\">\r\n <label\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n for=\"evaluationCriteria\"\r\n >\r\n {{ t('EVALUATION_CRITERIA') }}\r\n </label>\r\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\r\n </div>\r\n <ul\r\n cuiDragList\r\n class=\"list\"\r\n >\r\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\r\n <li\r\n cuiChecklistBlockListItemEvaluationCriteria\r\n [index]=\"index + 1\"\r\n cuiDragDrop\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (elementDragged)=\"onDrop($event)\"\r\n [criteriaGroup]=\"control\"\r\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\r\n [loadingIds]=\"loadingIds()\"\r\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\r\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\r\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\r\n ></li>\r\n } @empty {\r\n <li\r\n cuiEmptyState\r\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\r\n ></li>\r\n }\r\n </ul>\r\n <div class=\"action__footer\">\r\n <button\r\n cuiButton\r\n size=\"xxs\"\r\n appearance=\"flat\"\r\n icon=\"cuiIconPlus\"\r\n type=\"button\"\r\n [disabled]=\"isAddButtonDisabled()\"\r\n (click)=\"onAddEvaluationCriteriaItem()\"\r\n >\r\n {{ t('NEW_OPTION') }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { Type } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { CuiTreeStructApiService, CuiTreeStructNavigatorApiService, MovingType } from '@cuby-ui/api';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize, switchMap } from 'rxjs';\r\nimport { NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\nimport { CuiDragDropData, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective } from '@cuby-ui/cdk';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiEmptyStateComponent } from '../../../../components';\r\nimport { CuiEditorConfig } from '../../../../editor';\r\nimport type { CuiCheckListBlockItem } from '../../checklist-block.options';\r\nimport { CuiCheckListBlockService } from '../../services';\r\nimport { CuiCheckListBlockListItemActionWithVerificationComponent } from '../checklist-block-list-item-action-with-verification';\r\nimport { CuiCheckListBlockListItemActionWithoutVerificationComponent } from '../checklist-block-list-item-action-without-verification';\r\nimport { CuiChecklistBlockListItemContainerComponent } from '../checklist-block-list-item-container';\r\nimport { CuiCheckListBlockListItemEvaluationComponent } from '../checklist-block-list-item-evaluation';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block-list',\r\n imports: [\r\n CuiChecklistBlockListItemContainerComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiLetDirective,\r\n CuiEmptyStateComponent,\r\n NgTemplateOutlet,\r\n TranslocoDirective,\r\n CuiDragDropDirective,\r\n CuiHandleScrollDirective,\r\n CuiDragListDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block-list.component.html',\r\n styleUrl: './checklist-block-list.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiChecklistBlockListComponent {\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n protected readonly isDragAvailable = this.checkListBlockService.isDragAvailable;\r\n protected readonly checkListItemActionWithVerification = CuiCheckListBlockListItemActionWithVerificationComponent;\r\n protected readonly checkListItemActionWithoutVerification =\r\n CuiCheckListBlockListItemActionWithoutVerificationComponent;\r\n protected readonly checkListItemEvaluation = CuiCheckListBlockListItemEvaluationComponent;\r\n\r\n protected readonly componentId = this.checkListBlockService.componentId;\r\n protected readonly isLoading = signal<boolean>(false);\r\n protected readonly isDragEnabled = computed(() => !this.isLoading() && this.isDragAvailable());\r\n protected readonly checkListItemsWithComponents = computed<CuiCheckListBlockItem[]>(() => {\r\n if (!this.checkListItems()) {\r\n return [];\r\n }\r\n\r\n return this.checkListItems()!.map((element) => ({\r\n id: element.id,\r\n content: element,\r\n component: this.getNodeCheckListItemComponent(element)\r\n }));\r\n });\r\n\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n protected moveTreeStruct(data: CuiDragDropData, element: CuiCheckListBlockItem): void {\r\n const { targetElement, pointer, index, prevIndex } = data;\r\n\r\n if (prevIndex === index) {\r\n return;\r\n }\r\n\r\n this.isLoading.set(true);\r\n this.treeStructNavigatorApiService\r\n .moveElement({\r\n type: MovingType.TARGET_NODE,\r\n targetItemId: targetElement.dataset['id']!,\r\n treeStructTargetItemId: targetElement.dataset['parentId']!,\r\n pointer,\r\n movableItemId: element.id,\r\n treeStructMovableItemId: this.componentId()!\r\n })\r\n .pipe(\r\n switchMap(() =>\r\n this.treeStructApiService.getById<NodeCheckListItem<NodeCheckListItemContentType>>(\r\n this.componentId()!\r\n )\r\n ),\r\n finalize(() => this.isLoading.set(false))\r\n )\r\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n }\r\n\r\n private getNodeCheckListItemComponent(item: NodeCheckListItem<NodeCheckListItemContentType>): Type<unknown> {\r\n if (item.content.actionsApprove !== null) {\r\n return this.checkListItemActionWithVerification;\r\n }\r\n\r\n if ('acceptanceCriteriaEvaluations' in item.content.actionsAssignee![0]) {\r\n return this.checkListItemEvaluation;\r\n }\r\n\r\n return this.checkListItemActionWithoutVerification;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <ng-container *cuiLet=\"checkListItemsWithComponents() as checkListItemsWithComponents\">\r\n @if (checkListItemsWithComponents?.length) {\r\n <ul\r\n class=\"list__items\"\r\n #list\r\n cuiDragList\r\n >\r\n <ng-container *ngTemplateOutlet=\"items; context: { $implicit: checkListItemsWithComponents }\" />\r\n <ng-template\r\n #items\r\n let-items\r\n let-isHidden=\"isHidden\"\r\n >\r\n @for (item of items; track item.id; let index = $index) {\r\n <li\r\n [attr.data-id]=\"item.content.id\"\r\n [attr.data-parent-id]=\"componentId()\"\r\n [hidden]=\"isHidden\"\r\n cuiHandleScroll\r\n cuiDragDrop\r\n class=\"list__item\"\r\n [class.list__item_disabled]=\"isLoading()\"\r\n (elementDragged)=\"moveTreeStruct($event, item)\"\r\n >\r\n <cui-checklist-block-list-item-container\r\n [checkListBlockItem]=\"item\"\r\n [index]=\"index + 1\"\r\n [config]=\"config()\"\r\n />\r\n </li>\r\n }\r\n </ng-template>\r\n </ul>\r\n } @else {\r\n <cui-empty-state [subtitle]=\"t('NO_CHECKLIST_ITEMS')\" />\r\n }\r\n </ng-container>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CuiElementDirective, CuiLetDirective } from '@cuby-ui/cdk';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\nimport { } from '@cuby-ui/api';\r\nimport { CuiNodeChecklistApiService, CuiTreeStructApiService, NodeCheckListItem, NodeCheckListItemContentType } from '@cuby-ui/api';\r\n\r\nimport { CuiButtonModule, CuiContextMenuModule, CuiContentWrapperComponent } from '../../components';\r\nimport { CuiCheckListBlockItemType } from './checklist-block.options';\r\nimport { CuiChecklistBlockListComponent } from './components';\r\nimport { CuiCheckListBlockService } from './services';\r\nimport { CuiContextMenuItem } from '../../interfaces';\r\nimport { CuiEditorConfig } from '../../editor/interfaces';\r\n\r\n@Component({\r\n selector: 'cui-checklist-block, [cuiCheckListBlock]',\r\n imports: [\r\n CuiChecklistBlockListComponent,\r\n CuiContentWrapperComponent,\r\n CuiButtonModule,\r\n CuiContextMenuModule,\r\n CuiElementDirective,\r\n CuiLetDirective,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './checklist-block.component.html',\r\n styleUrls: ['./checklist-block.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiCheckListBlockService]\r\n})\r\nexport class CuiChecklistBlockComponent {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly treeStructApiService = inject(CuiTreeStructApiService);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly nodeCheckListApiService = inject(CuiNodeChecklistApiService);\r\n private readonly checkListBlockService = inject(CuiCheckListBlockService);\r\n\r\n protected readonly CHECKLIST_BLOCK_SELECT_OPTIONS: CuiContextMenuItem[] = [\r\n {\r\n label: this.translocoService.translate('ASSIGNEE_APPROVAL'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITHOUT_VERIFICATION)\r\n },\r\n {\r\n label: this.translocoService.translate('DOUBLE_CHECK_APPROVAL'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.WITH_VERIFICATION)\r\n },\r\n {\r\n label: this.translocoService.translate('EVALUATION_OPTIONS'),\r\n command: () => this.addCheckListItem(CuiCheckListBlockItemType.EVALUATION)\r\n }\r\n ];\r\n\r\n protected readonly checkListItems = this.checkListBlockService.checkListItems;\r\n protected readonly isLoading = signal<boolean>(false);\r\n\r\n public readonly componentId = input.required<string>();\r\n public readonly config = input.required<CuiEditorConfig>();\r\n\r\n constructor() {\r\n this.initNodeCheckListBlock();\r\n }\r\n\r\n private initNodeCheckListBlock(): void {\r\n effect(() => {\r\n this.checkListBlockService.setComponentId(this.componentId());\r\n this.treeStructApiService\r\n .getById<NodeCheckListItem<NodeCheckListItemContentType>>(this.componentId())\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((treeStruct) => this.checkListBlockService.setCheckListItems(treeStruct.elements));\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n private addCheckListItem(type: CuiCheckListBlockItemType): void {\r\n this.isLoading.set(true);\r\n this.nodeCheckListApiService\r\n .addNodeCheckListItem({\r\n treeStructContainerCheckListId: this.componentId(),\r\n title: 'New checklist item',\r\n type_operations: type\r\n })\r\n .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.isLoading.set(false)))\r\n .subscribe((checkListItem) => this.checkListBlockService.addCheckListItem(checkListItem));\r\n }\r\n}\r\n","<cui-content-wrapper\r\n *transloco=\"let t\"\r\n backgroundColor=\"var(--cui-base-10)\"\r\n [gap]=\"16\"\r\n>\r\n <ng-container *cuiLet=\"checkListItems() as checkListItems\">\r\n <header class=\"header\">\r\n <h2 class=\"heading\">{{ t('CHECKLIST') }}</h2>\r\n\r\n @if (checkListItems) {\r\n <span class=\"item\">{{ checkListItems?.length }} {{ t('ITEM_VARIANT') }}</span>\r\n }\r\n </header>\r\n <cui-content-wrapper>\r\n <cui-checklist-block-list [config]=\"config()\" />\r\n </cui-content-wrapper>\r\n <div>\r\n <button\r\n #actionButton=\"elementRef\"\r\n cuiElement\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"flat\"\r\n size=\"xxs\"\r\n icon=\"cuiIconPlus\"\r\n >\r\n {{ t('ADD_NEW_ITEM') }}\r\n </button>\r\n <cui-context-menu\r\n [items]=\"CHECKLIST_BLOCK_SELECT_OPTIONS\"\r\n [target]=\"actionButton.nativeElement\"\r\n />\r\n </div>\r\n </ng-container>\r\n</cui-content-wrapper>\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport type { Instruction, StorageObject, Criterion } from \"@cuby-ui/api\";\r\n\r\nexport const UTILITY_MODAL_SERVICE_TOKEN = new InjectionToken<UtilityModalService<UtilityElement>>('UTILITY_MODAL_SERVICE_TOKEN');\r\n\r\nexport interface UtilityModalService<T extends UtilityElement> {\r\n createUtility(id: string): Observable<StorageObject<T>>;\r\n changeTitle(utilityId: string, title: string): Observable<void>;\r\n changeDescription?(utilityId: string, shortDescription: string): Observable<void>;\r\n unbindUtility(id: string): Observable<StorageObject<T>>;\r\n deleteUtility(utility: StorageObject<T>): Observable<void>;\r\n}\r\n\r\nexport type UtilityElement = Instruction | Criterion;\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport type { ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { FilesUploader, takeCaptureFromVideo } from '@cuby-ui/cdk';\r\n\r\nimport { CuiAlertService } from '../../components';\r\n\r\n@Component({\r\n selector: 'cui-utility-thumbnail',\r\n imports: [TranslocoDirective],\r\n standalone: true,\r\n templateUrl: 'utility-thumbnail.component.html',\r\n styleUrl: 'utility-thumbnail.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityThumbnailComponent {\r\n private readonly cuiAlertService = inject(CuiAlertService);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n\r\n protected readonly MAX_FILE_SIZE = 20971520;\r\n\r\n protected readonly thumbnailUrl = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.resource) {\r\n return thumbnail.resource;\r\n }\r\n\r\n return this.baseResourceUrl() + thumbnail!.fileId!;\r\n });\r\n protected readonly uploadButtonName = computed(() => {\r\n const thumbnail = this.thumbnail();\r\n\r\n if (thumbnail?.name) {\r\n return this.translocoService.translate('REPLACE_FILE');\r\n }\r\n\r\n return this.translocoService.translate('UPLOAD_FILE');\r\n });\r\n\r\n public readonly thumbnail = model.required<CuiNullable<ResourceFragment>>();\r\n public readonly framerId = input.required<string>();\r\n public readonly baseResourceUrl = input.required<string>();\r\n\r\n protected onSelectFile(): void {\r\n const types = 'image/jpg, image/jpeg, image/png, video/mp4';\r\n\r\n FilesUploader.uploadFile(types).then((files) => this.getFile(files));\r\n }\r\n\r\n protected onRemoveThumbnail(): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n this.frameApiService.deleteResource(frameId, fragmentId).subscribe(() => {\r\n this.thumbnail.update((prev) => ({ ...prev!, fileId: null, name: null, resource: null }));\r\n });\r\n }\r\n\r\n private getFile(files: FileList): void {\r\n const file = files.item(0);\r\n\r\n if (!file) {\r\n return;\r\n }\r\n\r\n if (file.size > this.MAX_FILE_SIZE) {\r\n this.cuiAlertService\r\n .open(this.translocoService.translate('INVALID_FILE_SIZE'), {\r\n status: 'error'\r\n })\r\n .subscribe();\r\n\r\n return;\r\n }\r\n\r\n const isVideo = file.name.split('.').at(-1) === 'mp4';\r\n const url = URL.createObjectURL(file);\r\n\r\n if (isVideo) {\r\n this.getCaptureFromVideo(url, file);\r\n } else {\r\n this.thumbnail.update((prev) => ({ ...prev!, name: file.name, resource: url }));\r\n }\r\n\r\n this.uploadFile(file);\r\n }\r\n\r\n private uploadFile(file: File): void {\r\n const frameId = this.framerId();\r\n const fragmentId = this.thumbnail()?.id;\r\n\r\n if (!frameId || !fragmentId) {\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('resource', file);\r\n\r\n this.frameApiService.uploadResource(formData, frameId, fragmentId).subscribe();\r\n }\r\n\r\n private getCaptureFromVideo(url: string, file?: File): void {\r\n takeCaptureFromVideo(url).then((capture) => {\r\n this.thumbnail.update((prev) => ({\r\n ...prev!,\r\n name: (file?.name || prev?.name)!,\r\n resource: capture\r\n }));\r\n });\r\n }\r\n}\r\n","<section\r\n *transloco=\"let t\"\r\n class=\"file\"\r\n>\r\n <span class=\"title\">{{ t('THUMBNAIL') }}</span>\r\n <div class=\"upload\">\r\n <div class=\"upload-file\">\r\n @if (thumbnail()?.name; as fileId) {\r\n <div class=\"image\">\r\n <span class=\"image__name\">{{ thumbnail()?.name }}</span>\r\n <!-- TODO: ngSrc -->\r\n <img\r\n class=\"image__view\"\r\n [src]=\"thumbnailUrl()\"\r\n height=\"120\"\r\n width=\"184\"\r\n alt=\"Thumbnail\"\r\n />\r\n </div>\r\n }\r\n <div class=\"info\">\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n appearance=\"outlined-gray\"\r\n size=\"xxs\"\r\n icon=\"cuiIconUpload\"\r\n (click)=\"onSelectFile()\"\r\n >\r\n {{ uploadButtonName() }}\r\n </button>\r\n @if (thumbnail()?.name) {\r\n <button\r\n class=\"remove-button\"\r\n cuiButton\r\n appearance=\"link\"\r\n size=\"sm\"\r\n type=\"button\"\r\n (click)=\"onRemoveThumbnail()\"\r\n >\r\n {{ t('REMOVE') }}\r\n </button>\r\n }\r\n\r\n <span class=\"accepted\">{{ t('ACCEPTED') }}: JPG, JPEG, PNG, MP4 {{ t('UP_TO') }} 20MB</span>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { debounceTime, map, pairwise, startWith } from 'rxjs';\r\nimport type { ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService, takeCaptureFromVideo } from '@cuby-ui/cdk';\r\n\r\nimport {\r\n CuiAccordionModule,\r\n CuiButtonModule,\r\n CuiFormFieldModule,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule\r\n} from '../../components';\r\nimport { cuiCreateDefaultValidators } from '../../utils';\r\nimport { CuiGeneralControlErrorHintComponent } from '../general-control-error-hint';\r\nimport type { CuiEditorConfig } from '../../editor';\r\nimport { CuiEditorBlockComponent } from '../../editor';\r\nimport { CuiUtilityThumbnailComponent } from '../utility-thumbnail';\r\n\r\nimport type { CuiCriterionFormGroup, CuiCriterionFormValues } from './criterion-info-form.options';\r\n\r\n@Component({\r\n selector: 'cui-criterion-info-form',\r\n imports: [\r\n CuiAccordionModule,\r\n CuiButtonModule,\r\n CuiEditorBlockComponent,\r\n CuiFormFieldModule,\r\n CuiGeneralControlErrorHintComponent,\r\n CuiHintModule,\r\n CuiInputModule,\r\n CuiLabelModule,\r\n CuiUtilityThumbnailComponent,\r\n ReactiveFormsModule,\r\n TranslocoDirective\r\n ],\r\n standalone: true,\r\n templateUrl: './criterion-info-form.component.html',\r\n styleUrl: './criterion-info-form.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCriterionInfoFormComponent {\r\n private readonly destroy = inject(DestroyRef);\r\n private readonly formBuilder = inject(NonNullableFormBuilder);\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n private readonly 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 form = this.formBuilder.group<CuiCriterionFormGroup>({\r\n title: 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 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<CuiCriterionFormValues>>();\r\n public readonly isFormValidChanged = output<boolean>();\r\n\r\n protected get controls(): CuiCriterionFormGroup {\r\n return this.form.controls;\r\n }\r\n\r\n protected get isTitleError(): boolean {\r\n return this.controls.title.invalid && this.controls.title.dirty;\r\n }\r\n\r\n 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() }, { 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 currentGroup\r\n ]: Partial<CuiCriterionFormValues>[]): Partial<CuiCriterionFormValues> {\r\n const keys = Object.keys(currentGroup) as (keyof CuiCriterionFormValues)[];\r\n const changedFields: Record<string, unknown> = {};\r\n\r\n keys.forEach((key) => {\r\n const prev = prevGroup[key];\r\n const current = currentGroup[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-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 { Criterion, StorageObject, TreeStruct } from '@cuby-ui/api';\r\nimport { CuiTreeStructNavigatorApiService, MovingType, TreeStructType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\nimport { CuiIdService } from '@cuby-ui/cdk';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport type { Observable, Subscription } from 'rxjs';\r\nimport { finalize, forkJoin } from 'rxjs';\r\n\r\nimport {\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiDialogModule,\r\n CuiFormFieldModule,\r\n CuiLabelModule,\r\n CuiSvgModule\r\n} from '../../components';\r\nimport { CuiCategoriesComponent, CuiSelectedCategoryService } from '../categories';\r\nimport { CuiCriterionFormValues, CuiCriterionInfoFormComponent } from '../criterion-info-form';\r\nimport type { CuiTools, CuiEditorConfig } from '../../editor';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityModalService } from '../utility-modal';\r\n\r\n@Component({\r\n selector: 'cui-criterion-info',\r\n imports: [\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiCategoriesComponent,\r\n CuiDialogModule,\r\n CuiFormFieldModule,\r\n CuiCriterionInfoFormComponent,\r\n CuiLabelModule,\r\n CuiSvgModule,\r\n TranslocoModule\r\n ],\r\n standalone: true,\r\n templateUrl: './criterion-info.component.html',\r\n styleUrls: ['./criterion-info.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiSelectedCategoryService]\r\n})\r\nexport class CuiCriterionInfoComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly cuiIdService = inject(CuiIdService);\r\n private readonly cuiCategoriesModalService = inject(CuiSelectedCategoryService);\r\n private readonly treeStructNavigatorApiService = inject(CuiTreeStructNavigatorApiService);\r\n private readonly criterionApiService = inject<UtilityModalService<Criterion>>(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n private subscription!: Subscription;\r\n private skipCategoryChange = false;\r\n\r\n protected readonly TYPE = TreeStructType.Criteria;\r\n\r\n protected readonly categoryId = this.cuiIdService.generate();\r\n\r\n protected readonly category = this.cuiCategoriesModalService.category;\r\n protected readonly isFormValid = signal(false);\r\n protected readonly prevCategoryId = signal<CuiNullable<string>>(null);\r\n protected readonly editorConfig = signal<CuiNullable<CuiEditorConfig>>(null);\r\n protected readonly labelColor = computed(() =>\r\n this.category()?.title ? 'var(--cui-base-900)' : 'var(--cui-base-400)'\r\n );\r\n protected readonly selectTitle = computed(\r\n () => this.category()?.title ?? this.translocoService.translate('SELECT') + '...'\r\n );\r\n\r\n protected readonly element = viewChild<ElementRef<HTMLElement>>('scrollContent');\r\n\r\n public readonly criterion = model<StorageObject<Criterion>>();\r\n public readonly 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 criterionCreated = output<string>();\r\n\r\n constructor() {\r\n this.initConfigEffect();\r\n this.initCategoryEffect();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initCategory();\r\n }\r\n\r\n protected onFormChanged(values: Partial<CuiCriterionFormValues>, criterionId: string): void {\r\n const actions: Record<keyof CuiCriterionFormValues, (value: string) => Observable<void>> = {\r\n title: (title: string) => this.changeTitle(title, criterionId)\r\n };\r\n\r\n forkJoin(\r\n Object.keys(values).map((key) =>\r\n actions[key as keyof CuiCriterionFormValues](values[key as keyof CuiCriterionFormValues] || '')\r\n )\r\n )\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe();\r\n }\r\n\r\n protected onFormValidationChanged(isValid: boolean): void {\r\n this.isFormValid.set(isValid);\r\n this.validationChanged.emit(isValid);\r\n }\r\n\r\n private initCategoryEffect(): void {\r\n effect(() => {\r\n const category = this.category();\r\n const storageObjectCriterion = untracked(this.criterion);\r\n\r\n if (!category || this.skipCategoryChange) {\r\n this.skipCategoryChange = false;\r\n\r\n return;\r\n }\r\n\r\n if (storageObjectCriterion) {\r\n this.changeCategory(category.id, storageObjectCriterion.id);\r\n\r\n return;\r\n }\r\n\r\n this.createCriterion(category.id);\r\n });\r\n }\r\n\r\n private initConfigEffect(): void {\r\n effect(() => {\r\n const element = this.element()?.nativeElement;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n this.editorConfig.set({ tools: this.tools(), element });\r\n });\r\n }\r\n\r\n private initCategory(): void {\r\n const storageObjectId = this.criterion()?.id;\r\n\r\n if (!storageObjectId) {\r\n return;\r\n }\r\n\r\n this.treeStructNavigatorApiService\r\n .getCategory(storageObjectId, TreeStructType.Criteria)\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 createCriterion(categoryId: string): void {\r\n this.criterionCreated.emit(categoryId);\r\n this.prevCategoryId.set(categoryId);\r\n }\r\n\r\n private changeTitle(value: string, criterionId: string): Observable<void> {\r\n return this.criterionApiService.changeTitle(criterionId, value).pipe(\r\n finalize(() =>\r\n this.criterion.update((prev) => ({\r\n ...prev!,\r\n storageElement: { ...prev!.storageElement, title: value }\r\n }))\r\n )\r\n );\r\n }\r\n}\r\n","<div\r\n class=\"wrapper\"\r\n *transloco=\"let t\"\r\n>\r\n <div\r\n #scrollContent\r\n class=\"content content_scrollable\"\r\n >\r\n <div class=\"category\">\r\n <cui-form-field>\r\n <label\r\n cuiLabel\r\n [for]=\"categoryId\"\r\n [isRequired]=\"true\"\r\n >\r\n {{ t('SELECT_CATEGORY') }}\r\n </label>\r\n <cui-categories\r\n [buttonId]=\"categoryId\"\r\n [treeStructType]=\"TYPE\"\r\n >\r\n <div class=\"select\">\r\n <span [style.color]=\"labelColor()\">\r\n {{ selectTitle() }}\r\n </span>\r\n\r\n <cui-svg icon=\"cuiIconChevronDown\" />\r\n </div>\r\n </cui-categories>\r\n </cui-form-field>\r\n </div>\r\n\r\n @let criterionData = criterion();\r\n @let editorConfigData = editorConfig();\r\n\r\n @if (editorConfigData && criterionData) {\r\n <cui-criterion-info-form\r\n [config]=\"editorConfigData\"\r\n [baseResourceUrl]=\"editorResourceUrl()\"\r\n [title]=\"criterionData.storageElement.title\"\r\n [framerId]=\"criterionData.storageElement.framerCriterionId\"\r\n class=\"utility\"\r\n (isFormValidChanged)=\"onFormValidationChanged($event)\"\r\n (formChanged)=\"onFormChanged($event, criterionData.id)\"\r\n />\r\n }\r\n </div>\r\n</div>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport type { OnDestroy, OnInit } from '@angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { StorageObject } from '@cuby-ui/api';\r\nimport { CUI_WINDOW } from '@cuby-ui/cdk';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { CuiLoaderComponent } from '../../../loader';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement } from \"../../utility-modal.options\";\r\n\r\n@Component({\r\n selector: 'cui-utility-modal-create',\r\n imports: [CuiButtonModule, CuiLoaderComponent, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\r\n standalone: true,\r\n templateUrl: './utility-modal-create.component.html',\r\n styleUrl: './utility-modal-create.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityModalCreateComponent implements OnInit, OnDestroy {\r\n private readonly window = inject(CUI_WINDOW);\r\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n private readonly utilityModalService = inject(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n private readonly prevUtility = this.cuiDialogContext.data.utility;\r\n\r\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n protected readonly tools = this.cuiDialogContext.data.tools;\r\n protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n private readonly _utility = computed(() => signal(this.initialUtility()));\r\n\r\n protected readonly isFormValid = signal(false);\r\n protected readonly utility = computed(() => this._utility()());\r\n\r\n public readonly initialUtility = input.required<StorageObject<UtilityElement>>();\r\n\r\n public ngOnInit(): void {\r\n this.initWindowUnloadEvent();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.window.onbeforeunload = null;\r\n }\r\n\r\n protected onSave(): void {\r\n this.cuiDialogContext.completeWith(\r\n this.initialUtility() ? { prevId: this.prevUtility.id, ...this.utility() } : this.utility()\r\n );\r\n }\r\n\r\n protected onCancel(): void {\r\n this.destroyUtility();\r\n\r\n const returnedValue = this.initialUtility() ? this.utility() : null;\r\n\r\n this.cuiDialogContext.completeWith(returnedValue);\r\n }\r\n\r\n private initWindowUnloadEvent(): void {\r\n this.window.onbeforeunload = (): void => this.destroyUtility();\r\n }\r\n\r\n private destroyUtility(): void {\r\n const utility = this.utility();\r\n\r\n if (!utility || this.initialUtility()) {\r\n return;\r\n }\r\n\r\n this.utilityModalService.deleteUtility(utility).subscribe();\r\n }\r\n}\r\n","<div\r\n class=\"wrapper\"\r\n *transloco=\"let t\"\r\n>\r\n <header class=\"header\">\r\n <ng-container [ngTemplateOutlet]=\"header\" />\r\n\r\n <div class=\"header__content\">\r\n <cui-loader />\r\n\r\n <div class=\"actions\">\r\n @if (!initialUtility()) {\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n appearance=\"secondary\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n [disabled]=\"!isFormValid()\"\r\n appearance=\"action-violet\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ t('DONE') }}\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n\r\n <ng-content />\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Criterion, StorageObject } from '@cuby-ui/api';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';\r\nimport { CuiCriterionInfoComponent } from \"../../../criterion-info\";\r\nimport { CuiUtilityModalCreateComponent } from \"../utility-modal-create\";\r\n\r\n@Component({\r\n imports: [CuiButtonModule, CuiSvgModule, CuiCriterionInfoComponent, CuiUtilityModalCreateComponent],\r\n standalone: true,\r\n templateUrl: './criterion-modal-create.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCriterionModalCreateComponent {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n private readonly criterionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n private isCreated = false;\r\n\r\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n protected readonly tools = this.cuiDialogContext.data.tools;\r\n protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n private readonly _criterion = computed(() => signal(this.initialUtility()));\r\n\r\n protected readonly isFormValid = signal(false);\r\n protected readonly criterion = computed(() => this._criterion()());\r\n\r\n public readonly initialUtility = input.required<StorageObject<Criterion>>();\r\n\r\n protected onCriterionCreated(storageNodeId: string): void {\r\n if (this.isCreated || this.initialUtility()) {\r\n return;\r\n }\r\n\r\n this.criterionApiService.createUtility(storageNodeId)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((criterion) => {\r\n this.isCreated = true;\r\n this._criterion().set(criterion as StorageObject<Criterion>);\r\n });\r\n }\r\n}\r\n","<cui-utility-modal-create [initialUtility]=\"criterion()\">\r\n <cui-criterion-info\r\n [criterion]=\"criterion()\"\r\n [tools]=\"tools\"\r\n [editorResourceUrl]=\"editorResourceUrl\"\r\n (validationChanged)=\"isFormValid.set($event)\"\r\n (criterionCreated)=\"onCriterionCreated($event)\"\r\n />\r\n</cui-utility-modal-create>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { 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\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';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport type {Instruction, StorageObject} from '@cuby-ui/api';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../components';\r\nimport {UTILITY_MODAL_SERVICE_TOKEN} from '../../utility-modal.options';\r\nimport {CuiUtilityModalCreateComponent} from '../utility-modal-create';\r\nimport {CuiInstructionInfoComponent} from '../../../instruction-info';\r\n\r\n@Component({\r\n imports: [CuiButtonModule, CuiSvgModule, CuiUtilityModalCreateComponent, CuiInstructionInfoComponent],\r\n standalone: true,\r\n templateUrl: './instruction-modal-create.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiInstructionModalCreateComponent {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n private readonly instructionApiService = inject(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n private isCreated = false;\r\n\r\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n protected readonly tools = this.cuiDialogContext.data.tools;\r\n protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n private readonly _instruction = computed(() => signal(this.initialUtility()));\r\n\r\n protected readonly isFormValid = signal(false);\r\n protected readonly instruction = computed(() => this._instruction()());\r\n\r\n public readonly initialUtility = input.required<StorageObject<Instruction>>();\r\n\r\n protected onInstructionCreated(storageNodeId: string): void {\r\n if (this.isCreated || this.initialUtility()) {\r\n return;\r\n }\r\n\r\n this.instructionApiService.createUtility(storageNodeId)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((instruction) => {\r\n this.isCreated = true;\r\n this._instruction().set(instruction as StorageObject<Instruction>);\r\n });\r\n }\r\n}\r\n","<cui-utility-modal-create [initialUtility]=\"instruction()\">\r\n <cui-instruction-info\r\n [instruction]=\"instruction()\"\r\n [tools]=\"tools\"\r\n [editorResourceUrl]=\"editorResourceUrl\"\r\n (validationChanged)=\"isFormValid.set($event)\"\r\n (instructionCreated)=\"onInstructionCreated($event)\"\r\n />\r\n</cui-utility-modal-create>\r\n","import {ChangeDetectionStrategy, Component, input} from '@angular/core';\r\nimport type { CuiImgUrl } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'cui-utility-readonly-thumbnail',\r\n imports: [],\r\n standalone: true,\r\n templateUrl: 'utility-readonly-thumbnail.component.html',\r\n styleUrl: 'utility-readonly-thumbnail.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiUtilityReadonlyThumbnailComponent {\r\n public readonly thumbnailUrl = input.required<CuiImgUrl>();\r\n public readonly isVideo = input(false);\r\n}\r\n","@let url = thumbnailUrl();\r\n\r\n@if (url?.src; as src) {\r\n @if (isVideo()) {\r\n <video\r\n class=\"thumbnail\"\r\n [src]=\"src\"\r\n controls\r\n ></video>\r\n } @else {\r\n <img\r\n class=\"thumbnail\"\r\n [src]=\"src\"\r\n [alt]=\"url?.name\"\r\n />\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { Subscription } from 'rxjs';\r\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiImgUrl } from '../../interfaces';\r\nimport { CuiEditorComponent } from '../../editor';\r\nimport type { CuiTools, CuiEditorConfig } from '../../editor';\r\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\r\nimport { CuiEmptyStateComponent } from '../../components';\r\n\r\n@Component({\r\n selector: 'cui-criterion-readonly-info',\r\n imports: [CuiEditorComponent, CuiEmptyStateComponent, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\r\n standalone: true,\r\n templateUrl: './criterion-readonly-info.component.html',\r\n styleUrl: './criterion-readonly-info.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiCriterionReadonlyInfoComponent {\r\n private readonly hostElement = inject(ElementRef).nativeElement;\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n\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<CuiImgUrl>>(null);\r\n protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\r\n\r\n public readonly framerId = input.required<string>();\r\n public readonly element = input<HTMLElement>(this.hostElement);\r\n public readonly tools = input.required<CuiTools>();\r\n public readonly editorResourceUrl = input.required<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 this.editorConfig = { readOnly: true, tools: this.tools(), element: this.element() };\r\n });\r\n }\r\n\r\n private initFramerIdEffect(): void {\r\n effect(() => {\r\n const framerId = this.framerId();\r\n\r\n if (!framerId) {\r\n return;\r\n }\r\n\r\n this.subscription?.unsubscribe();\r\n this.initFrameFragments();\r\n });\r\n }\r\n\r\n private initFrameFragments(): void {\r\n const frameId = this.framerId();\r\n\r\n this.jText.set(null);\r\n this.thumbnailUrl.set(null);\r\n\r\n if (!frameId) {\r\n return;\r\n }\r\n\r\n const fragmentActions = {\r\n [FragmentType.jText]: (fragment: Fragment): void => {\r\n this.jText.set(fragment as JTextFragment);\r\n },\r\n [FragmentType.resourceFile]: (fragment: Fragment): void => {\r\n this.setResourceFile(fragment as ResourceFragment);\r\n }\r\n };\r\n\r\n this.subscription = this.frameApiService.getFrame(frameId).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 @if (thumbnailUrl(); as thumbnailUrl) {\r\n <cui-utility-readonly-thumbnail [thumbnailUrl]=\"thumbnailUrl\" [isVideo]=\"isVideo\" />\r\n }\r\n\r\n @if (jText()?.id; as id) {\r\n <div class=\"wrapper\">\r\n <cui-editor\r\n class=\"editor\"\r\n [editorApiId]=\"id\"\r\n [config]=\"editorConfig\"\r\n />\r\n </div>\r\n }\r\n } @else {\r\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\r\n }\r\n }\r\n</ng-container>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\nimport { StorageObject } from '@cuby-ui/api';\r\n\r\nimport { CUI_DIALOG_CONTEXT, CuiBadgeModule, CuiButtonModule, CuiSvgModule } from '../../../../components';\r\nimport { UTILITY_MODAL_SERVICE_TOKEN, UtilityElement, UtilityModalService } from '../../utility-modal.options';\r\n\r\n@Component({\r\n selector: 'cui-readonly-utility-modal',\r\n imports: [CuiBadgeModule, CuiButtonModule, CuiSvgModule, NgTemplateOutlet, TranslocoDirective],\r\n standalone: true,\r\n templateUrl: 'readonly-utility-modal.component.html',\r\n styleUrl: 'readonly-utility-modal.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiReadonlyUtilityModalComponent {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n private readonly utilityModalService = inject<UtilityModalService<UtilityElement>>(UTILITY_MODAL_SERVICE_TOKEN);\r\n\r\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n protected readonly tools = this.cuiDialogContext.data.tools;\r\n protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n protected readonly isLoading = signal(false);\r\n\r\n public readonly utility = input.required<StorageObject<UtilityElement>>();\r\n\r\n public readonly utilityUnbinded = output<StorageObject<UtilityElement>>();\r\n\r\n protected onClose(): void {\r\n this.cuiDialogContext.completeWith();\r\n }\r\n\r\n protected onUnbind(): void {\r\n this.isLoading.set(true);\r\n this.utilityModalService.unbindUtility(this.utility().id)\r\n .pipe(\r\n takeUntilDestroyed(this.destroyRef),\r\n finalize(() => this.isLoading.set(false))\r\n )\r\n .subscribe((utility: StorageObject<UtilityElement>) => {\r\n this.utilityUnbinded.emit(utility);\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <header class=\"header\">\r\n <ng-container [ngTemplateOutlet]=\"header\" />\r\n\r\n <cui-badge\r\n color=\"violet\"\r\n class=\"badge\"\r\n >\r\n <cui-svg\r\n class=\"icon\"\r\n icon=\"cuiIconVariant\"\r\n color=\"var(--cui-violet-400)\"\r\n />\r\n {{ t('INSERTED') }}\r\n </cui-badge>\r\n\r\n <button\r\n type=\"button\"\r\n cuiButton\r\n appearance=\"ghost\"\r\n icon=\"cuiIconX\"\r\n class=\"button\"\r\n (click)=\"onClose()\"\r\n ></button>\r\n </header>\r\n\r\n <ng-content />\r\n\r\n <div class=\"actions\">\r\n <button\r\n type=\"button\"\r\n #button\r\n cuiButton\r\n size=\"sm\"\r\n icon=\"cuiIconLinkBroken\"\r\n appearance=\"action-violet\"\r\n [isLoaderShown]=\"isLoading()\"\r\n (click)=\"onUnbind()\"\r\n >\r\n {{ t('UNBIND') }}\r\n </button>\r\n </div>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { Criterion, StorageObject } from '@cuby-ui/api';\r\n\r\nimport {\r\n CUI_DIALOG_CONTEXT,\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiRenderDynamicComponentsService,\r\n CuiSvgModule\r\n} from '../../../../components';\r\nimport { CuiCriterionReadonlyInfoComponent } from '../../../criterion-readonly-info';\r\nimport { CuiReadonlyUtilityModalComponent } from '../readonly-utility-modal';\r\nimport { UtilityElement } from '../../utility-modal.options';\r\nimport { CuiCriterionModalCreateComponent } from '../criterion-modal-create';\r\n\r\n@Component({\r\n selector: 'cui-readonly-criterion-modal',\r\n imports: [\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiSvgModule,\r\n CuiCriterionReadonlyInfoComponent,\r\n TranslocoDirective,\r\n CuiReadonlyUtilityModalComponent\r\n ],\r\n standalone: true,\r\n templateUrl: 'readonly-criterion-modal.component.html',\r\n styleUrl: 'readonly-criterion-modal.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiReadonlyCriterionModalComponent {\r\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n protected readonly tools = this.cuiDialogContext.data.tools;\r\n protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n protected readonly isLoading = signal(false);\r\n protected readonly framerId = computed(() => this.criterion().storageElement.framerCriterionId);\r\n\r\n public readonly criterion = input.required<StorageObject<Criterion>>();\r\n\r\n protected onUnbind(criterion: StorageObject<UtilityElement>): void {\r\n this.cuiRenderDynamicComponentsService.closeAll();\r\n this.cuiRenderDynamicComponentsService.open({\r\n component: CuiCriterionModalCreateComponent,\r\n inputs: { criterion }\r\n });\r\n }\r\n}\r\n","<cui-readonly-utility-modal\r\n [utility]=\"criterion()\"\r\n (utilityUnbinded)=\"onUnbind($event)\"\r\n>\r\n <ng-container *transloco=\"let t\">\r\n <div\r\n #scrollContainer\r\n class=\"info\"\r\n >\r\n <h3 class=\"title\">{{ criterion().storageElement.title }}</h3>\r\n\r\n <cui-criterion-readonly-info\r\n [framerId]=\"framerId()\"\r\n [editorResourceUrl]=\"editorResourceUrl\"\r\n [tools]=\"tools\"\r\n [element]=\"scrollContainer\"\r\n class=\"info__block\"\r\n />\r\n </div>\r\n </ng-container>\r\n</cui-readonly-utility-modal>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { Subscription } from 'rxjs';\r\nimport type { Fragment, JTextFragment, ResourceFragment } from '@cuby-ui/api';\r\nimport { CuiFrameApiService, FragmentType } from '@cuby-ui/api';\r\nimport type { CuiNullable } from '@cuby-ui/cdk';\r\n\r\nimport type { CuiImgUrl } from '../../interfaces';\r\nimport { CuiEditorComponent } from '../../editor';\r\nimport type { CuiTools, CuiEditorConfig } from '../../editor';\r\nimport { CuiUtilityReadonlyThumbnailComponent } from '../utility-readonly-thumbnail';\r\nimport { CuiEmptyStateComponent } from '../../components';\r\n\r\n@Component({\r\n selector: 'cui-instruction-readonly-info',\r\n imports: [CuiEditorComponent, CuiEmptyStateComponent, TranslocoDirective, CuiUtilityReadonlyThumbnailComponent],\r\n standalone: true,\r\n templateUrl: './instruction-readonly-info.component.html',\r\n styleUrl: './instruction-readonly-info.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiInstructionReadonlyInfoComponent {\r\n private readonly hostElement = inject(ElementRef).nativeElement;\r\n private readonly frameApiService = inject(CuiFrameApiService);\r\n\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<CuiImgUrl>>(null);\r\n protected readonly isDescriptionEmpty = computed(() => !this.jText()?.notEmpty);\r\n\r\n public readonly framerId = input.required<string>();\r\n public readonly element = input<HTMLElement>(this.hostElement);\r\n public readonly tools = input.required<CuiTools>();\r\n public readonly editorResourceUrl = input.required<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 this.editorConfig = { readOnly: true, tools: this.tools(), element: this.element() };\r\n });\r\n }\r\n\r\n private initFramerIdEffect(): void {\r\n effect(() => {\r\n const framerId = this.framerId();\r\n\r\n if (!framerId) {\r\n return;\r\n }\r\n\r\n this.subscription?.unsubscribe();\r\n this.initFrameFragments();\r\n });\r\n }\r\n\r\n private initFrameFragments(): void {\r\n const frameId = this.framerId();\r\n\r\n this.jText.set(null);\r\n this.thumbnailUrl.set(null);\r\n\r\n if (!frameId) {\r\n return;\r\n }\r\n\r\n const fragmentActions = {\r\n [FragmentType.jText]: (fragment: Fragment): void => {\r\n this.jText.set(fragment as JTextFragment);\r\n },\r\n [FragmentType.resourceFile]: (fragment: Fragment): void => {\r\n this.setResourceFile(fragment as ResourceFragment);\r\n }\r\n };\r\n\r\n this.subscription = this.frameApiService.getFrame(frameId).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 @if (thumbnailUrl(); as thumbnailUrl) {\r\n <cui-utility-readonly-thumbnail [thumbnailUrl]=\"thumbnailUrl\" [isVideo]=\"isVideo\" />\r\n }\r\n\r\n @if (jText()?.id; as id) {\r\n <div class=\"wrapper\">\r\n <cui-editor\r\n class=\"editor\"\r\n [editorApiId]=\"id\"\r\n [config]=\"editorConfig\"\r\n />\r\n </div>\r\n }\r\n } @else {\r\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\r\n }\r\n }\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport type { Instruction, StorageObject } from '@cuby-ui/api';\r\n\r\nimport {\r\n CUI_DIALOG_CONTEXT,\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiRenderDynamicComponentsService,\r\n CuiSvgModule\r\n} from '../../../../components';\r\nimport { CuiInstructionReadonlyInfoComponent } from '../../../instruction-readonly-info';\r\nimport { CuiInstructionModalCreateComponent } from '../instruction-modal-create';\r\nimport { UtilityElement } from '../../utility-modal.options';\r\nimport {CuiReadonlyUtilityModalComponent} from '../readonly-utility-modal';\r\n\r\n@Component({\r\n selector: 'cui-readonly-instruction-modal',\r\n imports: [\r\n CuiBadgeModule,\r\n CuiButtonModule,\r\n CuiSvgModule,\r\n CuiInstructionReadonlyInfoComponent,\r\n TranslocoDirective,\r\n CuiReadonlyUtilityModalComponent\r\n ],\r\n standalone: true,\r\n templateUrl: 'readonly-instruction-modal.component.html',\r\n styleUrl: 'readonly-instruction-modal.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuiReadonlyInstructionModalComponent {\r\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n protected readonly editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;\r\n protected readonly tools = this.cuiDialogContext.data.tools;\r\n protected readonly header = this.cuiDialogContext.data.header;\r\n\r\n protected readonly isLoading = signal(false);\r\n protected readonly framerId = computed(() => this.instruction().storageElement.framerInstructionId);\r\n\r\n public readonly instruction = input.required<StorageObject<Instruction>>();\r\n\r\n protected onUnbind(instruction: StorageObject<UtilityElement>): void {\r\n this.cuiRenderDynamicComponentsService.closeAll();\r\n this.cuiRenderDynamicComponentsService.open({\r\n component: CuiInstructionModalCreateComponent,\r\n inputs: { initialUtility: instruction }\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <cui-readonly-utility-modal [utility]=\"instruction()\" (utilityUnbinded)=\"onUnbind($event)\">\r\n <div\r\n #scrollContainer\r\n class=\"info\"\r\n >\r\n <h3 class=\"title\">{{ instruction().storageElement.title }}</h3>\r\n\r\n <cui-instruction-readonly-info\r\n [framerId]=\"framerId()\"\r\n [editorResourceUrl]=\"editorResourceUrl\"\r\n [tools]=\"tools\"\r\n [element]=\"scrollContainer\"\r\n class=\"info__block\"\r\n />\r\n </div>\r\n </cui-readonly-utility-modal>\r\n</ng-container>\r\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\r\n\r\nimport {\r\n CUI_DIALOG_CONTEXT,\r\n CuiRenderDynamicComponentsComponent,\r\n CuiRenderDynamicComponentsService\r\n} from '../../components';\r\n\r\n@Component({\r\n selector: 'cui-utility-modal',\r\n imports: [CuiRenderDynamicComponentsComponent],\r\n standalone: true,\r\n templateUrl: 'utility-modal.component.html',\r\n styleUrl: 'utility-modal.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [CuiRenderDynamicComponentsService]\r\n})\r\nexport class CuiUtilityModalComponent {\r\n private readonly cuiDialogContext = inject(CUI_DIALOG_CONTEXT);\r\n private readonly cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);\r\n\r\n protected readonly utility = this.cuiDialogContext.data.utility;\r\n protected readonly initialComponent = this.cuiDialogContext.data.initialComponent;\r\n\r\n constructor() {\r\n this.cuiRenderDynamicComponentsService.open({\r\n component: this.initialComponent,\r\n inputs: { initialUtility: this.utility }\r\n });\r\n }\r\n}\r\n","<cui-render-dynamic-components />\r\n","/**\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"],"mappings":"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"}