@worktile/theia 15.3.2 → 16.0.0

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 (729) hide show
  1. package/components/contextmenu/contextmenu.component.d.ts +1 -1
  2. package/components/conversion-hint/conversion-hint.component.d.ts +3 -3
  3. package/components/inline-toolbar/inline-toolbar.component.d.ts +3 -4
  4. package/components/listbox/listbox.d.ts +3 -3
  5. package/components/plugin-menu/plugin-menu.component.d.ts +4 -3
  6. package/components/table-select/table-select.component.d.ts +1 -1
  7. package/components/template/template.component.d.ts +2 -2
  8. package/components/toolbar/toolbar.component.d.ts +4 -4
  9. package/components/toolbar-dropdown/toolbar-dropdown.component.d.ts +2 -2
  10. package/components/toolbar-group/toolbar-group.component.d.ts +5 -6
  11. package/constants/default.d.ts +1 -1
  12. package/core/toolbar-item/base-toolbar-item.d.ts +6 -7
  13. package/core/utils/plugin-menu.d.ts +2 -2
  14. package/editor.component.d.ts +1 -1
  15. package/editor.module.d.ts +1 -1
  16. package/{esm2020 → esm2022}/components/action/prevent-default.mjs +4 -4
  17. package/{esm2020 → esm2022}/components/column-resize/column-resize-notifier.mjs +4 -4
  18. package/{esm2020 → esm2022}/components/column-resize/column-resize.directive.mjs +4 -4
  19. package/{esm2020 → esm2022}/components/column-resize/column-resize.module.mjs +9 -9
  20. package/{esm2020 → esm2022}/components/column-resize/event-dispatcher.mjs +4 -4
  21. package/{esm2020 → esm2022}/components/column-resize/overlay-handle.component.mjs +4 -4
  22. package/{esm2020 → esm2022}/components/column-resize/resizing.store.mjs +4 -4
  23. package/{esm2020 → esm2022}/components/contextmenu/contextmenu.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/components/conversion-hint/conversion-hint.component.mjs +4 -4
  25. package/{esm2020 → esm2022}/components/element/element.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/components/inline-toolbar/inline-toolbar.component.mjs +6 -6
  27. package/esm2022/components/listbox/listbox.mjs +375 -0
  28. package/esm2022/components/plugin-menu/plugin-menu.component.mjs +191 -0
  29. package/{esm2020 → esm2022}/components/table-select/table-select.component.mjs +4 -4
  30. package/esm2022/components/template/template.component.mjs +62 -0
  31. package/{esm2020 → esm2022}/components/text/text.component.mjs +4 -4
  32. package/esm2022/components/toolbar/toolbar.component.mjs +266 -0
  33. package/esm2022/components/toolbar-dropdown/toolbar-dropdown.component.mjs +144 -0
  34. package/esm2022/components/toolbar-group/toolbar-group.component.mjs +122 -0
  35. package/{esm2020 → esm2022}/components/toolbar-item/toolbar-item.component.mjs +6 -6
  36. package/esm2022/constants/auto-format-rules.mjs +167 -0
  37. package/{esm2020 → esm2022}/constants/default.mjs +2 -2
  38. package/esm2022/constants/plugin-menu.mjs +328 -0
  39. package/esm2022/core/toolbar-item/base-toolbar-item.mjs +87 -0
  40. package/{esm2020 → esm2022}/core/utils/combine-plugins.mjs +1 -1
  41. package/esm2022/core/utils/plugin-menu.mjs +33 -0
  42. package/esm2022/custom-types.mjs +2 -0
  43. package/{esm2020 → esm2022}/editor.component.mjs +11 -11
  44. package/esm2022/editor.module.mjs +254 -0
  45. package/esm2022/interfaces/auto-format.mjs +2 -0
  46. package/esm2022/interfaces/editor.mjs +25 -0
  47. package/esm2022/interfaces/plugins/plugin-menu.mjs +19 -0
  48. package/esm2022/interfaces/plugins/with-override.mjs +2 -0
  49. package/esm2022/interfaces/reset-block-type-plugin-options.mjs +2 -0
  50. package/esm2022/interfaces/toolbar.mjs +12 -0
  51. package/{esm2020 → esm2022}/interfaces/view-base.mjs +4 -4
  52. package/esm2022/pipes.mjs +42 -0
  53. package/esm2022/plugins/align/align.editor.mjs +43 -0
  54. package/esm2022/plugins/align/align.plugin.mjs +64 -0
  55. package/{esm2020 → esm2022}/plugins/autoformat/autoformat.plugin.mjs +1 -1
  56. package/esm2022/plugins/autoformat/transforms/auto-format-block.mjs +14 -0
  57. package/esm2022/plugins/autoformat/transforms/auto-format-inline.mjs +78 -0
  58. package/esm2022/plugins/blockquote/blockquote.component.mjs +21 -0
  59. package/esm2022/plugins/blockquote/blockquote.editor.mjs +17 -0
  60. package/esm2022/plugins/blockquote/blockquote.plugin.mjs +85 -0
  61. package/{esm2020 → esm2022}/plugins/code/code.component.mjs +4 -4
  62. package/esm2022/plugins/code/code.editor.mjs +48 -0
  63. package/{esm2020 → esm2022}/plugins/code/code.plugin.mjs +1 -1
  64. package/esm2022/plugins/color/color.editor.mjs +27 -0
  65. package/{esm2020 → esm2022}/plugins/color/toolbar-item.component.mjs +4 -4
  66. package/{esm2020 → esm2022}/plugins/common/block-card.plugin.mjs +1 -1
  67. package/{esm2020 → esm2022}/plugins/common/common.plugin.mjs +1 -1
  68. package/{esm2020 → esm2022}/plugins/common/get-fragment.plugin.mjs +1 -1
  69. package/esm2022/plugins/common/history.plugin.mjs +31 -0
  70. package/{esm2020 → esm2022}/plugins/common/insert-data-by-invalid-type.mjs +1 -1
  71. package/{esm2020 → esm2022}/plugins/common/move-selection.plugin.mjs +1 -1
  72. package/{esm2020 → esm2022}/plugins/common/remove-empty.plugin.mjs +1 -1
  73. package/{esm2020 → esm2022}/plugins/common/remove-void.plugin.mjs +1 -1
  74. package/{esm2020 → esm2022}/plugins/common/reset-type.plugin.mjs +1 -1
  75. package/esm2022/plugins/common/transforms.plugin.mjs +18 -0
  76. package/esm2022/plugins/deserialize/deserialize-html.plugin.mjs +53 -0
  77. package/esm2022/plugins/deserialize/deserialize-md.plugin.mjs +130 -0
  78. package/esm2022/plugins/font-size/font-size.editor.mjs +98 -0
  79. package/esm2022/plugins/heading/heading.editor.mjs +54 -0
  80. package/esm2022/plugins/heading/heading.plugin.mjs +136 -0
  81. package/{esm2020 → esm2022}/plugins/hr/hr.component.mjs +6 -6
  82. package/esm2022/plugins/hr/hr.editor.mjs +16 -0
  83. package/esm2022/plugins/hr/hr.plugin.mjs +56 -0
  84. package/esm2022/plugins/image/image.component.mjs +420 -0
  85. package/esm2022/plugins/image/image.editor.mjs +81 -0
  86. package/esm2022/plugins/indent/indent.editor.mjs +78 -0
  87. package/{esm2020 → esm2022}/plugins/indent/indent.plugin.mjs +1 -1
  88. package/esm2022/plugins/indent/on-keydown-indent.mjs +59 -0
  89. package/esm2022/plugins/inline-code/inline-code.component.mjs +26 -0
  90. package/esm2022/plugins/inline-code/inline-code.editor.mjs +48 -0
  91. package/esm2022/plugins/inline-code/inline-code.plugin.mjs +66 -0
  92. package/esm2022/plugins/link/edit/link-edit.component.mjs +103 -0
  93. package/{esm2020 → esm2022}/plugins/link/hover/link-hover.component.mjs +4 -4
  94. package/esm2022/plugins/link/link.component.mjs +167 -0
  95. package/esm2022/plugins/link/link.editor.mjs +66 -0
  96. package/{esm2020 → esm2022}/plugins/link/link.plugin.mjs +1 -1
  97. package/esm2022/plugins/list/components/bulleted-list.component.mjs +33 -0
  98. package/esm2022/plugins/list/components/list-item.component.mjs +93 -0
  99. package/esm2022/plugins/list/components/numbered-list.component.mjs +39 -0
  100. package/esm2022/plugins/list/list.editor.mjs +126 -0
  101. package/esm2022/plugins/list/list.plugin.mjs +312 -0
  102. package/esm2022/plugins/list/normalizers/get-list-normalizer.mjs +39 -0
  103. package/esm2022/plugins/list/normalizers/normalize-list-item.mjs +18 -0
  104. package/esm2022/plugins/list/normalizers/normalize-no.mjs +43 -0
  105. package/esm2022/plugins/list/on-key-down-list.mjs +33 -0
  106. package/esm2022/plugins/list/queries/get-list-item-entry.mjs +28 -0
  107. package/esm2022/plugins/list/queries/get-start-list-item.mjs +27 -0
  108. package/esm2022/plugins/list/queries/has-list-in-list-item.mjs +27 -0
  109. package/esm2022/plugins/list/queries/is-in-list.mjs +6 -0
  110. package/esm2022/plugins/list/queries/is-list-nested.mjs +10 -0
  111. package/esm2022/plugins/list/queries/is-list.mjs +5 -0
  112. package/{esm2020 → esm2022}/plugins/list/queries/is-node-type-list.mjs +1 -1
  113. package/esm2022/plugins/list/queries/is-selection-at-list-item-start.mjs +13 -0
  114. package/esm2022/plugins/list/queries/is-selection-in-same-list-item.mjs +17 -0
  115. package/{esm2020 → esm2022}/plugins/list/queries/is-single-list-item.mjs +1 -1
  116. package/esm2022/plugins/list/transforms/insert-list-data.mjs +72 -0
  117. package/esm2022/plugins/list/transforms/insert-list-item.mjs +72 -0
  118. package/esm2022/plugins/list/transforms/move-list-item-down.mjs +41 -0
  119. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +43 -0
  120. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +30 -0
  121. package/esm2022/plugins/list/transforms/move-list-item-up.mjs +78 -0
  122. package/esm2022/plugins/list/transforms/unwrap-list.mjs +10 -0
  123. package/esm2022/plugins/mark/mark.editor.mjs +28 -0
  124. package/{esm2020 → esm2022}/plugins/mark/mark.plugin.mjs +1 -1
  125. package/{esm2020 → esm2022}/plugins/mention/mention.editor.mjs +1 -1
  126. package/esm2022/plugins/mention/mention.plugin.mjs +91 -0
  127. package/{esm2020 → esm2022}/plugins/mention/suggestion.component.mjs +4 -4
  128. package/{esm2020 → esm2022}/plugins/node-id/node-id.plugin.mjs +1 -1
  129. package/{esm2020 → esm2022}/plugins/normalizers/insert-paragraph-nodes.mjs +1 -1
  130. package/esm2022/plugins/normalizers/remove-empty-nodes.mjs +18 -0
  131. package/{esm2020 → esm2022}/plugins/normalizers/trailing-node.plugin.mjs +1 -1
  132. package/{esm2020 → esm2022}/plugins/paint-format/paint-format.editor.mjs +1 -1
  133. package/{esm2020 → esm2022}/plugins/quick-insert/components/quick-insert.component.mjs +4 -4
  134. package/esm2022/plugins/quick-insert/quick-insert.editor.mjs +68 -0
  135. package/esm2022/plugins/quick-insert/quick-insert.plugin.mjs +104 -0
  136. package/esm2022/plugins/table/components/insert-mark/insert-mark.component.mjs +104 -0
  137. package/{esm2020 → esm2022}/plugins/table/components/row/row.component.mjs +6 -6
  138. package/{esm2020 → esm2022}/plugins/table/components/table.component.mjs +16 -16
  139. package/{esm2020 → esm2022}/plugins/table/components/td/td.component.mjs +4 -4
  140. package/{esm2020 → esm2022}/plugins/table/components/toolbar/table-options.component.mjs +6 -6
  141. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +189 -0
  142. package/esm2022/plugins/table/table.editor.mjs +209 -0
  143. package/{esm2020 → esm2022}/plugins/table/table.pipe.mjs +7 -7
  144. package/esm2022/plugins/table/table.plugin.mjs +544 -0
  145. package/{esm2020 → esm2022}/plugins/table/table.service.mjs +4 -4
  146. package/esm2022/plugins/table/table.store.mjs +426 -0
  147. package/esm2022/plugins/table/table.types.mjs +60 -0
  148. package/{esm2020 → esm2022}/plugins/table/toolbar-item.component.mjs +6 -6
  149. package/esm2022/plugins/table/transforms/clear-cell.mjs +14 -0
  150. package/esm2022/plugins/table/transforms/clear-table-node.mjs +27 -0
  151. package/esm2022/plugins/table/transforms/insert-column.mjs +69 -0
  152. package/esm2022/plugins/table/transforms/insert-row.mjs +50 -0
  153. package/esm2022/plugins/table/transforms/insert-table.mjs +15 -0
  154. package/esm2022/plugins/table/transforms/remove-column.mjs +51 -0
  155. package/esm2022/plugins/table/transforms/remove-row.mjs +48 -0
  156. package/esm2022/plugins/table/transforms/remove-table.mjs +49 -0
  157. package/esm2022/plugins/table/utils/calc-anchor-position.mjs +25 -0
  158. package/esm2022/plugins/table/utils/cell-position.mjs +60 -0
  159. package/esm2022/plugins/table/utils/create-table-position.mjs +10 -0
  160. package/esm2022/plugins/table/utils/get-min-max-cell-index.mjs +69 -0
  161. package/esm2022/plugins/table/utils/get-select-cell-node.mjs +23 -0
  162. package/esm2022/plugins/table/utils/handle-cell.mjs +25 -0
  163. package/esm2022/plugins/table/utils/is-range-in-table.mjs +16 -0
  164. package/esm2022/plugins/table/utils/is-selection-in-table.mjs +51 -0
  165. package/esm2022/plugins/table/utils/merge-cell.mjs +108 -0
  166. package/esm2022/plugins/table/utils/set-menu-cell-invisibility.mjs +45 -0
  167. package/esm2022/plugins/table/utils/split-cell.mjs +29 -0
  168. package/esm2022/plugins/table/utils/table-entry.mjs +21 -0
  169. package/{esm2020 → esm2022}/plugins/todo-item/todo-item.component.mjs +7 -7
  170. package/esm2022/plugins/todo-item/todo-item.editor.mjs +32 -0
  171. package/esm2022/plugins/todo-item/todo-item.plugin.mjs +93 -0
  172. package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +83 -0
  173. package/esm2022/queries/anchor-block-entry.mjs +13 -0
  174. package/esm2022/queries/anchor-block.mjs +6 -0
  175. package/esm2022/queries/anchor-inline-entry.mjs +10 -0
  176. package/{esm2020 → esm2022}/queries/find-descendant.mjs +1 -1
  177. package/esm2022/queries/find-node.mjs +45 -0
  178. package/esm2022/queries/get-above-by-type.mjs +14 -0
  179. package/esm2022/queries/get-above.mjs +9 -0
  180. package/esm2022/queries/get-anchor-block-entry.mjs +8 -0
  181. package/esm2022/queries/get-block-above.mjs +10 -0
  182. package/esm2022/queries/get-block-card-above.mjs +10 -0
  183. package/esm2022/queries/get-block-card-cursor.mjs +5 -0
  184. package/esm2022/queries/get-container-blocks.mjs +12 -0
  185. package/esm2022/queries/get-insert-elements-path.mjs +44 -0
  186. package/{esm2020 → esm2022}/queries/get-last-node.mjs +1 -1
  187. package/esm2022/queries/get-node.mjs +10 -0
  188. package/esm2022/queries/get-nodes-by-type.mjs +15 -0
  189. package/esm2022/queries/get-nodes.mjs +7 -0
  190. package/esm2022/queries/get-parent.mjs +12 -0
  191. package/esm2022/queries/get-plain-text.mjs +16 -0
  192. package/esm2022/queries/get-plugin-by-toolbar.mjs +13 -0
  193. package/{esm2020 → esm2022}/queries/get-point-before.mjs +1 -1
  194. package/esm2022/queries/get-point-from-location.mjs +15 -0
  195. package/esm2022/queries/get-rang-from-block-start.mjs +16 -0
  196. package/esm2022/queries/get-range-before.mjs +17 -0
  197. package/{esm2020 → esm2022}/queries/get-selection-marks.mjs +1 -1
  198. package/esm2022/queries/get-selection-nodes-by-type.mjs +30 -0
  199. package/esm2022/queries/get-text.mjs +9 -0
  200. package/esm2022/queries/get-toolbar-disabled.mjs +13 -0
  201. package/esm2022/queries/is-across-blocks.mjs +7 -0
  202. package/esm2022/queries/is-ancestor-empty.mjs +6 -0
  203. package/esm2022/queries/is-block-above-empty.mjs +11 -0
  204. package/esm2022/queries/is-block-active.mjs +8 -0
  205. package/esm2022/queries/is-block-card-cursor.mjs +4 -0
  206. package/{esm2020 → esm2022}/queries/is-block-text-empty-after-selection.mjs +1 -1
  207. package/esm2022/queries/is-contain-nested-type.mjs +29 -0
  208. package/esm2022/queries/is-container-type.mjs +3 -0
  209. package/esm2022/queries/is-empty-content-filter.mjs +23 -0
  210. package/{esm2020 → esm2022}/queries/is-empty-content.mjs +1 -1
  211. package/esm2022/queries/is-empty-paragraph-by-path.mjs +7 -0
  212. package/esm2022/queries/is-empty-paragraph.mjs +28 -0
  213. package/esm2022/queries/is-global-collapsed.mjs +5 -0
  214. package/esm2022/queries/is-include-types.mjs +12 -0
  215. package/esm2022/queries/is-node-type-in.mjs +9 -0
  216. package/esm2022/queries/is-node-type.mjs +15 -0
  217. package/esm2022/queries/is-paragraph.mjs +9 -0
  218. package/esm2022/queries/is-range-across-blocks.mjs +22 -0
  219. package/esm2022/queries/is-start.mjs +6 -0
  220. package/esm2022/queries/some-node.mjs +9 -0
  221. package/{esm2020 → esm2022}/services/context.service.mjs +4 -4
  222. package/{esm2020 → esm2022}/services/table-contextmenu.service.mjs +4 -4
  223. package/{esm2020 → esm2022}/services/toolbar.service.mjs +4 -4
  224. package/{esm2020 → esm2022}/shortcuts/index.mjs +1 -1
  225. package/esm2022/shortcuts/mark.mjs +25 -0
  226. package/esm2022/test/utils/with-editor.mjs +8 -0
  227. package/esm2022/test/utils/with-plugin.mjs +8 -0
  228. package/{esm2020 → esm2022}/transforms/clear-marks.mjs +1 -1
  229. package/esm2022/transforms/close-conversion-hint.mjs +8 -0
  230. package/{esm2020 → esm2022}/transforms/delete-element.mjs +1 -1
  231. package/esm2022/transforms/handle-continual-delete-backward.mjs +18 -0
  232. package/esm2022/transforms/handle-continual-insert-break.mjs +20 -0
  233. package/esm2022/transforms/insert-elements.mjs +38 -0
  234. package/esm2022/transforms/insert-paragraph.mjs +6 -0
  235. package/esm2022/transforms/move-children.mjs +22 -0
  236. package/esm2022/transforms/on-keydown-reset-block-type.mjs +22 -0
  237. package/{esm2020 → esm2022}/transforms/set-end-selection.mjs +1 -1
  238. package/esm2022/transforms/set-marks.mjs +9 -0
  239. package/esm2022/transforms/set-node.mjs +6 -0
  240. package/esm2022/transforms/un-hang-range.mjs +11 -0
  241. package/esm2022/transforms/un-wrap.mjs +12 -0
  242. package/esm2022/transforms/unwrap-nodes-by-type.mjs +14 -0
  243. package/{esm2020 → esm2022}/utils/auto-focus.mjs +1 -1
  244. package/esm2022/utils/copy-node.mjs +32 -0
  245. package/esm2022/utils/create-empty-paragraph.mjs +5 -0
  246. package/esm2022/utils/create-paragraph.mjs +14 -0
  247. package/{esm2020 → esm2022}/utils/dom.mjs +1 -1
  248. package/esm2022/utils/editor-uuid.mjs +8 -0
  249. package/esm2022/utils/fragment.mjs +74 -0
  250. package/esm2022/utils/get-editable-element-height.mjs +6 -0
  251. package/esm2022/utils/get-toolbar-class.mjs +6 -0
  252. package/esm2022/utils/index.mjs +20 -0
  253. package/esm2022/utils/insert-data-by-invalid-type.mjs +62 -0
  254. package/esm2022/utils/is-clean-empty-paragraph.mjs +37 -0
  255. package/esm2022/utils/is-inline.mjs +9 -0
  256. package/{esm2020 → esm2022}/utils/match.mjs +1 -1
  257. package/esm2022/utils/merge-element-options.mjs +19 -0
  258. package/esm2022/utils/scroll-into-view.mjs +38 -0
  259. package/{fesm2020 → fesm2022}/worktile-theia.mjs +398 -389
  260. package/fesm2022/worktile-theia.mjs.map +1 -0
  261. package/interfaces/auto-format.d.ts +5 -5
  262. package/interfaces/editor.d.ts +8 -6
  263. package/interfaces/plugins/plugin-menu.d.ts +5 -5
  264. package/interfaces/plugins/with-override.d.ts +2 -2
  265. package/interfaces/reset-block-type-plugin-options.d.ts +3 -3
  266. package/interfaces/toolbar.d.ts +5 -5
  267. package/interfaces/view-base.d.ts +3 -2
  268. package/package.json +11 -17
  269. package/pipes.d.ts +3 -3
  270. package/plugins/align/align.editor.d.ts +4 -4
  271. package/plugins/align/align.plugin.d.ts +2 -1
  272. package/plugins/autoformat/autoformat.plugin.d.ts +2 -1
  273. package/plugins/autoformat/transforms/auto-format-block.d.ts +5 -4
  274. package/plugins/autoformat/transforms/auto-format-inline.d.ts +2 -2
  275. package/plugins/blockquote/blockquote.component.d.ts +3 -3
  276. package/plugins/blockquote/blockquote.editor.d.ts +2 -2
  277. package/plugins/blockquote/blockquote.plugin.d.ts +2 -1
  278. package/plugins/code/code.component.d.ts +2 -3
  279. package/plugins/code/code.editor.d.ts +3 -3
  280. package/plugins/code/code.plugin.d.ts +2 -1
  281. package/plugins/color/color.editor.d.ts +3 -3
  282. package/plugins/common/block-card.plugin.d.ts +2 -1
  283. package/plugins/common/common.plugin.d.ts +2 -1
  284. package/plugins/common/get-fragment.plugin.d.ts +2 -1
  285. package/plugins/common/history.plugin.d.ts +6 -6
  286. package/plugins/common/insert-data-by-invalid-type.d.ts +2 -1
  287. package/plugins/common/move-selection.plugin.d.ts +2 -1
  288. package/plugins/common/remove-empty.plugin.d.ts +2 -1
  289. package/plugins/common/remove-void.plugin.d.ts +2 -1
  290. package/plugins/common/reset-type.plugin.d.ts +2 -1
  291. package/plugins/common/transforms.plugin.d.ts +2 -1
  292. package/plugins/deserialize/deserialize-html.plugin.d.ts +2 -1
  293. package/plugins/deserialize/deserialize-md.plugin.d.ts +2 -1
  294. package/plugins/font-size/font-size.editor.d.ts +3 -4
  295. package/plugins/heading/heading.editor.d.ts +3 -4
  296. package/plugins/heading/heading.plugin.d.ts +2 -2
  297. package/plugins/hr/hr.component.d.ts +3 -3
  298. package/plugins/hr/hr.editor.d.ts +3 -3
  299. package/plugins/hr/hr.plugin.d.ts +2 -1
  300. package/plugins/image/image.component.d.ts +2 -3
  301. package/plugins/image/image.editor.d.ts +8 -7
  302. package/plugins/indent/indent.editor.d.ts +3 -4
  303. package/plugins/indent/indent.plugin.d.ts +2 -1
  304. package/plugins/indent/on-keydown-indent.d.ts +2 -2
  305. package/plugins/inline-code/inline-code.component.d.ts +2 -3
  306. package/plugins/inline-code/inline-code.editor.d.ts +6 -5
  307. package/plugins/inline-code/inline-code.plugin.d.ts +2 -1
  308. package/plugins/link/edit/link-edit.component.d.ts +4 -3
  309. package/plugins/link/hover/link-hover.component.d.ts +1 -1
  310. package/plugins/link/link.component.d.ts +2 -3
  311. package/plugins/link/link.editor.d.ts +5 -5
  312. package/plugins/link/link.plugin.d.ts +2 -1
  313. package/plugins/list/components/bulleted-list.component.d.ts +2 -3
  314. package/plugins/list/components/list-item.component.d.ts +3 -3
  315. package/plugins/list/components/numbered-list.component.d.ts +2 -3
  316. package/plugins/list/list.editor.d.ts +11 -9
  317. package/plugins/list/list.plugin.d.ts +2 -1
  318. package/plugins/list/normalizers/get-list-normalizer.d.ts +3 -2
  319. package/plugins/list/normalizers/normalize-list-item.d.ts +3 -2
  320. package/plugins/list/normalizers/normalize-no.d.ts +3 -2
  321. package/plugins/list/on-key-down-list.d.ts +2 -2
  322. package/plugins/list/queries/get-list-item-entry.d.ts +3 -2
  323. package/plugins/list/queries/get-start-list-item.d.ts +2 -2
  324. package/plugins/list/queries/has-list-in-list-item.d.ts +5 -4
  325. package/plugins/list/queries/is-in-list.d.ts +3 -2
  326. package/plugins/list/queries/is-list-nested.d.ts +3 -2
  327. package/plugins/list/queries/is-list.d.ts +2 -2
  328. package/plugins/list/queries/is-node-type-list.d.ts +2 -1
  329. package/plugins/list/queries/is-selection-at-list-item-start.d.ts +2 -2
  330. package/plugins/list/queries/is-selection-in-same-list-item.d.ts +2 -2
  331. package/plugins/list/transforms/insert-list-data.d.ts +5 -3
  332. package/plugins/list/transforms/insert-list-item.d.ts +2 -2
  333. package/plugins/list/transforms/move-list-item-down.d.ts +3 -2
  334. package/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.d.ts +3 -2
  335. package/plugins/list/transforms/move-list-item-sublist-items-to-list.d.ts +3 -2
  336. package/plugins/list/transforms/move-list-item-up.d.ts +3 -2
  337. package/plugins/list/transforms/unwrap-list.d.ts +2 -2
  338. package/plugins/mark/mark.editor.d.ts +3 -2
  339. package/plugins/mark/mark.plugin.d.ts +2 -1
  340. package/plugins/mention/mention.plugin.d.ts +2 -1
  341. package/plugins/mention/suggestion.component.d.ts +1 -1
  342. package/plugins/node-id/node-id.plugin.d.ts +2 -2
  343. package/plugins/normalizers/insert-paragraph-nodes.d.ts +2 -1
  344. package/plugins/normalizers/trailing-node.plugin.d.ts +2 -2
  345. package/plugins/quick-insert/components/quick-insert.component.d.ts +3 -3
  346. package/plugins/quick-insert/quick-insert.editor.d.ts +6 -6
  347. package/plugins/quick-insert/quick-insert.plugin.d.ts +3 -3
  348. package/plugins/table/components/insert-mark/insert-mark.component.d.ts +3 -3
  349. package/plugins/table/components/table.component.d.ts +2 -3
  350. package/plugins/table/components/td/td.component.d.ts +2 -2
  351. package/plugins/table/components/toolbar/table-options.component.d.ts +3 -3
  352. package/plugins/table/components/toolbar/table-toolbar.component.d.ts +3 -3
  353. package/plugins/table/table.editor.d.ts +11 -11
  354. package/plugins/table/table.store.d.ts +12 -12
  355. package/plugins/table/table.types.d.ts +4 -3
  356. package/plugins/table/transforms/clear-cell.d.ts +3 -2
  357. package/plugins/table/transforms/clear-table-node.d.ts +2 -2
  358. package/plugins/table/transforms/insert-column.d.ts +5 -4
  359. package/plugins/table/transforms/insert-row.d.ts +2 -2
  360. package/plugins/table/transforms/insert-table.d.ts +3 -2
  361. package/plugins/table/transforms/remove-column.d.ts +2 -2
  362. package/plugins/table/transforms/remove-row.d.ts +2 -2
  363. package/plugins/table/transforms/remove-table.d.ts +2 -2
  364. package/plugins/table/utils/calc-anchor-position.d.ts +2 -2
  365. package/plugins/table/utils/cell-position.d.ts +3 -3
  366. package/plugins/table/utils/create-table-position.d.ts +3 -2
  367. package/plugins/table/utils/get-min-max-cell-index.d.ts +2 -2
  368. package/plugins/table/utils/get-select-cell-node.d.ts +3 -3
  369. package/plugins/table/utils/handle-cell.d.ts +3 -2
  370. package/plugins/table/utils/is-range-in-table.d.ts +3 -2
  371. package/plugins/table/utils/is-selection-in-table.d.ts +3 -3
  372. package/plugins/table/utils/merge-cell.d.ts +6 -5
  373. package/plugins/table/utils/set-menu-cell-invisibility.d.ts +2 -2
  374. package/plugins/table/utils/split-cell.d.ts +3 -3
  375. package/plugins/table/utils/table-entry.d.ts +5 -5
  376. package/plugins/todo-item/todo-item.component.d.ts +2 -3
  377. package/plugins/todo-item/todo-item.editor.d.ts +3 -3
  378. package/plugins/todo-item/todo-item.plugin.d.ts +2 -1
  379. package/plugins/vertical-align/toolbar-item.component.d.ts +2 -3
  380. package/queries/anchor-block-entry.d.ts +4 -2
  381. package/queries/anchor-block.d.ts +3 -2
  382. package/queries/anchor-inline-entry.d.ts +3 -2
  383. package/queries/find-descendant.d.ts +3 -2
  384. package/queries/find-node.d.ts +3 -3
  385. package/queries/get-above-by-type.d.ts +2 -3
  386. package/queries/get-above.d.ts +3 -3
  387. package/queries/get-anchor-block-entry.d.ts +4 -2
  388. package/queries/get-block-above.d.ts +3 -3
  389. package/queries/get-block-card-above.d.ts +3 -3
  390. package/queries/get-block-card-cursor.d.ts +2 -2
  391. package/queries/get-container-blocks.d.ts +2 -2
  392. package/queries/get-last-node.d.ts +3 -2
  393. package/queries/get-node.d.ts +3 -2
  394. package/queries/get-nodes-by-type.d.ts +2 -3
  395. package/queries/get-nodes.d.ts +2 -3
  396. package/queries/get-parent.d.ts +3 -3
  397. package/queries/get-plain-text.d.ts +2 -2
  398. package/queries/get-plugin-by-toolbar.d.ts +2 -3
  399. package/queries/get-point-before.d.ts +3 -2
  400. package/queries/get-point-from-location.d.ts +3 -2
  401. package/queries/get-rang-from-block-start.d.ts +2 -3
  402. package/queries/get-range-before.d.ts +3 -2
  403. package/queries/get-selection-marks.d.ts +2 -2
  404. package/queries/get-selection-nodes-by-type.d.ts +3 -2
  405. package/queries/get-text.d.ts +3 -2
  406. package/queries/get-toolbar-disabled.d.ts +2 -3
  407. package/queries/is-across-blocks.d.ts +3 -2
  408. package/queries/is-ancestor-empty.d.ts +3 -2
  409. package/queries/is-block-above-empty.d.ts +2 -2
  410. package/queries/is-block-active.d.ts +2 -2
  411. package/queries/is-block-card-cursor.d.ts +2 -2
  412. package/queries/is-block-text-empty-after-selection.d.ts +2 -2
  413. package/queries/is-contain-nested-type.d.ts +2 -2
  414. package/queries/is-container-type.d.ts +3 -2
  415. package/queries/is-empty-content-filter.d.ts +2 -2
  416. package/queries/is-empty-paragraph-by-path.d.ts +3 -2
  417. package/queries/is-empty-paragraph.d.ts +6 -4
  418. package/queries/is-global-collapsed.d.ts +2 -2
  419. package/queries/is-include-types.d.ts +2 -2
  420. package/queries/is-node-type-in.d.ts +2 -3
  421. package/queries/is-paragraph.d.ts +2 -2
  422. package/queries/is-range-across-blocks.d.ts +3 -3
  423. package/queries/is-start.d.ts +3 -2
  424. package/queries/some-node.d.ts +3 -2
  425. package/shortcuts/index.d.ts +2 -2
  426. package/shortcuts/mark.d.ts +2 -2
  427. package/test/utils/with-editor.d.ts +2 -0
  428. package/transforms/clear-marks.d.ts +2 -2
  429. package/transforms/close-conversion-hint.d.ts +2 -2
  430. package/transforms/delete-element.d.ts +3 -2
  431. package/transforms/handle-continual-delete-backward.d.ts +4 -3
  432. package/transforms/handle-continual-insert-break.d.ts +3 -3
  433. package/transforms/insert-elements.d.ts +3 -2
  434. package/transforms/insert-paragraph.d.ts +3 -2
  435. package/transforms/move-children.d.ts +3 -2
  436. package/transforms/on-keydown-reset-block-type.d.ts +2 -2
  437. package/transforms/set-end-selection.d.ts +2 -2
  438. package/transforms/set-marks.d.ts +3 -2
  439. package/transforms/set-node.d.ts +3 -2
  440. package/transforms/un-hang-range.d.ts +3 -2
  441. package/transforms/un-wrap.d.ts +2 -2
  442. package/transforms/unwrap-nodes-by-type.d.ts +2 -3
  443. package/utils/auto-focus.d.ts +2 -2
  444. package/utils/copy-node.d.ts +5 -3
  445. package/utils/create-paragraph.d.ts +2 -0
  446. package/utils/dom.d.ts +2 -2
  447. package/utils/editor-uuid.d.ts +3 -3
  448. package/utils/fragment.d.ts +7 -5
  449. package/utils/get-editable-element-height.d.ts +2 -2
  450. package/utils/get-toolbar-class.d.ts +2 -2
  451. package/utils/index.d.ts +1 -0
  452. package/utils/is-clean-empty-paragraph.d.ts +4 -3
  453. package/utils/is-inline.d.ts +3 -2
  454. package/utils/match.d.ts +2 -2
  455. package/utils/merge-element-options.d.ts +1 -1
  456. package/utils/scroll-into-view.d.ts +2 -2
  457. package/esm2020/components/listbox/listbox.mjs +0 -375
  458. package/esm2020/components/plugin-menu/plugin-menu.component.mjs +0 -191
  459. package/esm2020/components/template/template.component.mjs +0 -62
  460. package/esm2020/components/toolbar/toolbar.component.mjs +0 -266
  461. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +0 -144
  462. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +0 -122
  463. package/esm2020/constants/auto-format-rules.mjs +0 -167
  464. package/esm2020/constants/plugin-menu.mjs +0 -325
  465. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +0 -87
  466. package/esm2020/core/utils/plugin-menu.mjs +0 -33
  467. package/esm2020/custom-types.mjs +0 -2
  468. package/esm2020/editor.module.mjs +0 -254
  469. package/esm2020/interfaces/auto-format.mjs +0 -2
  470. package/esm2020/interfaces/editor.mjs +0 -25
  471. package/esm2020/interfaces/plugins/plugin-menu.mjs +0 -19
  472. package/esm2020/interfaces/plugins/with-override.mjs +0 -2
  473. package/esm2020/interfaces/reset-block-type-plugin-options.mjs +0 -2
  474. package/esm2020/interfaces/toolbar.mjs +0 -12
  475. package/esm2020/pipes.mjs +0 -42
  476. package/esm2020/plugins/align/align.editor.mjs +0 -43
  477. package/esm2020/plugins/align/align.plugin.mjs +0 -64
  478. package/esm2020/plugins/autoformat/transforms/auto-format-block.mjs +0 -14
  479. package/esm2020/plugins/autoformat/transforms/auto-format-inline.mjs +0 -78
  480. package/esm2020/plugins/blockquote/blockquote.component.mjs +0 -21
  481. package/esm2020/plugins/blockquote/blockquote.editor.mjs +0 -20
  482. package/esm2020/plugins/blockquote/blockquote.plugin.mjs +0 -85
  483. package/esm2020/plugins/code/code.editor.mjs +0 -48
  484. package/esm2020/plugins/color/color.editor.mjs +0 -27
  485. package/esm2020/plugins/common/history.plugin.mjs +0 -31
  486. package/esm2020/plugins/common/transforms.plugin.mjs +0 -18
  487. package/esm2020/plugins/deserialize/deserialize-html.plugin.mjs +0 -53
  488. package/esm2020/plugins/deserialize/deserialize-md.plugin.mjs +0 -130
  489. package/esm2020/plugins/font-size/font-size.editor.mjs +0 -98
  490. package/esm2020/plugins/heading/heading.editor.mjs +0 -54
  491. package/esm2020/plugins/heading/heading.plugin.mjs +0 -136
  492. package/esm2020/plugins/hr/hr.editor.mjs +0 -16
  493. package/esm2020/plugins/hr/hr.plugin.mjs +0 -56
  494. package/esm2020/plugins/image/image.component.mjs +0 -420
  495. package/esm2020/plugins/image/image.editor.mjs +0 -81
  496. package/esm2020/plugins/indent/indent.editor.mjs +0 -78
  497. package/esm2020/plugins/indent/on-keydown-indent.mjs +0 -59
  498. package/esm2020/plugins/inline-code/inline-code.component.mjs +0 -26
  499. package/esm2020/plugins/inline-code/inline-code.editor.mjs +0 -48
  500. package/esm2020/plugins/inline-code/inline-code.plugin.mjs +0 -66
  501. package/esm2020/plugins/link/edit/link-edit.component.mjs +0 -103
  502. package/esm2020/plugins/link/link.component.mjs +0 -167
  503. package/esm2020/plugins/link/link.editor.mjs +0 -66
  504. package/esm2020/plugins/list/components/bulleted-list.component.mjs +0 -33
  505. package/esm2020/plugins/list/components/list-item.component.mjs +0 -93
  506. package/esm2020/plugins/list/components/numbered-list.component.mjs +0 -39
  507. package/esm2020/plugins/list/list.editor.mjs +0 -126
  508. package/esm2020/plugins/list/list.plugin.mjs +0 -312
  509. package/esm2020/plugins/list/normalizers/get-list-normalizer.mjs +0 -39
  510. package/esm2020/plugins/list/normalizers/normalize-list-item.mjs +0 -18
  511. package/esm2020/plugins/list/normalizers/normalize-no.mjs +0 -43
  512. package/esm2020/plugins/list/on-key-down-list.mjs +0 -33
  513. package/esm2020/plugins/list/queries/get-list-item-entry.mjs +0 -28
  514. package/esm2020/plugins/list/queries/get-start-list-item.mjs +0 -27
  515. package/esm2020/plugins/list/queries/has-list-in-list-item.mjs +0 -27
  516. package/esm2020/plugins/list/queries/is-in-list.mjs +0 -6
  517. package/esm2020/plugins/list/queries/is-list-nested.mjs +0 -10
  518. package/esm2020/plugins/list/queries/is-list.mjs +0 -5
  519. package/esm2020/plugins/list/queries/is-selection-at-list-item-start.mjs +0 -13
  520. package/esm2020/plugins/list/queries/is-selection-in-same-list-item.mjs +0 -17
  521. package/esm2020/plugins/list/transforms/insert-list-data.mjs +0 -72
  522. package/esm2020/plugins/list/transforms/insert-list-item.mjs +0 -73
  523. package/esm2020/plugins/list/transforms/move-list-item-down.mjs +0 -41
  524. package/esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +0 -43
  525. package/esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +0 -30
  526. package/esm2020/plugins/list/transforms/move-list-item-up.mjs +0 -78
  527. package/esm2020/plugins/list/transforms/unwrap-list.mjs +0 -10
  528. package/esm2020/plugins/mark/mark.editor.mjs +0 -28
  529. package/esm2020/plugins/mention/mention.plugin.mjs +0 -91
  530. package/esm2020/plugins/normalizers/remove-empty-nodes.mjs +0 -18
  531. package/esm2020/plugins/quick-insert/quick-insert.editor.mjs +0 -68
  532. package/esm2020/plugins/quick-insert/quick-insert.plugin.mjs +0 -104
  533. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +0 -104
  534. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +0 -189
  535. package/esm2020/plugins/table/table.editor.mjs +0 -209
  536. package/esm2020/plugins/table/table.plugin.mjs +0 -544
  537. package/esm2020/plugins/table/table.store.mjs +0 -426
  538. package/esm2020/plugins/table/table.types.mjs +0 -60
  539. package/esm2020/plugins/table/transforms/clear-cell.mjs +0 -14
  540. package/esm2020/plugins/table/transforms/clear-table-node.mjs +0 -27
  541. package/esm2020/plugins/table/transforms/insert-column.mjs +0 -69
  542. package/esm2020/plugins/table/transforms/insert-row.mjs +0 -50
  543. package/esm2020/plugins/table/transforms/insert-table.mjs +0 -15
  544. package/esm2020/plugins/table/transforms/remove-column.mjs +0 -51
  545. package/esm2020/plugins/table/transforms/remove-row.mjs +0 -48
  546. package/esm2020/plugins/table/transforms/remove-table.mjs +0 -49
  547. package/esm2020/plugins/table/utils/calc-anchor-position.mjs +0 -25
  548. package/esm2020/plugins/table/utils/cell-position.mjs +0 -60
  549. package/esm2020/plugins/table/utils/create-table-position.mjs +0 -10
  550. package/esm2020/plugins/table/utils/get-min-max-cell-index.mjs +0 -69
  551. package/esm2020/plugins/table/utils/get-select-cell-node.mjs +0 -23
  552. package/esm2020/plugins/table/utils/handle-cell.mjs +0 -25
  553. package/esm2020/plugins/table/utils/is-range-in-table.mjs +0 -16
  554. package/esm2020/plugins/table/utils/is-selection-in-table.mjs +0 -51
  555. package/esm2020/plugins/table/utils/merge-cell.mjs +0 -108
  556. package/esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs +0 -45
  557. package/esm2020/plugins/table/utils/split-cell.mjs +0 -29
  558. package/esm2020/plugins/table/utils/table-entry.mjs +0 -21
  559. package/esm2020/plugins/todo-item/todo-item.editor.mjs +0 -32
  560. package/esm2020/plugins/todo-item/todo-item.plugin.mjs +0 -93
  561. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +0 -83
  562. package/esm2020/queries/anchor-block-entry.mjs +0 -13
  563. package/esm2020/queries/anchor-block.mjs +0 -6
  564. package/esm2020/queries/anchor-inline-entry.mjs +0 -10
  565. package/esm2020/queries/find-node.mjs +0 -45
  566. package/esm2020/queries/get-above-by-type.mjs +0 -14
  567. package/esm2020/queries/get-above.mjs +0 -9
  568. package/esm2020/queries/get-anchor-block-entry.mjs +0 -8
  569. package/esm2020/queries/get-block-above.mjs +0 -10
  570. package/esm2020/queries/get-block-card-above.mjs +0 -10
  571. package/esm2020/queries/get-block-card-cursor.mjs +0 -5
  572. package/esm2020/queries/get-container-blocks.mjs +0 -12
  573. package/esm2020/queries/get-insert-elements-path.mjs +0 -44
  574. package/esm2020/queries/get-node.mjs +0 -10
  575. package/esm2020/queries/get-nodes-by-type.mjs +0 -15
  576. package/esm2020/queries/get-nodes.mjs +0 -7
  577. package/esm2020/queries/get-parent.mjs +0 -12
  578. package/esm2020/queries/get-plain-text.mjs +0 -16
  579. package/esm2020/queries/get-plugin-by-toolbar.mjs +0 -13
  580. package/esm2020/queries/get-point-from-location.mjs +0 -15
  581. package/esm2020/queries/get-rang-from-block-start.mjs +0 -16
  582. package/esm2020/queries/get-range-before.mjs +0 -17
  583. package/esm2020/queries/get-selection-nodes-by-type.mjs +0 -30
  584. package/esm2020/queries/get-text.mjs +0 -9
  585. package/esm2020/queries/get-toolbar-disabled.mjs +0 -13
  586. package/esm2020/queries/is-across-blocks.mjs +0 -7
  587. package/esm2020/queries/is-ancestor-empty.mjs +0 -6
  588. package/esm2020/queries/is-block-above-empty.mjs +0 -11
  589. package/esm2020/queries/is-block-active.mjs +0 -8
  590. package/esm2020/queries/is-block-card-cursor.mjs +0 -4
  591. package/esm2020/queries/is-contain-nested-type.mjs +0 -29
  592. package/esm2020/queries/is-container-type.mjs +0 -3
  593. package/esm2020/queries/is-empty-content-filter.mjs +0 -23
  594. package/esm2020/queries/is-empty-paragraph-by-path.mjs +0 -7
  595. package/esm2020/queries/is-empty-paragraph.mjs +0 -28
  596. package/esm2020/queries/is-global-collapsed.mjs +0 -5
  597. package/esm2020/queries/is-include-types.mjs +0 -12
  598. package/esm2020/queries/is-node-type-in.mjs +0 -9
  599. package/esm2020/queries/is-node-type.mjs +0 -15
  600. package/esm2020/queries/is-paragraph.mjs +0 -9
  601. package/esm2020/queries/is-range-across-blocks.mjs +0 -22
  602. package/esm2020/queries/is-start.mjs +0 -6
  603. package/esm2020/queries/some-node.mjs +0 -9
  604. package/esm2020/shortcuts/mark.mjs +0 -25
  605. package/esm2020/test/utils/with-plugin.mjs +0 -11
  606. package/esm2020/transforms/close-conversion-hint.mjs +0 -8
  607. package/esm2020/transforms/handle-continual-delete-backward.mjs +0 -18
  608. package/esm2020/transforms/handle-continual-insert-break.mjs +0 -20
  609. package/esm2020/transforms/insert-elements.mjs +0 -38
  610. package/esm2020/transforms/insert-paragraph.mjs +0 -6
  611. package/esm2020/transforms/move-children.mjs +0 -22
  612. package/esm2020/transforms/on-keydown-reset-block-type.mjs +0 -23
  613. package/esm2020/transforms/set-marks.mjs +0 -9
  614. package/esm2020/transforms/set-node.mjs +0 -6
  615. package/esm2020/transforms/un-hang-range.mjs +0 -11
  616. package/esm2020/transforms/un-wrap.mjs +0 -12
  617. package/esm2020/transforms/unwrap-nodes-by-type.mjs +0 -14
  618. package/esm2020/utils/copy-node.mjs +0 -32
  619. package/esm2020/utils/create-empty-paragraph.mjs +0 -14
  620. package/esm2020/utils/editor-uuid.mjs +0 -8
  621. package/esm2020/utils/fragment.mjs +0 -74
  622. package/esm2020/utils/get-editable-element-height.mjs +0 -6
  623. package/esm2020/utils/get-toolbar-class.mjs +0 -6
  624. package/esm2020/utils/index.mjs +0 -19
  625. package/esm2020/utils/insert-data-by-invalid-type.mjs +0 -62
  626. package/esm2020/utils/is-clean-empty-paragraph.mjs +0 -37
  627. package/esm2020/utils/is-inline.mjs +0 -9
  628. package/esm2020/utils/merge-element-options.mjs +0 -19
  629. package/esm2020/utils/scroll-into-view.mjs +0 -38
  630. package/fesm2015/worktile-theia.mjs +0 -16674
  631. package/fesm2015/worktile-theia.mjs.map +0 -1
  632. package/fesm2020/worktile-theia.mjs.map +0 -1
  633. /package/{esm2020 → esm2022}/components/column-resize/resize-ref.mjs +0 -0
  634. /package/{esm2020 → esm2022}/components/column-resize/selectors.mjs +0 -0
  635. /package/{esm2020 → esm2022}/components/index.mjs +0 -0
  636. /package/{esm2020 → esm2022}/components/listbox/listbox.type.mjs +0 -0
  637. /package/{esm2020 → esm2022}/constants/code.mjs +0 -0
  638. /package/{esm2020 → esm2022}/constants/color-select.mjs +0 -0
  639. /package/{esm2020 → esm2022}/constants/error.mjs +0 -0
  640. /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
  641. /package/{esm2020 → esm2022}/constants/node-types.mjs +0 -0
  642. /package/{esm2020 → esm2022}/constants/selector.mjs +0 -0
  643. /package/{esm2020 → esm2022}/constants/toolbar.mjs +0 -0
  644. /package/{esm2020 → esm2022}/core/create-plugin.mjs +0 -0
  645. /package/{esm2020 → esm2022}/core/create-toolbar.mjs +0 -0
  646. /package/{esm2020 → esm2022}/core/index.mjs +0 -0
  647. /package/{esm2020 → esm2022}/core/utils/flatten-deep-plugins.mjs +0 -0
  648. /package/{esm2020 → esm2022}/core/utils/get-plugin-options.mjs +0 -0
  649. /package/{esm2020 → esm2022}/core/utils/get-plugin.mjs +0 -0
  650. /package/{esm2020 → esm2022}/core/utils/get-plugins.mjs +0 -0
  651. /package/{esm2020 → esm2022}/core/utils/index.mjs +0 -0
  652. /package/{esm2020 → esm2022}/core/utils/merge-array.mjs +0 -0
  653. /package/{esm2020 → esm2022}/core/utils/merge-deep-plugins.mjs +0 -0
  654. /package/{esm2020 → esm2022}/core/utils/merge-options.mjs +0 -0
  655. /package/{esm2020 → esm2022}/core/utils/nested-structure-by-key.mjs +0 -0
  656. /package/{esm2020 → esm2022}/core/utils/plugins-by-key.mjs +0 -0
  657. /package/{esm2020 → esm2022}/core/with-theia.mjs +0 -0
  658. /package/{esm2020 → esm2022}/interfaces/element.mjs +0 -0
  659. /package/{esm2020 → esm2022}/interfaces/image.mjs +0 -0
  660. /package/{esm2020 → esm2022}/interfaces/index.mjs +0 -0
  661. /package/{esm2020 → esm2022}/interfaces/plugins/index.mjs +0 -0
  662. /package/{esm2020 → esm2022}/interfaces/plugins/no-infer.mjs +0 -0
  663. /package/{esm2020 → esm2022}/interfaces/plugins/plugin-key.mjs +0 -0
  664. /package/{esm2020 → esm2022}/interfaces/plugins/plugins.mjs +0 -0
  665. /package/{esm2020 → esm2022}/interfaces/upload.mjs +0 -0
  666. /package/{esm2020 → esm2022}/interfaces/utility/index.mjs +0 -0
  667. /package/{esm2020 → esm2022}/interfaces/utility/nested-structure-by-key.mjs +0 -0
  668. /package/{esm2020 → esm2022}/interfaces/utility/override-by-key.mjs +0 -0
  669. /package/{esm2020 → esm2022}/interfaces/utility/types.mjs +0 -0
  670. /package/{esm2020 → esm2022}/interfaces/valid-children-types.mjs +0 -0
  671. /package/{esm2020 → esm2022}/plugins/color/color.plugin.mjs +0 -0
  672. /package/{esm2020 → esm2022}/plugins/image/image.plugin.mjs +0 -0
  673. /package/{esm2020 → esm2022}/plugins/index.mjs +0 -0
  674. /package/{esm2020 → esm2022}/plugins/link/link.types.mjs +0 -0
  675. /package/{esm2020 → esm2022}/plugins/list/queries/get-list-item-sublist.mjs +0 -0
  676. /package/{esm2020 → esm2022}/plugins/list/queries/get-list-types.mjs +0 -0
  677. /package/{esm2020 → esm2022}/plugins/list/types.mjs +0 -0
  678. /package/{esm2020 → esm2022}/plugins/mention/index.mjs +0 -0
  679. /package/{esm2020 → esm2022}/plugins/mention/mention.type.mjs +0 -0
  680. /package/{esm2020 → esm2022}/plugins/public-api.mjs +0 -0
  681. /package/{esm2020 → esm2022}/plugins/soft-break/soft-break.plugin.mjs +0 -0
  682. /package/{esm2020 → esm2022}/plugins/soft-break/soft-break.types.mjs +0 -0
  683. /package/{esm2020 → esm2022}/plugins/table/transforms/index.mjs +0 -0
  684. /package/{esm2020 → esm2022}/plugins/table/utils/add-columns.mjs +0 -0
  685. /package/{esm2020 → esm2022}/plugins/table/utils/calc-span.mjs +0 -0
  686. /package/{esm2020 → esm2022}/plugins/table/utils/calculate-table.mjs +0 -0
  687. /package/{esm2020 → esm2022}/plugins/table/utils/create-cell.mjs +0 -0
  688. /package/{esm2020 → esm2022}/plugins/table/utils/create-row.mjs +0 -0
  689. /package/{esm2020 → esm2022}/plugins/table/utils/create-table.mjs +0 -0
  690. /package/{esm2020 → esm2022}/plugins/table/utils/get-grid-columns.mjs +0 -0
  691. /package/{esm2020 → esm2022}/plugins/table/utils/index.mjs +0 -0
  692. /package/{esm2020 → esm2022}/plugins/table/utils/is-header-row.mjs +0 -0
  693. /package/{esm2020 → esm2022}/plugins/table/utils/is-legal-table.mjs +0 -0
  694. /package/{esm2020 → esm2022}/plugins/table/utils/is-virtual-key.mjs +0 -0
  695. /package/{esm2020 → esm2022}/plugins/table/utils/next-path.mjs +0 -0
  696. /package/{esm2020 → esm2022}/plugins/table/utils/normalize-table.mjs +0 -0
  697. /package/{esm2020 → esm2022}/plugins/table/utils/remove-columns.mjs +0 -0
  698. /package/{esm2020 → esm2022}/plugins/table/utils/remove-row-column.mjs +0 -0
  699. /package/{esm2020 → esm2022}/plugins/table/utils/set-cells-background-color.mjs +0 -0
  700. /package/{esm2020 → esm2022}/plugins/table/utils/set-node-options.mjs +0 -0
  701. /package/{esm2020 → esm2022}/plugins/table/utils/table-position.mjs +0 -0
  702. /package/{esm2020 → esm2022}/plugins/vertical-align/vertical-align.editor.mjs +0 -0
  703. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  704. /package/{esm2020 → esm2022}/queries/find-path.mjs +0 -0
  705. /package/{esm2020 → esm2022}/queries/get-directly-parent.mjs +0 -0
  706. /package/{esm2020 → esm2022}/queries/get-last-child-path.mjs +0 -0
  707. /package/{esm2020 → esm2022}/queries/get-next-sibling-nodes.mjs +0 -0
  708. /package/{esm2020 → esm2022}/queries/get-previous-path.mjs +0 -0
  709. /package/{esm2020 → esm2022}/queries/index.mjs +0 -0
  710. /package/{esm2020 → esm2022}/queries/is-ancestor.mjs +0 -0
  711. /package/{esm2020 → esm2022}/queries/is-collapsed.mjs +0 -0
  712. /package/{esm2020 → esm2022}/queries/is-descendant.mjs +0 -0
  713. /package/{esm2020 → esm2022}/queries/is-first-child.mjs +0 -0
  714. /package/{esm2020 → esm2022}/queries/is-point-at-root.mjs +0 -0
  715. /package/{esm2020 → esm2022}/queries/is-range-at-root.mjs +0 -0
  716. /package/{esm2020 → esm2022}/test/index.mjs +0 -0
  717. /package/{esm2020 → esm2022}/transforms/apply-deep-to-nodes.mjs +0 -0
  718. /package/{esm2020 → esm2022}/transforms/index.mjs +0 -0
  719. /package/{esm2020 → esm2022}/transforms/merge-deep-to-nodes.mjs +0 -0
  720. /package/{esm2020 → esm2022}/utils/blob.mjs +0 -0
  721. /package/{esm2020 → esm2022}/utils/cast-array.mjs +0 -0
  722. /package/{esm2020 → esm2022}/utils/color-picker.mjs +0 -0
  723. /package/{esm2020 → esm2022}/utils/common.mjs +0 -0
  724. /package/{esm2020 → esm2022}/utils/data-transform.mjs +0 -0
  725. /package/{esm2020 → esm2022}/utils/id-creator.mjs +0 -0
  726. /package/{esm2020 → esm2022}/utils/lodash.mjs +0 -0
  727. /package/{esm2020 → esm2022}/utils/refocus.mjs +0 -0
  728. /package/{esm2020 → esm2022}/utils/weak-maps.mjs +0 -0
  729. /package/{esm2020 → esm2022}/worktile-theia.mjs +0 -0
@@ -1,420 +0,0 @@
1
- import { Component, Inject, ViewChild } from '@angular/core';
2
- import { ThyUploadStatus } from 'ngx-tethys/upload';
3
- import { map } from 'rxjs/operators';
4
- import { Transforms } from 'slate';
5
- import { AngularEditor } from 'slate-angular';
6
- import { HistoryEditor } from 'slate-history';
7
- import { Alignment, ElementKinds, LayoutTypes, ToolbarActionTypes } from '../../constants/node-types';
8
- import { PluginKeys, TheBaseElementComponent } from '../../interfaces';
9
- import { THE_UPLOAD_SERVICE_TOKEN } from '../../interfaces/image';
10
- import * as TheQueries from '../../queries';
11
- import * as TheTransforms from '../../transforms';
12
- import { ImageEditor } from './image.editor';
13
- import { getPluginOptions } from '../../core/utils';
14
- import { ThyImageDirective } from 'ngx-tethys/image';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "../../services/context.service";
17
- import * as i2 from "ngx-tethys/popover";
18
- import * as i3 from "@angular/cdk/overlay";
19
- import * as i4 from "ngx-tethys/image";
20
- import * as i5 from "@angular/common";
21
- import * as i6 from "slate-angular";
22
- import * as i7 from "ngx-tethys/icon";
23
- import * as i8 from "ngx-tethys/tooltip";
24
- import * as i9 from "ngx-tethys/progress";
25
- import * as i10 from "ngx-tethys/action";
26
- import * as i11 from "ngx-tethys/divider";
27
- export class TheImageComponent extends TheBaseElementComponent {
28
- get isOpen() {
29
- return this.layoutToolbarRef && this.layoutToolbarRef.getOverlayRef() && this.layoutToolbarRef.getOverlayRef().hasAttached();
30
- }
31
- get imageBindingWidth() {
32
- const currentWidth = this.imageEntry?.width || this.naturalWidth;
33
- return this.imageEntry?.layout && currentWidth > this.layoutDefaultWidth && !this.imageEntry?.reSized
34
- ? this.layoutDefaultWidth
35
- : this.imageEntry.width;
36
- }
37
- constructor(elementRef, imageUploaderService, cdr, theContextService, thyPopover, overlay, viewContainerRef, imageGroupComponent) {
38
- super(elementRef, cdr);
39
- this.elementRef = elementRef;
40
- this.imageUploaderService = imageUploaderService;
41
- this.cdr = cdr;
42
- this.theContextService = theContextService;
43
- this.thyPopover = thyPopover;
44
- this.overlay = overlay;
45
- this.viewContainerRef = viewContainerRef;
46
- this.imageGroupComponent = imageGroupComponent;
47
- this.naturalWidth = 0;
48
- this.naturalHeight = 0;
49
- this.imageEntry = {};
50
- this.uploading = false;
51
- this.percentage = 0;
52
- this.layoutDefaultWidth = 368;
53
- this.disablePreview = false;
54
- this.layoutOptions = [
55
- {
56
- key: Alignment.left,
57
- icon: 'image-left',
58
- name: '左对齐',
59
- handle: (e, key) => this.setImageNode(e, { align: key, layout: undefined })
60
- },
61
- {
62
- key: Alignment.center,
63
- icon: 'image-center',
64
- name: '居中',
65
- handle: (e, key) => this.setImageNode(e, { align: key, layout: undefined })
66
- },
67
- {
68
- key: Alignment.right,
69
- icon: 'image-right',
70
- name: '右对齐',
71
- handle: (e, key) => this.setImageNode(e, { align: key, layout: undefined })
72
- },
73
- {
74
- key: ToolbarActionTypes.split
75
- },
76
- {
77
- key: LayoutTypes.wrapLeft,
78
- icon: 'wrap-left',
79
- name: '图片居左',
80
- handle: (e, key) => this.setImageNode(e, { layout: key })
81
- },
82
- {
83
- key: LayoutTypes.wrapRight,
84
- icon: 'wrap-right',
85
- name: '图片居右',
86
- handle: (e, key) => this.setImageNode(e, { layout: key })
87
- },
88
- {
89
- key: 'remove',
90
- icon: 'trash',
91
- name: '删除',
92
- handle: (e) => this.onDelete(e)
93
- }
94
- ];
95
- this.dragable = false;
96
- this.beforeContextChange = (value) => {
97
- if (value.element !== this.element && value.element.thumbUrl) {
98
- let thumbUrl = value.element.thumbUrl;
99
- let originUrl = value.element.originUrl;
100
- const baseUrl = this.imageUploaderService.getBaseUrl?.() || '';
101
- if (baseUrl && thumbUrl.startsWith('http')) {
102
- const slice = '/files/public/';
103
- thumbUrl = `${baseUrl}${slice}${thumbUrl.slice(thumbUrl.indexOf(slice) + slice.length, thumbUrl.length)}`;
104
- originUrl = `${baseUrl}${slice}${originUrl.slice(originUrl.indexOf(slice) + slice.length, originUrl.length)}`;
105
- }
106
- this.imageEntry = {
107
- name: value.element.name,
108
- width: value.element.width,
109
- height: value.element.height,
110
- thumbUrl,
111
- originUrl,
112
- align: value.element.align || Alignment.left,
113
- layout: value.element.layout,
114
- reSized: value.element.reSized || false,
115
- size: value.element.size
116
- };
117
- this.setBlockCardLayoutAttr();
118
- }
119
- };
120
- }
121
- ngOnInit() {
122
- this.fileItem = this.theContextService.uploadingFiles.find(item => item.url === this.element.url);
123
- if (this.fileItem?.file && this.fileItem.file instanceof File) {
124
- this.uploadImage(this.fileItem.file);
125
- }
126
- super.ngOnInit();
127
- this.imagePluginOptions = getPluginOptions(this.editor, PluginKeys.image);
128
- if (this.imagePluginOptions.disablePreview && typeof this.imagePluginOptions.disablePreview === 'function') {
129
- this.disablePreview = this.imagePluginOptions.disablePreview(this.editor);
130
- }
131
- else {
132
- this.disablePreview = this.imagePluginOptions.disablePreview;
133
- }
134
- }
135
- imageClick() {
136
- const index = this.imageGroupComponent.images.findIndex(item => item === this.imageDirective);
137
- const imageGroup = this.imageGroupComponent.images.map(item => {
138
- return {
139
- originUrl: item.thyOriginSrc,
140
- thumbUrl: item.thyPreviewSrc,
141
- name: item.thyImageMeta.name,
142
- size: item.thyImageMeta.size
143
- };
144
- });
145
- const { originUrl, thumbUrl, name, size } = this.element;
146
- if (this.imagePluginOptions.preview) {
147
- this.imagePluginOptions.preview({
148
- editor: this.editor,
149
- previewImageInfo: {
150
- image: {
151
- originUrl,
152
- thumbUrl,
153
- name,
154
- size
155
- },
156
- imageGroup,
157
- index
158
- }
159
- });
160
- }
161
- }
162
- onContextChange() {
163
- super.onContextChange();
164
- if (this.initialized) {
165
- if (this.isShouldOpen()) {
166
- this.openLayoutToolbar();
167
- }
168
- if (this.isShouldClose()) {
169
- this.closeLayoutToolbar();
170
- }
171
- }
172
- }
173
- ngOnDestroy() {
174
- this.uploadingSubscription.unsubscribe();
175
- this.mouseUpSubscription.unsubscribe();
176
- this.theContextService.removeUploadFile(this.fileItem);
177
- if (this.uploading) {
178
- this.theContextService.uploadingStatus$.next(false);
179
- }
180
- super.ngOnDestroy();
181
- }
182
- ngAfterViewInit() {
183
- this.mouseUpSubscription = this.theContextService.onMouseUp$.subscribe(e => this.endDrag(e));
184
- this.uploadingSubscription = this.imageUploaderService
185
- .getUploadingItems$()
186
- .pipe(map(fileUploadingItem => this.fileItem?.file && fileUploadingItem.find(item => item.file === this.fileItem?.file)))
187
- .subscribe(uploadingItem => {
188
- if (!uploadingItem || !uploadingItem.result) {
189
- return;
190
- }
191
- this.percentage = uploadingItem.result.uploadFile.progress.percentage;
192
- const { status } = uploadingItem.result;
193
- // 成功和失败都要上传结束
194
- if (status === ThyUploadStatus.done) {
195
- this.uploadingSubscription.unsubscribe();
196
- this.uploading = false;
197
- this.theContextService.removeUploadFile(this.fileItem);
198
- setTimeout(() => this.theContextService.uploadingStatus$.next(false), 0);
199
- }
200
- this.cdr.detectChanges();
201
- });
202
- }
203
- setImageNodes(imageInfo) {
204
- const path = AngularEditor.findPath(this.editor, this.element);
205
- const data = { type: ElementKinds.image, url: null, ...imageInfo };
206
- HistoryEditor.withoutSaving(this.editor, () => Transforms.setNodes(this.editor, data, { at: path }));
207
- }
208
- async uploadImage(file) {
209
- this.imageEntry = {
210
- align: this.imageEntry.align || Alignment.center,
211
- thumbUrl: URL.createObjectURL(file)
212
- };
213
- this.uploading = true;
214
- this.theContextService.uploadingStatus$.next(true);
215
- const [uploadFileEntity] = await this.imageUploaderService.uploadFileHandle([file]).toPromise();
216
- const { thumbUrl, originUrl } = uploadFileEntity;
217
- const imageInfo = {
218
- name: file.name,
219
- thumbUrl,
220
- originUrl,
221
- align: this.imageEntry.align || Alignment.center,
222
- size: file.size
223
- };
224
- this.setImageNodes(imageInfo);
225
- }
226
- startDrag(event, axis) {
227
- event.preventDefault();
228
- this.dragable = true;
229
- const imgElement = this.img.nativeElement;
230
- const options = {
231
- axis,
232
- printerPositionX: event.pageX,
233
- printerPositionY: event.pageY,
234
- internalWidth: imgElement.width || this.imageEntry.width,
235
- internalHeight: imgElement.height || this.imageEntry.height,
236
- maxWidth: this.theContextService.getFirstElementChild().clientWidth
237
- };
238
- this.mouseMoveSubscription = this.theContextService.onMouseMove$.subscribe(e => this.mouseMoveHandle(e, options));
239
- }
240
- mouseMoveHandle(event, options) {
241
- if (this.dragable) {
242
- const { axis, printerPositionX, printerPositionY, internalWidth, internalHeight, maxWidth } = options;
243
- const isReversal = axis.includes('-');
244
- let offsetX = event.pageX - printerPositionX;
245
- let offsetY = event.pageY - printerPositionY;
246
- let { width, height } = this.element;
247
- if (isReversal) {
248
- offsetX = -offsetX;
249
- offsetY = -offsetY;
250
- }
251
- if (this.element.align === 'center') {
252
- offsetX = offsetX * 2;
253
- }
254
- if (axis.includes('x')) {
255
- width = offsetX + internalWidth;
256
- if (width >= maxWidth) {
257
- width = maxWidth;
258
- // clear `layout` when the image is adjusted to the maximum value under rich media
259
- if (this.imageEntry?.layout) {
260
- const path = TheQueries.findPath(this.editor, this.element);
261
- ImageEditor.setImageNode(this.editor, path, { layout: undefined });
262
- }
263
- }
264
- if (width <= 100) {
265
- width = 100;
266
- }
267
- if (axis.includes('l')) {
268
- const ratio = internalWidth / width;
269
- height = internalHeight / ratio;
270
- }
271
- }
272
- else if (axis.includes('y')) {
273
- height = offsetY + internalHeight;
274
- if (height >= 1000) {
275
- height = 1000;
276
- }
277
- if (height <= 100) {
278
- height = 100;
279
- }
280
- if (axis.includes('l')) {
281
- const ratio = internalHeight / height;
282
- width = internalWidth / ratio;
283
- }
284
- }
285
- if (!this.imageEntry.reSized && this.imageEntry.width !== width) {
286
- this.imageEntry.reSized = true;
287
- }
288
- this.img.nativeElement.style.width = width + 'px';
289
- this.imageEntry.width = width;
290
- this.imageEntry.height = height;
291
- }
292
- }
293
- endDrag(event) {
294
- if (this.dragable) {
295
- this.dragable = false;
296
- this.mouseMoveSubscription.unsubscribe();
297
- if (this.imageEntry.width === this.theContextService.getOptions().width &&
298
- this.imageEntry.width <= this.naturalWidth &&
299
- this.element.width) {
300
- this.imageEntry.width = null;
301
- this.imageEntry.height = null;
302
- }
303
- Transforms.setNodes(this.editor, {
304
- type: ElementKinds.image,
305
- ...this.imageEntry
306
- }, { at: this.selection });
307
- }
308
- }
309
- cancelUpload(event) {
310
- Transforms.removeNodes(this.editor, { at: this.selection });
311
- }
312
- isShouldOpen() {
313
- const { theOptions: { richMedia } } = this.theContextService.getOptions();
314
- return (!this?.readonly &&
315
- richMedia &&
316
- this.isCollapsedAndNonReadonly &&
317
- TheQueries.isGlobalCollapsed(this.editor) &&
318
- !this.uploading &&
319
- !this.isOpen);
320
- }
321
- isShouldClose() {
322
- return (this.isOpen &&
323
- (this?.readonly || !this.isCollapsedAndNonReadonly || !TheQueries.isGlobalCollapsed(this.editor) || this.uploading));
324
- }
325
- openLayoutToolbar() {
326
- this.layoutToolbarRef = this.thyPopover.open(this.layoutToolbar, {
327
- origin: this.imageContent,
328
- panelClass: 'the-plugin-toolbar-popover',
329
- insideClosable: false,
330
- backdropClosable: true,
331
- hasBackdrop: false,
332
- minWidth: 0,
333
- viewContainerRef: this.viewContainerRef,
334
- scrollStrategy: this.overlay.scrollStrategies.reposition()
335
- });
336
- this.layoutToolbarRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());
337
- setTimeout(() => {
338
- this.layoutToolbarRef?.getOverlayRef().updatePosition();
339
- }, 150);
340
- }
341
- closeLayoutToolbar() {
342
- this.layoutToolbarRef?.close();
343
- }
344
- layoutActive(key) {
345
- const { layout, align } = this.imageEntry;
346
- return key && ((key === align && !layout) || key === layout);
347
- }
348
- setImageNode(e, partial) {
349
- e.preventDefault();
350
- const path = TheQueries.findPath(this.editor, this.element);
351
- ImageEditor.setImageNode(this.editor, path, partial);
352
- }
353
- setBlockCardLayoutAttr() {
354
- Promise.resolve().then(() => {
355
- const currentElement = AngularEditor.toDOMNode(this.editor, this.element);
356
- const blockCard = currentElement.closest('.slate-block-card');
357
- const { layout } = this.element;
358
- if (blockCard && layout) {
359
- blockCard.setAttribute('layout', layout);
360
- }
361
- else if (blockCard && !layout) {
362
- blockCard.removeAttribute('layout');
363
- }
364
- this.layoutToolbarRef?.getOverlayRef().updatePosition();
365
- });
366
- }
367
- onDelete(event) {
368
- event.preventDefault();
369
- TheTransforms.deleteElement(this.editor, this.element);
370
- }
371
- createPositionStrategy() {
372
- const bottomPosition = {
373
- originX: 'center',
374
- originY: 'bottom',
375
- overlayX: 'center',
376
- overlayY: 'top',
377
- offsetX: 0,
378
- offsetY: 4
379
- };
380
- return this.overlay
381
- .position()
382
- .flexibleConnectedTo(this.imageContent)
383
- .withFlexibleDimensions(false)
384
- .withGrowAfterOpen(false)
385
- .withPush(false)
386
- .withPositions([bottomPosition]);
387
- }
388
- imageLoaded(event) {
389
- const img = event.target;
390
- this.naturalWidth = img.naturalWidth;
391
- this.naturalHeight = img.naturalHeight;
392
- }
393
- // 组件库 dialog 弹出时,会记录当前的焦点。阻止 mousedown 默认行为,使得图片原本的 click 事件能获取到正确的焦点。
394
- preventDefault(event) {
395
- event.preventDefault();
396
- event.stopPropagation();
397
- }
398
- }
399
- TheImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TheImageComponent, deps: [{ token: i0.ElementRef }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i1.TheContextService }, { token: i2.ThyPopover }, { token: i3.Overlay }, { token: i0.ViewContainerRef }, { token: i4.ThyImageGroupComponent }], target: i0.ɵɵFactoryTarget.Component });
400
- TheImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TheImageComponent, selector: "the-image, [theImage]", viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }, { propertyName: "layoutToolbar", first: true, predicate: ["layoutToolbar"], descendants: true, static: true }, { propertyName: "imageDirective", first: true, predicate: ThyImageDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl\" class=\"image-content\" [class.pointer]=\"!selection\">\n <img\n #img\n thyImage\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [class.image-collapsed]=\"selection && !uploading\"\n class=\"main-image\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"imageClick()\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n [alt]=\"imageEntry.name\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "component", type: i7.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i9.ThyProgressComponent, selector: "thy-progress", inputs: ["thyType", "thySize", "thyValue", "thyMax", "thyTips", "thyShape", "thyGapDegree", "thyGapPosition", "thyStrokeWidth"] }, { kind: "directive", type: i4.ThyImageDirective, selector: "img[thyImage]", inputs: ["thySrc", "thyPreviewSrc", "thyOriginSrc", "thyImageMeta", "thyDisablePreview", "thyResolveSize"], exportAs: ["thyImage"] }, { kind: "component", type: i10.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i10.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i11.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }] });
401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TheImageComponent, decorators: [{
402
- type: Component,
403
- args: [{ selector: 'the-image, [theImage]', template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl\" class=\"image-content\" [class.pointer]=\"!selection\">\n <img\n #img\n thyImage\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [class.image-collapsed]=\"selection && !uploading\"\n class=\"main-image\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (click)=\"imageClick()\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n [alt]=\"imageEntry.name\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span *ngIf=\"isCollapsedAndNonReadonly\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n" }]
404
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
405
- type: Inject,
406
- args: [THE_UPLOAD_SERVICE_TOKEN]
407
- }] }, { type: i0.ChangeDetectorRef }, { type: i1.TheContextService }, { type: i2.ThyPopover }, { type: i3.Overlay }, { type: i0.ViewContainerRef }, { type: i4.ThyImageGroupComponent }]; }, propDecorators: { imageContent: [{
408
- type: ViewChild,
409
- args: ['imageContent']
410
- }], img: [{
411
- type: ViewChild,
412
- args: ['img', { static: false }]
413
- }], layoutToolbar: [{
414
- type: ViewChild,
415
- args: ['layoutToolbar', { static: true }]
416
- }], imageDirective: [{
417
- type: ViewChild,
418
- args: [ThyImageDirective]
419
- }] } });
420
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdILFNBQVMsRUFFVCxNQUFNLEVBSU4sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUE0QyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRHLE9BQU8sRUFBRSxVQUFVLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBSUgsd0JBQXdCLEVBRzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUEwQixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUTdFLE1BQU0sT0FB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SXpCLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUluQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHZCxjQUFjO3NCQUEzQyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlVcGxvYWRTdGF0dXMgfSBmcm9tICduZ3gtdGV0aHlzL3VwbG9hZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBCZWZvcmVDb250ZXh0Q2hhbmdlLCBTbGF0ZUVsZW1lbnRDb250ZXh0IH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEVsZW1lbnRLaW5kcywgTGF5b3V0VHlwZXMsIFRvb2xiYXJBY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcbmltcG9ydCB7IEltYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBJbWFnZUVudHJ5LFxuICAgIExheW91dE9wdGlvbixcbiAgICBUaGVJbWFnZVVwbG9hZGVyU2VydmljZSxcbiAgICBUSEVfVVBMT0FEX1NFUlZJQ0VfVE9LRU4sXG4gICAgSW1hZ2VQbHVnaW5PcHRpb25zLFxuICAgIEltYWdlSW5mb1xufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ltYWdlJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgSW1hZ2VFZGl0b3IgfSBmcm9tICcuL2ltYWdlLmVkaXRvcic7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBUaHlJbWFnZURpcmVjdGl2ZSwgVGh5SW1hZ2VHcm91cENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvaW1hZ2UnO1xuXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtaW1hZ2UsIFt0aGVJbWFnZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlSW1hZ2VDb21wb25lbnRcbiAgICBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50PEltYWdlRWxlbWVudCwgRWRpdG9yPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEJlZm9yZUNvbnRleHRDaGFuZ2U8U2xhdGVFbGVtZW50Q29udGV4dD5cbntcbiAgICBuYXR1cmFsV2lkdGggPSAwO1xuXG4gICAgbmF0dXJhbEhlaWdodCA9IDA7XG5cbiAgICBpbWFnZUVudHJ5OiBJbWFnZUVudHJ5ID0ge307XG5cbiAgICB1cGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHBlcmNlbnRhZ2UgPSAwO1xuXG4gICAgZmlsZUl0ZW06IHsgdXJsOiBzdHJpbmc7IGZpbGU6IEZpbGUgfTtcblxuICAgIGxheW91dERlZmF1bHRXaWR0aCA9IDM2ODtcblxuICAgIGRpc2FibGVQcmV2aWV3ID0gZmFsc2U7XG5cbiAgICBsYXlvdXRPcHRpb25zOiBMYXlvdXRPcHRpb25bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQubGVmdCxcbiAgICAgICAgICAgIGljb246ICdpbWFnZS1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflt6blr7npvZAnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQuY2VudGVyLFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLWNlbnRlcicsXG4gICAgICAgICAgICBuYW1lOiAn5bGF5LitJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogQWxpZ25tZW50KSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGFsaWduOiBrZXksIGxheW91dDogdW5kZWZpbmVkIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogQWxpZ25tZW50LnJpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLXJpZ2h0JyxcbiAgICAgICAgICAgIG5hbWU6ICflj7Plr7npvZAnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBMYXlvdXRUeXBlcy53cmFwTGVmdCxcbiAgICAgICAgICAgIGljb246ICd3cmFwLWxlZnQnLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJh+WxheW3picsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IExheW91dFR5cGVzKSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGxheW91dDoga2V5IH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogTGF5b3V0VHlwZXMud3JhcFJpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ3dyYXAtcmlnaHQnLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJh+WxheWPsycsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IExheW91dFR5cGVzKSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGxheW91dDoga2V5IH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3JlbW92ZScsXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgbmFtZTogJ+WIoOmZpCcsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLm9uRGVsZXRlKGUpXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcHJpdmF0ZSB1cGxvYWRpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgbW91c2VNb3ZlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIG1vdXNlVXBTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgZHJhZ2FibGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbGF5b3V0VG9vbGJhclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBpbWFnZVBsdWdpbk9wdGlvbnM6IEltYWdlUGx1Z2luT3B0aW9ucztcblxuICAgIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRvb2xiYXJSZWYgJiYgdGhpcy5sYXlvdXRUb29sYmFyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLmxheW91dFRvb2xiYXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlQmluZGluZ1dpZHRoKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB0aGlzLmltYWdlRW50cnk/LndpZHRoIHx8IHRoaXMubmF0dXJhbFdpZHRoO1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZUVudHJ5Py5sYXlvdXQgJiYgY3VycmVudFdpZHRoID4gdGhpcy5sYXlvdXREZWZhdWx0V2lkdGggJiYgIXRoaXMuaW1hZ2VFbnRyeT8ucmVTaXplZFxuICAgICAgICAgICAgPyB0aGlzLmxheW91dERlZmF1bHRXaWR0aFxuICAgICAgICAgICAgOiB0aGlzLmltYWdlRW50cnkud2lkdGg7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VDb250ZW50JylcbiAgICBpbWFnZUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbWcnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBpbWc6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdsYXlvdXRUb29sYmFyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBsYXlvdXRUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChUaHlJbWFnZURpcmVjdGl2ZSkgaW1hZ2VEaXJlY3RpdmU6IFRoeUltYWdlRGlyZWN0aXZlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFRIRV9VUExPQURfU0VSVklDRV9UT0tFTilcbiAgICAgICAgcHJpdmF0ZSBpbWFnZVVwbG9hZGVyU2VydmljZTogVGhlSW1hZ2VVcGxvYWRlclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGltYWdlR3JvdXBDb21wb25lbnQ6IFRoeUltYWdlR3JvdXBDb21wb25lbnRcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBiZWZvcmVDb250ZXh0Q2hhbmdlID0gKHZhbHVlOiBTbGF0ZUVsZW1lbnRDb250ZXh0PEltYWdlRWxlbWVudD4pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHRoaXMuZWxlbWVudCAmJiB2YWx1ZS5lbGVtZW50LnRodW1iVXJsKSB7XG4gICAgICAgICAgICBsZXQgdGh1bWJVcmwgPSB2YWx1ZS5lbGVtZW50LnRodW1iVXJsO1xuICAgICAgICAgICAgbGV0IG9yaWdpblVybCA9IHZhbHVlLmVsZW1lbnQub3JpZ2luVXJsO1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UuZ2V0QmFzZVVybD8uKCkgfHwgJyc7XG4gICAgICAgICAgICBpZiAoYmFzZVVybCAmJiB0aHVtYlVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbGljZSA9ICcvZmlsZXMvcHVibGljLyc7XG4gICAgICAgICAgICAgICAgdGh1bWJVcmwgPSBgJHtiYXNlVXJsfSR7c2xpY2V9JHt0aHVtYlVybC5zbGljZSh0aHVtYlVybC5pbmRleE9mKHNsaWNlKSArIHNsaWNlLmxlbmd0aCwgdGh1bWJVcmwubGVuZ3RoKX1gO1xuICAgICAgICAgICAgICAgIG9yaWdpblVybCA9IGAke2Jhc2VVcmx9JHtzbGljZX0ke29yaWdpblVybC5zbGljZShvcmlnaW5VcmwuaW5kZXhPZihzbGljZSkgKyBzbGljZS5sZW5ndGgsIG9yaWdpblVybC5sZW5ndGgpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdmFsdWUuZWxlbWVudC5uYW1lLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB2YWx1ZS5lbGVtZW50LndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdmFsdWUuZWxlbWVudC5oZWlnaHQsXG4gICAgICAgICAgICAgICAgdGh1bWJVcmwsXG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsLFxuICAgICAgICAgICAgICAgIGFsaWduOiB2YWx1ZS5lbGVtZW50LmFsaWduIHx8IEFsaWdubWVudC5sZWZ0LFxuICAgICAgICAgICAgICAgIGxheW91dDogdmFsdWUuZWxlbWVudC5sYXlvdXQsXG4gICAgICAgICAgICAgICAgcmVTaXplZDogdmFsdWUuZWxlbWVudC5yZVNpemVkIHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNpemU6IHZhbHVlLmVsZW1lbnQuc2l6ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZpbGVJdGVtID0gdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdGaWxlcy5maW5kKGl0ZW0gPT4gaXRlbS51cmwgPT09IHRoaXMuZWxlbWVudC51cmwpO1xuICAgICAgICBpZiAodGhpcy5maWxlSXRlbT8uZmlsZSAmJiB0aGlzLmZpbGVJdGVtLmZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEltYWdlKHRoaXMuZmlsZUl0ZW0uZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPEltYWdlUGx1Z2luT3B0aW9ucz4odGhpcy5lZGl0b3IsIFBsdWdpbktleXMuaW1hZ2UpO1xuICAgICAgICBpZiAodGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMuZGlzYWJsZVByZXZpZXcgJiYgdHlwZW9mIHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zLmRpc2FibGVQcmV2aWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMuZGlzYWJsZVByZXZpZXcodGhpcy5lZGl0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUHJldmlldyA9IHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zLmRpc2FibGVQcmV2aWV3IGFzIGJvb2xlYW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbWFnZUNsaWNrKCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuaW1hZ2VHcm91cENvbXBvbmVudC5pbWFnZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5pbWFnZURpcmVjdGl2ZSk7XG4gICAgICAgIGNvbnN0IGltYWdlR3JvdXAgPSB0aGlzLmltYWdlR3JvdXBDb21wb25lbnQuaW1hZ2VzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsOiBpdGVtLnRoeU9yaWdpblNyYyxcbiAgICAgICAgICAgICAgICB0aHVtYlVybDogaXRlbS50aHlQcmV2aWV3U3JjLFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGh5SW1hZ2VNZXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogaXRlbS50aHlJbWFnZU1ldGEuc2l6ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkgYXMgSW1hZ2VJbmZvW107XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luVXJsLCB0aHVtYlVybCwgbmFtZSwgc2l6ZSB9ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMucHJldmlldykge1xuICAgICAgICAgICAgdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMucHJldmlldyh7XG4gICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgICAgICBwcmV2aWV3SW1hZ2VJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGltYWdlR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTaG91bGRPcGVuKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5MYXlvdXRUb29sYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Nob3VsZENsb3NlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTGF5b3V0VG9vbGJhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnJlbW92ZVVwbG9hZEZpbGUodGhpcy5maWxlSXRlbSk7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm1vdXNlVXBTdWJzY3JpcHRpb24gPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLm9uTW91c2VVcCQuc3Vic2NyaWJlKGUgPT4gdGhpcy5lbmREcmFnKGUpKTtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24gPSB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VXBsb2FkaW5nSXRlbXMkKClcbiAgICAgICAgICAgIC5waXBlKG1hcChmaWxlVXBsb2FkaW5nSXRlbSA9PiB0aGlzLmZpbGVJdGVtPy5maWxlICYmIGZpbGVVcGxvYWRpbmdJdGVtLmZpbmQoaXRlbSA9PiBpdGVtLmZpbGUgPT09IHRoaXMuZmlsZUl0ZW0/LmZpbGUpKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodXBsb2FkaW5nSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF1cGxvYWRpbmdJdGVtIHx8ICF1cGxvYWRpbmdJdGVtLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudGFnZSA9IHVwbG9hZGluZ0l0ZW0ucmVzdWx0LnVwbG9hZEZpbGUucHJvZ3Jlc3MucGVyY2VudGFnZTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gdXBsb2FkaW5nSXRlbS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgLy8g5oiQ5Yqf5ZKM5aSx6LSl6YO96KaB5LiK5Lyg57uT5p2fXG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gVGh5VXBsb2FkU3RhdHVzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5yZW1vdmVVcGxvYWRGaWxlKHRoaXMuZmlsZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KGZhbHNlKSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEltYWdlTm9kZXMoaW1hZ2VJbmZvOiBJbWFnZUVudHJ5KSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBkYXRhID0geyB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsIHVybDogbnVsbCwgLi4uaW1hZ2VJbmZvIH07XG4gICAgICAgIEhpc3RvcnlFZGl0b3Iud2l0aG91dFNhdmluZyh0aGlzLmVkaXRvciwgKCkgPT4gVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgZGF0YSwgeyBhdDogcGF0aCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgdXBsb2FkSW1hZ2UoZmlsZTogRmlsZSkge1xuICAgICAgICB0aGlzLmltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICBhbGlnbjogdGhpcy5pbWFnZUVudHJ5LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXIsXG4gICAgICAgICAgICB0aHVtYlVybDogVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KHRydWUpO1xuICAgICAgICBjb25zdCBbdXBsb2FkRmlsZUVudGl0eV0gPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlLnVwbG9hZEZpbGVIYW5kbGUoW2ZpbGVdKS50b1Byb21pc2UoKTtcbiAgICAgICAgY29uc3QgeyB0aHVtYlVybCwgb3JpZ2luVXJsIH0gPSB1cGxvYWRGaWxlRW50aXR5O1xuICAgICAgICBjb25zdCBpbWFnZUluZm86IEltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgIGFsaWduOiB0aGlzLmltYWdlRW50cnkuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldEltYWdlTm9kZXMoaW1hZ2VJbmZvKTtcbiAgICB9XG5cbiAgICBzdGFydERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQsIGF4aXM6IHN0cmluZykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmRyYWdhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgaW1nRWxlbWVudCA9IHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGF4aXMsXG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25YOiBldmVudC5wYWdlWCxcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblk6IGV2ZW50LnBhZ2VZLFxuICAgICAgICAgICAgaW50ZXJuYWxXaWR0aDogaW1nRWxlbWVudC53aWR0aCB8fCB0aGlzLmltYWdlRW50cnkud2lkdGgsXG4gICAgICAgICAgICBpbnRlcm5hbEhlaWdodDogaW1nRWxlbWVudC5oZWlnaHQgfHwgdGhpcy5pbWFnZUVudHJ5LmhlaWdodCxcbiAgICAgICAgICAgIG1heFdpZHRoOiB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldEZpcnN0RWxlbWVudENoaWxkKCkuY2xpZW50V2lkdGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5tb3VzZU1vdmVTdWJzY3JpcHRpb24gPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLm9uTW91c2VNb3ZlJC5zdWJzY3JpYmUoZSA9PiB0aGlzLm1vdXNlTW92ZUhhbmRsZShlLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgbW91c2VNb3ZlSGFuZGxlKFxuICAgICAgICBldmVudDogTW91c2VFdmVudCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgYXhpczogc3RyaW5nO1xuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWDogbnVtYmVyO1xuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWTogbnVtYmVyO1xuICAgICAgICAgICAgaW50ZXJuYWxXaWR0aDogbnVtYmVyO1xuICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgICAgIG1heFdpZHRoOiBudW1iZXI7XG4gICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2FibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgYXhpcywgcHJpbnRlclBvc2l0aW9uWCwgcHJpbnRlclBvc2l0aW9uWSwgaW50ZXJuYWxXaWR0aCwgaW50ZXJuYWxIZWlnaHQsIG1heFdpZHRoIH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgaXNSZXZlcnNhbCA9IGF4aXMuaW5jbHVkZXMoJy0nKTtcblxuICAgICAgICAgICAgbGV0IG9mZnNldFggPSBldmVudC5wYWdlWCAtIHByaW50ZXJQb3NpdGlvblg7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WSA9IGV2ZW50LnBhZ2VZIC0gcHJpbnRlclBvc2l0aW9uWTtcbiAgICAgICAgICAgIGxldCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMuZWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKGlzUmV2ZXJzYWwpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXRYID0gLW9mZnNldFg7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WSA9IC1vZmZzZXRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5hbGlnbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXRYID0gb2Zmc2V0WCAqIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChheGlzLmluY2x1ZGVzKCd4JykpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IG9mZnNldFggKyBpbnRlcm5hbFdpZHRoO1xuICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+PSBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG1heFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIGBsYXlvdXRgIHdoZW4gdGhlIGltYWdlIGlzIGFkanVzdGVkIHRvIHRoZSBtYXhpbXVtIHZhbHVlIHVuZGVyIHJpY2ggbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW1hZ2VFbnRyeT8ubGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gVGhlUXVlcmllcy5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgcGF0aCwgeyBsYXlvdXQ6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPD0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygnbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gaW50ZXJuYWxXaWR0aCAvIHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBpbnRlcm5hbEhlaWdodCAvIHJhdGlvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXhpcy5pbmNsdWRlcygneScpKSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gb2Zmc2V0WSArIGludGVybmFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPj0gMTAwMCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAxMDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0IDw9IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAxMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChheGlzLmluY2x1ZGVzKCdsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF0aW8gPSBpbnRlcm5hbEhlaWdodCAvIGhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBpbnRlcm5hbFdpZHRoIC8gcmF0aW87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaW1hZ2VFbnRyeS5yZVNpemVkICYmIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkucmVTaXplZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmltZy5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5kRHJhZyhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3VzZU1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPT09IHRoaXMudGhlQ29udGV4dFNlcnZpY2UuZ2V0T3B0aW9ucygpLndpZHRoICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoIDw9IHRoaXMubmF0dXJhbFdpZHRoICYmXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LndpZHRoXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS5oZWlnaHQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEVsZW1lbnRLaW5kcy5pbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbWFnZUVudHJ5XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IGF0OiB0aGlzLnNlbGVjdGlvbiB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuY2VsVXBsb2FkKGV2ZW50KSB7XG4gICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZXModGhpcy5lZGl0b3IsIHsgYXQ6IHRoaXMuc2VsZWN0aW9uIH0pO1xuICAgIH1cblxuICAgIGlzU2hvdWxkT3BlbigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdGhlT3B0aW9uczogeyByaWNoTWVkaWEgfVxuICAgICAgICB9ID0gdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcz8ucmVhZG9ubHkgJiZcbiAgICAgICAgICAgIHJpY2hNZWRpYSAmJlxuICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICBUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSAmJlxuICAgICAgICAgICAgIXRoaXMudXBsb2FkaW5nICYmXG4gICAgICAgICAgICAhdGhpcy5pc09wZW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc1Nob3VsZENsb3NlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgICh0aGlzPy5yZWFkb25seSB8fCAhdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IHx8ICFUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSB8fCB0aGlzLnVwbG9hZGluZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvcGVuTGF5b3V0VG9vbGJhcigpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRUb29sYmFyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4odGhpcy5sYXlvdXRUb29sYmFyLCB7XG4gICAgICAgICAgICBvcmlnaW46IHRoaXMuaW1hZ2VDb250ZW50LFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoZS1wbHVnaW4tdG9vbGJhci1wb3BvdmVyJyxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRUb29sYmFyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfSwgMTUwKTtcbiAgICB9XG5cbiAgICBjbG9zZUxheW91dFRvb2xiYXIoKSB7XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICBsYXlvdXRBY3RpdmUoa2V5OiBBbGlnbm1lbnQgfCBMYXlvdXRUeXBlcykge1xuICAgICAgICBjb25zdCB7IGxheW91dCwgYWxpZ24gfSA9IHRoaXMuaW1hZ2VFbnRyeTtcbiAgICAgICAgcmV0dXJuIGtleSAmJiAoKGtleSA9PT0gYWxpZ24gJiYgIWxheW91dCkgfHwga2V5ID09PSBsYXlvdXQpO1xuICAgIH1cblxuICAgIHNldEltYWdlTm9kZShlOiBNb3VzZUV2ZW50LCBwYXJ0aWFsOiB7IGxheW91dD86IExheW91dFR5cGVzOyBhbGlnbj86IEFsaWdubWVudCB9KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IFRoZVF1ZXJpZXMuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgcGF0aCwgcGFydGlhbCk7XG4gICAgfVxuXG4gICAgc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgbGF5b3V0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChibG9ja0NhcmQgJiYgbGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkLnNldEF0dHJpYnV0ZSgnbGF5b3V0JywgbGF5b3V0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tDYXJkICYmICFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmQucmVtb3ZlQXR0cmlidXRlKCdsYXlvdXQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCBib3R0b21Qb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgIG9mZnNldFk6IDRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuaW1hZ2VDb250ZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbYm90dG9tUG9zaXRpb25dKTtcbiAgICB9XG5cbiAgICBpbWFnZUxvYWRlZChldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW1nID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMubmF0dXJhbFdpZHRoID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgdGhpcy5uYXR1cmFsSGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG4gICAgfVxuXG4gICAgLy8g57uE5Lu25bqTIGRpYWxvZyDlvLnlh7rml7bvvIzkvJrorrDlvZXlvZPliY3nmoTnhKbngrnjgILpmLvmraIgbW91c2Vkb3duIOm7mOiupOihjOS4uu+8jOS9v+W+l+WbvueJh+WOn+acrOeahCBjbGljayDkuovku7bog73ojrflj5bliLDmraPnoa7nmoTnhKbngrnjgIJcbiAgICBwcmV2ZW50RGVmYXVsdChldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxufVxuIiwiPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiIFtzdHlsZS50ZXh0QWxpZ25dPVwiaW1hZ2VFbnRyeS5hbGlnblwiPlxuICA8ZGl2ICNpbWFnZUNvbnRlbnQgKm5nSWY9XCJpbWFnZUVudHJ5LnRodW1iVXJsXCIgY2xhc3M9XCJpbWFnZS1jb250ZW50XCIgW2NsYXNzLnBvaW50ZXJdPVwiIXNlbGVjdGlvblwiPlxuICAgIDxpbWdcbiAgICAgICNpbWdcbiAgICAgIHRoeUltYWdlXG4gICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IGltYWdlQmluZGluZ1dpZHRoIH1cIlxuICAgICAgW2NsYXNzLmltYWdlLWNvbGxhcHNlZF09XCJzZWxlY3Rpb24gJiYgIXVwbG9hZGluZ1wiXG4gICAgICBjbGFzcz1cIm1haW4taW1hZ2VcIlxuICAgICAgKGxvYWQpPVwiaW1hZ2VMb2FkZWQoJGV2ZW50KVwiXG4gICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cImltYWdlQ2xpY2soKVwiXG4gICAgICBbdGh5U3JjXT1cImltYWdlRW50cnkudGh1bWJVcmxcIlxuICAgICAgW3RoeVByZXZpZXdTcmNdPVwiaW1hZ2VFbnRyeS50aHVtYlVybFwiXG4gICAgICBbdGh5T3JpZ2luU3JjXT1cImltYWdlRW50cnkub3JpZ2luVXJsXCJcbiAgICAgIFt0aHlEaXNhYmxlUHJldmlld109XCJkaXNhYmxlUHJldmlld1wiXG4gICAgICBbdGh5SW1hZ2VNZXRhXT1cInsgbmFtZTogaW1hZ2VFbnRyeS5uYW1lLCBzaXplOiBpbWFnZUVudHJ5LnNpemUgfVwiXG4gICAgICBbYWx0XT1cImltYWdlRW50cnkubmFtZVwiXG4gICAgLz5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiIGNsYXNzPVwiaW1hZ2UtcHJvZmlsZVwiIFtjbGFzcy5vdXRsaW5lXT1cInNlbGVjdGlvblwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5XCIgKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAnLXhsJylcIiBjbGFzcz1cImltYWdlLXBvaW50ZXIgbGVmdCB0b3BcIj48L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHlcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICd4bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIHJpZ2h0IHRvcFwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJ3hsJylcIiBjbGFzcz1cImltYWdlLXBvaW50ZXIgcmlnaHQgYm90dG9tXCI+PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5XCIgKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAnLXhsJylcIiBjbGFzcz1cImltYWdlLXBvaW50ZXIgbGVmdCBib3R0b21cIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInVwbG9hZGluZ1wiIGNsYXNzPVwidXBsb2FkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkaW5nLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgPHRoeS1wcm9ncmVzcyB0aHlUeXBlPVwicHJpbWFyeVwiIFt0aHlWYWx1ZV09XCJwZXJjZW50YWdlXCIgdGh5U2l6ZT1cInNtXCI+PC90aHktcHJvZ3Jlc3M+XG4gICAgICAgIDx0aHktaWNvbiAoY2xpY2spPVwiY2FuY2VsVXBsb2FkKCRldmVudClcIiB0aHlJY29uTmFtZT1cImNsb3NlLWNpcmNsZS1ib2xkLWZpbGxcIiB0aHlJY29uTGVnZ2luZz1cInRydWVcIj4gPC90aHktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhdXBsb2FkaW5nXCIgY2xhc3M9XCJsYXllclwiIFtjbGFzcy5yZWFkb25seV09XCJyZWFkb25seVwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFpbWFnZUVudHJ5LnRodW1iVXJsXCIgY2xhc3M9XCJpbWFnZS1sb2FkaW5nXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIj5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJpbWFnZVwiPjwvdGh5LWljb24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbGF5b3V0VG9vbGJhcj5cbiAgPHRoeS1hY3Rpb25zIHRoeVNpemU9XCJ4eHNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxheW91dE9wdGlvbnNcIj5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwiaXRlbS5rZXkgIT09ICdzcGxpdCdcIlxuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgIFt0aHlUeXBlXT1cIml0ZW0ua2V5ID09PSAncmVtb3ZlJyA/ICdkYW5nZXInIDogJ3ByaW1hcnknXCJcbiAgICAgICAgW3RoeUFjdGlvbkljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW3RoeUFjdGlvbkFjdGl2ZV09XCJsYXlvdXRBY3RpdmUoaXRlbS5rZXkpXCJcbiAgICAgICAgW3RoeVRvb2x0aXBdPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwiaXRlbT8uaGFuZGxlKCRldmVudCwgaXRlbS5rZXkpXCJcbiAgICAgID48L2E+XG4gICAgICA8dGh5LWRpdmlkZXIgKm5nSWY9XCJpdGVtLmtleSA9PT0gJ3NwbGl0J1wiIGNsYXNzPVwibXItMiBtbC0xIGFsaWduLXNlbGYtY2VudGVyXCIgW3RoeVZlcnRpY2FsXT1cInRydWVcIj48L3RoeS1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,81 +0,0 @@
1
- import { Editor, Transforms, Element } from 'slate';
2
- import { TheContextService } from '../../services/context.service';
3
- import { ElementKinds, ErrorCodes, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE } from '../../constants';
4
- import * as TheTransforms from '../../transforms';
5
- import { base64toBlob } from '../../utils/blob';
6
- import { isString } from 'ngx-tethys/util';
7
- import { getPluginOptions } from '../../core';
8
- import { PluginKeys } from '../../interfaces';
9
- export const ImageEditor = {
10
- openUpload(editor) {
11
- const inputFile = document.createElement('input');
12
- inputFile.setAttribute('type', 'file');
13
- inputFile.setAttribute('accept', 'image/*');
14
- inputFile.setAttribute('multiple', 'true');
15
- inputFile.onchange = (event) => {
16
- ImageEditor.insertImages(editor, event.target.files);
17
- };
18
- inputFile.click();
19
- },
20
- insertImages(editor, imageFiles) {
21
- const contextService = editor.injector.get(TheContextService);
22
- const imageNodes = [];
23
- const text = { text: '' };
24
- for (const image of imageFiles) {
25
- const verify = ImageEditor.verifyImage(editor, image);
26
- if (verify) {
27
- const url = URL.createObjectURL(image);
28
- contextService.addUploadingFiles({ url, file: image });
29
- imageNodes.push({ type: ElementKinds.image, url, children: [text] });
30
- }
31
- }
32
- if (imageNodes.length > 0) {
33
- TheTransforms.insertElements(editor, imageNodes);
34
- }
35
- },
36
- handleBase64ImageElement(editor, image) {
37
- if (isString(image.originUrl) && image.originUrl.includes('base64')) {
38
- const indexSplit = image.originUrl.indexOf(',');
39
- const base64 = image.originUrl.slice(indexSplit + 1);
40
- const contentType = image.originUrl.substring(image.originUrl.indexOf(':') + 1, image.originUrl.indexOf(';'));
41
- const ext = contentType.substring(contentType.indexOf('/') + 1);
42
- const blob = base64toBlob(base64, contentType);
43
- const blobUrl = URL.createObjectURL(blob);
44
- image.thumbUrl = blobUrl;
45
- image.originUrl = blobUrl;
46
- image.url = blobUrl;
47
- const contextService = editor.injector.get(TheContextService);
48
- contextService.addUploadingFiles({
49
- url: blobUrl,
50
- file: new File([blob], `${new Date().getTime()}.${ext}`, { type: contentType })
51
- });
52
- }
53
- },
54
- verifyImage(editor, image) {
55
- if (!PICTURE_ACCEPTED_UPLOAD_MIME.includes(image.type)) {
56
- editor.onError({
57
- code: ErrorCodes.IMAGE_ERR_MIME_FORMAT
58
- });
59
- return false;
60
- }
61
- const acceptedUploadSize = getPluginOptions(editor, PluginKeys.image)?.acceptedUploadSize ?? PICTURE_ACCEPTED_UPLOAD_SIZE;
62
- if (image.size / 1000000 >= acceptedUploadSize) {
63
- editor.onError({
64
- code: ErrorCodes.IMAGE_ERR_SIZE_LIMIT
65
- });
66
- return false;
67
- }
68
- return true;
69
- },
70
- isImageActive(editor) {
71
- const [match] = Editor.nodes(editor, {
72
- match: n => Element.isElement(n) && n.type === ElementKinds.image,
73
- universal: true
74
- });
75
- return !!match;
76
- },
77
- setImageNode(editor, path, partial) {
78
- Transforms.setNodes(editor, partial, { at: path });
79
- }
80
- };
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBUSxNQUFNLE9BQU8sQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBRUgsWUFBWSxFQUNaLFVBQVUsRUFFViw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQy9CLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQXNCLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN2QixVQUFVLENBQUMsTUFBYztRQUNyQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLFNBQVMsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNsQyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRyxLQUFLLENBQUMsTUFB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IFBhdGggfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQge1xuICAgIEFsaWdubWVudCxcbiAgICBFbGVtZW50S2luZHMsXG4gICAgRXJyb3JDb2RlcyxcbiAgICBMYXlvdXRUeXBlcyxcbiAgICBQSUNUVVJFX0FDQ0VQVEVEX1VQTE9BRF9NSU1FLFxuICAgIFBJQ1RVUkVfQUNDRVBURURfVVBMT0FEX1NJWkVcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBJbWFnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgYmFzZTY0dG9CbG9iIH0gZnJvbSAnLi4vLi4vdXRpbHMvYmxvYic7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBJbWFnZVBsdWdpbk9wdGlvbnMsIFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IEltYWdlRWRpdG9yID0ge1xuICAgIG9wZW5VcGxvYWQoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgaW5wdXRGaWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaW5wdXRGaWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICdmaWxlJyk7XG4gICAgICAgIGlucHV0RmlsZS5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7XG4gICAgICAgIGlucHV0RmlsZS5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJ3RydWUnKTtcbiAgICAgICAgaW5wdXRGaWxlLm9uY2hhbmdlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaW5zZXJ0SW1hZ2VzKGVkaXRvciwgKGV2ZW50LnRhcmdldCBhcyBhbnkpLmZpbGVzKTtcbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXRGaWxlLmNsaWNrKCk7XG4gICAgfSxcbiAgICBpbnNlcnRJbWFnZXMoZWRpdG9yOiBFZGl0b3IsIGltYWdlRmlsZXM6IEZpbGVMaXN0IHwgRmlsZVtdKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gZWRpdG9yLmluamVjdG9yLmdldChUaGVDb250ZXh0U2VydmljZSk7XG4gICAgICAgIGNvbnN0IGltYWdlTm9kZXM6IEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICBjb25zdCB0ZXh0ID0geyB0ZXh0OiAnJyB9O1xuICAgICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGltYWdlRmlsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmlmeSA9IEltYWdlRWRpdG9yLnZlcmlmeUltYWdlKGVkaXRvciwgaW1hZ2UpO1xuICAgICAgICAgICAgaWYgKHZlcmlmeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnRleHRTZXJ2aWNlLmFkZFVwbG9hZGluZ0ZpbGVzKHsgdXJsLCBmaWxlOiBpbWFnZSB9KTtcbiAgICAgICAgICAgICAgICBpbWFnZU5vZGVzLnB1c2goeyB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsIHVybCwgY2hpbGRyZW46IFt0ZXh0XSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW1hZ2VOb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydEVsZW1lbnRzKGVkaXRvciwgaW1hZ2VOb2Rlcyk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUJhc2U2NEltYWdlRWxlbWVudChlZGl0b3I6IEVkaXRvciwgaW1hZ2U6IEltYWdlRWxlbWVudCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcoaW1hZ2Uub3JpZ2luVXJsKSAmJiBpbWFnZS5vcmlnaW5VcmwuaW5jbHVkZXMoJ2Jhc2U2NCcpKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleFNwbGl0ID0gaW1hZ2Uub3JpZ2luVXJsLmluZGV4T2YoJywnKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGltYWdlLm9yaWdpblVybC5zbGljZShpbmRleFNwbGl0ICsgMSk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IGltYWdlLm9yaWdpblVybC5zdWJzdHJpbmcoaW1hZ2Uub3JpZ2luVXJsLmluZGV4T2YoJzonKSArIDEsIGltYWdlLm9yaWdpblVybC5pbmRleE9mKCc7JykpO1xuICAgICAgICAgICAgY29uc3QgZXh0ID0gY29udGVudFR5cGUuc3Vic3RyaW5nKGNvbnRlbnRUeXBlLmluZGV4T2YoJy8nKSArIDEpO1xuICAgICAgICAgICAgY29uc3QgYmxvYiA9IGJhc2U2NHRvQmxvYihiYXNlNjQsIGNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgaW1hZ2UudGh1bWJVcmwgPSBibG9iVXJsO1xuICAgICAgICAgICAgaW1hZ2Uub3JpZ2luVXJsID0gYmxvYlVybDtcbiAgICAgICAgICAgIGltYWdlLnVybCA9IGJsb2JVcmw7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICAgICAgY29udGV4dFNlcnZpY2UuYWRkVXBsb2FkaW5nRmlsZXMoe1xuICAgICAgICAgICAgICAgIHVybDogYmxvYlVybCxcbiAgICAgICAgICAgICAgICBmaWxlOiBuZXcgRmlsZShbYmxvYl0sIGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfS4ke2V4dH1gLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdmVyaWZ5SW1hZ2UoZWRpdG9yOiBFZGl0b3IsIGltYWdlOiBGaWxlKSB7XG4gICAgICAgIGlmICghUElDVFVSRV9BQ0NFUFRFRF9VUExPQURfTUlNRS5pbmNsdWRlcyhpbWFnZS50eXBlKSkge1xuICAgICAgICAgICAgZWRpdG9yLm9uRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGNvZGU6IEVycm9yQ29kZXMuSU1BR0VfRVJSX01JTUVfRk9STUFUXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY2NlcHRlZFVwbG9hZFNpemUgPVxuICAgICAgICAgICAgZ2V0UGx1Z2luT3B0aW9uczxJbWFnZVBsdWdpbk9wdGlvbnM+KGVkaXRvciwgUGx1Z2luS2V5cy5pbWFnZSk/LmFjY2VwdGVkVXBsb2FkU2l6ZSA/PyBQSUNUVVJFX0FDQ0VQVEVEX1VQTE9BRF9TSVpFO1xuICAgICAgICBpZiAoaW1hZ2Uuc2l6ZSAvIDEwMDAwMDAgPj0gYWNjZXB0ZWRVcGxvYWRTaXplKSB7XG4gICAgICAgICAgICBlZGl0b3Iub25FcnJvcih7XG4gICAgICAgICAgICAgICAgY29kZTogRXJyb3JDb2Rlcy5JTUFHRV9FUlJfU0laRV9MSU1JVFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBpc0ltYWdlQWN0aXZlKGVkaXRvcjogRWRpdG9yKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IFttYXRjaF0gPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICBtYXRjaDogbiA9PiBFbGVtZW50LmlzRWxlbWVudChuKSAmJiBuLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5pbWFnZSxcbiAgICAgICAgICAgIHVuaXZlcnNhbDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICEhbWF0Y2g7XG4gICAgfSxcbiAgICBzZXRJbWFnZU5vZGUoZWRpdG9yOiBFZGl0b3IsIHBhdGg6IFBhdGgsIHBhcnRpYWw6IHsgbGF5b3V0PzogTGF5b3V0VHlwZXM7IGFsaWduPzogQWxpZ25tZW50IH0pIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHBhcnRpYWwsIHsgYXQ6IHBhdGggfSk7XG4gICAgfVxufTtcbiJdfQ==