@cuby-ui/core 0.0.227 → 0.0.230

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 (269) hide show
  1. package/components/button/button.component.d.ts +1 -1
  2. package/components/content-wrapper/content-wrapper.component.d.ts +11 -0
  3. package/components/content-wrapper/index.d.ts +1 -0
  4. package/components/empty-state/empty-state.component.d.ts +7 -0
  5. package/components/empty-state/index.d.ts +1 -0
  6. package/components/ghost-input/ghost-input.component.d.ts +6 -0
  7. package/components/ghost-input/index.d.ts +1 -0
  8. package/components/index.d.ts +3 -0
  9. package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
  10. package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
  11. package/directives/tooltip/tooltip.component.d.ts +1 -1
  12. package/editor/components/editor-attaches-tool/editor-attaches-tool.component.d.ts +44 -0
  13. package/editor/components/editor-attaches-tool/editor-attaches-tool.options.d.ts +17 -0
  14. package/editor/components/editor-attaches-tool/index.d.ts +2 -0
  15. package/editor/components/editor-image-tool/editor-image-tool.component.d.ts +14 -0
  16. package/editor/components/editor-image-tool/editor-image-tool.options.d.ts +26 -0
  17. package/editor/components/editor-image-tool/index.d.ts +2 -0
  18. package/editor/components/editor-tool/editor-tool.component.d.ts +22 -0
  19. package/editor/components/editor-tool-modal/editor-tool-modal.component.d.ts +24 -0
  20. package/editor/components/editor-tool-modal/editor-tool-modal.options.d.ts +8 -0
  21. package/editor/components/editor-tool-modal/index.d.ts +2 -0
  22. package/editor/components/editor-tooltip/editor-tooltip.component.d.ts +16 -0
  23. package/editor/components/editor-tooltip/editor-tooltip.options.d.ts +9 -0
  24. package/editor/components/editor-tooltip/index.d.ts +2 -0
  25. package/editor/components/editor-video-tool/editor-video-tool.component.d.ts +12 -0
  26. package/editor/components/editor-video-tool/editor-video-tool.options.d.ts +26 -0
  27. package/editor/components/editor-video-tool/index.d.ts +2 -0
  28. package/editor/components/index.d.ts +7 -0
  29. package/editor/components/marker-modal/index.d.ts +3 -0
  30. package/editor/components/marker-modal/marker-modal.component.d.ts +62 -0
  31. package/editor/components/marker-modal/marker-modal.interfaces.d.ts +7 -0
  32. package/editor/components/marker-modal/marker-modal.options.d.ts +1 -0
  33. package/editor/components/marker-select/component/select-item/select-option.component.d.ts +7 -0
  34. package/editor/components/marker-select/index.d.ts +2 -0
  35. package/editor/components/marker-select/marker-select.component.d.ts +40 -0
  36. package/editor/components/marker-select/marker-select.options.d.ts +1 -0
  37. package/editor/config/custom-elements.d.ts +2 -0
  38. package/editor/config/editor.config.d.ts +3 -0
  39. package/editor/config/editor.provider.d.ts +2 -0
  40. package/editor/config/index.d.ts +2 -0
  41. package/editor/constants/editor.constants.d.ts +15 -0
  42. package/editor/constants/index.d.ts +1 -0
  43. package/editor/editor.component.d.ts +71 -0
  44. package/editor/events/editor-drag.event.d.ts +2 -0
  45. package/editor/events/editor-keyboard.event.d.ts +2 -0
  46. package/editor/events/editor-modal.event.d.ts +3 -0
  47. package/editor/events/editor-tooltip.event.d.ts +2 -0
  48. package/editor/events/set-editor-events.d.ts +1 -0
  49. package/editor/index.d.ts +9 -0
  50. package/editor/interfaces/angular-element.d.ts +2 -0
  51. package/editor/interfaces/blocks-request-data.d.ts +6 -0
  52. package/editor/interfaces/combined-block-adding-event.d.ts +7 -0
  53. package/editor/interfaces/combined-block-data.d.ts +5 -0
  54. package/editor/interfaces/combined-part-block-data.d.ts +7 -0
  55. package/editor/interfaces/custom-element.d.ts +5 -0
  56. package/editor/interfaces/event-action-data.d.ts +5 -0
  57. package/editor/interfaces/file-response-data.d.ts +10 -0
  58. package/editor/interfaces/full-block-data.d.ts +8 -0
  59. package/editor/interfaces/index.d.ts +14 -0
  60. package/editor/interfaces/main-editor-config.d.ts +15 -0
  61. package/editor/interfaces/mutation-actions.d.ts +5 -0
  62. package/editor/interfaces/parent.d.ts +4 -0
  63. package/editor/interfaces/tools.d.ts +4 -0
  64. package/editor/interfaces/tune.d.ts +6 -0
  65. package/editor/pipes/file-size.pipe.d.ts +9 -0
  66. package/editor/services/editor-service.options.d.ts +8 -0
  67. package/editor/services/editor.service.d.ts +23 -0
  68. package/editor/services/index.d.ts +6 -0
  69. package/editor/services/jtext-api.options.d.ts +20 -0
  70. package/editor/services/jtext-api.service.d.ts +23 -0
  71. package/editor/services/markers-service.options.d.ts +4 -0
  72. package/editor/services/markers.service.d.ts +11 -0
  73. package/editor/tools/attaches.tool.d.ts +28 -0
  74. package/editor/tools/bold.tool.d.ts +11 -0
  75. package/editor/tools/combined-text-block.tool.d.ts +49 -0
  76. package/editor/tools/custom-marker.tool.d.ts +16 -0
  77. package/editor/tools/header.tool.d.ts +8 -0
  78. package/editor/tools/image.tool.d.ts +37 -0
  79. package/editor/tools/index.d.ts +11 -0
  80. package/editor/tools/italic.tool.d.ts +12 -0
  81. package/editor/tools/link-marker.tool.d.ts +15 -0
  82. package/editor/tools/list.tool.d.ts +5 -0
  83. package/editor/tools/marker.tool.d.ts +36 -0
  84. package/editor/tools/role-marker.tool.d.ts +7 -0
  85. package/editor/tools/selection-base.tool.d.ts +24 -0
  86. package/editor/tools/tool-marker.tool.d.ts +7 -0
  87. package/editor/tools/video.tool.d.ts +32 -0
  88. package/editor/utils/create-link-modal.d.ts +3 -0
  89. package/editor/utils/create-tool-modal.d.ts +4 -0
  90. package/editor/utils/create-tooltip.d.ts +8 -0
  91. package/editor/utils/file-uploader.d.ts +26 -0
  92. package/editor/utils/generate-id.d.ts +1 -0
  93. package/editor/utils/index.d.ts +9 -0
  94. package/editor/utils/recalculate-indexes.d.ts +2 -0
  95. package/editor/utils/remove-element-tag-wrapper.d.ts +1 -0
  96. package/editor/utils/split-html.d.ts +1 -0
  97. package/editor/utils/url.validator.d.ts +2 -0
  98. package/editor/widgets/editor-block/editor-block.component.d.ts +22 -0
  99. package/editor/widgets/editor-block/index.d.ts +1 -0
  100. package/editor/widgets/editor-modal/editor-modal.component.d.ts +19 -0
  101. package/editor/widgets/editor-modal/index.d.ts +1 -0
  102. package/editor/widgets/editor-readonly/editor-readonly.component.d.ts +28 -0
  103. package/editor/widgets/editor-readonly/editor-readonly.options.d.ts +5 -0
  104. package/editor/widgets/editor-readonly/index.d.ts +2 -0
  105. package/editor/widgets/index.d.ts +3 -0
  106. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +2 -2
  107. package/esm2022/components/content-wrapper/content-wrapper.component.mjs +29 -0
  108. package/esm2022/components/content-wrapper/index.mjs +2 -0
  109. package/esm2022/components/empty-state/empty-state.component.mjs +17 -0
  110. package/esm2022/components/empty-state/index.mjs +2 -0
  111. package/esm2022/components/ghost-input/ghost-input.component.mjs +16 -0
  112. package/esm2022/components/ghost-input/index.mjs +2 -0
  113. package/esm2022/components/index.mjs +4 -1
  114. package/esm2022/directives/tooltip/tooltip-describe.directive.mjs +5 -3
  115. package/esm2022/directives/tooltip/tooltip-position.directive.mjs +6 -3
  116. package/esm2022/directives/tooltip/tooltip.component.mjs +6 -3
  117. package/esm2022/editor/components/editor-attaches-tool/editor-attaches-tool.component.mjs +76 -0
  118. package/esm2022/editor/components/editor-attaches-tool/editor-attaches-tool.options.mjs +2 -0
  119. package/esm2022/editor/components/editor-attaches-tool/index.mjs +3 -0
  120. package/esm2022/editor/components/editor-image-tool/editor-image-tool.component.mjs +43 -0
  121. package/esm2022/editor/components/editor-image-tool/editor-image-tool.options.mjs +2 -0
  122. package/esm2022/editor/components/editor-image-tool/index.mjs +3 -0
  123. package/esm2022/editor/components/editor-tool/editor-tool.component.mjs +74 -0
  124. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.component.mjs +69 -0
  125. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.options.mjs +2 -0
  126. package/esm2022/editor/components/editor-tool-modal/index.mjs +3 -0
  127. package/esm2022/editor/components/editor-tooltip/editor-tooltip.component.mjs +45 -0
  128. package/esm2022/editor/components/editor-tooltip/editor-tooltip.options.mjs +2 -0
  129. package/esm2022/editor/components/editor-tooltip/index.mjs +3 -0
  130. package/esm2022/editor/components/editor-video-tool/editor-video-tool.component.mjs +41 -0
  131. package/esm2022/editor/components/editor-video-tool/editor-video-tool.options.mjs +2 -0
  132. package/esm2022/editor/components/editor-video-tool/index.mjs +3 -0
  133. package/esm2022/editor/components/index.mjs +8 -0
  134. package/esm2022/editor/components/marker-modal/index.mjs +3 -0
  135. package/esm2022/editor/components/marker-modal/marker-modal.component.mjs +261 -0
  136. package/esm2022/editor/components/marker-modal/marker-modal.interfaces.mjs +2 -0
  137. package/esm2022/editor/components/marker-modal/marker-modal.options.mjs +2 -0
  138. package/esm2022/editor/components/marker-select/component/select-item/select-option.component.mjs +15 -0
  139. package/esm2022/editor/components/marker-select/index.mjs +3 -0
  140. package/esm2022/editor/components/marker-select/marker-select.component.mjs +155 -0
  141. package/esm2022/editor/components/marker-select/marker-select.options.mjs +2 -0
  142. package/esm2022/editor/config/custom-elements.mjs +32 -0
  143. package/esm2022/editor/config/editor.config.mjs +30 -0
  144. package/esm2022/editor/config/editor.provider.mjs +19 -0
  145. package/esm2022/editor/config/index.mjs +3 -0
  146. package/esm2022/editor/constants/editor.constants.mjs +20 -0
  147. package/esm2022/editor/constants/index.mjs +2 -0
  148. package/esm2022/editor/editor.component.mjs +380 -0
  149. package/esm2022/editor/events/editor-drag.event.mjs +7 -0
  150. package/esm2022/editor/events/editor-keyboard.event.mjs +33 -0
  151. package/esm2022/editor/events/editor-modal.event.mjs +31 -0
  152. package/esm2022/editor/events/editor-tooltip.event.mjs +63 -0
  153. package/esm2022/editor/events/set-editor-events.mjs +11 -0
  154. package/esm2022/editor/i18n/en.json +14 -0
  155. package/esm2022/editor/index.mjs +8 -0
  156. package/esm2022/editor/interfaces/angular-element.mjs +2 -0
  157. package/esm2022/editor/interfaces/blocks-request-data.mjs +2 -0
  158. package/esm2022/editor/interfaces/combined-block-adding-event.mjs +2 -0
  159. package/esm2022/editor/interfaces/combined-block-data.mjs +2 -0
  160. package/esm2022/editor/interfaces/combined-part-block-data.mjs +2 -0
  161. package/esm2022/editor/interfaces/custom-element.mjs +2 -0
  162. package/esm2022/editor/interfaces/event-action-data.mjs +2 -0
  163. package/esm2022/editor/interfaces/file-response-data.mjs +2 -0
  164. package/esm2022/editor/interfaces/full-block-data.mjs +2 -0
  165. package/esm2022/editor/interfaces/index.mjs +14 -0
  166. package/esm2022/editor/interfaces/main-editor-config.mjs +2 -0
  167. package/esm2022/editor/interfaces/mutation-actions.mjs +2 -0
  168. package/esm2022/editor/interfaces/parent.mjs +2 -0
  169. package/esm2022/editor/interfaces/tools.mjs +2 -0
  170. package/esm2022/editor/interfaces/tune.mjs +2 -0
  171. package/esm2022/editor/pipes/file-size.pipe.mjs +25 -0
  172. package/esm2022/editor/services/editor-service.options.mjs +4 -0
  173. package/esm2022/editor/services/editor.service.mjs +138 -0
  174. package/esm2022/editor/services/index.mjs +7 -0
  175. package/esm2022/editor/services/jtext-api.options.mjs +2 -0
  176. package/esm2022/editor/services/jtext-api.service.mjs +50 -0
  177. package/esm2022/editor/services/markers-service.options.mjs +2 -0
  178. package/esm2022/editor/services/markers.service.mjs +79 -0
  179. package/esm2022/editor/tools/attaches.tool.mjs +96 -0
  180. package/esm2022/editor/tools/bold.tool.mjs +33 -0
  181. package/esm2022/editor/tools/combined-text-block.tool.mjs +380 -0
  182. package/esm2022/editor/tools/custom-marker.tool.mjs +88 -0
  183. package/esm2022/editor/tools/header.tool.mjs +16 -0
  184. package/esm2022/editor/tools/image.tool.mjs +157 -0
  185. package/esm2022/editor/tools/index.mjs +12 -0
  186. package/esm2022/editor/tools/italic.tool.mjs +35 -0
  187. package/esm2022/editor/tools/link-marker.tool.mjs +80 -0
  188. package/esm2022/editor/tools/list.tool.mjs +10 -0
  189. package/esm2022/editor/tools/marker.tool.mjs +144 -0
  190. package/esm2022/editor/tools/role-marker.tool.mjs +17 -0
  191. package/esm2022/editor/tools/selection-base.tool.mjs +92 -0
  192. package/esm2022/editor/tools/tool-marker.tool.mjs +14 -0
  193. package/esm2022/editor/tools/video.tool.mjs +132 -0
  194. package/esm2022/editor/utils/create-link-modal.mjs +22 -0
  195. package/esm2022/editor/utils/create-tool-modal.mjs +45 -0
  196. package/esm2022/editor/utils/create-tooltip.mjs +44 -0
  197. package/esm2022/editor/utils/file-uploader.mjs +57 -0
  198. package/esm2022/editor/utils/generate-id.mjs +4 -0
  199. package/esm2022/editor/utils/index.mjs +10 -0
  200. package/esm2022/editor/utils/recalculate-indexes.mjs +32 -0
  201. package/esm2022/editor/utils/remove-element-tag-wrapper.mjs +11 -0
  202. package/esm2022/editor/utils/split-html.mjs +128 -0
  203. package/esm2022/editor/utils/url.validator.mjs +12 -0
  204. package/esm2022/editor/widgets/editor-block/editor-block.component.mjs +63 -0
  205. package/esm2022/editor/widgets/editor-block/index.mjs +2 -0
  206. package/esm2022/editor/widgets/editor-modal/editor-modal.component.mjs +47 -0
  207. package/esm2022/editor/widgets/editor-modal/index.mjs +2 -0
  208. package/esm2022/editor/widgets/editor-readonly/editor-readonly.component.mjs +40 -0
  209. package/esm2022/editor/widgets/editor-readonly/editor-readonly.options.mjs +2 -0
  210. package/esm2022/editor/widgets/editor-readonly/index.mjs +2 -0
  211. package/esm2022/editor/widgets/index.mjs +4 -0
  212. package/esm2022/index.mjs +3 -1
  213. package/esm2022/interceptors/loader.interceptor.mjs +3 -3
  214. package/esm2022/services/loader.options.mjs +2 -2
  215. package/esm2022/services/loader.service.mjs +11 -11
  216. package/esm2022/utils/default-validators/create-default-validators.mjs +12 -0
  217. package/esm2022/utils/default-validators/extra-spaces.options.mjs +11 -0
  218. package/esm2022/utils/default-validators/extra-spaces.validators.mjs +16 -0
  219. package/esm2022/utils/default-validators/index.mjs +2 -0
  220. package/esm2022/utils/index.mjs +2 -1
  221. package/esm2022/widgets/categories/categories.component.mjs +75 -0
  222. package/esm2022/widgets/categories/components/categories-list/categories-list.component.mjs +16 -0
  223. package/esm2022/widgets/categories/components/categories-list/index.mjs +2 -0
  224. package/esm2022/widgets/categories/components/category-form/category-form.component.mjs +79 -0
  225. package/esm2022/widgets/categories/components/category-form/index.mjs +2 -0
  226. package/esm2022/widgets/categories/components/category-item/category-item.component.mjs +123 -0
  227. package/esm2022/widgets/categories/components/category-item/index.mjs +2 -0
  228. package/esm2022/widgets/categories/components/create-category-item/create-category-item.component.mjs +25 -0
  229. package/esm2022/widgets/categories/components/create-category-item/index.mjs +2 -0
  230. package/esm2022/widgets/categories/components/index.mjs +3 -0
  231. package/esm2022/widgets/categories/index.mjs +2 -0
  232. package/esm2022/widgets/categories/services/index.mjs +2 -0
  233. package/esm2022/widgets/categories/services/selected-category.service.mjs +38 -0
  234. package/esm2022/widgets/general-control-error-hint/general-control-error-hint.component.mjs +21 -0
  235. package/esm2022/widgets/general-control-error-hint/index.mjs +2 -0
  236. package/esm2022/widgets/index.mjs +3 -0
  237. package/esm2022/widgets/utility-info/index.mjs +2 -0
  238. package/esm2022/widgets/utility-info/utility-info.component.mjs +224 -0
  239. package/fesm2022/cuby-ui-core-en-D3DnyYmu.mjs +29 -0
  240. package/fesm2022/cuby-ui-core-en-D3DnyYmu.mjs.map +1 -0
  241. package/fesm2022/cuby-ui-core.mjs +4047 -67
  242. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  243. package/index.d.ts +2 -0
  244. package/package.json +3 -3
  245. package/services/loader.options.d.ts +2 -2
  246. package/services/loader.service.d.ts +7 -7
  247. package/utils/default-validators/create-default-validators.d.ts +5 -0
  248. package/utils/default-validators/extra-spaces.options.d.ts +2 -0
  249. package/utils/default-validators/extra-spaces.validators.d.ts +3 -0
  250. package/utils/default-validators/index.d.ts +1 -0
  251. package/utils/index.d.ts +1 -0
  252. package/widgets/categories/categories.component.d.ts +24 -0
  253. package/widgets/categories/components/categories-list/categories-list.component.d.ts +7 -0
  254. package/widgets/categories/components/categories-list/index.d.ts +1 -0
  255. package/widgets/categories/components/category-form/category-form.component.d.ts +28 -0
  256. package/widgets/categories/components/category-form/index.d.ts +1 -0
  257. package/widgets/categories/components/category-item/category-item.component.d.ts +40 -0
  258. package/widgets/categories/components/category-item/index.d.ts +1 -0
  259. package/widgets/categories/components/create-category-item/create-category-item.component.d.ts +10 -0
  260. package/widgets/categories/components/create-category-item/index.d.ts +1 -0
  261. package/widgets/categories/components/index.d.ts +2 -0
  262. package/widgets/categories/index.d.ts +1 -0
  263. package/widgets/categories/services/index.d.ts +1 -0
  264. package/widgets/categories/services/selected-category.service.d.ts +18 -0
  265. package/widgets/general-control-error-hint/general-control-error-hint.component.d.ts +9 -0
  266. package/widgets/general-control-error-hint/index.d.ts +1 -0
  267. package/widgets/index.d.ts +2 -0
  268. package/widgets/utility-info/index.d.ts +1 -0
  269. package/widgets/utility-info/utility-info.component.d.ts +45 -0
@@ -0,0 +1,32 @@
1
+ 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";
2
+ export const EDITOR_CUSTOM_ELEMENTS = [
3
+ {
4
+ selector: EDITOR_TOOLTIP_SELECTOR,
5
+ component: EditorTooltipComponent
6
+ },
7
+ {
8
+ selector: MARKER_SELECT_SELECTOR,
9
+ component: MarkerSelectComponent
10
+ },
11
+ {
12
+ selector: EDITOR_TOOL_MODAL_SELECTOR,
13
+ component: EditorToolModalComponent
14
+ },
15
+ {
16
+ selector: MARKER_MODAL_SELECTOR,
17
+ component: MarkerModalComponent
18
+ },
19
+ {
20
+ selector: EDITOR_VIDEO_TOOL_SELECTOR,
21
+ component: EditorVideoToolComponent
22
+ },
23
+ {
24
+ selector: EDITOR_IMAGE_TOOL_SELECTOR,
25
+ component: EditorImageToolComponent
26
+ },
27
+ {
28
+ selector: EDITOR_ATTACHES_TOOL_SELECTOR,
29
+ component: EditorAttachesToolComponent
30
+ }
31
+ ];
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWVsZW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvY29uZmlnL2N1c3RvbS1lbGVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMVksTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWdDO0lBQy9EO1FBQ0ksUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxTQUFTLEVBQUUsc0JBQXNCO0tBQ3BDO0lBQ0Q7UUFDSSxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLFNBQVMsRUFBRSxxQkFBcUI7S0FDbkM7SUFDRDtRQUNJLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsU0FBUyxFQUFFLHdCQUF3QjtLQUN0QztJQUNEO1FBQ0ksUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixTQUFTLEVBQUUsb0JBQW9CO0tBQ2xDO0lBQ0Q7UUFDSSxRQUFRLEVBQUUsMEJBQTBCO1FBQ3BDLFNBQVMsRUFBRSx3QkFBd0I7S0FDdEM7SUFDRDtRQUNJLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsU0FBUyxFQUFFLHdCQUF3QjtLQUN0QztJQUNEO1FBQ0ksUUFBUSxFQUFFLDZCQUE2QjtRQUN2QyxTQUFTLEVBQUUsMkJBQTJCO0tBQ3pDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVESVRPUl9BVFRBQ0hFU19UT09MX1NFTEVDVE9SLCBFRElUT1JfSU1BR0VfVE9PTF9TRUxFQ1RPUiwgRURJVE9SX1RPT0xfTU9EQUxfU0VMRUNUT1IsIEVESVRPUl9UT09MVElQX1NFTEVDVE9SLCBFRElUT1JfVklERU9fVE9PTF9TRUxFQ1RPUiwgRWRpdG9yQXR0YWNoZXNUb29sQ29tcG9uZW50LCBFZGl0b3JJbWFnZVRvb2xDb21wb25lbnQsIEVkaXRvclRvb2xNb2RhbENvbXBvbmVudCwgRWRpdG9yVG9vbHRpcENvbXBvbmVudCwgRWRpdG9yVmlkZW9Ub29sQ29tcG9uZW50LCBNQVJLRVJfTU9EQUxfU0VMRUNUT1IsIE1BUktFUl9TRUxFQ1RfU0VMRUNUT1IsIE1hcmtlck1vZGFsQ29tcG9uZW50LCBNYXJrZXJTZWxlY3RDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50c1wiO1xyXG5pbXBvcnQgeyBDdWlDdXN0b21FbGVtZW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBFRElUT1JfQ1VTVE9NX0VMRU1FTlRTOiByZWFkb25seSBDdWlDdXN0b21FbGVtZW50W10gPSBbXHJcbiAgICB7XHJcbiAgICAgICAgc2VsZWN0b3I6IEVESVRPUl9UT09MVElQX1NFTEVDVE9SLFxyXG4gICAgICAgIGNvbXBvbmVudDogRWRpdG9yVG9vbHRpcENvbXBvbmVudFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBzZWxlY3RvcjogTUFSS0VSX1NFTEVDVF9TRUxFQ1RPUixcclxuICAgICAgICBjb21wb25lbnQ6IE1hcmtlclNlbGVjdENvbXBvbmVudFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBzZWxlY3RvcjogRURJVE9SX1RPT0xfTU9EQUxfU0VMRUNUT1IsXHJcbiAgICAgICAgY29tcG9uZW50OiBFZGl0b3JUb29sTW9kYWxDb21wb25lbnRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgc2VsZWN0b3I6IE1BUktFUl9NT0RBTF9TRUxFQ1RPUixcclxuICAgICAgICBjb21wb25lbnQ6IE1hcmtlck1vZGFsQ29tcG9uZW50XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHNlbGVjdG9yOiBFRElUT1JfVklERU9fVE9PTF9TRUxFQ1RPUixcclxuICAgICAgICBjb21wb25lbnQ6IEVkaXRvclZpZGVvVG9vbENvbXBvbmVudFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBzZWxlY3RvcjogRURJVE9SX0lNQUdFX1RPT0xfU0VMRUNUT1IsXHJcbiAgICAgICAgY29tcG9uZW50OiBFZGl0b3JJbWFnZVRvb2xDb21wb25lbnRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgc2VsZWN0b3I6IEVESVRPUl9BVFRBQ0hFU19UT09MX1NFTEVDVE9SLFxyXG4gICAgICAgIGNvbXBvbmVudDogRWRpdG9yQXR0YWNoZXNUb29sQ29tcG9uZW50XHJcbiAgICB9XHJcbl07XHJcbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { COMBINED_TEXT_BLOCK_NAME, DEFAULT_CONFIG } from '../constants';
2
+ import { CuiCombinedTextBlockTool, CuiBoldInlineTool, CuiItalicInlineTool, CuiLinkMarker } from '../tools';
3
+ export const getEditorConfig = (id, config = DEFAULT_CONFIG) => ({
4
+ holder: id,
5
+ logLevel: 'ERROR',
6
+ readOnly: config.readOnly,
7
+ autofocus: config.autofocus,
8
+ tools: {
9
+ paragraph: {
10
+ class: CuiCombinedTextBlockTool,
11
+ inlineToolbar: true,
12
+ config: {
13
+ placeholder: config.placeholder,
14
+ readonlyPlaceholder: config.readonlyPlaceholder
15
+ }
16
+ },
17
+ link: {
18
+ class: CuiLinkMarker
19
+ },
20
+ bold: {
21
+ class: CuiBoldInlineTool
22
+ },
23
+ italic: {
24
+ class: CuiItalicInlineTool
25
+ },
26
+ ...config.tools
27
+ },
28
+ defaultBlock: COMBINED_TEXT_BLOCK_NAME
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2NvbmZpZy9lZGl0b3IuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUzRyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxFQUFVLEVBQUUsU0FBMEIsY0FBYyxFQUFnQixFQUFFLENBQUMsQ0FBQztJQUNwRyxNQUFNLEVBQUUsRUFBRTtJQUNWLFFBQVEsRUFBRSxPQUFvQjtJQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7SUFDekIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO0lBQzNCLEtBQUssRUFBRTtRQUNILFNBQVMsRUFBRTtZQUNQLEtBQUssRUFBRSx3QkFBd0I7WUFDL0IsYUFBYSxFQUFFLElBQUk7WUFDbkIsTUFBTSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDL0IsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjthQUNsRDtTQUNKO1FBQ0QsSUFBSSxFQUFFO1lBQ0YsS0FBSyxFQUFFLGFBQWE7U0FDdkI7UUFDRCxJQUFJLEVBQUU7WUFDRixLQUFLLEVBQUUsaUJBQWlCO1NBQzNCO1FBQ0QsTUFBTSxFQUFFO1lBQ0osS0FBSyxFQUFFLG1CQUFtQjtTQUM3QjtRQUNELEdBQUcsTUFBTSxDQUFDLEtBQUs7S0FDbEI7SUFDRCxZQUFZLEVBQUUsd0JBQXdCO0NBQ3pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRWRpdG9yQ29uZmlnLCBMb2dMZXZlbHMgfSBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xyXG5cclxuaW1wb3J0IHsgQ09NQklORURfVEVYVF9CTE9DS19OQU1FLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB0eXBlIHsgQ3VpRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEN1aUNvbWJpbmVkVGV4dEJsb2NrVG9vbCwgQ3VpQm9sZElubGluZVRvb2wsIEN1aUl0YWxpY0lubGluZVRvb2wsIEN1aUxpbmtNYXJrZXIgfSBmcm9tICcuLi90b29scyc7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RWRpdG9yQ29uZmlnID0gKGlkOiBzdHJpbmcsIGNvbmZpZzogQ3VpRWRpdG9yQ29uZmlnID0gREVGQVVMVF9DT05GSUcpOiBFZGl0b3JDb25maWcgPT4gKHtcclxuICAgIGhvbGRlcjogaWQsXHJcbiAgICBsb2dMZXZlbDogJ0VSUk9SJyBhcyBMb2dMZXZlbHMsXHJcbiAgICByZWFkT25seTogY29uZmlnLnJlYWRPbmx5LFxyXG4gICAgYXV0b2ZvY3VzOiBjb25maWcuYXV0b2ZvY3VzLFxyXG4gICAgdG9vbHM6IHtcclxuICAgICAgICBwYXJhZ3JhcGg6IHtcclxuICAgICAgICAgICAgY2xhc3M6IEN1aUNvbWJpbmVkVGV4dEJsb2NrVG9vbCxcclxuICAgICAgICAgICAgaW5saW5lVG9vbGJhcjogdHJ1ZSxcclxuICAgICAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogY29uZmlnLnBsYWNlaG9sZGVyLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlQbGFjZWhvbGRlcjogY29uZmlnLnJlYWRvbmx5UGxhY2Vob2xkZXJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGluazoge1xyXG4gICAgICAgICAgICBjbGFzczogQ3VpTGlua01hcmtlclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYm9sZDoge1xyXG4gICAgICAgICAgICBjbGFzczogQ3VpQm9sZElubGluZVRvb2xcclxuICAgICAgICB9LFxyXG4gICAgICAgIGl0YWxpYzoge1xyXG4gICAgICAgICAgICBjbGFzczogQ3VpSXRhbGljSW5saW5lVG9vbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uY29uZmlnLnRvb2xzXHJcbiAgICB9LFxyXG4gICAgZGVmYXVsdEJsb2NrOiBDT01CSU5FRF9URVhUX0JMT0NLX05BTUVcclxufSk7XHJcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { APP_INITIALIZER, Injector } from '@angular/core';
2
+ import { createCustomElement } from '@angular/elements';
3
+ import { EDITOR_CUSTOM_ELEMENTS } from './custom-elements';
4
+ export function cuiProvideEditor() {
5
+ return [
6
+ {
7
+ provide: APP_INITIALIZER,
8
+ useFactory: (injector) => () => {
9
+ EDITOR_CUSTOM_ELEMENTS.forEach(({ component, selector }) => {
10
+ const element = createCustomElement(component, { injector });
11
+ window.customElements.define(selector, element);
12
+ });
13
+ },
14
+ deps: [Injector],
15
+ multi: true,
16
+ },
17
+ ];
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvY29uZmlnL2VkaXRvci5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzRCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzVCLE9BQU87UUFDSDtZQUNJLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSxDQUFDLFFBQWtCLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFDckMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtvQkFDdkQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFFN0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNwRCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDaEIsS0FBSyxFQUFFLElBQUk7U0FDZDtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3RvciwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY3JlYXRlQ3VzdG9tRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcclxuXHJcbmltcG9ydCB7IEVESVRPUl9DVVNUT01fRUxFTUVOVFMgfSBmcm9tICcuL2N1c3RvbS1lbGVtZW50cyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3VpUHJvdmlkZUVkaXRvcigpOiBQcm92aWRlciB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBFRElUT1JfQ1VTVE9NX0VMRU1FTlRTLmZvckVhY2goKHsgY29tcG9uZW50LCBzZWxlY3RvciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGNyZWF0ZUN1c3RvbUVsZW1lbnQoY29tcG9uZW50LCB7IGluamVjdG9yIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKHNlbGVjdG9yLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZXBzOiBbSW5qZWN0b3JdLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgXTtcclxufVxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { getEditorConfig } from './editor.config';
2
+ export { cuiProvideEditor } from './editor.provider';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZ2V0RWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9lZGl0b3IuY29uZmlnJztcclxuZXhwb3J0IHsgY3VpUHJvdmlkZUVkaXRvciB9IGZyb20gJy4vZWRpdG9yLnByb3ZpZGVyJztcclxuIl19
@@ -0,0 +1,20 @@
1
+ export const COMBINED_TEXT_BLOCK_PART = 'combined-text-block-part';
2
+ export const COMBINED_TEXT_BLOCK = 'combined-text-block';
3
+ export const COMBINED_TEXT_BLOCK_NAME = 'paragraph';
4
+ export const COMBINED_TEXT_BLOCK_ADDED = 'combinedTextBlockAdded';
5
+ export const COMBINED_TEXT_BLOCK_UPDATED = 'combinedTextBlockUpdated';
6
+ export const COMBINED_TEXT_BLOCK_REMOVED = 'combinedTextBlockRemoved';
7
+ export const SPLIT_MAX_LENGTH = 1000;
8
+ export const SPLIT_LENGTH = 500;
9
+ export const EDITOR_SELECTOR = '[data-editor]';
10
+ export const DEFAULT_PLACEHOLDER = "Type text or '/' for commands...";
11
+ export const DEFAULT_READONLY_PLACEHOLDER = "No 'Description' was provided";
12
+ export const DEFAULT_CONFIG = {
13
+ tools: {},
14
+ readOnly: false,
15
+ autofocus: false
16
+ };
17
+ export const CuiEditorTranslations = {
18
+ en: import('../i18n/en.json'),
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2NvbnN0YW50cy9lZGl0b3IuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLDBCQUEwQixDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLFdBQVcsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyx3QkFBd0IsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRywwQkFBMEIsQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRywwQkFBMEIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQztBQUVoQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGtDQUFrQyxDQUFDO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLCtCQUErQixDQUFDO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBb0I7SUFDM0MsS0FBSyxFQUFFLEVBQUU7SUFDVCxRQUFRLEVBQUUsS0FBSztJQUNmLFNBQVMsRUFBRSxLQUFLO0NBQ25CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUM7SUFDdkUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztDQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRpb24gfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBDdWlFZGl0b3JDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQgPSAnY29tYmluZWQtdGV4dC1ibG9jay1wYXJ0JztcclxuZXhwb3J0IGNvbnN0IENPTUJJTkVEX1RFWFRfQkxPQ0sgPSAnY29tYmluZWQtdGV4dC1ibG9jayc7XHJcbmV4cG9ydCBjb25zdCBDT01CSU5FRF9URVhUX0JMT0NLX05BTUUgPSAncGFyYWdyYXBoJztcclxuZXhwb3J0IGNvbnN0IENPTUJJTkVEX1RFWFRfQkxPQ0tfQURERUQgPSAnY29tYmluZWRUZXh0QmxvY2tBZGRlZCc7XHJcbmV4cG9ydCBjb25zdCBDT01CSU5FRF9URVhUX0JMT0NLX1VQREFURUQgPSAnY29tYmluZWRUZXh0QmxvY2tVcGRhdGVkJztcclxuZXhwb3J0IGNvbnN0IENPTUJJTkVEX1RFWFRfQkxPQ0tfUkVNT1ZFRCA9ICdjb21iaW5lZFRleHRCbG9ja1JlbW92ZWQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNQTElUX01BWF9MRU5HVEggPSAxMDAwO1xyXG5leHBvcnQgY29uc3QgU1BMSVRfTEVOR1RIID0gNTAwO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVESVRPUl9TRUxFQ1RPUiA9ICdbZGF0YS1lZGl0b3JdJztcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBQ0VIT0xERVIgPSBcIlR5cGUgdGV4dCBvciAnLycgZm9yIGNvbW1hbmRzLi4uXCI7XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFQURPTkxZX1BMQUNFSE9MREVSID0gXCJObyAnRGVzY3JpcHRpb24nIHdhcyBwcm92aWRlZFwiO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05GSUc6IEN1aUVkaXRvckNvbmZpZyA9IHtcclxuICAgIHRvb2xzOiB7fSxcclxuICAgIHJlYWRPbmx5OiBmYWxzZSxcclxuICAgIGF1dG9mb2N1czogZmFsc2VcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBDdWlFZGl0b3JUcmFuc2xhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFByb21pc2U8VHJhbnNsYXRpb24+PiA9IHtcclxuICAgIGVuOiBpbXBvcnQoJy4uL2kxOG4vZW4uanNvbicpLFxyXG59IGFzIGNvbnN0O1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './editor.constants';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb25zdGFudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWRpdG9yLmNvbnN0YW50cyc7XHJcbiJdfQ==
@@ -0,0 +1,380 @@
1
+ import { ChangeDetectionStrategy, Component, computed, DestroyRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import EditorJS from '@editorjs/editorjs';
4
+ import { concatMap, delay, finalize, fromEvent, map, Subject, takeWhile, tap, throttleTime, timer, toArray } from 'rxjs';
5
+ import { getEditorConfig } from './config';
6
+ import { COMBINED_TEXT_BLOCK_NAME, COMBINED_TEXT_BLOCK_PART, DEFAULT_CONFIG } from './constants/editor.constants';
7
+ import { setEditorEvents } from './events/set-editor-events';
8
+ import { CuiEditorService, CuiJTextApiService } from './services';
9
+ import { recalculateIndexes } from './utils/recalculate-indexes';
10
+ import * as i0 from "@angular/core";
11
+ export class CuiEditorComponent {
12
+ constructor() {
13
+ this.destroy = inject(DestroyRef);
14
+ this.editorService = inject(CuiEditorService);
15
+ this.jTextService = inject(CuiJTextApiService);
16
+ this.POOLING_DELAY = 100;
17
+ this.ELEMENT_SPACE_TO_BOTTOM = 150;
18
+ this.SCROLL_THROTTLE_TIME = 200;
19
+ this.isReadonly = computed(() => this.config?.readOnly);
20
+ this.emptyQueue = new Subject();
21
+ this.editorEmpty = new EventEmitter();
22
+ this.config = DEFAULT_CONFIG;
23
+ this.requestSize = 40;
24
+ this.isSkipCombinedBlockOnChange = [];
25
+ this.isFirst = true;
26
+ this.isChanging = false;
27
+ this.isSkip = false;
28
+ this.isRequested = false;
29
+ this.isDestroyed = false;
30
+ this.blockIdsMap = new Map();
31
+ this.combinedBlocks = new Map();
32
+ this.index = 0;
33
+ this.page = 0;
34
+ this.addedBlocks = [];
35
+ this.updatedBlocks = [];
36
+ this.removedBlocksIds = [];
37
+ this.changesQueue = [];
38
+ this.abortController = new AbortController();
39
+ }
40
+ ngOnChanges(changes) {
41
+ if (changes['editorID'] || changes['config']) {
42
+ this.initEditorChanges();
43
+ }
44
+ }
45
+ ngOnDestroy() {
46
+ this.isDestroyed = true;
47
+ this.destroyEditor();
48
+ }
49
+ onScrollEvent(element) {
50
+ const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;
51
+ const currentHeight = element.scrollTop + element.clientHeight;
52
+ if (currentHeight < overallHeight || this.isRequested) {
53
+ return;
54
+ }
55
+ this.isRequested = true;
56
+ const size = this.requestSize;
57
+ let blocksCount = 0;
58
+ this.getBlocks(this.page, size)
59
+ .pipe(tap((blocks) => (blocksCount = blocks.length)), finalize(() => {
60
+ this.isRequested = false;
61
+ if (blocksCount >= size) {
62
+ return;
63
+ }
64
+ this.scrollSubscription.unsubscribe();
65
+ }))
66
+ .subscribe();
67
+ this.page++;
68
+ }
69
+ async onEditorChange(_, event) {
70
+ if (this.isReadonly()) {
71
+ return;
72
+ }
73
+ if (!Array.isArray(event)) {
74
+ event = [event];
75
+ }
76
+ recalculateIndexes(this.editor.blocks);
77
+ if (this.isChanging) {
78
+ this.changesQueue.unshift(event);
79
+ }
80
+ this.startChanges(event);
81
+ this.editorEmpty.emit(this.checkIsEmpty());
82
+ }
83
+ onAddedCombinedBlock(data) {
84
+ if (this.isSkipCombinedBlockOnChange.length) {
85
+ this.isSkipCombinedBlockOnChange.pop();
86
+ return;
87
+ }
88
+ const blocksWithoutId = data.blocks.map((block) => ({
89
+ block: { ...block, id: undefined },
90
+ id: block.id
91
+ }));
92
+ this.addedBlocks.push(...blocksWithoutId);
93
+ }
94
+ onUpdatedCombinedBlock(updatedBlocks) {
95
+ if (!updatedBlocks.length) {
96
+ return;
97
+ }
98
+ this.updatedBlocks.push(...updatedBlocks);
99
+ }
100
+ onRemovedCombinedBlock(blockIds) {
101
+ if (!blockIds.length) {
102
+ return;
103
+ }
104
+ this.removedBlocksIds.push(...blockIds);
105
+ }
106
+ initEditorChanges() {
107
+ this.jTextService.addOptions(this.config.requestOptions);
108
+ this.editor = this.initEditor(this.editorID);
109
+ this.editor.isReady.then(() => {
110
+ this.editorElement = this.editorRef.nativeElement;
111
+ this.initEditorEvents(this.editorElement);
112
+ this.initScrollObserver();
113
+ this.startPooling(this.requestSize);
114
+ this.setListenersOnCustomBlockChanges();
115
+ });
116
+ }
117
+ initEditor(id) {
118
+ const config = this.config;
119
+ this.destroyEditor();
120
+ this.editor = new EditorJS({
121
+ ...getEditorConfig(id, config),
122
+ onChange: this.onEditorChange.bind(this)
123
+ });
124
+ return this.editor;
125
+ }
126
+ initScrollObserver() {
127
+ const element = this.config?.element ?? this.editorElement;
128
+ const scrollObserver = fromEvent(element, 'scroll');
129
+ this.scrollSubscription = scrollObserver
130
+ .pipe(takeUntilDestroyed(this.destroy), throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {
131
+ leading: true,
132
+ trailing: true
133
+ }), map(() => this.onScrollEvent(element)))
134
+ .subscribe();
135
+ }
136
+ initEditorEvents(element) {
137
+ const readOnly = this.isReadonly();
138
+ if (readOnly) {
139
+ return;
140
+ }
141
+ setEditorEvents(element, this.abortController.signal);
142
+ }
143
+ startPooling(size) {
144
+ const scrollElement = this.config?.element ?? this.editorElement;
145
+ const withoutPreload = this.config?.withoutPreload;
146
+ this.poolingSubscription = timer(0, this.POOLING_DELAY)
147
+ .pipe(concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))), tap(() => this.page++), takeWhile((blocks) => !withoutPreload &&
148
+ scrollElement.scrollHeight <= scrollElement.clientHeight &&
149
+ blocks.length >= size), finalize(() => {
150
+ if (this.isDestroyed) {
151
+ return;
152
+ }
153
+ this.setStartBlock();
154
+ }))
155
+ .subscribe();
156
+ }
157
+ destroyEditor() {
158
+ this.abortController.abort();
159
+ this.resetData();
160
+ // TODO: в рандом кейсах падает ошибка если убрать проверку на вызов destroy
161
+ this.editor?.destroy?.();
162
+ }
163
+ setListenersOnCustomBlockChanges() {
164
+ this.editorService.setListenersOnCustomBlockChanges(this.editor, {
165
+ removedCallback: this.onRemovedCombinedBlock.bind(this),
166
+ updatedCallback: this.onUpdatedCombinedBlock.bind(this),
167
+ addedCallback: this.onAddedCombinedBlock.bind(this)
168
+ });
169
+ }
170
+ async startChanges(event) {
171
+ if (this.isSkip || this.isChanging || !this.editor) {
172
+ this.isSkip = false;
173
+ return;
174
+ }
175
+ this.isChanging = true;
176
+ const editorOutput = await this.editor.save();
177
+ const events = event.filter((data) => data.detail.target.name !== COMBINED_TEXT_BLOCK_NAME);
178
+ const blocks = this.editorService.sortEventsByTypes(events);
179
+ const { addBlocks$, addedBlocks } = this.collectAddedBlocksRequest(blocks, editorOutput);
180
+ this.addedBlocks = [];
181
+ addBlocks$
182
+ .pipe(tap((blockIds) => this.setBlockIdsToMap(blockIds, addedBlocks)), concatMap(() => this.collectUpdatedBlocksRequest(blocks, editorOutput)), concatMap(() => this.collectRemovedBlocksRequest(blocks)))
183
+ .subscribe({
184
+ complete: () => this.startNextChange(),
185
+ error: () => this.startNextChange()
186
+ });
187
+ }
188
+ startNextChange() {
189
+ this.isChanging = false;
190
+ const nextEvents = this.changesQueue.pop();
191
+ if (nextEvents) {
192
+ this.startChanges(nextEvents);
193
+ }
194
+ this.emptyQueue.next(null);
195
+ }
196
+ collectAddedBlocksRequest(blocks, editorOutput) {
197
+ const defaultBlocksWithIndex = blocks["block-added" /* EventActions.add */].map((addedBlock) => this.editorService.getFullBlockData(addedBlock, editorOutput));
198
+ const combinedBlocksWithIndex = this.addedBlocks.map((block) => {
199
+ const element = this.editorElement.querySelector(`[data-id="${block.id}"]`);
200
+ const index = Number(element?.dataset['index']);
201
+ return { ...block, index };
202
+ });
203
+ const addedBlocks = [...defaultBlocksWithIndex, ...combinedBlocksWithIndex].sort((first, second) => first.index - second.index);
204
+ const addBlocks$ = this.editorService.collectAddedBlocksRequest(this.editorID, addedBlocks);
205
+ return {
206
+ addedBlocks,
207
+ addBlocks$
208
+ };
209
+ }
210
+ collectUpdatedBlocksRequest(blocks, editorOutput) {
211
+ blocks["block-changed" /* EventActions.update */].forEach((updateBlock) => {
212
+ const { id, block } = this.editorService.getFullBlockData(updateBlock, editorOutput);
213
+ block.id = id;
214
+ this.updatedBlocks.push(block);
215
+ });
216
+ const updateBlocks$ = this.editorService.collectUpdatedBlocksRequest(this.updatedBlocks, this.blockIdsMap);
217
+ this.updatedBlocks = [];
218
+ return updateBlocks$;
219
+ }
220
+ collectRemovedBlocksRequest(blocks) {
221
+ blocks["block-removed" /* EventActions.remove */].forEach((block) => {
222
+ const id = block.detail.target.id;
223
+ this.removedBlocksIds.push(id);
224
+ });
225
+ const removeBlocks$ = this.editorService.collectRemovedBlocksRequest(this.editorID, this.removedBlocksIds, this.blockIdsMap);
226
+ this.removedBlocksIds = [];
227
+ return removeBlocks$;
228
+ }
229
+ getBlocks(page = 0, size = 40) {
230
+ let combinedBlock;
231
+ return this.jTextService.getBlocks(this.editorID, page, size).pipe(takeUntilDestroyed(this.destroy), finalize(() => {
232
+ if (combinedBlock) {
233
+ this.addCombinedBlock(combinedBlock);
234
+ combinedBlock = null;
235
+ }
236
+ recalculateIndexes(this.editor.blocks);
237
+ }), map((block) => {
238
+ if (block.type === COMBINED_TEXT_BLOCK_PART) {
239
+ const blockData = block.data;
240
+ if (combinedBlock && blockData.parentId !== combinedBlock?.id) {
241
+ this.addCombinedBlock(combinedBlock);
242
+ combinedBlock = null;
243
+ }
244
+ combinedBlock = this.setCombinedBlock(block);
245
+ return;
246
+ }
247
+ if (combinedBlock) {
248
+ this.addCombinedBlock(combinedBlock);
249
+ combinedBlock = null;
250
+ }
251
+ this.addBlock(block);
252
+ }), toArray());
253
+ }
254
+ addBlock(block) {
255
+ if (typeof block.type !== 'string') {
256
+ return;
257
+ }
258
+ this.blockIdsMap.set(block.id, block.id);
259
+ this.insert(block);
260
+ }
261
+ addCombinedBlock(combinedBlock) {
262
+ this.isSkipCombinedBlockOnChange.push(true);
263
+ const block = this.editor.blocks.getById(combinedBlock.id || '');
264
+ if (block) {
265
+ this.editor.blocks.update(block.id, combinedBlock.data);
266
+ return;
267
+ }
268
+ this.insert(combinedBlock);
269
+ }
270
+ insert(block) {
271
+ this.checkFirst(block);
272
+ this.index++;
273
+ }
274
+ checkFirst(block) {
275
+ if (!this.isFirst) {
276
+ this.isSkip = true;
277
+ this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);
278
+ return;
279
+ }
280
+ // TODO: есть варик что что то пойдет не так
281
+ this.editor.blocks.render({ blocks: [block] }).then(() => this.isSkip = false);
282
+ this.isFirst = false;
283
+ }
284
+ setCombinedBlock(block) {
285
+ const combinedBlockData = block.data;
286
+ const parent = this.combinedBlocks.get(combinedBlockData.parentId);
287
+ this.blockIdsMap.set(block.id, block.id);
288
+ if (parent) {
289
+ const parentData = parent.data;
290
+ parentData.textBlocks.push(block);
291
+ return parent;
292
+ }
293
+ const parentObject = {
294
+ id: combinedBlockData.parentId,
295
+ type: COMBINED_TEXT_BLOCK_NAME,
296
+ data: {
297
+ id: combinedBlockData.parentId,
298
+ textBlocks: [block]
299
+ }
300
+ };
301
+ this.combinedBlocks.set(combinedBlockData.parentId, parentObject);
302
+ return parentObject;
303
+ }
304
+ setBlockIdsToMap(blockIds, addedBlocks) {
305
+ if (!blockIds.length) {
306
+ return;
307
+ }
308
+ addedBlocks.forEach((blockData, index) => {
309
+ this.blockIdsMap.set(blockData.id, blockIds[index]);
310
+ });
311
+ }
312
+ setStartBlock() {
313
+ if (this.blockIdsMap.size) {
314
+ this.setFocus();
315
+ this.editorEmpty.emit(this.checkIsEmpty());
316
+ return;
317
+ }
318
+ if (this.isReadonly()) {
319
+ this.editor.render({ blocks: [] });
320
+ return;
321
+ }
322
+ this.editorService.setStartBlock(this.editorID, async (block, id) => {
323
+ this.blockIdsMap.set(id, id);
324
+ this.isSkipCombinedBlockOnChange.push(true);
325
+ await this.editor.render({ blocks: [block] });
326
+ this.setFocus();
327
+ recalculateIndexes(this.editor.blocks);
328
+ });
329
+ }
330
+ setFocus() {
331
+ if (!this.config?.autofocus) {
332
+ return;
333
+ }
334
+ this.editor.caret.focus();
335
+ }
336
+ checkIsEmpty() {
337
+ const MIN_BLOCKS_COUNT = 1;
338
+ const REDACTOR_SELECTOR = '.codex-editor__redactor';
339
+ const redactor = this.editorElement.querySelector(REDACTOR_SELECTOR);
340
+ const blocksCount = redactor?.childElementCount ?? 0;
341
+ return blocksCount <= MIN_BLOCKS_COUNT && !redactor?.textContent;
342
+ }
343
+ resetData() {
344
+ this.scrollSubscription?.unsubscribe();
345
+ this.poolingSubscription?.unsubscribe();
346
+ this.isSkipCombinedBlockOnChange = [];
347
+ this.isFirst = true;
348
+ this.isChanging = false;
349
+ this.isSkip = false;
350
+ this.isRequested = false;
351
+ this.blockIdsMap = new Map();
352
+ this.combinedBlocks = new Map();
353
+ this.index = 0;
354
+ this.page = 0;
355
+ this.addedBlocks = [];
356
+ this.updatedBlocks = [];
357
+ this.removedBlocksIds = [];
358
+ this.changesQueue = [];
359
+ this.abortController = new AbortController();
360
+ }
361
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
362
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CuiEditorComponent, isStandalone: true, selector: "cui-editor", inputs: { editorID: "editorID", config: "config", requestSize: "requestSize" }, outputs: { editorEmpty: "editorEmpty" }, providers: [CuiEditorService, CuiJTextApiService], viewQueries: [{ propertyName: "editorRef", first: true, predicate: ["editor"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n #editor\r\n [id]=\"editorID\"\r\n [class._readonly]=\"config.readOnly\"\r\n data-editor\r\n></div>\r\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-0);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
363
+ }
364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiEditorComponent, decorators: [{
365
+ type: Component,
366
+ args: [{ selector: 'cui-editor', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CuiEditorService, CuiJTextApiService], template: "<div\r\n #editor\r\n [id]=\"editorID\"\r\n [class._readonly]=\"config.readOnly\"\r\n data-editor\r\n></div>\r\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-0);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"] }]
367
+ }], propDecorators: { editorRef: [{
368
+ type: ViewChild,
369
+ args: ['editor']
370
+ }], editorEmpty: [{
371
+ type: Output
372
+ }], editorID: [{
373
+ type: Input,
374
+ args: [{ required: true }]
375
+ }], config: [{
376
+ type: Input
377
+ }], requestSize: [{
378
+ type: Input
379
+ }] } });
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2hFLE9BQU8sUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBRTFDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsR0FBRyxFQUNILE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxFQUNILFlBQVksRUFDWixLQUFLLEVBQ0wsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QixjQUFjLEVBQ2YsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFXN0QsT0FBTyxFQUFTLGdCQUFnQixFQUFFLGtCQUFrQixFQUFnQixNQUFNLFlBQVksQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFVakUsTUFBTSxPQUFPLGtCQUFrQjtJQVIvQjtRQVNtQixZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdC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O1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUMvQyxDQUFDOytHQWxmVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrTEFGbEIsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxvSkN6RG5ELDZIQU1BOzs0RkRxRGEsa0JBQWtCO2tCQVI5QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQzs4QkFlOUIsU0FBUztzQkFEM0IsU0FBUzt1QkFBQyxRQUFRO2dCQUlILFdBQVc7c0JBRDFCLE1BQU07Z0JBSUEsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBjb21wdXRlZCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB0eXBlIHsgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgdHlwZSB7IEFQSSwgQmxvY2tNdXRhdGlvbkV2ZW50LCBPdXRwdXREYXRhIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuaW1wb3J0IEVkaXRvckpTIGZyb20gJ0BlZGl0b3Jqcy9lZGl0b3Jqcyc7XHJcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgY29uY2F0TWFwLFxyXG4gIGRlbGF5LFxyXG4gIGZpbmFsaXplLFxyXG4gIGZyb21FdmVudCxcclxuICBtYXAsXHJcbiAgU3ViamVjdCxcclxuICB0YWtlV2hpbGUsXHJcbiAgdGFwLFxyXG4gIHRocm90dGxlVGltZSxcclxuICB0aW1lcixcclxuICB0b0FycmF5XHJcbn0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBnZXRFZGl0b3JDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7XHJcbiAgQ09NQklORURfVEVYVF9CTE9DS19OQU1FLFxyXG4gIENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCxcclxuICBERUZBVUxUX0NPTkZJR1xyXG59IGZyb20gJy4vY29uc3RhbnRzL2VkaXRvci5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBzZXRFZGl0b3JFdmVudHMgfSBmcm9tICcuL2V2ZW50cy9zZXQtZWRpdG9yLWV2ZW50cyc7XHJcbmltcG9ydCB0eXBlIHtcclxuICBDdWlCbG9ja0RhdGEsXHJcbiAgQ3VpQmxvY2tzUmVxdWVzdERhdGEsXHJcbiAgQ3VpQ29tYmluZWRCbG9ja0FkZGluZ0V2ZW50LFxyXG4gIEN1aUNvbWJpbmVkQmxvY2tUb29sRGF0YSxcclxuICBDdWlDb21iaW5lZFBhcnRCbG9jayxcclxuICBDdWlFZGl0b3JDb25maWcsXHJcbiAgQ3VpRXZlbnRBY3Rpb25EYXRhLFxyXG4gIEN1aUZ1bGxCbG9ja0RhdGFcclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCbG9jaywgQ3VpRWRpdG9yU2VydmljZSwgQ3VpSlRleHRBcGlTZXJ2aWNlLCBFdmVudEFjdGlvbnMgfSBmcm9tICcuL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgcmVjYWxjdWxhdGVJbmRleGVzIH0gZnJvbSAnLi91dGlscy9yZWNhbGN1bGF0ZS1pbmRleGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3VpLWVkaXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtDdWlFZGl0b3JTZXJ2aWNlLCBDdWlKVGV4dEFwaVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRvclNlcnZpY2UgPSBpbmplY3QoQ3VpRWRpdG9yU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBqVGV4dFNlcnZpY2UgPSBpbmplY3QoQ3VpSlRleHRBcGlTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBQT09MSU5HX0RFTEFZID0gMTAwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgRUxFTUVOVF9TUEFDRV9UT19CT1RUT00gPSAxNTA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBTQ1JPTExfVEhST1RUTEVfVElNRSA9IDIwMDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc1JlYWRvbmx5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWc/LnJlYWRPbmx5KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5UXVldWUgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBAVmlld0NoaWxkKCdlZGl0b3InKVxyXG4gIHByb3RlY3RlZCByZWFkb25seSBlZGl0b3JSZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yRW1wdHkgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHVibGljIGVkaXRvcklEITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb25maWc6IEN1aUVkaXRvckNvbmZpZyA9IERFRkFVTFRfQ09ORklHO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXF1ZXN0U2l6ZSA9IDQwO1xyXG5cclxuICBwcml2YXRlIHBvb2xpbmdTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBpc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2U6IGJvb2xlYW5bXSA9IFtdO1xyXG4gIHByaXZhdGUgaXNGaXJzdCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBpc0NoYW5naW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc1NraXAgPSBmYWxzZTtcclxuICBwcml2YXRlIGlzUmVxdWVzdGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYmxvY2tJZHNNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG4gIHByaXZhdGUgY29tYmluZWRCbG9ja3MgPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBpbmRleCA9IDA7XHJcbiAgcHJpdmF0ZSBwYWdlID0gMDtcclxuICBwcml2YXRlIGFkZGVkQmxvY2tzOiBDdWlCbG9ja0RhdGFbXSA9IFtdO1xyXG4gIHByaXZhdGUgdXBkYXRlZEJsb2NrczogQmxvY2tbXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVtb3ZlZEJsb2Nrc0lkczogc3RyaW5nW10gPSBbXTtcclxuICBwcml2YXRlIGNoYW5nZXNRdWV1ZTogQmxvY2tNdXRhdGlvbkV2ZW50W11bXSA9IFtdO1xyXG4gIHByaXZhdGUgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xyXG5cclxuICBwdWJsaWMgZWRpdG9yITogRWRpdG9ySlM7XHJcbiAgcHVibGljIGVkaXRvckVsZW1lbnQhOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydlZGl0b3JJRCddIHx8IGNoYW5nZXNbJ2NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuaW5pdEVkaXRvckNoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5kZXN0cm95RWRpdG9yKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2Nyb2xsRXZlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IG92ZXJhbGxIZWlnaHQgPSBlbGVtZW50LnNjcm9sbEhlaWdodCAtIHRoaXMuRUxFTUVOVF9TUEFDRV9UT19CT1RUT007XHJcbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gZWxlbWVudC5zY3JvbGxUb3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICBpZiAoY3VycmVudEhlaWdodCA8IG92ZXJhbGxIZWlnaHQgfHwgdGhpcy5pc1JlcXVlc3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1JlcXVlc3RlZCA9IHRydWU7XHJcblxyXG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMucmVxdWVzdFNpemU7XHJcbiAgICBsZXQgYmxvY2tzQ291bnQgPSAwO1xyXG5cclxuICAgIHRoaXMuZ2V0QmxvY2tzKHRoaXMucGFnZSwgc2l6ZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKChibG9ja3MpID0+IChibG9ja3NDb3VudCA9IGJsb2Nrcy5sZW5ndGgpKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKGJsb2Nrc0NvdW50ID49IHNpemUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5wYWdlKys7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIG9uRWRpdG9yQ2hhbmdlKF86IEFQSSwgZXZlbnQ6IEJsb2NrTXV0YXRpb25FdmVudCB8IEJsb2NrTXV0YXRpb25FdmVudFtdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pc1JlYWRvbmx5KCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheShldmVudCkpIHtcclxuICAgICAgZXZlbnQgPSBbZXZlbnRdO1xyXG4gICAgfVxyXG5cclxuICAgIHJlY2FsY3VsYXRlSW5kZXhlcyh0aGlzLmVkaXRvci5ibG9ja3MpO1xyXG5cclxuICAgIGlmICh0aGlzLmlzQ2hhbmdpbmcpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VzUXVldWUudW5zaGlmdChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdGFydENoYW5nZXMoZXZlbnQpO1xyXG4gICAgdGhpcy5lZGl0b3JFbXB0eS5lbWl0KHRoaXMuY2hlY2tJc0VtcHR5KCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkFkZGVkQ29tYmluZWRCbG9jayhkYXRhOiBDdWlDb21iaW5lZEJsb2NrQWRkaW5nRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5pc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2UucG9wKCk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYmxvY2tzV2l0aG91dElkID0gZGF0YS5ibG9ja3MubWFwKChibG9jaykgPT4gKHtcclxuICAgICAgYmxvY2s6IHsgLi4uYmxvY2ssIGlkOiB1bmRlZmluZWQgfSxcclxuICAgICAgaWQ6IGJsb2NrLmlkIVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuYWRkZWRCbG9ja3MucHVzaCguLi5ibG9ja3NXaXRob3V0SWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblVwZGF0ZWRDb21iaW5lZEJsb2NrKHVwZGF0ZWRCbG9ja3M6IEJsb2NrW10pOiB2b2lkIHtcclxuICAgIGlmICghdXBkYXRlZEJsb2Nrcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlZEJsb2Nrcy5wdXNoKC4uLnVwZGF0ZWRCbG9ja3MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJlbW92ZWRDb21iaW5lZEJsb2NrKGJsb2NrSWRzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgaWYgKCFibG9ja0lkcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVtb3ZlZEJsb2Nrc0lkcy5wdXNoKC4uLmJsb2NrSWRzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdEVkaXRvckNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmpUZXh0U2VydmljZS5hZGRPcHRpb25zKHRoaXMuY29uZmlnLnJlcXVlc3RPcHRpb25zKTtcclxuXHJcbiAgICB0aGlzLmVkaXRvciA9IHRoaXMuaW5pdEVkaXRvcih0aGlzLmVkaXRvcklEKTtcclxuICAgIHRoaXMuZWRpdG9yLmlzUmVhZHkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuZWRpdG9yRWxlbWVudCA9IHRoaXMuZWRpdG9yUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICB0aGlzLmluaXRFZGl0b3JFdmVudHModGhpcy5lZGl0b3JFbGVtZW50KTtcclxuICAgICAgdGhpcy5pbml0U2Nyb2xsT2JzZXJ2ZXIoKTtcclxuICAgICAgdGhpcy5zdGFydFBvb2xpbmcodGhpcy5yZXF1ZXN0U2l6ZSk7XHJcbiAgICAgIHRoaXMuc2V0TGlzdGVuZXJzT25DdXN0b21CbG9ja0NoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RWRpdG9yKGlkOiBzdHJpbmcpOiBFZGl0b3JKUyB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZztcclxuXHJcbiAgICB0aGlzLmRlc3Ryb3lFZGl0b3IoKTtcclxuICAgIHRoaXMuZWRpdG9yID0gbmV3IEVkaXRvckpTKHtcclxuICAgICAgLi4uZ2V0RWRpdG9yQ29uZmlnKGlkLCBjb25maWcpLFxyXG4gICAgICBvbkNoYW5nZTogdGhpcy5vbkVkaXRvckNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3I7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRTY3JvbGxPYnNlcnZlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmNvbmZpZz8uZWxlbWVudCA/PyB0aGlzLmVkaXRvckVsZW1lbnQ7XHJcbiAgICBjb25zdCBzY3JvbGxPYnNlcnZlciA9IGZyb21FdmVudChlbGVtZW50LCAnc2Nyb2xsJyk7XHJcblxyXG4gICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24gPSBzY3JvbGxPYnNlcnZlclxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSxcclxuICAgICAgICB0aHJvdHRsZVRpbWUodGhpcy5TQ1JPTExfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7XHJcbiAgICAgICAgICBsZWFkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgdHJhaWxpbmc6IHRydWVcclxuICAgICAgICB9KSxcclxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5vblNjcm9sbEV2ZW50KGVsZW1lbnQpKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdEVkaXRvckV2ZW50cyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVhZE9ubHkgPSB0aGlzLmlzUmVhZG9ubHkoKTtcclxuXHJcbiAgICBpZiAocmVhZE9ubHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEVkaXRvckV2ZW50cyhlbGVtZW50LCB0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydFBvb2xpbmcoc2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGhpcy5jb25maWc/LmVsZW1lbnQgPz8gdGhpcy5lZGl0b3JFbGVtZW50O1xyXG4gICAgY29uc3Qgd2l0aG91dFByZWxvYWQgPSB0aGlzLmNvbmZpZz8ud2l0aG91dFByZWxvYWQ7XHJcblxyXG4gICAgdGhpcy5wb29saW5nU3Vic2NyaXB0aW9uID0gdGltZXIoMCwgdGhpcy5QT09MSU5HX0RFTEFZKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjb25jYXRNYXAoKCkgPT4gdGhpcy5nZXRCbG9ja3ModGhpcy5wYWdlLCBzaXplKS5waXBlKGRlbGF5KHRoaXMuUE9PTElOR19ERUxBWSkpKSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5wYWdlKyspLFxyXG4gICAgICAgIHRha2VXaGlsZShcclxuICAgICAgICAgIChibG9ja3MpID0+XHJcbiAgICAgICAgICAgICF3aXRob3V0UHJlbG9hZCAmJlxyXG4gICAgICAgICAgICBzY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodCA8PSBzY3JvbGxFbGVtZW50LmNsaWVudEhlaWdodCAmJlxyXG4gICAgICAgICAgICBibG9ja3MubGVuZ3RoID49IHNpemVcclxuICAgICAgICApLFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXJ0QmxvY2soKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveUVkaXRvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XHJcbiAgICB0aGlzLnJlc2V0RGF0YSgpO1xyXG4gICAgLy8gVE9ETzog0LIg0YDQsNC90LTQvtC8INC60LXQudGB0LDRhSDQv9Cw0LTQsNC10YIg0L7RiNC40LHQutCwINC10YHQu9C4INGD0LHRgNCw0YLRjCDQv9GA0L7QstC10YDQutGDINC90LAg0LLRi9C30L7QsiBkZXN0cm95XHJcbiAgICB0aGlzLmVkaXRvcj8uZGVzdHJveT8uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKHRoaXMuZWRpdG9yLCB7XHJcbiAgICAgIHJlbW92ZWRDYWxsYmFjazogdGhpcy5vblJlbW92ZWRDb21iaW5lZEJsb2NrLmJpbmQodGhpcyksXHJcbiAgICAgIHVwZGF0ZWRDYWxsYmFjazogdGhpcy5vblVwZGF0ZWRDb21iaW5lZEJsb2NrLmJpbmQodGhpcyksXHJcbiAgICAgIGFkZGVkQ2FsbGJhY2s6IHRoaXMub25BZGRlZENvbWJpbmVkQmxvY2suYmluZCh0aGlzKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHN0YXJ0Q2hhbmdlcyhldmVudDogQmxvY2tNdXRhdGlvbkV2ZW50W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmlzU2tpcCB8fCB0aGlzLmlzQ2hhbmdpbmcgfHwgIXRoaXMuZWRpdG9yKSB7XHJcbiAgICAgIHRoaXMuaXNTa2lwID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0NoYW5naW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBlZGl0b3JPdXRwdXQgPSBhd2FpdCB0aGlzLmVkaXRvci5zYXZlKCk7XHJcbiAgICBjb25zdCBldmVudHMgPSBldmVudC5maWx0ZXIoKGRhdGEpID0+IGRhdGEuZGV0YWlsLnRhcmdldC5uYW1lICE9PSBDT01CSU5FRF9URVhUX0JMT0NLX05BTUUpO1xyXG4gICAgY29uc3QgYmxvY2tzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLnNvcnRFdmVudHNCeVR5cGVzKGV2ZW50cyk7XHJcbiAgICBjb25zdCB7IGFkZEJsb2NrcyQsIGFkZGVkQmxvY2tzIH0gPSB0aGlzLmNvbGxlY3RBZGRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzLCBlZGl0b3JPdXRwdXQpO1xyXG5cclxuICAgIHRoaXMuYWRkZWRCbG9ja3MgPSBbXTtcclxuXHJcbiAgICBhZGRCbG9ja3MkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoYmxvY2tJZHMpID0+IHRoaXMuc2V0QmxvY2tJZHNUb01hcChibG9ja0lkcywgYWRkZWRCbG9ja3MpKSxcclxuICAgICAgICBjb25jYXRNYXAoKCkgPT4gdGhpcy5jb2xsZWN0VXBkYXRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzLCBlZGl0b3JPdXRwdXQpKSxcclxuICAgICAgICBjb25jYXRNYXAoKCkgPT4gdGhpcy5jb2xsZWN0UmVtb3ZlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzKSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdGFydE5leHRDaGFuZ2UoKSxcclxuICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5zdGFydE5leHRDaGFuZ2UoKVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhcnROZXh0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0NoYW5naW5nID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgbmV4dEV2ZW50cyA9IHRoaXMuY2hhbmdlc1F1ZXVlLnBvcCgpO1xyXG5cclxuICAgIGlmIChuZXh0RXZlbnRzKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRDaGFuZ2VzKG5leHRFdmVudHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1wdHlRdWV1ZS5uZXh0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2xsZWN0QWRkZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhLCBlZGl0b3JPdXRwdXQ6IE91dHB1dERhdGEpOiBDdWlCbG9ja3NSZXF1ZXN0RGF0YSB7XHJcbiAgICBjb25zdCBkZWZhdWx0QmxvY2tzV2l0aEluZGV4ID0gYmxvY2tzW0V2ZW50QWN0aW9ucy5hZGRdLm1hcCgoYWRkZWRCbG9jaykgPT5cclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEZ1bGxCbG9ja0RhdGEoYWRkZWRCbG9jaywgZWRpdG9yT3V0cHV0KVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tzV2l0aEluZGV4ID0gdGhpcy5hZGRlZEJsb2Nrcy5tYXAoKGJsb2NrKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVkaXRvckVsZW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtaWQ9XCIke2Jsb2NrLmlkfVwiXWApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjb25zdCBpbmRleCA9IE51bWJlcihlbGVtZW50Py5kYXRhc2V0WydpbmRleCddKTtcclxuXHJcbiAgICAgIHJldHVybiB7IC4uLmJsb2NrLCBpbmRleCB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgYWRkZWRCbG9ja3MgPSBbLi4uZGVmYXVsdEJsb2Nrc1dpdGhJbmRleCwgLi4uY29tYmluZWRCbG9ja3NXaXRoSW5kZXhdLnNvcnQoKGZpcnN0LCBzZWNvbmQpID0+IGZpcnN0LmluZGV4IC0gc2Vjb25kLmluZGV4KTtcclxuICAgIGNvbnN0IGFkZEJsb2NrcyQgPSB0aGlzLmVkaXRvclNlcnZpY2UuY29sbGVjdEFkZGVkQmxvY2tzUmVxdWVzdCh0aGlzLmVkaXRvcklELCBhZGRlZEJsb2Nrcyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWRkZWRCbG9ja3MsXHJcbiAgICAgIGFkZEJsb2NrcyRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbGxlY3RVcGRhdGVkQmxvY2tzUmVxdWVzdChibG9ja3M6IEN1aUV2ZW50QWN0aW9uRGF0YSwgZWRpdG9yT3V0cHV0OiBPdXRwdXREYXRhKTogT2JzZXJ2YWJsZTxCbG9ja1tdPiB7XHJcbiAgICBibG9ja3NbRXZlbnRBY3Rpb25zLnVwZGF0ZV0uZm9yRWFjaCgodXBkYXRlQmxvY2spID0+IHtcclxuICAgICAgY29uc3QgeyBpZCwgYmxvY2sgfSA9IHRoaXMuZWRpdG9yU2VydmljZS5nZXRGdWxsQmxvY2tEYXRhKHVwZGF0ZUJsb2NrLCBlZGl0b3JPdXRwdXQpO1xyXG4gICAgICBibG9jay5pZCA9IGlkO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVkQmxvY2tzLnB1c2goYmxvY2spO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlQmxvY2tzJCA9IHRoaXMuZWRpdG9yU2VydmljZS5jb2xsZWN0VXBkYXRlZEJsb2Nrc1JlcXVlc3QodGhpcy51cGRhdGVkQmxvY2tzLCB0aGlzLmJsb2NrSWRzTWFwKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZWRCbG9ja3MgPSBbXTtcclxuXHJcbiAgICByZXR1cm4gdXBkYXRlQmxvY2tzJDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBibG9ja3NbRXZlbnRBY3Rpb25zLnJlbW92ZV0uZm9yRWFjaCgoYmxvY2spID0+IHtcclxuICAgICAgY29uc3QgaWQgPSBibG9jay5kZXRhaWwudGFyZ2V0LmlkO1xyXG5cclxuICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzLnB1c2goaWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVtb3ZlQmxvY2tzJCA9IHRoaXMuZWRpdG9yU2VydmljZS5jb2xsZWN0UmVtb3ZlZEJsb2Nrc1JlcXVlc3QoXHJcbiAgICAgIHRoaXMuZWRpdG9ySUQsXHJcbiAgICAgIHRoaXMucmVtb3ZlZEJsb2Nrc0lkcyxcclxuICAgICAgdGhpcy5ibG9ja0lkc01hcFxyXG4gICAgKTtcclxuICAgIHRoaXMucmVtb3ZlZEJsb2Nrc0lkcyA9IFtdO1xyXG5cclxuICAgIHJldHVybiByZW1vdmVCbG9ja3MkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCbG9ja3MocGFnZSA9IDAsIHNpemUgPSA0MCk6IE9ic2VydmFibGU8QmxvY2tbXT4ge1xyXG4gICAgbGV0IGNvbWJpbmVkQmxvY2s6IEN1aU51bGxhYmxlPEJsb2NrPjtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5qVGV4dFNlcnZpY2UuZ2V0QmxvY2tzKHRoaXMuZWRpdG9ySUQsIHBhZ2UsIHNpemUpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3kpLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbWJpbmVkQmxvY2spIHtcclxuICAgICAgICAgIHRoaXMuYWRkQ29tYmluZWRCbG9jayhjb21iaW5lZEJsb2NrKTtcclxuICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVjYWxjdWxhdGVJbmRleGVzKHRoaXMuZWRpdG9yLmJsb2Nrcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAoKGJsb2NrKSA9PiB7XHJcbiAgICAgICAgaWYgKGJsb2NrLnR5cGUgPT09IENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCkge1xyXG4gICAgICAgICAgY29uc3QgYmxvY2tEYXRhID0gYmxvY2suZGF0YSBhcyB7IHBhcmVudElkOiBzdHJpbmcgfTtcclxuXHJcbiAgICAgICAgICBpZiAoY29tYmluZWRCbG9jayAmJiBibG9ja0RhdGEucGFyZW50SWQhICE9PSBjb21iaW5lZEJsb2NrPy5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XHJcbiAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSB0aGlzLnNldENvbWJpbmVkQmxvY2soYmxvY2spO1xyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb21iaW5lZEJsb2NrKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XHJcbiAgICAgICAgICBjb21iaW5lZEJsb2NrID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWRkQmxvY2soYmxvY2spO1xyXG4gICAgICB9KSxcclxuICAgICAgdG9BcnJheSgpXHJcbiAgICApIGFzIHVua25vd24gYXMgT2JzZXJ2YWJsZTxCbG9ja1tdPjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQmxvY2soYmxvY2s6IEJsb2NrKTogdm9pZCB7XHJcbiAgICBpZiAodHlwZW9mIGJsb2NrLnR5cGUgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmJsb2NrSWRzTWFwLnNldChibG9jay5pZCEsIGJsb2NrLmlkISk7XHJcbiAgICB0aGlzLmluc2VydChibG9jayk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jazogQmxvY2spOiB2b2lkIHtcclxuICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLnB1c2godHJ1ZSk7XHJcbiAgICBjb25zdCBibG9jayA9IHRoaXMuZWRpdG9yLmJsb2Nrcy5nZXRCeUlkKGNvbWJpbmVkQmxvY2suaWQgfHwgJycpO1xyXG5cclxuICAgIGlmIChibG9jaykge1xyXG4gICAgICB0aGlzLmVkaXRvci5ibG9ja3MudXBkYXRlKGJsb2NrLmlkLCBjb21iaW5lZEJsb2NrLmRhdGEgYXMgQ3VpQ29tYmluZWRQYXJ0QmxvY2spO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5zZXJ0KGNvbWJpbmVkQmxvY2spO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnNlcnQoYmxvY2s6IEJsb2NrKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrRmlyc3QoYmxvY2spO1xyXG4gICAgdGhpcy5pbmRleCsrO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZpcnN0KGJsb2NrOiBCbG9jayk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRmlyc3QpIHtcclxuICAgICAgdGhpcy5pc1NraXAgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRvci5ibG9ja3MuaW5zZXJ0KGJsb2NrLnR5cGUsIGJsb2NrLmRhdGEsIHt9LCB0aGlzLmluZGV4LCBmYWxzZSwgZmFsc2UsIGJsb2NrLmlkKTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPOiDQtdGB0YLRjCDQstCw0YDQuNC6INGH0YLQviDRh9GC0L4g0YLQviDQv9C+0LnQtNC10YIg0L3QtSDRgtCw0LpcclxuICAgIHRoaXMuZWRpdG9yLmJsb2Nrcy5yZW5kZXIoeyBibG9ja3M6IFtibG9ja10gfSkudGhlbigoKSA9PiB0aGlzLmlzU2tpcCA9IGZhbHNlKTtcclxuICAgIHRoaXMuaXNGaXJzdCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb21iaW5lZEJsb2NrKGJsb2NrOiBCbG9jayk6IEJsb2NrIHtcclxuICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tEYXRhID0gYmxvY2suZGF0YSBhcyB7IHBhcmVudElkOiBzdHJpbmcgfTtcclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuY29tYmluZWRCbG9ja3MuZ2V0KGNvbWJpbmVkQmxvY2tEYXRhLnBhcmVudElkKTtcclxuXHJcbiAgICB0aGlzLmJsb2NrSWRzTWFwLnNldChibG9jay5pZCEsIGJsb2NrLmlkISk7XHJcblxyXG4gICAgaWYgKHBhcmVudCkge1xyXG4gICAgICBjb25zdCBwYXJlbnREYXRhID0gcGFyZW50LmRhdGEgYXMgeyB0ZXh0QmxvY2tzOiBCbG9ja1tdIH07XHJcbiAgICAgIHBhcmVudERhdGEudGV4dEJsb2Nrcy5wdXNoKGJsb2NrKTtcclxuXHJcbiAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyZW50T2JqZWN0OiBCbG9jayA9IHtcclxuICAgICAgaWQ6IGNvbWJpbmVkQmxvY2tEYXRhLnBhcmVudElkLFxyXG4gICAgICB0eXBlOiBDT01CSU5FRF9URVhUX0JMT0NLX05BTUUsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBpZDogY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQsXHJcbiAgICAgICAgdGV4dEJsb2NrczogW2Jsb2NrXVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY29tYmluZWRCbG9ja3Muc2V0KGNvbWJpbmVkQmxvY2tEYXRhLnBhcmVudElkLCBwYXJlbnRPYmplY3QpO1xyXG5cclxuICAgIHJldHVybiBwYXJlbnRPYmplY3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJsb2NrSWRzVG9NYXAoYmxvY2tJZHM6IHN0cmluZ1tdLCBhZGRlZEJsb2NrczogQ3VpRnVsbEJsb2NrRGF0YVtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWJsb2NrSWRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgYWRkZWRCbG9ja3MuZm9yRWFjaCgoYmxvY2tEYXRhLCBpbmRleCkgPT4ge1xyXG4gICAgICB0aGlzLmJsb2NrSWRzTWFwLnNldChibG9ja0RhdGEuaWQsIGJsb2NrSWRzW2luZGV4XSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U3RhcnRCbG9jaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmJsb2NrSWRzTWFwLnNpemUpIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cygpO1xyXG4gICAgICB0aGlzLmVkaXRvckVtcHR5LmVtaXQodGhpcy5jaGVja0lzRW1wdHkoKSk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNSZWFkb25seSgpKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yLnJlbmRlcih7IGJsb2NrczogW10gfSk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNldFN0YXJ0QmxvY2sodGhpcy5lZGl0b3JJRCwgYXN5bmMgKGJsb2NrOiBCbG9jazxDdWlDb21iaW5lZEJsb2NrVG9vbERhdGE+LCBpZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuYmxvY2tJZHNNYXAuc2V0KGlkLCBpZCk7XHJcbiAgICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLnB1c2godHJ1ZSk7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmVkaXRvci5yZW5kZXIoeyBibG9ja3M6IFtibG9ja10gfSk7XHJcblxyXG4gICAgICB0aGlzLnNldEZvY3VzKCk7XHJcbiAgICAgIHJlY2FsY3VsYXRlSW5kZXhlcyh0aGlzLmVkaXRvci5ibG9ja3MpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZz8uYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRvci5jYXJldC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0lzRW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBNSU5fQkxPQ0tTX0NPVU5UID0gMTtcclxuICAgIGNvbnN0IFJFREFDVE9SX1NFTEVDVE9SID0gJy5jb2RleC1lZGl0b3JfX3JlZGFjdG9yJztcclxuICAgIGNvbnN0IHJlZGFjdG9yID0gdGhpcy5lZGl0b3JFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoUkVEQUNUT1JfU0VMRUNUT1IpO1xyXG4gICAgY29uc3QgYmxvY2tzQ291bnQgPSByZWRhY3Rvcj8uY2hpbGRFbGVtZW50Q291bnQgPz8gMDtcclxuXHJcbiAgICByZXR1cm4gYmxvY2tzQ291bnQgPD0gTUlOX0JMT0NLU19DT1VOVCAmJiAhcmVkYWN0b3I/LnRleHRDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldERhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMucG9vbGluZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlID0gW107XHJcbiAgICB0aGlzLmlzRmlyc3QgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0NoYW5naW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2tpcCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1JlcXVlc3RlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5ibG9ja0lkc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgICB0aGlzLmNvbWJpbmVkQmxvY2tzID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy5pbmRleCA9IDA7XHJcbiAgICB0aGlzLnBhZ2UgPSAwO1xyXG4gICAgdGhpcy5hZGRlZEJsb2NrcyA9IFtdO1xyXG4gICAgdGhpcy51cGRhdGVkQmxvY2tzID0gW107XHJcbiAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMgPSBbXTtcclxuICAgIHRoaXMuY2hhbmdlc1F1ZXVlID0gW107XHJcbiAgICB0aGlzLmFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAgI2VkaXRvclxyXG4gICAgW2lkXT1cImVkaXRvcklEXCJcclxuICAgIFtjbGFzcy5fcmVhZG9ubHldPVwiY29uZmlnLnJlYWRPbmx5XCJcclxuICAgIGRhdGEtZWRpdG9yXHJcbj48L2Rpdj5cclxuIl19
@@ -0,0 +1,7 @@
1
+ export function setEditorDragEvents(editorElement, signal) {
2
+ editorElement.addEventListener('dragstart', dragstartListener, { signal });
3
+ }
4
+ export function dragstartListener(event) {
5
+ event.preventDefault();
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRyYWcuZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9ldmVudHMvZWRpdG9yLWRyYWcuZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLGFBQTBCLEVBQUUsTUFBbUI7SUFDL0UsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFnQjtJQUM5QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBzZXRFZGl0b3JEcmFnRXZlbnRzKGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzaWduYWw6IEFib3J0U2lnbmFsKTogdm9pZCB7XHJcbiAgICBlZGl0b3JFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIGRyYWdzdGFydExpc3RlbmVyLCB7IHNpZ25hbCB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYWdzdGFydExpc3RlbmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbn1cclxuIl19