@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
@@ -0,0 +1,42 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, inject, input, output, signal } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { TranslocoDirective } from '@jsverse/transloco';
5
+ import { finalize } from 'rxjs';
6
+ import { CUI_DIALOG_CONTEXT, CuiBadgeModule, CuiButtonModule, CuiSvgModule } from '../../../../components';
7
+ import { UTILITY_MODAL_SERVICE_TOKEN } from '../../utility-modal.options';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../../../components/badge/badge.component";
10
+ import * as i2 from "../../../../components/button/button.component";
11
+ import * as i3 from "../../../../components/svg/svg.component";
12
+ export class CuiReadonlyUtilityModalComponent {
13
+ constructor() {
14
+ this.destroyRef = inject(DestroyRef);
15
+ this.cuiDialogContext = inject(CUI_DIALOG_CONTEXT);
16
+ this.utilityModalService = inject(UTILITY_MODAL_SERVICE_TOKEN);
17
+ this.editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;
18
+ this.tools = this.cuiDialogContext.data.tools;
19
+ this.header = this.cuiDialogContext.data.header;
20
+ this.isLoading = signal(false);
21
+ this.utility = input.required();
22
+ this.utilityUnbinded = output();
23
+ }
24
+ onClose() {
25
+ this.cuiDialogContext.completeWith();
26
+ }
27
+ onUnbind() {
28
+ this.isLoading.set(true);
29
+ this.utilityModalService.unbindUtility(this.utility().id)
30
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.isLoading.set(false)))
31
+ .subscribe((utility) => {
32
+ this.utilityUnbinded.emit(utility);
33
+ });
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiReadonlyUtilityModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: CuiReadonlyUtilityModalComponent, isStandalone: true, selector: "cui-readonly-utility-modal", inputs: { utility: { classPropertyName: "utility", publicName: "utility", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { utilityUnbinded: "utilityUnbinded" }, ngImport: i0, template: "<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", styles: [".header{display:flex;gap:8px;align-items:center;padding:16px 24px}.header__title{font-weight:500;font-size:16px;line-height:24px}.button{margin-left:auto}.actions{padding:16px;border-top:1px solid var(--cui-base-200)}.badge{display:flex;gap:4px;align-items:center;font-weight:500;font-size:14px;line-height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CuiBadgeModule }, { kind: "component", type: i1.CuiBadgeComponent, selector: "cui-badge", inputs: ["color", "size", "isWithDot"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i2.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i3.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiReadonlyUtilityModalComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'cui-readonly-utility-modal', imports: [CuiBadgeModule, CuiButtonModule, CuiSvgModule, NgTemplateOutlet, TranslocoDirective], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [".header{display:flex;gap:8px;align-items:center;padding:16px 24px}.header__title{font-weight:500;font-size:16px;line-height:24px}.button{margin-left:auto}.actions{padding:16px;border-top:1px solid var(--cui-base-200)}.badge{display:flex;gap:4px;align-items:center;font-weight:500;font-size:14px;line-height:20px}\n"] }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHktdXRpbGl0eS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1tb2RhbC9jb21wb25lbnRzL3JlYWRvbmx5LXV0aWxpdHktbW9kYWwvcmVhZG9ubHktdXRpbGl0eS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1tb2RhbC9jb21wb25lbnRzL3JlYWRvbmx5LXV0aWxpdHktbW9kYWwvcmVhZG9ubHktdXRpbGl0eS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsMkJBQTJCLEVBQXVDLE1BQU0sNkJBQTZCLENBQUM7Ozs7O0FBVS9HLE1BQU0sT0FBTyxnQ0FBZ0M7SUFSN0M7UUFTcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM5Qyx3QkFBbUIsR0FBRyxNQUFNLENBQXNDLDJCQUEyQixDQUFDLENBQUM7UUFFN0Ysc0JBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRSxVQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTNDLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlDLENBQUM7UUFFMUQsb0JBQWUsR0FBRyxNQUFNLEVBQWlDLENBQUM7S0FpQjdFO0lBZmEsT0FBTztRQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRVMsUUFBUTtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNwRCxJQUFJLENBQ0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUNuQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDNUM7YUFDQSxTQUFTLENBQUMsQ0FBQyxPQUFzQyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOytHQTdCUSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxnUkNsQjdDLHdwQ0EyQ0EsbVhEL0JjLGNBQWMsZ0pBQUUsZUFBZSwwTkFBRSxZQUFZLHdLQUFFLGdCQUFnQixvSkFBRSxrQkFBa0I7OzRGQU1wRixnQ0FBZ0M7a0JBUjVDLFNBQVM7K0JBQ0ksNEJBQTRCLFdBQzdCLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsY0FDbEYsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RvcmFnZU9iamVjdCB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBDVUlfRElBTE9HX0NPTlRFWFQsIEN1aUJhZGdlTW9kdWxlLCBDdWlCdXR0b25Nb2R1bGUsIEN1aVN2Z01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBVVElMSVRZX01PREFMX1NFUlZJQ0VfVE9LRU4sIFV0aWxpdHlFbGVtZW50LCBVdGlsaXR5TW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbGl0eS1tb2RhbC5vcHRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjdWktcmVhZG9ubHktdXRpbGl0eS1tb2RhbCcsXHJcbiAgICBpbXBvcnRzOiBbQ3VpQmFkZ2VNb2R1bGUsIEN1aUJ1dHRvbk1vZHVsZSwgQ3VpU3ZnTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xvY29EaXJlY3RpdmVdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlVXJsOiAncmVhZG9ubHktdXRpbGl0eS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJ3JlYWRvbmx5LXV0aWxpdHktbW9kYWwuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVJlYWRvbmx5VXRpbGl0eU1vZGFsQ29tcG9uZW50IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpRGlhbG9nQ29udGV4dCA9IGluamVjdChDVUlfRElBTE9HX0NPTlRFWFQpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dGlsaXR5TW9kYWxTZXJ2aWNlID0gaW5qZWN0PFV0aWxpdHlNb2RhbFNlcnZpY2U8VXRpbGl0eUVsZW1lbnQ+PihVVElMSVRZX01PREFMX1NFUlZJQ0VfVE9LRU4pO1xyXG5cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBlZGl0b3JSZXNvdXJjZVVybCA9IHRoaXMuY3VpRGlhbG9nQ29udGV4dC5kYXRhLmVkaXRvclJlc291cmNlVXJsO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvb2xzID0gdGhpcy5jdWlEaWFsb2dDb250ZXh0LmRhdGEudG9vbHM7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGVhZGVyID0gdGhpcy5jdWlEaWFsb2dDb250ZXh0LmRhdGEuaGVhZGVyO1xyXG5cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSB1dGlsaXR5ID0gaW5wdXQucmVxdWlyZWQ8U3RvcmFnZU9iamVjdDxVdGlsaXR5RWxlbWVudD4+KCk7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IHV0aWxpdHlVbmJpbmRlZCA9IG91dHB1dDxTdG9yYWdlT2JqZWN0PFV0aWxpdHlFbGVtZW50Pj4oKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgb25DbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1aURpYWxvZ0NvbnRleHQuY29tcGxldGVXaXRoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uVW5iaW5kKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgICAgICB0aGlzLnV0aWxpdHlNb2RhbFNlcnZpY2UudW5iaW5kVXRpbGl0eSh0aGlzLnV0aWxpdHkoKS5pZClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgodXRpbGl0eTogU3RvcmFnZU9iamVjdDxVdGlsaXR5RWxlbWVudD4pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXRpbGl0eVVuYmluZGVkLmVtaXQodXRpbGl0eSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XHJcbiAgICA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJcIiAvPlxyXG5cclxuICAgICAgICA8Y3VpLWJhZGdlXHJcbiAgICAgICAgICAgIGNvbG9yPVwidmlvbGV0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8Y3VpLXN2Z1xyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uXCJcclxuICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uVmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS12aW9sZXQtNDAwKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIHt7IHQoJ0lOU0VSVEVEJykgfX1cclxuICAgICAgICA8L2N1aS1iYWRnZT5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY3VpQnV0dG9uXHJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXHJcbiAgICAgICAgICAgIGljb249XCJjdWlJY29uWFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPC9oZWFkZXI+XHJcblxyXG4gICAgPG5nLWNvbnRlbnQgLz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICNidXR0b25cclxuICAgICAgICAgICAgY3VpQnV0dG9uXHJcbiAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgIGljb249XCJjdWlJY29uTGlua0Jyb2tlblwiXHJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJhY3Rpb24tdmlvbGV0XCJcclxuICAgICAgICAgICAgW2lzTG9hZGVyU2hvd25dPVwiaXNMb2FkaW5nKClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25VbmJpbmQoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB0KCdVTkJJTkQnKSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { CuiUtilityModalCreateComponent } from './utility-modal-create.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1tb2RhbC9jb21wb25lbnRzL3V0aWxpdHktbW9kYWwtY3JlYXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ3VpVXRpbGl0eU1vZGFsQ3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnLi91dGlsaXR5LW1vZGFsLWNyZWF0ZS5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,55 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, inject, input, signal } from '@angular/core';
3
+ import { TranslocoDirective } from '@jsverse/transloco';
4
+ import { CUI_WINDOW } from '@cuby-ui/cdk';
5
+ import { CUI_DIALOG_CONTEXT, CuiButtonModule, CuiSvgModule } from '../../../../components';
6
+ import { CuiLoaderComponent } from '../../../loader';
7
+ import { UTILITY_MODAL_SERVICE_TOKEN } from "../../utility-modal.options";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../../../components/button/button.component";
10
+ export class CuiUtilityModalCreateComponent {
11
+ constructor() {
12
+ this.window = inject(CUI_WINDOW);
13
+ this.cuiDialogContext = inject(CUI_DIALOG_CONTEXT);
14
+ this.utilityModalService = inject(UTILITY_MODAL_SERVICE_TOKEN);
15
+ this.prevUtility = this.cuiDialogContext.data.utility;
16
+ this.editorResourceUrl = this.cuiDialogContext.data.editorResourceUrl;
17
+ this.tools = this.cuiDialogContext.data.tools;
18
+ this.header = this.cuiDialogContext.data.header;
19
+ this._utility = computed(() => signal(this.initialUtility()));
20
+ this.isFormValid = signal(false);
21
+ this.utility = computed(() => this._utility()());
22
+ this.initialUtility = input.required();
23
+ }
24
+ ngOnInit() {
25
+ this.initWindowUnloadEvent();
26
+ }
27
+ ngOnDestroy() {
28
+ this.window.onbeforeunload = null;
29
+ }
30
+ onSave() {
31
+ this.cuiDialogContext.completeWith(this.initialUtility() ? { prevId: this.prevUtility.id, ...this.utility() } : this.utility());
32
+ }
33
+ onCancel() {
34
+ this.destroyUtility();
35
+ const returnedValue = this.initialUtility() ? this.utility() : null;
36
+ this.cuiDialogContext.completeWith(returnedValue);
37
+ }
38
+ initWindowUnloadEvent() {
39
+ this.window.onbeforeunload = () => this.destroyUtility();
40
+ }
41
+ destroyUtility() {
42
+ const utility = this.utility();
43
+ if (!utility || this.initialUtility()) {
44
+ return;
45
+ }
46
+ this.utilityModalService.deleteUtility(utility).subscribe();
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityModalCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CuiUtilityModalCreateComponent, isStandalone: true, selector: "cui-utility-modal-create", inputs: { initialUtility: { classPropertyName: "initialUtility", publicName: "initialUtility", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<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", styles: [".header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px}.header__content{display:flex;gap:8px}.actions{display:flex;gap:16px}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }, { kind: "component", type: CuiLoaderComponent, selector: "cui-loader" }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityModalCreateComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'cui-utility-modal-create', imports: [CuiButtonModule, CuiLoaderComponent, CuiSvgModule, NgTemplateOutlet, TranslocoDirective], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [".header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px}.header__content{display:flex;gap:8px}.actions{display:flex;gap:16px}\n"] }]
54
+ }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS1tb2RhbC1jcmVhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3V0aWxpdHktbW9kYWwvY29tcG9uZW50cy91dGlsaXR5LW1vZGFsLWNyZWF0ZS91dGlsaXR5LW1vZGFsLWNyZWF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1tb2RhbC9jb21wb25lbnRzL3V0aWxpdHktbW9kYWwtY3JlYXRlL3V0aWxpdHktbW9kYWwtY3JlYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7OztBQVUxRixNQUFNLE9BQU8sOEJBQThCO0lBUjNDO1FBU3FCLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDOUMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFMUQsZ0JBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUUvQyxzQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pFLFVBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QyxXQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFN0MsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV2RCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFL0MsbUJBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQyxDQUFDO0tBcUNwRjtJQW5DVSxRQUFRO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVTLE1BQU07UUFDWixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUM5QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDOUYsQ0FBQztJQUNOLENBQUM7SUFFUyxRQUFRO1FBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFcEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8scUJBQXFCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRU8sY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEUsQ0FBQzsrR0FwRFEsOEJBQThCO21HQUE5Qiw4QkFBOEIsa1BDbkIzQyx1a0NBcUNBLHdORHhCYyxlQUFlLDJOQUFFLGtCQUFrQixzREFBRSxZQUFZLCtCQUFFLGdCQUFnQixvSkFBRSxrQkFBa0I7OzRGQU14Riw4QkFBOEI7a0JBUjFDLFNBQVM7K0JBQ0ksMEJBQTBCLFdBQzNCLENBQUMsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxjQUN0RixJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHR5cGUgeyBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbG9jb0RpcmVjdGl2ZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XHJcbmltcG9ydCB0eXBlIHsgU3RvcmFnZU9iamVjdCB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XHJcbmltcG9ydCB7IENVSV9XSU5ET1cgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5cclxuaW1wb3J0IHsgQ1VJX0RJQUxPR19DT05URVhULCBDdWlCdXR0b25Nb2R1bGUsIEN1aVN2Z01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBDdWlMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9sb2FkZXInO1xyXG5pbXBvcnQgeyBVVElMSVRZX01PREFMX1NFUlZJQ0VfVE9LRU4sIFV0aWxpdHlFbGVtZW50IH0gZnJvbSBcIi4uLy4uL3V0aWxpdHktbW9kYWwub3B0aW9uc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2N1aS11dGlsaXR5LW1vZGFsLWNyZWF0ZScsXHJcbiAgICBpbXBvcnRzOiBbQ3VpQnV0dG9uTW9kdWxlLCBDdWlMb2FkZXJDb21wb25lbnQsIEN1aVN2Z01vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgVHJhbnNsb2NvRGlyZWN0aXZlXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXRpbGl0eS1tb2RhbC1jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL3V0aWxpdHktbW9kYWwtY3JlYXRlLmNvbXBvbmVudC5zY3NzJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlVdGlsaXR5TW9kYWxDcmVhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdyA9IGluamVjdChDVUlfV0lORE9XKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpRGlhbG9nQ29udGV4dCA9IGluamVjdChDVUlfRElBTE9HX0NPTlRFWFQpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dGlsaXR5TW9kYWxTZXJ2aWNlID0gaW5qZWN0KFVUSUxJVFlfTU9EQUxfU0VSVklDRV9UT0tFTik7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmV2VXRpbGl0eSA9IHRoaXMuY3VpRGlhbG9nQ29udGV4dC5kYXRhLnV0aWxpdHk7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVkaXRvclJlc291cmNlVXJsID0gdGhpcy5jdWlEaWFsb2dDb250ZXh0LmRhdGEuZWRpdG9yUmVzb3VyY2VVcmw7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG9vbHMgPSB0aGlzLmN1aURpYWxvZ0NvbnRleHQuZGF0YS50b29scztcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXIgPSB0aGlzLmN1aURpYWxvZ0NvbnRleHQuZGF0YS5oZWFkZXI7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdXRpbGl0eSA9IGNvbXB1dGVkKCgpID0+IHNpZ25hbCh0aGlzLmluaXRpYWxVdGlsaXR5KCkpKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNGb3JtVmFsaWQgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHV0aWxpdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl91dGlsaXR5KCkoKSk7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IGluaXRpYWxVdGlsaXR5ID0gaW5wdXQucmVxdWlyZWQ8U3RvcmFnZU9iamVjdDxVdGlsaXR5RWxlbWVudD4+KCk7XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5pdFdpbmRvd1VubG9hZEV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMud2luZG93Lm9uYmVmb3JldW5sb2FkID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25TYXZlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VpRGlhbG9nQ29udGV4dC5jb21wbGV0ZVdpdGgoXHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFV0aWxpdHkoKSA/IHsgcHJldklkOiB0aGlzLnByZXZVdGlsaXR5LmlkLCAuLi50aGlzLnV0aWxpdHkoKSB9IDogdGhpcy51dGlsaXR5KClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lVdGlsaXR5KCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJldHVybmVkVmFsdWUgPSB0aGlzLmluaXRpYWxVdGlsaXR5KCkgPyB0aGlzLnV0aWxpdHkoKSA6IG51bGw7XHJcblxyXG4gICAgICAgIHRoaXMuY3VpRGlhbG9nQ29udGV4dC5jb21wbGV0ZVdpdGgocmV0dXJuZWRWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0V2luZG93VW5sb2FkRXZlbnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cub25iZWZvcmV1bmxvYWQgPSAoKTogdm9pZCA9PiB0aGlzLmRlc3Ryb3lVdGlsaXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZXN0cm95VXRpbGl0eSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB1dGlsaXR5ID0gdGhpcy51dGlsaXR5KCk7XHJcblxyXG4gICAgICAgIGlmICghdXRpbGl0eSB8fCB0aGlzLmluaXRpYWxVdGlsaXR5KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51dGlsaXR5TW9kYWxTZXJ2aWNlLmRlbGV0ZVV0aWxpdHkodXRpbGl0eSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAgY2xhc3M9XCJ3cmFwcGVyXCJcclxuICAgICp0cmFuc2xvY289XCJsZXQgdFwiXHJcbj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclwiIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2NvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGN1aS1sb2FkZXIgLz5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFpbml0aWFsVXRpbGl0eSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VpQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdDQU5DRUwnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRm9ybVZhbGlkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJhY3Rpb24tdmlvbGV0XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TYXZlKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ0RPTkUnKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9oZWFkZXI+XHJcblxyXG4gICAgPG5nLWNvbnRlbnQgLz5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export { CuiUtilityModalComponent } from './utility-modal.component';
3
+ export * from './utility-modal.options';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1tb2RhbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzJztcclxuZXhwb3J0IHsgQ3VpVXRpbGl0eU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi91dGlsaXR5LW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXRpbGl0eS1tb2RhbC5vcHRpb25zJztcclxuIl19
@@ -0,0 +1,22 @@
1
+ import { Component, ChangeDetectionStrategy, inject } from '@angular/core';
2
+ import { CUI_DIALOG_CONTEXT, CuiRenderDynamicComponentsComponent, CuiRenderDynamicComponentsService } from '../../components';
3
+ import * as i0 from "@angular/core";
4
+ export class CuiUtilityModalComponent {
5
+ constructor() {
6
+ this.cuiDialogContext = inject(CUI_DIALOG_CONTEXT);
7
+ this.cuiRenderDynamicComponentsService = inject(CuiRenderDynamicComponentsService);
8
+ this.utility = this.cuiDialogContext.data.utility;
9
+ this.initialComponent = this.cuiDialogContext.data.initialComponent;
10
+ this.cuiRenderDynamicComponentsService.open({
11
+ component: this.initialComponent,
12
+ inputs: { initialUtility: this.utility }
13
+ });
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CuiUtilityModalComponent, isStandalone: true, selector: "cui-utility-modal", providers: [CuiRenderDynamicComponentsService], ngImport: i0, template: "<cui-render-dynamic-components />\r\n", styles: [".host{display:block;height:calc(100vh - 40px)}\n"], dependencies: [{ kind: "component", type: CuiRenderDynamicComponentsComponent, selector: "cui-render-dynamic-components" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityModalComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'cui-utility-modal', imports: [CuiRenderDynamicComponentsComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CuiRenderDynamicComponentsService], template: "<cui-render-dynamic-components />\r\n", styles: [".host{display:block;height:calc(100vh - 40px)}\n"] }]
21
+ }], ctorParameters: () => [] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1tb2RhbC91dGlsaXR5LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91dGlsaXR5LW1vZGFsL3V0aWxpdHktbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUNILGtCQUFrQixFQUNsQixtQ0FBbUMsRUFDbkMsaUNBQWlDLEVBQ3BDLE1BQU0sa0JBQWtCLENBQUM7O0FBVzFCLE1BQU0sT0FBTyx3QkFBd0I7SUFPakM7UUFOaUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDOUMsc0NBQWlDLEdBQUcsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFFNUUsWUFBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdDLHFCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFHOUUsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQztZQUN4QyxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUNoQyxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtTQUMzQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQVpRLHdCQUF3QjttR0FBeEIsd0JBQXdCLGdFQUZ0QixDQUFDLGlDQUFpQyxDQUFDLDBCQ2ZsRCx1Q0FDQSwwR0RTYyxtQ0FBbUM7OzRGQU9wQyx3QkFBd0I7a0JBVHBDLFNBQVM7K0JBQ0ksbUJBQW1CLFdBQ3BCLENBQUMsbUNBQW1DLENBQUMsY0FDbEMsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDVUlfRElBTE9HX0NPTlRFWFQsXHJcbiAgICBDdWlSZW5kZXJEeW5hbWljQ29tcG9uZW50c0NvbXBvbmVudCxcclxuICAgIEN1aVJlbmRlckR5bmFtaWNDb21wb25lbnRzU2VydmljZVxyXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2N1aS11dGlsaXR5LW1vZGFsJyxcclxuICAgIGltcG9ydHM6IFtDdWlSZW5kZXJEeW5hbWljQ29tcG9uZW50c0NvbXBvbmVudF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgdGVtcGxhdGVVcmw6ICd1dGlsaXR5LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAndXRpbGl0eS1tb2RhbC5jb21wb25lbnQuc2NzcycsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHByb3ZpZGVyczogW0N1aVJlbmRlckR5bmFtaWNDb21wb25lbnRzU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVV0aWxpdHlNb2RhbENvbXBvbmVudCB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aURpYWxvZ0NvbnRleHQgPSBpbmplY3QoQ1VJX0RJQUxPR19DT05URVhUKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpUmVuZGVyRHluYW1pY0NvbXBvbmVudHNTZXJ2aWNlID0gaW5qZWN0KEN1aVJlbmRlckR5bmFtaWNDb21wb25lbnRzU2VydmljZSk7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHV0aWxpdHkgPSB0aGlzLmN1aURpYWxvZ0NvbnRleHQuZGF0YS51dGlsaXR5O1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGluaXRpYWxDb21wb25lbnQgPSB0aGlzLmN1aURpYWxvZ0NvbnRleHQuZGF0YS5pbml0aWFsQ29tcG9uZW50O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuY3VpUmVuZGVyRHluYW1pY0NvbXBvbmVudHNTZXJ2aWNlLm9wZW4oe1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuaW5pdGlhbENvbXBvbmVudCxcclxuICAgICAgICAgICAgaW5wdXRzOiB7IGluaXRpYWxVdGlsaXR5OiB0aGlzLnV0aWxpdHkgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxjdWktcmVuZGVyLWR5bmFtaWMtY29tcG9uZW50cyAvPlxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const UTILITY_MODAL_SERVICE_TOKEN = new InjectionToken('UTILITY_MODAL_SERVICE_TOKEN');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS1tb2RhbC5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3V0aWxpdHktbW9kYWwvdXRpbGl0eS1tb2RhbC5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQXNDLDZCQUE2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgdHlwZSB7IEluc3RydWN0aW9uLCBTdG9yYWdlT2JqZWN0LCBDcml0ZXJpb24gfSBmcm9tIFwiQGN1YnktdWkvYXBpXCI7XHJcblxyXG5leHBvcnQgY29uc3QgVVRJTElUWV9NT0RBTF9TRVJWSUNFX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFV0aWxpdHlNb2RhbFNlcnZpY2U8VXRpbGl0eUVsZW1lbnQ+PignVVRJTElUWV9NT0RBTF9TRVJWSUNFX1RPS0VOJyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFV0aWxpdHlNb2RhbFNlcnZpY2U8VCBleHRlbmRzIFV0aWxpdHlFbGVtZW50PiB7XHJcbiAgICBjcmVhdGVVdGlsaXR5KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFN0b3JhZ2VPYmplY3Q8VD4+O1xyXG4gICAgY2hhbmdlVGl0bGUodXRpbGl0eUlkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG4gICAgY2hhbmdlRGVzY3JpcHRpb24/KHV0aWxpdHlJZDogc3RyaW5nLCBzaG9ydERlc2NyaXB0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG4gICAgdW5iaW5kVXRpbGl0eShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTdG9yYWdlT2JqZWN0PFQ+PjtcclxuICAgIGRlbGV0ZVV0aWxpdHkodXRpbGl0eTogU3RvcmFnZU9iamVjdDxUPik6IE9ic2VydmFibGU8dm9pZD47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFV0aWxpdHlFbGVtZW50ID0gSW5zdHJ1Y3Rpb24gfCBDcml0ZXJpb247XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { CuiUtilityReadonlyThumbnailComponent } from './utility-readonly-thumbnail.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS1yZWFkb25seS10aHVtYm5haWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDdWlVdGlsaXR5UmVhZG9ubHlUaHVtYm5haWxDb21wb25lbnQgfSBmcm9tICcuL3V0aWxpdHktcmVhZG9ubHktdGh1bWJuYWlsLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CuiUtilityReadonlyThumbnailComponent {
4
+ constructor() {
5
+ this.thumbnailUrl = input.required();
6
+ this.isVideo = input(false);
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityReadonlyThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CuiUtilityReadonlyThumbnailComponent, isStandalone: true, selector: "cui-utility-readonly-thumbnail", inputs: { thumbnailUrl: { classPropertyName: "thumbnailUrl", publicName: "thumbnailUrl", isSignal: true, isRequired: true, transformFunction: null }, isVideo: { classPropertyName: "isVideo", publicName: "isVideo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@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", styles: [".thumbnail{width:100%;max-height:271px;object-fit:contain}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityReadonlyThumbnailComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'cui-utility-readonly-thumbnail', imports: [], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@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", styles: [".thumbnail{width:100%;max-height:271px;object-fit:contain}\n"] }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS1yZWFkb25seS10aHVtYm5haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3V0aWxpdHktcmVhZG9ubHktdGh1bWJuYWlsL3V0aWxpdHktcmVhZG9ubHktdGh1bWJuYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91dGlsaXR5LXJlYWRvbmx5LXRodW1ibmFpbC91dGlsaXR5LXJlYWRvbmx5LXRodW1ibmFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFXeEUsTUFBTSxPQUFPLG9DQUFvQztJQVJqRDtRQVNvQixpQkFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWEsQ0FBQztRQUMzQyxZQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFDOytHQUhZLG9DQUFvQzttR0FBcEMsb0NBQW9DLGdYQ1hqRCx3WEFpQkE7OzRGRE5hLG9DQUFvQztrQkFSaEQsU0FBUzsrQkFDSSxnQ0FBZ0MsV0FDakMsRUFBRSxjQUNDLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgdHlwZSB7IEN1aUltZ1VybCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2N1aS11dGlsaXR5LXJlYWRvbmx5LXRodW1ibmFpbCcsXHJcbiAgICBpbXBvcnRzOiBbXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3V0aWxpdHktcmVhZG9ubHktdGh1bWJuYWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAndXRpbGl0eS1yZWFkb25seS10aHVtYm5haWwuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aVV0aWxpdHlSZWFkb25seVRodW1ibmFpbENvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGh1bWJuYWlsVXJsID0gaW5wdXQucmVxdWlyZWQ8Q3VpSW1nVXJsPigpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGlzVmlkZW8gPSBpbnB1dChmYWxzZSk7XHJcbn1cclxuIiwiQGxldCB1cmwgPSB0aHVtYm5haWxVcmwoKTtcclxuXHJcbkBpZiAodXJsPy5zcmM7IGFzIHNyYykge1xyXG4gICAgQGlmIChpc1ZpZGVvKCkpIHtcclxuICAgICAgICA8dmlkZW9cclxuICAgICAgICAgICAgY2xhc3M9XCJ0aHVtYm5haWxcIlxyXG4gICAgICAgICAgICBbc3JjXT1cInNyY1wiXHJcbiAgICAgICAgICAgIGNvbnRyb2xzXHJcbiAgICAgICAgPjwvdmlkZW8+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGh1bWJuYWlsXCJcclxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxyXG4gICAgICAgICAgICBbYWx0XT1cInVybD8ubmFtZVwiXHJcbiAgICAgICAgLz5cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { CuiUtilityThumbnailComponent } from './utility-thumbnail.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdXRpbGl0eS10aHVtYm5haWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDdWlVdGlsaXR5VGh1bWJuYWlsQ29tcG9uZW50IH0gZnJvbSAnLi91dGlsaXR5LXRodW1ibmFpbC5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,94 @@
1
+ import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';
2
+ import { TranslocoDirective, TranslocoService } from '@jsverse/transloco';
3
+ import { CuiFrameApiService } from '@cuby-ui/api';
4
+ import { FilesUploader, takeCaptureFromVideo } from '@cuby-ui/cdk';
5
+ import { CuiAlertService } from '../../components';
6
+ import * as i0 from "@angular/core";
7
+ export class CuiUtilityThumbnailComponent {
8
+ constructor() {
9
+ this.cuiAlertService = inject(CuiAlertService);
10
+ this.translocoService = inject(TranslocoService);
11
+ this.frameApiService = inject(CuiFrameApiService);
12
+ this.MAX_FILE_SIZE = 20971520;
13
+ this.thumbnailUrl = computed(() => {
14
+ const thumbnail = this.thumbnail();
15
+ if (thumbnail?.resource) {
16
+ return thumbnail.resource;
17
+ }
18
+ return this.baseResourceUrl() + thumbnail.fileId;
19
+ });
20
+ this.uploadButtonName = computed(() => {
21
+ const thumbnail = this.thumbnail();
22
+ if (thumbnail?.name) {
23
+ return this.translocoService.translate('REPLACE_FILE');
24
+ }
25
+ return this.translocoService.translate('UPLOAD_FILE');
26
+ });
27
+ this.thumbnail = model.required();
28
+ this.framerId = input.required();
29
+ this.baseResourceUrl = input.required();
30
+ }
31
+ onSelectFile() {
32
+ const types = 'image/jpg, image/jpeg, image/png, video/mp4';
33
+ FilesUploader.uploadFile(types).then((files) => this.getFile(files));
34
+ }
35
+ onRemoveThumbnail() {
36
+ const frameId = this.framerId();
37
+ const fragmentId = this.thumbnail()?.id;
38
+ if (!frameId || !fragmentId) {
39
+ return;
40
+ }
41
+ this.frameApiService.deleteResource(frameId, fragmentId).subscribe(() => {
42
+ this.thumbnail.update((prev) => ({ ...prev, fileId: null, name: null, resource: null }));
43
+ });
44
+ }
45
+ getFile(files) {
46
+ const file = files.item(0);
47
+ if (!file) {
48
+ return;
49
+ }
50
+ if (file.size > this.MAX_FILE_SIZE) {
51
+ this.cuiAlertService
52
+ .open(this.translocoService.translate('INVALID_FILE_SIZE'), {
53
+ status: 'error'
54
+ })
55
+ .subscribe();
56
+ return;
57
+ }
58
+ const isVideo = file.name.split('.').at(-1) === 'mp4';
59
+ const url = URL.createObjectURL(file);
60
+ if (isVideo) {
61
+ this.getCaptureFromVideo(url, file);
62
+ }
63
+ else {
64
+ this.thumbnail.update((prev) => ({ ...prev, name: file.name, resource: url }));
65
+ }
66
+ this.uploadFile(file);
67
+ }
68
+ uploadFile(file) {
69
+ const frameId = this.framerId();
70
+ const fragmentId = this.thumbnail()?.id;
71
+ if (!frameId || !fragmentId) {
72
+ return;
73
+ }
74
+ const formData = new FormData();
75
+ formData.append('resource', file);
76
+ this.frameApiService.uploadResource(formData, frameId, fragmentId).subscribe();
77
+ }
78
+ getCaptureFromVideo(url, file) {
79
+ takeCaptureFromVideo(url).then((capture) => {
80
+ this.thumbnail.update((prev) => ({
81
+ ...prev,
82
+ name: (file?.name || prev?.name),
83
+ resource: capture
84
+ }));
85
+ });
86
+ }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CuiUtilityThumbnailComponent, isStandalone: true, selector: "cui-utility-thumbnail", inputs: { thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, baseResourceUrl: { classPropertyName: "baseResourceUrl", publicName: "baseResourceUrl", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { thumbnail: "thumbnailChange" }, ngImport: i0, template: "<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", styles: [".file{display:flex;flex-direction:column;gap:4px}.title{font-weight:500;font-size:14px;line-height:20px;display:flex;gap:2px}.title_required{color:var(--cui-danger)}.upload{padding:12px 16px;border-radius:8px;border:1px solid var(--cui-base-200);background:var(--cui-base-10)}.upload-file{display:flex;align-items:center;gap:8px}.upload-file input[type=file]{display:none}.info{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.accepted{color:var(--cui-base-500)}.remove-button ::ng-deep .c-content{color:var(--cui-danger)!important}.image{position:relative;display:inline-block}.image__view{border-radius:8px;object-fit:cover}.image__name{position:absolute;top:6px;left:14px;color:var(--cui-base-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px;z-index:1}.image:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0003;z-index:0;pointer-events:none;border-radius:8px}\n"], dependencies: [{ kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiUtilityThumbnailComponent, decorators: [{
91
+ type: Component,
92
+ args: [{ selector: 'cui-utility-thumbnail', imports: [TranslocoDirective], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [".file{display:flex;flex-direction:column;gap:4px}.title{font-weight:500;font-size:14px;line-height:20px;display:flex;gap:2px}.title_required{color:var(--cui-danger)}.upload{padding:12px 16px;border-radius:8px;border:1px solid var(--cui-base-200);background:var(--cui-base-10)}.upload-file{display:flex;align-items:center;gap:8px}.upload-file input[type=file]{display:none}.info{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.accepted{color:var(--cui-base-500)}.remove-button ::ng-deep .c-content{color:var(--cui-danger)!important}.image{position:relative;display:inline-block}.image__view{border-radius:8px;object-fit:cover}.image__name{position:absolute;top:6px;left:14px;color:var(--cui-base-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px;z-index:1}.image:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0003;z-index:0;pointer-events:none;border-radius:8px}\n"] }]
93
+ }] });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS10aHVtYm5haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3V0aWxpdHktdGh1bWJuYWlsL3V0aWxpdHktdGh1bWJuYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91dGlsaXR5LXRodW1ibmFpbC91dGlsaXR5LXRodW1ibmFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBVW5ELE1BQU0sT0FBTyw0QkFBNEI7SUFSekM7UUFTcUIsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsb0JBQWUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUzQyxrQkFBYSxHQUFHLFFBQVEsQ0FBQztRQUV6QixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRW5DLElBQUksU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDOUIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLFNBQVUsQ0FBQyxNQUFPLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFDZ0IscUJBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbkMsSUFBSSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlDLENBQUM7UUFDNUQsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNwQyxvQkFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztLQXlFOUQ7SUF2RWEsWUFBWTtRQUNsQixNQUFNLEtBQUssR0FBRyw2Q0FBNkMsQ0FBQztRQUU1RCxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFUyxpQkFBaUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxPQUFPLENBQUMsS0FBZTtRQUMzQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsZUFBZTtpQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUN4RCxNQUFNLEVBQUUsT0FBTzthQUNsQixDQUFDO2lCQUNELFNBQVMsRUFBRSxDQUFDO1lBRWpCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFVO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuRixDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBVyxFQUFFLElBQVc7UUFDaEQsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdCLEdBQUcsSUFBSztnQkFDUixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUU7Z0JBQ2pDLFFBQVEsRUFBRSxPQUFPO2FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXBHUSw0QkFBNEI7bUdBQTVCLDRCQUE0QixnaUJDakJ6QywyeERBaURBLHkrQkR0Q2Msa0JBQWtCOzs0RkFNbkIsNEJBQTRCO2tCQVJ4QyxTQUFTOytCQUNJLHVCQUF1QixXQUN4QixDQUFDLGtCQUFrQixDQUFDLGNBQ2pCLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29EaXJlY3RpdmUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xyXG5pbXBvcnQgdHlwZSB7IFJlc291cmNlRnJhZ21lbnQgfSBmcm9tICdAY3VieS11aS9hcGknO1xyXG5pbXBvcnQgeyBDdWlGcmFtZUFwaVNlcnZpY2UgfSBmcm9tICdAY3VieS11aS9hcGknO1xyXG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHsgRmlsZXNVcGxvYWRlciwgdGFrZUNhcHR1cmVGcm9tVmlkZW8gfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5cclxuaW1wb3J0IHsgQ3VpQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY3VpLXV0aWxpdHktdGh1bWJuYWlsJyxcclxuICAgIGltcG9ydHM6IFtUcmFuc2xvY29EaXJlY3RpdmVdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlVXJsOiAndXRpbGl0eS10aHVtYm5haWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICd1dGlsaXR5LXRodW1ibmFpbC5jb21wb25lbnQuc2NzcycsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpVXRpbGl0eVRodW1ibmFpbENvbXBvbmVudCB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUFsZXJ0U2VydmljZSA9IGluamVjdChDdWlBbGVydFNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmcmFtZUFwaVNlcnZpY2UgPSBpbmplY3QoQ3VpRnJhbWVBcGlTZXJ2aWNlKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgTUFYX0ZJTEVfU0laRSA9IDIwOTcxNTIwO1xyXG5cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB0aHVtYm5haWxVcmwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdGh1bWJuYWlsID0gdGhpcy50aHVtYm5haWwoKTtcclxuXHJcbiAgICAgICAgaWYgKHRodW1ibmFpbD8ucmVzb3VyY2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRodW1ibmFpbC5yZXNvdXJjZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VSZXNvdXJjZVVybCgpICsgdGh1bWJuYWlsIS5maWxlSWQhO1xyXG4gICAgfSk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXBsb2FkQnV0dG9uTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCB0aHVtYm5haWwgPSB0aGlzLnRodW1ibmFpbCgpO1xyXG5cclxuICAgICAgICBpZiAodGh1bWJuYWlsPy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdSRVBMQUNFX0ZJTEUnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdVUExPQURfRklMRScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRodW1ibmFpbCA9IG1vZGVsLnJlcXVpcmVkPEN1aU51bGxhYmxlPFJlc291cmNlRnJhZ21lbnQ+PigpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGZyYW1lcklkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGJhc2VSZXNvdXJjZVVybCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgb25TZWxlY3RGaWxlKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHR5cGVzID0gJ2ltYWdlL2pwZywgaW1hZ2UvanBlZywgaW1hZ2UvcG5nLCB2aWRlby9tcDQnO1xyXG5cclxuICAgICAgICBGaWxlc1VwbG9hZGVyLnVwbG9hZEZpbGUodHlwZXMpLnRoZW4oKGZpbGVzKSA9PiB0aGlzLmdldEZpbGUoZmlsZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25SZW1vdmVUaHVtYm5haWwoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZnJhbWVJZCA9IHRoaXMuZnJhbWVySWQoKTtcclxuICAgICAgICBjb25zdCBmcmFnbWVudElkID0gdGhpcy50aHVtYm5haWwoKT8uaWQ7XHJcblxyXG4gICAgICAgIGlmICghZnJhbWVJZCB8fCAhZnJhZ21lbnRJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZyYW1lQXBpU2VydmljZS5kZWxldGVSZXNvdXJjZShmcmFtZUlkLCBmcmFnbWVudElkKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbC51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYhLCBmaWxlSWQ6IG51bGwsIG5hbWU6IG51bGwsIHJlc291cmNlOiBudWxsIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEZpbGUoZmlsZXM6IEZpbGVMaXN0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzLml0ZW0oMCk7XHJcblxyXG4gICAgICAgIGlmICghZmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5NQVhfRklMRV9TSVpFKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VpQWxlcnRTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAub3Blbih0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdJTlZBTElEX0ZJTEVfU0laRScpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXNWaWRlbyA9IGZpbGUubmFtZS5zcGxpdCgnLicpLmF0KC0xKSA9PT0gJ21wNCc7XHJcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcclxuXHJcbiAgICAgICAgaWYgKGlzVmlkZW8pIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDYXB0dXJlRnJvbVZpZGVvKHVybCwgZmlsZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50aHVtYm5haWwudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2ISwgbmFtZTogZmlsZS5uYW1lLCByZXNvdXJjZTogdXJsIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwbG9hZEZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZyYW1lSWQgPSB0aGlzLmZyYW1lcklkKCk7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRJZCA9IHRoaXMudGh1bWJuYWlsKCk/LmlkO1xyXG5cclxuICAgICAgICBpZiAoIWZyYW1lSWQgfHwgIWZyYWdtZW50SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Jlc291cmNlJywgZmlsZSk7XHJcblxyXG4gICAgICAgIHRoaXMuZnJhbWVBcGlTZXJ2aWNlLnVwbG9hZFJlc291cmNlKGZvcm1EYXRhLCBmcmFtZUlkLCBmcmFnbWVudElkKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENhcHR1cmVGcm9tVmlkZW8odXJsOiBzdHJpbmcsIGZpbGU/OiBGaWxlKTogdm9pZCB7XHJcbiAgICAgICAgdGFrZUNhcHR1cmVGcm9tVmlkZW8odXJsKS50aGVuKChjYXB0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsLnVwZGF0ZSgocHJldikgPT4gKHtcclxuICAgICAgICAgICAgICAgIC4uLnByZXYhLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogKGZpbGU/Lm5hbWUgfHwgcHJldj8ubmFtZSkhLFxyXG4gICAgICAgICAgICAgICAgcmVzb3VyY2U6IGNhcHR1cmVcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxzZWN0aW9uXHJcbiAgICAqdHJhbnNsb2NvPVwibGV0IHRcIlxyXG4gICAgY2xhc3M9XCJmaWxlXCJcclxuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7IHQoJ1RIVU1CTkFJTCcpIH19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZmlsZVwiPlxyXG4gICAgICAgICAgICBAaWYgKHRodW1ibmFpbCgpPy5uYW1lOyBhcyBmaWxlSWQpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2VfX25hbWVcIj57eyB0aHVtYm5haWwoKT8ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE86IG5nU3JjIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZV9fdmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwidGh1bWJuYWlsVXJsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE4NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlRodW1ibmFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY3VpQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVkLWdyYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uVXBsb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RGaWxlKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHVwbG9hZEJ1dHRvbk5hbWUoKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHRodW1ibmFpbCgpPy5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlbW92ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVtb3ZlVGh1bWJuYWlsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnUkVNT1ZFJykgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY2VwdGVkXCI+e3sgdCgnQUNDRVBURUQnKSB9fTogSlBHLCBKUEVHLCBQTkcsIE1QNCB7eyB0KCdVUF9UTycpIH19IDIwTUI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19