@worktile/theia 3.0.9 → 3.1.0-next.2

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 (705) hide show
  1. package/README.md +11 -11
  2. package/components/color-select/color-select.component.d.ts +32 -32
  3. package/components/color-select/color-select.component.scss +107 -107
  4. package/components/column-resize/column-resize-notifier.d.ts +35 -35
  5. package/components/column-resize/column-resize.directive.d.ts +26 -26
  6. package/components/column-resize/column-resize.module.d.ts +14 -14
  7. package/components/column-resize/event-dispatcher.d.ts +31 -31
  8. package/components/column-resize/overlay-handle.component.d.ts +33 -33
  9. package/components/column-resize/resize-ref.d.ts +25 -25
  10. package/components/column-resize/resizing.store.d.ts +28 -28
  11. package/components/column-resize/selectors.d.ts +3 -3
  12. package/components/contextmenu/contextmenu.component.d.ts +22 -22
  13. package/components/conversion-hint/conversion-hint.component.d.ts +18 -18
  14. package/components/conversion-hint/conversion-hint.component.scss +11 -11
  15. package/components/element/element.component.d.ts +7 -7
  16. package/components/inline-toolbar/inline-toolbar.component.d.ts +26 -26
  17. package/components/nav-split-line/nav-split-line.component.d.ts +13 -13
  18. package/components/table-select/table-select.component.d.ts +20 -20
  19. package/components/table-select/table-select.component.scss +35 -35
  20. package/components/template/template.component.d.ts +15 -15
  21. package/components/text/text.component.d.ts +14 -14
  22. package/components/toolbar/toolbar.component.d.ts +64 -65
  23. package/components/toolbar-dropdown/toolbar-dropdown.component.d.ts +33 -33
  24. package/components/toolbar-group/toolbar-group.component.d.ts +33 -33
  25. package/components/toolbar-group/toolbar-group.component.scss +17 -17
  26. package/components/toolbar-item/toolbar-item.component.d.ts +17 -18
  27. package/constants/auto-format-rules.d.ts +2 -2
  28. package/constants/code.d.ts +9 -9
  29. package/constants/color-select.d.ts +14 -14
  30. package/constants/default.d.ts +9 -9
  31. package/constants/error.d.ts +5 -5
  32. package/constants/index.d.ts +5 -5
  33. package/constants/node-types.d.ts +99 -99
  34. package/constants/selector.d.ts +2 -2
  35. package/constants/toolbar.d.ts +17 -17
  36. package/core/create-plugin.d.ts +2 -2
  37. package/core/create-toolbar.d.ts +5 -5
  38. package/core/index.d.ts +4 -4
  39. package/core/toolbar-item/base-toolbar-item.d.ts +29 -29
  40. package/core/utils/combine-plugins.d.ts +2 -2
  41. package/core/utils/flatten-deep-plugins.d.ts +6 -6
  42. package/core/utils/get-plugin-options.d.ts +2 -2
  43. package/core/utils/get-plugin.d.ts +2 -2
  44. package/core/utils/get-plugins.d.ts +2 -2
  45. package/core/utils/index.d.ts +10 -10
  46. package/core/utils/merge-array.d.ts +1 -1
  47. package/core/utils/merge-deep-plugins.d.ts +2 -2
  48. package/core/utils/merge-options.d.ts +2 -2
  49. package/core/utils/nested-structure-by-key.d.ts +2 -2
  50. package/core/utils/plugins-by-key.d.ts +2 -2
  51. package/core/with-theia.d.ts +4 -4
  52. package/custom-types.d.ts +131 -131
  53. package/editor.component.d.ts +92 -92
  54. package/editor.module.d.ts +98 -98
  55. package/esm2020/components/color-select/color-select.component.mjs +109 -0
  56. package/esm2020/components/column-resize/column-resize-notifier.mjs +31 -0
  57. package/{esm2015/components/column-resize/column-resize.directive.js → esm2020/components/column-resize/column-resize.directive.mjs} +99 -99
  58. package/esm2020/components/column-resize/column-resize.module.mjs +33 -0
  59. package/{esm2015/components/column-resize/event-dispatcher.js → esm2020/components/column-resize/event-dispatcher.mjs} +56 -56
  60. package/{esm2015/components/column-resize/overlay-handle.component.js → esm2020/components/column-resize/overlay-handle.component.mjs} +140 -140
  61. package/{esm2015/components/column-resize/resize-ref.js → esm2020/components/column-resize/resize-ref.mjs} +25 -25
  62. package/{esm2015/components/column-resize/resizing.store.js → esm2020/components/column-resize/resizing.store.mjs} +155 -155
  63. package/{esm2015/components/column-resize/selectors.js → esm2020/components/column-resize/selectors.mjs} +4 -4
  64. package/esm2020/components/contextmenu/contextmenu.component.mjs +61 -0
  65. package/esm2020/components/conversion-hint/conversion-hint.component.mjs +54 -0
  66. package/esm2020/components/element/element.component.mjs +23 -0
  67. package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +138 -0
  68. package/{esm2015/components/nav-split-line/nav-split-line.component.js → esm2020/components/nav-split-line/nav-split-line.component.mjs} +37 -37
  69. package/esm2020/components/table-select/table-select.component.mjs +50 -0
  70. package/esm2020/components/template/template.component.mjs +62 -0
  71. package/{esm2015/components/text/text.component.js → esm2020/components/text/text.component.mjs} +58 -58
  72. package/esm2020/components/toolbar/toolbar.component.mjs +241 -0
  73. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +129 -0
  74. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +110 -0
  75. package/esm2020/components/toolbar-item/toolbar-item.component.mjs +101 -0
  76. package/{esm2015/constants/auto-format-rules.js → esm2020/constants/auto-format-rules.mjs} +166 -166
  77. package/{esm2015/constants/code.js → esm2020/constants/code.mjs} +88 -88
  78. package/{esm2015/constants/color-select.js → esm2020/constants/color-select.mjs} +61 -61
  79. package/{esm2015/constants/default.js → esm2020/constants/default.mjs} +9 -9
  80. package/{esm2015/constants/error.js → esm2020/constants/error.mjs} +7 -7
  81. package/{esm2015/constants/index.js → esm2020/constants/index.mjs} +5 -5
  82. package/{esm2015/constants/node-types.js → esm2020/constants/node-types.mjs} +132 -132
  83. package/{esm2015/constants/selector.js → esm2020/constants/selector.mjs} +3 -3
  84. package/{esm2015/constants/toolbar.js → esm2020/constants/toolbar.mjs} +69 -69
  85. package/{esm2015/core/create-plugin.js → esm2020/core/create-plugin.mjs} +4 -4
  86. package/esm2020/core/create-toolbar.mjs +56 -0
  87. package/{esm2015/core/index.js → esm2020/core/index.mjs} +4 -4
  88. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +90 -0
  89. package/{esm2015/core/utils/combine-plugins.js → esm2020/core/utils/combine-plugins.mjs} +9 -9
  90. package/{esm2015/core/utils/flatten-deep-plugins.js → esm2020/core/utils/flatten-deep-plugins.mjs} +18 -18
  91. package/esm2020/core/utils/get-plugin-options.mjs +3 -0
  92. package/{esm2015/core/utils/get-plugin.js → esm2020/core/utils/get-plugin.mjs} +1 -1
  93. package/esm2020/core/utils/get-plugins.mjs +4 -0
  94. package/{esm2015/core/utils/index.js → esm2020/core/utils/index.mjs} +10 -10
  95. package/esm2020/core/utils/merge-array.mjs +18 -0
  96. package/{esm2015/core/utils/merge-deep-plugins.js → esm2020/core/utils/merge-deep-plugins.mjs} +13 -13
  97. package/{esm2015/core/utils/merge-options.js → esm2020/core/utils/merge-options.mjs} +19 -19
  98. package/{esm2015/core/utils/nested-structure-by-key.js → esm2020/core/utils/nested-structure-by-key.mjs} +10 -10
  99. package/{esm2015/core/utils/plugins-by-key.js → esm2020/core/utils/plugins-by-key.mjs} +9 -9
  100. package/{esm2015/core/with-theia.js → esm2020/core/with-theia.mjs} +22 -22
  101. package/{esm2015/custom-types.js → esm2020/custom-types.mjs} +1 -1
  102. package/esm2020/editor.component.mjs +431 -0
  103. package/{esm2015/editor.module.js → esm2020/editor.module.mjs} +201 -202
  104. package/{esm2015/interfaces/auto-format.js → esm2020/interfaces/auto-format.mjs} +1 -1
  105. package/esm2020/interfaces/editor.mjs +25 -0
  106. package/{esm2015/interfaces/element.js → esm2020/interfaces/element.mjs} +1 -1
  107. package/{esm2015/interfaces/image.js → esm2020/interfaces/image.mjs} +2 -2
  108. package/{esm2015/interfaces/index.js → esm2020/interfaces/index.mjs} +8 -8
  109. package/{esm2015/interfaces/plugins/index.js → esm2020/interfaces/plugins/index.mjs} +4 -4
  110. package/{esm2015/interfaces/plugins/no-infer.js → esm2020/interfaces/plugins/no-infer.mjs} +1 -1
  111. package/{esm2015/interfaces/plugins/plugin-key.js → esm2020/interfaces/plugins/plugin-key.mjs} +39 -39
  112. package/{esm2015/interfaces/plugins/plugins.js → esm2020/interfaces/plugins/plugins.mjs} +1 -1
  113. package/{esm2015/interfaces/plugins/with-override.js → esm2020/interfaces/plugins/with-override.mjs} +1 -1
  114. package/esm2020/interfaces/reset-block-type-plugin-options.mjs +2 -0
  115. package/{esm2015/interfaces/toolbar.js → esm2020/interfaces/toolbar.mjs} +11 -11
  116. package/esm2020/interfaces/upload.mjs +2 -0
  117. package/{esm2015/interfaces/utility/index.js → esm2020/interfaces/utility/index.mjs} +3 -3
  118. package/{esm2015/interfaces/utility/nested-structure-by-key.js → esm2020/interfaces/utility/nested-structure-by-key.mjs} +1 -1
  119. package/{esm2015/interfaces/utility/override-by-key.js → esm2020/interfaces/utility/override-by-key.mjs} +1 -1
  120. package/{esm2015/interfaces/utility/types.js → esm2020/interfaces/utility/types.mjs} +1 -1
  121. package/{esm2015/interfaces/valid-children-types.js → esm2020/interfaces/valid-children-types.mjs} +35 -35
  122. package/{esm2015/interfaces/view-base.js → esm2020/interfaces/view-base.mjs} +21 -21
  123. package/{esm2015/pipes.js → esm2020/pipes.mjs} +42 -42
  124. package/esm2020/plugins/align/align.editor.mjs +47 -0
  125. package/{esm2015/plugins/align/align.plugin.js → esm2020/plugins/align/align.plugin.mjs} +63 -63
  126. package/esm2020/plugins/autoformat/autoformat.plugin.mjs +109 -0
  127. package/{esm2015/plugins/autoformat/transforms/auto-format-block.js → esm2020/plugins/autoformat/transforms/auto-format-block.mjs} +14 -14
  128. package/{esm2015/plugins/autoformat/transforms/auto-format-inline.js → esm2020/plugins/autoformat/transforms/auto-format-inline.mjs} +77 -77
  129. package/{esm2015/plugins/blockquote/blockquote.component.js → esm2020/plugins/blockquote/blockquote.component.mjs} +21 -21
  130. package/esm2020/plugins/blockquote/blockquote.editor.mjs +20 -0
  131. package/{esm2015/plugins/blockquote/blockquote.plugin.js → esm2020/plugins/blockquote/blockquote.plugin.mjs} +70 -70
  132. package/esm2020/plugins/code/code.component.mjs +241 -0
  133. package/{esm2015/plugins/code/code.editor.js → esm2020/plugins/code/code.editor.mjs} +47 -47
  134. package/{esm2015/plugins/code/code.plugin.js → esm2020/plugins/code/code.plugin.mjs} +41 -41
  135. package/esm2020/plugins/color/color.editor.mjs +44 -0
  136. package/{esm2015/plugins/color/color.plugin.js → esm2020/plugins/color/color.plugin.mjs} +27 -27
  137. package/esm2020/plugins/color/toolbar-item.component.mjs +123 -0
  138. package/esm2020/plugins/common/auto-insert-data..mjs +77 -0
  139. package/{esm2015/plugins/common/block-card.plugin.js → esm2020/plugins/common/block-card.plugin.mjs} +287 -287
  140. package/esm2020/plugins/common/get-fragment.plugin.mjs +24 -0
  141. package/{esm2015/plugins/common/history.plugin.js → esm2020/plugins/common/history.plugin.mjs} +30 -30
  142. package/{esm2015/plugins/common/move-selection.plugin.js → esm2020/plugins/common/move-selection.plugin.mjs} +89 -89
  143. package/{esm2015/plugins/common/remove-empty.plugin.js → esm2020/plugins/common/remove-empty.plugin.mjs} +59 -59
  144. package/{esm2015/plugins/common/remove-void.plugin.js → esm2020/plugins/common/remove-void.plugin.mjs} +56 -56
  145. package/{esm2015/plugins/common/reset-type.plugin.js → esm2020/plugins/common/reset-type.plugin.mjs} +34 -34
  146. package/{esm2015/plugins/common/transforms.plugin.js → esm2020/plugins/common/transforms.plugin.mjs} +17 -17
  147. package/{esm2015/plugins/deserializers/deserialize-html.plugin.js → esm2020/plugins/deserializers/deserialize-html.plugin.mjs} +38 -38
  148. package/{esm2015/plugins/deserializers/deserialize-md.plugin.js → esm2020/plugins/deserializers/deserialize-md.plugin.mjs} +121 -121
  149. package/esm2020/plugins/font-size/font-size.editor.mjs +98 -0
  150. package/{esm2015/plugins/heading/heading.editor.js → esm2020/plugins/heading/heading.editor.mjs} +53 -53
  151. package/{esm2015/plugins/heading/heading.plugin.js → esm2020/plugins/heading/heading.plugin.mjs} +84 -84
  152. package/{esm2015/plugins/hr/hr.component.js → esm2020/plugins/hr/hr.component.mjs} +40 -40
  153. package/{esm2015/plugins/hr/hr.editor.js → esm2020/plugins/hr/hr.editor.mjs} +7 -7
  154. package/{esm2015/plugins/hr/hr.plugin.js → esm2020/plugins/hr/hr.plugin.mjs} +41 -41
  155. package/esm2020/plugins/image/image.component.mjs +365 -0
  156. package/{esm2015/plugins/image/image.editor.js → esm2020/plugins/image/image.editor.mjs} +57 -57
  157. package/esm2020/plugins/image/image.plugin.mjs +57 -0
  158. package/esm2020/plugins/indent/indent.editor.mjs +71 -0
  159. package/esm2020/plugins/indent/indent.plugin.mjs +58 -0
  160. package/{esm2015/plugins/indent/on-keydown-indent.js → esm2020/plugins/indent/on-keydown-indent.mjs} +53 -53
  161. package/{esm2015/plugins/index.js → esm2020/plugins/index.mjs} +70 -70
  162. package/{esm2015/plugins/inline-code/inline-code.component.js → esm2020/plugins/inline-code/inline-code.component.mjs} +23 -23
  163. package/{esm2015/plugins/inline-code/inline-code.editor.js → esm2020/plugins/inline-code/inline-code.editor.mjs} +48 -49
  164. package/{esm2015/plugins/inline-code/inline-code.plugin.js → esm2020/plugins/inline-code/inline-code.plugin.mjs} +65 -65
  165. package/esm2020/plugins/link/edit/link-edit.component.mjs +105 -0
  166. package/esm2020/plugins/link/hover/link-hover.component.mjs +36 -0
  167. package/{esm2015/plugins/link/link.component.js → esm2020/plugins/link/link.component.mjs} +164 -164
  168. package/{esm2015/plugins/link/link.editor.js → esm2020/plugins/link/link.editor.mjs} +66 -66
  169. package/{esm2015/plugins/link/link.plugin.js → esm2020/plugins/link/link.plugin.mjs} +58 -58
  170. package/{esm2015/plugins/link/link.types.js → esm2020/plugins/link/link.types.mjs} +12 -12
  171. package/esm2020/plugins/list/components/bulleted-list.component.mjs +33 -0
  172. package/esm2020/plugins/list/components/list-item.component.mjs +93 -0
  173. package/esm2020/plugins/list/components/numbered-list.component.mjs +39 -0
  174. package/{esm2015/plugins/list/list.editor.js → esm2020/plugins/list/list.editor.mjs} +125 -125
  175. package/esm2020/plugins/list/list.plugin.mjs +286 -0
  176. package/{esm2015/plugins/list/normalizers/get-list-normalizer.js → esm2020/plugins/list/normalizers/get-list-normalizer.mjs} +39 -39
  177. package/esm2020/plugins/list/normalizers/normalize-list-item.mjs +18 -0
  178. package/{esm2015/plugins/list/normalizers/normalize-no.js → esm2020/plugins/list/normalizers/normalize-no.mjs} +42 -42
  179. package/{esm2015/plugins/list/on-key-down-list.js → esm2020/plugins/list/on-key-down-list.mjs} +32 -32
  180. package/{esm2015/plugins/list/queries/get-list-item-entry.js → esm2020/plugins/list/queries/get-list-item-entry.mjs} +27 -27
  181. package/{esm2015/plugins/list/queries/get-list-item-sublist.js → esm2020/plugins/list/queries/get-list-item-sublist.mjs} +12 -12
  182. package/{esm2015/plugins/list/queries/get-list-types.js → esm2020/plugins/list/queries/get-list-types.mjs} +5 -5
  183. package/{esm2015/plugins/list/queries/get-start-list-item.js → esm2020/plugins/list/queries/get-start-list-item.mjs} +26 -26
  184. package/{esm2015/plugins/list/queries/has-list-in-list-item.js → esm2020/plugins/list/queries/has-list-in-list-item.mjs} +27 -27
  185. package/{esm2015/plugins/list/queries/is-in-list.js → esm2020/plugins/list/queries/is-in-list.mjs} +5 -5
  186. package/{esm2015/plugins/list/queries/is-list-nested.js → esm2020/plugins/list/queries/is-list-nested.mjs} +10 -10
  187. package/{esm2015/plugins/list/queries/is-list.js → esm2020/plugins/list/queries/is-list.mjs} +5 -5
  188. package/{esm2015/plugins/list/queries/is-node-type-list.js → esm2020/plugins/list/queries/is-node-type-list.mjs} +4 -4
  189. package/{esm2015/plugins/list/queries/is-selection-at-list-item-start.js → esm2020/plugins/list/queries/is-selection-at-list-item-start.mjs} +12 -12
  190. package/{esm2015/plugins/list/queries/is-selection-in-same-list-item.js → esm2020/plugins/list/queries/is-selection-in-same-list-item.mjs} +16 -16
  191. package/{esm2015/plugins/list/queries/is-single-list-item.js → esm2020/plugins/list/queries/is-single-list-item.mjs} +9 -9
  192. package/{esm2015/plugins/list/transforms/insert-list-data.js → esm2020/plugins/list/transforms/insert-list-data.mjs} +71 -71
  193. package/{esm2015/plugins/list/transforms/insert-list-item.js → esm2020/plugins/list/transforms/insert-list-item.mjs} +72 -72
  194. package/{esm2015/plugins/list/transforms/move-list-item-down.js → esm2020/plugins/list/transforms/move-list-item-down.mjs} +41 -41
  195. package/{esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.js → esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs} +42 -42
  196. package/{esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list.js → esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs} +29 -29
  197. package/{esm2015/plugins/list/transforms/move-list-item-up.js → esm2020/plugins/list/transforms/move-list-item-up.mjs} +77 -77
  198. package/{esm2015/plugins/list/transforms/unwrap-list.js → esm2020/plugins/list/transforms/unwrap-list.mjs} +9 -9
  199. package/esm2020/plugins/list/types.mjs +2 -0
  200. package/esm2020/plugins/mark/mark.editor.mjs +28 -0
  201. package/esm2020/plugins/mark/mark.plugin.mjs +105 -0
  202. package/esm2020/plugins/node-id/node-id.plugin.mjs +78 -0
  203. package/esm2020/plugins/normalizers/insert-paragraph-nodes.mjs +28 -0
  204. package/{esm2015/plugins/normalizers/remove-empty-nodes.js → esm2020/plugins/normalizers/remove-empty-nodes.mjs} +17 -17
  205. package/esm2020/plugins/normalizers/trailing-node.plugin.mjs +33 -0
  206. package/{esm2015/plugins/paint-format/paint-format.editor.js → esm2020/plugins/paint-format/paint-format.editor.mjs} +122 -122
  207. package/{esm2015/plugins/public-api.js → esm2020/plugins/public-api.mjs} +15 -15
  208. package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +96 -0
  209. package/esm2020/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.mjs +80 -0
  210. package/{esm2015/plugins/quick-insert/quick-insert.editor.js → esm2020/plugins/quick-insert/quick-insert.editor.mjs} +52 -52
  211. package/esm2020/plugins/quick-insert/quick-insert.plugin.mjs +74 -0
  212. package/esm2020/plugins/soft-break/soft-break.plugin.mjs +36 -0
  213. package/{esm2015/plugins/soft-break/soft-break.types.js → esm2020/plugins/soft-break/soft-break.types.mjs} +1 -1
  214. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +100 -0
  215. package/{esm2015/plugins/table/components/row/row.component.js → esm2020/plugins/table/components/row/row.component.mjs} +47 -47
  216. package/esm2020/plugins/table/components/table.component.mjs +461 -0
  217. package/esm2020/plugins/table/components/td/td.component.mjs +696 -0
  218. package/{esm2015/plugins/table/components/toolbar/table-options.component.js → esm2020/plugins/table/components/toolbar/table-options.component.mjs} +72 -69
  219. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +159 -0
  220. package/{esm2015/plugins/table/table.editor.js → esm2020/plugins/table/table.editor.mjs} +182 -182
  221. package/esm2020/plugins/table/table.plugin.mjs +427 -0
  222. package/{esm2015/plugins/table/table.service.js → esm2020/plugins/table/table.service.mjs} +103 -103
  223. package/esm2020/plugins/table/table.store.mjs +484 -0
  224. package/{esm2015/plugins/table/table.types.js → esm2020/plugins/table/table.types.mjs} +33 -33
  225. package/esm2020/plugins/table/toolbar-item.component.mjs +85 -0
  226. package/esm2020/plugins/table/transforms/clear-cell.mjs +14 -0
  227. package/{esm2015/plugins/table/transforms/clear-table-node.js → esm2020/plugins/table/transforms/clear-table-node.mjs} +27 -27
  228. package/{esm2015/plugins/table/transforms/insert-column.js → esm2020/plugins/table/transforms/insert-column.mjs} +57 -57
  229. package/{esm2015/plugins/table/transforms/insert-row.js → esm2020/plugins/table/transforms/insert-row.mjs} +42 -42
  230. package/esm2020/plugins/table/transforms/insert-table.mjs +15 -0
  231. package/{esm2015/plugins/table/transforms/remove-column.js → esm2020/plugins/table/transforms/remove-column.mjs} +51 -51
  232. package/{esm2015/plugins/table/transforms/remove-row.js → esm2020/plugins/table/transforms/remove-row.mjs} +50 -50
  233. package/{esm2015/plugins/table/transforms/remove-table.js → esm2020/plugins/table/transforms/remove-table.mjs} +49 -49
  234. package/{esm2015/plugins/table/utils/add-columns.js → esm2020/plugins/table/utils/add-columns.mjs} +28 -28
  235. package/{esm2015/plugins/table/utils/calc-anchor-position.js → esm2020/plugins/table/utils/calc-anchor-position.mjs} +24 -24
  236. package/{esm2015/plugins/table/utils/calc-span.js → esm2020/plugins/table/utils/calc-span.mjs} +72 -72
  237. package/{esm2015/plugins/table/utils/create-cell.js → esm2020/plugins/table/utils/create-cell.mjs} +19 -19
  238. package/{esm2015/plugins/table/utils/create-row.js → esm2020/plugins/table/utils/create-row.mjs} +12 -12
  239. package/{esm2015/plugins/table/utils/create-table.js → esm2020/plugins/table/utils/create-table.mjs} +13 -13
  240. package/{esm2015/plugins/table/utils/get-base-height.js → esm2020/plugins/table/utils/get-base-height.mjs} +22 -22
  241. package/{esm2015/plugins/table/utils/get-select-cell-node.js → esm2020/plugins/table/utils/get-select-cell-node.mjs} +19 -16
  242. package/{esm2015/plugins/table/utils/index.js → esm2020/plugins/table/utils/index.mjs} +8 -8
  243. package/{esm2015/plugins/table/utils/is-range-in-table.js → esm2020/plugins/table/utils/is-range-in-table.mjs} +16 -16
  244. package/{esm2015/plugins/table/utils/is-selection-in-table.js → esm2020/plugins/table/utils/is-selection-in-table.mjs} +11 -11
  245. package/{esm2015/plugins/table/utils/is-virtual-key.js → esm2020/plugins/table/utils/is-virtual-key.mjs} +13 -13
  246. package/{esm2015/plugins/table/utils/merge-cell.js → esm2020/plugins/table/utils/merge-cell.mjs} +90 -90
  247. package/{esm2015/plugins/table/utils/next-path.js → esm2020/plugins/table/utils/next-path.mjs} +5 -5
  248. package/{esm2015/plugins/table/utils/normalize-table.js → esm2020/plugins/table/utils/normalize-table.mjs} +30 -30
  249. package/{esm2015/plugins/table/utils/remove-columns.js → esm2020/plugins/table/utils/remove-columns.mjs} +23 -23
  250. package/{esm2015/plugins/table/utils/set-menu-cell-invisibility.js → esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs} +15 -15
  251. package/{esm2015/plugins/table/utils/split-cell.js → esm2020/plugins/table/utils/split-cell.mjs} +31 -31
  252. package/{esm2015/plugins/table/utils/table-position.js → esm2020/plugins/table/utils/table-position.mjs} +242 -242
  253. package/esm2020/plugins/todo-item/todo-item.component.mjs +64 -0
  254. package/{esm2015/plugins/todo-item/todo-item.editor.js → esm2020/plugins/todo-item/todo-item.editor.mjs} +31 -31
  255. package/{esm2015/plugins/todo-item/todo-item.plugin.js → esm2020/plugins/todo-item/todo-item.plugin.mjs} +78 -78
  256. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +83 -0
  257. package/{esm2015/plugins/vertical-align/vertical-align.editor.js → esm2020/plugins/vertical-align/vertical-align.editor.mjs} +54 -54
  258. package/{esm2015/public-api.js → esm2020/public-api.mjs} +23 -23
  259. package/{esm2015/queries/anchor-block-entry.js → esm2020/queries/anchor-block-entry.mjs} +13 -13
  260. package/{esm2015/queries/anchor-block.js → esm2020/queries/anchor-block.mjs} +6 -6
  261. package/{esm2015/queries/anchor-inline-entry.js → esm2020/queries/anchor-inline-entry.mjs} +10 -10
  262. package/{esm2015/queries/find-descendant.js → esm2020/queries/find-descendant.mjs} +47 -47
  263. package/{esm2015/queries/find-node.js → esm2020/queries/find-node.mjs} +45 -45
  264. package/{esm2015/queries/find-path.js → esm2020/queries/find-path.mjs} +28 -28
  265. package/esm2020/queries/get-above-by-type.mjs +14 -0
  266. package/{esm2015/queries/get-above.js → esm2020/queries/get-above.mjs} +9 -9
  267. package/{esm2015/queries/get-anchor-block-entry.js → esm2020/queries/get-anchor-block-entry.mjs} +8 -8
  268. package/esm2020/queries/get-block-above.mjs +10 -0
  269. package/esm2020/queries/get-block-card-above.mjs +10 -0
  270. package/{esm2015/queries/get-block-card-cursor.js → esm2020/queries/get-block-card-cursor.mjs} +5 -5
  271. package/{esm2015/queries/get-container-blocks.js → esm2020/queries/get-container-blocks.mjs} +11 -11
  272. package/{esm2015/queries/get-directly-parent.js → esm2020/queries/get-directly-parent.mjs} +11 -11
  273. package/{esm2015/queries/get-insert-elements-path.js → esm2020/queries/get-insert-elements-path.mjs} +43 -43
  274. package/{esm2015/queries/get-last-child-path.js → esm2020/queries/get-last-child-path.mjs} +9 -9
  275. package/{esm2015/queries/get-last-node.js → esm2020/queries/get-last-node.mjs} +17 -17
  276. package/{esm2015/queries/get-next-sibling-nodes.js → esm2020/queries/get-next-sibling-nodes.mjs} +17 -17
  277. package/{esm2015/queries/get-node.js → esm2020/queries/get-node.mjs} +10 -10
  278. package/esm2020/queries/get-nodes-by-type.mjs +15 -0
  279. package/{esm2015/queries/get-nodes.js → esm2020/queries/get-nodes.mjs} +7 -7
  280. package/{esm2015/queries/get-parent.js → esm2020/queries/get-parent.mjs} +12 -12
  281. package/esm2020/queries/get-plain-text.mjs +16 -0
  282. package/{esm2015/queries/get-plugin-by-toolbar.js → esm2020/queries/get-plugin-by-toolbar.mjs} +12 -12
  283. package/{esm2015/queries/get-point-before.js → esm2020/queries/get-point-before.mjs} +62 -62
  284. package/{esm2015/queries/get-point-from-location.js → esm2020/queries/get-point-from-location.mjs} +15 -15
  285. package/{esm2015/queries/get-previous-path.js → esm2020/queries/get-previous-path.mjs} +9 -9
  286. package/{esm2015/queries/get-rang-from-block-start.js → esm2020/queries/get-rang-from-block-start.mjs} +16 -16
  287. package/{esm2015/queries/get-range-before.js → esm2020/queries/get-range-before.mjs} +17 -17
  288. package/esm2020/queries/get-selection-marks.mjs +18 -0
  289. package/{esm2015/queries/get-selection-nodes-by-type.js → esm2020/queries/get-selection-nodes-by-type.mjs} +29 -29
  290. package/{esm2015/queries/get-text.js → esm2020/queries/get-text.mjs} +9 -9
  291. package/esm2020/queries/get-toolbar-disabled.mjs +13 -0
  292. package/{esm2015/queries/index.js → esm2020/queries/index.mjs} +58 -58
  293. package/{esm2015/queries/is-across-blocks.js → esm2020/queries/is-across-blocks.mjs} +7 -7
  294. package/{esm2015/queries/is-ancestor-empty.js → esm2020/queries/is-ancestor-empty.mjs} +6 -6
  295. package/{esm2015/queries/is-ancestor.js → esm2020/queries/is-ancestor.mjs} +3 -3
  296. package/{esm2015/queries/is-block-above-empty.js → esm2020/queries/is-block-above-empty.mjs} +11 -11
  297. package/{esm2015/queries/is-block-active.js → esm2020/queries/is-block-active.mjs} +7 -7
  298. package/{esm2015/queries/is-block-card-cursor.js → esm2020/queries/is-block-card-cursor.mjs} +4 -4
  299. package/{esm2015/queries/is-block-text-empty-after-selection.js → esm2020/queries/is-block-text-empty-after-selection.mjs} +31 -31
  300. package/{esm2015/queries/is-collapsed.js → esm2020/queries/is-collapsed.mjs} +7 -7
  301. package/{esm2015/queries/is-contain-nested-type.js → esm2020/queries/is-contain-nested-type.mjs} +28 -28
  302. package/{esm2015/queries/is-container-type.js → esm2020/queries/is-container-type.mjs} +2 -2
  303. package/{esm2015/queries/is-descendant.js → esm2020/queries/is-descendant.mjs} +3 -3
  304. package/{esm2015/queries/is-empty-content.js → esm2020/queries/is-empty-content.mjs} +14 -14
  305. package/{esm2015/queries/is-empty-paragraph-by-path.js → esm2020/queries/is-empty-paragraph-by-path.mjs} +7 -7
  306. package/{esm2015/queries/is-empty-paragraph.js → esm2020/queries/is-empty-paragraph.mjs} +11 -11
  307. package/{esm2015/queries/is-first-child.js → esm2020/queries/is-first-child.mjs} +5 -5
  308. package/{esm2015/queries/is-include-types.js → esm2020/queries/is-include-types.mjs} +11 -11
  309. package/{esm2015/queries/is-node-type-in.js → esm2020/queries/is-node-type-in.mjs} +9 -9
  310. package/{esm2015/queries/is-node-type.js → esm2020/queries/is-node-type.mjs} +15 -15
  311. package/{esm2015/queries/is-paragraph.js → esm2020/queries/is-paragraph.mjs} +9 -9
  312. package/{esm2015/queries/is-point-at-root.js → esm2020/queries/is-point-at-root.mjs} +2 -2
  313. package/esm2020/queries/is-range-across-blocks.mjs +22 -0
  314. package/{esm2015/queries/is-range-at-root.js → esm2020/queries/is-range-at-root.mjs} +3 -3
  315. package/{esm2015/queries/is-start.js → esm2020/queries/is-start.mjs} +6 -6
  316. package/{esm2015/queries/some-node.js → esm2020/queries/some-node.mjs} +9 -9
  317. package/{esm2015/services/color-select.service.js → esm2020/services/color-select.service.mjs} +50 -50
  318. package/esm2020/services/context.service.mjs +59 -0
  319. package/{esm2015/services/table-contextmenu.service.js → esm2020/services/table-contextmenu.service.mjs} +190 -190
  320. package/esm2020/services/toolbar.service.mjs +48 -0
  321. package/{esm2015/shortcuts/index.js → esm2020/shortcuts/index.mjs} +5 -5
  322. package/{esm2015/shortcuts/mark.js → esm2020/shortcuts/mark.mjs} +24 -24
  323. package/{esm2015/transforms/apply-deep-to-nodes.js → esm2020/transforms/apply-deep-to-nodes.mjs} +21 -21
  324. package/{esm2015/transforms/clear-marks.js → esm2020/transforms/clear-marks.mjs} +23 -23
  325. package/{esm2015/transforms/close-conversion-hint.js → esm2020/transforms/close-conversion-hint.mjs} +8 -8
  326. package/{esm2015/transforms/delete-element.js → esm2020/transforms/delete-element.mjs} +11 -11
  327. package/{esm2015/transforms/handle-continual-delete-backward.js → esm2020/transforms/handle-continual-delete-backward.mjs} +17 -17
  328. package/{esm2015/transforms/handle-continual-insert-break.js → esm2020/transforms/handle-continual-insert-break.mjs} +19 -19
  329. package/{esm2015/transforms/index.js → esm2020/transforms/index.mjs} +18 -18
  330. package/esm2020/transforms/insert-elements.mjs +34 -0
  331. package/{esm2015/transforms/insert-paragraph.js → esm2020/transforms/insert-paragraph.mjs} +6 -6
  332. package/esm2020/transforms/merge-deep-to-nodes.mjs +9 -0
  333. package/{esm2015/transforms/move-children.js → esm2020/transforms/move-children.mjs} +21 -21
  334. package/{esm2015/transforms/on-keydown-reset-block-type.js → esm2020/transforms/on-keydown-reset-block-type.mjs} +22 -22
  335. package/{esm2015/transforms/set-end-selection.js → esm2020/transforms/set-end-selection.mjs} +10 -10
  336. package/{esm2015/transforms/set-marks.js → esm2020/transforms/set-marks.mjs} +9 -9
  337. package/{esm2015/transforms/set-node.js → esm2020/transforms/set-node.mjs} +5 -5
  338. package/{esm2015/transforms/split-node.js → esm2020/transforms/split-node.mjs} +31 -31
  339. package/{esm2015/transforms/un-hang-range.js → esm2020/transforms/un-hang-range.mjs} +11 -11
  340. package/{esm2015/transforms/un-wrap.js → esm2020/transforms/un-wrap.mjs} +11 -11
  341. package/esm2020/transforms/unwrap-nodes-by-type.mjs +14 -0
  342. package/{esm2015/utils/auto-focus.js → esm2020/utils/auto-focus.mjs} +13 -13
  343. package/{esm2015/utils/auto-scroll-view.js → esm2020/utils/auto-scroll-view.mjs} +24 -24
  344. package/{esm2015/utils/cast-array.js → esm2020/utils/cast-array.mjs} +7 -7
  345. package/{esm2015/utils/common.js → esm2020/utils/common.mjs} +2 -2
  346. package/{esm2015/utils/create-empty-paragraph.js → esm2020/utils/create-empty-paragraph.mjs} +14 -14
  347. package/{esm2015/utils/data-transform.js → esm2020/utils/data-transform.mjs} +48 -48
  348. package/{esm2015/utils/dom.js → esm2020/utils/dom.mjs} +46 -46
  349. package/{esm2015/utils/editor-uuid.js → esm2020/utils/editor-uuid.mjs} +8 -8
  350. package/{esm2015/utils/fragment.js → esm2020/utils/fragment.mjs} +65 -65
  351. package/{esm2015/utils/get-editable-element-height.js → esm2020/utils/get-editable-element-height.mjs} +6 -6
  352. package/{esm2015/utils/get-toolbar-class.js → esm2020/utils/get-toolbar-class.mjs} +6 -6
  353. package/{esm2015/utils/id-creator.js → esm2020/utils/id-creator.mjs} +11 -11
  354. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +13 -13
  355. package/{esm2015/utils/is-clean-empty-paragraph.js → esm2020/utils/is-clean-empty-paragraph.mjs} +36 -36
  356. package/esm2020/utils/is-inline.mjs +9 -0
  357. package/{esm2015/utils/lodash.js → esm2020/utils/lodash.mjs} +3 -3
  358. package/esm2020/utils/match.mjs +32 -0
  359. package/{esm2015/utils/merge-element-options.js → esm2020/utils/merge-element-options.mjs} +19 -19
  360. package/{esm2015/utils/weak-maps.js → esm2020/utils/weak-maps.mjs} +3 -3
  361. package/{esm2015/worktile-theia.js → esm2020/worktile-theia.mjs} +4 -4
  362. package/fesm2015/{worktile-theia.js → worktile-theia.mjs} +13096 -13169
  363. package/fesm2015/worktile-theia.mjs.map +1 -0
  364. package/fesm2020/worktile-theia.mjs +13739 -0
  365. package/fesm2020/worktile-theia.mjs.map +1 -0
  366. package/interfaces/auto-format.d.ts +64 -64
  367. package/interfaces/editor.d.ts +146 -146
  368. package/interfaces/element.d.ts +9 -9
  369. package/interfaces/image.d.ts +25 -25
  370. package/interfaces/index.d.ts +8 -8
  371. package/interfaces/plugins/index.d.ts +4 -4
  372. package/interfaces/plugins/no-infer.d.ts +1 -1
  373. package/interfaces/plugins/plugin-key.d.ts +48 -48
  374. package/interfaces/plugins/plugins.d.ts +45 -45
  375. package/interfaces/plugins/with-override.d.ts +7 -7
  376. package/interfaces/reset-block-type-plugin-options.d.ts +23 -23
  377. package/interfaces/toolbar.d.ts +64 -64
  378. package/interfaces/upload.d.ts +11 -11
  379. package/interfaces/utility/index.d.ts +3 -3
  380. package/interfaces/utility/nested-structure-by-key.d.ts +3 -3
  381. package/interfaces/utility/override-by-key.d.ts +3 -3
  382. package/interfaces/utility/types.d.ts +1 -1
  383. package/interfaces/valid-children-types.d.ts +9 -9
  384. package/interfaces/view-base.d.ts +9 -9
  385. package/package.json +20 -6
  386. package/pipes.d.ts +16 -16
  387. package/plugins/align/align.editor.d.ts +7 -7
  388. package/plugins/align/align.plugin.d.ts +2 -2
  389. package/plugins/autoformat/autoformat.plugin.d.ts +6 -6
  390. package/plugins/autoformat/transforms/auto-format-block.d.ts +5 -5
  391. package/plugins/autoformat/transforms/auto-format-inline.d.ts +9 -9
  392. package/plugins/blockquote/blockquote.component.d.ts +11 -11
  393. package/plugins/blockquote/blockquote.editor.d.ts +4 -4
  394. package/plugins/blockquote/blockquote.plugin.d.ts +2 -2
  395. package/plugins/code/code.component.d.ts +65 -65
  396. package/plugins/code/code.editor.d.ts +8 -8
  397. package/plugins/code/code.plugin.d.ts +2 -2
  398. package/plugins/color/color.editor.d.ts +8 -8
  399. package/plugins/color/color.plugin.d.ts +1 -1
  400. package/plugins/color/toolbar-item.component.d.ts +16 -16
  401. package/plugins/common/auto-insert-data..d.ts +2 -2
  402. package/plugins/common/block-card.plugin.d.ts +2 -2
  403. package/plugins/common/get-fragment.plugin.d.ts +6 -6
  404. package/plugins/common/history.plugin.d.ts +9 -9
  405. package/plugins/common/move-selection.plugin.d.ts +2 -2
  406. package/plugins/common/remove-empty.plugin.d.ts +2 -2
  407. package/plugins/common/remove-void.plugin.d.ts +2 -2
  408. package/plugins/common/reset-type.plugin.d.ts +2 -2
  409. package/plugins/common/transforms.plugin.d.ts +8 -8
  410. package/plugins/deserializers/deserialize-html.plugin.d.ts +2 -2
  411. package/plugins/deserializers/deserialize-md.plugin.d.ts +2 -2
  412. package/plugins/font-size/font-size.editor.d.ts +10 -10
  413. package/plugins/heading/heading.editor.d.ts +9 -9
  414. package/plugins/heading/heading.plugin.d.ts +7 -7
  415. package/plugins/hr/hr.component.d.ts +12 -12
  416. package/plugins/hr/hr.editor.d.ts +4 -4
  417. package/plugins/hr/hr.plugin.d.ts +2 -2
  418. package/plugins/image/image.component.d.ts +74 -74
  419. package/plugins/image/image.editor.d.ts +12 -12
  420. package/plugins/image/image.plugin.d.ts +7 -7
  421. package/plugins/indent/indent.editor.d.ts +10 -10
  422. package/plugins/indent/indent.plugin.d.ts +8 -8
  423. package/plugins/indent/on-keydown-indent.d.ts +3 -3
  424. package/plugins/index.d.ts +1 -1
  425. package/plugins/inline-code/inline-code.component.d.ts +9 -9
  426. package/plugins/inline-code/inline-code.editor.d.ts +7 -7
  427. package/plugins/inline-code/inline-code.plugin.d.ts +2 -2
  428. package/plugins/link/edit/link-edit.component.d.ts +36 -36
  429. package/plugins/link/hover/link-hover.component.d.ts +15 -15
  430. package/plugins/link/link.component.d.ts +39 -39
  431. package/plugins/link/link.editor.d.ts +7 -7
  432. package/plugins/link/link.plugin.d.ts +2 -2
  433. package/plugins/link/link.types.d.ts +9 -9
  434. package/plugins/list/components/bulleted-list.component.d.ts +15 -15
  435. package/plugins/list/components/list-item.component.d.ts +20 -20
  436. package/plugins/list/components/numbered-list.component.d.ts +16 -16
  437. package/plugins/list/list.editor.d.ts +12 -12
  438. package/plugins/list/list.plugin.d.ts +3 -3
  439. package/plugins/list/normalizers/get-list-normalizer.d.ts +6 -6
  440. package/plugins/list/normalizers/normalize-list-item.d.ts +5 -5
  441. package/plugins/list/normalizers/normalize-no.d.ts +2 -2
  442. package/plugins/list/on-key-down-list.d.ts +2 -2
  443. package/plugins/list/queries/get-list-item-entry.d.ts +10 -10
  444. package/plugins/list/queries/get-list-item-sublist.d.ts +6 -6
  445. package/plugins/list/queries/get-list-types.d.ts +2 -2
  446. package/plugins/list/queries/get-start-list-item.d.ts +8 -8
  447. package/plugins/list/queries/has-list-in-list-item.d.ts +15 -15
  448. package/plugins/list/queries/is-in-list.d.ts +2 -2
  449. package/plugins/list/queries/is-list-nested.d.ts +5 -5
  450. package/plugins/list/queries/is-list.d.ts +2 -2
  451. package/plugins/list/queries/is-node-type-list.d.ts +2 -2
  452. package/plugins/list/queries/is-selection-at-list-item-start.d.ts +5 -5
  453. package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -5
  454. package/plugins/list/queries/is-single-list-item.d.ts +5 -5
  455. package/plugins/list/transforms/insert-list-data.d.ts +12 -12
  456. package/plugins/list/transforms/insert-list-item.d.ts +5 -5
  457. package/plugins/list/transforms/move-list-item-down.d.ts +6 -6
  458. package/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.d.ts +20 -20
  459. package/plugins/list/transforms/move-list-item-sublist-items-to-list.d.ts +19 -19
  460. package/plugins/list/transforms/move-list-item-up.d.ts +10 -10
  461. package/plugins/list/transforms/unwrap-list.d.ts +2 -2
  462. package/plugins/list/types.d.ts +7 -7
  463. package/plugins/mark/mark.editor.d.ts +8 -8
  464. package/plugins/mark/mark.plugin.d.ts +3 -3
  465. package/plugins/node-id/node-id.plugin.d.ts +8 -8
  466. package/plugins/normalizers/insert-paragraph-nodes.d.ts +7 -7
  467. package/plugins/normalizers/remove-empty-nodes.d.ts +7 -7
  468. package/plugins/normalizers/trailing-node.plugin.d.ts +9 -9
  469. package/plugins/paint-format/paint-format.editor.d.ts +8 -8
  470. package/plugins/public-api.d.ts +15 -15
  471. package/plugins/quick-insert/components/quick-insert.component.d.ts +28 -28
  472. package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +28 -28
  473. package/plugins/quick-insert/quick-insert.editor.d.ts +7 -7
  474. package/plugins/quick-insert/quick-insert.plugin.d.ts +10 -10
  475. package/plugins/soft-break/soft-break.plugin.d.ts +5 -5
  476. package/plugins/soft-break/soft-break.types.d.ts +8 -8
  477. package/plugins/table/components/insert-mark/insert-mark.component.d.ts +24 -24
  478. package/plugins/table/components/row/row.component.d.ts +14 -14
  479. package/plugins/table/components/table.component.d.ts +79 -79
  480. package/plugins/table/components/td/td.component.d.ts +95 -95
  481. package/plugins/table/components/toolbar/table-options.component.d.ts +20 -20
  482. package/plugins/table/components/toolbar/table-toolbar.component.d.ts +38 -38
  483. package/plugins/table/table.editor.d.ts +25 -25
  484. package/plugins/table/table.plugin.d.ts +3 -3
  485. package/plugins/table/table.service.d.ts +30 -30
  486. package/plugins/table/table.store.d.ts +71 -71
  487. package/plugins/table/table.types.d.ts +67 -67
  488. package/plugins/table/toolbar-item.component.d.ts +17 -17
  489. package/plugins/table/transforms/clear-cell.d.ts +6 -6
  490. package/plugins/table/transforms/clear-table-node.d.ts +6 -6
  491. package/plugins/table/transforms/insert-column.d.ts +12 -12
  492. package/plugins/table/transforms/insert-row.d.ts +6 -6
  493. package/plugins/table/transforms/insert-table.d.ts +6 -6
  494. package/plugins/table/transforms/remove-column.d.ts +3 -3
  495. package/plugins/table/transforms/remove-row.d.ts +3 -3
  496. package/plugins/table/transforms/remove-table.d.ts +3 -3
  497. package/plugins/table/utils/add-columns.d.ts +2 -2
  498. package/plugins/table/utils/calc-anchor-position.d.ts +6 -6
  499. package/plugins/table/utils/calc-span.d.ts +11 -11
  500. package/plugins/table/utils/create-cell.d.ts +16 -16
  501. package/plugins/table/utils/create-row.d.ts +7 -7
  502. package/plugins/table/utils/create-table.d.ts +7 -7
  503. package/plugins/table/utils/get-base-height.d.ts +9 -9
  504. package/plugins/table/utils/get-select-cell-node.d.ts +7 -7
  505. package/plugins/table/utils/index.d.ts +7 -7
  506. package/plugins/table/utils/is-range-in-table.d.ts +6 -6
  507. package/plugins/table/utils/is-selection-in-table.d.ts +6 -6
  508. package/plugins/table/utils/is-virtual-key.d.ts +1 -1
  509. package/plugins/table/utils/merge-cell.d.ts +21 -21
  510. package/plugins/table/utils/next-path.d.ts +2 -2
  511. package/plugins/table/utils/normalize-table.d.ts +2 -2
  512. package/plugins/table/utils/remove-columns.d.ts +2 -2
  513. package/plugins/table/utils/set-menu-cell-invisibility.d.ts +3 -3
  514. package/plugins/table/utils/split-cell.d.ts +4 -4
  515. package/plugins/table/utils/table-position.d.ts +97 -97
  516. package/plugins/todo-item/todo-item.component.d.ts +21 -21
  517. package/plugins/todo-item/todo-item.editor.d.ts +5 -5
  518. package/plugins/todo-item/todo-item.plugin.d.ts +5 -5
  519. package/plugins/vertical-align/toolbar-item.component.d.ts +25 -25
  520. package/plugins/vertical-align/vertical-align.editor.d.ts +7 -7
  521. package/public-api.d.ts +20 -20
  522. package/queries/anchor-block-entry.d.ts +2 -2
  523. package/queries/anchor-block.d.ts +2 -2
  524. package/queries/anchor-inline-entry.d.ts +2 -2
  525. package/queries/find-descendant.d.ts +10 -10
  526. package/queries/find-node.d.ts +15 -15
  527. package/queries/find-path.d.ts +6 -6
  528. package/queries/get-above-by-type.d.ts +6 -6
  529. package/queries/get-above.d.ts +6 -6
  530. package/queries/get-anchor-block-entry.d.ts +2 -2
  531. package/queries/get-block-above.d.ts +7 -7
  532. package/queries/get-block-card-above.d.ts +7 -7
  533. package/queries/get-block-card-cursor.d.ts +2 -2
  534. package/queries/get-container-blocks.d.ts +2 -2
  535. package/queries/get-directly-parent.d.ts +2 -2
  536. package/queries/get-insert-elements-path.d.ts +7 -7
  537. package/queries/get-last-child-path.d.ts +6 -6
  538. package/queries/get-last-node.d.ts +2 -2
  539. package/queries/get-next-sibling-nodes.d.ts +7 -7
  540. package/queries/get-node.d.ts +2 -2
  541. package/queries/get-nodes-by-type.d.ts +6 -6
  542. package/queries/get-nodes.d.ts +4 -4
  543. package/queries/get-parent.d.ts +7 -7
  544. package/queries/get-plain-text.d.ts +6 -6
  545. package/queries/get-plugin-by-toolbar.d.ts +3 -3
  546. package/queries/get-point-before.d.ts +38 -38
  547. package/queries/get-point-from-location.d.ts +5 -5
  548. package/queries/get-previous-path.d.ts +2 -2
  549. package/queries/get-rang-from-block-start.d.ts +9 -9
  550. package/queries/get-range-before.d.ts +7 -7
  551. package/queries/get-selection-marks.d.ts +12 -12
  552. package/queries/get-selection-nodes-by-type.d.ts +3 -3
  553. package/queries/get-text.d.ts +6 -6
  554. package/queries/get-toolbar-disabled.d.ts +4 -4
  555. package/queries/index.d.ts +58 -58
  556. package/queries/is-across-blocks.d.ts +2 -2
  557. package/queries/is-ancestor-empty.d.ts +5 -5
  558. package/queries/is-ancestor.d.ts +2 -2
  559. package/queries/is-block-above-empty.d.ts +5 -5
  560. package/queries/is-block-active.d.ts +3 -3
  561. package/queries/is-block-card-cursor.d.ts +2 -2
  562. package/queries/is-block-text-empty-after-selection.d.ts +7 -7
  563. package/queries/is-collapsed.d.ts +6 -6
  564. package/queries/is-contain-nested-type.d.ts +2 -2
  565. package/queries/is-container-type.d.ts +2 -2
  566. package/queries/is-descendant.d.ts +2 -2
  567. package/queries/is-empty-content.d.ts +2 -2
  568. package/queries/is-empty-paragraph-by-path.d.ts +2 -2
  569. package/queries/is-empty-paragraph.d.ts +2 -2
  570. package/queries/is-first-child.d.ts +5 -5
  571. package/queries/is-include-types.d.ts +3 -3
  572. package/queries/is-node-type-in.d.ts +6 -6
  573. package/queries/is-node-type.d.ts +6 -6
  574. package/queries/is-paragraph.d.ts +2 -2
  575. package/queries/is-point-at-root.d.ts +2 -2
  576. package/queries/is-range-across-blocks.d.ts +8 -8
  577. package/queries/is-range-at-root.d.ts +2 -2
  578. package/queries/is-start.d.ts +5 -5
  579. package/queries/some-node.d.ts +7 -7
  580. package/services/color-select.service.d.ts +20 -20
  581. package/services/context.service.d.ts +49 -49
  582. package/services/table-contextmenu.service.d.ts +25 -25
  583. package/services/toolbar.service.d.ts +9 -9
  584. package/shortcuts/index.d.ts +2 -2
  585. package/shortcuts/mark.d.ts +2 -2
  586. package/transforms/apply-deep-to-nodes.d.ts +12 -12
  587. package/transforms/clear-marks.d.ts +2 -2
  588. package/transforms/close-conversion-hint.d.ts +2 -2
  589. package/transforms/delete-element.d.ts +2 -2
  590. package/transforms/handle-continual-delete-backward.d.ts +3 -3
  591. package/transforms/handle-continual-insert-break.d.ts +3 -3
  592. package/transforms/index.d.ts +18 -18
  593. package/transforms/insert-elements.d.ts +2 -2
  594. package/transforms/insert-paragraph.d.ts +2 -2
  595. package/transforms/merge-deep-to-nodes.d.ts +5 -5
  596. package/transforms/move-children.d.ts +24 -24
  597. package/transforms/on-keydown-reset-block-type.d.ts +3 -3
  598. package/transforms/set-end-selection.d.ts +2 -2
  599. package/transforms/set-marks.d.ts +12 -12
  600. package/transforms/set-node.d.ts +2 -2
  601. package/transforms/split-node.d.ts +3 -3
  602. package/transforms/un-hang-range.d.ts +10 -10
  603. package/transforms/un-wrap.d.ts +3 -3
  604. package/transforms/unwrap-nodes-by-type.d.ts +6 -6
  605. package/utils/auto-focus.d.ts +2 -2
  606. package/utils/auto-scroll-view.d.ts +6 -6
  607. package/utils/cast-array.d.ts +1 -1
  608. package/utils/common.d.ts +2 -2
  609. package/utils/create-empty-paragraph.d.ts +2 -2
  610. package/utils/data-transform.d.ts +6 -6
  611. package/utils/dom.d.ts +10 -10
  612. package/utils/editor-uuid.d.ts +3 -3
  613. package/utils/fragment.d.ts +10 -10
  614. package/utils/get-editable-element-height.d.ts +2 -2
  615. package/utils/get-toolbar-class.d.ts +2 -2
  616. package/utils/id-creator.d.ts +1 -1
  617. package/utils/index.d.ts +13 -13
  618. package/utils/is-clean-empty-paragraph.d.ts +9 -9
  619. package/utils/is-inline.d.ts +2 -2
  620. package/utils/lodash.d.ts +1 -1
  621. package/utils/match.d.ts +18 -18
  622. package/utils/merge-element-options.d.ts +2 -2
  623. package/utils/weak-maps.d.ts +5 -5
  624. package/worktile-theia.d.ts +5 -5
  625. package/bundles/worktile-theia.umd.js +0 -14919
  626. package/bundles/worktile-theia.umd.js.map +0 -1
  627. package/esm2015/components/color-select/color-select.component.js +0 -113
  628. package/esm2015/components/column-resize/column-resize-notifier.js +0 -31
  629. package/esm2015/components/column-resize/column-resize.module.js +0 -34
  630. package/esm2015/components/contextmenu/contextmenu.component.js +0 -64
  631. package/esm2015/components/conversion-hint/conversion-hint.component.js +0 -59
  632. package/esm2015/components/element/element.component.js +0 -24
  633. package/esm2015/components/inline-toolbar/inline-toolbar.component.js +0 -139
  634. package/esm2015/components/table-select/table-select.component.js +0 -53
  635. package/esm2015/components/template/template.component.js +0 -66
  636. package/esm2015/components/toolbar/toolbar.component.js +0 -250
  637. package/esm2015/components/toolbar-dropdown/toolbar-dropdown.component.js +0 -133
  638. package/esm2015/components/toolbar-group/toolbar-group.component.js +0 -116
  639. package/esm2015/components/toolbar-item/toolbar-item.component.js +0 -105
  640. package/esm2015/core/create-toolbar.js +0 -57
  641. package/esm2015/core/toolbar-item/base-toolbar-item.js +0 -92
  642. package/esm2015/core/utils/get-plugin-options.js +0 -3
  643. package/esm2015/core/utils/get-plugins.js +0 -5
  644. package/esm2015/core/utils/merge-array.js +0 -18
  645. package/esm2015/editor.component.js +0 -440
  646. package/esm2015/interfaces/editor.js +0 -23
  647. package/esm2015/interfaces/reset-block-type-plugin-options.js +0 -2
  648. package/esm2015/interfaces/upload.js +0 -2
  649. package/esm2015/plugins/align/align.editor.js +0 -48
  650. package/esm2015/plugins/autoformat/autoformat.plugin.js +0 -110
  651. package/esm2015/plugins/blockquote/blockquote.editor.js +0 -21
  652. package/esm2015/plugins/code/code.component.js +0 -245
  653. package/esm2015/plugins/color/color.editor.js +0 -45
  654. package/esm2015/plugins/color/toolbar-item.component.js +0 -124
  655. package/esm2015/plugins/common/auto-insert-data..js +0 -78
  656. package/esm2015/plugins/common/get-fragment.plugin.js +0 -25
  657. package/esm2015/plugins/font-size/font-size.editor.js +0 -98
  658. package/esm2015/plugins/image/image.component.js +0 -370
  659. package/esm2015/plugins/image/image.plugin.js +0 -58
  660. package/esm2015/plugins/indent/indent.editor.js +0 -73
  661. package/esm2015/plugins/indent/indent.plugin.js +0 -60
  662. package/esm2015/plugins/link/edit/link-edit.component.js +0 -108
  663. package/esm2015/plugins/link/hover/link-hover.component.js +0 -39
  664. package/esm2015/plugins/list/components/bulleted-list.component.js +0 -34
  665. package/esm2015/plugins/list/components/list-item.component.js +0 -95
  666. package/esm2015/plugins/list/components/numbered-list.component.js +0 -40
  667. package/esm2015/plugins/list/list.plugin.js +0 -281
  668. package/esm2015/plugins/list/normalizers/normalize-list-item.js +0 -19
  669. package/esm2015/plugins/list/types.js +0 -2
  670. package/esm2015/plugins/mark/mark.editor.js +0 -29
  671. package/esm2015/plugins/mark/mark.plugin.js +0 -102
  672. package/esm2015/plugins/node-id/node-id.plugin.js +0 -69
  673. package/esm2015/plugins/normalizers/insert-paragraph-nodes.js +0 -29
  674. package/esm2015/plugins/normalizers/trailing-node.plugin.js +0 -34
  675. package/esm2015/plugins/quick-insert/components/quick-insert.component.js +0 -102
  676. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +0 -84
  677. package/esm2015/plugins/quick-insert/quick-insert.plugin.js +0 -75
  678. package/esm2015/plugins/soft-break/soft-break.plugin.js +0 -37
  679. package/esm2015/plugins/table/components/insert-mark/insert-mark.component.js +0 -103
  680. package/esm2015/plugins/table/components/table.component.js +0 -470
  681. package/esm2015/plugins/table/components/td/td.component.js +0 -698
  682. package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +0 -162
  683. package/esm2015/plugins/table/table.plugin.js +0 -424
  684. package/esm2015/plugins/table/table.store.js +0 -480
  685. package/esm2015/plugins/table/toolbar-item.component.js +0 -86
  686. package/esm2015/plugins/table/transforms/clear-cell.js +0 -11
  687. package/esm2015/plugins/table/transforms/insert-table.js +0 -15
  688. package/esm2015/plugins/todo-item/todo-item.component.js +0 -66
  689. package/esm2015/plugins/vertical-align/toolbar-item.component.js +0 -90
  690. package/esm2015/queries/get-above-by-type.js +0 -11
  691. package/esm2015/queries/get-block-above.js +0 -7
  692. package/esm2015/queries/get-block-card-above.js +0 -7
  693. package/esm2015/queries/get-nodes-by-type.js +0 -12
  694. package/esm2015/queries/get-plain-text.js +0 -16
  695. package/esm2015/queries/get-selection-marks.js +0 -19
  696. package/esm2015/queries/get-toolbar-disabled.js +0 -14
  697. package/esm2015/queries/is-range-across-blocks.js +0 -18
  698. package/esm2015/services/context.service.js +0 -60
  699. package/esm2015/services/toolbar.service.js +0 -48
  700. package/esm2015/transforms/insert-elements.js +0 -35
  701. package/esm2015/transforms/merge-deep-to-nodes.js +0 -9
  702. package/esm2015/transforms/unwrap-nodes-by-type.js +0 -11
  703. package/esm2015/utils/is-inline.js +0 -10
  704. package/esm2015/utils/match.js +0 -29
  705. package/fesm2015/worktile-theia.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktile-theia.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../packages/src/constants/default.ts","../../../packages/src/constants/node-types.ts","../../../packages/src/constants/error.ts","../../../packages/src/constants/code.ts","../../../packages/src/constants/toolbar.ts","../../../packages/src/components/text/text.component.ts","../../../packages/src/interfaces/view-base.ts","../../../packages/src/components/element/element.component.ts","../../../packages/src/interfaces/editor.ts","../../../packages/src/interfaces/toolbar.ts","../../../packages/src/interfaces/image.ts","../../../packages/src/interfaces/valid-children-types.ts","../../../packages/src/interfaces/plugins/plugin-key.ts","../../../packages/src/services/context.service.ts","../../../packages/src/components/color-select/color-select.component.ts","../../../packages/src/components/color-select/color-select.component.html","../../../packages/src/services/color-select.service.ts","../../../packages/src/utils/id-creator.ts","../../../packages/src/utils/create-empty-paragraph.ts","../../../packages/src/utils/data-transform.ts","../../../packages/src/utils/weak-maps.ts","../../../packages/src/utils/editor-uuid.ts","../../../packages/src/utils/get-toolbar-class.ts","../../../packages/src/utils/common.ts","../../../packages/src/utils/is-clean-empty-paragraph.ts","../../../packages/src/utils/merge-element-options.ts","../../../packages/src/utils/dom.ts","../../../packages/src/utils/fragment.ts","../../../packages/src/utils/auto-focus.ts","../../../packages/src/utils/get-editable-element-height.ts","../../../packages/src/utils/auto-scroll-view.ts","../../../packages/src/utils/lodash.ts","../../../packages/src/core/utils/flatten-deep-plugins.ts","../../../packages/src/core/utils/get-plugins.ts","../../../packages/src/core/utils/get-plugin.ts","../../../packages/src/core/utils/get-plugin-options.ts","../../../packages/src/core/utils/merge-array.ts","../../../packages/src/core/utils/merge-options.ts","../../../packages/src/core/utils/combine-plugins.ts","../../../packages/src/core/utils/merge-deep-plugins.ts","../../../packages/src/core/utils/nested-structure-by-key.ts","../../../packages/src/core/utils/plugins-by-key.ts","../../../packages/src/core/with-theia.ts","../../../packages/src/core/create-plugin.ts","../../../packages/src/core/create-toolbar.ts","../../../packages/src/plugins/common/history.plugin.ts","../../../packages/src/transforms/set-marks.ts","../../../packages/src/transforms/clear-marks.ts","../../../packages/src/queries/is-ancestor.ts","../../../packages/src/queries/get-last-node.ts","../../../packages/src/queries/is-collapsed.ts","../../../packages/src/queries/get-anchor-block-entry.ts","../../../packages/src/queries/is-empty-paragraph.ts","../../../packages/src/queries/is-paragraph.ts","../../../packages/src/queries/is-block-active.ts","../../../packages/src/queries/get-above-by-type.ts","../../../packages/src/queries/is-include-types.ts","../../../packages/src/queries/get-block-card-cursor.ts","../../../packages/src/queries/is-block-card-cursor.ts","../../../packages/src/queries/anchor-block-entry.ts","../../../packages/src/transforms/un-hang-range.ts","../../../packages/src/queries/get-nodes.ts","../../../packages/src/queries/get-nodes-by-type.ts","../../../packages/src/queries/anchor-block.ts","../../../packages/src/queries/get-block-above.ts","../../../packages/src/queries/is-ancestor-empty.ts","../../../packages/src/queries/is-block-above-empty.ts","../../../packages/src/queries/is-node-type-in.ts","../../../packages/src/queries/is-first-child.ts","../../../packages/src/queries/get-previous-path.ts","../../../packages/src/queries/get-node.ts","../../../packages/src/queries/get-parent.ts","../../../packages/src/queries/find-path.ts","../../../packages/src/utils/cast-array.ts","../../../packages/src/utils/match.ts","../../../packages/src/queries/find-node.ts","../../../packages/src/queries/find-descendant.ts","../../../packages/src/queries/get-last-child-path.ts","../../../packages/src/queries/is-point-at-root.ts","../../../packages/src/queries/is-range-at-root.ts","../../../packages/src/queries/get-next-sibling-nodes.ts","../../../packages/src/queries/is-block-text-empty-after-selection.ts","../../../packages/src/queries/get-above.ts","../../../packages/src/queries/is-start.ts","../../../packages/src/queries/is-range-across-blocks.ts","../../../packages/src/queries/some-node.ts","../../../packages/src/queries/is-descendant.ts","../../../packages/src/queries/is-node-type.ts","../../../packages/src/queries/anchor-inline-entry.ts","../../../packages/src/queries/get-point-before.ts","../../../packages/src/queries/get-selection-nodes-by-type.ts","../../../packages/src/queries/is-across-blocks.ts","../../../packages/src/queries/get-text.ts","../../../packages/src/queries/get-point-from-location.ts","../../../packages/src/queries/get-rang-from-block-start.ts","../../../packages/src/queries/get-range-before.ts","../../../packages/src/queries/get-block-card-above.ts","../../../packages/src/queries/get-plain-text.ts","../../../packages/src/queries/is-empty-paragraph-by-path.ts","../../../packages/src/queries/get-selection-marks.ts","../../../packages/src/queries/is-container-type.ts","../../../packages/src/queries/get-container-blocks.ts","../../../packages/src/queries/get-directly-parent.ts","../../../packages/src/queries/get-insert-elements-path.ts","../../../packages/src/queries/is-contain-nested-type.ts","../../../packages/src/queries/get-toolbar-disabled.ts","../../../packages/src/queries/get-plugin-by-toolbar.ts","../../../packages/src/queries/is-empty-content.ts","../../../packages/src/transforms/insert-elements.ts","../../../packages/src/transforms/set-node.ts","../../../packages/src/transforms/unwrap-nodes-by-type.ts","../../../packages/src/transforms/on-keydown-reset-block-type.ts","../../../packages/src/transforms/move-children.ts","../../../packages/src/transforms/insert-paragraph.ts","../../../packages/src/transforms/apply-deep-to-nodes.ts","../../../packages/src/transforms/merge-deep-to-nodes.ts","../../../packages/src/transforms/un-wrap.ts","../../../packages/src/transforms/split-node.ts","../../../packages/src/transforms/delete-element.ts","../../../packages/src/transforms/set-end-selection.ts","../../../packages/src/transforms/close-conversion-hint.ts","../../../packages/src/transforms/handle-continual-delete-backward.ts","../../../packages/src/transforms/handle-continual-insert-break.ts","../../../packages/src/components/conversion-hint/conversion-hint.component.ts","../../../packages/src/components/conversion-hint/conversion-hint.component.html","../../../packages/src/plugins/deserializers/deserialize-md.plugin.ts","../../../packages/src/plugins/common/auto-insert-data..ts","../../../packages/src/plugins/common/remove-empty.plugin.ts","../../../packages/src/plugins/common/reset-type.plugin.ts","../../../packages/src/plugins/image/image.editor.ts","../../../packages/src/components/nav-split-line/nav-split-line.component.ts","../../../packages/src/plugins/image/image.component.ts","../../../packages/src/plugins/image/image.component.html","../../../packages/src/plugins/image/image.plugin.ts","../../../packages/src/plugins/list/queries/is-list.ts","../../../packages/src/plugins/list/queries/is-in-list.ts","../../../packages/src/plugins/list/queries/is-list-nested.ts","../../../packages/src/plugins/list/queries/get-list-types.ts","../../../packages/src/plugins/list/queries/get-start-list-item.ts","../../../packages/src/plugins/list/queries/has-list-in-list-item.ts","../../../packages/src/plugins/list/queries/is-node-type-list.ts","../../../packages/src/plugins/list/queries/is-single-list-item.ts","../../../packages/src/plugins/list/queries/get-list-item-entry.ts","../../../packages/src/plugins/list/queries/is-selection-at-list-item-start.ts","../../../packages/src/plugins/list/transforms/insert-list-data.ts","../../../packages/src/plugins/list/transforms/move-list-item-up.ts","../../../packages/src/plugins/list/transforms/insert-list-item.ts","../../../packages/src/plugins/list/transforms/unwrap-list.ts","../../../packages/src/plugins/list/queries/get-list-item-sublist.ts","../../../packages/src/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.ts","../../../packages/src/plugins/list/normalizers/normalize-list-item.ts","../../../packages/src/plugins/list/normalizers/normalize-no.ts","../../../packages/src/plugins/list/normalizers/get-list-normalizer.ts","../../../packages/src/plugins/list/transforms/move-list-item-sublist-items-to-list.ts","../../../packages/src/plugins/list/transforms/move-list-item-down.ts","../../../packages/src/plugins/list/on-key-down-list.ts","../../../packages/src/plugins/list/components/numbered-list.component.ts","../../../packages/src/plugins/list/components/bulleted-list.component.ts","../../../packages/src/plugins/list/components/list-item.component.ts","../../../packages/src/plugins/list/queries/is-selection-in-same-list-item.ts","../../../packages/src/plugins/list/list.editor.ts","../../../packages/src/plugins/list/list.plugin.ts","../../../packages/src/plugins/todo-item/todo-item.component.ts","../../../packages/src/plugins/todo-item/todo-item.editor.ts","../../../packages/src/plugins/todo-item/todo-item.plugin.ts","../../../packages/src/plugins/hr/hr.component.ts","../../../packages/src/plugins/hr/hr.editor.ts","../../../packages/src/plugins/hr/hr.plugin.ts","../../../packages/src/plugins/table/table.types.ts","../../../packages/src/plugins/table/utils/create-cell.ts","../../../packages/src/plugins/table/utils/create-row.ts","../../../packages/src/plugins/table/utils/create-table.ts","../../../packages/src/plugins/table/utils/table-position.ts","../../../packages/src/plugins/table/utils/is-range-in-table.ts","../../../packages/src/plugins/table/utils/is-selection-in-table.ts","../../../packages/src/plugins/table/utils/calc-span.ts","../../../packages/src/plugins/table/utils/add-columns.ts","../../../packages/src/plugins/table/transforms/insert-column.ts","../../../packages/src/plugins/table/transforms/insert-row.ts","../../../packages/src/plugins/table/transforms/insert-table.ts","../../../packages/src/plugins/table/transforms/clear-cell.ts","../../../packages/src/plugins/table/utils/remove-columns.ts","../../../packages/src/plugins/table/transforms/remove-column.ts","../../../packages/src/plugins/table/transforms/remove-row.ts","../../../packages/src/plugins/table/utils/next-path.ts","../../../packages/src/plugins/table/transforms/remove-table.ts","../../../packages/src/plugins/table/table.editor.ts","../../../packages/src/plugins/align/align.editor.ts","../../../packages/src/plugins/align/align.plugin.ts","../../../packages/src/plugins/heading/heading.editor.ts","../../../packages/src/plugins/heading/heading.plugin.ts","../../../packages/src/plugins/mark/mark.editor.ts","../../../packages/src/plugins/mark/mark.plugin.ts","../../../packages/src/plugins/node-id/node-id.plugin.ts","../../../packages/src/plugins/autoformat/transforms/auto-format-block.ts","../../../packages/src/plugins/autoformat/transforms/auto-format-inline.ts","../../../packages/src/plugins/blockquote/blockquote.editor.ts","../../../packages/src/plugins/inline-code/inline-code.editor.ts","../../../packages/src/plugins/code/code.editor.ts","../../../packages/src/constants/auto-format-rules.ts","../../../packages/src/plugins/autoformat/autoformat.plugin.ts","../../../packages/src/plugins/common/transforms.plugin.ts","../../../packages/src/plugins/normalizers/trailing-node.plugin.ts","../../../packages/src/plugins/common/block-card.plugin.ts","../../../packages/src/utils/is-inline.ts","../../../packages/src/plugins/common/move-selection.plugin.ts","../../../packages/src/plugins/common/get-fragment.plugin.ts","../../../packages/src/plugins/blockquote/blockquote.component.ts","../../../packages/src/plugins/blockquote/blockquote.plugin.ts","../../../packages/src/plugins/common/remove-void.plugin.ts","../../../packages/src/core/toolbar-item/base-toolbar-item.ts","../../../packages/src/components/toolbar-dropdown/toolbar-dropdown.component.ts","../../../packages/src/components/toolbar-dropdown/toolbar-dropdown.component.html","../../../packages/src/plugins/code/code.component.ts","../../../packages/src/plugins/code/code.component.html","../../../packages/src/plugins/code/code.plugin.ts","../../../packages/src/plugins/normalizers/remove-empty-nodes.ts","../../../packages/src/plugins/link/link.types.ts","../../../packages/src/plugins/link/link.editor.ts","../../../packages/src/plugins/link/hover/link-hover.component.ts","../../../packages/src/plugins/link/hover/link-hover.component.html","../../../packages/src/plugins/link/edit/link-edit.component.ts","../../../packages/src/plugins/link/edit/link-edit.component.html","../../../packages/src/plugins/link/link.component.ts","../../../packages/src/plugins/link/link.plugin.ts","../../../packages/src/components/column-resize/column-resize-notifier.ts","../../../packages/src/components/column-resize/event-dispatcher.ts","../../../packages/src/plugins/table/utils/get-select-cell-node.ts","../../../packages/src/plugins/table/utils/merge-cell.ts","../../../packages/src/plugins/table/table.store.ts","../../../packages/src/constants/color-select.ts","../../../packages/src/plugins/table/utils/split-cell.ts","../../../packages/src/plugins/table/utils/set-menu-cell-invisibility.ts","../../../packages/src/plugins/table/components/toolbar/table-options.component.ts","../../../packages/src/plugins/table/components/toolbar/table-toolbar.component.ts","../../../packages/src/plugins/table/components/toolbar/table-toolbar.component.html","../../../packages/src/plugins/table/utils/is-virtual-key.ts","../../../packages/src/components/contextmenu/contextmenu.component.ts","../../../packages/src/components/contextmenu/contextmenu.component.html","../../../packages/src/services/table-contextmenu.service.ts","../../../packages/src/plugins/table/table.service.ts","../../../packages/src/constants/selector.ts","../../../packages/src/plugins/table/components/insert-mark/insert-mark.component.ts","../../../packages/src/plugins/table/components/insert-mark/insert-mark.component.html","../../../packages/src/components/column-resize/selectors.ts","../../../packages/src/components/column-resize/column-resize.directive.ts","../../../packages/src/plugins/table/components/table.component.ts","../../../packages/src/plugins/table/components/table.component.html","../../../packages/src/plugins/table/transforms/clear-table-node.ts","../../../packages/src/plugins/table/utils/calc-anchor-position.ts","../../../packages/src/plugins/table/components/row/row.component.ts","../../../packages/src/components/column-resize/resizing.store.ts","../../../packages/src/components/column-resize/resize-ref.ts","../../../packages/src/components/column-resize/overlay-handle.component.ts","../../../packages/src/plugins/table/utils/get-base-height.ts","../../../packages/src/plugins/table/components/td/td.component.ts","../../../packages/src/plugins/table/components/td/td.component.html","../../../packages/src/plugins/table/utils/normalize-table.ts","../../../packages/src/components/table-select/table-select.component.ts","../../../packages/src/components/table-select/table-select.component.html","../../../packages/src/plugins/table/toolbar-item.component.ts","../../../packages/src/plugins/table/table.plugin.ts","../../../packages/src/plugins/normalizers/insert-paragraph-nodes.ts","../../../packages/src/plugins/deserializers/deserialize-html.plugin.ts","../../../packages/src/components/toolbar-item/toolbar-item.component.ts","../../../packages/src/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.ts","../../../packages/src/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.html","../../../packages/src/plugins/quick-insert/quick-insert.editor.ts","../../../packages/src/plugins/quick-insert/quick-insert.plugin.ts","../../../packages/src/plugins/soft-break/soft-break.plugin.ts","../../../packages/src/plugins/inline-code/inline-code.component.ts","../../../packages/src/plugins/inline-code/inline-code.plugin.ts","../../../packages/src/plugins/indent/indent.editor.ts","../../../packages/src/plugins/indent/on-keydown-indent.ts","../../../packages/src/plugins/indent/indent.plugin.ts","../../../packages/src/plugins/font-size/font-size.editor.ts","../../../packages/src/plugins/vertical-align/toolbar-item.component.ts","../../../packages/src/plugins/vertical-align/toolbar-item.component.html","../../../packages/src/plugins/vertical-align/vertical-align.editor.ts","../../../packages/src/plugins/paint-format/paint-format.editor.ts","../../../packages/src/plugins/color/color.editor.ts","../../../packages/src/plugins/color/toolbar-item.component.ts","../../../packages/src/plugins/color/color.plugin.ts","../../../packages/src/plugins/index.ts","../../../packages/src/shortcuts/mark.ts","../../../packages/src/shortcuts/index.ts","../../../packages/src/components/toolbar/toolbar.component.ts","../../../packages/src/components/toolbar/toolbar.component.html","../../../packages/src/components/inline-toolbar/inline-toolbar.component.ts","../../../packages/src/plugins/quick-insert/components/quick-insert.component.ts","../../../packages/src/plugins/quick-insert/components/quick-insert.component.html","../../../packages/src/pipes.ts","../../../packages/src/components/template/template.component.ts","../../../packages/src/components/template/template.component.html","../../../packages/src/editor.component.ts","../../../packages/src/editor.component.html","../../../packages/src/components/column-resize/column-resize.module.ts","../../../packages/src/components/toolbar-group/toolbar-group.component.ts","../../../packages/src/components/toolbar-group/toolbar-group.component.html","../../../packages/src/editor.module.ts","../../../packages/src/services/toolbar.service.ts","../../../packages/src/public-api.ts","../../../packages/src/worktile-theia.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const PICTURE_ACCEPTED_UPLOAD_MIME = ['image/png', 'image/jpeg', 'image/gif', 'image/bmp'];\nexport const PICTURE_ACCEPTED_UPLOAD_SIZE = 20;\nexport const A_TAG_REL_ATTR = 'noopener noreferrer nofollow external ugc';\nexport const LINK_DEFAULT_TEXT = '链接';\nexport const TAB_SPACE = ' ';\nexport const CLIPBOARD_FORMAT_KEY = 'x-theia-fragment';\nexport const DEFAULT_SCROLL_CONTAINER = '.the-editable-container';\nexport const ELEMENT_UNIQUE_ID = 'key';\nexport const ZERO_WIDTH_CHAR = '\\u200B';\n","import { CustomElementKinds } from '../custom-types';\n\nexport enum ElementKinds {\n image = 'image',\n paragraph = 'paragraph',\n headingList = 'heading-list',\n heading_1 = 'heading-one',\n heading_2 = 'heading-two',\n heading_3 = 'heading-three',\n heading_4 = 'heading-four',\n heading_5 = 'heading-five',\n heading_6 = 'heading-six',\n numberedList = 'numbered-list',\n bulletedList = 'bulleted-list',\n listItem = 'list-item',\n checkItem = 'check-item',\n table = 'table',\n tableRow = 'table-row',\n tableCell = 'table-cell',\n tableContent = 'paragraph',\n code = 'code',\n blockquote = 'block-quote',\n hr = 'hr',\n link = 'link',\n default = 'paragraph',\n inlineCode = 'inline-code',\n indent = 'indent'\n}\n\nexport enum Alignment {\n left = 'left',\n center = 'center',\n right = 'right'\n}\n\nexport enum VerticalAlignment {\n top = 'top',\n middle = 'middle',\n bottom = 'bottom'\n}\n\nexport enum LayoutTypes {\n wrapLeft = 'wrap-left',\n wrapRight = 'wrap-right'\n}\n\nexport enum FontSizes {\n 'fontSize12' = '12',\n 'fontSize13' = '13',\n 'fontSize14' = '14',\n 'fontSize15' = '15',\n 'fontSize16' = '16',\n 'fontSize18' = '18',\n 'fontSize20' = '20',\n 'fontSize24' = '24',\n 'fontSize28' = '28',\n 'fontSize32' = '32',\n 'fontSize40' = '40',\n 'fontSize48' = '48'\n}\n\nexport const FontSizeTypes = [\n FontSizes.fontSize12,\n FontSizes.fontSize13,\n FontSizes.fontSize14,\n FontSizes.fontSize15,\n FontSizes.fontSize16,\n FontSizes.fontSize20,\n FontSizes.fontSize24,\n FontSizes.fontSize28,\n FontSizes.fontSize32,\n FontSizes.fontSize40,\n FontSizes.fontSize48\n];\n\nexport enum Indents {\n indentRight = 'indent-right',\n indentLeft = 'indent-left'\n}\n\nexport enum MarkTypes {\n bold = 'bold',\n italic = 'italic',\n underline = 'underlined',\n strike = 'strike',\n color = 'color',\n backgroundColor = 'background-color',\n fontSize = 'font-size',\n codeLine = 'code-line'\n}\n\nexport enum ToolbarActionTypes {\n split = 'split',\n undo = 'undo',\n redo = 'redo',\n paintformat = 'paintformat',\n clean = 'clean',\n alignType = 'align-type',\n alignLeft = 'align-left',\n alignCenter = 'align-center',\n alignRight = 'align-right',\n verticalAlign = 'vertical-align',\n verticalAlignTop = 'vertical-align-top',\n verticalAlignMiddle = 'vertical-align-middle',\n verticalAlignBottom = 'vertical-align-bottom',\n headingList = 'heading-list',\n tableRemove = 'table-remove',\n tableDeleteRows = 'table-delete-rows',\n tableDeleteColumns = 'table-delete-columns'\n}\n\nexport const MarkProps: Array<MarkTypes> = [\n MarkTypes.backgroundColor,\n MarkTypes.bold,\n MarkTypes.color,\n MarkTypes.italic,\n MarkTypes.strike,\n MarkTypes.underline,\n MarkTypes.fontSize,\n MarkTypes.codeLine\n];\n\nexport const THE_INLINE_TOOLBAR_TYPES: Array<ElementKinds> = [ElementKinds.default, ElementKinds.listItem, ElementKinds.checkItem];\n\nexport const STANDARD_HEADING_TYPES: CustomElementKinds[] = [\n ElementKinds.heading_1,\n ElementKinds.heading_2,\n ElementKinds.heading_3,\n ElementKinds.heading_4\n];\n\nexport const HEADING_TYPES: CustomElementKinds[] = [...STANDARD_HEADING_TYPES, ElementKinds.heading_5, ElementKinds.heading_6];\n\nexport const ALIGN_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.default, ElementKinds.listItem, ElementKinds.image, ...HEADING_TYPES];\n\nexport const CONTAINER_BLOCKS: CustomElementKinds[] = [ElementKinds.blockquote, ElementKinds.tableCell];\n\nexport const LIST_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.numberedList, ElementKinds.bulletedList];\n\nexport const VOID_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.image, ElementKinds.hr];\n\nexport const BLOCK_DELETE_BACKWARD_TYPES: CustomElementKinds[] = [ElementKinds.tableCell];\n\nexport const DISABLED_OPERATE_TYPES: CustomElementKinds[] = [ElementKinds.code, ElementKinds.hr];\n","export enum ErrorCodes {\r\n UNKNOW_ERROR = 1000,\r\n IMAGE_ERR_MIME_FORMAT = 1001,\r\n IMAGE_ERR_SIZE_LIMIT = 1002\r\n}\r\n","export const DEFAULT_LANGUAGE = {\n showName: 'JavaScript',\n value: 'javascript'\n};\n\nexport const CODE_MODES = [\n {\n showName: 'Plain Text',\n value: ''\n },\n {\n showName: 'C',\n value: 'text/x-csrc'\n },\n {\n showName: 'C#',\n value: 'text/x-csharp'\n },\n {\n showName: 'C++',\n value: 'text/x-c++src'\n },\n {\n showName: 'C-like',\n value: 'clike'\n },\n {\n showName: 'CSS',\n value: 'css'\n },\n {\n showName: 'Dart',\n value: 'dart'\n },\n {\n showName: 'Django',\n value: 'django'\n },\n {\n showName: 'Dockerfile',\n value: 'dockerfile'\n },\n {\n showName: 'Go',\n value: 'go'\n },\n {\n showName: 'HTML',\n value: 'htmlmixed'\n },\n {\n showName: 'Java',\n value: 'text/x-java'\n },\n DEFAULT_LANGUAGE,\n {\n showName: 'Markdown',\n value: 'markdown'\n },\n {\n showName: 'Nginx',\n value: 'nginx'\n },\n {\n showName: 'Python',\n value: 'python'\n },\n {\n showName: 'PHP',\n value: 'php'\n },\n {\n showName: 'Shell',\n value: 'shell'\n },\n {\n showName: 'SQL',\n value: 'sql'\n },\n {\n showName: 'Swift',\n value: 'swift'\n },\n {\n showName: 'TypeScript',\n value: 'text/typescript'\n }\n];\n\nexport const CODEMIRROR_PADDING_TOP = 10;\n","import { ComponentType } from 'slate-angular';\nimport { InjectionToken } from '@angular/core';\nimport { ElementKinds, MarkTypes } from './node-types';\nimport { ToolbarItem, ToolbarKey } from '../interfaces';\nimport { ToolbarActionTypes, STANDARD_HEADING_TYPES } from '../constants/node-types';\nimport type { TheToolbarGroupComponent } from '../components/toolbar-group/toolbar-group.component';\n\nexport const TheToolbarGroupToken = new InjectionToken<ComponentType<TheToolbarGroupComponent>>('the-toolbar-group-token');\n\nexport enum DropdownMode {\n icon = 'icon-mode',\n text = 'text-mode'\n}\n\nexport enum ToolbarItemMode {\n horizontal,\n vertical\n}\n\nexport const DefaultGlobalToolbarDefinition: ToolbarKey[] = [\n ElementKinds.headingList,\n ToolbarActionTypes.split,\n MarkTypes.bold,\n MarkTypes.italic,\n MarkTypes.underline,\n MarkTypes.strike,\n ElementKinds.inlineCode,\n MarkTypes.color,\n MarkTypes.backgroundColor,\n ToolbarActionTypes.split,\n ToolbarActionTypes.alignType,\n ToolbarActionTypes.verticalAlign,\n ToolbarActionTypes.split,\n ElementKinds.numberedList,\n ElementKinds.bulletedList,\n ToolbarActionTypes.split,\n ElementKinds.link,\n ElementKinds.image,\n ElementKinds.table,\n ElementKinds.blockquote,\n ElementKinds.code\n];\n\nexport const DefaultInlineToolbarDefinition: ToolbarKey[] = [\n ToolbarActionTypes.clean,\n ToolbarActionTypes.split,\n MarkTypes.bold,\n MarkTypes.italic,\n MarkTypes.underline,\n MarkTypes.strike,\n ElementKinds.inlineCode,\n MarkTypes.color,\n MarkTypes.backgroundColor,\n ToolbarActionTypes.split,\n ToolbarActionTypes.alignType,\n ToolbarActionTypes.split,\n ElementKinds.link\n];\n\nexport const DefaultQuickToolbarDefinition: ToolbarKey[] = [\n ...STANDARD_HEADING_TYPES,\n ToolbarActionTypes.split,\n ElementKinds.numberedList,\n ElementKinds.bulletedList,\n ToolbarActionTypes.split,\n ElementKinds.link,\n ElementKinds.image,\n ElementKinds.table,\n ElementKinds.blockquote,\n ElementKinds.hr,\n ElementKinds.code\n];\n\nexport const ToolbarMoreGroup: ToolbarItem = {\n key: 'more',\n icon: 'more'\n};\n","import { ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { BaseTextComponent } from 'slate-angular';\nimport { MarkTypes } from '../../constants';\n\n@Component({\n selector: 'span[theText]',\n template: `<slate-leaves [context]=\"context\" [viewContext]=\"viewContext\"></slate-leaves>`,\n host: {\n 'data-slate-node': 'text'\n }\n})\nexport class TheTextComponent extends BaseTextComponent {\n constructor(public elementRef: ElementRef, public renderer2: Renderer2, cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n excludes = ['color', 'font-size', 'background-color', 'text'];\n attributes = [];\n\n applyTextMark() {\n this.attributes.forEach(attr => {\n this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);\n });\n this.attributes = [];\n for (const key in this.text) {\n if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key) && !!this.text[key]) {\n const attr = `the-${key}`;\n this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');\n this.attributes.push(attr);\n }\n }\n\n const fontSize = this.text[MarkTypes.fontSize];\n this.renderer2.setAttribute(this.elementRef.nativeElement, `the-${MarkTypes.fontSize}`, fontSize ? fontSize : null);\n\n if (this.text[MarkTypes.color]) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');\n }\n\n if (this.text[MarkTypes.backgroundColor]) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'background-color', this.text[MarkTypes.backgroundColor]);\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'background-color');\n }\n }\n\n onContextChange() {\n super.onContextChange();\n this.applyTextMark();\n }\n}\n","import { Component, OnInit } from '@angular/core';\r\nimport { AngularEditor, BaseElementComponent } from 'slate-angular';\r\nimport { Editor, Element } from 'slate';\r\n\r\n@Component({\r\n selector: 'TheBaseElementComponent',\r\n template: ''\r\n})\r\nexport class TheBaseElementComponent<T extends Element = Element, K extends AngularEditor = Editor>\r\n extends BaseElementComponent<T, K>\r\n implements OnInit\r\n{\r\n ngOnInit() {\r\n this.context.attributes['data-slate-key'] = this.context.element.key as string;\r\n super.ngOnInit();\r\n const blockClass = this.editor.isInline(this.element) ? 'slate-inline-block' : 'slate-block';\r\n this.nativeElement.classList.add(`slate-element-${this.element.type}`, blockClass);\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, HostBinding } from '@angular/core';\nimport { TheBaseElementComponent } from '../../interfaces/view-base';\n\n@Component({\n selector: '[theDefaultElement]',\n template: '<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheDefaultElementComponent extends TheBaseElementComponent {\n @HostBinding('attr.the-indent')\n get indent() {\n return this.element?.indent;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Ancestor, Range, Path, Point, Node, Span, NodeEntry, Editor, Element, Text } from 'slate';\nimport { AngularEditor, SlatePlaceholder, ViewType } from 'slate-angular';\nimport { HistoryEditor } from 'slate-history';\nimport { ElementOptionsInfo } from './valid-children-types';\nimport { Predicate } from '../utils/match';\nimport { ToolbarOption } from './toolbar';\nimport { CustomElementKinds } from '../custom-types';\nimport { FontSizes } from '../constants';\nimport { ThePlugin } from './plugins';\nimport { OverrideByKey, NestedStructureByKey } from './utility';\n\nexport interface TheEditor extends AngularEditor, HistoryEditor {\n [key: string]: any;\n options: TheOptions;\n plugins: ThePlugin[];\n disabled: boolean;\n pluginsByKey: OverrideByKey;\n nestedStructureByKey: NestedStructureByKey;\n extraElementOptions: ElementOptionsInfo[];\n renderElement: (element: Element) => ViewType;\n renderLeaf: (text: Text) => ViewType;\n isContainer: (element: Element) => boolean;\n}\n\nexport const TheEditor = {\n ...AngularEditor\n};\n\nexport enum TheDataMode {\n json = 'json',\n html = 'html'\n}\n\nexport enum TheMode {\n default = 'default',\n print = 'print'\n}\n\nexport class TheModeConfig {\n mode: TheMode;\n}\n\nexport const THE_MODE_TOKEN = new InjectionToken<TheModeConfig>('the-mode');\n\nexport const THE_MODE_PROVIDER = {\n provide: THE_MODE_TOKEN,\n useValue: {\n mode: TheMode.default\n }\n};\n\nexport interface TheOptions {\n mode?: TheDataMode;\n readonly?: boolean;\n disabled?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n placeholderDecorate?: (editor: Editor) => SlatePlaceholder[];\n inlineToobarVisible?: boolean;\n quickInsertVisible?: boolean;\n scrollContainer?: string;\n maxHeight?: number;\n fontSize?: FontSizes;\n richMedia?: boolean;\n toolbar?: ToolbarOption;\n disablePlugins?: string[];\n extraElementOptions?: ElementOptionsInfo[];\n}\n\nexport type NodeMatch<T = Node> = Predicate<T>;\n\nexport interface MatchOptions<T = Node> {\n match?: NodeMatch<T>;\n block?: boolean;\n}\n\nexport interface IndentOptions {\n indentTypes?: CustomElementKinds[];\n disabledIndentTypes?: CustomElementKinds[];\n}\n\nexport interface EditorAboveOptions<T = Ancestor> extends MatchOptions<T> {\n at?: Range | Path | Point;\n mode?: 'highest' | 'lowest';\n voids?: boolean;\n}\n\nexport interface EditorNodesOptions {\n at?: Range | Path | Point | Span;\n match?: (node: Node) => boolean;\n mode?: 'highest' | 'lowest' | 'all';\n universal?: boolean;\n reverse?: boolean;\n voids?: boolean;\n}\n\nexport interface WrapOptions {\n at?: Path | Point | Range;\n match?: (node: Node) => boolean;\n mode?: 'highest' | 'lowest' | 'all';\n split?: boolean;\n voids?: boolean;\n}\n\nexport interface EditorParentOptions {\n depth?: number | undefined;\n edge?: 'start' | 'end' | undefined;\n}\n\nexport interface QueryOptions {\n // Condition on the node to be valid.\n filter?: (entry: NodeEntry<Node>) => boolean;\n // List of types that are valid. If empty or undefined - allow all.\n allow?: string[];\n // List of types that are invalid.\n exclude?: string[];\n}\n\nexport interface DomEventDataInfo {\n inputType?: string;\n key?: string;\n text?: string;\n json?: Node[];\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Editor } from 'slate';\nimport { ElementKinds, MarkTypes, DropdownMode } from '../constants';\nimport { PluginKey } from './plugins';\n\nexport type ToolbarKey = MarkTypes | ElementKinds | string;\n\nexport enum ToolbarItemType {\n default = 'default',\n dropdown = 'dropdown'\n}\n\nexport enum ToolbarAlignment {\n left = 'start',\n center = 'center',\n right = 'end'\n}\n\nexport type ToolbarDefinition = {\n global?: string[];\n inline?: string[];\n quick?: string[];\n};\n\ninterface ToolbarItemBase {\n key: ToolbarKey;\n pluginKey?: PluginKey; // 关联的 pluginKey , 用于根据 toolbarItem 精准查询 plugin,进而获取工具栏相关的配置\n execute?: (editor: Editor) => void;\n active?: (editor: Editor) => boolean | string;\n disable?: (editor: Editor) => boolean;\n transformToolbar?: (editor: Editor) => ToolbarDefinition | void;\n styles?: { [key: string]: string };\n includes?: (ToolbarKey | ToolbarItem)[];\n}\n\nexport interface CustomizeToolbarItem extends ToolbarItemBase {\n iconComponent?: ComponentType<any>;\n quickItemComponent?: ComponentType<any>;\n type?: ToolbarItemType;\n dropdownMode?: DropdownMode;\n dropdownItemKey?: ToolbarKey;\n dropdownFixedIcon?: boolean;// 固定的 icon / 选项无选中状态:缩进插件\n}\n\nexport interface DefaultToolbarItem extends ToolbarItemBase {\n icon?: string;\n name?: string;\n shortcutKey?: string;\n type?: ToolbarItemType;\n}\n\nexport type ToolbarItem = CustomizeToolbarItem & DefaultToolbarItem;\n\nexport type ToolbarEntity = {\n global?: ToolbarItem[];\n inline?: ToolbarItem[];\n quick?: ToolbarItem[];\n};\n\nexport interface ToolbarInitOption {\n toolbarDefinition: ToolbarDefinition;\n toolbarEntity: ToolbarEntity;\n toolbarOperations: Map<string, ToolbarItem>;\n}\n\nexport interface ToolbarOption extends ToolbarDefinition {\n align?: ToolbarAlignment;\n}\n\nexport interface ToolbarItemsComposeReturn {\n items: ToolbarItem[];\n group: ToolbarItem[];\n}\n","import { Observable } from 'rxjs';\nimport { UploadFileEntity, FileUploadingItem } from './upload';\nimport { InjectionToken } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { Alignment, LayoutTypes } from '../constants';\nimport { ToolbarItem } from './toolbar';\n\nexport interface ImageEntry {\n file?: File;\n name?: string;\n width?: number;\n height?: number;\n thumbUrl?: SafeUrl | string;\n originUrl?: SafeUrl | string;\n align?: Alignment;\n layout?: LayoutTypes;\n reSized?: boolean;\n}\n\nexport interface LayoutOption extends ToolbarItem {\n handle?: (e: MouseEvent, key: Alignment | LayoutTypes) => void;\n}\n\nexport interface TheImageUploaderService {\n uploadFileHandle: (files: any) => Observable<UploadFileEntity[]>;\n getUploadingItems$: () => Observable<FileUploadingItem[]>;\n}\n\nexport const THE_UPLOAD_SERVICE_TOKEN = new InjectionToken<TheImageUploaderService>('THE_UPLOAD_SERVICE_TOKEN');\n","import { ElementKinds, HEADING_TYPES } from '../constants/node-types';\nimport { CustomElementKinds } from '../custom-types';\n\nexport interface ElementOptionsInfo {\n type: CustomElementKinds;\n inValidChildrenTypes: CustomElementKinds[];\n isIndivisible?: boolean;\n isSecondaryContainer?: boolean;\n}\nexport const inValidTypes: CustomElementKinds[] = [\n ElementKinds.table,\n ElementKinds.tableCell,\n ElementKinds.blockquote,\n ElementKinds.hr,\n ElementKinds.code\n];\n\nexport const DefaultElementOptions: ElementOptionsInfo[] = [\n {\n type: ElementKinds.bulletedList,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.numberedList,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.listItem,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.blockquote,\n inValidChildrenTypes: inValidTypes\n },\n {\n type: ElementKinds.table,\n inValidChildrenTypes: [ElementKinds.table]\n },\n {\n type: ElementKinds.tableCell,\n isSecondaryContainer: true,\n inValidChildrenTypes: [ElementKinds.table, ElementKinds.tableCell]\n }\n];\n","export enum PluginKeys {\n list = 'list',\n numberedList = 'numbered-list',\n bulletedList = 'bulleted-list',\n checkItem = 'check-item',\n link = 'link',\n blockCard = 'block-card',\n indent = 'indent',\n table = 'table',\n image = 'image',\n code = 'code',\n heading = 'heading',\n blockquote = 'block-quote',\n inlineCode = 'inline-code',\n color = 'select-color',\n fontSize = 'font-size',\n mark = 'mark',\n hr = 'hr',\n align = 'align',\n verticalAlign = 'vertical-align',\n softBreak = 'soft-break',\n nodeID = 'node-id',\n resetType = 'reset-type',\n removeVoid = 'remove-void',\n removeEmpty = 'remove-empty',\n theHistory = 'the-history',\n autoInsertData = 'auto-insert-data',\n autoFormat = 'auto-format',\n transforms = 'transforms',\n moveSelection = 'move-selection',\n trailingNode = 'trailing-node',\n insertParagraphNodes = 'insert-paragraph-nodes',\n getFragment = 'get-fragment',\n deserializeHtml = 'deserialize-html',\n deserializeMd = 'deserialize-md',\n quickInsert = 'quick-insert',\n paintFormat = 'paint-format'\n}\n\n/**\n * 通过 key 存储插件的唯一 key。\n */\nexport type PluginKey = PluginKeys | string;\n\nexport interface TheiaPluginKey {\n /**\n * 用于在 `editor.pluginsByKey` 中按键存储插件的属性。\n */\n key?: PluginKey;\n}\n","import { Injectable, NgZone, ViewContainerRef } from '@angular/core';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { TheOptions } from '../interfaces/editor';\nimport { FontSizes, MarkTypes } from '../constants/node-types';\n\nexport interface TheContextOptions {\n theOptions: TheOptions;\n width?: number;\n nativeElement: HTMLElement;\n viewContainerRef: ViewContainerRef;\n}\n\ninterface PaintFormatStatus {\n isActive: boolean;\n marks: { [key in MarkTypes]?: any };\n}\n\n@Injectable()\nexport class TheContextService {\n private options: TheContextOptions;\n\n uploadingFiles: { url: string; file: File }[] = [];\n\n public paintFormatStatus: PaintFormatStatus = {\n isActive: false,\n marks: {}\n };\n\n public onMouseUp$: Observable<MouseEvent>;\n\n public onMouseMove$: Observable<MouseEvent>;\n\n public onMouseDown$: Observable<MouseEvent>;\n\n public uploadingStatus$ = new Subject<boolean>();\n\n constructor(private ngZone: NgZone) {\n this.ngZone.runOutsideAngular(() => {\n this.onMouseUp$ = fromEvent<MouseEvent>(window, `mouseup`);\n this.onMouseMove$ = fromEvent<MouseEvent>(window, `mousemove`);\n this.onMouseDown$ = fromEvent<MouseEvent>(window, `mousedown`);\n });\n }\n\n public initialize(options: TheContextOptions) {\n this.options = options;\n }\n\n public getOptions() {\n if (!this.options.width) {\n const firstElementChild = this.getFirstElementChild();\n this.options.width = firstElementChild.offsetWidth;\n }\n return this.options;\n }\n\n public getTheOptions() {\n return this.options.theOptions;\n }\n\n public getDefaultFontSize() {\n return this.options.theOptions?.fontSize || FontSizes.fontSize14;\n }\n\n public getEditableElement() {\n return this.options.nativeElement.querySelector('.the-editor-typo');\n }\n\n public getFirstElementChild() {\n const editableElement = this.getEditableElement();\n return editableElement?.firstElementChild as HTMLElement;\n }\n\n public layoutDefaultWidth() {\n const firstElementChild = this.getFirstElementChild();\n return 0.48 * firstElementChild.clientWidth;\n }\n\n addUploadingFiles(file: { url: string; file: File }) {\n this.uploadingFiles.push(file);\n }\n\n removeUploadImage(file: { url: string; file: File }) {\n this.uploadingFiles.splice(\n this.uploadingFiles.findIndex(item => item.url === file.url),\n 1\n );\n }\n}\n","import { Component, OnInit, Input, ChangeDetectionStrategy, HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ColorType, ColorSelectOption } from '../../constants/color-select';\n\n@Component({\n selector: 'the-color-select',\n templateUrl: 'color-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheColorSelectComponent implements OnInit {\n @Input() selectedColor: string;\n\n @Input() selectAction: (color: ColorType) => void;\n\n @Input() showCustom = true;\n\n @Input() colors: string[];\n\n @Input() option: ColorSelectOption;\n\n color: string;\n\n customColor: string;\n\n selectColors: { rowValue: { value: string; classMaps: object }[]; tickColor: string }[] = [];\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.color-container').contains(event.target as HTMLElement)) {\n this.popoverRef.close();\n }\n }\n\n constructor(private popoverRef: ThyPopoverRef<TheColorSelectComponent>) {}\n\n ngOnInit() {\n if (this.selectedColor) {\n this.customColor = this.selectedColor.slice(1);\n }\n this.buildColors();\n }\n\n @HostListener('mousedown', ['$event'])\n handleMouseDown(event: MouseEvent) {\n event.stopPropagation();\n }\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: MouseEvent) {\n event.stopPropagation();\n }\n\n buildColors() {\n const rows = parseInt((this.colors.length / this.option.perRowColorNumbers).toFixed(0), 10);\n for (let i = 0; i < rows; i++) {\n this.selectColors.push({\n rowValue: [\n ...this.colors.slice(i * this.option.perRowColorNumbers, (i + 1) * this.option.perRowColorNumbers).map(color => {\n return {\n value: color,\n classMaps: {\n selected: color === this.selectedColor,\n white: color === '#FFFFFF',\n 'mr-0': i === this.option.perRowColorNumbers - 1,\n 'mb-0': i === this.selectColors.length - 1,\n 'special-color': color === this.option.specialColor\n }\n };\n })\n ],\n tickColor: this.option.rowOptions && this.option.rowOptions[i + 1]\n });\n }\n }\n\n _selectColor(event: MouseEvent, color: string) {\n event.preventDefault();\n event.stopPropagation();\n if (this.option.specialColor && color === this.option.specialColor) {\n color = '';\n }\n this.selectedColor = color;\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n\n colorChange(isEnter: boolean) {\n this.customColor = this.customColor.toLocaleUpperCase();\n this.selectedColor = '#' + this.customColor;\n if (this.customColor.length === 3) {\n this.selectedColor = '#' + this.customColor.replace(/(.)/g, '$1$1');\n }\n if (this.selectedColor.length === 7 && this.selectedColor !== this.option.specialColor) {\n this.selectColors = [];\n this.buildColors();\n }\n if (isEnter) {\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n }\n customInputColorEnter(event: KeyboardEvent) {\n event.stopPropagation();\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n}\n","<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon thyIconName=\"check\" [ngStyle]=\"{ color: row.tickColor }\"></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div *ngIf=\"option.showCustom\" class=\"select-color\">\n <span class=\"color\" [ngStyle]=\"{ background: selectedColor }\"></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { TheColorSelectComponent } from '../components/color-select/color-select.component';\nimport { ColorType, ColorSelectOption } from '../constants/color-select';\n\n@Injectable()\nexport class TheColorSelectService {\n backdropClosable = false;\n\n hasBackdrop = false;\n\n insideClosable = false;\n\n placement: ThyPlacement = 'bottomLeft';\n\n offset = 10;\n\n colorSelectRef: ThyPopoverRef<TheColorSelectComponent>;\n\n get isOpenColorSelect() {\n return this.colorSelectRef && this.colorSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover) {}\n\n toggleColorSelect(\n origin: HTMLElement,\n selectedColor: ColorType,\n colors: string[],\n option: ColorSelectOption,\n selectAction: (color: ColorType) => void,\n placement?: ThyPlacement,\n offset?: number\n ) {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n this.colorSelectRef = this.thyPopover.open(TheColorSelectComponent, {\n initialState: {\n selectedColor,\n selectAction,\n colors,\n option\n },\n origin,\n minWidth: 0,\n backdropClosable: this.backdropClosable,\n placement: placement || this.placement,\n offset: offset !== null ? offset : this.offset,\n hasBackdrop: this.hasBackdrop,\n insideClosable: this.insideClosable,\n panelClass: 'color-select-container'\n });\n return this.colorSelectRef;\n }\n\n closeColorSelect() {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n }\n}\n","export function idCreator(length = 5) {\r\n // remove numeral\r\n const $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/\r\n const maxPosition = $chars.length;\r\n let key = '';\r\n for (let i = 0; i < length; i++) {\r\n key += $chars.charAt(Math.floor(Math.random() * maxPosition));\r\n }\r\n return key;\r\n}\r\n","import { Element } from 'slate';\r\nimport { ElementKinds } from '../constants/node-types';\r\nimport { idCreator } from './id-creator';\r\n\r\nexport const createEmptyParagraph: () => Element = () => {\r\n return {\r\n type: ElementKinds.paragraph,\r\n key: idCreator(),\r\n children: [\r\n {\r\n text: ''\r\n }\r\n ]\r\n };\r\n};\r\n","import { Descendant } from 'slate';\r\nimport { TheiaConverter } from '@atinc/selene';\r\nimport { ElementKinds } from '../constants';\r\nimport { TheDataMode } from '../interfaces';\r\nimport { createEmptyParagraph } from './create-empty-paragraph';\r\n\r\nexport function plainToTheia(text: string): Descendant[] {\r\n if (typeof text !== 'string') {\r\n return text;\r\n }\r\n return text.split('\\n').map(i => {\r\n return {\r\n type: ElementKinds.paragraph,\r\n children: [\r\n {\r\n text: i\r\n }\r\n ]\r\n };\r\n });\r\n}\r\n\r\nexport function htmlToTheia(value: string): Descendant[] {\r\n if (typeof value === 'string') {\r\n const htmlDom = new DOMParser().parseFromString(value, 'text/html');\r\n return TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\r\n }\r\n return value;\r\n}\r\n\r\nexport function dataDeserialize(mode: TheDataMode, value: Descendant[] | string): Descendant[] {\r\n if (!value) {\r\n return [createEmptyParagraph()];\r\n }\r\n if (mode === TheDataMode.html) {\r\n if (typeof value !== 'string') {\r\n return value;\r\n }\r\n if (/<[^>]+>/.test(value)) {\r\n return htmlToTheia(value);\r\n }\r\n return plainToTheia(value);\r\n }\r\n return (value as Descendant[]) || [createEmptyParagraph()];\r\n}\r\n\r\nexport function dataSerializing(mode: TheDataMode, value: Descendant[]): string | Descendant[] {\r\n if (mode === TheDataMode.html) {\r\n return TheiaConverter.convertToHtml(value as any);\r\n }\r\n return value;\r\n}\r\n","import { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\n\nexport const THE_EDITOR_UUID = new WeakMap<Editor, string>();\n\nexport const THE_EDITOR_CONVERSION_HINT_REF: WeakMap<Editor, ThyPopoverRef<any>> = new WeakMap();\n\nexport const THE_EDITOR_QUICK_TOOLBAR_REF: WeakMap<Editor, ThyPopoverRef<any>> = new WeakMap();\n","import { Editor } from 'slate';\r\nimport { THE_EDITOR_UUID } from './weak-maps';\r\n\r\nexport const getEditorUUID = (editor: Editor) => {\r\n return THE_EDITOR_UUID.get(editor);\r\n};\r\n\r\nexport const setEditorUUID = (editor: Editor, uuid: string) => {\r\n THE_EDITOR_UUID.set(editor, uuid);\r\n};\r\n","import { Editor } from 'slate';\r\nimport { getEditorUUID } from './editor-uuid';\r\n\r\nexport const getToolbarClass = (editor: Editor) => {\r\n const uuid = getEditorUUID(editor);\r\n return `the-toolbar-${uuid}`;\r\n};\r\n","export const IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nexport const CONTROL_KEY = IS_MAC ? '⌘' : 'Ctrl';\n","import { Editor, Node, Text, Element, Range } from 'slate';\nimport { TheEditor } from '../interfaces';\nimport { Alignment, ElementKinds } from '../constants/node-types';\n\n/**\n * whether the current node is a clean paragraph\n * @param editor\n * @param text\n * @returns boolean\n */\nexport const isCleanEmptyParagraph = (editor: Editor) => {\n const isCollapsedCursor = TheEditor.isFocused(editor) && editor.selection && Range.isCollapsed(editor.selection);\n\n if (!isCollapsedCursor) {\n return false;\n }\n\n const block = Node.ancestor(editor, [editor.selection.anchor.path[0]]) as Element;\n \n return isPureEmptyParagraph(editor, block);\n};\n\nexport const isPureEmptyParagraph = (editor: Editor, block: Node) => {\n const textIndent = 'textIndent';\n const align = 'align';\n const hasTextIndent = block[textIndent];\n const alignValue = block[align];\n const hasIndent = block[ElementKinds.indent];\n\n if (\n Node.string(block) === '' &&\n Element.isElement(block) &&\n block.type === ElementKinds.paragraph &&\n block.children.length === 1 &&\n Text.isText(block.children[0]) &&\n !Editor.isVoid(editor, block) &&\n !hasIndent &&\n !hasTextIndent &&\n (!alignValue || alignValue === Alignment.left)\n ) {\n return true;\n }\n\n return false;\n};\n","import { DefaultElementOptions, ElementOptionsInfo } from '../interfaces';\n\nexport const mergeElementOptions = (elementOptions: ElementOptionsInfo[]) => {\n elementOptions = elementOptions.filter(item => item.inValidChildrenTypes.length > 0);\n const combinationData = [...DefaultElementOptions, ...elementOptions];\n const dataInfo = {};\n combinationData.forEach(item => {\n const { type, inValidChildrenTypes, isIndivisible, isSecondaryContainer } = item;\n if (!dataInfo[type]) {\n dataInfo[type] = {\n type,\n inValidChildrenTypes,\n isIndivisible,\n isSecondaryContainer\n };\n }\n dataInfo[type].inValidChildrenTypes = Array.from(new Set([...inValidChildrenTypes, ...dataInfo[type].inValidChildrenTypes]));\n });\n return dataInfo;\n};\n","import { Element } from 'slate';\nimport { DOMElement } from 'slate-angular';\nimport { Alignment } from '../constants';\n\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\nexport function coercePixelsFromCssValue(cssValue: string): number {\n const match = cssValue.match(/(\\d+(\\.\\d+)?)px/);\n if (match) {\n return Number(match[1]);\n }\n}\n\nexport function getElementWidth(element: HTMLElement) {\n // Optimization: Check style.width first as we probably set it already before reading\n // offsetWidth which triggers layout.\n return coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\n}\n\nexport function getElementHeight(element: HTMLElement) {\n return element.getBoundingClientRect().height;\n}\n\nexport function getColsTotalWidth(cols: HTMLTableColElement[]) {\n return cols.reduce((total, col) => {\n return total + getElementWidth(col);\n }, 0);\n}\n\nexport function getRowsTotalHeight(rows: HTMLTableRowElement[]) {\n return rows.reduce((total, row) => {\n return total + getElementHeight(row);\n }, 0);\n}\n\nexport function useElementStyle(el: HTMLElement, element: Element) {\n if (element.align) {\n el.style.textAlign = (element.align as string) || Alignment.left;\n }\n\n if (element.textIndent) {\n el.style.textIndent = element.textIndent + 'em';\n }\n\n if (element.verticalAlign) {\n el.style.verticalAlign = element.verticalAlign;\n }\n}\n\nexport function getElementClassByPrefix(el: DOMElement, prefix: string) {\n let matchClass = null;\n el.classList.forEach((value, key) => {\n if (value.includes(prefix)) {\n matchClass = value;\n }\n });\n return matchClass;\n}\n","import { Editor, Element, Text, Node } from 'slate';\nimport { CLIPBOARD_FORMAT_KEY, ELEMENT_UNIQUE_ID } from '../constants/default';\n\nexport const getStartBlock = (editor: Editor, fragment: Element) => {\n const firstChild = fragment.children && fragment.children[0];\n if (firstChild && !Editor.isInline(editor, firstChild) && !Text.isText(firstChild) && Element.isElement(firstChild)) {\n return getStartBlock(editor, firstChild);\n }\n return fragment;\n};\n\nexport const getEndBlock = (editor: Editor, fragment: Element) => {\n const lastChild = fragment.children && fragment.children[fragment.children.length - 1];\n if (lastChild && !Editor.isInline(editor, lastChild) && !Text.isText(lastChild) && Element.isElement(lastChild)) {\n return getEndBlock(editor, lastChild);\n }\n return fragment;\n};\n\nexport const extractFragment = (data: DataTransfer, deleteKey = ELEMENT_UNIQUE_ID) => {\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n if (fragment) {\n const decoded = decodeURIComponent(window.atob(fragment));\n let nodes = JSON.parse(decoded) as Element[];\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n // delete key to avoid duplicate keys\n if (deleteKey) {\n deleteElementKey(nodes, deleteKey);\n }\n return nodes;\n }\n return null;\n}\n\nexport function deleteElementKey(nodes: Node[], key: string) {\n nodes.forEach((node) => {\n if (node[key]) {\n delete node[key];\n }\n if (Element.isElement(node) && node.children) {\n deleteElementKey(node.children, key);\n }\n });\n return nodes;\n}\n\n/**\n * 过滤文本格式:颜色/背景色/字体大小\n * @param node \n */\nexport function filterTextFormat(node: Element) {\n node.children.forEach((child) => {\n if (Text.isText(child)) {\n if (child['color']) {\n delete child['color'];\n }\n if (child['background-color']) {\n delete child['background-color'];\n }\n if (child['font-size']) {\n delete child['font-size'];\n }\n } else {\n filterTextFormat(child);\n }\n });\n}\n","import { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { HistoryEditor } from 'slate-history';\n\nexport const autoFocus = (editor: Editor, isFocus: boolean) => {\n setTimeout(() => {\n if (editor && editor.children.length > 0 && isFocus) {\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.select(editor, Editor.start(editor, [0]));\n AngularEditor.focus(editor);\n });\n }\n });\n};\n","import { Editor } from 'slate';\r\nimport { AngularEditor } from 'slate-angular';\r\n\r\nexport const getEditableElementHeight = (editor: Editor) => {\r\n const editable = AngularEditor.toDOMNode(editor, editor);\r\n return editable.clientHeight;\r\n};\r\n","import { Editor } from 'slate';\r\nimport { getEditableElementHeight } from './get-editable-element-height';\r\n\r\nlet previousHeight = 0;\r\n\r\n/**\r\n * reset the sliding distance when the viewport position of the sliding\r\n * container coincides with the viewport position of the focus element\r\n */\r\nexport const autoScrollViewHandle = (editor: Editor, scrollContainer: string) => {\r\n const currentHeight = getEditableElementHeight(editor);\r\n const currentNodeElement = window.getSelection().focusNode.parentElement;\r\n const scrollContainerElement = currentNodeElement.closest(scrollContainer);\r\n\r\n // the added sliding distance is the height of the\r\n // current editing area minus the height of the last editing area\r\n const scrollHeight = currentHeight - previousHeight;\r\n\r\n if (scrollContainerElement && previousHeight !== 0 && scrollHeight > 0) {\r\n const focusBlockRect = currentNodeElement.getBoundingClientRect();\r\n const scrollContainerRect = scrollContainerElement.getBoundingClientRect();\r\n const bottom = scrollContainerRect.bottom - focusBlockRect.bottom;\r\n if (bottom < 30) {\r\n scrollContainerElement.scrollTop = scrollContainerElement.scrollTop + scrollHeight;\r\n }\r\n }\r\n previousHeight = currentHeight;\r\n};\r\n","import * as _lodash from 'lodash';\r\nexport const _ = _lodash;\r\n","import { _ } from '../../utils/lodash';\nimport { TheEditor, ThePlugin, WithThePlugin } from '../../interfaces';\n\n/**\n * 循环 plugins 到 editor.plugins 和 editor.pluginsByKey\n * 如果有 key 重复则进行覆盖\n */\nexport const flattenDeepPlugins = <T = {}>(editor: TheEditor, plugins?: ThePlugin<T>[]) => {\n if (!plugins) return;\n\n plugins.forEach((plugin: WithThePlugin) => {\n let p = _.cloneDeep(plugin);\n if (!p.options) p.options = {} as any;\n if (!p.nestedStructureByKey) p.nestedStructureByKey = {};\n\n editor.plugins.push(p);\n flattenDeepPlugins<T>(editor, p.plugins!);\n });\n};\n","import { TheEditor, ThePlugin } from '../../interfaces';\n\nexport const getPlugins = <T = {}>(editor: TheEditor): ThePlugin<T>[] => {\n return editor?.plugins ?? [];\n};\n","import { PluginKey, TheEditor, WithThePlugin } from '../../interfaces';\n\nexport const getPlugin = <P = {}, T = {}>(editor: TheEditor, key: PluginKey): WithThePlugin<T, P> =>\n editor.pluginsByKey[key] as WithThePlugin<T, P>;\n","import { PluginKey, TheEditor, ThePluginOption } from '../../interfaces';\nimport { getPlugin } from './get-plugin';\n\nexport const getPluginOptions = <P = {}, T = {}>(editor: TheEditor, key: PluginKey): ThePluginOption<P> =>\n getPlugin<P, T>(editor, key)?.options ?? ({} as ThePluginOption<P>);\n","import { isObject } from 'ngx-tethys/util';\nimport { OptionItem } from '../../interfaces/plugins';\n\nexport const mergeArray = <T>(origin: T[], source: T[]) => {\n if (!Array.isArray(source)) return source;\n\n for (let i = 0; i < source.length; i++) {\n const value = source[i] as OptionItem;\n if (isObject(value) && value?.key && origin.some((item: OptionItem) => item?.key === value?.key)) {\n let index = origin.findIndex((item: OptionItem) => item?.key === value?.key);\n origin[index] = { ...origin[index], ...value };\n continue;\n }\n if (origin.includes(source[i])) continue;\n origin.push(source[i]);\n }\n return origin;\n};\n","import { isObject } from 'ngx-tethys/util';\nimport { _ } from '../../utils/lodash';\nimport { NoInfer, OverrideByKey, ThePlugin } from '../../interfaces';\nimport { mergeArray } from './merge-array';\n\nexport const mergeOptions = <T = {}, P = {}>(plugin: ThePlugin<T, NoInfer<P>>, override: OverrideByKey) => {\n const { options } = plugin;\n const newOptions = options as unknown as P;\n for (let option in override.options) {\n if (Array.isArray(override.options[option]) && newOptions[option]) {\n newOptions[option] = mergeArray(newOptions[option], override.options[option]);\n continue;\n }\n if (isObject(override.options[option]) && newOptions[option]) {\n newOptions[option] = _.assign(newOptions[option], override.options[option]);\n continue;\n }\n newOptions[option] = override.options[option];\n }\n plugin.options = newOptions;\n};\n","import { TheEditor, WithThePlugin } from '../../interfaces';\n\nexport const combinePlugins = (editor: TheEditor): TheEditor => {\n // withOverrides\n editor.plugins.forEach((plugin: WithThePlugin) => {\n if (plugin.withOverrides) {\n editor = plugin.withOverrides(editor, plugin);\n }\n });\n return editor;\n};\n","import { _ } from '../../utils/lodash';\nimport { OverrideByKey, TheEditor, ThePlugin } from '../../interfaces';\nimport { mergeOptions } from './merge-options';\n\nexport const mergeDeepPlugins = <T = {}, P extends ThePlugin<T>[] = ThePlugin<T>[]>(editor: TheEditor, _plugins: P) => {\n _plugins.forEach(plugin => {\n if (plugin.overrideByKey) {\n const newPlugins = _plugins.filter(p => plugin.overrideByKey[p.key]);\n\n newPlugins.forEach(p => {\n if (editor.pluginsByKey[p.key]) {\n mergeOptions(p, plugin.overrideByKey[p.key] as OverrideByKey);\n }\n });\n }\n });\n};\n","import { TheEditor, ThePlugin, WithThePlugin } from '../../interfaces';\n\nexport const nestedStructureByKey = <T = {}>(editor: TheEditor, plugins?: ThePlugin<T>[]) => {\n // 如果有 key 重复则进行覆盖\n plugins.forEach((p: WithThePlugin) => {\n for (const key in p.nestedStructureByKey) {\n if (!editor.nestedStructureByKey[key]) {\n editor.nestedStructureByKey[key] = p.nestedStructureByKey[key];\n }\n }\n });\n};\n","import { TheEditor, ThePlugin, WithThePlugin } from '../../interfaces';\nimport { _ } from '../../utils/lodash';\n\nexport const pluginsByKey = <T = {}>(editor: TheEditor, plugins?: ThePlugin<T>[]) => {\n if (!plugins) return;\n\n plugins.forEach((p: WithThePlugin) => {\n if (!editor.pluginsByKey[p.key]) {\n editor.pluginsByKey[p.key] = p;\n }\n });\n};\n","import { Element, Text } from 'slate';\nimport { AngularEditor, ViewType } from 'slate-angular';\nimport { HistoryEditor } from 'slate-history';\nimport { combinePlugins, flattenDeepPlugins, mergeDeepPlugins, nestedStructureByKey, pluginsByKey } from './utils';\nimport { TheEditor, ThePlugin } from '../interfaces';\n\nexport const withTheia = <T extends AngularEditor & HistoryEditor & TheEditor>(editor: T, plugins: ThePlugin[] = []) => {\n let e = editor as TheEditor;\n\n e.renderElement = (element: Element): ViewType => null;\n e.renderLeaf = (text: Text): ViewType => null;\n e.isContainer = (value: Element) => false;\n e.extraElementOptions = [];\n e.disabled = false;\n\n e.plugins = [];\n e.pluginsByKey = {};\n e.nestedStructureByKey = {};\n\n // withOverridesByKey\n flattenDeepPlugins(e, plugins);\n\n // mount pluginsByKey\n pluginsByKey(e, e.plugins);\n\n // mount nestedStructureByKey\n nestedStructureByKey(e, e.plugins);\n\n // merge plugin to pluginByKey\n mergeDeepPlugins(e, e.plugins);\n\n e = combinePlugins(e);\n\n return e;\n};\n","import { _ } from '../utils/lodash';\nimport { NoInfer, OverrideByKey, ThePlugin } from '../interfaces';\n\nexport const createPluginFactory =\n <P = {}>(defaultPlugin: ThePlugin<{}, NoInfer<P>>) =>\n <T = {}>(override?: Partial<ThePlugin<T, NoInfer<P>>>, overrideByKey: OverrideByKey = {}): ThePlugin<T, NoInfer<P>> => {\n return _.cloneDeep(defaultPlugin);\n };\n","import { TheEditor, ToolbarDefinition, ToolbarEntity, ToolbarInitOption, ToolbarItem, ToolbarKey, ToolbarOption } from '../interfaces';\nimport { getToolbarClass } from '../utils';\nimport { DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition, DefaultQuickToolbarDefinition } from '../constants/toolbar';\n\nconst toolbarInitialize = (\n toolbarItems: ToolbarItem[],\n global: string[] = DefaultGlobalToolbarDefinition,\n inline: string[] = DefaultInlineToolbarDefinition,\n quick: string[] = DefaultQuickToolbarDefinition\n): ToolbarInitOption => {\n const toolbarDefinition = {\n global,\n inline,\n quick\n };\n\n const toolbarOperations: Map<string, ToolbarItem> = new Map<string, ToolbarItem>();\n toolbarItems.forEach(i => toolbarOperations.set(i.key, i));\n\n const toolbarEntity = nextToolbarEntity(toolbarDefinition, toolbarOperations);\n\n return {\n toolbarDefinition,\n toolbarOperations,\n toolbarEntity\n };\n};\n\nconst nextToolbarEntity = (toolbarDefinition: ToolbarDefinition, toolbarItems: Map<string, ToolbarItem>): ToolbarEntity => {\n const entity: ToolbarEntity = {};\n for (const defKey in toolbarDefinition) {\n entity[defKey] = getToolbarItemByKeys(toolbarDefinition[defKey], toolbarItems);\n }\n return entity;\n};\n\nconst getToolbarItemByKeys = (keys: ToolbarKey[], toolbarItems: Map<string, ToolbarItem>): ToolbarItem[] => {\n const items: ToolbarItem[] = [];\n keys.forEach((key: ToolbarKey) => {\n if (key === `split`) {\n items.push({ key: `split` });\n return;\n }\n const item = toolbarItems.get(key);\n if (item && item.includes) {\n items.push({ ...item, includes: getToolbarItemByKeys(item.includes as ToolbarKey[], toolbarItems) });\n return;\n }\n if (item) {\n items.push(item);\n }\n });\n return items;\n};\n\nexport const createToolbar = (editor: TheEditor, toolbar: ToolbarOption) => {\n const toolbarItems = editor?.plugins.reduce((prevItems, nextPlugin) => {\n prevItems.push(...(nextPlugin?.toolbarItems ?? []));\n return prevItems;\n }, []);\n const toolbarOption = toolbarInitialize(toolbarItems, toolbar?.global, toolbar?.inline, toolbar?.quick);\n const globalToolbarClass = ['the-global-toolbar', getToolbarClass(editor)];\n const toolbarEntity = toolbarOption.toolbarEntity;\n\n return {\n globalToolbarClass,\n toolbarEntity\n };\n};\n","import { Editor } from 'slate';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\n\nexport const UNDOING = new WeakMap<Editor, boolean | undefined>();\nexport const REDOING = new WeakMap<Editor, boolean | undefined>();\n\nexport const withTheHistory = <T extends Editor>(editor: T): T => {\n const { undo, redo } = editor;\n\n editor.undo = () => {\n UNDOING.set(editor, true);\n undo();\n UNDOING.set(editor, false);\n };\n editor.redo = () => {\n REDOING.set(editor, true);\n redo();\n REDOING.set(editor, false);\n };\n\n return editor;\n};\n\nexport const TheHistoryEditor = {\n isUndoing(editor: Editor): boolean | undefined {\n return UNDOING.get(editor);\n },\n isRedoing(editor: Editor): boolean | undefined {\n return REDOING.get(editor);\n }\n};\n\nexport const createTheHistoryPlugin = createPluginFactory({\n key: PluginKeys.theHistory,\n withOverrides: withTheHistory\n});\n","import { Editor, Path, Point, Range, Text, Transforms } from 'slate';\r\nimport { MarkTypes } from '../constants';\r\n\r\nexport const setMarks = (editor: Editor, marks: { [key in MarkTypes]?: any }, at?: Path | Point | Range) => {\r\n Transforms.setNodes(editor, marks, {\r\n at,\r\n match: Text.isText,\r\n split: true\r\n });\r\n};\r\n","import { Editor, Range } from 'slate';\r\nimport { AngularEditor } from 'slate-angular';\r\nimport { MarkProps, MarkTypes } from '../constants/node-types';\r\nimport { setMarks } from './set-marks';\r\n\r\nexport const clearMarks = (editor: Editor) => {\r\n const { selection } = editor;\r\n if (!selection) {\r\n return;\r\n }\r\n\r\n if (Range.isCollapsed(selection)) {\r\n const marks = Editor.marks(editor);\r\n for (const key in marks) {\r\n Editor.removeMark(editor, key);\r\n }\r\n } else {\r\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\r\n MarkProps.forEach(key => {\r\n unsetMarks[key] = null;\r\n });\r\n setMarks(editor, unsetMarks);\r\n }\r\n};\r\n","import { Ancestor, Editor, Element, Node } from 'slate';\r\n\r\nexport const isAncestor = (node: Node): node is Ancestor => Element.isElement(node) || Editor.isEditor(node);\r\n","import { Editor, Node, NodeEntry } from 'slate';\r\nimport { isAncestor } from './is-ancestor';\r\n\r\nconst getLastChild = (node: Node, level: number): Node => {\r\n if (!(level + 1) || !isAncestor(node)) {\r\n return node;\r\n }\r\n\r\n const { children } = node;\r\n const lastNode = children[children.length - 1];\r\n\r\n return getLastChild(lastNode, level - 1);\r\n};\r\n\r\nexport const getLastNode = (editor: Editor, level: number): NodeEntry => {\r\n const { children } = editor;\r\n const lastNode = children[children.length - 1];\r\n const [, lastPath] = Editor.last(editor, []);\r\n\r\n return [getLastChild(lastNode, level - 1), lastPath.slice(0, level + 1)];\r\n};\r\n","import { Range } from 'slate';\r\n\r\n/**\r\n * See {@link Range.isCollapsed}.\r\n * Return false if `range` is not defined.\r\n */\r\nexport const isCollapsed = (range?: Range | null) => !!range && Range.isCollapsed(range);\r\n","import { Editor, NodeEntry, Path, Point, Element } from 'slate';\r\n\r\nexport const getAnchorBlockEntry = (editor: Editor, at?: Path | Point): NodeEntry<Element> => {\r\n return Editor.above<Element>(editor, {\r\n match: n => Editor.isBlock(editor, n),\r\n at\r\n });\r\n};\r\n","import { Editor, Path, Point } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\nimport { getAnchorBlockEntry } from './get-anchor-block-entry';\n\nexport const isEmptyParagraph = (editor: Editor, at?: Path | Point) => {\n const entry = getAnchorBlockEntry(editor, at);\n if (!entry) {\n return false;\n }\n const [block] = entry;\n return Editor.isEmpty(editor, block) && block.type === ElementKinds.paragraph;\n};\n","import { Editor, Element } from 'slate';\r\nimport { ElementKinds } from '../constants/node-types';\r\n\r\nexport const isParagraph = (editor: Editor) => {\r\n const [match] = Editor.nodes(editor, {\r\n match: n => Element.isElement(n) && n.type === ElementKinds.paragraph\r\n });\r\n return !!match;\r\n};\r\n","import { Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\n\nexport const isBlockActive = (editor: Editor, format: CustomElementKinds) => {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === format\n });\n return !!match;\n};\n","import { Editor, Element } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\n\n/**\n * Get the block above a location (default: selection) by type.\n */\nexport const getAboveByType = (editor: Editor, types: string[] | string, options: Omit<EditorAboveOptions, 'match'> = {}) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n return Editor.above(editor, {\n match: n => Element.isElement(n) && types.includes(n.type),\n ...options\n });\n};\n","import { Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { getAboveByType } from './get-above-by-type';\n\nexport const isIncludeTypes = (editor: Editor, types: CustomElementKinds[]) => {\n const parentType = [];\n types.map((item: string) => {\n const entry = getAboveByType(editor, item);\n if (entry) {\n parentType.push((entry[0] as Element).type);\n }\n });\n return parentType.length > 0;\n};\n","import { Editor } from 'slate';\r\n\r\nexport const getBlockCardCenterCursor = (editor: Editor) => {\r\n return Editor.start(editor, editor.selection.anchor.path);\r\n};\r\n","import { Editor } from 'slate';\r\n\r\nexport const isBlockCardCursor = (editor: Editor) => {\r\n return editor.selection.anchor.offset < 0;\r\n};\r\n","import { Editor, NodeEntry, Path, Point, Element } from 'slate';\r\nimport { getBlockCardCenterCursor } from './get-block-card-cursor';\r\nimport { isBlockCardCursor } from './is-block-card-cursor';\r\n\r\nexport const anchorBlockEntry = (editor: Editor, at?: Path | Point): NodeEntry<Element> | undefined => {\r\n if (!at && isBlockCardCursor(editor)) {\r\n at = getBlockCardCenterCursor(editor);\r\n }\r\n\r\n return Editor.above<Element>(editor, {\r\n match: n => Editor.isBlock(editor, n),\r\n at\r\n });\r\n};\r\n","import { Editor, Path, Point, Range, Span } from 'slate';\r\n\r\nexport interface UnhangRangeOptions {\r\n at?: Range | Path | Point | Span;\r\n voids?: boolean;\r\n unhang?: boolean;\r\n}\r\n\r\n/**\r\n * Return {@link Editor.unhangRange} if `unhang` is true and if `at` (default: selection) is a range.\r\n */\r\nexport const unhangRange = (editor: Editor, options: UnhangRangeOptions = {}) => {\r\n const { at = editor.selection, voids, unhang = true } = options;\r\n\r\n if (Range.isRange(at) && unhang) {\r\n options.at = Editor.unhangRange(editor, at, { voids });\r\n }\r\n};\r\n","import { Editor } from 'slate';\r\nimport { EditorNodesOptions } from '../interfaces';\r\nimport { unhangRange, UnhangRangeOptions } from '../transforms/un-hang-range';\r\n\r\nexport const getNodes = (editor: Editor, options: EditorNodesOptions & UnhangRangeOptions = {}) => {\r\n unhangRange(editor, options);\r\n\r\n return Editor.nodes(editor, options);\r\n};\r\n","import { Editor, Element } from 'slate';\r\nimport { EditorNodesOptions } from '../interfaces';\r\nimport { getNodes } from './get-nodes';\r\n\r\n/**\r\n * Get the nodes with a type included in `types` at a location (default: selection).\r\n */\r\nexport const getNodesByType = (editor: Editor, types: string[] | string, options: Omit<EditorNodesOptions, 'match'> = {}) => {\r\n if (!Array.isArray(types)) {\r\n types = [types];\r\n }\r\n\r\n return getNodes(editor, {\r\n match: n => Element.isElement(n) && types.includes(n.type as string),\r\n ...options\r\n });\r\n};\r\n","import { Editor, Element } from 'slate';\r\nimport { anchorBlockEntry } from './anchor-block-entry';\r\n\r\nexport const anchorBlock = (editor: Editor): Element => {\r\n const entry = anchorBlockEntry(editor, editor.selection.anchor);\r\n return entry ? entry[0] : null;\r\n};\r\n","import { Ancestor, Editor, NodeEntry } from 'slate';\r\nimport { EditorAboveOptions } from '../interfaces';\r\n\r\n/**\r\n * Get the block above a location (default: selection).\r\n * If not found, return the editor entry.\r\n */\r\nexport const getBlockAbove = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}): NodeEntry<Ancestor> =>\r\n Editor.above(editor, {\r\n match: n => Editor.isBlock(editor, n),\r\n ...options\r\n }) || [editor, []];\r\n","import { Ancestor, Editor, Node } from 'slate';\r\n\r\n/**\r\n * Is an ancestor empty (empty text and no inline children).\r\n */\r\nexport const isAncestorEmpty = (editor: Editor, node: Ancestor) =>\r\n !Node.string(node) && !node.children.some(n => Editor.isInline(editor, n));\r\n","import { Editor } from 'slate';\r\nimport { getBlockAbove } from './get-block-above';\r\nimport { isAncestorEmpty } from './is-ancestor-empty';\r\n\r\n/**\r\n * Is the block above the selection empty.\r\n */\r\nexport const isBlockAboveEmpty = (editor: Editor) => {\r\n const blockEntry = getBlockAbove(editor);\r\n const [block] = blockEntry;\r\n return isAncestorEmpty(editor, block);\r\n};\r\n","import { Editor } from 'slate';\r\nimport { EditorNodesOptions } from '../interfaces';\r\nimport { getNodesByType } from './get-nodes-by-type';\r\n\r\n/**\r\n * Is there a node with a type included in `types` at a location (default: selection).\r\n */\r\nexport const isNodeTypeIn = (editor: Editor, types: string[] | string, options: Omit<EditorNodesOptions, 'match'> = {}) => {\r\n const [match] = getNodesByType(editor, types, options);\r\n return !!match;\r\n};\r\n","import { Path } from 'slate';\r\n\r\n/**\r\n * Is it the first child of the parent\r\n */\r\nexport const isFirstChild = (path: Path) => path[path.length - 1] === 0;\r\n","import { Path } from 'slate';\r\n\r\nexport const getPreviousPath = (path: Path): Path | undefined => {\r\n if (path.length === 0) return;\r\n\r\n const last = path[path.length - 1];\r\n\r\n if (last <= 0) return;\r\n\r\n return path.slice(0, -1).concat(last - 1);\r\n};\r\n","import { Editor, Node, Path } from 'slate';\r\n\r\nexport const getNode = (editor: Editor, path: Path) => {\r\n try {\r\n return Node.get(editor, path);\r\n } catch (err) {\r\n return null;\r\n }\r\n};\r\n","import { Ancestor, Editor, Location, NodeEntry } from 'slate';\r\nimport { EditorParentOptions } from '../interfaces';\r\n\r\n/**\r\n * See {@link Editor.parent}.\r\n * Returns undefined if there is no parent.\r\n */\r\nexport const getParent = (editor: Editor, at: Location, options?: EditorParentOptions): NodeEntry<Ancestor> | undefined => {\r\n try {\r\n return Editor.parent(editor, at, options);\r\n } catch (error) {}\r\n};\r\n","import { AngularEditor, NODE_TO_INDEX, NODE_TO_PARENT } from 'slate-angular';\r\nimport { Editor, Node, Path } from 'slate';\r\n\r\n/**\r\n * Find the path of Slate node.\r\n */\r\nexport const findPath = (editor: AngularEditor, node: Node): Path => {\r\n const path: Path = [];\r\n let child = node;\r\n\r\n while (true) {\r\n const parent = NODE_TO_PARENT.get(child);\r\n\r\n if (parent == null) {\r\n if (Editor.isEditor(child)) {\r\n return path;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n const i = NODE_TO_INDEX.get(child);\r\n\r\n if (i == null) {\r\n break;\r\n }\r\n\r\n path.unshift(i);\r\n child = parent;\r\n }\r\n throw new Error(`Unable to find the path for Slate node: ${JSON.stringify(node)}`);\r\n};\r\n","export function castArray(data?: any) {\r\n if (!data) {\r\n return [];\r\n }\r\n return Array.isArray(data) ? data : [data];\r\n}\r\n","import { Editor } from 'slate';\r\nimport { castArray } from './cast-array';\r\n\r\nexport type PredicateObj<T> = Partial<Record<keyof T, any | any[]>>;\r\nexport type PredicateFn<T> = (obj: T) => boolean;\r\nexport type Predicate<T> = PredicateObj<T> | PredicateFn<T>;\r\n\r\n/**\r\n * Match the object with a predicate object or function.\r\n * If predicate is:\r\n * - object: every predicate key/value should be in obj.\r\n * - function: it should return true.\r\n */\r\nexport const match = <T>(obj: T, predicate?: Predicate<T>): boolean => {\r\n if (!predicate) return true;\r\n\r\n if (typeof predicate === 'object') {\r\n return Object.entries(predicate).every(([key, value]) => {\r\n const values = castArray(value);\r\n\r\n return values.includes(obj[key]);\r\n });\r\n }\r\n\r\n return predicate(obj);\r\n};\r\n\r\nexport const matchPredicate =\r\n <T>(predicate?: Predicate<T>) =>\r\n (obj: T) =>\r\n match(obj, predicate);\r\n\r\n/**\r\n * Extended query options for slate queries:\r\n * - `match` can be an object predicate where one of the values should include the node value.\r\n * Example: { type: ['1', '2'] } will match the nodes having one of these 2 types.\r\n */\r\nexport const getQueryOptions = <T>(editor: Editor, options: any) => {\r\n return {\r\n ...options,\r\n match: (n: T) => match<T>(n, options.match) && (!options?.block || Editor.isBlock(editor, n))\r\n };\r\n};\r\n","/**\r\n * Iterate through all of the nodes in the editor and return the first match. If\r\n * no match is found, return undefined.\r\n */\r\nimport { Editor, Location, Node, NodeEntry, Path, Range, Span } from 'slate';\r\nimport { MatchOptions } from '../interfaces';\r\nimport { match } from '../utils/match';\r\n\r\nexport type FindNodeOptions<T extends Node = Node> = {\r\n at?: Location | Span;\r\n reverse?: boolean;\r\n voids?: boolean;\r\n} & MatchOptions<T>;\r\n\r\n/**\r\n * Find node matching the condition.\r\n */\r\nexport const findNode = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>): NodeEntry<T> | undefined => {\r\n // Slate throws when things aren't found so we wrap in a try catch and return undefined on throw.\r\n try {\r\n const { match: _match = () => true, at = editor.selection || [], reverse = false, voids = false } = options;\r\n\r\n let from;\r\n let to;\r\n if (Span.isSpan(at)) {\r\n [from, to] = at;\r\n } else if (Range.isRange(at)) {\r\n const first = Editor.path(editor, at, { edge: 'start' });\r\n const last = Editor.path(editor, at, { edge: 'end' });\r\n from = reverse ? last : first;\r\n to = reverse ? first : last;\r\n }\r\n\r\n let root: NodeEntry = [editor, []];\r\n if (Path.isPath(at)) {\r\n root = Editor.node(editor, at);\r\n }\r\n\r\n const nodeEntries = Node.nodes(root[0], {\r\n reverse,\r\n from,\r\n to,\r\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n))\r\n });\r\n\r\n for (const [node, path] of nodeEntries) {\r\n if (match<Node>(node, _match)) {\r\n return [node as any, path];\r\n }\r\n }\r\n } catch (error) {\r\n return undefined;\r\n }\r\n};\r\n","/**\r\n * Iterate through all of the nodes in the editor and return the first match. If\r\n * no match is found, return undefined.\r\n */\r\nimport { Editor, Node, NodeEntry, Path, Range, Span } from 'slate';\r\nimport { match } from '../utils/match';\r\nimport { FindNodeOptions } from './find-node';\r\n\r\n/**\r\n * Get the first descendant node matching the condition.\r\n */\r\nexport const findDescendant = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>): NodeEntry<T> | undefined => {\r\n // Slate throws when things aren't found so we wrap in a try catch and return undefined on throw.\r\n try {\r\n const { match: _match, at = editor.selection, reverse = false, voids = false } = options;\r\n\r\n if (!at) return;\r\n\r\n let from;\r\n let to;\r\n if (Span.isSpan(at)) {\r\n [from, to] = at;\r\n } else if (Range.isRange(at)) {\r\n const first = Editor.path(editor, at, { edge: 'start' });\r\n const last = Editor.path(editor, at, { edge: 'end' });\r\n from = reverse ? last : first;\r\n to = reverse ? first : last;\r\n }\r\n\r\n let root: NodeEntry = [editor, []];\r\n if (Path.isPath(at)) {\r\n root = Editor.node(editor, at);\r\n }\r\n\r\n const nodeEntries = Node.descendants(root[0], {\r\n reverse,\r\n from,\r\n to,\r\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n))\r\n });\r\n\r\n for (const [node, path] of nodeEntries) {\r\n if (match<Node>(node, _match)) {\r\n return [node as any, (at as Path).concat(path)];\r\n }\r\n }\r\n } catch (error) {\r\n return undefined;\r\n }\r\n};\r\n","import { Ancestor, Descendant, NodeEntry, Path } from 'slate';\r\n\r\n/**\r\n * Get the last child of a node\r\n */\r\nexport const getLastChild = (nodeEntry: NodeEntry<Ancestor>): NodeEntry<Descendant> => {\r\n const [node, path] = nodeEntry;\r\n\r\n return [node.children[node.children.length - 1], path.concat([node.children.length - 1])];\r\n};\r\n\r\nexport const getLastChildPath = (nodeEntry: NodeEntry<Ancestor>): Path => getLastChild(nodeEntry)[1];\r\n","import { Point } from 'slate';\r\n\r\nexport const isPointAtRoot = (point: Point) => point.path.length === 2;\r\n","import { Range } from 'slate';\r\nimport { isPointAtRoot } from './is-point-at-root';\r\n\r\nexport const isRangeAtRoot = (range: Range) => isPointAtRoot(range.anchor) || isPointAtRoot(range.focus);\r\n","import { Ancestor, Descendant, NodeEntry, Path } from 'slate';\r\n\r\n/**\r\n * Get the next sibling nodes after a path.\r\n * @param ancestorEntry Ancestor of the sibling nodes\r\n * @param path Path of the reference node\r\n */\r\nexport const getNextSiblingNodes = (ancestorEntry: NodeEntry<Ancestor>, path: Path) => {\r\n const [ancestor, ancestorPath] = ancestorEntry;\r\n\r\n const leafIndex = path[ancestorPath.length];\r\n\r\n const siblings: Descendant[] = [];\r\n\r\n if (leafIndex + 1 < ancestor.children.length) {\r\n for (let i = leafIndex + 1; i < ancestor.children.length; i++) {\r\n siblings.push(ancestor.children[i]);\r\n }\r\n }\r\n\r\n return siblings;\r\n};\r\n","import { Editor, Text } from 'slate';\r\nimport { getBlockAbove } from './get-block-above';\r\nimport { getNextSiblingNodes } from './get-next-sibling-nodes';\r\n\r\n/**\r\n * Is there empty text after the selection.\r\n * If there is no leaf after the selected leaf, return {@link Editor.isEnd}.\r\n * Else, check if the next leaves are empty.\r\n */\r\nexport const isBlockTextEmptyAfterSelection = (editor: Editor) => {\r\n if (!editor.selection) {\r\n return false;\r\n }\r\n\r\n const blockAbove = getBlockAbove(editor);\r\n\r\n const cursor = editor.selection.focus;\r\n\r\n if (!Editor.isEnd(editor, cursor, Editor.parent(editor, editor.selection)[1])) {\r\n return false;\r\n }\r\n\r\n const siblingNodes = getNextSiblingNodes(blockAbove, cursor.path);\r\n\r\n if (siblingNodes.length) {\r\n for (const siblingNode of siblingNodes) {\r\n if ((siblingNode as Text).text) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n return Editor.isEnd(editor, cursor, blockAbove[1]);\r\n }\r\n\r\n return true;\r\n};\r\n","import { Ancestor, Editor } from 'slate';\r\nimport { EditorAboveOptions } from '../interfaces';\r\nimport { getQueryOptions } from '../utils/match';\r\n\r\n/**\r\n * Get node above a location (default: selection).\r\n */\r\nexport const getAbove = <T = Ancestor>(editor: Editor, options: EditorAboveOptions<T> = {}) => {\r\n return Editor.above(editor, getQueryOptions(editor, options));\r\n};\r\n","import { Editor, Location, Point } from 'slate';\r\n\r\n/**\r\n * {@link Editor.isStart}. If point is null, return false.\r\n */\r\nexport const isStart = (editor: Editor, point: Point | null | undefined, at: Location): boolean =>\r\n !!point && Editor.isStart(editor, point, at);\r\n","import { Editor, Path, Range } from 'slate';\r\nimport { EditorAboveOptions } from '../interfaces';\r\nimport { getBlockAbove } from './get-block-above';\r\n\r\n/**\r\n * Is the range (default: selection) across blocks.\r\n */\r\nexport const isRangeAcrossBlocks = (\r\n editor: Editor,\r\n { at, ...options }: Omit<EditorAboveOptions, 'at' | 'match'> & { at?: Range | null } = {}\r\n) => {\r\n if (!at) at = editor.selection;\r\n if (!at) return false;\r\n\r\n const [start, end] = Range.edges(at);\r\n const startBlock = getBlockAbove(editor, {\r\n at: start,\r\n ...options\r\n });\r\n const endBlock = Editor.above(editor, {\r\n at: end,\r\n ...options\r\n });\r\n\r\n return startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\r\n};\r\n","import { Editor, Node } from 'slate';\r\nimport { findNode, FindNodeOptions } from './find-node';\r\n\r\n/**\r\n * Iterate through all of the nodes in the editor and break early for the first truthy match. Otherwise\r\n * returns false.\r\n */\r\nexport const someNode = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>) => {\r\n return !!findNode<T>(editor, options);\r\n};\r\n","import { Descendant, Element, Text } from 'slate';\r\n\r\nexport const isDescendant = (node: any): node is Descendant => Element.isElement(node) || Text.isText(node);\r\n","import { Node, NodeEntry, Element } from 'slate';\r\nimport { QueryOptions } from '../interfaces';\r\n\r\n/**\r\n * Is the node entry filling a condition.\r\n */\r\nexport const isNodeType = (entry?: NodeEntry<Node>, { filter = () => true, allow = [], exclude = [] }: QueryOptions = {}) => {\r\n let filterAllow: typeof filter = () => true;\r\n if (allow.length) {\r\n filterAllow = ([n]) => allow.includes((n as Element).type as string);\r\n }\r\n\r\n let filterExclude: typeof filter = () => true;\r\n if (exclude.length) {\r\n filterExclude = ([n]) => !exclude.includes((n as Element).type as string);\r\n }\r\n\r\n return !!entry && filter(entry) && filterAllow(entry) && filterExclude(entry);\r\n};\r\n","import { Editor, Element } from 'slate';\r\n\r\nexport const anchorInlineEntry = (editor: Editor) => {\r\n const match = Editor.above<Element>(editor, {\r\n match: n => Editor.isInline(editor, n)\r\n });\r\n if (match) {\r\n return match;\r\n }\r\n};\r\n","import { Editor, Location, Path, Point } from 'slate';\r\nimport { castArray } from '../utils/cast-array';\r\nimport { _ } from '../utils/lodash';\r\n\r\nexport interface BeforeOptions {\r\n distance?: number | undefined;\r\n unit?: 'character' | 'word' | 'line' | 'block' | 'offset' | undefined;\r\n}\r\n\r\nexport interface PointBeforeOptions extends BeforeOptions {\r\n /**\r\n * Lookup before the location for `matchString`.\r\n */\r\n matchString?: string | string[];\r\n\r\n /**\r\n * Lookup before the location until this predicate is true\r\n */\r\n match?: (value: { beforeString: string; beforePoint: Point; at: Location }) => boolean;\r\n\r\n /**\r\n * If true, get the point after the matching point.\r\n * If false, get the matching point.\r\n */\r\n afterMatch?: boolean;\r\n\r\n /**\r\n * If true, lookup until the start of the editor value.\r\n * If false, lookup until the first invalid character.\r\n */\r\n skipInvalid?: boolean;\r\n\r\n /**\r\n * Allow lookup across multiple node paths.\r\n */\r\n multiPaths?: boolean;\r\n}\r\n\r\n/**\r\n * {@link Editor.before} with additional options.\r\n * TODO: support for sequence of any characters.\r\n */\r\nexport const getPointBefore = (editor: Editor, at: Location, options?: PointBeforeOptions) => {\r\n if (!options || (!options.match && !options.matchString)) {\r\n return Editor.before(editor, at, options);\r\n }\r\n\r\n let beforeAt = at;\r\n let previousBeforePoint = Editor.point(editor, at, { edge: 'end' });\r\n\r\n const stackLength = (options.matchString ? options.matchString.length : 0) + 1;\r\n const stack = Array(stackLength);\r\n\r\n const unitOffset = !options.unit || options.unit === 'offset';\r\n\r\n let count = 0;\r\n while (true) {\r\n const beforePoint = Editor.before(editor, beforeAt, options);\r\n\r\n // not found\r\n if (!beforePoint) {\r\n return;\r\n }\r\n\r\n // different path\r\n if (!options.multiPaths && !Path.equals(beforePoint.path, previousBeforePoint.path)) {\r\n return;\r\n }\r\n\r\n const beforeString = Editor.string(editor, {\r\n anchor: beforePoint,\r\n focus: previousBeforePoint\r\n });\r\n\r\n const matchString: string[] = castArray(options.matchString);\r\n\r\n let beforeStringToMatch = beforeString;\r\n\r\n if (unitOffset && stackLength) {\r\n stack.unshift({\r\n point: beforePoint,\r\n text: beforeString\r\n });\r\n stack.pop();\r\n\r\n beforeStringToMatch = _.map(stack.slice(0, -1), 'text').join('');\r\n }\r\n\r\n if (\r\n matchString.includes(beforeStringToMatch) ||\r\n (options.match ? options.match({ beforeString: beforeStringToMatch, beforePoint, at }) : '')\r\n ) {\r\n if (options.afterMatch) {\r\n if (stackLength && unitOffset) {\r\n return stack[stack.length - 1] ? stack[stack.length - 1].point : '';\r\n }\r\n return previousBeforePoint;\r\n }\r\n return beforePoint;\r\n }\r\n\r\n previousBeforePoint = beforePoint;\r\n beforeAt = beforePoint;\r\n\r\n count += 1;\r\n\r\n if (!options.skipInvalid) {\r\n if (!matchString || count > matchString.length) {\r\n return;\r\n }\r\n }\r\n }\r\n};\r\n","import { Node, Descendant, NodeEntry, Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { getAboveByType } from './get-above-by-type';\n\nexport const getSelectionNodesByType = (editor: Editor, fragmentData: Descendant[], types: CustomElementKinds[] = []): Node => {\n try {\n const { selection } = editor;\n const nodes = Editor.node(editor, selection);\n const nodeType = (nodes[0] as Element).type;\n if (types.length > 0) {\n if (types.includes(nodeType)) {\n return Node.get(fragmentData[0], new Array(nodes[1].length - 1).fill(0));\n } else {\n let parentNode: NodeEntry;\n for (let i = 0; i < types.length; i++) {\n parentNode = getAboveByType(editor, types[i], { mode: 'lowest' });\n if (parentNode) {\n break;\n }\n }\n if (parentNode) {\n return Node.get(fragmentData[0], new Array(parentNode[1].length - 1).fill(0));\n }\n }\n }\n } catch (err) {\n return null;\n }\n};\n","import { Editor, Element } from 'slate';\r\nimport { getStartBlock, getEndBlock } from '../utils/fragment';\r\n\r\nexport const isAcrossBlocks = (editor: Editor, fragment: Element[]) => {\r\n const startBlock = getStartBlock(editor, fragment[0]);\r\n const endBlock = getEndBlock(editor, fragment[fragment.length - 1]);\r\n return startBlock && endBlock && startBlock !== endBlock;\r\n};\r\n","import { Editor, Location } from 'slate';\r\n\r\n/**\r\n * See {@link Editor.string}.\r\n * If `at` is not defined, return an empty string.\r\n */\r\nexport const getText = (editor: Editor, at?: Location | null) => {\r\n return at && Editor.string(editor, at);\r\n};\r\n","import { Editor, Location, Path, Point, Range } from 'slate';\r\n\r\nexport const getPointFromLocation = (\r\n editor: Editor,\r\n {\r\n at = editor.selection,\r\n focus\r\n }: {\r\n at?: Location | null;\r\n focus?: boolean;\r\n } = {}\r\n) => {\r\n let point: Point | undefined;\r\n if (Range.isRange(at)) {\r\n point = !focus ? at.anchor : at.focus;\r\n }\r\n if (Point.isPoint(at)) {\r\n point = at;\r\n }\r\n if (Path.isPath(at)) {\r\n point = { path: at, offset: 0 };\r\n }\r\n\r\n return point;\r\n};\r\n","import { Editor } from 'slate';\r\nimport { EditorAboveOptions } from '../interfaces';\r\nimport { getBlockAbove } from './get-block-above';\r\nimport { getPointFromLocation } from './get-point-from-location';\r\n\r\n/**\r\n * Get the range from the start of the block above a location (default: selection) to the location.\r\n */\r\nexport const getRangeFromBlockStart = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}) => {\r\n const [, path] = getBlockAbove(editor, options);\r\n\r\n const start = Editor.start(editor, path);\r\n\r\n const focus = getPointFromLocation(editor, options);\r\n\r\n if (!focus) {\r\n return false;\r\n }\r\n\r\n return { anchor: start, focus };\r\n};\r\n","import { Editor, Location, Range } from 'slate';\r\nimport { getPointBefore, PointBeforeOptions } from './get-point-before';\r\n\r\nexport type RangeBeforeOptions = PointBeforeOptions;\r\n\r\n/**\r\n * Get range from {@link getPointBefore} to the end point of `at`.\r\n */\r\nexport const getRangeBefore = (editor: Editor, at: Location, options?: RangeBeforeOptions): Range | undefined => {\r\n const anchor = getPointBefore(editor, at, options);\r\n if (!anchor) {\r\n return;\r\n }\r\n\r\n const focus = Editor.point(editor, at, { edge: 'end' });\r\n\r\n return {\r\n anchor,\r\n focus\r\n };\r\n};\r\n","import { Ancestor, Editor, NodeEntry } from 'slate';\r\nimport { EditorAboveOptions } from '../interfaces/editor';\r\n\r\n/**\r\n * Get the block above a location (default: selection).\r\n * If not found, return the editor entry.\r\n */\r\nexport const getBlockCardAbove = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}): NodeEntry<Ancestor> =>\r\n Editor.above(editor, {\r\n match: n => editor.isBlockCard(n),\r\n ...options\r\n });\r\n","import { Editor, Node } from 'slate';\r\n\r\n/**\r\n * get plain text\r\n * can specify node text interval, the default is \\n\r\n */\r\nexport const getPlainText = (editor: Editor, format = '\\n') => {\r\n let text = '';\r\n if (editor && editor?.children) {\r\n for (let i = 0; i < editor?.children.length; i++) {\r\n const node = editor?.children[i];\r\n text += `${i === 0 ? '' : format}${Node.string(node)}`;\r\n }\r\n }\r\n return text;\r\n};\r\n","import { Editor, Node, Path, Element } from 'slate';\r\nimport { ElementKinds } from '../constants/node-types';\r\n\r\nexport const isEmptyParagraphByPath = (editor: Editor, at: Path) => {\r\n const block = Node.get(editor, at) as Element;\r\n return Editor.isEmpty(editor, block) && block.type === ElementKinds.paragraph;\r\n};\r\n","import { Editor, NodeEntry, Text } from 'slate';\r\nimport { MarkTypes, MarkProps } from '../constants';\r\n\r\nexport const getSelectionMarks = (editor: Editor): { [key in MarkTypes]?: any } => {\r\n const matchs = Editor.nodes(editor, { match: Text.isText });\r\n const marks = {};\r\n for (const match of matchs) {\r\n const [node] = match as NodeEntry<Text>;\r\n const { text, ...rest } = node;\r\n Object.assign(marks, rest);\r\n }\r\n for (const key in marks) {\r\n if (!MarkProps.includes(key as MarkTypes)) {\r\n delete marks[key];\r\n }\r\n }\r\n return marks;\r\n};\r\n","import { Element, Editor } from 'slate';\n\nexport const isContainer = (editor: Editor, value: Element) => Element.isElement(value) && editor.isContainer && editor.isContainer(value);\n","import { CONTAINER_BLOCKS } from '../constants/node-types';\nimport { Editor, Element } from 'slate';\nimport { isContainer } from './is-container-type';\n\nexport const getContainerBlocks = (editor: Editor) => {\n const containerNode = Editor.above<Element>(editor, {\n match: (node: Element) => {\n return Element.isElement(node) && isContainer(editor, node) && !CONTAINER_BLOCKS.includes(node.type);\n }\n });\n return !containerNode ? CONTAINER_BLOCKS : [...CONTAINER_BLOCKS, containerNode[0].type];\n};\n","import { TheEditor } from '../interfaces/editor';\nimport { getBlockAbove } from './get-block-above';\nimport { getParent } from './get-parent';\n\nexport const getDirectlyParent = (editor: TheEditor) => {\n const [, anchorPath] = getBlockAbove(editor);\n if (!anchorPath) return;\n\n const parentEntry = getParent(editor, anchorPath);\n if (!parentEntry) return;\n\n return parentEntry;\n};\n","import { Editor, Element, Path } from 'slate';\nimport { TheEditor } from '../interfaces/editor';\nimport { getBlockAbove } from './get-block-above';\nimport * as _lodash from 'lodash';\nimport { anchorBlockEntry } from './anchor-block-entry';\nimport { CustomElementKinds } from '../custom-types';\n\nexport const getInsertElementsPath = (editor: TheEditor, allowParentTypes: CustomElementKinds[]) => {\n const [, anchorPath] = getBlockAbove(editor);\n if (!anchorPath) return false;\n let parentEntry = Editor.above(editor, { match: n => Editor.isBlock(editor, n) && allowParentTypes.includes((n as any).type) });\n if (!parentEntry) return false;\n\n const [, anchorBlockPath] = anchorBlockEntry(editor);\n let currentNodePath = anchorBlockPath.slice(0, parentEntry[1].length + 1);\n\n const illegalParentEntry = Editor.above(editor, {\n mode: 'highest',\n at: parentEntry[1],\n match: (n: Element) => n.type && !isAllowParentTypes(editor, n.type, allowParentTypes)\n });\n\n // 获取不可插入节点的根层节点\n if (illegalParentEntry) {\n currentNodePath = illegalParentEntry && illegalParentEntry[1];\n }\n\n return currentNodePath && Path.next(currentNodePath);\n};\n\nexport const isAllowParentTypes = (editor: TheEditor, targetType: CustomElementKinds, allowParentTypes: CustomElementKinds[]) => {\n const existChildType = isNestedStructureParentType(editor, targetType);\n const leafType = existChildType && findNestedStructureLeafType(editor, targetType);\n return allowParentTypes.includes(targetType) || allowParentTypes.includes(leafType);\n};\n\nexport const isNestedStructureParentType = (editor: TheEditor, type: string): boolean => {\n for (const key in editor.nestedStructureByKey) {\n if (key === type) {\n return true;\n }\n }\n return false;\n};\n\nexport const findNestedStructureLeafType = (editor: TheEditor, target: CustomElementKinds) => {\n let leafType = editor.nestedStructureByKey[target];\n while (leafType && editor.nestedStructureByKey[leafType]) {\n leafType = editor.nestedStructureByKey[leafType];\n }\n return leafType;\n};\n","import { Editor, Element } from 'slate';\nimport { getBlockAbove } from './get-block-above';\n\nexport const isContainNestedType = (editor: Editor, types: string[] | string) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n const [, anchorPath] = getBlockAbove(editor);\n if (!anchorPath) return false;\n\n const parentEntry = Editor.above(editor, { match: n => Element.isElement(n) && types.includes(n.type) });\n if (!parentEntry) return false;\n\n const [, parentPath] = parentEntry;\n const entry = Editor.above(editor, {\n at: parentPath,\n match: n => {\n if (!Element.isElement(n)) return false;\n const isNestedStructure = editor.nestedStructureByKey[n.type];\n if (isNestedStructure) return true;\n return types.includes(n.type);\n }\n });\n if (entry) return true;\n\n return false;\n};\n","import { Editor } from 'slate';\nimport { PluginKey } from '../interfaces';\nimport { getPluginOptions } from '../core';\nimport { anchorBlock } from './anchor-block';\nimport { CustomElementKinds } from '../custom-types';\n\nexport const getToolbarItemDisabled = (editor: Editor, key: PluginKey, customTypes?: CustomElementKinds[]) => {\n if (editor.selection) {\n let disabledOperateTypes = getPluginOptions(editor, key)?.disabledOperateTypes ?? [];\n if (customTypes?.length) {\n disabledOperateTypes = Array.from(new Set([...disabledOperateTypes, ...customTypes]));\n }\n const anchorNode = anchorBlock(editor);\n return anchorNode && disabledOperateTypes.includes(anchorNode?.type);\n }\n};\n","import { Editor } from 'slate';\nimport { ThePlugin, ToolbarItem } from '../interfaces';\n\nexport const getPluginByToolbarItem = (editor: Editor, toolbarItem: ToolbarItem): ThePlugin => {\n const pluginKey = toolbarItem.pluginKey;\n if (pluginKey) {\n return editor.pluginsByKey[pluginKey];\n }\n for (let key in editor.pluginsByKey) {\n const toolbarItems = editor.pluginsByKey[key].toolbarItems;\n if (toolbarItems && toolbarItems.some(item => item.key === toolbarItem.key)) {\n return editor.pluginsByKey[key];\n }\n }\n};\n","import { Descendant, Node, Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const isEmptyContent = (children: Descendant[]) => {\n if (!children || children.length < 1) {\n return true;\n }\n if (children && children.length === 1) {\n const firstNode = children[0] as Element;\n if (firstNode.type === ElementKinds.default && firstNode.children.length === 1 && !Node.string(firstNode)) {\n return true;\n }\n }\n return false;\n};\n","import { CustomElementKinds } from '../custom-types';\nimport { Editor, Range, Path, Transforms, Element, Node } from 'slate';\nimport { getPluginOptions } from '../core/utils/get-plugin-options';\nimport * as TheQueries from '../queries';\nimport { isArray } from 'ngx-tethys';\n\nexport const insertElements = (editor: Editor, elements: Element | Element[]) => {\n if (Range.isExpanded(editor.selection)) {\n Editor.deleteFragment(editor);\n }\n const type = !isArray(elements) ? elements.type : elements[0].type; // 后期处理复制粘贴需要修改\n const allowParentTypes = getPluginOptions(editor, type)?.allowParentTypes || [];\n const insertNodePath = TheQueries.getInsertElementsPath(editor, allowParentTypes as CustomElementKinds[]);\n const [anchorBlock, anchorBlockPath] = TheQueries.anchorBlockEntry(editor);\n let isEmpty = Editor.isEmpty(editor, anchorBlock);\n if (insertNodePath) {\n Editor.withoutNormalizing(editor, () => {\n Transforms.insertNodes(editor, elements, { at: insertNodePath });\n Transforms.select(editor, Editor.start(editor, insertNodePath));\n if (isEmpty) {\n Transforms.removeNodes(editor, { at: anchorBlockPath });\n }\n });\n return;\n }\n\n const nextPath = Path.next([anchorBlockPath[0]]);\n Transforms.insertNodes(editor, elements, { at: nextPath });\n\n if (isEmpty && anchorBlockPath.length === 1) {\n Transforms.delete(editor, { at: anchorBlockPath });\n Transforms.select(editor, Editor.start(editor, anchorBlockPath));\n } else {\n Transforms.select(editor, Editor.start(editor, nextPath));\n }\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport const setNode = (editor: Editor, props: Partial<Element>, origin: Element) => {\n Transforms.setNodes(editor, props, { at: TheQueries.findPath(editor, origin) });\n};\n","import { Editor, Transforms, Element } from 'slate';\r\nimport { WrapOptions } from '../interfaces';\r\n\r\n/**\r\n * Unwrap nodes by type\r\n */\r\nexport const unwrapNodesByType = (editor: Editor, types: string[] | string, options: Omit<WrapOptions, 'match'> = {}) => {\r\n if (!Array.isArray(types)) {\r\n types = [types];\r\n }\r\n Transforms.unwrapNodes(editor, {\r\n match: n => Element.isElement(n) && types.includes(n.type as string),\r\n ...options\r\n });\r\n};\r\n","import isHotkey from 'is-hotkey';\nimport { Editor, Transforms, Element } from 'slate';\nimport { ResetBlockTypePluginOptions } from '../interfaces/reset-block-type-plugin-options';\nimport * as TheQueries from '../queries';\nimport { isCollapsed } from '../queries/is-collapsed';\n\nexport const onKeyDownResetBlockType =\n ({ rules }: ResetBlockTypePluginOptions) =>\n (event: KeyboardEvent | null, editor: Editor) => {\n let reset: boolean | undefined;\n\n if (editor.selection && isCollapsed(editor.selection)) {\n rules.forEach(({ types, defaultType, hotkey, predicate, onReset }) => {\n if (!event || (hotkey && isHotkey(hotkey, event))) {\n if (predicate(editor) && TheQueries.isNodeTypeIn(editor, types)) {\n if (event !== null) {\n event.preventDefault();\n }\n Transforms.setNodes(editor, { type: defaultType } as Element);\n\n onReset(editor);\n\n reset = true;\n }\n }\n });\n }\n\n return reset;\n };\n","import { Editor, Node, NodeEntry, Path, Transforms } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport interface MoveChildrenOptions {\n /**\n * Parent node of the children to move.\n */\n at: NodeEntry | Path;\n\n /**\n * Path where to move the children.\n */\n to: Path;\n\n /**\n * Start index of the children to move.\n * Example: 1 means children[0] will not be moved.\n */\n start?: number;\n\n /**\n * Condition for the child to be moved\n */\n match?(entry: NodeEntry): boolean;\n}\n\n/**\n * 将节点的子级移动到路径。 返回移动的子级数。\n */\nexport const moveChildren = (editor: Editor, { at, to, match, start = 0 }: MoveChildrenOptions) => {\n let moved = 0;\n const parentPath = Path.isPath(at) ? at : at[1];\n const parentNode = Path.isPath(at) ? Node.get(editor, parentPath) : at[0];\n\n if (!Editor.isBlock(editor, parentNode)) return moved;\n\n for (let i = parentNode.children.length - 1; i >= start; i--) {\n const childPath = [...parentPath, i];\n const childNode = TheQueries.getNode(editor, childPath);\n\n if (!match || (childNode && match([childNode, childPath]))) {\n Transforms.moveNodes(editor, { at: childPath, to });\n moved++;\n }\n }\n\n return moved;\n};\n","import { Editor, Location, Transforms } from 'slate';\r\nimport { createEmptyParagraph } from '../utils/create-empty-paragraph';\r\n\r\nexport const insertParagraph = (editor: Editor, at: Location) => {\r\n Transforms.insertNodes(editor, createEmptyParagraph(), { at });\r\n};\r\n","import { Descendant, Node, NodeEntry } from 'slate';\nimport { QueryOptions } from '../interfaces';\nimport * as TheQueries from '../queries';\n\nexport interface ApplyDeepToNodesOptions {\n // The destination node object.\n node: Node;\n // The source object. Can be a factory.\n source: Record<string, any> | (() => Record<string, any>);\n // Function to call on each node following the query.\n apply: (node: Node, source: Record<string, any> | (() => Record<string, any>)) => void;\n // Query to filter the nodes.\n query?: QueryOptions;\n}\n\n/**\n * Recursively apply an operation to children nodes with a query.\n */\nexport const applyDeepToNodes = ({ node, source, apply, query }: ApplyDeepToNodesOptions) => {\n const entry: NodeEntry<Node> = [node, []];\n\n if (TheQueries.isNodeType(entry, query)) {\n if (source instanceof Function) {\n apply(node, source());\n } else {\n apply(node, source);\n }\n }\n\n if (!TheQueries.isAncestor(node)) {\n return;\n }\n\n node.children.forEach((child: Descendant) => {\n applyDeepToNodes({ node: child, source, apply, query });\n });\n};\n","import { _ } from '../utils/lodash';\nimport { applyDeepToNodes, ApplyDeepToNodesOptions } from './apply-deep-to-nodes';\n\n/**\n * Recursively merge a source object to children nodes with a query.\n */\nexport const mergeDeepToNodes = (options: Omit<ApplyDeepToNodesOptions, 'apply'>) => {\n applyDeepToNodes({ ...options, apply: _.defaults });\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const unWrap = (editor: Editor, kind: CustomElementKinds) => {\n Editor.withoutNormalizing(editor, () => {\n Transforms.setNodes(editor, { type: ElementKinds.paragraph });\n Transforms.unwrapNodes(editor, {\n match: n => Element.isElement(n) && n.type === kind,\n split: true\n });\n });\n};\n","import { Transforms, Path, Editor, Element, NodeEntry } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport * as TheQueries from '../queries';\n\nexport const splitNode = (editor: Editor, indivisibleTypes: CustomElementKinds[]): Path => {\n const { selection } = editor;\n const indivisibleType = indivisibleTypes && indivisibleTypes.find(item => TheQueries.getAboveByType(editor, item, { mode: 'highest' }));\n let splitPath: Path;\n if (!indivisibleType) {\n Transforms.splitNodes(editor, {\n always: true,\n mode: 'highest'\n });\n splitPath = [selection.anchor.path[0]];\n } else {\n Transforms.splitNodes(editor, {\n always: true,\n mode: 'highest',\n match: (data: Element) => {\n if (data.type && !indivisibleTypes.includes(data.type)) {\n const [node] = TheQueries.getNodesByType(editor, data.type, { at: selection });\n const parentNode = Editor.parent(editor, node[1]) as NodeEntry<Element>;\n if (indivisibleTypes.includes(parentNode[0].type)) {\n splitPath = node[1];\n return true;\n }\n }\n }\n });\n }\n return splitPath;\n};\n","import { Editor, Element, Transforms, Path } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { createEmptyParagraph } from '../utils/create-empty-paragraph';\nimport * as TheQueries from '../queries';\n\nexport const deleteElement = (editor: Editor, element: Element) => {\n const at = TheQueries.findPath(editor, element);\n Transforms.insertNodes(editor, createEmptyParagraph(), { at });\n AngularEditor.focus(editor);\n Transforms.select(editor, at);\n Transforms.removeNodes(editor, { at: Path.next(at) });\n};\n","import { Editor, Transforms } from 'slate';\r\nimport { AngularEditor } from 'slate-angular';\r\nimport { getLastNode } from '../queries/get-last-node';\r\n\r\nexport const setEndSelection = (editor: Editor) => {\r\n const lastNode = getLastNode(editor, 1);\r\n const end = Editor.end(editor, lastNode[1]);\r\n Transforms.select(editor, end);\r\n AngularEditor.focus(editor);\r\n};\r\n","import { Editor } from 'slate';\r\nimport { THE_EDITOR_CONVERSION_HINT_REF } from '../utils/weak-maps';\r\n\r\nexport const closeConversionHint = (editor: Editor) => {\r\n const hintRef = THE_EDITOR_CONVERSION_HINT_REF.get(editor);\r\n if (hintRef) {\r\n hintRef.close();\r\n }\r\n};\r\n","import { CustomElementKinds } from '../custom-types';\nimport { Editor, Element, NodeEntry } from 'slate';\nimport * as TheQueries from '../queries';\nimport { unWrap } from './un-wrap';\nimport { BlockElementKinds } from '../interfaces/element';\n\nexport function handleContinualDeleteBackward(editor: Editor, aboveResult: NodeEntry<Element>, type: CustomElementKinds) {\n const highestBlock = aboveResult[0];\n const lowestBlock = TheQueries.anchorBlock(editor);\n const wrapBlockType = highestBlock.type as BlockElementKinds;\n if (lowestBlock && Editor.isStart(editor, editor.selection.anchor, aboveResult[1])) {\n if (wrapBlockType === type) {\n if (highestBlock.children[0] === lowestBlock) {\n unWrap(editor, wrapBlockType);\n return true;\n }\n }\n }\n return false;\n}\n","import { CustomElementKinds } from '../custom-types';\nimport { Editor, Element } from 'slate';\nimport { unWrap } from './un-wrap';\n\nexport function handleContinualInsertBreak(editor: Editor, lowestBlock: Element, type: CustomElementKinds) {\n const isEmpty = Editor.isEmpty(editor, lowestBlock);\n const isEnd = Editor.isEnd(editor, editor.selection.anchor, editor.selection.focus.path);\n const aboveResult = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === type\n });\n\n if (aboveResult && aboveResult[0] && isEnd && isEmpty) {\n const wrapBlock = aboveResult[0];\n if (wrapBlock.type === type) {\n if (wrapBlock.children[wrapBlock.children.length - 1] === lowestBlock) {\n unWrap(editor, wrapBlock.type);\n return true;\n }\n }\n }\n return false;\n}\n","import { ChangeDetectionStrategy, Component, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Editor } from 'slate';\nimport * as TheTransforms from '../../transforms';\n\n@Component({\n selector: 'the-conversion-hint',\n templateUrl: 'conversion-hint.component.html',\n host: {\n class: 'the-conversion-hint'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheConversionHintComponent implements OnInit, OnDestroy {\n @Input() editor: Editor;\n\n @Input() conversion: () => void;\n\n duration = 10000;\n pauseOnHover = true;\n closeTimer: any;\n\n @HostListener('mouseenter') mouseenter() {\n if (this.pauseOnHover) {\n this.clearCloseTimer();\n }\n }\n\n @HostListener('mouseleave') mouseleave() {\n if (this.pauseOnHover) {\n this.creatCloseTimer();\n }\n }\n\n ngOnInit() {\n this.creatCloseTimer();\n }\n\n ngOnDestroy() {\n this.clearCloseTimer();\n }\n\n creatCloseTimer() {\n this.closeTimer = setInterval(() => {\n clearInterval(this.closeTimer);\n TheTransforms.closeConversionHint(this.editor);\n }, this.duration);\n }\n\n clearCloseTimer() {\n clearInterval(this.closeTimer);\n }\n}\n","<ng-container>\r\n <thy-alert\r\n thyType=\"primary-weak\"\r\n thyIcon=\"info-circle-fill\"\r\n thyCloseable=\"true\"\r\n thyMessage=\"检测到粘贴内容符合Markdown语法\"\r\n >\r\n <ng-template #operation>\r\n <a href=\"javascript:;\" thyAlertActionItem (click)=\"conversion()\">\r\n 立即转换\r\n </a>\r\n </ng-template>\r\n </thy-alert>\r\n</ng-container>\r\n","import { ChangeDetectorRef, ViewContainerRef } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { Editor, Element, Node, Text, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport marked from 'marked';\nimport { TheiaConverter } from '@atinc/selene';\nimport { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';\nimport * as TheTransforms from '../../transforms';\nimport { TheConversionHintComponent } from '../../components/conversion-hint/conversion-hint.component';\nimport { THE_EDITOR_CONVERSION_HINT_REF, getToolbarClass } from '../../utils';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\n\nexport const withDeserializeMd = <T extends Editor>(editor: T): T => {\n const { insertData, onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n TheTransforms.closeConversionHint(editor);\n onKeydown(event);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const popover = editor.injector.get(ThyPopover);\n const viewContainerRef = editor.injector.get(ViewContainerRef);\n const cdr = editor.injector.get(ChangeDetectorRef);\n\n const plainFragment = data.getData('text/plain');\n const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n const oldRange = editor.selection;\n TheTransforms.closeConversionHint(editor);\n\n if (plainFragment && isMarkdownStynx(plainFragment) && !slateFragment) {\n setTimeout(() => {\n const overlay = editor.injector.get(Overlay);\n const bodyElement = document.body;\n const toolbarClass = getToolbarClass(editor);\n const toolbarElement = document.querySelector(`.${toolbarClass}`) as HTMLElement;\n const origin = toolbarElement ? toolbarElement : bodyElement;\n const placement = toolbarElement ? 'top' : 'topRight';\n\n const hintPopverRef = popover.open(TheConversionHintComponent, {\n initialState: {\n editor,\n conversion: () => {\n try {\n const html = marked(plainFragment.replace(/\\n```/g, '\\n\\n```'), { gfm: true });\n const htmlDom = new DOMParser().parseFromString(html, 'text/html');\n const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n\n if (!isUnformatted(fragment)) {\n TheTransforms.closeConversionHint(editor);\n\n editor.undo();\n\n setTimeout(() => {\n Transforms.select(editor, oldRange);\n Transforms.insertFragment(editor, fragment);\n AngularEditor.focus(editor);\n });\n return;\n } else {\n TheTransforms.closeConversionHint(editor);\n }\n } catch (error) {\n TheTransforms.closeConversionHint(editor);\n }\n }\n },\n origin,\n viewContainerRef,\n placement,\n offset: -100,\n minWidth: 0,\n hasBackdrop: false,\n backdropClosable: false,\n closeOnNavigation: false,\n scrollStrategy: overlay.scrollStrategies.reposition()\n });\n THE_EDITOR_CONVERSION_HINT_REF.set(editor, hintPopverRef);\n cdr.markForCheck();\n });\n }\n\n insertData(data);\n };\n return editor;\n};\n\nexport const createDeserializeMdPlugin = createPluginFactory({\n key: PluginKeys.deserializeMd,\n withOverrides: withDeserializeMd\n});\n\nconst isUnformatted = (elements: Element[]) => {\n return elements.every(\n element =>\n element.type === ElementKinds.default &&\n element.children.every((node: Node) => {\n return Text.isText(node) && Object.keys(node).length === 1;\n })\n );\n};\n\nconst isMarkdownStynx = content => {\n // https://github.com/Chalarangelo/parse-md-js/blob/master/parsemd.js\n const codeBlockRegex = /((\\n\\t)(.*))+/g;\n const inlineCodeRegex = /(`)(.*?)\\1/g;\n const imageRegex = /!\\[([^\\[]+)\\]\\(([^\\)]+)\\)/g;\n const linkRegex = /\\[([^\\[]+)\\]\\(([^\\)]+)\\)/g;\n const headingRegex = /(#+\\s*)(.*)/g;\n const boldItalicsRegex = /(\\*{1,2})(\\S+)\\1/g;\n const strikethroughRegex = /(\\~\\~)(.*?)\\1/g;\n const blockquoteRegex = /\\n(&gt;|\\>)(.*)/g;\n const horizontalRuleRegex = /\\n((\\-{3,})|(={3,}))/g;\n const unorderedListRegex = /(\\n\\s*(\\-|\\+)\\s.*)+/g;\n const orderedListRegex = /(\\n\\s*([0-9]+\\.)\\s.*)+/g;\n const paragraphRegex = /\\n+(?!<pre>)(?!<h)(?!<ul>)(?!<blockquote)(?!<hr)(?!\\t)([^\\n]+)\\n/g;\n // from marked\n const table =\n /^\\s*([^\\s].*\\|.*)\\s{0,3}(?:\\|\\s*)?(:?-+:?\\s*(?:\\|\\s*:?-+:?\\s*)*)\\|?(?:\\s*((?:(?!|hr|heading|blockquote|code|fences|list|html).*(?:|$))*)*|$)/g;\n const regexps = [\n inlineCodeRegex,\n imageRegex,\n linkRegex,\n headingRegex,\n boldItalicsRegex,\n strikethroughRegex,\n blockquoteRegex,\n horizontalRuleRegex,\n unorderedListRegex,\n orderedListRegex,\n table\n ];\n return regexps.some(regexp => regexp.test(content));\n};\n","import { Editor, Path, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { DefaultElementOptions, PluginKeys } from '../../interfaces';\nimport { createPluginFactory } from '../../core';\nimport { extractFragment } from '../../utils/fragment';\nimport { mergeElementOptions } from '../../utils/merge-element-options';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\n\nexport const withAutoInsertData = <T extends Editor>(editor: T): T => {\n const { insertData } = editor;\n let allElementOptions = DefaultElementOptions;\n // if (validChildren?.length) {\n // const validInfo = mergeElementOptions(validChildren);\n // allElementOptions = Object.values(validInfo);\n // }\n\n editor.insertData = (data: DataTransfer) => {\n if (editor.extraElementOptions?.length) {\n const extraInfo = mergeElementOptions(editor.extraElementOptions);\n allElementOptions = Object.values(extraInfo);\n }\n const indivisibleTypes = allElementOptions.filter(item => item.isIndivisible).map(item => item.type);\n const fragment = extractFragment(data);\n if (fragment) {\n if (TheQueries.isAcrossBlocks(editor, fragment) || Editor.isVoid(editor, fragment[0])) {\n const { selection } = editor;\n const [start] = Editor.edges(editor, selection);\n // query whether there is a node to be verified\n const tryVerifyNode = allElementOptions.find(item =>\n TheQueries.getAboveByType(editor, item.type, { at: start, mode: 'lowest' })\n );\n if (tryVerifyNode) {\n // is exist invalid element type in fragment\n const invalidIndex = fragment.findIndex(item => tryVerifyNode.inValidChildrenTypes.includes(item.type));\n if (invalidIndex > -1) {\n const validFragmentData = fragment.slice(0, invalidIndex);\n const invalidFragmentData = fragment.slice(invalidIndex, fragment.length);\n Editor.withoutNormalizing(editor, () => {\n if (validFragmentData.length > 0) {\n validFragmentData.forEach(item => {\n Transforms.insertNodes(editor, item);\n });\n }\n // split node\n const path = TheTransforms.splitNode(editor, indivisibleTypes);\n Transforms.insertNodes(editor, invalidFragmentData, {\n at: Path.next(path)\n });\n });\n return;\n }\n }\n Editor.withoutNormalizing(editor, () => {\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const emptyPath = Path.parent(editor.selection.anchor.path);\n Transforms.insertNodes(editor, fragment);\n if (isEmptyParagraph) {\n Transforms.delete(editor, { at: emptyPath });\n const lastPath = emptyPath.pop();\n Transforms.select(editor, [...emptyPath, lastPath + fragment.length - 1]);\n } else {\n const lastPath = emptyPath.pop();\n Transforms.select(editor, [...emptyPath, lastPath + fragment.length]);\n }\n AngularEditor.focus(editor);\n Transforms.collapse(editor, { edge: 'end' });\n });\n return;\n }\n }\n insertData(data);\n };\n\n return editor;\n};\n\nexport const createAutoInsertDataPlugin = createPluginFactory({\n key: PluginKeys.autoInsertData,\n withOverrides: withAutoInsertData\n});\n","import { Path, Node, Editor, Transforms, Element } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { HEADING_TYPES } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withRemoveEmpty = <T extends Editor>(editor: T): T => {\n const { deleteBackward, deleteForward } = editor;\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n const anchorBlock = TheQueries.anchorBlock(editor);\n\n if (!anchorBlock) {\n deleteBackward(unit);\n return;\n }\n\n // delete empty paragraphs or empty headings, the default operation is to delete before the void node\n const parentPath = Path.parent(editor.selection.anchor.path);\n const isEmptyHeading = HEADING_TYPES.includes(anchorBlock.type) && Editor.isEmpty(editor, anchorBlock);\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n if (\n (isEmptyParagraph || isEmptyHeading) &&\n parentPath[parentPath.length - 1] > 0 &&\n Editor.isVoid(editor, Node.get(editor, Path.previous(parentPath)))\n ) {\n Transforms.delete(editor, { at: editor.selection.anchor.path.slice(0, editor.selection.anchor.path.length - 1) });\n return;\n }\n // just remove inline node when before inline node text length is 1, default action is remove current the block above inline node\n if (selection.anchor.path[selection.anchor.path.length - 1] > 0 && selection.anchor.offset === 0) {\n const beforePoint = Editor.before(editor, editor.selection);\n const inlineEntry = Editor.above<Element>(editor, {\n at: beforePoint,\n match: n => Editor.isInline(editor, n) && !Editor.isVoid(editor, n)\n });\n if (inlineEntry && Editor.string(editor, inlineEntry[1]).length === 1) {\n Transforms.removeNodes(editor, { at: inlineEntry[1] });\n return;\n }\n }\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const anchorBlockEntry = TheQueries.anchorBlockEntry(editor);\n if (\n anchorBlockEntry &&\n TheQueries.isAncestorEmpty(editor, anchorBlockEntry[0]) &&\n TheQueries.getNode(editor, Path.next(anchorBlockEntry[1]))\n ) {\n const pathRef = Editor.pathRef(editor, Path.parent(editor.selection.anchor.path));\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.move(editor);\n });\n Transforms.delete(editor, { at: pathRef.unref() });\n return;\n }\n deleteForward(unit);\n };\n\n return editor;\n};\n\nexport const createRemoveEmptyPlugin = createPluginFactory({\n key: PluginKeys.removeEmpty,\n withOverrides: withRemoveEmpty\n});\n","import { Editor, Range } from 'slate';\nimport { hotkeys, IS_SAFARI } from 'slate-angular';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { BLOCK_DELETE_BACKWARD_TYPES } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withResetType = <T extends Editor>(editor: T): T => {\n const { onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const { selection } = editor;\n\n if (IS_SAFARI && selection && Range.isCollapsed(selection) && hotkeys.isDeleteBackward(event)) {\n const blockEntry = TheQueries.getAboveByType(editor, BLOCK_DELETE_BACKWARD_TYPES);\n if (blockEntry && blockEntry[0]) {\n const isStart = Editor.isStart(editor, selection.anchor, blockEntry[1]);\n if (isStart) {\n event.preventDefault();\n Editor.deleteBackward(editor);\n return;\n }\n }\n if (Editor.isStart(editor, selection.anchor, [0])) {\n event.preventDefault();\n Editor.deleteBackward(editor);\n return;\n }\n }\n onKeydown(event);\n };\n\n return editor;\n};\n\nexport const createResetTypePlugin = createPluginFactory({\n key: PluginKeys.resetType,\n withOverrides: withResetType\n});\n","import { Editor, Transforms, Element, Path } from 'slate';\nimport { TheContextService } from '../../services/context.service';\nimport {\n Alignment,\n ElementKinds,\n ErrorCodes,\n LayoutTypes,\n PICTURE_ACCEPTED_UPLOAD_MIME,\n PICTURE_ACCEPTED_UPLOAD_SIZE\n} from '../../constants';\nimport * as TheTransforms from '../../transforms';\n\nexport const ImageEditor = {\n openUpload(editor: Editor) {\n const inputFile = document.createElement('input');\n inputFile.setAttribute('type', 'file');\n inputFile.setAttribute('accept', 'image/*');\n inputFile.setAttribute('multiple', 'true');\n inputFile.onchange = (event: Event) => {\n ImageEditor.insertImages(editor, (event.target as any).files);\n };\n inputFile.click();\n },\n insertImages(editor: Editor, imageFiles: FileList | File[]) {\n const contextService = editor.injector.get(TheContextService);\n const imageNodes: Element[] = [];\n const text = { text: '' };\n for (const image of imageFiles) {\n const verify = ImageEditor.verifyImage(editor, image);\n if (verify) {\n const url = URL.createObjectURL(image);\n contextService.addUploadingFiles({ url, file: image });\n imageNodes.push({ type: ElementKinds.image, url, children: [text] });\n }\n }\n if (imageNodes.length > 0) {\n TheTransforms.insertElements(editor, imageNodes);\n }\n },\n verifyImage(editor: Editor, image: File) {\n if (!PICTURE_ACCEPTED_UPLOAD_MIME.includes(image.type)) {\n editor.onError({\n code: ErrorCodes.IMAGE_ERR_MIME_FORMAT\n });\n return false;\n }\n if (image.size / 1000000 >= PICTURE_ACCEPTED_UPLOAD_SIZE) {\n editor.onError({\n code: ErrorCodes.IMAGE_ERR_SIZE_LIMIT\n });\n return false;\n }\n return true;\n },\n isImageActive(editor: Editor): boolean {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.image,\n universal: true\n });\n return !!match;\n },\n setImageNode(editor: Editor, path: Path, partial: { layout?: LayoutTypes; align?: Alignment }) {\n Transforms.setNodes(editor, partial, { at: path });\n }\n};\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { ToolbarItemMode } from '../../constants/toolbar';\n\n@Component({\n selector: 'nav-split-line',\n template: ''\n})\nexport class NavSplitLineComponent implements OnInit {\n @Input() mode: ToolbarItemMode = ToolbarItemMode.vertical;\n\n @HostBinding('class.the-nav-split-line')\n theNavSplitLine = true;\n\n @HostBinding('class.horizontal') get horizontal() {\n return this.mode === ToolbarItemMode.horizontal;\n }\n\n @HostBinding('class.vertical') get vertical() {\n return this.mode === ToolbarItemMode.vertical;\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import {\n Component,\n OnInit,\n ElementRef,\n ViewChild,\n OnDestroy,\n Inject,\n AfterViewInit,\n ChangeDetectorRef,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { AngularEditor, BeforeContextChange, SlateElementContext } from 'slate-angular';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ImageEntry, THE_UPLOAD_SERVICE_TOKEN, TheImageUploaderService, LayoutOption } from '../../interfaces/image';\nimport { Alignment, ElementKinds, LayoutTypes, ToolbarActionTypes } from '../../constants/node-types';\nimport { HistoryEditor } from 'slate-history';\nimport { Transforms, Editor } from 'slate';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { map } from 'rxjs/operators';\nimport { ThyUploadStatus } from 'ngx-tethys/uploader';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ConnectedPosition, Overlay } from '@angular/cdk/overlay';\nimport { TheContextService } from '../../services/context.service';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { ImageElement } from '../../custom-types';\nimport { ImageEditor } from './image.editor';\nimport * as TheTransforms from '../../transforms';\nimport * as TheQueries from '../../queries';\n\ndeclare const $: any;\n\n@Component({\n selector: 'the-image, [theImage]',\n templateUrl: './image.component.html'\n})\nexport class TheImageComponent\n extends TheBaseElementComponent<ImageElement, Editor>\n implements OnInit, OnDestroy, AfterViewInit, BeforeContextChange<SlateElementContext>\n{\n imageEntry: ImageEntry = {};\n\n uploading = false;\n\n percentage = 0;\n\n fileItem: { url: string; file: File };\n\n layoutDefaultWidth = 368;\n\n layoutOptions: LayoutOption[] = [\n {\n key: Alignment.left,\n icon: 'image-left',\n name: '左对齐',\n handle: (e: MouseEvent, key: Alignment) => this.setImageNode(e, { align: key, layout: undefined })\n },\n {\n key: Alignment.center,\n icon: 'image-center',\n name: '居中',\n handle: (e: MouseEvent, key: Alignment) => this.setImageNode(e, { align: key, layout: undefined })\n },\n {\n key: Alignment.right,\n icon: 'image-right',\n name: '右对齐',\n handle: (e: MouseEvent, key: Alignment) => this.setImageNode(e, { align: key, layout: undefined })\n },\n {\n key: ToolbarActionTypes.split\n },\n {\n key: LayoutTypes.wrapLeft,\n icon: 'wrap-left',\n name: '图片居左',\n handle: (e: MouseEvent, key: LayoutTypes) => this.setImageNode(e, { layout: key })\n },\n {\n key: LayoutTypes.wrapRight,\n icon: 'wrap-right',\n name: '图片居右',\n handle: (e: MouseEvent, key: LayoutTypes) => this.setImageNode(e, { layout: key })\n },\n {\n key: 'remove',\n icon: 'trash',\n name: '删除',\n handle: (e: MouseEvent) => this.onDelete(e)\n }\n ];\n\n private uploadingSubscription: Subscription;\n\n private mouseMoveSubscription: Subscription;\n\n private mouseUpSubscription: Subscription;\n\n private dragable = false;\n\n private layoutToolbarRef: ThyPopoverRef<any>;\n\n get isOpen() {\n return this.layoutToolbarRef && this.layoutToolbarRef.getOverlayRef() && this.layoutToolbarRef.getOverlayRef().hasAttached();\n }\n\n @ViewChild('imageContent')\n imageContent: ElementRef;\n\n @ViewChild('img', { static: false })\n img: ElementRef;\n\n @ViewChild('layoutToolbar', { static: true })\n layoutToolbar: TemplateRef<any>;\n\n constructor(\n public elementRef: ElementRef,\n public sanitizer: DomSanitizer,\n @Inject(THE_UPLOAD_SERVICE_TOKEN)\n private imageUploaderService: TheImageUploaderService,\n public cdr: ChangeDetectorRef,\n private theContextService: TheContextService,\n private thyPopover: ThyPopover,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {\n super(elementRef, cdr);\n }\n\n beforeContextChange = (value: SlateElementContext<ImageElement>) => {\n if (value.element !== this.element && value.element.thumbUrl) {\n this.imageEntry = {\n name: value.element.name,\n width: value.element.width,\n height: value.element.height,\n thumbUrl: value.element.thumbUrl,\n originUrl: value.element.originUrl,\n align: value.element.align || Alignment.left,\n layout: value.element.layout,\n reSized: value.element.reSized || false\n };\n this.setBlockCardLayoutAttr();\n }\n };\n\n ngOnInit() {\n this.layoutDefaultWidth = this.theContextService.layoutDefaultWidth();\n this.fileItem = this.theContextService.uploadingFiles.find(item => item.url === this.element.url);\n if (this.fileItem?.file && this.fileItem.file instanceof File) {\n this.uploadImage(this.fileItem.file);\n }\n super.ngOnInit();\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n if (this.isShouldOpen()) {\n this.openLayoutToolbar();\n }\n if (this.isShouldClose()) {\n this.closeLayoutToolbar();\n }\n }\n }\n\n ngOnDestroy() {\n this.uploadingSubscription.unsubscribe();\n this.mouseUpSubscription.unsubscribe();\n super.ngOnDestroy();\n }\n\n ngAfterViewInit() {\n this.mouseUpSubscription = this.theContextService.onMouseUp$.subscribe(e => this.endDrag(e));\n this.uploadingSubscription = this.imageUploaderService\n .getUploadingItems$()\n .pipe(map(fileUploadingItem => this.fileItem?.file && fileUploadingItem.find(item => item.file === this.fileItem?.file)))\n .subscribe(uploadingItem => {\n if (!uploadingItem || !uploadingItem.result) {\n return;\n }\n this.percentage = uploadingItem.result.uploadFile.progress.percentage;\n const { status } = uploadingItem.result;\n // 成功和失败都要上传结束\n if (status === ThyUploadStatus.done) {\n this.uploadingSubscription.unsubscribe();\n this.uploading = false;\n this.theContextService.removeUploadImage(this.fileItem);\n this.theContextService.uploadingStatus$.next(false);\n }\n this.cdr.detectChanges();\n });\n }\n\n async uploadImage(file: File) {\n const { width, height } = await this.resolveImageSize(file, this.theContextService.getOptions().width);\n this.imageEntry = {\n height,\n width,\n align: this.imageEntry.align || Alignment.center,\n thumbUrl: this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(file))\n };\n this.uploading = true;\n this.theContextService.uploadingStatus$.next(true);\n const [uploadFileEntity] = await this.imageUploaderService.uploadFileHandle([file]).toPromise();\n const path = AngularEditor.findPath(this.editor, this.element);\n const { thumbUrl, originUrl } = uploadFileEntity;\n const imageInfo: ImageEntry = {\n name: file.name,\n width: this.imageEntry.width,\n height: this.imageEntry.height,\n thumbUrl,\n originUrl,\n align: this.imageEntry.align || Alignment.center\n };\n HistoryEditor.withoutSaving(this.editor, () =>\n Transforms.setNodes(\n this.editor,\n {\n type: ElementKinds.image,\n url: null,\n ...imageInfo\n },\n { at: path }\n )\n );\n }\n\n private resolveImageSize(imageFile: File, maxSize: number): Promise<{ height: number; width: number }> {\n const image = new Image();\n return new Promise(resolve => {\n image.onload = () => {\n const imageHeight = image.height;\n const imageWidth = image.width;\n const ratio = imageWidth > maxSize ? imageWidth / maxSize : false;\n const height = ratio ? imageHeight / ratio : imageHeight;\n const width = ratio ? imageWidth / ratio : imageWidth;\n resolve({ height, width });\n };\n image.src = URL.createObjectURL(imageFile);\n });\n }\n\n startDrag(event: MouseEvent, axis: string) {\n event.preventDefault();\n this.dragable = true;\n const imgElement = this.img.nativeElement as HTMLImageElement;\n const options = {\n axis,\n printerPositionX: event.pageX,\n printerPositionY: event.pageY,\n internalWidth: imgElement.width || this.imageEntry.width,\n internalHeight: imgElement.height || this.imageEntry.height,\n maxWidth: this.theContextService.getOptions().width\n };\n this.mouseMoveSubscription = this.theContextService.onMouseMove$.subscribe(e => this.mouseMoveHandle(e, options));\n }\n\n mouseMoveHandle(\n event: MouseEvent,\n options: {\n axis: string;\n printerPositionX: number;\n printerPositionY: number;\n internalWidth: number;\n internalHeight: number;\n maxWidth: number;\n }\n ) {\n if (this.dragable) {\n const { axis, printerPositionX, printerPositionY, internalWidth, internalHeight, maxWidth } = options;\n const isReversal = axis.includes('-');\n\n let offsetX = event.pageX - printerPositionX;\n let offsetY = event.pageY - printerPositionY;\n let { width, height } = this.element;\n\n if (isReversal) {\n offsetX = -offsetX;\n offsetY = -offsetY;\n }\n if (this.element.align === 'center') {\n offsetX = offsetX * 2;\n }\n\n if (axis.includes('x')) {\n width = offsetX + internalWidth;\n if (width >= maxWidth) {\n width = maxWidth;\n\n // clear `layout` when the image is adjusted to the maximum value under rich media\n if (this.imageEntry?.layout) {\n const path = TheQueries.findPath(this.editor, this.element);\n ImageEditor.setImageNode(this.editor, path, { layout: undefined });\n }\n }\n if (width <= 100) {\n width = 100;\n }\n if (axis.includes('l')) {\n const ratio = internalWidth / width;\n height = internalHeight / ratio;\n }\n } else if (axis.includes('y')) {\n height = offsetY + internalHeight;\n if (height >= 1000) {\n height = 1000;\n }\n if (height <= 100) {\n height = 100;\n }\n if (axis.includes('l')) {\n const ratio = internalHeight / height;\n width = internalWidth / ratio;\n }\n }\n\n if (!this.imageEntry.reSized && this.imageEntry.width !== width) {\n this.imageEntry.reSized = true;\n }\n this.imageContent.nativeElement.style.width = width + 'px';\n this.imageContent.nativeElement.style.height = height + 'px';\n this.imageEntry.width = width;\n this.imageEntry.height = height;\n }\n }\n\n endDrag(event: MouseEvent) {\n if (this.dragable) {\n this.dragable = false;\n this.mouseMoveSubscription.unsubscribe();\n Transforms.setNodes(\n this.editor,\n {\n type: ElementKinds.image,\n ...this.imageEntry\n },\n { at: this.selection }\n );\n }\n }\n\n cancelUpload(event) {\n Transforms.removeNodes(this.editor, { at: this.selection });\n }\n\n preview($event: Event) {\n if (this.readonly || this.isCollapsed) {\n $.fancybox.open([{ src: this.imageEntry.originUrl }]);\n }\n $event.stopPropagation();\n }\n\n isShouldOpen() {\n const {\n theOptions: { richMedia }\n } = this.theContextService.getOptions();\n return !this?.readonly && richMedia && this?.isCollapsed && !this.uploading && !this.isOpen;\n }\n\n isShouldClose() {\n return this.isOpen && (this?.readonly || !this?.isCollapsed || this.uploading);\n }\n\n openLayoutToolbar() {\n this.layoutToolbarRef = this.thyPopover.open(this.layoutToolbar, {\n origin: this.imageContent,\n panelClass: ['the-block-toolbar'],\n placement: 'bottom',\n insideClosable: false,\n backdropClosable: true,\n hasBackdrop: false,\n offset: 10,\n minWidth: 0,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.layoutToolbarRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());\n\n setTimeout(() => {\n this.layoutToolbarRef?.getOverlayRef().updatePosition();\n }, 150);\n }\n\n closeLayoutToolbar() {\n this.layoutToolbarRef?.close();\n }\n\n layoutActive(key: Alignment | LayoutTypes) {\n const { layout, align } = this.imageEntry;\n return key && ((key === align && !layout) || key === layout);\n }\n\n setImageNode(e: MouseEvent, partial: { layout?: LayoutTypes; align?: Alignment }) {\n e.preventDefault();\n const path = TheQueries.findPath(this.editor, this.element);\n ImageEditor.setImageNode(this.editor, path, partial);\n }\n\n setBlockCardLayoutAttr() {\n Promise.resolve().then(() => {\n const currentElement = AngularEditor.toDOMNode(this.editor, this.element);\n const blockCard = currentElement.closest('.slate-block-card');\n const { layout } = this.element;\n\n if (blockCard && layout) {\n blockCard.setAttribute('layout', layout);\n } else if (blockCard && !layout) {\n blockCard.removeAttribute('layout');\n }\n this.layoutToolbarRef?.getOverlayRef().updatePosition();\n });\n }\n\n onDelete(event: MouseEvent) {\n event.preventDefault();\n TheTransforms.deleteElement(this.editor, this.element);\n }\n\n createPositionStrategy() {\n const bottomPosition: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetX: 0,\n offsetY: 10\n };\n return this.overlay\n .position()\n .flexibleConnectedTo(this.imageContent)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withPositions([bottomPosition]);\n }\n}\n","<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div\n #imageContent\n *ngIf=\"imageEntry.thumbUrl\"\n class=\"image-content\"\n [class.pointer]=\"!selection\"\n [ngStyle]=\"{\n 'width.px':\n imageEntry?.layout && imageEntry?.width > layoutDefaultWidth && !imageEntry?.reSized\n ? layoutDefaultWidth\n : imageEntry.width,\n 'height.px': imageEntry.height\n }\"\n >\n <img #img class=\"main-image\" [src]=\"imageEntry.thumbUrl\" [alt]=\"imageEntry.name\" />\n <div *ngIf=\"selection\" class=\"image-profile\" [class.outline]=\"selection\">\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span *ngIf=\"isCollapsed\" (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\" (mousedown)=\"preview($event)\" [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 <div class=\"the-block-toolbar-popover\" contenteditable=\"false\">\n <thy-icon-nav>\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyIconNavLink\n [ngClass]=\"{ 'remove-link': item.key === 'remove' }\"\n [thyIconNavLinkIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n [thyIconNavLinkActive]=\"layoutActive(item.key)\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <nav-split-line *ngIf=\"item.key === 'split'\"></nav-split-line>\n </ng-container>\n </thy-icon-nav>\n </div>\n</ng-template>\n","import { Editor, Element } from 'slate';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { CustomElementKinds } from '../../custom-types';\nimport { TheImageComponent } from './image.component';\nimport { ImageEditor } from './image.editor';\n\nexport interface ImagePluginOptions {\n allowParentTypes?: CustomElementKinds[];\n imageTypes?: string[];\n}\n\nexport const withImage = <T extends Editor>(editor: T): T => {\n const { insertData, isVoid, renderElement, isBlockCard } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.image || isVoid(element);\n };\n\n editor.insertData = (data: DataTransfer) => {\n if (data.files.length) {\n const imageFiles: File[] = [];\n const imageTypes = getPluginOptions<ImagePluginOptions>(editor, PluginKeys.image)?.imageTypes;\n for (const file of data.files as FileList) {\n if (imageTypes.includes(file.type)) {\n imageFiles.push(file);\n }\n }\n if (imageFiles.length) {\n return ImageEditor.insertImages(editor, imageFiles);\n }\n }\n insertData(data);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.image) {\n return TheImageComponent;\n }\n return renderElement(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.image) {\n return true;\n }\n return isBlockCard(element);\n };\n\n return editor;\n};\n\nexport const createImagePlugin = createPluginFactory<ImagePluginOptions>({\n key: PluginKeys.image,\n withOverrides: withImage,\n toolbarItems: [\n {\n key: ElementKinds.image,\n icon: 'image',\n name: '图片',\n execute: editor => ImageEditor.openUpload(editor),\n active: editor => ImageEditor.isImageActive(editor)\n }\n ],\n options: {\n allowParentTypes: [ElementKinds.listItem, ElementKinds.tableCell, ElementKinds.blockquote],\n imageTypes: ['image/png', 'image/jpeg', 'image/gif', 'image/bmp']\n }\n});\n","import { Element } from 'slate';\r\nimport { LIST_BLOCK_TYPES } from '../../../constants/node-types';\r\n\r\nexport const isList = (n: Element) => {\r\n return [...LIST_BLOCK_TYPES].includes(n.type);\r\n};\r\n","import { Editor, Path, Point, Range } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\n\nexport const isInList = (editor: Editor, at: Path | Range | Point | null = editor.selection) => {\n return TheQueries.isNodeTypeIn(editor, [ElementKinds.numberedList, ElementKinds.bulletedList], { at });\n};\n","import { Editor, Path, Element } from 'slate';\r\nimport { ElementKinds } from '../../../constants';\r\n\r\n/**\r\n * Is the list nested, i.e. its parent is a list item.\r\n */\r\nexport const isListNested = (editor: Editor, listPath: Path, options?: any) => {\r\n const [listParentNode] = Editor.parent(editor, listPath);\r\n return (listParentNode as Element).type === ElementKinds.listItem;\r\n};\r\n","import { ElementKinds } from '../../../constants';\r\n\r\nexport const getListTypes = () => {\r\n return [ElementKinds.bulletedList, ElementKinds.numberedList];\r\n};\r\n","import { Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport { getListTypes } from './get-list-types';\n\n/**\n * 获取 List 中 ListItems,过滤掉空列表嵌套\n * @param node \n * @param initialValue \n * @returns \n */\nexport const getStartListItem = (node: Element[], initialValue?: Element[]) => {\n if (!initialValue) {\n initialValue = [];\n }\n if (node) {\n return node.reduce((result: Element[], current: Element) => {\n if ((current.type === ElementKinds.listItem && !getListTypes().includes(current.children[0].type))) {\n result.push(current);\n } else {\n if (current.children) {\n getStartListItem(current.children as Element[], result);\n }\n }\n return result;\n }, initialValue);\n }\n};\n","import { Ancestor, Element, Node } from 'slate';\r\nimport { ElementKinds } from '../../../constants';\r\nimport { match } from '../../../utils/match';\r\nimport { getListTypes } from './get-list-types';\r\n\r\n/**\r\n *\r\n */\r\nexport const hasListInListItem = (listItemNode: Ancestor | Element) => {\r\n const sublist = (listItemNode.children as Node[]).find(n => match(n, { type: getListTypes() })) as Element | undefined;\r\n return listItemNode.children.length > 1 && sublist;\r\n};\r\n\r\n/**\r\n * p + ul/ol structure\r\n * @param listItemNode\r\n */\r\nexport const hasStableListInListItem = (listItemNode: Ancestor | Element) => {\r\n const sublist = (listItemNode.children as Node[]).find(n => match(n, { type: getListTypes() })) as Element | undefined;\r\n return listItemNode.children.length === 2 && sublist;\r\n};\r\n\r\n/**\r\n * li + p structure\r\n * @param listItemNode\r\n */\r\nexport const hasStableListItem = (listItemNode: Ancestor | Element) => {\r\n const type = (listItemNode.children[0] as Element).type;\r\n return listItemNode.children.length === 1 && type === ElementKinds.paragraph;\r\n};\r\n","import { Element, Node } from 'slate';\nimport { ElementKinds } from '../../../constants/node-types';\n\nexport const isNodeTypeList = (n: Node): n is Element => {\n return [ElementKinds.bulletedList, ElementKinds.numberedList].includes((n as Element).type);\n};\n","import { Node, Element } from 'slate';\r\nimport { hasListInListItem } from './has-list-in-list-item';\r\nimport { isNodeTypeList } from './is-node-type-list';\r\n\r\n/**\r\n * list 中 是否是单个listItem,且listItem没有子列表\r\n */\r\nexport const isSingleListItem = (list: Node) => {\r\n return isNodeTypeList(list) && (list.children as Node[]).length === 1 && !hasListInListItem(list.children[0] as Element);\r\n};\r\n","import { Editor, Location, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\nimport { ListItemElement } from '../../../custom-types';\nimport { isList } from './is-list';\n\n/**\n * 如果at(默认= selection)位于ul> li> p中,则返回li和ul节点条目。\n */\nexport const getListItemEntry = (editor: Editor, { at = editor.selection }: { at?: Location | null } = {}) => {\n if (at && TheQueries.isNodeTypeIn(editor, ElementKinds.listItem, { at })) {\n const selectionParent = TheQueries.getParent(editor, at);\n if (!selectionParent) return;\n const [, paragraphPath] = selectionParent;\n\n const listItem = TheQueries.getAboveByType(editor, ElementKinds.listItem, { at }) || TheQueries.getParent(editor, paragraphPath);\n\n if (!listItem) return;\n const [listItemNode, listItemPath] = listItem;\n\n if ((listItemNode as ListItemElement).type !== ElementKinds.listItem) return;\n\n const list = TheQueries.getParent(editor, listItemPath);\n if (!list || !isList(list[0] as Element)) return;\n\n return {\n list,\n listItem\n };\n }\n};\n","import { Editor } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\n\n/**\n * Is the selection focus at the start of its parent block.\n */\nexport const isSelectionAtListItemStart = (editor: Editor) => {\n const listItemEntry = TheQueries.getAboveByType(editor, [ElementKinds.listItem]);\n if (listItemEntry) {\n return TheQueries.isStart(editor, editor.selection.focus, listItemEntry[1]);\n }\n return false;\n};\n","import { NodeEntry, Ancestor, Node, Path, Transforms, Editor, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { hasListInListItem } from '../queries/has-list-in-list-item';\nimport { getListItemEntry } from '../queries/get-list-item-entry';\n\nexport interface InsertListDataOptions {\n /**\n * 要粘贴的list数据\n */\n fromList: Element;\n\n /**\n * 粘贴list数据至此\n */\n toListItemEntry: NodeEntry<Ancestor>;\n}\n\nexport const insertListData = (editor: Editor, { fromList, toListItemEntry }: InsertListDataOptions) => {\n const { children } = fromList;\n const [toListItem, toListItemPath] = toListItemEntry;\n const nextListItemPath = Path.next(toListItemPath);\n const toListItemIsEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const hasSubList = hasListInListItem(toListItem as Element);\n\n let selectPath = [...toListItemPath];\n const liIndex = selectPath.pop();\n selectPath = [...selectPath, liIndex + children.length];\n\n Editor.withoutNormalizing(editor, () => {\n if (toListItemIsEmptyParagraph && hasSubList) {\n Transforms.insertNodes(editor, children, { at: nextListItemPath });\n } else {\n const insertListItemPath = toListItemIsEmptyParagraph ? toListItemPath : nextListItemPath;\n // 如果粘贴目标listItem为空,则先删除listItem\n if (toListItemIsEmptyParagraph) {\n Transforms.removeNodes(editor, { at: insertListItemPath });\n selectPath = Path.previous(selectPath);\n }\n Transforms.insertNodes(editor, children, { at: insertListItemPath });\n }\n\n /**\n * 粘贴目标lisItem有子列表\n */\n if (hasSubList) {\n const paragraphPath = toListItemPath.concat([0]);\n const nextSubListPath = Path.next(paragraphPath);\n\n // 判断粘贴数据是否是多级\n if (hasListInListItem(fromList.children[0] as Element)) {\n // 设置粘贴后正确选区\n Transforms.select(editor, Editor.end(editor, nextListItemPath));\n\n // 获取当前选区所在listItem entry\n const currentListItemEntry = getListItemEntry(editor, {});\n // 获取粘贴目标listItem中的子列表\n const { children: subListChildren } = Node.get(editor, nextSubListPath) as Element;\n\n /**\n * 复制子列表数据\n * 之所以是复制,而不是移动,因为无法单纯一次性移动子列表的所有listItem(不包含subList本身)到目标位置,\n * 需要循环移动才可以\n **/\n Transforms.insertNodes(editor, subListChildren as Node[], {\n at: Path.next(currentListItemEntry.listItem[1])\n });\n // 删除已被复制后无用的listItem/listItem subList\n Transforms.delete(editor, {\n at: toListItemIsEmptyParagraph ? toListItemPath : nextSubListPath\n });\n return;\n }\n\n Transforms.select(editor, Editor.end(editor, selectPath));\n\n // 粘贴数据不是多级\n const currentListItemEntry = getListItemEntry(editor, {});\n Transforms.moveNodes(editor, {\n at: nextSubListPath,\n to: currentListItemEntry.listItem[1].concat(1)\n });\n\n if (toListItemIsEmptyParagraph) {\n Transforms.delete(editor, { at: toListItemPath });\n }\n return;\n }\n });\n\n // 粘贴目标listItem没有子列表, 设置选区\n Transforms.select(editor, Editor.end(editor, selectPath));\n return;\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\nimport { ListItemElement } from '../../../custom-types';\n\nexport interface MoveListItemUpOptions {\n list: NodeEntry<Ancestor>;\n listItem: NodeEntry<Ancestor>;\n}\n\n/**\n * 将列表项移到其父项旁边。\n * 父项应为列表项。\n */\nexport const moveListItemUp = (editor: Editor, { list, listItem }: MoveListItemUpOptions, options?: any) => {\n const [listNode, listPath] = list;\n const [, listItemPath] = listItem;\n\n const listParentEntry = TheQueries.getParent(editor, listPath);\n if (!listParentEntry) return;\n const [listParentNode, listParentPath] = listParentEntry;\n\n if ((listParentNode as Element).type !== ElementKinds.listItem) {\n return;\n }\n\n Editor.withoutNormalizing(editor, () => {\n const newListItemPath = Path.next(listParentPath);\n\n // 将 item 上移一层\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: newListItemPath\n });\n\n /**\n * 将下一个兄弟节点移动到新列表\n */\n const listItemIdx = listItemPath[listItemPath.length - 1];\n const siblingPath = [...listItemPath];\n const newListPath = newListItemPath.concat(1);\n let siblingFound = false;\n let newSiblingIdx = 0;\n\n listNode.children.forEach((n, idx) => {\n if (listItemIdx < idx) {\n if (!siblingFound) {\n siblingFound = true;\n\n Transforms.insertNodes(\n editor,\n {\n type: (listNode as ListItemElement).type,\n children: []\n },\n { at: newListPath }\n );\n }\n\n siblingPath[siblingPath.length - 1] = listItemIdx;\n const newSiblingsPath = newListPath.concat(newSiblingIdx);\n newSiblingIdx++;\n Transforms.moveNodes(editor, {\n at: siblingPath,\n to: newSiblingsPath\n });\n }\n });\n\n // 处理listItem下方有段落的情况\n const listIndex = listParentNode.children.findIndex(item => item.key === (listNode as Element).key);\n const behindNode = listParentNode.children.slice(listIndex + 1);\n if (behindNode.length > 0) {\n const nextPath = Path.next(newListItemPath);\n Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: []\n },\n { at: nextPath }\n );\n const moveStartPath = TheQueries.findPath(editor, behindNode[0]);\n const moveEndPath = TheQueries.findPath(editor, behindNode[behindNode.length - 1]);\n const moveRange = Editor.range(editor, moveStartPath, moveEndPath);\n Transforms.moveNodes(editor, {\n at: moveRange,\n to: nextPath.concat(0),\n match: node => behindNode.includes(node as any)\n });\n }\n\n // 删除子列表(如果它是第一个列表项)\n if (!listItemIdx) {\n Transforms.removeNodes(editor, {\n at: listPath\n });\n }\n });\n return true;\n};\n","import { Editor, Path, Range, Transforms, Element } from 'slate';\nimport { TheEditor } from '../../../interfaces';\nimport { ElementKinds } from '../../../constants';\nimport * as TheQueries from '../../../queries';\n\n/**\n * Insert list item if selection in li>p.\n */\nexport const insertListItem = (editor: Editor) => {\n if (editor.selection && !TheQueries.isRangeAtRoot(editor.selection)) {\n const paragraphEntry = TheQueries.getAboveByType(editor, ElementKinds.paragraph);\n if (!paragraphEntry) {\n return;\n }\n const [, paragraphPath] = paragraphEntry;\n\n const [listItemNode, listItemPath] = Editor.parent(editor, paragraphPath);\n if (Element.isElement(listItemNode) && listItemNode.type !== ElementKinds.listItem) {\n return;\n }\n\n if (!Range.isCollapsed(editor.selection)) {\n Transforms.delete(editor);\n }\n\n const isEnd = TheQueries.isBlockTextEmptyAfterSelection(editor);\n const nextNodePath = Path.next(paragraphPath);\n const nextListItemPath = Path.next(listItemPath);\n const nextEnd = Editor.end(editor, listItemPath);\n\n /**\n * If not end, split nodes, wrap a list item on the new paragraph and move it to the next list item\n */\n if (!isEnd) {\n Editor.withoutNormalizing(editor, () => {\n Transforms.splitNodes(editor, { at: editor.selection, always: true });\n Transforms.wrapNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: []\n },\n { at: nextNodePath }\n );\n Transforms.moveNodes(editor, {\n at: nextNodePath,\n to: nextListItemPath\n });\n });\n } else {\n /**\n * If end, split nodes\n */\n Editor.withoutNormalizing(editor, () => {\n Transforms.splitNodes(editor, {\n always: true,\n mode: 'highest',\n match: node => {\n const path = node && TheEditor.findPath(editor, node);\n return path && path.length === nextListItemPath.length;\n }\n });\n });\n }\n\n /**\n * If there is a list in the list item, move it to the next list item\n */\n if (TheQueries.getNode(editor, nextNodePath)) {\n Transforms.moveNodes(editor, {\n at: Editor.range(editor, nextNodePath, nextEnd),\n to: nextListItemPath.concat(1),\n match: node => {\n // TODO: types\n return listItemNode.children.includes(node as any);\n }\n });\n }\n\n return true;\n }\n};\n","import { Editor } from 'slate';\nimport * as TheTransforms from '../../../transforms';\nimport { ElementKinds } from '../../../constants/node-types';\n\nexport const unwrapList = (editor: Editor) => {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, ElementKinds.listItem);\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true });\n });\n};\n","import { Ancestor, NodeEntry } from 'slate';\r\nimport { hasListInListItem } from './has-list-in-list-item';\r\n\r\n/**\r\n * 获取 listItem 内的列表(如果存在).\r\n * 它采用以下结构:ul> li > span + ul\r\n */\r\nexport const getListItemSublist = (listItem: NodeEntry<Ancestor>, options?: any): NodeEntry<Ancestor> | undefined => {\r\n const [listItemNode, listItemPath] = listItem;\r\n\r\n if (hasListInListItem(listItemNode)) {\r\n return [listItemNode.children[1] as Ancestor, listItemPath.concat([1])];\r\n }\r\n};\r\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element } from 'slate';\nimport { moveChildren } from '../../../transforms/move-children';\nimport { getListItemSublist } from '../queries/get-list-item-sublist';\nimport * as TheQueries from '../../../queries';\n\nexport interface MoveListItemSublistItemsToListItemSublistOptions {\n /**\n * The list item to merge.\n */\n fromListItem: NodeEntry<Ancestor>;\n\n /**\n * The list item where to merge.\n */\n toListItem: NodeEntry<Ancestor>;\n\n /**\n * Move to the start of the list instead of the end.\n */\n start?: boolean;\n}\n\n/**\n * Move fromListItem sublist list items to the end of `toListItem` sublist.\n * If there is no `toListItem` sublist, insert one.\n */\nexport const moveListItemSublistItemsToListItemSublist = (\n editor: Editor,\n { fromListItem, toListItem, start }: MoveListItemSublistItemsToListItemSublistOptions,\n options?: any\n) => {\n const [, fromListItemPath] = fromListItem;\n const [toListItemNode, toListItemPath] = toListItem;\n\n const fromListItemSublist = getListItemSublist(fromListItem, options);\n if (!fromListItemSublist) return 0;\n const [, fromListItemSublistPath] = fromListItemSublist;\n\n const toListItemSublist = getListItemSublist(toListItem, options);\n\n let to: Path;\n\n if (!toListItemSublist) {\n const fromList = TheQueries.getParent(editor, fromListItemPath);\n if (!fromList) return 0;\n const [fromListNode] = fromList;\n\n const fromListType = (fromListNode as Element).type;\n const toListItemSublistPath = toListItemPath.concat([toListItemNode.children.length]);\n Transforms.insertNodes(editor, { type: fromListType, children: [] } as Element, { at: toListItemSublistPath });\n\n to = toListItemSublistPath.concat([0]);\n } else if (start) {\n const [, toListItemSublistPath] = toListItemSublist;\n to = toListItemSublistPath.concat([0]);\n } else {\n to = Path.next(TheQueries.getLastChildPath(toListItemSublist));\n }\n\n const moved = moveChildren(editor, {\n at: Path.previous(fromListItemSublistPath),\n to\n });\n\n // Remove the empty list\n Transforms.delete(editor, { at: fromListItemPath });\n\n return moved;\n};\n","import { Editor, Node, NodeEntry, Path, Element } from 'slate';\r\nimport { ListItemElement } from '../../../custom-types';\r\nimport { ElementKinds } from '../../../constants';\r\nimport { insertParagraph } from '../../../transforms/insert-paragraph';\r\n\r\nexport const normalizeListItem = (editor: Editor, { nodeEntry }: { nodeEntry: NodeEntry<ListItemElement> }) => {\r\n const [listItemNode, listItemPath] = nodeEntry;\r\n const firstChildPath: Path = listItemPath.concat([0]);\r\n const firstChild = (listItemNode.children as Node[])?.[0];\r\n\r\n if (!firstChild) {\r\n insertParagraph(editor, firstChildPath);\r\n return true;\r\n }\r\n\r\n // Ensure that all lists have a <p> tag as a first element\r\n if (Element.isElement(firstChild) && (firstChild.type === ElementKinds.bulletedList || firstChild.type === ElementKinds.numberedList)) {\r\n insertParagraph(editor, firstChildPath);\r\n return true;\r\n }\r\n};\r\n","import { Editor, Transforms, Path, Node, NodeEntry, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport * as TheTransforms from '../../../transforms';\n\n// 列表续号\nexport const normalizeNo = (editor: Editor, nodeEntry: NodeEntry) => {\n const [listNode, listPath] = nodeEntry;\n let moved = false;\n Editor.withoutNormalizing(editor, () => {\n /**\n * 获取nextList判断是否为同类型list\n * 如果为同类型list,则把nextList children移动到当前list的尾部, 并删除nextList\n */\n const nextPath = Path.next(listPath);\n const nextNode = TheQueries.getNode(editor, nextPath) as Node;\n if (nextNode && Element.isElement(nextNode) && Element.isElement(listNode) && nextNode.type === listNode.type) {\n TheTransforms.moveChildren(editor, {\n at: [nextNode, nextPath],\n to: listPath.concat((listNode.children as Node[]).length)\n });\n Transforms.removeNodes(editor, { at: nextPath });\n moved = true;\n }\n\n if (listPath[listPath.length - 1] !== 0) {\n /**\n * 获取prevList判断是否为同类型list\n * 如果为同类型list,则把当前list children移动到prevList的尾部, 并删除当前List\n */\n const currentListNode = TheQueries.getNode(editor, listPath);\n const prevPath = Path.previous(listPath);\n const prevNode = TheQueries.getNode(editor, prevPath) as Node;\n if (prevNode && Element.isElement(prevNode) && Element.isElement(currentListNode) && prevNode.type === currentListNode.type) {\n TheTransforms.moveChildren(editor, {\n at: [currentListNode, listPath],\n to: prevPath.concat((prevNode.children as Node[]).length)\n });\n Transforms.removeNodes(editor, { at: listPath });\n moved = true;\n }\n }\n });\n return moved;\n};\n","import { Descendant, Editor, NodeEntry, Transforms, Element } from 'slate';\r\nimport { ElementKinds } from '../../../constants';\r\nimport { match } from '../../../utils/match';\r\nimport { getListTypes } from '../queries/get-list-types';\r\nimport { normalizeListItem } from './normalize-list-item';\r\nimport { ListNormalizerOptions } from '../types';\r\nimport { normalizeNo } from './normalize-no';\r\nimport { isList } from '../queries/is-list';\r\nimport { TheHistoryEditor } from '../../common/history.plugin';\r\n\r\n/**\r\n * Normalize list node to force the ul>li>p+ul structure.\r\n */\r\nexport const getListNormalizer = (editor: Editor, { validLiChildrenTypes }: ListNormalizerOptions) => {\r\n const { normalizeNode } = editor;\r\n\r\n return ([node, path]: NodeEntry) => {\r\n // 不是选区, 执行续号检测操作\r\n if (isList(node as Element) && !TheHistoryEditor.isUndoing(editor)) {\r\n const moved = normalizeNo(editor, [node, path]);\r\n if (moved) {\r\n return;\r\n }\r\n }\r\n\r\n if (match(node, { type: getListTypes() })) {\r\n if (Element.isElement(node) && !(node.children as Descendant[]).length) {\r\n return Transforms.removeNodes(editor, { at: path });\r\n }\r\n }\r\n\r\n // normalize list item\r\n // 1. list-item at least one child\r\n // 2. list-item first child is not list\r\n if (Element.isElement(node) && node.type === ElementKinds.listItem) {\r\n if (normalizeListItem(editor, { nodeEntry: [node, path] })) {\r\n // Tree changed - kick off another normalization\r\n return;\r\n }\r\n }\r\n\r\n normalizeNode([node, path]);\r\n };\r\n};\r\n","import { Ancestor, Editor, NodeEntry, Path, Transforms } from 'slate';\nimport { getListTypes } from '../queries/get-list-types';\nimport { moveChildren } from '../../../transforms/move-children';\nimport * as TheQueries from '../../../queries';\n\nexport interface MergeListItemIntoListOptions {\n /**\n * 该节点的子列表的列表项将被移动。\n */\n fromListItem: NodeEntry<Ancestor>;\n\n /**\n * 列表项将被移动到该列表中。\n */\n toList: NodeEntry<Ancestor>;\n\n /**\n * 具体位置\n */\n location?: number;\n}\n\n/**\n * 将 fromListItem 子列表的列表项移到 toList\n */\nexport const moveListItemSublistItemsToList = (editor: Editor, { fromListItem, toList, location }: MergeListItemIntoListOptions) => {\n const fromListItemSublist = TheQueries.findDescendant(editor, {\n at: fromListItem[1],\n match: {\n type: getListTypes()\n }\n });\n if (!fromListItemSublist) return 0;\n\n const [, fromListItemSublistPath] = fromListItemSublist;\n const lastChildPath = TheQueries.getLastChildPath(toList);\n let moved: number;\n Editor.withoutNormalizing(editor, () => {\n moved = moveChildren(editor, {\n at: fromListItemSublistPath,\n to: location ? toList[1].concat(location) : Path.next(lastChildPath)\n });\n\n // 删除空白列表\n Transforms.delete(editor, { at: fromListItemSublistPath });\n });\n\n return moved;\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element, Node } from 'slate';\r\nimport { getListItemEntry } from '../queries/get-list-item-entry';\r\nimport { hasListInListItem } from '../queries/has-list-in-list-item';\r\nimport { moveListItemSublistItemsToList } from './move-list-item-sublist-items-to-list';\r\nimport { isNodeTypeList } from '../queries/is-node-type-list';\r\n\r\nexport interface MoveListItemDownOptions {\r\n list: NodeEntry<Ancestor>;\r\n listItem: NodeEntry<Ancestor>;\r\n}\r\n\r\nexport const moveListItemDown = (editor: Editor, { list, listItem }: MoveListItemDownOptions) => {\r\n const [listNode] = list;\r\n const [, listItemPath] = listItem;\r\n\r\n Editor.withoutNormalizing(editor, () => {\r\n // 以前的兄弟是新父级\r\n const previousSiblingItem = Editor.node(editor, Path.previous(listItemPath)) as NodeEntry<Ancestor>;\r\n\r\n if (previousSiblingItem) {\r\n const [previousNode, previousPath] = previousSiblingItem;\r\n const lastChildIndexOfPreviousNode = previousNode.children.length - 1;\r\n const lastChildOfPreviousNode = previousNode.children[lastChildIndexOfPreviousNode] as Element;\r\n\r\n const newPath = previousPath.concat(\r\n isNodeTypeList(lastChildOfPreviousNode)\r\n ? [lastChildIndexOfPreviousNode, lastChildOfPreviousNode.children.length]\r\n : [previousNode.children.length]\r\n );\r\n\r\n if (!isNodeTypeList(lastChildOfPreviousNode)) {\r\n // 创建新子列表\r\n const type = (listNode as Element).type;\r\n Transforms.wrapNodes(editor, { type, children: [] } as Element, {\r\n at: listItemPath\r\n });\r\n }\r\n // 将当前listItem移动到子列表\r\n Transforms.moveNodes(editor, {\r\n at: listItemPath,\r\n to: newPath\r\n });\r\n\r\n const currentListItemEntry = getListItemEntry(editor, {});\r\n if (hasListInListItem(currentListItemEntry.listItem[0])) {\r\n moveListItemSublistItemsToList(editor, {\r\n fromListItem: currentListItemEntry.listItem,\r\n toList: currentListItemEntry.list\r\n });\r\n }\r\n }\r\n });\r\n};\r\n","import { Editor } from 'slate';\nimport { moveListItemUp } from './transforms/move-list-item-up';\nimport { moveListItemDown } from './transforms/move-list-item-down';\nimport { getListItemEntry } from './queries/get-list-item-entry';\nimport * as TheQueries from '../../queries';\n\nexport function onKeyDownList(e: KeyboardEvent, editor: Editor) {\n let moved: boolean | undefined = false;\n if (e.key === 'Tab') {\n const res = getListItemEntry(editor, {});\n if (!res) {\n return false;\n }\n const { list, listItem } = res;\n const [, listItemPath] = listItem;\n\n e.preventDefault();\n\n // move up with shift+tab\n const shiftTab = e.shiftKey;\n if (shiftTab) {\n moved = moveListItemUp(editor, { list, listItem });\n if (moved) {\n e.preventDefault();\n return true;\n }\n }\n\n // move down with tab\n const tab = !e.shiftKey;\n if (tab && !TheQueries.isFirstChild(listItemPath)) {\n moveListItemDown(editor, { list, listItem });\n return true;\n }\n return false;\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, HostBinding } from '@angular/core';\nimport { Editor } from 'slate';\nimport { NumberedListElement } from '../../../custom-types';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'ol[theOl]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheNumberedListComponent extends TheBaseElementComponent<NumberedListElement, Editor> implements OnInit, OnDestroy {\n @HostBinding('attr.start')\n get start() {\n return this.element.start;\n }\n\n @HostBinding('attr.the-level')\n get level() {\n return this.element?.indent;\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, HostBinding } from '@angular/core';\nimport { Editor } from 'slate';\nimport { BulletedListElement } from '../../../custom-types';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'ul[theUl]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheBulletedListComponent extends TheBaseElementComponent<BulletedListElement, Editor> implements OnInit, OnDestroy {\n @HostBinding('attr.the-level')\n get level() {\n return this.element?.indent;\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Element, Node, Text } from 'slate';\nimport { FontSizes, MarkTypes } from '../../../constants/node-types';\nimport { TheBaseElementComponent } from '../../../interfaces';\nimport * as TheQueries from '../../../queries';\n\n@Component({\n selector: 'li[theLi]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheListItemComponent extends TheBaseElementComponent<Element, Editor> implements OnInit, OnDestroy {\n fontSizeClass: string;\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n onContextChange() {\n super.onContextChange();\n this.addFontSize();\n this.addMultiDigit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n addFontSize() {\n let firstText: Text;\n for (const entry of Node.descendants(this.element)) {\n const node = entry[0];\n if (Text.isText(node) && !firstText) {\n firstText = node;\n break;\n }\n }\n if (!firstText) {\n return;\n }\n\n const { text, ...rest } = firstText;\n const size = rest[MarkTypes.fontSize];\n\n if (size) {\n const sizeClass = `font-size-${size}`;\n const isContains = this.elementRef.nativeElement?.classList?.contains(sizeClass);\n if (isContains) {\n return;\n }\n this.clearFontSize();\n this.elementRef.nativeElement.classList.add(sizeClass);\n this.fontSizeClass = sizeClass;\n } else {\n this.clearFontSize();\n }\n }\n\n clearFontSize() {\n if (this.fontSizeClass) {\n this.elementRef.nativeElement.classList.remove(this.fontSizeClass);\n this.fontSizeClass = null;\n }\n }\n\n getStart() {\n const parent = this.elementRef.nativeElement.closest('.slate-element-numbered-list');\n const start = parent?.getAttribute('start') || 1;\n return Number(start);\n }\n\n getLiIndex() {\n const path = TheQueries.findPath(this.editor, this.element);\n const index = path[path.length - 1];\n return index || 0;\n }\n\n addMultiDigit() {\n const start = this.getStart();\n const index = this.getLiIndex();\n const multiDigit = 'data-multi-digit';\n\n // start number + index\n // when it is greater than 9, it is a multi-digit serial number\n // exclude Font size >= 20\n if (start + index > 9) {\n this.elementRef.nativeElement.setAttribute(multiDigit, true);\n } else {\n this.elementRef.nativeElement.removeAttribute(multiDigit);\n }\n }\n}\n","import { Editor, Range, Path } from 'slate';\nimport { getAboveByType } from '../../../queries/get-above-by-type';\nimport { ElementKinds } from '../../../constants/node-types';\n\n/**\n * Is the selection in same li\n */\nexport const isSelectionInSameListItem = (\n editor: Editor\n) => {\n const { selection } = editor;\n\n if (!selection) {\n return false;\n }\n\n const [start, end] = Range.edges(selection);\n const startListItemEntry = getAboveByType(editor, ElementKinds.listItem, { at: start.path });\n const endListItemEntry = getAboveByType(editor, ElementKinds.listItem, { at: end.path });\n\n return startListItemEntry && endListItemEntry && Path.equals(startListItemEntry[1], endListItemEntry[1]);\n};","import { Transforms, Node, Editor, Path, Element } from 'slate';\nimport { ElementKinds, LIST_BLOCK_TYPES } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { isNodeTypeList } from './queries/is-node-type-list';\n\nexport const ListEditor = {\n isList(editor: Editor, element: Element, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n return Editor.isBlock(editor, element) && element.type === type;\n },\n toggleList(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList, startIndex?: number) {\n if (!editor.selection) {\n return;\n }\n if (!startIndex) {\n startIndex = 1;\n }\n const types = [ElementKinds.bulletedList, ElementKinds.numberedList];\n\n Editor.withoutNormalizing(editor, () => {\n const [...listItems] = Editor.nodes(editor, {\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem,\n mode: 'lowest'\n });\n const firstListItemPath = listItems.length && listItems[0][1];\n const activeListPath = listItems.length && Path.parent(firstListItemPath);\n const activeListNode = listItems.length && (Node.get(editor, activeListPath) as Element);\n\n // 同级且类型相同:unwrap\n const isLowestActive =\n listItems.length &&\n listItems.every(\n ([, path]) =>\n activeListNode.type === type && (Path.isSibling(firstListItemPath, path) || Path.equals(firstListItemPath, path))\n );\n if (isLowestActive) {\n const upListItem = Path.parent(activeListPath);\n Transforms.unwrapNodes(editor, {\n at: editor.selection,\n match: node => node === activeListNode,\n split: true,\n mode: 'lowest'\n });\n if (upListItem && (Node.get(editor, upListItem) as Element).type === ElementKinds.listItem) {\n Transforms.moveNodes(editor, {\n at: editor.selection,\n to: Path.next(upListItem),\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n } else {\n Transforms.unwrapNodes(editor, {\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n }\n return;\n }\n\n // 跨级、同级且类型不同\n if (activeListNode && types.includes(activeListNode.type)) {\n Transforms.setNodes(\n editor,\n { type },\n { match: node => Element.isElement(node) && node.type !== type && types.includes(node.type) }\n );\n return;\n }\n\n // wrap\n ListEditor.buildListItem(editor);\n Transforms.wrapNodes(editor, { type, children: [], start: startIndex } as Element, {\n at: editor.selection,\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n });\n },\n unwrapList(editor: Editor) {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true, mode: 'all' });\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.listItem], { split: true, mode: 'all' });\n });\n },\n wrapList(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n Editor.withoutNormalizing(editor, () => {\n const listItem: Element = {\n type: ElementKinds.listItem,\n children: []\n };\n const list = {\n type,\n children: []\n };\n Transforms.wrapNodes(editor, list, { split: true });\n Transforms.wrapNodes(editor, listItem, { split: true });\n });\n },\n isActive(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n const [match] = TheQueries.getNodesByType(editor, type);\n return !!match;\n },\n getActiveList(editor: Editor) {\n const [match] = TheQueries.getNodesByType(editor, LIST_BLOCK_TYPES);\n return match;\n },\n buildListItem(editor: Editor) {\n const nodes = Editor.nodes(editor, {\n match: node => Editor.isBlock(editor, node),\n mode: 'lowest'\n });\n for (const [node, path] of nodes) {\n if (!Editor.isVoid(editor, node) && Element.isElement(node) && node.type !== ElementKinds.paragraph) {\n Transforms.setNodes(\n editor,\n { type: ElementKinds.paragraph, checked: undefined } as any, // todo remove checked\n { at: path }\n );\n } else if (Element.isElement(node) && node.type === ElementKinds.paragraph) {\n let { textIndent } = node;\n if (textIndent) {\n Transforms.setNodes(\n editor,\n { textIndent: undefined, indent: undefined }, // remove indent\n { at: path }\n );\n }\n }\n if ((Node.parent(editor, path) as Element).type !== ElementKinds.listItem) {\n Transforms.wrapNodes(\n editor,\n { type: ElementKinds.listItem, children: [] },\n {\n at: path,\n split: true\n }\n );\n }\n }\n },\n buildInsertDataChildren(node: Element) {\n const { children } = node;\n const listItem = children[0];\n if (isNodeTypeList(node) && Element.isElement(listItem) && (listItem.children[0] as Element).type === ElementKinds.paragraph) {\n return node;\n }\n\n return ListEditor.buildInsertDataChildren(listItem as Element);\n }\n};\n","import { Transforms, Node, Editor, Path, Ancestor, Element } from 'slate';\nimport { AngularEditor, getPlainText } from 'slate-angular';\nimport { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { isList } from './queries/is-list';\nimport { isInList } from './queries/is-in-list';\nimport { isListNested } from './queries/is-list-nested';\nimport { getListTypes } from './queries/get-list-types';\nimport { getStartListItem } from './queries/get-start-list-item';\nimport { isSingleListItem } from './queries/is-single-list-item';\nimport { getListItemEntry } from './queries/get-list-item-entry';\nimport { hasListInListItem, hasStableListInListItem, hasStableListItem } from './queries/has-list-in-list-item';\nimport { isSelectionAtListItemStart } from './queries/is-selection-at-list-item-start';\nimport { insertListData } from './transforms/insert-list-data';\nimport { moveListItemUp } from './transforms/move-list-item-up';\nimport { insertListItem } from './transforms/insert-list-item';\nimport { unwrapList } from './transforms/unwrap-list';\nimport { moveListItemSublistItemsToListItemSublist } from './transforms/move-list-item-sublist-items-to-list-item-sublist';\nimport { getListNormalizer } from './normalizers/get-list-normalizer';\nimport { onKeyDownList } from './on-key-down-list';\nimport { WithListOptions } from './types';\nimport { TheNumberedListComponent } from './components/numbered-list.component';\nimport { TheBulletedListComponent } from './components/bulleted-list.component';\nimport { TheListItemComponent } from './components/list-item.component';\nimport { extractFragment } from '../../utils/fragment';\nimport { isSelectionInSameListItem } from './queries/is-selection-in-same-list-item';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { ListEditor } from './list.editor';\n\nexport const withList = <T extends Editor>(editor: T): T => {\n const { insertBreak, deleteBackward, onKeydown, insertData, setFragmentData, renderElement } = editor;\n\n const validLiChildrenTypes = getPluginOptions<WithListOptions>(editor, PluginKeys.list)?.validLiChildrenTypes ?? [];\n\n const resetBlockTypesListRule = {\n types: [ElementKinds.listItem],\n defaultType: ElementKinds.paragraph,\n onReset: (_editor: Editor) => unwrapList(_editor)\n };\n\n editor.insertBreak = () => {\n const node = TheQueries.anchorBlock(editor);\n\n if (!node) {\n insertBreak();\n return;\n }\n\n const isVoid = Editor.isVoid(editor, node);\n if (isVoid) {\n insertBreak();\n return;\n }\n const listEntry = getListItemEntry(editor, {});\n if (listEntry) {\n let moved: boolean | undefined;\n const { list, listItem } = listEntry;\n const [listItemNode, listItemPath] = listItem;\n const cursor = editor.selection.focus;\n const isStart = Editor.isStart(editor, cursor, listItemPath);\n\n // deprecated\n // 如果有子级\n if (hasListInListItem(listItemNode)) {\n /**\n * If selection is at the end of li,\n * insert below li where children will be moved.\n */\n if (Editor.isEnd(editor, cursor, listItemPath)) {\n return Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: Path.next(listItemPath), select: true }\n );\n }\n\n /**\n * 如果选区是在listItem的开头,则在listItem上方插入\n */\n if (isStart) {\n return Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: listItemPath }\n );\n }\n }\n\n // 如果选择的listItem为空则将其向上移动\n if (isStart && TheQueries.isBlockAboveEmpty(editor)) {\n moved = moveListItemUp(editor, { list, listItem });\n if (moved) return;\n }\n\n const didReset = TheTransforms.onKeyDownResetBlockType({\n rules: [\n {\n ...resetBlockTypesListRule,\n predicate: () => !moved && isStart && TheQueries.isBlockAboveEmpty(editor)\n }\n ]\n })(null, editor);\n if (didReset) {\n return;\n }\n\n /**\n * Add a new list item if selection is in a LIST_ITEM > p.type.\n */\n if (!moved) {\n const inserted = insertListItem(editor);\n if (inserted) {\n return;\n }\n }\n }\n\n insertBreak();\n };\n\n editor.setFragmentData = unit => {\n const { selection } = editor;\n const [start] = Editor.edges(editor, selection);\n if (isInList(editor, start)) {\n const fragmentData = editor.getFragment();\n const fragmentElement = fragmentData[0] as Element;\n if (getListTypes().includes(fragmentElement.type)) {\n const startNodes = getStartListItem([fragmentElement.children[0]] as Element[]);\n const children = startNodes.concat((fragmentElement.children as Element[]).slice(1));\n let fragmentNodes = [\n {\n ...fragmentElement,\n children\n }\n ] as Node[];\n if (isSelectionInSameListItem(editor)) {\n // 仅仅复制列表中的内容\n fragmentNodes = children[0].children;\n }\n const fragment = fragmentNodes.concat(fragmentData.slice(1));\n const domRange = AngularEditor.toDOMRange(editor, selection);\n const contents = domRange.cloneContents();\n const stringObj = JSON.stringify(fragment);\n const encoded = window.btoa(encodeURIComponent(stringObj));\n unit.setData(`application/${CLIPBOARD_FORMAT_KEY}`, encoded);\n const div = document.createElement('div');\n div.appendChild(contents);\n div.setAttribute('hidden', 'true');\n document.body.appendChild(div);\n unit.setData('text/html', div.innerHTML);\n unit.setData('text/plain', getPlainText(div));\n document.body.removeChild(div);\n return;\n }\n }\n setFragmentData(unit);\n };\n\n editor.deleteBackward = unit => {\n const res = getListItemEntry(editor, {});\n\n if (res && isSelectionAtListItemStart(editor)) {\n const { list, listItem } = res;\n const [, listPath] = list;\n const [listItemNode, listItemPath] = listItem;\n\n const previousListItemPath = TheQueries.getPreviousPath(listItemPath);\n\n if (previousListItemPath) {\n const beforePoint = Editor.before(editor, listItemPath);\n const parentPath = Path.parent(beforePoint.path);\n const parentNode = Node.get(editor, parentPath);\n if (Editor.isVoid(editor, parentNode)) {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], {\n split: true\n });\n TheTransforms.unwrapNodesByType(editor, ElementKinds.listItem);\n });\n return;\n }\n }\n\n if (previousListItemPath && hasStableListInListItem(listItemNode)) {\n Editor.withoutNormalizing(editor, () => {\n deleteBackward(unit);\n const [previousListItemNode] = Editor.node(editor, previousListItemPath);\n moveListItemSublistItemsToListItemSublist(\n editor,\n {\n fromListItem: listItem,\n toListItem: [previousListItemNode as Ancestor, previousListItemPath],\n start: false\n },\n {}\n );\n });\n return;\n }\n\n // move listItem children to before listItem\n if (listItemNode.children.length > 1) {\n Editor.withoutNormalizing(editor, () => {\n const beforePathRef = Editor.pathRef(editor, listItemPath);\n const beforePoint = Editor.before(editor, listItemPath);\n const startPoint = Editor.start(editor, listItemPath);\n const endPoint = Editor.end(editor, listItemPath);\n const isInFirstChild = !isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath);\n const to = isInFirstChild ? listPath : Path.next(Path.parent(beforePoint.path));\n\n Transforms.moveNodes(editor, {\n at: Editor.range(editor, startPoint, endPoint),\n to,\n match: node => listItemNode.children.includes(node as any)\n });\n Transforms.delete(editor, { at: beforePathRef.unref() });\n\n if (!isInFirstChild) {\n deleteBackward(unit);\n }\n });\n return;\n }\n\n // deprecated\n if (!isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath)) {\n unwrapList(editor);\n return;\n }\n }\n\n deleteBackward(unit);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const text = data.getData('text/plain');\n const fragment = extractFragment(data);\n const aboveEntry = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === ElementKinds.listItem\n });\n if (fragment) {\n const res = getListItemEntry(editor, {});\n if (\n fragment.length === 1 &&\n isList(fragment[0] as Element) &&\n aboveEntry &&\n !isSingleListItem(fragment[0]) &&\n hasStableListItem(res.listItem[0])\n ) {\n insertListData(editor, { fromList: fragment[0] as Element, toListItemEntry: aboveEntry });\n return;\n }\n }\n\n insertData(data);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const isContinue = !onKeyDownList(event, editor);\n if (isContinue) {\n onKeydown(event);\n }\n };\n\n editor.normalizeNode = getListNormalizer(editor, { validLiChildrenTypes: validLiChildrenTypes });\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.numberedList) {\n return TheNumberedListComponent;\n }\n if (element.type === ElementKinds.bulletedList) {\n return TheBulletedListComponent;\n }\n if (element.type === ElementKinds.listItem) {\n return TheListItemComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n\nconst listOptions = {\n validLiChildrenTypes: [ElementKinds.image],\n allowParentTypes: [ElementKinds.listItem, ElementKinds.tableCell, ElementKinds.blockquote]\n};\n\nexport const createListPlugin = createPluginFactory<WithListOptions>({\n key: PluginKeys.list,\n withOverrides: withList,\n plugins: [\n {\n key: PluginKeys.numberedList,\n options: listOptions\n },\n {\n key: PluginKeys.bulletedList,\n options: listOptions\n }\n ],\n nestedStructureByKey: {\n [ElementKinds.bulletedList]: ElementKinds.listItem,\n [ElementKinds.numberedList]: ElementKinds.listItem\n },\n toolbarItems: [\n {\n key: ElementKinds.numberedList,\n icon: 'list-ordered',\n name: '有序列表',\n execute: editor => ListEditor.toggleList(editor, ElementKinds.numberedList),\n active: editor => ListEditor.isActive(editor, ElementKinds.numberedList)\n },\n {\n key: ElementKinds.bulletedList,\n icon: 'list-bullet',\n name: '无序列表',\n execute: editor => ListEditor.toggleList(editor, ElementKinds.bulletedList),\n active: editor => ListEditor.isActive(editor, ElementKinds.bulletedList)\n }\n ],\n options: listOptions\n});\n","import { Component, ElementRef, HostBinding, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { Editor } from 'slate';\nimport * as TheTransforms from '../../transforms';\nimport { PluginKeys, TheBaseElementComponent } from '../../interfaces';\nimport { TodoItemElement } from '../../custom-types';\nimport { TheContextService } from '../../services/context.service';\nimport { getPluginOptions } from '../../core/utils/get-plugin-options';\nimport { TodoItemPluginOptions } from './todo-item.plugin';\n\n@Component({\n selector: 'div[theTodoItem]',\n template: `\n <span contenteditable=\"false\" class=\"todo-item-status\">\n <input #checkbox type=\"checkbox\" [checked]=\"element.checked\" (click)=\"onCheck(checkbox.checked)\" />\n </span>\n <span><slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children></span>\n `\n})\nexport class TheTodoItemComponent extends TheBaseElementComponent<TodoItemElement, Editor> implements OnInit {\n checked: boolean;\n\n // 类名 the-temp-*: 临时解决因受portal影响样式问题,后期改回the-\n @HostBinding('class.the-temp-check-item') checkItemClass = true;\n\n @HostBinding('class.the-todo-item-selectable') get checkItemSelectable() {\n return this.editableWithReadonly && this.readonly;\n }\n\n @HostBinding('attr.the-level')\n get level() {\n return this.element?.indent;\n }\n\n get editableWithReadonly() {\n return getPluginOptions<TodoItemPluginOptions>(this.editor, PluginKeys.checkItem)?.editableWithReadonly;\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef, private ctxService: TheContextService) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n onCheck(checked: boolean) {\n if (this.readonly && !this.editableWithReadonly) {\n return false;\n }\n TheTransforms.setNode(this.editor, { checked }, this.element);\n }\n}\n","import { Editor, Transforms } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { ListEditor } from '../list/list.editor';\nimport * as TheQueries from '../../queries';\n\nexport const TodoItemEditor = {\n isActive(editor: Editor) {\n const [match] = TheQueries.getNodesByType(editor, ElementKinds.checkItem);\n return !!match;\n },\n insertTodoItem(editor: Editor) {\n if (!editor.selection) {\n return;\n }\n const isActive = TodoItemEditor.isActive(editor);\n const isNumberedList = ListEditor.isActive(editor, ElementKinds.numberedList);\n const isBulletedList = ListEditor.isActive(editor, ElementKinds.bulletedList);\n\n if (isActive) {\n Transforms.setNodes(editor, {\n type: ElementKinds.paragraph\n });\n } else {\n if (isNumberedList || isBulletedList) {\n ListEditor.unwrapList(editor);\n }\n Transforms.setNodes(editor, {\n type: ElementKinds.checkItem\n });\n }\n }\n};\n","import { Transforms, Range, Editor, Element, Descendant } from 'slate';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { TheTodoItemComponent } from './todo-item.component';\nimport { TodoItemEditor } from './todo-item.editor';\nimport * as TheQueries from '../../queries';\n\nexport interface TodoItemPluginOptions {\n editableWithReadonly?: boolean;\n}\n\nexport const withTodoItem = <T extends Editor>(editor: T): T => {\n const { insertBreak, deleteBackward, renderElement } = editor;\n\n editor.insertBreak = () => {\n const { selection } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n\n if (match) {\n const [, path] = match;\n const block = TheQueries.anchorBlock(editor);\n\n if (block && Editor.isStart(editor, selection.anchor, path) && Editor.isEmpty(editor, block)) {\n Transforms.setNodes(\n editor,\n {\n type: ElementKinds.default,\n checked: undefined\n } as Partial<Descendant>,\n {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n }\n );\n return;\n }\n }\n }\n insertBreak();\n\n const anchorBlock = TheQueries.anchorBlock(editor);\n if (anchorBlock && anchorBlock.type === ElementKinds.checkItem) {\n Transforms.setNodes(editor, { checked: false });\n }\n };\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n\n if (match) {\n const [, path] = match;\n\n if (Editor.isStart(editor, selection.anchor, path)) {\n Transforms.setNodes(editor, { type: ElementKinds.default, checked: undefined } as Partial<Descendant>, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n return;\n }\n }\n }\n deleteBackward(unit);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.checkItem) {\n return TheTodoItemComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n\nexport const createTodoItemPlugin = createPluginFactory<TodoItemPluginOptions>({\n key: PluginKeys.checkItem,\n withOverrides: withTodoItem,\n toolbarItems: [\n {\n key: ElementKinds.checkItem,\n icon: 'list-check',\n name: '待办事项',\n execute: editor => TodoItemEditor.insertTodoItem(editor),\n active: editor => TodoItemEditor.isActive(editor)\n }\n ],\n options: {\n allowParentTypes: [ElementKinds.tableCell, ElementKinds.blockquote],\n editableWithReadonly: false\n }\n});\n","import { Component, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';\r\nimport { Editor, Element } from 'slate';\r\nimport { TheBaseElementComponent } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'the-hr, [theHr]',\r\n template: `\r\n <div class=\"the-hr\" contenteditable=\"false\" [ngClass]=\"{ active: selection }\">\r\n <hr class=\"the-hr\" />\r\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\r\n </div>\r\n `\r\n})\r\nexport class TheHrComponent extends TheBaseElementComponent<Element, Editor> implements AfterViewInit {\r\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\r\n super(elementRef, cdr);\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n const blockCardElement = this.nativeElement.closest('slate-block-card');\r\n if (blockCardElement) {\r\n blockCardElement.classList.add(`slate-block-card-${this.element.type}`);\r\n }\r\n });\r\n }\r\n}\r\n","import { Editor } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheTransforms from '../../transforms';\n\nexport const HrEditor = {\n insertHr(editor: Editor) {\n TheTransforms.insertElements(editor, { type: ElementKinds.hr, children: [{ text: '' }] });\n }\n};\n","import { Editor, Element } from 'slate';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { TheHrComponent } from './hr.component';\nimport { HrEditor } from './hr.editor';\nimport * as TheQueries from '../../queries';\n\nexport const withHr = <T extends Editor>(editor: T): T => {\n const { isVoid, isBlockCard, renderElement } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.hr || isVoid(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element.type === ElementKinds.hr) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.hr) {\n return TheHrComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n\nexport const createHrPlugin = createPluginFactory({\n key: PluginKeys.hr,\n withOverrides: withHr,\n toolbarItems: [\n {\n key: ElementKinds.hr,\n icon: 'horizontal-line',\n name: '分割线',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.hr),\n execute: editor => HrEditor.insertHr(editor)\n }\n ],\n options: {\n allowParentTypes: [ElementKinds.tableCell]\n }\n});\n","import { InjectionToken } from '@angular/core';\nimport { ComponentType } from 'slate-angular';\nimport { TheBaseElementComponent } from '../../interfaces/view-base';\nimport { ElementKinds } from '../../constants/node-types';\nimport type { TheTableComponent } from './components/table.component';\n\nexport const TheTableToken = new InjectionToken<ComponentType<TheTableComponent>>('the-Table-token');\n\nexport interface TheTableComponentBase extends TheBaseElementComponent {\n initializeColumns: () => void;\n transformColumnsWidth: () => void;\n initializeRows: () => void;\n transformRowHeight: () => void;\n}\n\nexport const BASE_CELL_HEIGHT = 41; // min height\nexport const BASE_FILL_HEIGHT = 2 * 8 + 1; // padding * 2 + border 1\nexport const BASE_CELL_INNER_HEIGHT = BASE_CELL_HEIGHT - BASE_FILL_HEIGHT; // 24\n\nexport interface TheTableColumn {\n width: number;\n}\n\nexport interface TheTableOptions {\n headerRow?: boolean;\n headerColumn?: boolean;\n numberedColumn?: boolean;\n}\n\nexport interface MenuEntity {\n icon: string;\n name: string;\n key: string;\n divider?: boolean;\n extendIcon?: string;\n invisibility?: boolean;\n backgroundColor?: string;\n actionHandle: (entity: MenuEntity) => void;\n activeHandle?: (event: MouseEvent) => void;\n deactiveHandle?: (event: MouseEvent) => void;\n}\n\nexport interface SelectedCell {\n row: number;\n col: number;\n}\n\nexport interface TableDropdownOption {\n name: string;\n key: string;\n isActive?: boolean;\n}\n\nexport interface TableOptionsFormat {\n typeTable?: ElementKinds.table;\n typeRow?: ElementKinds.tableRow;\n typeCell?: ElementKinds.tableCell;\n typeContent?: ElementKinds.tableContent;\n exitBlockType?: string;\n defaultWidth?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\nexport class TableOptions {\n // The type of table blocks\n typeTable: ElementKinds.table = ElementKinds.table;\n // The type of row blocks\n typeRow: ElementKinds.tableRow = ElementKinds.tableRow;\n // The type of cell blocks\n typeCell: ElementKinds.tableCell = ElementKinds.tableCell;\n // The default type for blocks in cells\n typeContent: ElementKinds.tableContent = ElementKinds.tableContent;\n // The type of block inserted when exiting\n exitBlockType: ElementKinds.paragraph = ElementKinds.paragraph;\n\n defaultWidth = 200;\n\n minWidthPx = 41;\n\n maxWidthPx = 1000;\n\n minHeightPx = 41;\n\n maxHeightPx = 1000;\n\n constructor(options?: TableOptionsFormat) {\n if (!options) {\n return;\n }\n const { typeTable, typeRow, typeCell, typeContent } = options;\n this.typeTable = typeTable;\n this.typeRow = typeRow;\n this.typeCell = typeCell;\n this.typeContent = typeContent;\n }\n}\n","import { Text } from 'slate';\r\nimport { TableCellElement } from '../../../custom-types';\r\nimport { TableOptions } from '../table.types';\r\n\r\n/**\r\n * Create a new cell\r\n */\r\nexport function createCell(opts: TableOptions, nodes?: Text[]): TableCellElement {\r\n return {\r\n type: opts.typeCell,\r\n children: nodes || [createEmptyContent(opts)]\r\n };\r\n}\r\n\r\n/**\r\n * Create a new default content block\r\n */\r\nexport function createEmptyContent(opts: TableOptions) {\r\n return {\r\n type: opts.typeContent,\r\n children: [{ text: '' }]\r\n };\r\n}\r\n","import { Text } from 'slate';\r\nimport { TableRowElement } from '../../../custom-types';\r\nimport { TableOptions } from '../table.types';\r\nimport { createCell } from './create-cell';\r\n\r\n/**\r\n * Create a new row block\r\n */\r\nexport function createRow(opts: TableOptions, columns: number, getCellContent?: (column: number) => Text[]): TableRowElement {\r\n const cellNodes = new Array(columns).fill(1).map(i => createCell(opts, getCellContent ? getCellContent(i) : undefined));\r\n\r\n return {\r\n type: opts.typeRow,\r\n children: cellNodes\r\n };\r\n}\r\n","import { Node } from 'slate';\r\nimport { TableElement } from '../../../custom-types';\r\nimport { TableOptions } from '../table.types';\r\nimport { createRow } from './create-row';\r\n\r\n/**\r\n * Create a table\r\n */\r\nexport function createTable(\r\n opts: TableOptions,\r\n columns: number,\r\n rows: number,\r\n getCellContent?: (row: number, column: number) => Node[]\r\n): TableElement {\r\n const rowNodes = new Array(rows).fill(1).map(i => createRow(opts, columns, getCellContent ? getCellContent.bind(null, i) : undefined));\r\n\r\n rowNodes[0].header = true;\r\n return {\r\n type: opts.typeTable,\r\n children: rowNodes\r\n };\r\n}\r\n","import { Node, Path, NodeEntry, Element } from 'slate';\nimport { TableCellElement, TableElement } from '../../../custom-types';\nimport { SelectedCell, TableOptions } from '../table.types';\n\nexport class TablePosition {\n // TheElement container for the table\n tableEntry?: NodeEntry<TableElement>;\n\n // TheElement for current row\n rowEntry?: NodeEntry<Element>;\n\n // TheElement for current cell\n cellEntry?: NodeEntry<TableCellElement>;\n\n // Current content TheElement in the cell\n contentEntry?: NodeEntry<Element>;\n\n constructor(\n options = {\n tableEntry: null,\n rowEntry: null,\n cellEntry: null,\n contentEntry: null\n }\n ) {\n const { tableEntry, rowEntry, cellEntry, contentEntry } = options;\n this.tableEntry = tableEntry;\n this.rowEntry = rowEntry;\n this.cellEntry = cellEntry;\n this.contentEntry = contentEntry;\n }\n\n /**\n * Create a new instance of a TablePosition from a Slate document\n * and a node key.\n */\n static create(opts: TableOptions, containerNode: Node, path: Path): TablePosition {\n const ancestors = Array.from(Node.ancestors(containerNode, path));\n const tableEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeTable) || [];\n const rowEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeRow) || [];\n const cellEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeCell) || [];\n const contentEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeContent) || [];\n\n return new TablePosition({\n tableEntry,\n rowEntry,\n cellEntry,\n contentEntry\n });\n }\n\n get table(): TableElement {\n if (!this.tableEntry) {\n throw new Error('Not in a table');\n }\n return this.tableEntry[0];\n }\n\n get row(): Element {\n if (!this.rowEntry) {\n throw new Error('Not in a row');\n }\n return this.rowEntry[0];\n }\n\n get cell(): TableCellElement {\n if (!this.cellEntry) {\n throw new Error('Not in a cell');\n }\n return this.cellEntry[0];\n }\n\n /**\n * Check to see if this position is within a cell\n */\n isInCell(): boolean {\n return Boolean(this.cellEntry.length > 0);\n }\n\n /**\n * Check to see if this position is within a row\n */\n isInRow(): boolean {\n return Boolean(this.rowEntry.length > 0);\n }\n\n /**\n * Check to see if this position is within a table\n */\n isInTable(): boolean {\n return Boolean(this.tableEntry.length > 0);\n }\n\n /**\n * Check to see if this position is at the top of the cell.\n */\n isTopOfCell(): boolean {\n const { contentEntry, cellEntry } = this;\n\n if (!contentEntry || !cellEntry) {\n return false;\n }\n\n const { children } = cellEntry[0];\n const index = children.findIndex(content => content === contentEntry[0]);\n\n return index === 0;\n }\n\n /**\n * Check to see if this position is at the bottom of the cell.\n */\n isBottomOfCell(): boolean {\n const { contentEntry, cellEntry } = this;\n\n if (!contentEntry || !cellEntry) {\n return false;\n }\n\n const { children } = cellEntry[0];\n const index = children.findIndex(content => content === contentEntry[0]);\n\n return index === children.length - 1;\n }\n\n /**\n * Get count of columns\n */\n getWidth(): number {\n const { table } = this;\n const rows = table.children;\n const cells = rows[0].children as Node[];\n\n return cells.length;\n }\n\n /**\n * Get count of rows\n */\n getHeight(): number {\n const { table } = this;\n const rows = table.children;\n\n return rows.length;\n }\n\n /**\n * Get index of current row in the table.\n */\n getRowIndex(): number {\n const { table, row } = this;\n const rows = table.children;\n\n return rows.findIndex(x => x === row);\n }\n\n /**\n * Get index of current column in the row.\n */\n getColumnIndex(): number {\n const { row, cell } = this;\n const cells = row.children;\n\n return cells.findIndex(x => x === cell);\n }\n\n /**\n * find current above column in the table\n */\n findAbove() {\n const { table } = this;\n const rowIndex = this.getRowIndex();\n const columnIndex = this.getColumnIndex();\n let y = 0;\n let t = table.children[rowIndex].children[columnIndex];\n while (t) {\n y++;\n if (table.children[rowIndex - y] && table.children[rowIndex - y].children[columnIndex]) {\n t = table.children[rowIndex - y].children[columnIndex];\n return t;\n }\n return;\n }\n }\n\n findNext() {\n const { table } = this;\n let rowIndex = this.getRowIndex();\n let columnIndex = this.getColumnIndex();\n let nextCell = this.cell;\n while (nextCell && nextCell.hidden) {\n if (columnIndex + 1 < this.getWidth()) {\n columnIndex++;\n nextCell = this.table.children[rowIndex].children[columnIndex];\n } else if (rowIndex + 1 < this.getHeight()) {\n columnIndex = 0;\n rowIndex++;\n nextCell = this.table.children[rowIndex].children[columnIndex];\n } else {\n nextCell = null;\n }\n }\n return nextCell;\n }\n\n findPrevious() {\n const { table } = this;\n let rowIndex = this.getRowIndex();\n let columnIndex = this.getColumnIndex();\n let previousCell = this.cell;\n while (previousCell && previousCell.hidden) {\n if (columnIndex - 1 >= 0) {\n columnIndex--;\n previousCell = this.table.children[rowIndex].children[columnIndex];\n } else {\n columnIndex = this.getWidth() - 1;\n rowIndex--;\n previousCell = this.table.children[rowIndex].children[columnIndex];\n }\n }\n return previousCell;\n }\n\n /**\n * find current below column in the table\n */\n findBelow() {\n const { table } = this;\n const rowIndex = this.getRowIndex();\n const columnIndex = this.getColumnIndex();\n let y = 0;\n let t = table.children[rowIndex].children[columnIndex];\n while (t) {\n y++;\n if (table.children[rowIndex + y] && table.children[rowIndex + y].children[columnIndex]) {\n t = table.children[rowIndex + y].children[columnIndex];\n return t;\n }\n return;\n }\n }\n\n /**\n * True if on first cell of the table\n */\n isFirstCell(): boolean {\n return this.isFirstRow() && this.isFirstColumn();\n }\n\n /**\n * True if on last cell of the table\n */\n isLastCell(): boolean {\n return this.isLastRow() && this.isLastColumn();\n }\n\n /**\n * True if on first row\n */\n isFirstRow(): boolean {\n return this.getRowIndex() === 0;\n }\n\n /**\n * True if on last row\n */\n isLastRow(): boolean {\n return this.getRowIndex() === this.getHeight() - 1;\n }\n\n /**\n * True if on first column\n */\n isFirstColumn(): boolean {\n return this.getColumnIndex() === 0;\n }\n\n /**\n * True if on last column\n */\n isLastColumn(): boolean {\n return this.getColumnIndex() === this.getWidth() - 1;\n }\n\n /**\n * find cell data with col and row\n */\n\n findCellByPath(cell: SelectedCell): TableCellElement {\n return this.table.children[cell.row].children[cell.col] as TableCellElement;\n }\n}\n","import { Node, Range } from 'slate';\r\nimport { TableOptions } from '../table.types';\r\nimport { TablePosition } from './table-position';\r\n\r\n/**\r\n * True if the given range is inside one table\r\n */\r\nexport function isRangeInTable(opts: TableOptions, node: Node, range: Range): boolean {\r\n const { anchor, focus } = range;\r\n const startPosition = TablePosition.create(opts, node, anchor.path);\r\n const endPosition = TablePosition.create(opts, node, focus.path);\r\n\r\n // Only handle events in tables\r\n if (!startPosition.isInTable() || !endPosition.isInTable()) {\r\n return false;\r\n }\r\n\r\n // Inside the same table\r\n return startPosition.table === endPosition.table;\r\n}\r\n","import { Editor } from 'slate';\r\nimport { TableOptions } from '../table.types';\r\nimport { isRangeInTable } from './is-range-in-table';\r\n\r\n/**\r\n * Is the selection in a table\r\n */\r\nexport function isSelectionInTable(opts: TableOptions, editor: Editor): boolean {\r\n if (!editor.selection) {\r\n return false;\r\n }\r\n return isRangeInTable(opts, editor, editor.selection);\r\n}\r\n","import { TableCellElement, TableElement } from '../../../custom-types';\n\nexport interface CellRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport function calcSpanForRow(table: TableElement, targetIndex: number) {\n const rowspans = [];\n table.children\n .filter((row, rowIndex) => rowIndex < targetIndex)\n .forEach((row, rowIndex) => {\n row.children.forEach((cell: TableCellElement, columnIndex) => {\n if (cell.rowspan && cell.rowspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n rowspans.push(rect);\n }\n });\n });\n return table.children[0].children.map((cell, columnIndex) => {\n return rowspans.some(rowspan => isInside(rowspan, targetIndex, columnIndex));\n });\n}\n\nexport function calcSpanForColumn(table: TableElement, targetIndex: number) {\n const rowspans = [];\n table.children.forEach((row, rowIndex) => {\n row.children\n .filter((cell, columnIndex) => columnIndex < targetIndex)\n .forEach((cell: TableCellElement, columnIndex) => {\n if (cell.colspan && cell.colspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n rowspans.push(rect);\n }\n });\n });\n return table.children.map((cell, rowIndx) => {\n return rowspans.some(rowspan => isInside(rowspan, rowIndx, targetIndex));\n });\n}\n\nexport function getOriginCell(table: TableElement, targetRowIndex: number, targetColumnIndex: number) {\n for (let rowIndex = 0; rowIndex <= targetRowIndex; rowIndex++) {\n const row = table.children[rowIndex];\n const originCell = row.children\n .filter((cell, columnIndex) => columnIndex <= targetColumnIndex)\n .find((cell: TableCellElement, columnIndex) => {\n if (cell.rowspan > 1 || cell.colspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n return isInside(rect, targetRowIndex, targetColumnIndex);\n }\n });\n if (originCell) {\n return originCell;\n }\n }\n}\n\nexport function isInside(cellRect: CellRect, rowIndex: number, columnIndex: number): boolean {\n if (\n rowIndex >= cellRect.x &&\n rowIndex <= cellRect.x + cellRect.height - 1 &&\n columnIndex >= cellRect.y &&\n columnIndex <= cellRect.y + cellRect.width - 1\n ) {\n return true;\n }\n return false;\n}\n","import { TableElement } from '../../../custom-types';\r\nimport { TableOptions } from '../table.types';\r\n\r\nexport function addColumns(table: TableElement, columnsCount: number, insertIndex?: number) {\r\n if (table.columns.length < columnsCount) {\r\n if (!insertIndex && insertIndex !== 0) {\r\n insertIndex = table.columns.length;\r\n }\r\n const opts = new TableOptions();\r\n let columns = table.columns.slice(0, columnsCount).map(item => {\r\n return { width: item.width };\r\n });\r\n const preTotalWidth = table.columns.reduce((prevValue, column) => {\r\n return prevValue + column.width;\r\n }, 0);\r\n\r\n for (let i = 0; i < columnsCount - table.columns.length; i++) {\r\n columns.splice(insertIndex, 0, { width: opts.defaultWidth });\r\n }\r\n const currentTotalWidth = columns.reduce((prevValue, column) => {\r\n return prevValue + column.width;\r\n }, 0);\r\n\r\n const percentage = preTotalWidth / currentTotalWidth;\r\n return columns.map((column, index) => {\r\n const width = Math.round(column.width * percentage > opts.minWidthPx ? column.width * percentage : opts.minWidthPx);\r\n return { width };\r\n });\r\n }\r\n return table.columns;\r\n}\r\n","import { Transforms, Editor, NodeEntry } from 'slate';\r\nimport { TablePosition, createCell } from '../utils';\r\nimport { calcSpanForColumn } from '../utils/calc-span';\r\nimport { addColumns } from '../utils/add-columns';\r\nimport { TableOptions } from '../table.types';\r\nimport { TableCellElement, TableElement } from '../../../custom-types';\r\n\r\n/**\r\n * Insert a new column in current table\r\n */\r\nexport function insertColumn(\r\n opts: TableOptions,\r\n editor: Editor,\r\n count = 1,\r\n at?: number, // Column index\r\n getCell?: (column: number, row: number) => TableCellElement\r\n) {\r\n const { selection } = editor;\r\n const {\r\n anchor: { path }\r\n } = selection;\r\n\r\n const tablePosition = TablePosition.create(opts, editor, path);\r\n const { table, tableEntry } = tablePosition;\r\n\r\n const insertColumnIndex = typeof at === 'undefined' ? tablePosition.getColumnIndex() + 1 : at;\r\n\r\n // Insert the new cell\r\n\r\n Editor.withoutNormalizing(editor, () => {\r\n const colspan = calcSpanForColumn(table, insertColumnIndex);\r\n for (let i = 0; i < count; i++) {\r\n table.children.forEach((row, rowIndex) => {\r\n const isInside = colspan[rowIndex];\r\n const newCell = getCell ? getCell(insertColumnIndex, rowIndex) : createCell(opts);\r\n if (isInside) {\r\n newCell.hidden = true;\r\n const dirtyCell = row.children.find(\r\n (cell: TableCellElement, columnIndex: number) =>\r\n !cell.hidden &&\r\n columnIndex < insertColumnIndex &&\r\n cell.colspan &&\r\n cell.colspan + columnIndex > insertColumnIndex\r\n ) as TableCellElement;\r\n if (dirtyCell) {\r\n Transforms.setNodes(\r\n editor,\r\n { colspan: dirtyCell.colspan + 1 },\r\n {\r\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\r\n }\r\n );\r\n }\r\n }\r\n Transforms.insertNodes(editor, [newCell], {\r\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(insertColumnIndex)\r\n });\r\n });\r\n }\r\n if (table.columns) {\r\n Transforms.setNodes(editor, { columns: addColumns(table, table.columns.length + 1, insertColumnIndex) }, { at: tableEntry[1] });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Insert new column in the row\r\n */\r\nexport function insertColumnAtRow(\r\n opts: TableOptions,\r\n editor: Editor,\r\n count = 1,\r\n tableEntry: NodeEntry<TableElement>,\r\n rowIndex: number,\r\n columnIndex: number,\r\n getCell?: (column: number, row: number) => TableCellElement\r\n) {\r\n Editor.withoutNormalizing(editor, () => {\r\n for (let i = 0; i < count; i++) {\r\n const newCell = getCell ? getCell(columnIndex, rowIndex) : createCell(opts);\r\n Transforms.insertNodes(editor, [newCell], {\r\n at: tableEntry[1].concat([rowIndex, columnIndex])\r\n });\r\n }\r\n });\r\n}\r\n","import { Editor, Element, Transforms } from 'slate';\r\nimport { TableRowElement } from '../../../custom-types';\r\nimport { TableOptions } from '../table.types';\r\nimport { TablePosition, createRow } from '../utils';\r\nimport { calcSpanForRow } from '../utils/calc-span';\r\n\r\n/**\r\n * Insert a new row in current table\r\n */\r\nexport function insertRow(\r\n opts: TableOptions,\r\n editor: Editor,\r\n count = 1,\r\n at?: number // row index\r\n) {\r\n const tablePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\r\n const { table, row } = tablePosition;\r\n\r\n // Create a new row with the right count of cells\r\n const columns = (table.children[0].children as Element[]).length;\r\n const newRows: TableRowElement[] = [];\r\n\r\n const rowIndex = tablePosition.getRowIndex();\r\n const insertRowIndex = typeof at === 'undefined' ? rowIndex + 1 : at;\r\n\r\n for (let i = 0; i < count; i++) {\r\n const newRow = createRow(opts, columns);\r\n newRows.push(newRow);\r\n }\r\n\r\n if (newRows.length === 1) {\r\n const rowspan = calcSpanForRow(table, insertRowIndex);\r\n newRows[0].children.forEach((cell, columnIndex) => {\r\n const isInside = rowspan[columnIndex];\r\n if (isInside) {\r\n cell.hidden = true;\r\n const dirtyRow = table.children.find(\r\n (row: TableRowElement, rowIndex: number) =>\r\n !row.children[columnIndex].hidden &&\r\n rowIndex < insertRowIndex &&\r\n row.children[columnIndex].rowspan &&\r\n row.children[columnIndex].rowspan + rowIndex > insertRowIndex\r\n );\r\n if (dirtyRow) {\r\n Transforms.setNodes(\r\n editor,\r\n { rowspan: dirtyRow.children[columnIndex].rowspan + 1 },\r\n {\r\n at: tablePosition.tableEntry[1].concat(table.children.indexOf(dirtyRow)).concat(columnIndex)\r\n }\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n Transforms.insertNodes(editor, newRows, {\r\n at: tablePosition.tableEntry[1].concat(insertRowIndex)\r\n });\r\n}\r\n","import { Editor, Node } from 'slate';\nimport { TableOptions } from '../table.types';\nimport { createTable } from '../utils';\nimport * as TheTransforms from '../../../transforms';\n\n/**\n * Insert a new table\n */\nexport function insertTable(\n opts: TableOptions,\n editor: Editor,\n rows: number = 3,\n columns: number = 3,\n getCellContent?: (column: number, row: number) => Node[]\n) {\n const { selection } = editor;\n if (!selection?.anchor) {\n return;\n }\n // Create the table node\n const table = createTable(opts, columns, rows, getCellContent);\n TheTransforms.insertElements(editor, table);\n}\n","import { Transforms, NodeEntry, Editor, Element } from 'slate';\r\nimport { TableOptions } from '../table.types';\r\nimport { createCell } from '../utils/create-cell';\r\n\r\n/**\r\n * Clear the content of the given cell\r\n */\r\nexport function clearCell(opts: TableOptions, editor: Editor, cellEntry: NodeEntry<Element>) {\r\n Transforms.removeNodes(editor, { at: cellEntry[1] });\r\n const cellNode = {\r\n ...cellEntry[0],\r\n ...createCell(opts)\r\n };\r\n Transforms.insertNodes(editor, { ...cellNode }, { at: cellEntry[1] });\r\n}\r\n","import { TableElement } from '../../../custom-types';\r\n\r\nexport function removeColumns(table: TableElement, columnsCount: number, index?: number) {\r\n if (table.columns.length > columnsCount) {\r\n let removeColumns = [];\r\n if ((index && index > 0) || index === 0) {\r\n removeColumns = table.columns.slice(index, index + 1);\r\n } else {\r\n removeColumns = table.columns.slice(columnsCount);\r\n }\r\n if (removeColumns.length) {\r\n const addWidth =\r\n removeColumns.reduce((totalWidth, cell) => {\r\n return (totalWidth += cell.width);\r\n }, 0) / columnsCount;\r\n return table.columns\r\n .filter(item => !removeColumns.includes(item))\r\n .map(item => {\r\n return { width: item.width + Math.round(addWidth) };\r\n });\r\n }\r\n }\r\n return table.columns;\r\n}\r\n","import { Editor, Element, Transforms } from 'slate';\r\nimport { TablePosition } from '../utils';\r\nimport { clearCell } from './clear-cell';\r\nimport { removeColumns } from '../utils/remove-columns';\r\nimport { TableOptions } from '../table.types';\r\nimport { TableCellElement } from '../../../custom-types';\r\n\r\nexport function removeColumn(opts: TableOptions, editor: Editor, selectColIndex?: number) {\r\n const { selection } = editor;\r\n const {\r\n anchor: { path }\r\n } = selection;\r\n\r\n const tablePosition = TablePosition.create(opts, editor, path);\r\n const {\r\n tableEntry,\r\n table,\r\n row,\r\n cellEntry: [cellNode, cellPath]\r\n } = tablePosition;\r\n\r\n const rows = tableEntry[0].children as Element[];\r\n\r\n selectColIndex = selectColIndex === undefined ? [...cellPath].pop() : selectColIndex;\r\n\r\n Editor.withoutNormalizing(editor, () => {\r\n table.children.map((row, rowIndex) => {\r\n const dirtyCell = row.children.find(\r\n (cell: TableCellElement, columnIndex: number) =>\r\n !cell.hidden && columnIndex < selectColIndex && cell.colspan && cell.colspan + columnIndex > selectColIndex\r\n ) as TableCellElement;\r\n if (dirtyCell) {\r\n const colspan = dirtyCell.colspan - 1 > 1 ? dirtyCell.colspan - 1 : null;\r\n Transforms.setNodes(\r\n editor,\r\n { colspan },\r\n {\r\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\r\n }\r\n );\r\n }\r\n const removeCell = row.children[selectColIndex] as TableCellElement;\r\n const nextCell = row.children[selectColIndex + 1] as TableCellElement;\r\n if (nextCell && nextCell.hidden && removeCell.colspan > 1) {\r\n const colspan = removeCell.colspan - 1 > 1 ? removeCell.colspan - 1 : null;\r\n Transforms.setNodes(\r\n editor,\r\n { colspan, rowspan: removeCell.rowspan || null, hidden: null },\r\n { at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(nextCell)) }\r\n );\r\n }\r\n });\r\n });\r\n\r\n // Remove the cell from every row\r\n Editor.withoutNormalizing(editor, () => {\r\n if (tablePosition.getWidth() > 1) {\r\n rows.forEach((row, rowIndex) => {\r\n const at = tableEntry[1].concat([rowIndex, selectColIndex]);\r\n Transforms.removeNodes(editor, { at });\r\n });\r\n if (table.columns) {\r\n Transforms.setNodes(\r\n editor,\r\n { columns: removeColumns(table, table.columns.length - 1, selectColIndex) },\r\n { at: tableEntry[1] }\r\n );\r\n }\r\n } else {\r\n // If last column, clear text in cells instead\r\n rows.forEach((row, rowIndex) => {\r\n row.children.forEach((cell, cellIndex) => {\r\n const at = tableEntry[1].concat([rowIndex, cellIndex]);\r\n clearCell(opts, editor, [cell as Element, at]);\r\n });\r\n });\r\n }\r\n });\r\n}\r\n","import { Editor, Element, Transforms } from 'slate';\r\nimport { TableCellElement, TableRowElement } from '../../../custom-types';\r\nimport { TableOptions } from '../table.types';\r\nimport { TablePosition } from '../utils';\r\nimport { clearCell } from './clear-cell';\r\n\r\nexport function removeRow(opts: TableOptions, editor: Editor, selectRowIndex?: number) {\r\n const { selection } = editor;\r\n const {\r\n anchor: { path }\r\n } = selection;\r\n\r\n const tablePosition = TablePosition.create(opts, editor, path);\r\n const {\r\n tableEntry,\r\n table,\r\n rowEntry: [rowNode, rowPath]\r\n } = tablePosition;\r\n\r\n selectRowIndex = selectRowIndex === undefined ? [...rowPath].pop() : selectRowIndex;\r\n const at = tableEntry[1].concat(selectRowIndex);\r\n\r\n Editor.withoutNormalizing(editor, () => {\r\n table.children.map((row, rowIndex) => {\r\n if (rowIndex < selectRowIndex) {\r\n const dirtyCells = row.children.filter(\r\n (cell: TableCellElement, columnIndex: number) =>\r\n !cell.hidden && cell.rowspan && cell.rowspan + rowIndex > selectRowIndex\r\n );\r\n if (dirtyCells.length) {\r\n dirtyCells.map((dirtyCell: TableCellElement) => {\r\n const rowspan = dirtyCell.rowspan - 1 > 1 ? dirtyCell.rowspan - 1 : null;\r\n Transforms.setNodes(\r\n editor,\r\n { rowspan },\r\n {\r\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\r\n }\r\n );\r\n });\r\n }\r\n }\r\n });\r\n const removeRow = table.children[selectRowIndex] as TableRowElement;\r\n const nextRow = table.children[selectRowIndex + 1] as TableRowElement;\r\n if (nextRow) {\r\n removeRow.children.map((cell: TableCellElement, cellIndex) => {\r\n const nextCell = nextRow.children[cellIndex];\r\n if (nextCell && cell.rowspan > 1 && nextCell.hidden) {\r\n const rowspan = cell.rowspan - 1 > 1 ? cell.rowspan - 1 : null;\r\n Transforms.setNodes(\r\n editor,\r\n { colspan: cell.colspan || null, rowspan, hidden: null },\r\n { at: tablePosition.tableEntry[1].concat(selectRowIndex + 1).concat(cellIndex) }\r\n );\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Update table by removing the row\r\n if (tablePosition.getHeight() > 1) {\r\n Transforms.removeNodes(editor, { at });\r\n } else {\r\n // If last remaining row, clear it instead\r\n Editor.withoutNormalizing(editor, () => {\r\n (rowNode.children as Element[]).forEach((cell, cellIndex) => {\r\n clearCell(opts, editor, [cell, at.concat(cellIndex)]);\r\n });\r\n });\r\n }\r\n}\r\n","import { Path } from 'slate';\r\n\r\nexport const NextPath = (path: Path) => {\r\n const [last, ...rest] = [...path].reverse();\r\n return [...rest.reverse(), last + 1];\r\n};\r\n","import { Editor, Element, Path, Transforms, NodeEntry, Descendant } from 'slate';\r\nimport { createEmptyParagraph } from '../../../utils/create-empty-paragraph';\r\nimport { TableOptions } from '../table.types';\r\nimport { TablePosition } from '../utils';\r\nimport { NextPath } from '../utils/next-path';\r\n\r\nexport function removeTable(opts: TableOptions, editor: Editor) {\r\n const { selection } = editor;\r\n const {\r\n anchor: { path }\r\n } = selection;\r\n const pos = TablePosition.create(opts, editor, path);\r\n const {\r\n table,\r\n tableEntry: [, tablePath]\r\n } = pos;\r\n let nextFocusEntry: NodeEntry<Element> = null;\r\n let shouldCollapseToEnd = false;\r\n\r\n const nextEntry = Editor.next<Element>(editor, { at: tablePath });\r\n if (nextEntry) {\r\n nextFocusEntry = nextEntry;\r\n } else {\r\n const prevEntry = Editor.previous<Element>(editor, { at: tablePath });\r\n if (prevEntry) {\r\n nextFocusEntry = prevEntry;\r\n shouldCollapseToEnd = true;\r\n } else if (opts.exitBlockType) {\r\n nextFocusEntry = [\r\n {\r\n type: opts.exitBlockType,\r\n children: [{ text: '' }]\r\n } as Element,\r\n null\r\n ];\r\n nextFocusEntry[1] = NextPath(tablePath);\r\n Transforms.insertNodes(editor, nextFocusEntry[0], { at: nextFocusEntry[1] });\r\n }\r\n }\r\n\r\n Transforms.removeNodes(editor, { at: tablePath });\r\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: tablePath });\r\n\r\n if (!nextFocusEntry) {\r\n return;\r\n }\r\n\r\n if (shouldCollapseToEnd) {\r\n const endPoint = Editor.end(editor, nextFocusEntry[1]);\r\n Transforms.select(editor, endPoint);\r\n } else {\r\n const previousPath = Path.previous(nextFocusEntry[1]);\r\n const startPoint = Editor.start(editor, previousPath);\r\n Transforms.select(editor, startPoint);\r\n }\r\n}\r\n","import { Editor, Element, NodeEntry, Transforms, Text, Path, Range, Node } from 'slate';\nimport { TableOptions } from './table.types';\nimport { Alignment, ALIGN_BLOCK_TYPES, ElementKinds, MarkProps, MarkTypes, VerticalAlignment } from '../../constants/node-types';\nimport { insertColumn } from './transforms/insert-column';\nimport { insertRow } from './transforms/insert-row';\nimport { insertTable } from './transforms/insert-table';\nimport { removeColumn } from './transforms/remove-column';\nimport { removeRow } from './transforms/remove-row';\nimport { removeTable } from './transforms/remove-table';\nimport { clearCell } from './transforms/clear-cell';\nimport { getAboveByType } from '../../queries/get-above-by-type';\nimport { AngularEditor, ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport type { TheTableComponent } from './components/table.component';\nimport { TheEditor } from '../../interfaces';\nimport { TableCellElement, TableRowElement } from '../../custom-types';\nimport * as TheTransforms from '../../transforms';\nimport { TableElement } from '../../custom-types';\nimport { getOriginCell } from './utils/calc-span';\n\nexport const TableEditor = {\n insertTable(editor: Editor, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertTable(opts, editor);\n },\n insertColumn(editor: Editor, count: number = 1, at?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertColumn(opts, editor, count, at);\n },\n insertRow(editor: Editor, count: number = 1, at?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertRow(opts, editor, count, at);\n },\n removeTable(editor: Editor, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeTable(opts, editor);\n },\n removeRow(editor: Editor, rowIndex?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeRow(opts, editor, rowIndex);\n },\n removeColumn(editor: Editor, colIndex?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeColumn(opts, editor, colIndex);\n },\n clearCell(editor: Editor, nodeEntry?: NodeEntry<Element>, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n clearCell(opts, editor, nodeEntry);\n },\n isActive(editor: Editor) {\n const [table] = Editor.nodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.table });\n return !!table;\n },\n getSelectedCells(editor: Editor) {\n const tableNode = getAboveByType(editor, ElementKinds.table);\n if (tableNode) {\n const tableComponent = ELEMENT_TO_COMPONENT.get(tableNode[0]) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n if (cells.length > 0) {\n return cells;\n }\n }\n return null;\n },\n isAlignActive(editor: TheEditor, alignment: Alignment) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const lastCell = cells[cells.length - 1];\n const tableNode = getAboveByType(editor, ElementKinds.table);\n const cellPath = [...tableNode[1], lastCell.row, lastCell.col];\n const cell = Node.get(editor, cellPath) as TableCellElement;\n const { align } = cell;\n if (!align && alignment === Alignment.left) {\n return true;\n }\n return align === alignment;\n }\n return null;\n },\n setAlign(editor: Editor, alignment: Alignment) {\n return TableEditor.handleSelectedCells(editor, (cellPath, cellRange) => {\n Transforms.setNodes(\n editor,\n { align: alignment },\n {\n at: cellPath\n }\n );\n Transforms.setNodes(\n editor,\n { align: undefined },\n {\n at: cellRange,\n match: (n: Element) => ALIGN_BLOCK_TYPES.includes(n.type)\n }\n );\n });\n },\n setVerticalAlign(editor: TheEditor, alignment: VerticalAlignment) {\n const isSelected = TableEditor.handleSelectedCells(editor, cellPath => {\n Transforms.setNodes(editor, { verticalAlign: alignment }, { at: cellPath });\n });\n if (!isSelected) {\n const cellEntry = getAboveByType(editor, ElementKinds.tableCell);\n if (cellEntry) {\n const [, cellPath] = cellEntry;\n Transforms.setNodes(\n editor,\n { verticalAlign: alignment },\n {\n at: cellPath,\n match: (n: Element) => n.type === ElementKinds.tableCell\n }\n );\n return true;\n }\n return false;\n }\n return true;\n },\n isVerticalAlignActive(editor: TheEditor, alignment: VerticalAlignment) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const lastCell = cells[cells.length - 1];\n const tableNode = getAboveByType(editor, ElementKinds.table);\n const cellPath = [...tableNode[1], lastCell.row, lastCell.col];\n const cell = Node.get(editor, cellPath) as TableCellElement;\n const { verticalAlign } = cell;\n if (!verticalAlign && alignment === VerticalAlignment.top) {\n return true;\n }\n return verticalAlign === alignment;\n } else {\n const cellElement = getAboveByType(editor, ElementKinds.tableCell);\n if (cellElement) {\n const { verticalAlign } = cellElement[0];\n if (!verticalAlign && alignment === VerticalAlignment.top) {\n return true;\n }\n return verticalAlign === alignment;\n }\n }\n return null;\n },\n toggleMark(editor: TheEditor, isActive: boolean, format: string | string[], value: string | number | boolean = true) {\n return TableEditor.handleSelectedCells(editor, at => {\n if (isActive) {\n Transforms.unsetNodes(editor, format, {\n at,\n match: Text.isText,\n split: true\n });\n } else {\n Transforms.setNodes(\n editor,\n { [format as string]: value },\n {\n at,\n match: Text.isText,\n split: true\n }\n );\n }\n });\n },\n clearMark(editor: TheEditor) {\n return TableEditor.handleSelectedCells(editor, (cellPath, cellRange) => {\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\n MarkProps.forEach(key => {\n unsetMarks[key] = null;\n });\n TheTransforms.setMarks(editor, unsetMarks, cellRange);\n });\n },\n handleSelectedCells(editor: TheEditor, handle: (cellPath: Path, cellRange: Range) => void) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const tableNode = getAboveByType(editor, ElementKinds.table);\n Editor.withoutNormalizing(editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tableNode[1], row, col];\n const cellRange = { anchor: Editor.start(editor, cellPath), focus: Editor.end(editor, cellPath) };\n handle(cellPath, cellRange);\n }\n });\n return true;\n }\n return false;\n },\n isActiveHeader(editor: TheEditor) {\n const [tableRowEntry] = Editor.nodes(editor, { match: (n: Element) => n.type === ElementKinds.tableRow });\n return tableRowEntry && tableRowEntry[0] && (tableRowEntry[0] as TableRowElement).header;\n },\n selectOriginCell(editor: TheEditor, table: TableElement, rowIndex: number, columnIndex: number, isStart: boolean) {\n const origin = getOriginCell(table, rowIndex, columnIndex);\n if (origin) {\n const path = AngularEditor.findPath(editor, origin);\n Transforms.select(editor, isStart ? Editor.start(editor, path) : Editor.end(editor, path));\n }\n }\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport { Alignment, ALIGN_BLOCK_TYPES, ElementKinds } from '../../constants';\nimport { TableEditor } from '../table/table.editor';\nimport { TheContextService } from '../../services/context.service';\nimport * as TheQueries from '../../queries';\nimport { PluginKeys } from '../../interfaces';\n\nexport const AlignEditor = {\n isActive(editor: Editor, alignment: Alignment) {\n if (!editor?.selection) {\n return;\n }\n const tableCellAlign = TableEditor.isAlignActive(editor, alignment);\n if (tableCellAlign !== null) {\n return tableCellAlign;\n }\n\n const blockElement = TheQueries.anchorBlock(editor);\n if (blockElement) {\n const { align } = blockElement;\n if (!align && alignment === Alignment.left) {\n return true;\n }\n return align === alignment;\n }\n if (alignment === Alignment.left) {\n return true;\n }\n return false;\n },\n isDisabled(editor: Editor): boolean {\n const contextService = editor?.injector?.get(TheContextService);\n const {\n theOptions: { richMedia }\n } = contextService.getOptions();\n return TheQueries.getToolbarItemDisabled(editor, PluginKeys.align, richMedia ? [ElementKinds.image] : []);\n },\n setAlign(editor: Editor, alignment: Alignment) {\n if (TableEditor.setAlign(editor, alignment)) {\n return;\n }\n const props = {\n align: alignment !== Alignment.left ? alignment : null\n };\n Transforms.setNodes(editor, props, {\n at: editor.selection,\n match: (n: Element) => ALIGN_BLOCK_TYPES.includes(n.type)\n });\n }\n};\n","import { Editor, Transforms } from 'slate';\nimport { Alignment, DISABLED_OPERATE_TYPES, DropdownMode, ElementKinds, ToolbarActionTypes } from '../../constants';\nimport { PluginKeys, ToolbarItemType } from '../../interfaces';\nimport { TheElement } from '../../custom-types';\nimport { createPluginFactory } from '../../core';\nimport { AlignEditor } from './align.editor';\nimport * as TheQueries from '../../queries';\n\nexport const withAlign = <T extends Editor>(editor: T): T => {\n const { deleteBackward } = editor;\n\n editor.deleteBackward = unit => {\n const { anchor } = editor.selection;\n const node = TheQueries.anchorBlock(editor) as TheElement;\n const isVoid = Editor.isVoid(editor, node);\n const alignTypes = [Alignment.center, Alignment.right];\n const startLine = Editor.start(editor, anchor.path);\n const startLineRange = { anchor, focus: startLine };\n const beforeText = Editor.string(editor, startLineRange);\n\n if (!isVoid && node && node.align && alignTypes.includes(node.align) && beforeText === '') {\n const align = alignTypes.indexOf(node.align) ? Alignment.center : undefined;\n return Transforms.setNodes(editor, { align });\n }\n deleteBackward(unit);\n };\n\n return editor;\n};\n\nexport const createAlignPlugin = createPluginFactory({\n key: PluginKeys.align,\n withOverrides: withAlign,\n toolbarItems: [\n {\n key: ToolbarActionTypes.alignType,\n type: ToolbarItemType.dropdown,\n dropdownMode: DropdownMode.icon,\n dropdownItemKey: ToolbarActionTypes.alignLeft,\n includes: [ToolbarActionTypes.alignLeft, ToolbarActionTypes.alignCenter, ToolbarActionTypes.alignRight],\n name: '对齐方式',\n disable: editor => AlignEditor.isDisabled(editor)\n },\n {\n key: ToolbarActionTypes.alignLeft,\n icon: 'align-left',\n name: '左对齐',\n execute: editor => AlignEditor.setAlign(editor, Alignment.left),\n active: editor => AlignEditor.isActive(editor, Alignment.left)\n },\n {\n key: ToolbarActionTypes.alignCenter,\n icon: 'align-center',\n name: '居中',\n execute: editor => AlignEditor.setAlign(editor, Alignment.center),\n active: editor => AlignEditor.isActive(editor, Alignment.center)\n },\n {\n key: ToolbarActionTypes.alignRight,\n icon: 'align-right',\n name: '右对齐',\n execute: editor => AlignEditor.setAlign(editor, Alignment.right),\n active: editor => AlignEditor.isActive(editor, Alignment.right)\n }\n ],\n options: {\n disabledOperateTypes: [...DISABLED_OPERATE_TYPES]\n }\n});\n","import { Editor, Transforms, Element } from 'slate';\nimport { HeadingElementKinds, NoInfer, PluginKey, PluginKeys, ThePlugin } from '../../interfaces';\nimport { DISABLED_OPERATE_TYPES, ElementKinds, HEADING_TYPES, MarkTypes } from '../../constants';\nimport { getPluginOptions } from '../../core';\nimport type { HeadingPluginOptions } from './heading.plugin';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\n\nexport const headingOptions: HeadingPluginOptions = {\n allowParentTypes: [ElementKinds.tableCell, ElementKinds.blockquote],\n disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES],\n cleanupTypes: [ElementKinds.bulletedList, ElementKinds.numberedList, ElementKinds.listItem]\n};\n\nexport const HeadingEditor = {\n setHeading(editor: Editor, heading: HeadingElementKinds) {\n Editor.withoutNormalizing(editor, () => {\n const cleanupTypes = getPluginOptions<HeadingPluginOptions>(editor, PluginKeys.heading).cleanupTypes;\n Transforms.unwrapNodes(editor, {\n at: editor.selection,\n match: n => Element.isElement(n) && cleanupTypes.includes(n.type),\n mode: 'all',\n split: true\n });\n Transforms.setNodes(editor, { type: heading });\n const entry = TheQueries.anchorBlockEntry(editor);\n const unMarks = {\n [MarkTypes.fontSize]: null\n };\n if (entry) {\n TheTransforms.setMarks(editor, unMarks, entry[1]);\n return;\n }\n TheTransforms.setMarks(editor, unMarks, editor.selection);\n });\n },\n isHeadingActive(editor: Editor, heading: HeadingElementKinds) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === heading,\n universal: true\n });\n return !!match;\n },\n headingPlugins(): ThePlugin<{}, {}>[] {\n const plugins: ThePlugin<{}, HeadingPluginOptions>[] = [];\n\n for (let level = 1; level <= HEADING_TYPES.length; level++) {\n const key = ElementKinds[`heading_${level}`];\n const plugin: ThePlugin<{}, HeadingPluginOptions> = {\n key,\n options: headingOptions\n };\n plugins.push(plugin);\n }\n return plugins;\n }\n};\n","import { Editor, Transforms, Range } from 'slate';\nimport { CustomElementKinds } from '../../custom-types';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys, ThePluginBaseOption, ToolbarItemType } from '../../interfaces';\nimport { ElementKinds, STANDARD_HEADING_TYPES } from '../../constants';\nimport { HeadingEditor, headingOptions } from './heading.editor';\nimport * as TheQueries from '../../queries';\n\nexport type HeadingPluginOptions = {\n cleanupTypes: CustomElementKinds[];\n} & ThePluginBaseOption;\n\nexport const withHeading = <T extends Editor>(editor: T): T => {\n const { insertBreak } = editor;\n\n editor.insertBreak = () => {\n const { selection } = editor;\n const anchorBlock = TheQueries.getAnchorBlockEntry(editor);\n if (anchorBlock && Range.isCollapsed(selection) && anchorBlock[0].type.startsWith('heading')) {\n if (Editor.isStart(editor, selection.anchor, anchorBlock[1])) {\n insertBreak();\n Transforms.setNodes(\n editor,\n { type: ElementKinds.paragraph },\n {\n at: selection\n }\n );\n return;\n }\n if (Editor.isEnd(editor, selection.focus, anchorBlock[1])) {\n insertBreak();\n Transforms.setNodes(editor, { type: ElementKinds.paragraph });\n return;\n }\n }\n insertBreak();\n };\n\n return editor;\n};\n\nconst headingListPlugins = HeadingEditor.headingPlugins();\n\nexport const createHeadingPlugin = createPluginFactory<HeadingPluginOptions>({\n key: PluginKeys.heading,\n withOverrides: withHeading,\n plugins: headingListPlugins,\n toolbarItems: [\n {\n key: ElementKinds.headingList,\n name: '正文',\n type: ToolbarItemType.dropdown,\n dropdownItemKey: ElementKinds.paragraph,\n includes: [ElementKinds.paragraph, ...STANDARD_HEADING_TYPES]\n },\n {\n key: ElementKinds.paragraph,\n name: '正文',\n styles: { height: '40px' },\n execute: editor => Transforms.setNodes(editor, { type: ElementKinds.paragraph }),\n active: editor => TheQueries.isParagraph(editor)\n },\n {\n key: ElementKinds.heading_1,\n name: '标题1',\n icon: 'header-1',\n styles: { height: '40px', fontSize: '28px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_1),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_1)\n },\n {\n key: ElementKinds.heading_2,\n icon: 'header-2',\n name: '标题2',\n styles: { height: '38px', fontSize: '24px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_2),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_2)\n },\n {\n key: ElementKinds.heading_3,\n icon: 'header-3',\n name: '标题3',\n styles: { height: '34px', fontSize: '20px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_3),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_3)\n },\n {\n key: ElementKinds.heading_4,\n icon: 'header-4',\n name: '标题4',\n styles: { height: '30px', fontSize: '16px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_4),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_4)\n }\n ],\n options: headingOptions\n});\n","import { Editor, Text, Node } from 'slate';\nimport { TableEditor } from '../table/table.editor';\n\nexport interface MarkEditor extends Editor {\n removeMark: (key: string, shouldChange?: boolean) => void;\n}\n\nexport const MarkEditor = {\n isMarkActive(editor: Editor, format) {\n if (!editor?.selection) {\n return;\n }\n const node = Node.get(editor, editor?.selection?.anchor?.path);\n if (!Text.isText(node)) {\n return false;\n }\n const marks = Editor.marks(editor);\n return marks && marks[format] ? true : false;\n },\n toggleMark(editor, format) {\n const isActive = MarkEditor.isMarkActive(editor, format);\n if (TableEditor.toggleMark(editor, isActive, format)) {\n return;\n }\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n }\n};\n","import { Editor, Range, Text, Transforms } from 'slate';\nimport { DISABLED_OPERATE_TYPES, ElementKinds, MarkTypes } from '../../constants';\nimport { PluginKeys } from '../../interfaces';\nimport { createPluginFactory } from '../../core';\nimport { CONTROL_KEY } from '../../utils';\nimport { MarkEditor } from './mark.editor';\n\nexport const withMark = <T extends Editor & MarkEditor>(editor: T): T => {\n const e = editor;\n\n e.removeMark = (key: string, shouldChange = true) => {\n const { selection } = e;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(e, key, {\n match: Text.isText,\n split: true\n });\n } else {\n const marks = { ...(Editor.marks(e) || {}) };\n delete marks[key];\n editor.marks = marks;\n const text = Editor.string(e, selection.anchor.path);\n if (text !== '') {\n Editor.setNormalizing(editor, false);\n e.insertText('');\n editor.marks = marks;\n Editor.setNormalizing(editor, true);\n } else {\n Transforms.unsetNodes(e, key, { at: selection.anchor.path });\n }\n if (shouldChange) {\n editor.onChange();\n }\n }\n }\n };\n\n e.addMark = (key: string, value: any) => {\n const { selection } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(e, { [key]: value }, { match: Text.isText, split: true });\n } else {\n const marks = {\n ...(Editor.marks(e) || {}),\n [key]: value\n };\n editor.marks = marks;\n const text = Editor.string(e, selection.anchor.path);\n if (text !== '') {\n Editor.setNormalizing(editor, false);\n e.insertText('');\n editor.marks = marks;\n Editor.setNormalizing(editor, true);\n } else {\n Transforms.setNodes(e, { [key]: value }, { at: selection.anchor.path });\n }\n }\n }\n };\n\n return e;\n};\n\nexport const createMarkPlugin = createPluginFactory({\n key: PluginKeys.mark,\n withOverrides: withMark,\n toolbarItems: [\n {\n key: MarkTypes.bold,\n icon: 'bold',\n name: '加粗',\n shortcutKey: `${CONTROL_KEY}+B`,\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.bold),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.bold)\n },\n {\n key: MarkTypes.italic,\n icon: 'italic',\n name: '斜体',\n shortcutKey: `${CONTROL_KEY}+I`,\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.italic),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.italic)\n },\n {\n key: MarkTypes.strike,\n icon: 'strike',\n name: '删除线',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.strike),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.strike)\n },\n {\n key: MarkTypes.underline,\n icon: 'underline',\n name: '下划线',\n shortcutKey: `${CONTROL_KEY}+U`,\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.underline),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.underline)\n }\n ],\n options: {\n disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]\n }\n});\n","import { NodeEntry, Element, Node, Editor, Operation, Descendant } from 'slate';\nimport { PluginKeys, QueryOptions } from '../../interfaces';\nimport { _ } from '../../utils/lodash';\nimport { deleteElementKey } from '../../utils/fragment';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { ELEMENT_UNIQUE_ID } from '../../constants';\nimport { idCreator } from '../../utils';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\n\nexport interface WithNodeIDProps extends QueryOptions {\n // Key used for the id. Default is `id`.\n idKey?: string;\n // ID factory, e.g. `uuid`\n idCreator?: () => void;\n // Filter `Text` nodes.\n filterText?: boolean;\n}\n\nexport const withNodeID = <T extends Editor>(e: T): T => {\n const editor = e as T & { removedIDs: Set<any> };\n\n let props: WithNodeIDProps = { idKey: 'id', idCreator: () => Date.now(), filterText: true, filter: () => true };\n const options = getPluginOptions<WithNodeIDProps>(editor, PluginKeys.nodeID);\n props = { ...props, ...options };\n const { idKey, idCreator, filterText, filter } = props;\n\n const { apply, getFragment } = editor;\n\n const idPropsCreator = () => ({ [idKey]: idCreator() });\n\n editor.removedIDs = new Set();\n\n editor.apply = (operation: Operation) => {\n if (operation.type === 'insert_node') {\n const newFilter = (entry: NodeEntry<Node>) => {\n const [_node] = entry;\n return filter(entry) && filterText ? Element.isElement(_node) : TheQueries.isDescendant(_node);\n };\n\n // fix can not find path by orign node\n let node = operation.node;\n if (!Object.isExtensible(node)) {\n node = _.cloneDeep(node);\n }\n\n // it will not overwrite ids once it's set as it's read-only\n TheTransforms.mergeDeepToNodes({\n node,\n source: idPropsCreator,\n query: {\n filter: newFilter\n }\n });\n\n return apply({\n ...operation,\n node\n });\n }\n\n if (operation.type === 'split_node' && (!filterText || (operation.properties as Element).type)) {\n let id = operation.properties[idKey];\n if (editor.removedIDs.has(id)) {\n editor.removedIDs.delete(id);\n } else {\n id = idCreator();\n }\n\n return apply({\n ...operation,\n properties: {\n ...operation.properties,\n [idKey]: id\n }\n });\n }\n\n if (operation.type === 'merge_node' && (!filterText || (operation.properties as Element).type)) {\n editor.removedIDs.add((operation.properties as Element)[idKey]);\n }\n\n return apply(operation);\n };\n\n editor.getFragment = () => {\n const fragment = _.cloneDeep(getFragment());\n return deleteElementKey(fragment, idKey) as Descendant[];\n };\n\n return editor;\n};\n\nexport const createNodeIDPlugin = createPluginFactory<WithNodeIDProps>({\n key: PluginKeys.nodeID,\n withOverrides: withNodeID,\n options: {\n idKey: ELEMENT_UNIQUE_ID,\n idCreator\n }\n});\n","import { Editor, Location, Transforms, Node } from 'slate';\r\n\r\nexport const autoFormatBlock = (\r\n editor: Editor,\r\n type: string,\r\n at: Location,\r\n {\r\n preFormat,\r\n format\r\n }: {\r\n preFormat?: (editor: Editor) => void;\r\n format?: (editor: Editor, markups?: string[]) => void;\r\n },\r\n markups?: string[]\r\n) => {\r\n Transforms.delete(editor, { at });\r\n\r\n if (preFormat) {\r\n preFormat(editor);\r\n }\r\n\r\n if (!format) {\r\n Transforms.setNodes(editor, { type } as Node, { match: n => Editor.isBlock(editor, n) });\r\n } else {\r\n format(editor, markups);\r\n }\r\n};\r\n","import { Editor, Range, Transforms } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { MarkEditor } from '../../../plugins/mark/mark.editor';\n\nexport const autoFormatInline = (\n editor: MarkEditor,\n {\n type,\n between,\n markup,\n ignoreTrim,\n format\n }: {\n type: string;\n between?: string[];\n markup?: string;\n ignoreTrim?: boolean;\n format?: (editor: Editor, markup?: string) => void;\n }\n) => {\n const selection = editor.selection as Range;\n\n const startMarkup = between ? between[0] : markup;\n const endMarkup = between ? between[1] : '';\n\n let endMarkupPointBefore = selection.anchor;\n if (endMarkup) {\n endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: endMarkup\n });\n if (!endMarkupPointBefore) {\n return false;\n }\n }\n\n const startMarkupPointAfter = TheQueries.getPointBefore(editor, endMarkupPointBefore, {\n matchString: startMarkup,\n skipInvalid: true,\n afterMatch: true\n });\n\n if (!startMarkupPointAfter) {\n return false;\n }\n\n // found\n\n const markupRange: Range = {\n anchor: startMarkupPointAfter,\n focus: endMarkupPointBefore\n };\n\n if (!ignoreTrim) {\n const markupText = TheQueries.getText(editor, markupRange);\n if (markupText.trim() !== markupText) {\n return false;\n }\n }\n\n // delete end markup\n if (endMarkup) {\n endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: endMarkup\n });\n Transforms.delete(editor, {\n at: {\n anchor: endMarkupPointBefore,\n focus: selection.anchor\n }\n });\n }\n const startMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: startMarkup,\n skipInvalid: true\n });\n\n if (format) {\n const markupText = TheQueries.getText(editor, markupRange);\n format(editor, markupText);\n\n // delete start to end selection\n Transforms.delete(editor, {\n at: {\n anchor: startMarkupPointBefore,\n focus: selection.anchor\n }\n });\n } else {\n // add mark to the text between the markups\n Transforms.select(editor, markupRange);\n editor.addMark(type, true);\n Transforms.collapse(editor, { edge: 'end' });\n editor.removeMark(type, false);\n\n // delete start markup\n Transforms.delete(editor, {\n at: {\n anchor: startMarkupPointBefore,\n focus: startMarkupPointAfter\n }\n });\n }\n\n return true;\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { PluginKeys } from '../../interfaces';\nimport { getPluginOptions } from '../../core/utils/get-plugin-options';\nimport * as TheQueries from '../../queries';\n\nexport const BlockquoteEditor = {\n toggleBlockquote(editor: Editor) {\n const isActive = TheQueries.isBlockActive(editor, ElementKinds.blockquote);\n const allowParentTypes = getPluginOptions(editor, PluginKeys.blockquote)?.allowParentTypes || [];\n\n if (!isActive) {\n Transforms.wrapNodes(\n editor,\n { type: ElementKinds.blockquote, children: [] },\n {\n mode: 'lowest'\n }\n );\n } else {\n Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.blockquote });\n }\n }\n};\n","import { Editor, Range, Transforms, Node, Element, Path } from 'slate';\nimport { InlineCodeElement } from '../../custom-types';\nimport { ElementKinds, ZERO_WIDTH_CHAR } from '../../constants';\n\nexport const InlineCodeEditor = {\n toggleInlineCode(editor, text?: string) {\n const isActive = InlineCodeEditor.isInlineCodeActive(editor);\n if (isActive) {\n InlineCodeEditor.unwrapInlineCode(editor);\n return;\n }\n if (Range.isCollapsed(editor.selection)) {\n InlineCodeEditor.wrapInlineCode(editor, text);\n } else {\n const fragment = Node.fragment(editor, editor.selection)[0];\n const selectNode = Node.get(fragment, []);\n const selectText = Node.string(selectNode);\n InlineCodeEditor.wrapInlineCode(editor, selectText);\n }\n },\n\n wrapInlineCode(editor: Editor, text = '') {\n if (InlineCodeEditor.isInlineCodeActive(editor)) {\n InlineCodeEditor.unwrapInlineCode(editor);\n }\n const { selection } = editor;\n const isCollapsed = selection && Range.isCollapsed(selection);\n const inlineCode: InlineCodeElement = {\n type: ElementKinds.inlineCode,\n children: isCollapsed ? [{ text: text ? text : ZERO_WIDTH_CHAR }] : []\n };\n if (isCollapsed) {\n Transforms.insertNodes(editor, inlineCode);\n } else {\n Transforms.wrapNodes(editor, inlineCode, { split: true });\n }\n },\n\n unwrapInlineCode(editor: Editor) {\n Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.inlineCode });\n },\n\n isInlineCodeActive(editor: Editor, path?: Path) {\n const [inlineCode] = Editor.nodes(editor, {\n at: path ? path : editor.selection?.anchor.path,\n match: n => Element.isElement(n) && n.type === ElementKinds.inlineCode\n });\n return !!inlineCode;\n }\n};\n","import { Editor, Node, Range, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { CodeElement } from '../../custom-types';\nimport { ElementKinds, DEFAULT_LANGUAGE } from '../../constants';\nimport * as TheTransforms from '../../transforms';\n\nexport const CodeEditor = {\n setCodeAttribute(editor: Editor, element: CodeElement, value: { [key: string]: unknown }) {\n const at = AngularEditor.findPath(editor, element);\n Transforms.setNodes(editor, value, {\n at\n });\n },\n insertCode(editor: Editor) {\n const isSelectContent = Editor.string(editor, editor.selection);\n const [startPoint, endPoint] = Range.edges(editor.selection);\n const elementEntryIterator = Node.elements(editor, {\n from: startPoint.path,\n to: endPoint.path,\n pass: ([node, path]) => {\n return Editor.isBlock(editor, node);\n }\n });\n const elementEntrys = Array.from(elementEntryIterator);\n const isAllParagraph = elementEntrys.every(item => item[0].type === ElementKinds.paragraph);\n if (isSelectContent && editor.selection.anchor.path.length === 2 && isAllParagraph) {\n let content = elementEntrys.reduce((content, [element, path], index) => {\n const text = Node.string(element);\n return content + (elementEntrys.length - 1 === index ? `${text}` : `${text}\\n`);\n }, '');\n const codeElement: CodeElement = {\n type: ElementKinds.code,\n content,\n language: DEFAULT_LANGUAGE.value,\n children: [{ text: '' }]\n };\n TheTransforms.insertElements(editor, codeElement);\n } else {\n const codeElement: CodeElement = {\n type: ElementKinds.code,\n content: '',\n language: DEFAULT_LANGUAGE.value,\n children: [{ text: '' }]\n };\n TheTransforms.insertElements(editor, codeElement);\n }\n }\n};\n","import { Editor, Transforms } from 'slate';\nimport { AutoFormatRule } from '../interfaces/auto-format';\nimport { MarkTypes, ElementKinds } from './node-types';\nimport * as TheQueries from '../queries';\nimport { ListEditor } from '../plugins/list/list.editor';\nimport { TodoItemEditor } from '../plugins/todo-item/todo-item.editor';\nimport { BlockquoteEditor } from '../plugins/blockquote/blockquote.editor';\nimport { InlineCodeEditor } from '../plugins/inline-code/inline-code.editor';\nimport { HeadingEditor } from '../plugins/heading/heading.editor';\nimport { CodeEditor } from '../plugins/code/code.editor';\n\nexport const defaultAutoFormatRules: AutoFormatRule[] = [\n {\n key: ElementKinds.heading_1,\n type: ElementKinds.heading_1,\n markup: '#',\n format: (editor: Editor) => {\n HeadingEditor.setHeading(editor, ElementKinds.heading_1);\n }\n },\n {\n key: ElementKinds.heading_2,\n type: ElementKinds.heading_2,\n markup: '##',\n format: (editor: Editor) => {\n HeadingEditor.setHeading(editor, ElementKinds.heading_2);\n }\n },\n {\n key: ElementKinds.heading_3,\n type: ElementKinds.heading_3,\n markup: '###',\n format: (editor: Editor) => {\n HeadingEditor.setHeading(editor, ElementKinds.heading_3);\n }\n },\n {\n key: ElementKinds.heading_4,\n type: ElementKinds.heading_4,\n markup: '####',\n format: (editor: Editor) => {\n HeadingEditor.setHeading(editor, ElementKinds.heading_4);\n }\n },\n {\n key: ElementKinds.heading_5,\n type: ElementKinds.heading_5,\n markup: '#####',\n format: (editor: Editor) => {\n HeadingEditor.setHeading(editor, ElementKinds.heading_5);\n }\n },\n {\n key: ElementKinds.heading_6,\n type: ElementKinds.heading_6,\n markup: '######',\n format: (editor: Editor) => {\n HeadingEditor.setHeading(editor, ElementKinds.heading_6);\n }\n },\n {\n key: ElementKinds.blockquote,\n type: ElementKinds.blockquote,\n markup: ['>'],\n format: (editor: Editor) => {\n BlockquoteEditor.toggleBlockquote(editor);\n }\n },\n {\n key: MarkTypes.bold,\n type: MarkTypes.bold,\n between: ['**', '**'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n key: `${MarkTypes.bold}__`,\n type: MarkTypes.bold,\n between: ['__', '__'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n key: MarkTypes.italic,\n type: MarkTypes.italic,\n between: ['*', '*'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n key: `${MarkTypes.italic}_`,\n type: MarkTypes.italic,\n between: ['_', '_'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n key: ElementKinds.inlineCode,\n type: ElementKinds.inlineCode,\n between: ['`', '`'],\n mode: 'inline',\n format: (editor: Editor, text: string) => {\n InlineCodeEditor.toggleInlineCode(editor, text);\n Transforms.select(editor, Editor.after(editor, editor.selection));\n }\n },\n {\n key: MarkTypes.strike,\n type: MarkTypes.strike,\n between: ['~~', '~~'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n key: ElementKinds.code,\n type: ElementKinds.code,\n markup: '```',\n format: (editor: Editor) => {\n CodeEditor.insertCode(editor);\n }\n },\n {\n key: ElementKinds.listItem,\n type: ElementKinds.listItem,\n markup: [],\n match: (editor: Editor) => {\n return TheQueries.isParagraph(editor) ? ['*', '-', '+'] : [];\n },\n format: (editor: Editor) => {\n ListEditor.toggleList(editor, ElementKinds.bulletedList);\n }\n },\n {\n key: ElementKinds.numberedList,\n type: ElementKinds.listItem,\n markup: [],\n match: (editor: Editor, textFromBlockStart: string) => {\n return TheQueries.isParagraph(editor) && /^-?\\d+(\\.|\\))$/.test(textFromBlockStart) ? [textFromBlockStart] : [];\n },\n format: (editor: Editor, markup?: string[]) => {\n let startIndex = 1;\n if (markup) {\n startIndex = markup[0].split('.')[0] as unknown as number;\n if (startIndex === 0) {\n startIndex = 1;\n }\n }\n ListEditor.toggleList(editor, ElementKinds.numberedList, startIndex);\n }\n },\n {\n key: ElementKinds.checkItem,\n type: ElementKinds.checkItem,\n markup: [],\n match: (editor: Editor) => {\n return TheQueries.isParagraph(editor) ? ['[]'] : [];\n },\n format: (editor: Editor) => {\n TodoItemEditor.insertTodoItem(editor);\n }\n },\n {\n key: ElementKinds.hr,\n type: ElementKinds.hr,\n markup: '---',\n insertTrigger: true\n }\n];\n","import { Editor, Range } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { castArray } from '../../utils/cast-array';\nimport { AutoFormatRule } from '../../interfaces/auto-format';\nimport { autoFormatBlock } from './transforms/auto-format-block';\nimport { autoFormatInline } from './transforms/auto-format-inline';\nimport { defaultAutoFormatRules } from '../../constants/auto-format-rules';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { PluginKeys } from '../../interfaces';\n\nconst mergAutoFormateRules = (rules: AutoFormatRule[]) => {\n const dataInfo = {};\n rules.forEach(item => {\n if (!dataInfo[item.type + item.key]) {\n dataInfo[item.type + item.key] = {\n ...item\n };\n }\n dataInfo[item.type + item.key] = { ...dataInfo[item.type + item.key], ...item };\n });\n return dataInfo;\n};\n\nexport interface AutoFormatOptions {\n autoFormatRules?: AutoFormatRule[];\n}\n\nexport const withAutoFormat = <T extends Editor>(editor: T) => {\n const { insertText } = editor;\n editor.insertText = text => {\n let autoFormatRules = getPluginOptions<AutoFormatOptions>(editor, PluginKeys.autoFormat)?.autoFormatRules;\n const extraRules = mergAutoFormateRules(autoFormatRules);\n autoFormatRules = Object.values(extraRules);\n if (!TheQueries.isCollapsed(editor.selection)) {\n return insertText(text);\n }\n\n for (const { query, ...rule } of autoFormatRules) {\n const {\n trigger = ' ',\n mode = 'block',\n type,\n markup,\n preFormat,\n format,\n match,\n between,\n ignoreTrim,\n insertTrigger,\n allowSameTypeAbove = false,\n triggerAtBlockStart = true\n } = rule;\n\n if (query && !query(editor, rule)) continue;\n\n const triggers: string[] = castArray(trigger);\n\n // Check trigger\n if (!triggers.includes(text)) continue;\n\n const valid = () => insertTrigger && insertText(text);\n\n if (mode === 'block') {\n let markups: string[] = castArray(markup);\n let markupRange: Range | undefined;\n\n if (triggerAtBlockStart) {\n markupRange = TheQueries.getRangeFromBlockStart(editor) as Range;\n\n // Don't autoformat if there is void nodes.\n const hasVoidNode = TheQueries.someNode(editor, {\n at: markupRange,\n match: n => Editor.isVoid(editor, n)\n });\n if (hasVoidNode) continue;\n\n const textFromBlockStart = TheQueries.getText(editor, markupRange);\n if (match) {\n markups = match(editor, textFromBlockStart);\n }\n if (!markups.includes(textFromBlockStart)) continue;\n } else {\n markupRange = TheQueries.getRangeBefore(editor, editor.selection as Range, {\n matchString: markup,\n skipInvalid: true\n });\n if (!markupRange) continue;\n\n const blockAbovePath = TheQueries.getBlockAbove(editor)?.[1];\n if (!blockAbovePath) continue;\n\n // If the markup is not at the start, insert break before autoformatting.\n if (!Editor.isStart(editor, markupRange.anchor, blockAbovePath)) {\n editor.insertBreak();\n }\n }\n\n if (!allowSameTypeAbove) {\n // Don't autoformat if already in a block of the same type.\n const isBelowSameBlockType = TheQueries.someNode(editor, { match: { type } });\n if (isBelowSameBlockType) continue;\n }\n\n // Start of the block\n autoFormatBlock(\n editor,\n type,\n markupRange,\n {\n preFormat,\n format\n },\n markups\n );\n return valid();\n }\n\n if (mode === 'inline') {\n if (\n autoFormatInline(editor, {\n type,\n between,\n ignoreTrim,\n format,\n markup: Array.isArray(markup) ? markup[0] : markup\n })\n ) {\n return valid();\n }\n }\n }\n\n insertText(text);\n };\n\n return editor;\n};\n\nexport const createAutoFormatPlugin = createPluginFactory<AutoFormatOptions>({\n key: PluginKeys.autoFormat,\n withOverrides: withAutoFormat,\n options: {\n autoFormatRules: defaultAutoFormatRules\n }\n});\n","import { Editor, Transforms } from 'slate';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\n\ntype Params = Parameters<typeof Transforms.insertNodes>;\n\nexport interface TransformEditor {\n insertNodes: (nodes: Params[1], options?: Params[2]) => void;\n}\n\nexport const withTransforms = <T extends Editor>(editor: T) => {\n const e = editor as T & TransformEditor;\n\n e.insertNodes = (nodes, options) => {\n try {\n Transforms.insertNodes(editor, nodes, options);\n } catch (err) {}\n };\n\n return e;\n};\n\nexport const createTransformsPlugin = createPluginFactory({\n key: PluginKeys.transforms,\n withOverrides: withTransforms\n});\n","import { Editor, Path, Element, Node } from 'slate';\nimport { PluginKeys, QueryOptions } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { TransformEditor } from '../common/transforms.plugin';\nimport { CustomElementKinds } from '../../custom-types';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport * as TheQueries from '../../queries';\n\nexport interface WithTrailingNode extends QueryOptions {\n type?: CustomElementKinds;\n level?: number;\n}\n\nexport const withTrailingNode = <T extends Editor & TransformEditor>(editor: T) => {\n const { normalizeNode } = editor;\n\n const options = getPluginOptions<WithTrailingNode>(editor, PluginKeys.trailingNode);\n const { type, level, ...query } = options;\n\n editor.normalizeNode = ([currentNode, currentPath]) => {\n if (!currentPath.length) {\n const entry = TheQueries.getLastNode(editor, level);\n const [lastNode, lastPath] = entry;\n\n if (Element.isElement(lastNode) && lastNode.type !== type && TheQueries.isNodeType(entry, query)) {\n editor.insertNodes(\n {\n type,\n children: [{ text: '' }]\n } as Node,\n { at: Path.next(lastPath) }\n );\n }\n }\n\n return normalizeNode([currentNode, currentPath]);\n };\n\n return editor;\n};\n\nexport const createTrailingNodePlugin = createPluginFactory({\n key: PluginKeys.trailingNode,\n withOverrides: withTrailingNode,\n options: {\n type: ElementKinds.paragraph,\n level: 0\n }\n});\n","import { Editor, Node, Range, Path, Transforms } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { AngularEditor, hotkeys, hasBlockCard, isCardLeft, FAKE_RIGHT_BLOCK_CARD_OFFSET } from 'slate-angular';\nimport { PluginKeys } from '../../interfaces';\nimport { createPluginFactory } from '../../core';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\nimport { insertParagraph } from '../../transforms/insert-paragraph';\nimport * as TheTransforms from '../../transforms';\nimport * as TheQueries from '../../queries';\n\nexport const withBlockCard = <T extends Editor>(editor: T): T => {\n const { insertBreak, deleteBackward, onKeydown, deleteForward, insertData, insertText } = editor;\n\n editor.insertBreak = () => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n TheTransforms.insertParagraph(editor, isLeftCursor ? cursorRootPath : Path.next(cursorRootPath));\n if (!isLeftCursor) {\n Transforms.select(editor, Path.next(cursorRootPath));\n }\n return;\n }\n insertBreak();\n };\n\n editor.deleteBackward = unit => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n const previousPath = Path.hasPrevious(cursorRootPath) && Path.previous(cursorRootPath);\n if (!previousPath) {\n return;\n }\n if (previousPath && TheQueries.isEmptyParagraphByPath(editor, previousPath)) {\n Transforms.removeNodes(editor, {\n at: previousPath\n });\n return;\n }\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.select(editor, Editor.end(editor, previousPath));\n });\n return;\n } else {\n TheTransforms.insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n Transforms.removeNodes(editor, { at: Path.next(cursorRootPath) });\n return;\n }\n }\n\n const blockCard = TheQueries.getBlockCardAbove(editor);\n const beforePoint = Editor.before(editor, editor.selection.anchor);\n const beforeBlockCard = TheQueries.getBlockCardAbove(editor, { at: beforePoint });\n if (!blockCard && beforeBlockCard) {\n if (TheQueries.isBlockAboveEmpty(editor)) {\n const [node, path] = Editor.parent(editor, editor.selection.anchor.path);\n HistoryEditor.withoutMerging(editor, () => {\n const rightCursor = { path: beforeBlockCard[1], offset: FAKE_RIGHT_BLOCK_CARD_OFFSET };\n Transforms.select(editor, { anchor: rightCursor, focus: rightCursor });\n });\n Transforms.delete(editor, { at: path });\n return;\n } else {\n Transforms.delete(editor, { at: beforeBlockCard[1] });\n }\n return;\n }\n\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n TheTransforms.insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n Transforms.removeNodes(editor, { at: Path.next(cursorRootPath) });\n return;\n } else {\n const nextPath = Path.next(cursorRootPath);\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.select(editor, Editor.start(editor, nextPath));\n });\n return;\n }\n }\n\n const blockCard = TheQueries.getBlockCardAbove(editor);\n const afterPoint = Editor.after(editor, editor.selection.anchor);\n const afterBlockCard = TheQueries.getBlockCardAbove(editor, { at: afterPoint });\n if (!blockCard && afterBlockCard) {\n if (TheQueries.isBlockAboveEmpty(editor)) {\n HistoryEditor.withoutMerging(editor, () => {\n const leftCursor = { path: afterBlockCard[1], offset: -1 };\n Transforms.select(editor, { anchor: leftCursor, focus: leftCursor });\n });\n Transforms.delete(editor, { at: Path.previous(afterBlockCard[1]) });\n return;\n }\n return;\n }\n\n deleteForward(unit);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n const nativeEvent = event;\n const { selection } = editor;\n\n const isMoveBackward = hotkeys.isMoveBackward(nativeEvent);\n const isMoveForward = hotkeys.isMoveForward(nativeEvent);\n const isMoveUp = hotkeys.isMoveUp(nativeEvent);\n const isMoveDown = hotkeys.isMoveDown(nativeEvent);\n const isCollapsed = selection && Range.isCollapsed(selection);\n const anchorEntry = TheQueries.anchorBlockEntry(editor);\n\n // block card cursor\n if (anchorNode && hasBlockCard(domSelection)) {\n const isCardLeftCursor = isCardLeft(anchorNode);\n if (isMoveUp) {\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const previousPath = Path.hasPrevious(path) && Path.previous(path);\n const previousNode = previousPath && TheQueries.getNode(editor, previousPath);\n if (previousNode && editor.isBlockCard(previousNode)) {\n AngularEditor.moveBlockCard(editor, previousNode, { direction: isCardLeftCursor ? 'left' : 'right' });\n } else {\n const before = Editor.before(editor, path);\n if (before) {\n Transforms.select(editor, before);\n }\n }\n nativeEvent.preventDefault();\n return;\n }\n if (isMoveDown) {\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const nextPath = Path.next(path);\n const nextNode = TheQueries.getNode(editor, nextPath);\n if (nextNode && editor.isBlockCard(nextNode)) {\n AngularEditor.moveBlockCard(editor, nextNode, { direction: isCardLeftCursor ? 'left' : 'right' });\n } else {\n const after = Editor.after(editor, path);\n if (after) {\n Transforms.select(editor, Editor.after(editor, path));\n }\n }\n nativeEvent.preventDefault();\n return;\n }\n // → + right-block-card\n if (isMoveForward && !isCardLeftCursor) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const nextPath = Path.next(path);\n const nextNode = TheQueries.getNode(editor, nextPath);\n if (nextNode && editor.isBlockCard(nextNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, nextNode, { direction: 'left' });\n return;\n }\n const after = Editor.after(editor, path);\n if (after) {\n Transforms.select(editor, Editor.after(editor, path));\n }\n return;\n }\n // ← + left-block-card\n if (isMoveBackward && isCardLeftCursor) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const previousPath = Path.hasPrevious(path) && Path.previous(path);\n const previousNode = previousPath && TheQueries.getNode(editor, previousPath);\n if (previousNode && editor.isBlockCard(previousNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, previousNode, { direction: 'right' });\n return;\n }\n const before = Editor.before(editor, path);\n if (before) {\n Transforms.select(editor, before);\n }\n return;\n }\n // move to card center\n if ((isCardLeftCursor && isMoveForward) || (!isCardLeftCursor && isMoveBackward)) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n Transforms.select(editor, isCardLeftCursor ? Editor.start(editor, path) : Editor.end(editor, path));\n return;\n }\n }\n // block card center\n if (isCollapsed && (isMoveUp || isMoveDown) && anchorEntry) {\n const [block, path] = anchorEntry;\n if (editor.isBlockCard(block)) {\n event.preventDefault();\n Transforms.select(editor, isMoveUp ? Editor.before(editor, path) : Editor.after(editor, path));\n return;\n }\n }\n if (isCollapsed && (isMoveBackward || isMoveForward) && anchorEntry) {\n const [block] = anchorEntry;\n if (editor.isBlockCard(block)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, block, { direction: isMoveBackward ? 'left' : 'right' });\n return;\n }\n }\n // move to block card cursor\n if (isCollapsed && isMoveBackward && Editor.isStart(editor, selection.anchor, selection.anchor.path.slice(0, 1))) {\n const currentPath = selection.anchor.path.slice(0, 1);\n if (currentPath[0] > 0) {\n const previousNode = Node.get(editor, Path.previous(currentPath));\n if (previousNode && editor.isBlockCard(previousNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, previousNode, { direction: 'right' });\n return;\n }\n }\n }\n if (isCollapsed && isMoveForward && Editor.isEnd(editor, selection.anchor, selection.anchor.path.slice(0, 1))) {\n const currentPath = selection.anchor.path.slice(0, 1);\n if (currentPath[0] < editor.children.length - 1) {\n const previousNode = Node.get(editor, Path.next(currentPath));\n if (previousNode && editor.isBlockCard(previousNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, previousNode, { direction: 'left' });\n return;\n }\n }\n }\n\n onKeydown(event);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: cursorRootPath });\n Transforms.select(editor, cursorRootPath);\n } else {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: Path.next(cursorRootPath) });\n Transforms.select(editor, Path.next(cursorRootPath));\n }\n }\n insertData(data);\n };\n\n editor.insertText = (text: string) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection?.anchorNode;\n if (AngularEditor.isBlockCardLeftCursor(editor) || AngularEditor.isBlockCardRightCursor(editor)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n } else {\n const nextPath = Path.next(cursorRootPath);\n insertParagraph(editor, nextPath);\n Transforms.select(editor, nextPath);\n }\n }\n insertText(text);\n };\n\n return editor;\n};\n\nexport const createBlockCardPlugin = createPluginFactory({\n key: PluginKeys.blockCard,\n withOverrides: withBlockCard\n});\n","import { Editor, Path, Element } from 'slate';\n\nexport const isInline = (editor: Editor, path?: Path): boolean => {\n const [inlineNode] = Editor.nodes(editor, {\n at: path ? path : editor.selection?.anchor.path,\n match: n => Element.isElement(n) && Editor.isInline(editor, n) && !Editor.isVoid(editor, n)\n });\n return !!inlineNode;\n};\n","import { Editor, Transforms, Range } from 'slate';\nimport { timer } from 'rxjs';\nimport { AngularEditor, hotkeys } from 'slate-angular';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { isInline } from '../../utils/is-inline';\nimport * as TheQueries from '../../queries';\n\nexport const withMoveSelection = <T extends Editor>(editor: T): T => {\n const { onClick, deleteBackward, onKeydown } = editor;\n\n editor.onClick = (event: MouseEvent) => {\n const domSelection = window.getSelection();\n if (domSelection && !domSelection.isCollapsed && event.detail >= 2 && editor.selection) {\n const slateSelection = AngularEditor.toSlateRange(editor, domSelection);\n const isNextStart = slateSelection.focus.offset === 0;\n\n if (Range.isExpanded(slateSelection) && Range.isForward(slateSelection) && isNextStart) {\n const beforePoint = Editor.before(editor, slateSelection.focus);\n const changedRange = Editor.range(editor, slateSelection.anchor, beforePoint);\n\n // slate-angular throttle 80ms, so wait selectionchange complete\n timer(81).subscribe(() => {\n Transforms.select(editor, changedRange);\n });\n return;\n }\n }\n onClick(event);\n };\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n const inlineBlockEntry = Editor.above(editor, {\n match: n => Editor.isInline(editor, n)\n });\n // fix deleteBackward on the start of inline block\n // deleteBackward logic bug\n if (inlineBlockEntry && !Editor.isVoid(editor, inlineBlockEntry[0]) && selection.anchor.offset === 0) {\n const beforePoint = TheQueries.getPointBefore(editor, selection.focus);\n Transforms.select(editor, beforePoint);\n }\n deleteBackward(unit);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const { selection } = editor;\n if (!selection || !selection.anchor || !selection.focus) {\n onKeydown(event);\n return;\n }\n const isMoveBackward = hotkeys.isMoveBackward(event);\n const isMoveForward = hotkeys.isMoveForward(event);\n const isCollapsed = selection && TheQueries.isCollapsed(selection);\n const isInlineNode = isInline(editor);\n if (isCollapsed && isMoveForward) {\n let isInlineCodeBefore = false;\n if (!isInlineNode) {\n try {\n const { path } = Editor.after(editor, selection);\n if (path) {\n isInlineCodeBefore = isInline(editor, path);\n }\n } catch (error) {}\n }\n if (isInlineNode || isInlineCodeBefore) {\n event.preventDefault();\n Transforms.move(editor, { unit: 'offset' });\n return;\n }\n }\n if (isCollapsed && isMoveBackward) {\n let isInlineCodeAfter = false;\n if (!isInlineNode) {\n try {\n const { path } = Editor.before(editor, selection);\n isInlineCodeAfter = isInline(editor, path);\n } catch (error) {}\n }\n if (isInlineNode || isInlineCodeAfter) {\n event.preventDefault();\n Transforms.move(editor, { unit: 'offset', reverse: true });\n return;\n }\n }\n onKeydown(event);\n };\n return editor;\n};\n\nexport const createMoveSelectionPlugin = createPluginFactory({\n key: PluginKeys.moveSelection,\n withOverrides: withMoveSelection\n});\n","import { Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../../custom-types';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport * as TheQueries from '../../queries';\n\nexport interface GetFragmentPluginOptions {\n types?: CustomElementKinds[];\n}\n\nexport const withGetFragment = <T extends Editor>(editor: T) => {\n const { getFragment } = editor;\n const elementKinds = getPluginOptions<GetFragmentPluginOptions>(editor, PluginKeys.getFragment)?.types ?? [];\n\n editor.getFragment = () => {\n const { selection } = editor;\n const containerBlocks = [...elementKinds, ...TheQueries.getContainerBlocks(editor)];\n if (selection && selection.anchor.path[0] === selection.focus.path[0]) {\n const fragmentData = getFragment();\n const nodes = TheQueries.getSelectionNodesByType(editor, fragmentData, containerBlocks);\n return nodes && Element.isElement(nodes) ? nodes.children : fragmentData;\n }\n return getFragment();\n };\n\n return editor;\n};\n\nexport const createGetFragmentPlugin = createPluginFactory<GetFragmentPluginOptions>({\n key: PluginKeys.getFragment,\n withOverrides: withGetFragment\n});\n","import { Component, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { Editor, Element } from 'slate';\r\nimport { TheBaseElementComponent } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'blockquote[theBlockquote]',\r\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\r\n})\r\nexport class TheBlockquoteComponent extends TheBaseElementComponent<Element, Editor> {\r\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\r\n super(elementRef, cdr);\r\n }\r\n}\r\n","import { Editor, Element, Transforms } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { PluginKeys } from '../../interfaces';\nimport { createEmptyParagraph } from '../../utils';\nimport { createPluginFactory } from '../../core';\nimport { TheBlockquoteComponent } from './blockquote.component';\nimport { BlockquoteEditor } from './blockquote.editor';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\n\nexport const withBlockquote = <T extends Editor>(editor: T): T => {\n const { renderElement, deleteBackward, insertBreak, isContainer } = editor;\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.blockquote) {\n return TheBlockquoteComponent;\n }\n return renderElement(element);\n };\n\n editor.deleteBackward = unit => {\n const aboveResult = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === ElementKinds.blockquote\n });\n if (!aboveResult) {\n return deleteBackward(unit);\n }\n const hasHandled = TheTransforms.handleContinualDeleteBackward(editor, aboveResult, ElementKinds.blockquote);\n if (hasHandled) {\n return;\n }\n return deleteBackward(unit);\n };\n\n editor.insertBreak = () => {\n const lowestBlock = TheQueries.anchorBlock(editor);\n\n if (!lowestBlock) {\n insertBreak();\n return;\n }\n const hasHandled = TheTransforms.handleContinualInsertBreak(editor, lowestBlock, ElementKinds.blockquote);\n if (hasHandled) {\n return;\n }\n const voidEntry = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && Editor.isVoid(editor, n)\n });\n if (voidEntry && voidEntry[0]) {\n Transforms.insertNodes(editor, createEmptyParagraph());\n return;\n }\n return insertBreak();\n };\n\n editor.isContainer = (element: Element) => {\n return element.type === ElementKinds.blockquote ? true : isContainer(element);\n };\n\n return editor;\n};\n\nexport const createBlockquotePlugin = createPluginFactory({\n key: PluginKeys.blockquote,\n withOverrides: withBlockquote,\n toolbarItems: [\n {\n key: ElementKinds.blockquote,\n icon: 'blockquote',\n name: '引用',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.blockquote),\n execute: editor => BlockquoteEditor.toggleBlockquote(editor)\n }\n ],\n options: {\n allowParentTypes: [ElementKinds.tableCell]\n }\n});\n","import { Editor, Path, Transforms } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { hotkeys } from 'slate-angular';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\nimport * as TheQueries from '../../queries';\n\nexport const withRemoveVoid = <T extends Editor>(editor: T): T => {\n const { deleteBackward, deleteForward, onKeydown } = editor;\n\n const deleteBlockVoid = (e: Editor) => {\n const aboveEntry = TheQueries.getAbove(e);\n const canDelete = aboveEntry && Editor.isBlock(e, aboveEntry[0]) && Editor.isVoid(e, aboveEntry[0]);\n if (canDelete) {\n Transforms.insertNodes(e, createEmptyParagraph(), { at: Path.next(aboveEntry[1]) });\n Transforms.select(e, Path.next(aboveEntry[1]));\n Transforms.removeNodes(e, { at: aboveEntry[1] });\n }\n return canDelete;\n };\n\n editor.deleteBackward = unit => {\n if (deleteBlockVoid(editor)) {\n return;\n }\n deleteBackward(unit);\n };\n\n editor.onKeydown = event => {\n const aboveEntry = TheQueries.getAbove(editor);\n if (aboveEntry && Editor.isVoid(editor, aboveEntry[0]) && Editor.isInline(editor, aboveEntry[0])) {\n if (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event)) {\n event.preventDefault();\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.move(editor);\n });\n Transforms.delete(editor, { reverse: true });\n return;\n }\n if (hotkeys.isSplitBlock(event)) {\n event.preventDefault();\n Transforms.move(editor);\n return;\n }\n }\n onKeydown(event);\n };\n\n editor.deleteForward = unit => {\n if (deleteBlockVoid(editor)) {\n return;\n }\n deleteForward(unit);\n };\n return editor;\n};\n\nexport const createRemoveVoidPlugin = createPluginFactory({\n key: PluginKeys.removeVoid,\n withOverrides: withRemoveVoid\n});\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { DropdownMode } from '../../constants/toolbar';\nimport { PluginKeys, ToolbarItem, ToolbarKey } from '../../interfaces';\nimport * as TheQueries from '../../queries';\n\n@Directive()\nexport abstract class TheBaseToolbarItem {\n @Input()\n set toolbarItem(value: ToolbarItem) {\n this._toolbarItem = value;\n }\n get toolbarItem() {\n return this._toolbarItem;\n }\n @Input() editor: Editor;\n disabled: boolean;\n active: string | boolean;\n _toolbarItem: ToolbarItem;\n itemMousedownHandle: (item: ToolbarItem) => void;\n\n @HostBinding('class.disabled') get disabledState() {\n return this.disabled;\n }\n\n @HostBinding('class.active') get activeState() {\n return this.active;\n }\n\n execute(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.itemMousedownHandle && !this.editor?.selection) {\n const lastNode = TheQueries.getLastNode(this.editor, 1);\n const end = Editor.end(this.editor, lastNode[1]);\n Transforms.select(this.editor, end);\n AngularEditor.focus(this.editor);\n }\n }\n\n selectionChange(editor: Editor) {\n if (editor.selection) {\n this.active = this._toolbarItem?.active ? this._toolbarItem?.active(editor) : false;\n if (this._toolbarItem?.disable) {\n this.disabled = this._toolbarItem?.disable ? this._toolbarItem?.disable(editor) : false;\n } else {\n const thePlugin = TheQueries.getPluginByToolbarItem(editor, this._toolbarItem);\n this.disabled = thePlugin && TheQueries.getToolbarItemDisabled(editor, thePlugin.key);\n }\n }\n }\n}\n\n@Directive()\nexport abstract class TheBaseToolbarDropdown extends TheBaseToolbarItem {\n activeMenuItem: ToolbarItem;\n\n @Input() menus: ToolbarItem[];\n\n @Input() mode: DropdownMode = DropdownMode.text;\n\n @Input() dropdownItemKey: ToolbarKey;\n\n get defaultDropdownItem() {\n const activeItem = this.dropdownItemKey && this.menus.find((item) => item.key === this.dropdownItemKey);\n return activeItem ? activeItem : this.menus[0];\n }\n\n selectionChange(editor: Editor) {\n super.selectionChange(editor);\n const activeItem = this.menus.find(i => {\n if (i?.active) {\n return i?.active(editor);\n }\n });\n if (!this.toolbarItem.dropdownFixedIcon) {\n this.activeMenuItem = activeItem ? activeItem : this.defaultDropdownItem;\n }\n }\n}\n","import { Component, OnInit, ElementRef, Input, HostListener, TemplateRef, ViewChild, ViewContainerRef, HostBinding } from '@angular/core';\nimport { ConnectedPosition, Overlay } from '@angular/cdk/overlay';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { DropdownMode } from '../../constants/toolbar';\nimport { ToolbarItem } from '../../interfaces/toolbar';\nimport { TheBaseToolbarDropdown } from '../../core/toolbar-item/base-toolbar-item';\n\n@Component({\n selector: 'the-toolbar-dropdown',\n templateUrl: './toolbar-dropdown.component.html',\n host: {\n class: 'the-toolbar-dropdown-container'\n }\n})\nexport class TheToolbarDropdownComponent extends TheBaseToolbarDropdown implements OnInit {\n @Input() itemMousedownHandle: (item: ToolbarItem) => void;\n\n editor: Editor;\n template: TemplateRef<any>;\n dropdownMode = DropdownMode;\n dropdownPopoverRef: ThyPopoverRef<any>;\n\n get isOpen() {\n return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();\n }\n\n @ViewChild('iconModeTemplate', { static: true })\n iconModeTemplate: TemplateRef<any>;\n\n @ViewChild('textModeTemplate', { static: true })\n textModeTemplate: TemplateRef<any>;\n\n @ViewChild('dropdownTemplate', { static: true })\n dropdownTemplate: TemplateRef<any>;\n\n @HostListener('mousedown', ['$event'])\n toggleDropdown(event: MouseEvent) {\n super.execute(event);\n\n if (this.editor?.disabled || this.disabled) {\n return;\n }\n this.openDropdownPopover();\n }\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement)) {\n this.closeDropdownPopover();\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n private thyPopover: ThyPopover,\n private viewContainerRef: ViewContainerRef,\n private overlay: Overlay\n ) {\n super();\n }\n\n ngOnInit() {\n if (!this.template) {\n this.template = this.mode === this.dropdownMode.icon ? this.iconModeTemplate : this.textModeTemplate;\n }\n\n if (!this.activeMenuItem) {\n this.activeMenuItem = this.defaultDropdownItem;\n }\n\n if (this.toolbarItem) {\n this.elementRef.nativeElement.classList.add(`${this.toolbarItem?.key}`);\n }\n }\n\n itemMousedown(event: MouseEvent, item: ToolbarItem) {\n super.execute(event);\n\n this.closeDropdownPopover();\n\n if (!this.toolbarItem.dropdownFixedIcon) {\n this.activeMenuItem = item; \n }\n\n if (this.itemMousedownHandle) {\n this.itemMousedownHandle(item);\n return;\n }\n\n if (item?.execute) {\n item?.execute(this.editor);\n }\n }\n\n openDropdownPopover() {\n this.dropdownPopoverRef = this.thyPopover.open(this.dropdownTemplate, {\n origin: this.elementRef,\n panelClass: ['the-toolbar-dropdown-popover', this.toolbarItem?.key],\n placement: 'bottomLeft',\n insideClosable: false,\n backdropClosable: true,\n hasBackdrop: false,\n offset: 10,\n minWidth: 0,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.dropdownPopoverRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());\n }\n\n closeDropdownPopover() {\n if (this.dropdownPopoverRef) {\n this.dropdownPopoverRef?.close();\n }\n }\n\n createPositionStrategy() {\n const topPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -15\n };\n const bottomPosition: ConnectedPosition = {\n ...topPosition,\n overlayY: 'top',\n offsetY: 42\n };\n return this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withPositions([bottomPosition, topPosition]);\n }\n}\n","<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenuItem?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenuItem?.key && !toolbarItem?.dropdownFixedIcon\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n","import {\n Component,\n ElementRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n OnInit,\n ViewChild,\n AfterViewInit,\n NgZone,\n Inject,\n OnDestroy\n} from '@angular/core';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor, IS_SAFARI } from 'slate-angular';\nimport { CodeMirrorComponent } from 'ng-codemirror';\nimport { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode, ToolbarItemMode } from '../../constants';\nimport { DefaultToolbarItem, TheBaseElementComponent, TheMode, TheModeConfig, THE_MODE_TOKEN } from '../../interfaces';\nimport { CodeElement } from '../../custom-types';\nimport { CodeEditor } from './code.editor';\nimport * as TheTransforms from '../../transforms';\nimport { delay, take, takeUntil } from 'rxjs/operators';\nimport { ThyResizeEvent } from 'ngx-tethys/resizable';\nimport { TheContextService } from '../../services/context.service';\nimport { fromEvent, Subject } from 'rxjs';\n\n@Component({\n selector: 'div[theCode]',\n templateUrl: './code.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheCodeComponent extends TheBaseElementComponent<CodeElement, Editor> implements OnInit, AfterViewInit, OnDestroy {\n startRenderCodemirror = false;\n dropdownMode = DropdownMode;\n maxHeight = this.config.mode === TheMode.default ? 350 - CODEMIRROR_PADDING_TOP * 2 : 0;\n menus = CODE_MODES.map(item => {\n return { key: item.value, name: item.showName };\n });\n destroy$ = new Subject<void>();\n ToolbarItemMode = ToolbarItemMode;\n isHightLight = false;\n resizeHeight: number = null;\n\n options = {\n mode: this.menus[0].key,\n lineNumbers: false,\n readOnly: false,\n autofocus: false,\n lineWiseCopyCut: true,\n lineWrapping: this.config.mode === TheMode.default ? false : true,\n cursorBlinkRate: 500\n };\n\n activeLanguage: DefaultToolbarItem = this.menus[0];\n\n resizeBounds = null;\n\n get code() {\n return this.element.content;\n }\n\n @ViewChild('codemirror', { read: CodeMirrorComponent, static: false })\n codemirror: CodeMirrorComponent;\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n if (this.options.readOnly !== this.readonly) {\n this.useReadonly();\n }\n if (this.options.mode !== this.element.language) {\n this.useMode();\n }\n if (this.options.lineWrapping !== this.element.autoWrap) {\n this.useAutoWrap();\n }\n if (this.resizeHeight !== this.element.height) {\n this.useHeight();\n }\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private thyNotifyService: ThyNotifyService,\n private contextService: TheContextService,\n private ngZone: NgZone,\n @Inject(THE_MODE_TOKEN)\n private config: TheModeConfig\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.nativeElement, 'mousedown')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n event.stopPropagation();\n const isBlockOperation =\n this.isCollapsed &&\n this.nativeElement.querySelector('.the-code-block-operation').contains(event.target as HTMLElement);\n const isCodemirror = this.nativeElement.querySelector('.ng-codemirror').contains(event.target as HTMLElement);\n this.isHightLight = !isCodemirror && !isBlockOperation;\n });\n });\n this.elementRef.nativeElement.classList.add('the-code-container');\n }\n\n ngAfterViewInit() {\n if (this.readonly) {\n // delay 20ms\n // ccodemirror is too slow\n this.ngZone.onStable.pipe(take(1), delay(20)).subscribe(() => {\n this.renderCodemirror();\n });\n } else {\n // edit mode can not delay\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.renderCodemirror();\n this.initializeCodemirrorFocus();\n this.resizeBounds = {\n nativeElement: this.contextService.getEditableElement()\n };\n });\n }\n }\n\n renderCodemirror() {\n this.startRenderCodemirror = true;\n this.useReadonly();\n this.useMode();\n this.useAutoWrap();\n this.useHeight();\n this.cdr.detectChanges();\n }\n\n initializeCodemirrorFocus() {\n if (this.isCollapsed) {\n setTimeout(() => {\n if (this.isCollapsed && this.codemirror && this.codemirror.editor && !this.codemirror.editor.hasFocus()) {\n AngularEditor.blur(this.editor);\n this.codemirror.editor.focus();\n this.codemirror.editor.refresh();\n }\n }, 200);\n }\n }\n\n codeChange($event) {\n this.isHightLight = false;\n CodeEditor.setCodeAttribute(this.editor, this.element, { content: $event });\n }\n\n onDelete(event: MouseEvent) {\n event.preventDefault();\n TheTransforms.deleteElement(this.editor, this.element);\n }\n\n onCopy(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n // remove codemorrir selection\n const selection = window.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, AngularEditor.findPath(this.editor, this.element));\n\n if (IS_SAFARI) {\n this.safariCopy();\n return;\n }\n\n document.execCommand('copy') ? this.thyNotifyService.success('复制成功') : this.thyNotifyService.error('复制失败');\n AngularEditor.deselect(this.editor);\n }\n\n safariCopy() {\n const currentElement = AngularEditor.toDOMNode(this.editor, this.element);\n const blockCard = currentElement.closest('.slate-block-card');\n const span = document.createElement('pre');\n\n span.appendChild(blockCard.cloneNode(true));\n span.textContent = this.element.content;\n if (this.element.language) {\n span.setAttribute('data-language', this.element.language);\n }\n if (this.element.autoWrap) {\n span.setAttribute('data-auto-wrap', String(this.element.autoWrap));\n }\n if (this.element.height) {\n span.setAttribute('data-height', String(this.element.height));\n }\n document.body.appendChild(span);\n\n const selection = window.getSelection();\n const range = document.createRange();\n if (selection) {\n selection.removeAllRanges();\n range.selectNode(span);\n selection.addRange(range);\n\n document.execCommand('copy') ? this.thyNotifyService.success('复制成功') : this.thyNotifyService.error('复制失败');\n selection.removeAllRanges();\n document.body.removeChild(span);\n AngularEditor.deselect(this.editor);\n }\n }\n\n focusChange(codeMirrorFocused: boolean) {\n if (codeMirrorFocused) {\n this.isHightLight = false;\n }\n }\n\n onChangeLanguage = item => {\n this.options = { ...this.options, mode: item.key };\n this.activeLanguage = item;\n CodeEditor.setCodeAttribute(this.editor, this.element, { language: item.key });\n };\n\n useMode() {\n this.options = { ...this.options, mode: this.element.language };\n const menuItem = this.menus.find(i => i.key === this.element.language);\n if (menuItem) {\n this.activeLanguage = menuItem;\n }\n }\n\n useAutoWrap() {\n this.options = { ...this.options, lineWrapping: this.element.autoWrap || false };\n }\n\n useHeight() {\n if (this.element.height && this.config.mode !== 'print') {\n this.resizeHeight = this.element.height;\n this.maxHeight = this.element.height;\n }\n }\n\n useReadonly() {\n this.options = { ...this.options, readOnly: this.readonly, cursorBlinkRate: this.readonly ? -1 : 500 };\n }\n\n onResize({ height }: ThyResizeEvent) {\n this.resizeHeight = height;\n this.maxHeight = height;\n }\n\n onEndResize() {\n Transforms.select(this.editor, AngularEditor.findPath(this.editor, this.element));\n CodeEditor.setCodeAttribute(this.editor, this.element, { height: this.resizeHeight });\n }\n\n onChangeWrap(value: boolean) {\n this.isHightLight = false;\n this.options = { ...this.options, lineWrapping: value || false };\n CodeEditor.setCodeAttribute(this.editor, this.element, { autoWrap: value ? value : null });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div contenteditable=\"false\" class=\"the-code-block-operation\" *ngIf=\"isCollapsed && codemirror && !options.readOnly\">\n <thy-icon-nav>\n <the-toolbar-dropdown\n [menus]=\"menus\"\n [toolbarItem]=\"activeLanguage\"\n [dropdownItemKey]=\"activeLanguage?.key\"\n [itemMousedownHandle]=\"onChangeLanguage\"\n >\n </the-toolbar-dropdown>\n <span class=\"auto-wrap d-flex align-items-center\">\n <span>自动换行</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"copy\"\n thyTooltip=\"复制\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <nav-split-line [mode]=\"ToolbarItemMode.vertical\"></nav-split-line>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"trash\"\n thyTooltip=\"删除\"\n class=\"remove-link\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n </thy-icon-nav>\n</div>\n\n<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- 只读模式下CodeMirror-sizer高度比编辑模式下多2px,设置thyMinHeight为46px防止拖拽到最小高度时只读模式下出现滚动条 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsed, readonly: options.readOnly, active: isHightLight && isCollapsed }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsed && !options.readOnly\"></thy-resize-handle>\n</div>\n","import { Editor, Element } from 'slate';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { TheCodeComponent } from './code.component';\nimport { CodeEditor } from './code.editor';\nimport * as TheQueries from '../../queries';\n\nexport const withCode = <T extends Editor>(editor: T): T => {\n const { isVoid, isBlockCard, renderElement } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.code ? true : isVoid(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.code) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.code) {\n return TheCodeComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n\nexport const createCodePlugin = createPluginFactory({\n key: PluginKeys.code,\n withOverrides: withCode,\n toolbarItems: [\n {\n key: ElementKinds.code,\n icon: 'code-syntax',\n name: '代码块',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.code),\n execute: editor => CodeEditor.insertCode(editor)\n }\n ],\n options: {\n allowParentTypes: [ElementKinds.tableCell]\n }\n});\n","import { TheEditor } from '../../interfaces';\nimport { Node, NodeEntry, Transforms, Element } from 'slate';\nimport { castArray } from '../../utils/cast-array';\n\n/**\n * Remove nodes with empty text.\n */\nexport const withRemoveEmptyNodes =\n (options: { type: string | string[] }) =>\n <T extends TheEditor>(editor: T) => {\n const types = castArray(options.type);\n\n const { normalizeNode } = editor;\n\n editor.normalizeNode = ([node, path]: NodeEntry<Element>) => {\n if (node.type && types.includes(node.type as string) && Node.string(node) === '') {\n Transforms.removeNodes(editor, { at: path });\n return;\n }\n\n normalizeNode([node, path]);\n };\n\n return editor;\n };\n","export enum LinkTags {\r\n insert = 'insert',\r\n edit = 'edit',\r\n selection = 'selection'\r\n}\r\nexport enum LinkCloseTypes {\r\n apply = 'apply',\r\n destroy = 'destroy'\r\n}\r\n","import { Range, Transforms, Editor, Element, Node } from 'slate';\r\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\r\nimport { LinkElement } from '../../custom-types';\r\nimport { ElementKinds, LINK_DEFAULT_TEXT } from '../../constants';\r\nimport { getAboveByType } from '../../queries/get-above-by-type';\r\nimport { TheLinkComponent } from './link.component';\r\nimport { LinkTags } from './link.types';\r\n\r\nexport const LinkEditor = {\r\n insertLink(editor: Editor) {\r\n if (Range.isCollapsed(editor.selection)) {\r\n Promise.resolve()\r\n .then(() => {\r\n LinkEditor.wrapLink(editor, LINK_DEFAULT_TEXT, '');\r\n })\r\n .then(() => {\r\n const [linkNode] = getAboveByType(editor, ElementKinds.link);\r\n const linkComponent = ELEMENT_TO_COMPONENT.get(linkNode) as TheLinkComponent;\r\n linkComponent.openLinkEdit(LinkTags.insert);\r\n });\r\n } else {\r\n const isActive = LinkEditor.isLinkActive(editor);\r\n if (isActive) {\r\n LinkEditor.unwrapLink(editor);\r\n return;\r\n }\r\n\r\n const fragment = Node.fragment(editor, editor.selection)[0];\r\n const selectNode = Node.get(fragment, []);\r\n const selectText = Node.string(selectNode);\r\n\r\n Promise.resolve()\r\n .then(() => {\r\n LinkEditor.wrapLink(editor, selectText, '');\r\n })\r\n .then(() => {\r\n const [linkNode] = getAboveByType(editor, ElementKinds.link);\r\n const linkComponent = ELEMENT_TO_COMPONENT.get(linkNode) as TheLinkComponent;\r\n linkComponent.openLinkEdit(LinkTags.insert);\r\n });\r\n }\r\n },\r\n isLinkActive(editor: Editor) {\r\n const [link] = Editor.nodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\r\n return !!link;\r\n },\r\n wrapLink(editor: Editor, text: string, url: string) {\r\n if (LinkEditor.isLinkActive(editor)) {\r\n LinkEditor.unwrapLink(editor);\r\n }\r\n const { selection } = editor;\r\n const isCollapsed = selection && Range.isCollapsed(selection);\r\n const link: LinkElement = {\r\n type: ElementKinds.link,\r\n url,\r\n children: isCollapsed ? [{ text }] : []\r\n };\r\n if (isCollapsed) {\r\n Transforms.insertNodes(editor, link);\r\n } else {\r\n Transforms.wrapNodes(editor, link, { split: true });\r\n Transforms.collapse(editor, { edge: 'end' });\r\n }\r\n },\r\n unwrapLink(editor: Editor) {\r\n Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\r\n }\r\n};\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { A_TAG_REL_ATTR } from '../../../constants/default';\r\n\r\n@Component({\r\n selector: 'the-link-hover',\r\n templateUrl: './link-hover.component.html'\r\n})\r\nexport class TheLinkHoverComponent implements OnInit {\r\n @Input() link = '';\r\n\r\n @Input() dom: HTMLElement;\r\n\r\n @Input() editHandle: () => void;\r\n\r\n @Input() deleteHandle: () => void;\r\n\r\n aTagRelAttr = A_TAG_REL_ATTR;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n editLink(event: MouseEvent) {\r\n event.preventDefault();\r\n this.editHandle();\r\n event.stopPropagation();\r\n }\r\n\r\n removeLink(event: MouseEvent) {\r\n event.preventDefault();\r\n this.deleteHandle();\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"link-hover-card\">\r\n <a readonly href=\"{{ link }}\" target=\"_blank\" rel=\"{{ aTagRelAttr }}\" class=\"hover-control-plaintext text-truncate\">\r\n {{ link }}\r\n </a>\r\n <span class=\"operate-separator\"></span>\r\n <button thyButtonIcon=\"edit\" thySize=\"xs\" (mousedown)=\"editLink($event)\"></button>\r\n <span class=\"operate-separator\"></span>\r\n <button thyButtonIcon=\"unlink-insert\" thySize=\"xs\" (mousedown)=\"removeLink($event)\"></button>\r\n</div>\r\n","import { Component, OnInit, Input, HostBinding, HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Transforms, Range, Node, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../../queries';\nimport { TheEditor } from '../../../interfaces';\nimport { LinkCloseTypes, LinkTags } from '../link.types';\n\n@Component({\n selector: 'the-link-edit',\n templateUrl: './link-edit.component.html'\n})\nexport class TheLinkEditComponent implements OnInit {\n editor: Editor;\n\n @Input() tag: LinkTags;\n\n @Input() node: Node;\n\n @Input() link = '';\n\n @Input() text = '';\n\n @Input() originSelection: Range;\n\n originLink: string;\n\n @HostBinding('class')\n className = 'the-link-edit-container';\n\n originText: string;\n\n validatorConfig = {\n validationMessages: {\n link: {\n required: '链接不能为空',\n pattern: '请输入正确的链接'\n },\n text: {\n required: '文本不能为空'\n }\n }\n };\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.the-link-edit-container').contains(event.target as HTMLElement)) {\n this.thyPopoverRef.close();\n }\n }\n\n constructor(public thyPopoverRef: ThyPopoverRef<any>) {}\n\n ngOnInit() {\n this.originText = this.text;\n this.originLink = this.link;\n this.thyPopoverRef.beforeClosed().subscribe(type => {\n switch (true) {\n case type === LinkCloseTypes.apply:\n break;\n case this.tag === LinkTags.insert:\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, this.originSelection);\n this.editor.undo();\n break;\n case this.tag === LinkTags.edit:\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, this.originSelection);\n break;\n }\n });\n }\n\n linkRegExp(val) {\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(val);\n }\n\n closePopover(type?: string) {\n this.thyPopoverRef.close(type);\n }\n\n applyLink(form) {\n const link = this.link.trim();\n if (this.linkRegExp(link)) {\n const linkPath = TheQueries.findPath(this.editor, this.node);\n if (this.originLink !== link) {\n Transforms.setNodes(this.editor, { url: link }, { at: linkPath });\n }\n if (this.originText !== this.text) {\n const [start, end] = Editor.edges(this.editor, linkPath);\n Transforms.insertText(this.editor, this.text, { at: { anchor: end, focus: end } });\n Transforms.delete(this.editor, { at: { anchor: start, focus: end } });\n }\n TheEditor.focus(this.editor);\n Transforms.select(this.editor, Editor.after(this.editor, linkPath));\n this.closePopover(LinkCloseTypes.apply);\n } else {\n form.validator.setElementErrorMessage(`link`, '请输入正确的链接');\n }\n }\n}\n","<form\r\n thyForm\r\n #linkForm=\"thyForm\"\r\n [thyFormValidatorConfig]=\"validatorConfig\"\r\n name=\"linkForm\"\r\n>\r\n <thy-form-group thyLabelText=\"文本\">\r\n <input\r\n thyInput\r\n placeholder=\"请输入文本\"\r\n required\r\n name=\"text\"\r\n [(ngModel)]=\"text\"\r\n thyAutofocus\r\n type=\"text\"\r\n />\r\n </thy-form-group>\r\n <thy-form-group thyLabelText=\"链接\">\r\n <input\r\n name=\"link\"\r\n thyInput\r\n placeholder=\"请输入链接\"\r\n required\r\n type=\"text\"\r\n #linkControl=\"ngModel\"\r\n [(ngModel)]=\"link\"\r\n />\r\n </thy-form-group>\r\n <thy-form-group-footer>\r\n <div class=\"btn-pair\">\r\n <button\r\n thyButton=\"link-secondary\"\r\n thySize=\"sm\"\r\n (click)=\"closePopover()\"\r\n >取消</button>\r\n <button\r\n thyButton=\"primary-square\"\r\n thySize=\"sm\"\r\n (thyFormSubmit)=\"applyLink(linkForm)\"\r\n >应用</button>\r\n </div>\r\n </thy-form-group-footer>\r\n</form>\r\n","import { Overlay } from '@angular/cdk/overlay';\nimport { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, ViewContainerRef, HostListener, NgZone } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor, Element, Node as SlateNode, Transforms, Text } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { LinkElement } from '../../custom-types';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { LinkCloseTypes, LinkTags } from './link.types';\nimport { TheLinkHoverComponent } from './hover/link-hover.component';\nimport { TheLinkEditComponent } from './edit/link-edit.component';\nimport { SlateElementContext } from 'slate-angular';\n\n@Component({\n selector: '[TheBaseLinkComponent]',\n template: ''\n})\nexport class TheBaseLinkComponent extends TheBaseElementComponent<LinkElement, Editor> implements OnInit, OnDestroy {\n thyPopoverHoverRef: ThyPopoverRef<any>;\n thyPopoverEditRef: ThyPopoverRef<any>;\n\n get linkHoverOpened(): boolean {\n return this.thyPopoverHoverRef && this.thyPopoverHoverRef.componentInstance;\n }\n\n get linkEditOpened(): boolean {\n return this.thyPopoverEditRef && this.thyPopoverEditRef.componentInstance;\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private thyPopover: ThyPopover,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n closeHoverPopover() {\n if (this.linkHoverOpened) {\n this.thyPopoverHoverRef.close();\n }\n }\n\n beforeContextChange = (value: SlateElementContext) => {\n if (this.thyPopoverEditRef && this.thyPopoverEditRef.componentInstance) {\n let { originText } = this.thyPopoverEditRef.componentInstance;\n if (originText && originText !== (value.element.children[0] as Text).text) {\n this.thyPopoverEditRef.componentInstance.originText = (value.element.children[0] as Text).text;\n }\n }\n };\n\n @HostListener('click', ['$event'])\n mousedownHandle(event: MouseEvent) {\n if (!this.readonly && !this.editor.disabled) {\n this.openLinkHover();\n }\n }\n\n openLinkEdit(tag: LinkTags) {\n if (this.linkHoverOpened) {\n this.thyPopoverHoverRef.afterClosed().subscribe(() => {\n this.internalOpenLinkEdit(tag);\n });\n this.thyPopover.close();\n } else {\n this.internalOpenLinkEdit(tag);\n }\n }\n\n isLinkEditOpenedByDom(dom: HTMLElement) {\n return this.linkEditOpened && this.thyPopoverEditRef.componentInstance.dom === dom;\n }\n\n closeEditPopover(type?: string) {\n if (this.linkEditOpened) {\n this.thyPopoverEditRef.close(type);\n }\n }\n\n openLinkHover() {\n const dom = this.nativeElement;\n const url = this.element.url;\n\n if (this.linkHoverOpened) {\n return;\n }\n this.thyPopoverHoverRef = this.thyPopover.open(TheLinkHoverComponent, {\n initialState: {\n link: url,\n dom: dom,\n editHandle: () => {\n this.openLinkEdit(LinkTags.edit);\n },\n deleteHandle: () => {\n Transforms.unwrapNodes(this.editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\n this.closeHoverPopover();\n }\n },\n origin: dom,\n placement: 'bottomLeft',\n offset: 8,\n minWidth: 0,\n hasBackdrop: false,\n outsideClosable: true,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'the-link-over'\n });\n }\n\n private internalOpenLinkEdit(tag: LinkTags) {\n const link = this.element.url;\n SlateNode.get(this.editor, this.editor.selection.focus.path);\n this.thyPopoverEditRef = this.thyPopover.open(TheLinkEditComponent, {\n initialState: {\n tag,\n editor: this.editor,\n node: this.element,\n text: SlateNode.string(this.element),\n link,\n originSelection: this.editor.selection\n },\n minWidth: 0,\n origin: this.elementRef.nativeElement,\n backdropClosable: true,\n placement: 'bottomLeft',\n offset: 8,\n hasBackdrop: false,\n originActiveClass: null,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'the-link-edit'\n });\n this.cdr.markForCheck();\n }\n\n close(type?: string) {\n this.closeHoverPopover();\n this.closeEditPopover(type);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.close(LinkCloseTypes.destroy);\n }\n}\n\n@Component({\n selector: 'a[theLink]',\n template: ` <span contenteditable=\"false\" class=\"the-break-char\">{{ inlineChromiumBugfix }}</span>\n <span><slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children></span>\n <span contenteditable=\"false\" class=\"the-break-char\">{{ inlineChromiumBugfix }}</span>`,\n host: {\n '[attr.href]': 'element.url',\n target: '_blank'\n }\n})\nexport class TheLinkComponent extends TheBaseLinkComponent {\n // Put this at the start and end of an inline component to work around this Chromium bug:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n inlineChromiumBugfix = String.fromCodePoint(160);\n}","import isUrl from 'is-url';\nimport { Transforms } from 'slate';\nimport { Editor, Element } from 'slate';\nimport { createPluginFactory } from '../../core';\nimport { ElementKinds, CLIPBOARD_FORMAT_KEY, DISABLED_OPERATE_TYPES } from '../../constants';\nimport { PluginKeys } from '../../interfaces';\nimport { withRemoveEmptyNodes } from '../normalizers/remove-empty-nodes';\nimport { LinkEditor } from './link.editor';\nimport { TheLinkComponent } from './link.component';\n\nexport const withLink = <T extends Editor>(editor: T): T => {\n const { insertData, insertText, isInline, renderElement } = editor;\n\n editor.isInline = (element: Element) => {\n return element.type === ElementKinds.link ? true : isInline(element);\n };\n\n editor.insertText = text => {\n if (text && isUrl(text)) {\n LinkEditor.wrapLink(editor, text, text);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n } else {\n insertText(text);\n }\n };\n\n editor.insertData = data => {\n const text = data.getData('text/plain');\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n\n if (text && isUrl(text) && !fragment) {\n LinkEditor.wrapLink(editor, text, text);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n } else {\n insertData(data);\n }\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.link) {\n return TheLinkComponent;\n }\n return renderElement(element);\n };\n\n editor = withRemoveEmptyNodes({ type: ElementKinds.link })(editor);\n\n return editor;\n};\n\nexport const createLinkPlugin = createPluginFactory({\n key: PluginKeys.link,\n withOverrides: withLink,\n toolbarItems: [\n {\n key: ElementKinds.link,\n icon: 'link-insert',\n name: '链接',\n execute: editor => LinkEditor.insertLink(editor),\n active: editor => LinkEditor.isLinkActive(editor)\n }\n ],\n options: {\n disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]\n }\n});\n","/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n/** Indicates the width of a column. */\r\nexport interface ColumnSize {\r\n /** The ID/name of the column, as defined in CdkColumnDef. */\r\n readonly tableCell: HTMLElement;\r\n\r\n /** The width / height in pixels of the column / row. */\r\n readonly deltaSize?: number;\r\n\r\n /** The width / height in pixels of the column / row prior to this update, if known. */\r\n readonly previousSize?: number;\r\n}\r\n\r\n/** Interface describing column size changes. */\r\nexport interface ColumnSizeAction extends ColumnSize {\r\n /**\r\n * Whether the resize action should be applied instantaneously. False for events triggered during\r\n * a UI-triggered resize (such as with the mouse) until the mouse button is released. True\r\n * for all programatically triggered resizes.\r\n */\r\n readonly completeImmediately?: boolean;\r\n}\r\n\r\n/**\r\n * Originating source of column resize events within a table.\r\n * @docs-private\r\n */\r\n@Injectable()\r\nexport class ColumnResizeNotifierSource {\r\n /** Emits when an in-progress resize is canceled. */\r\n readonly resizeCanceled = new Subject<ColumnSizeAction>();\r\n\r\n /** Emits when a resize is applied. */\r\n readonly resizeCompleted = new Subject<ColumnSize>();\r\n\r\n readonly resizeStarted = new Subject<ColumnSize>();\r\n\r\n /** Triggers a resize action. */\r\n readonly triggerResize = new Subject<ColumnSizeAction>();\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\nimport { Subject, MonoTypeOperatorFunction, Observable, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, share, map, startWith, skip, tap } from 'rxjs/operators';\n\nexport enum Position {\n top = 'top',\n right = 'right',\n bottom = 'bottom',\n left = 'left'\n}\nexport class HoveredCellInfo {\n cell: HTMLTableCellElement;\n position: Position;\n}\n\n@Injectable()\nexport class TableCellEventDispatcher {\n readonly tableCellHovered = new Subject<HoveredCellInfo | null>();\n\n readonly overlayHandleActiveForCell = new Subject<HoveredCellInfo | null>();\n\n constructor(private readonly ngZone: NgZone) {}\n\n readonly tableCellHoveredOrActiveDistinct = combineLatest(\n this.tableCellHovered.pipe(startWith(null), distinctUntilChanged()),\n this.overlayHandleActiveForCell.pipe(startWith(null), distinctUntilChanged())\n ).pipe(\n skip(1), // Ignore initial [null, null] emission.\n map(([hovered, active]) => active || hovered),\n distinctUntilChanged(),\n share()\n );\n\n private readonly _tableCellHoveredDistinctReenterZone = this.tableCellHoveredOrActiveDistinct.pipe(this._enterZone(), share());\n\n private _lastSeenCell: Element | null = null;\n private _lastSeenCellHover: Observable<HoveredCellInfo> | null = null;\n\n /**\n * Emits whether the specified row should show its overlay controls.\n * Emission occurs within the NgZone.\n */\n resizeOverlayVisibleForTableCell(cell: Element): Observable<HoveredCellInfo> {\n if (cell !== this._lastSeenCell) {\n this._lastSeenCell = cell;\n this._lastSeenCellHover = this._tableCellHoveredDistinctReenterZone.pipe(\n map(hoveredCell => {\n if (hoveredCell && hoveredCell.cell === cell) {\n return hoveredCell;\n } else {\n return null;\n }\n }),\n distinctUntilChanged((x, y) => x === y || (x && y && x.cell === y.cell && x.position === y.position)),\n share()\n );\n }\n\n return this._lastSeenCellHover!;\n }\n\n private _enterZone<T>(): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) =>\n new Observable<T>(observer =>\n source.subscribe({\n next: value => this.ngZone.run(() => observer.next(value)),\n error: err => observer.error(err),\n complete: () => observer.complete()\n })\n );\n }\n}\n","import { Editor } from 'slate';\r\nimport { TablePosition } from '.';\r\nimport { SelectedCell, TableOptions } from '../table.types';\r\n\r\nexport function getSelectCellNode(editor: Editor, selectedCells: SelectedCell[]) {\r\n const { anchor } = editor.selection;\r\n const opts = new TableOptions();\r\n const pos = TablePosition.create(opts, editor, anchor.path);\r\n\r\n return selectedCells\r\n .map(item => {\r\n const node = pos.findCellByPath(item);\r\n if (node) {\r\n return {\r\n ...item,\r\n node: node\r\n };\r\n }\r\n })\r\n .filter(item => item);\r\n}\r\n","import { Transforms, Node, Path, Element, Editor } from 'slate';\nimport { TablePosition } from './table-position';\nimport { ElementKinds } from '../../../constants';\nimport { getSelectCellNode } from './get-select-cell-node';\nimport { TableCellElement } from '../../../custom-types';\nimport { SelectedCell, TableOptions } from '../table.types';\nimport * as TheQueries from '../../../queries';\n\nexport interface SelectedCellInfo {\n col: number;\n row: number;\n node: TableCellElement;\n maxRowSpan?: number;\n}\n\nexport function isSelectedCellMerged(editor: Editor): boolean {\n if (editor && editor.selection) {\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const { cell } = TablePosition.create(opts, editor, anchor.path);\n return (cell.colspan && cell.colspan !== 1) || (cell.rowspan && cell.rowspan !== 1);\n }\n return false;\n}\n\nexport function getLeftCellDict(selectCellNodes: SelectedCellInfo[]) {\n return selectCellNodes.reduce((dict, cell) => {\n if (!dict[cell.row]) {\n dict[cell.row] = cell;\n }\n return dict;\n }, {} as { [key: string]: SelectedCellInfo });\n}\n\nexport function calculateCellSpan(\n selectCellNodes: SelectedCellInfo[],\n leftCellDict: { [key: string]: SelectedCellInfo }\n): { rowspan: number; colspan: number } {\n let rowspan = 0,\n colspan = 0,\n crossCount = -1;\n selectCellNodes\n .filter(item => !item.node.hidden)\n .forEach(item => {\n const { row } = item;\n if (item.row === selectCellNodes[0].row) {\n colspan += item.node.colspan || 1;\n }\n const maxRowSpan = leftCellDict[row].maxRowSpan || 1;\n leftCellDict[row].maxRowSpan = (item.node.rowspan || 1) > maxRowSpan ? item.node.rowspan : maxRowSpan;\n });\n\n Object.values(leftCellDict).forEach((item: SelectedCellInfo) => {\n const { row, maxRowSpan } = item;\n if (crossCount < row) {\n rowspan += maxRowSpan;\n crossCount = row + maxRowSpan - 1;\n }\n });\n return { rowspan, colspan };\n}\n\nexport function mergeCell(editor: Editor, selectedCells: SelectedCell[]) {\n const selectCellNodes = getSelectCellNode(editor, selectedCells);\n Editor.withoutNormalizing(editor, () => {\n let leftTopCellPath: Path;\n const leftCellDict = getLeftCellDict(selectCellNodes);\n selectCellNodes.forEach((cell, index) => {\n const { row, node } = cell;\n if (node) {\n const cellPath = TheQueries.findPath(editor, node);\n if (index === 0) {\n leftTopCellPath = cellPath;\n } else {\n mergeCellContent(editor, leftTopCellPath, cellPath);\n Transforms.setNodes(editor, { colspan: null, rowspan: null, hidden: true }, { at: cellPath });\n }\n }\n });\n let { rowspan, colspan } = calculateCellSpan(selectCellNodes, leftCellDict);\n Transforms.setNodes(editor, { rowspan, colspan }, { at: leftTopCellPath });\n Transforms.select(editor, leftTopCellPath);\n Transforms.collapse(editor, { edge: 'end' });\n });\n}\n\nexport function mergeCellContent(editor: Editor, leftTopCellPath: Path, cellPath: Path) {\n Editor.withoutNormalizing(editor, () => {\n const { path } = Editor.end(editor, leftTopCellPath);\n const endRange = Editor.range(editor, Editor.start(editor, cellPath), Editor.end(editor, cellPath));\n let tableCell;\n\n path.pop();\n\n const nextPath = Path.next(path);\n\n Transforms.moveNodes(editor, {\n at: endRange,\n to: nextPath,\n match: node => {\n if (Element.isElement(node) && node.type === ElementKinds.tableCell) {\n tableCell = node;\n }\n if (Element.isElement(node) && node.type && tableCell && (tableCell.children as Node[]).includes(node)) {\n const isSingleEmptyParagraph =\n tableCell.children.length === 1 && Editor.isEmpty(editor, node) && node.type === ElementKinds.default;\n return !isSingleEmptyParagraph && true;\n }\n }\n });\n });\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable, BehaviorSubject, merge } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { Transforms, Node, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TablePosition } from './utils';\nimport { _ } from '../../utils/lodash';\nimport { mergeCell } from './utils/merge-cell';\nimport { ColorType } from '../../constants/color-select';\nimport { SelectedCell, TableOptions, TheTableOptions } from './table.types';\nimport { TableCellElement, TableElement } from '../../custom-types';\nimport { TableEditor } from './table.editor';\nimport { TheEditor } from '../../interfaces';\n\n@Injectable()\nexport class TableStore {\n private selectedCells$: BehaviorSubject<SelectedCell[]> = new BehaviorSubject([]);\n private dangerousCells$: BehaviorSubject<SelectedCell[]> = new BehaviorSubject([]);\n private cellsChangeObject$: Subject<object> = new Subject();\n private tableChange$: Subject<object> = new Subject();\n\n selectedColumnsIndex: number[] = [];\n selectedRowsIndex: number[] = [];\n\n dangerousColumnsIndex: number[] = [];\n dangerousRowsIndex: number[] = [];\n\n isSelectedTable: boolean;\n\n editor: Editor;\n\n public anchorCellPath: number[];\n public focusCellPath: number[];\n public preFocusCellPath: number[];\n\n public focusCellElement: HTMLTableCellElement;\n\n public isPrepareSelecting = false;\n public isCellSelecting = false;\n public isRightClicking = false;\n\n public maxCol: number;\n\n get selectedCells() {\n return this.selectedCells$.getValue();\n }\n\n get dangerousCells() {\n return this.dangerousCells$.getValue();\n }\n\n constructor() {}\n\n getTableEntry(editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, editor, path).tableEntry;\n }\n\n getTablePath(editor: Editor) {\n const tableEntry = this.getTableEntry(editor);\n return tableEntry[1];\n }\n\n getTablePosition(editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, editor, path);\n }\n\n setSelectedCells(cells: SelectedCell[], pos: TablePosition) {\n const rowGroup = _.groupBy(cells, ({ row, col }) => row);\n const colGroup = _.groupBy(cells, ({ row, col }) => col);\n this.selectedRowsIndex = [];\n this.selectedColumnsIndex = [];\n for (const row in rowGroup) {\n if (rowGroup[row].length === pos.getWidth()) {\n this.selectedRowsIndex.push(parseInt(row, 10));\n }\n }\n for (const col in colGroup) {\n if (colGroup[col].length === pos.getHeight()) {\n this.selectedColumnsIndex.push(parseInt(col, 10));\n }\n }\n this.selectedRowsIndex = _.uniq(this.selectedRowsIndex);\n this.selectedColumnsIndex = _.uniq(this.selectedColumnsIndex);\n if (this.selectedRowsIndex.length === pos.getHeight() && this.selectedColumnsIndex.length === pos.getWidth()) {\n this.isSelectedTable = true;\n } else {\n this.isSelectedTable = false;\n }\n this.selectedCells$.next(cells);\n }\n\n initEditor(editor: Editor) {\n this.editor = editor;\n }\n\n selectRow(editor: Editor, index: number) {\n this.selectedRowsIndex = [index];\n this.selectedColumnsIndex = [];\n\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, path);\n const result = [];\n for (let i = 0; i < pos.getWidth(); i++) {\n result.push({\n row: index,\n col: i\n });\n }\n this.setSelectedCells(result, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([index, 0]));\n }\n\n selectColumn(editor: Editor, index: number) {\n this.selectedColumnsIndex = [index];\n this.selectedRowsIndex = [];\n\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, path);\n const result = [];\n for (let i = 0; i < pos.getHeight(); i++) {\n result.push({\n row: i,\n col: index\n });\n }\n this.setSelectedCells(result, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([0, index]));\n }\n\n selectTable(editor: Editor) {\n this.isSelectedTable = true;\n const { cells, pos } = this.getTableCellsAndPosition(editor);\n this.setSelectedCells(cells, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([0, 0]));\n }\n\n private getTableCellsAndPosition(editor: Editor): { cells: SelectedCell[]; pos: TablePosition } {\n const pos = this.createTablePosition();\n const result = [];\n for (let i = 0; i < pos.getHeight(); i++) {\n for (let j = 0; j < pos.getWidth(); j++) {\n result.push({\n row: i,\n col: j\n });\n }\n }\n return { cells: result, pos };\n }\n\n selectCells(editor: Editor) {\n const opts = new TableOptions();\n const { anchor, focus } = editor.selection;\n const pos = TablePosition.create(opts, editor, anchor.path);\n const anchorPath = this.anchorCellPath.slice(-2);\n const focusPath = this.focusCellPath.slice(-2);\n\n const rows = [anchorPath[0], focusPath[0]].sort((m, n) => m - n);\n const columns = [anchorPath[1], focusPath[1]].sort((m, n) => m - n);\n\n const { colspan: anchorColspanCount, rowspan: anchorRowspanCount } = Editor.node(\n editor,\n this.anchorCellPath\n )[0] as TableCellElement;\n const { colspan: focusColspanCount, rowspan: focusRowspanCount } = Editor.node(editor, this.focusCellPath)[0] as TableCellElement;\n\n const anchorRow = anchorPath[0] + (anchorRowspanCount || 1) - 1;\n const focusRow = focusPath[0] + (focusRowspanCount || 1) - 1;\n const anchorCol = anchorPath[1] + (anchorColspanCount || 1) - 1;\n const focusCol = focusPath[1] + (focusColspanCount || 1) - 1;\n\n let initMaxCol = Math.max(anchorCol, focusCol);\n let initMaxRow = Math.max(anchorRow, focusRow);\n const { minRow, maxRow, minCol, maxCol } = this.getMinAndMaxCellIndex(initMaxRow, initMaxCol, rows[0], columns[0], pos.table);\n const result = [];\n for (let i = minRow; i < maxRow + 1; i++) {\n for (let j = minCol; j < maxCol + 1; j++) {\n result.push({\n row: i,\n col: j\n });\n }\n }\n this.setSelectedCells(result, pos);\n }\n\n getMinAndMaxCellIndex(maxRow: number, maxCol: number, minRow: number, minCol: number, table: TableElement) {\n const beforeCols = [];\n const beforeRows = [];\n let spanSelectedCells = [];\n if (this.selectedCells.length) {\n spanSelectedCells = this.selectedCells\n .map(item => {\n const { row, col } = item;\n const node = table.children[row].children[col] as TableCellElement;\n if (!node.hidden) {\n return {\n ...item,\n colspan: node.colspan || 1,\n rowspan: node.rowspan || 1\n };\n }\n })\n .filter(item => item);\n }\n table.children.map((row, rowIndex) => {\n if (rowIndex <= maxRow) {\n row.children.map((cell: TableCellElement, colIndex) => {\n if (colIndex <= maxCol) {\n const cellRowIndex = rowIndex + (cell.rowspan || 1) - 1;\n const cellColIndex = colIndex + (cell.colspan || 1) - 1;\n\n if (spanSelectedCells.length) {\n const { row: selectRow, col: selectCol, rowspan: selectRowspan, colspan: selectColspan } = spanSelectedCells[0];\n if (selectRow + selectRowspan - 1 >= minRow && selectCol + selectColspan - 1 >= minCol) {\n minRow = Math.min(spanSelectedCells[0].row, minRow);\n minCol = Math.min(spanSelectedCells[0].col, minCol);\n }\n }\n\n if (cell.colspan && cell.colspan > 1) {\n beforeCols.push({ rowIndex, colIndex, cellColIndex });\n if (cellColIndex >= minCol && cellRowIndex >= minRow) {\n maxCol = Math.max(maxCol, cellColIndex);\n minCol = Math.min(minCol, colIndex);\n }\n }\n\n if (cell.rowspan && cell.rowspan > 1) {\n beforeRows.push({ rowIndex, colIndex, cellRowIndex });\n if (cellColIndex >= minCol && cellRowIndex >= minRow) {\n minRow = Math.min(minRow, rowIndex);\n maxRow = Math.max(maxRow, cellRowIndex);\n }\n }\n }\n });\n }\n });\n\n // 判断选区范围内之前的单元格 如果存在cellColIndex === minCol,表示当前获取的minCol并不是最小的,重新获取minCol\n const colNode = beforeCols.filter(\n item => item.rowIndex <= maxRow && item.colIndex <= maxCol && item.rowIndex >= minRow && item.cellColIndex === minCol\n );\n const rowNode = beforeRows.filter(\n item => item.rowIndex <= maxRow && item.colIndex <= maxCol && item.colIndex >= minCol && item.cellRowIndex === minRow\n );\n if (colNode.length || rowNode.length) {\n return this.getMinAndMaxCellIndex(maxRow, maxCol, minRow, minCol, table);\n }\n return {\n minRow,\n maxRow,\n minCol,\n maxCol\n };\n }\n\n selectCell(cell: HTMLTableCellElement, editor: Editor) {\n if (!editor.selection) {\n return;\n }\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n this.anchorCellPath = path;\n this.focusCellPath = path;\n this.focusCellElement = cell;\n const [row, col] = path.slice(-2);\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const pos = TablePosition.create(opts, editor, anchor.path);\n this.setSelectedCells([{ row, col }], pos);\n }\n\n selectedCellsChange(): Observable<SelectedCell[]> {\n return this.selectedCells$.asObservable().pipe(skip(1));\n }\n\n cellsPositionChange() {\n return this.cellsChangeObject$.asObservable();\n }\n\n changeCells() {\n this.cellsChangeObject$.next();\n }\n\n emitTableChange() {\n this.tableChange$.next();\n }\n\n tableChange() {\n return this.tableChange$.asObservable();\n }\n\n clearSelectedCells() {\n this.selectedColumnsIndex = [];\n this.selectedRowsIndex = [];\n this.isSelectedTable = false;\n this.isCellSelecting = false;\n this.isRightClicking = false;\n this.selectedCells$.next([]);\n }\n\n selectCellStart(cell: HTMLTableCellElement, editor: Editor) {\n this.isPrepareSelecting = true;\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n this.anchorCellPath = path;\n this.focusCellPath = null;\n if (!this.preFocusCellPath) {\n this.preFocusCellPath = this.anchorCellPath;\n }\n }\n\n selectCellOngoing(cell: HTMLTableCellElement, editor: Editor) {\n if (AngularEditor.isReadonly(editor)) {\n return;\n }\n if (!editor.selection) {\n return;\n }\n let isChanged: boolean;\n if (cell) {\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n isChanged = !this.focusCellPath || this.focusCellPath.toString() !== path.toString();\n this.focusCellPath = path;\n this.focusCellElement = cell;\n } else {\n isChanged =\n !this.focusCellPath ||\n (this.focusCellPath.toString() === this.anchorCellPath.toString() && this.selectedCells.length === 0);\n }\n if (this.isPrepareSelecting && isChanged) {\n if (JSON.stringify(this.preFocusCellPath) !== JSON.stringify(this.focusCellPath)) {\n this.isCellSelecting = true;\n this.selectCells(editor);\n this.preFocusCellPath = this.focusCellPath;\n }\n }\n }\n\n selectCellEnd(editor: Editor) {\n if (this.isCellSelecting) {\n this.focusCell(editor, this.focusCellPath);\n }\n this.isPrepareSelecting = false;\n this.preFocusCellPath = null;\n }\n\n focusCell(editor: Editor, path: number[]) {\n const at = Editor.start(editor, path);\n TheEditor.focus(this.editor);\n Transforms.select(editor, at);\n }\n\n dangerousCellsChange(): Observable<SelectedCell[]> {\n return this.dangerousCells$.asObservable().pipe(skip(1));\n }\n\n setDangerousCells() {\n this.dangerousRowsIndex = this.selectedRowsIndex;\n this.dangerousColumnsIndex = this.selectedColumnsIndex;\n this.dangerousCells$.next(this.selectedCells);\n }\n\n clearDangerousCells() {\n this.dangerousRowsIndex = [];\n this.dangerousColumnsIndex = [];\n this.dangerousCells$.next([]);\n const pos = this.createTablePosition();\n if (pos.table) {\n this.isSelectedTable = this.selectedRowsIndex.length === pos.getHeight() && this.selectedColumnsIndex.length === pos.getWidth();\n }\n }\n\n dangerousOrSelectedCellsChange(): Observable<SelectedCell[]> {\n return merge(this.dangerousCells$.asObservable().pipe(skip(1)), this.selectedCells$.asObservable().pipe(skip(1)));\n }\n\n setDangerousRows() {\n const cells = this.selectedCells;\n const rows = _(cells).map('row').uniq().valueOf();\n const pos = this.createTablePosition();\n const result = [];\n\n this.dangerousRowsIndex = rows;\n this.isSelectedTable = rows.length === pos.getHeight();\n if (this.isSelectedTable) {\n this.dangerousColumnsIndex = [...Array(pos.getWidth())].map((v, i) => i);\n }\n\n for (const rowIndex of rows) {\n for (let i = 0; i < pos.getWidth(); i++) {\n result.push({\n row: rowIndex,\n col: i\n });\n }\n }\n this.dangerousCells$.next(result);\n }\n\n setDangerousColumns() {\n const cells = this.selectedCells;\n const cols = _(cells).map('col').uniq().valueOf();\n const pos = this.createTablePosition();\n const result = [];\n\n this.dangerousColumnsIndex = cols;\n this.isSelectedTable = cols.length === pos.getWidth();\n if (this.isSelectedTable) {\n this.dangerousRowsIndex = [...Array(pos.getHeight())].map((v, i) => i);\n }\n\n for (const colIndex of cols) {\n for (let i = 0; i < pos.getHeight(); i++) {\n result.push({\n row: i,\n col: colIndex\n });\n }\n }\n this.dangerousCells$.next(result);\n }\n\n setDangerousTable() {\n this.isSelectedTable = true;\n const { cells, pos } = this.getTableCellsAndPosition(this.editor);\n this.dangerousRowsIndex = [...Array(pos.getHeight())].map((v, i) => i);\n this.dangerousColumnsIndex = [...Array(pos.getWidth())].map((v, i) => i);\n this.dangerousCells$.next(cells);\n }\n\n selectFirstCell() {\n const { row, col } = this.selectedCells[0];\n const tablePath = this.getTablePath(this.editor);\n const path = Editor.start(this.editor, [...tablePath, row, col]);\n Transforms.select(this.editor, path);\n }\n\n setSelectedCellsBackgroundColor(backgroundColor: ColorType) {\n const cells = this.selectedCells;\n const tablePath = this.getTablePath(this.editor);\n Editor.withoutNormalizing(this.editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tablePath, row, col];\n Transforms.setNodes(this.editor, { backgroundColor }, { at: cellPath });\n }\n });\n }\n\n getSelectedCellBackgroundColor(): string {\n if (this.editor && this.editor.selection) {\n const {\n anchor: { path }\n } = this.editor.selection;\n const opts = new TableOptions();\n const { cell } = TablePosition.create(opts, this.editor, path);\n return cell && cell.backgroundColor;\n }\n return '';\n }\n\n clearSelectedCellsContent() {\n const cells = this.selectedCells;\n const tablePosition = this.getTablePosition(this.editor);\n if (tablePosition.isInTable()) {\n Editor.withoutNormalizing(this.editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tablePosition.tableEntry[1], row, col];\n const node = Node.get(this.editor, cellPath) as TableCellElement;\n TableEditor.clearCell(this.editor, [node, cellPath]);\n }\n });\n Transforms.select(this.editor, Editor.start(this.editor, tablePosition.cellEntry[1]));\n }\n }\n\n mergeCell(editor: Editor) {\n mergeCell(editor, this.selectedCells);\n }\n\n setTableOptions(editor: Editor, options: TheTableOptions) {\n const tablePath = this.getTablePath(this.editor);\n Transforms.setNodes(editor, { options }, { at: tablePath });\n }\n\n removeDangerousColumns() {\n const { dangerousColumnsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n dangerousColumnsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeColumn(this.editor, index);\n });\n this.changeCells();\n }\n\n removeDangerousRows() {\n const { dangerousRowsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n dangerousRowsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeRow(this.editor, index);\n });\n this.changeCells();\n }\n\n createTablePosition(): TablePosition {\n const {\n anchor: { path }\n } = this.editor.selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, this.editor, path);\n }\n\n removeColumnOrRows() {\n const { selectedRowsIndex, selectedColumnsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n if (selectedRowsIndex.length > 0 && selectedColumnsIndex.length === 0) {\n selectedRowsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeRow(this.editor, index);\n });\n this.changeCells();\n }\n if (selectedColumnsIndex.length > 0 && selectedRowsIndex.length === 0) {\n selectedColumnsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeColumn(this.editor, index);\n });\n this.changeCells();\n }\n }\n}\n","export type ColorType = string;\n\nexport const Colors = [\n '#FFFFFF',\n '#333333',\n '#FF0100',\n '#FFDA00',\n '#A4E143',\n '#38D9F0',\n '#4EA8EE',\n '#9570E7',\n '#F3F3F3',\n '#CCCCCC',\n '#FEF3F1',\n '#FEFCDA',\n '#EDF6E8',\n '#E6FBFA',\n '#EBF4FC',\n '#F1EDF7',\n '#DDDDDD',\n '#A5A5A5',\n '#FCD5D0',\n '#F9EDA6',\n '#D4E9D7',\n '#C8E6EA',\n '#CCE0F2',\n '#DAD6EA',\n '#888888',\n '#494949',\n '#EE7976',\n '#E7B323',\n '#99C191',\n '#79C6CE',\n '#6EAAD7',\n '#9D8EC2',\n '#41464C',\n '#000000',\n '#BF1A1E',\n '#AD720E',\n '#1C7232',\n '#1C7892',\n '#18439D',\n '#521B78'\n];\n\nexport const BackgroundColors = [\n '#FFFFFF',\n '#FACCCC',\n '#FFEBCC',\n '#FFFFCC',\n '#CDE8CC',\n '#CCE0F5',\n '#EBD6FF',\n '#F3F3F3',\n '#F06665',\n '#FFC266',\n '#FFFF66',\n '#66B966',\n '#66A3E0',\n '#C285FF'\n];\n\nexport const SpecialTextColor = '#333333';\n\nexport const SpecialBackgroundColor = '#FFFFFF';\n\nexport const TableHeaderBackgroundColor = '#F3F3F3';\n\nexport interface ColorSelectOption {\n showCustom?: boolean;\n perRowColorNumbers: number;\n rowOptions: {\n [rowNumber: number]: string; // 设置每行选中的颜色\n };\n specialColor?: string;\n}\n","import { Editor, Transforms } from 'slate';\nimport { TableCellElement, TableElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from './table-position';\nimport * as TheQueries from '../../../queries';\n\nexport function splitCell(editor: Editor) {\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const tablePosition = TablePosition.create(opts, editor, anchor.path);\n const { cell, table, cellEntry } = tablePosition;\n if ((!cell.rowspan && !cell.colspan) || (cell.rowspan === 1 && cell.colspan === 1)) return editor;\n const cellRow = tablePosition.getRowIndex();\n const cellCol = tablePosition.getColumnIndex();\n resetTableCell(editor, table, cell, cellRow, cellCol);\n Transforms.select(editor, cellEntry[1]);\n Transforms.collapse(editor, { edge: 'end' });\n}\n\nexport function resetTableCell(editor: Editor, table: TableElement, cell: TableCellElement, cellRow: number, cellCol: number) {\n const rowSpanIndex = cellRow + (cell.rowspan || 1) - 1;\n const colSpanIndex = cellCol + (cell.colspan || 1) - 1;\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n row.children.map((col, colIndex) => {\n if (rowIndex >= cellRow && rowIndex <= rowSpanIndex && colIndex >= cellCol && colIndex <= colSpanIndex) {\n const path = TheQueries.findPath(editor, col);\n Transforms.setNodes(editor, { colspan: null, rowspan: null, hidden: null }, { at: path });\n }\n });\n });\n });\n}\n","import { Editor } from 'slate';\r\nimport { isSelectedCellMerged } from './merge-cell';\r\nimport { getSelectCellNode } from './get-select-cell-node';\r\nimport { MenuEntity, SelectedCell } from '../table.types';\r\n\r\nexport function setCellMenuInvisibility(editor: Editor, menuList: MenuEntity[], selectedCells: SelectedCell[], isActiveSelect?: boolean) {\r\n const isCellMerged = isSelectedCellMerged(editor);\r\n const selectCellNodes = getSelectCellNode(editor, selectedCells).filter(item => !item.node.hidden);\r\n menuList.forEach(item => {\r\n if (item.key === 'merge-cells') {\r\n item.invisibility = !(selectCellNodes && selectCellNodes.length > 1 && !isActiveSelect);\r\n }\r\n if (item.key === 'split-cells') {\r\n item.invisibility = !(selectCellNodes && selectCellNodes.length === 1 && isCellMerged && !isActiveSelect);\r\n }\r\n });\r\n}\r\n","import { Component, OnInit, Input, HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys';\nimport { Editor } from 'slate';\nimport { TableStore } from '../../table.store';\nimport { TableDropdownOption } from '../../table.types';\n\n@Component({\n selector: 'the-table-options',\n template: `\n <thy-action-menu class=\"table-drop-menu\">\n <ng-container *ngFor=\"let option of tableDropdownList\">\n <a thyActionMenuItem href=\"javascript:;\" (mousedown)=\"setTableOptions($event, option)\">\n <span thyActionMenuItemName>{{ option.name }}</span>\n <span thyActionMenuItemExtendIcon class=\"text-primary\" *ngIf=\"option.isActive\">\n <thy-icon thyIconName=\"check\"></thy-icon>\n </span>\n </a>\n </ng-container>\n </thy-action-menu>\n `\n})\nexport class TheTableOptionsComponent implements OnInit {\n @Input() tableStore: TableStore;\n\n @Input() editor: Editor;\n\n get table() {\n return this.tableStore && this.tableStore.getTableEntry(this.editor)[0];\n }\n\n tableDropdownList: TableDropdownOption[] = [\n // {\n // name: '表头行',\n // key: 'headerRow'\n // },\n // {\n // name: '表头列',\n // key: 'headerColumn'\n // },\n {\n name: '序号列',\n key: 'numberedColumn'\n }\n ];\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (this.popoverRef && !document.querySelector('.table-options-pannel').contains(event.target as HTMLElement)) {\n this.popoverRef.close();\n }\n }\n\n constructor(private popoverRef: ThyPopoverRef<TheTableOptionsComponent>) {}\n\n ngOnInit(): void {\n this.setColumnOptions();\n }\n\n setColumnOptions() {\n this.tableDropdownList.forEach(item => {\n item.isActive = (this.table.options && this.table.options[item.key]) || false;\n });\n }\n\n setTableOptions(event: MouseEvent, option: TableDropdownOption) {\n event.preventDefault();\n event.stopPropagation();\n const currentOption = this.tableDropdownList.find(item => item.key === option.key);\n currentOption.isActive = !option.isActive;\n const tableOption = {};\n tableOption[option.key] = currentOption.isActive || null;\n this.tableStore.setTableOptions(this.editor, {\n ...this.table.options,\n ...tableOption\n });\n this.popoverRef.close();\n }\n}\n","import { Component, OnInit, Input, NgZone, OnDestroy } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { TableStore } from '../../table.store';\nimport { ColorType, BackgroundColors, TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../../constants/color-select';\nimport { TheColorSelectService } from '../../../../services/color-select.service';\nimport { splitCell } from '../../utils/split-cell';\nimport { setCellMenuInvisibility } from '../../utils/set-menu-cell-invisibility';\nimport { MenuEntity } from '../../table.types';\nimport { TableEditor } from '../../table.editor';\nimport { TheTableOptionsComponent } from './table-options.component';\n\n@Component({\n selector: 'the-table-toolbar',\n templateUrl: 'table-toolbar.component.html'\n})\nexport class TheTableToolbarComponent implements OnInit, OnDestroy {\n selectedColor: string;\n\n deleteIcon: string;\n\n iconName: string;\n\n @Input() tableStore: TableStore;\n\n @Input() isActiveSelect: boolean;\n\n get editor(): Editor {\n return this.tableStore && this.tableStore.editor;\n }\n\n cellMenuList: MenuEntity[] = [\n {\n key: 'merge-cells',\n name: '合并单元格',\n invisibility: false,\n icon: 'table-merge-cells',\n actionHandle: () => {\n event.preventDefault();\n event.stopPropagation();\n this.tableStore.mergeCell(this.editor);\n this.popoverRef.close();\n this.tableStore.clearSelectedCells();\n }\n },\n {\n key: 'split-cells',\n name: '拆分单元格',\n invisibility: false,\n icon: 'table-unmerge-cells',\n actionHandle: () => {\n event.preventDefault();\n event.stopPropagation();\n splitCell(this.editor);\n this.popoverRef.close();\n this.tableStore.clearSelectedCells();\n }\n }\n ];\n\n get isShowSplitLine() {\n return this.cellMenuList.filter(item => !item.invisibility).length > 1;\n }\n\n constructor(\n private ngZone: NgZone,\n private colorSelectService: TheColorSelectService,\n private thyPopover: ThyPopover,\n private popoverRef: ThyPopoverRef<TheTableToolbarComponent>\n ) {}\n\n ngOnInit() {\n this.deleteIcon = DeleteIcon[this.getDeleteIcon()];\n this.getIconName(this.deleteIcon);\n setCellMenuInvisibility(this.editor, this.cellMenuList, this.tableStore.selectedCells, this.isActiveSelect);\n this.selectedColor = this.tableStore.getSelectedCellBackgroundColor();\n }\n\n ngOnDestroy() {\n this.colorSelectService.closeColorSelect();\n }\n\n getIconName(key: string) {\n switch (key) {\n case 'trash':\n this.iconName = '删除表格';\n break;\n case 'table-delete-columns':\n this.iconName = '删除整列';\n break;\n case 'table-delete-rows':\n this.iconName = '删除整行';\n break;\n }\n }\n\n getDeleteIcon() {\n if (this.tableStore.isSelectedTable) {\n return DeleteIcon.trash;\n }\n if (this.tableStore.selectedRowsIndex.length > 0) {\n return DeleteIcon['table-delete-rows'];\n }\n if (this.tableStore.selectedColumnsIndex.length > 0) {\n return DeleteIcon['table-delete-columns'];\n }\n return null;\n }\n\n onDelete(event: MouseEvent) {\n event.preventDefault();\n this.tableStore.removeColumnOrRows();\n this.tableStore.clearDangerousCells();\n this.tableStore.clearSelectedCells();\n this.popoverRef.close();\n }\n\n onEnterDelete(event: MouseEvent) {\n this.tableStore.setDangerousCells();\n }\n\n onLeaveDelete(event: MouseEvent) {\n this.tableStore.clearDangerousCells();\n }\n\n openSelectColor(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n const element = (event.target as HTMLElement).closest('.thy-icon-nav-link');\n const isHeader = TableEditor.isActiveHeader(this.editor);\n this.ngZone.run(() => {\n this.colorSelectService.toggleColorSelect(\n element as HTMLElement,\n this.selectedColor,\n BackgroundColors,\n {\n perRowColorNumbers: 7,\n rowOptions: { 1: '#bbb', 2: '#bbb' },\n specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {\n this.tableStore.setSelectedCellsBackgroundColor(null);\n } else {\n this.tableStore.setSelectedCellsBackgroundColor(newColor);\n }\n this.selectedColor = newColor;\n }\n );\n });\n }\n\n openTableOptionMenu(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.thyPopover.open(TheTableOptionsComponent, {\n origin: event.currentTarget as HTMLElement,\n initialState: {\n tableStore: this.tableStore,\n editor: this.editor\n },\n minWidth: 0,\n insideClosable: false,\n hasBackdrop: false,\n placement: 'bottomLeft',\n originActiveClass: 'table-options-active',\n panelClass: 'table-options-pannel'\n });\n }\n}\n\nexport enum DeleteIcon {\n 'table-delete-rows',\n 'table-delete-columns',\n 'trash'\n}\n","<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"单元格背景\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"tableStore.isSelectedTable\"></nav-split-line>\n <button\n thyButton=\"default\"\n *ngIf=\"tableStore.isSelectedTable\"\n class=\"mr-2\"\n thySize=\"md\"\n class=\"table-options\"\n (mousedown)=\"openTableOptionMenu($event)\"\n >\n <span>表格选项</span>\n <thy-icon thyIconName=\"caret-down\"></thy-icon>\n </button>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n","import isHotkey from 'is-hotkey';\r\n\r\nexport function isVirtualKey(e: KeyboardEvent) {\r\n const isMod = e.ctrlKey || e.metaKey;\r\n const isAlt = isHotkey('alt', e);\r\n const isShift = isHotkey('shift', e);\r\n const isCapsLock = e.key.includes('CapsLock');\r\n const isTab = e.key.includes('Tab');\r\n const isEsc = e.key.includes('Escape');\r\n const isF = e.key.startsWith('F');\r\n const isArrow = e.key.includes('Arrow') ? true : false;\r\n return isCapsLock || isMod || isAlt || isArrow || isShift || isTab || isEsc || isF;\r\n}\r\n","import { OnInit, Component, Input, HostBinding, HostListener, ElementRef } from '@angular/core';\r\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\r\nimport { MenuEntity } from '../../plugins/table/table.types';\r\n\r\n@Component({\r\n selector: 'the-contextmenu',\r\n templateUrl: 'contextmenu.component.html'\r\n})\r\nexport class TheContextMenuComponent implements OnInit {\r\n @Input()\r\n menuEntities: MenuEntity[] = [];\r\n\r\n @Input()\r\n actionHandle: (entity: MenuEntity) => void;\r\n\r\n @Input()\r\n activeHandle: (event: MouseEvent, entity: MenuEntity) => void;\r\n\r\n @Input()\r\n deactiveHandle: (event: MouseEvent, entity: MenuEntity) => void;\r\n\r\n @HostBinding('class.the-overlay-menu-wrap')\r\n wrap = true;\r\n\r\n @HostListener('document: mousedown', ['$event'])\r\n handleDocumentMouseDown(event: MouseEvent) {\r\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement) && event.button !== 2) {\r\n this.thyPopoverRef.close();\r\n }\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n handleMouseDown(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n itemMousedown(event: MouseEvent, entity: MenuEntity) {\r\n event.preventDefault();\r\n this.actionHandle(entity);\r\n this.thyPopoverRef.close();\r\n }\r\n\r\n itemMouseleave(event: MouseEvent, entity: MenuEntity) {\r\n event.preventDefault();\r\n this.deactiveHandle(event, entity);\r\n }\r\n\r\n itemMouseenter(event: MouseEvent, entity: MenuEntity) {\r\n event.preventDefault();\r\n this.activeHandle(event, entity);\r\n }\r\n\r\n constructor(public elementRef: ElementRef, private thyPopoverRef: ThyPopoverRef<TheContextMenuComponent>) {}\r\n\r\n ngOnInit() {}\r\n}\r\n","<thy-action-menu>\r\n <ng-container *ngFor=\"let menuItem of menuEntities\">\r\n <a\r\n thyActionMenuItem\r\n href=\"javascript:;\"\r\n *ngIf=\"!menuItem.invisibility\"\r\n (mousedown)=\"itemMousedown($event, menuItem)\"\r\n (mouseenter)=\"itemMouseenter($event, menuItem)\"\r\n (mouseleave)=\"itemMouseleave($event, menuItem)\"\r\n >\r\n <span thyActionMenuItemIcon>\r\n <thy-icon\r\n *ngIf=\"menuItem.backgroundColor; else elseIcon\"\r\n [thyIconName]=\"menuItem.icon\"\r\n thyIconType=\"twotone\"\r\n [thyTwotoneColor]=\"menuItem.backgroundColor\"\r\n ></thy-icon>\r\n <ng-template #elseIcon>\r\n <thy-icon [thyIconName]=\"menuItem.icon\"></thy-icon>\r\n </ng-template>\r\n </span>\r\n <span thyActionMenuItemName>{{ menuItem.name }}</span>\r\n <span *ngIf=\"menuItem.extendIcon\" thyActionMenuItemExtendIcon>\r\n <thy-icon thyIconName=\"{{ menuItem.extendIcon }}\"></thy-icon>\r\n </span>\r\n </a>\r\n <thy-action-menu-divider *ngIf=\"menuItem.divider\"></thy-action-menu-divider>\r\n </ng-container>\r\n</thy-action-menu>\r\n","import { Injectable, NgZone } from '@angular/core';\nimport { BackgroundColors, ColorType, SpecialBackgroundColor, TableHeaderBackgroundColor } from '../constants/color-select';\nimport { TableStore } from '../plugins/table/table.store';\nimport { TheColorSelectService } from './color-select.service';\nimport { TableEditor } from '../plugins/table/table.editor';\nimport { ThyPopoverRef, ThyPopover } from 'ngx-tethys/popover';\nimport { TheContextMenuComponent } from '../components/contextmenu/contextmenu.component';\nimport { TheContextService } from './context.service';\nimport { splitCell } from '../plugins/table/utils/split-cell';\nimport { setCellMenuInvisibility } from '../plugins/table/utils/set-menu-cell-invisibility';\nimport { MenuEntity } from '../plugins/table/table.types';\n\n@Injectable()\nexport class TheTableContextMenuService {\n menuRef: ThyPopoverRef<TheContextMenuComponent>;\n\n get isOpened() {\n return this.menuRef && this.menuRef.componentInstance;\n }\n\n get editor() {\n return this.tableStore && this.tableStore.editor;\n }\n\n get backgroundColor() {\n return this.tableStore.getSelectedCellBackgroundColor();\n }\n\n constructor(\n private colorSelectService: TheColorSelectService,\n private tableStore: TableStore,\n private thyPopover: ThyPopover,\n private ngZone: NgZone,\n private theContextService: TheContextService\n ) {}\n\n menuEntities: MenuEntity[] = [\n {\n key: 'background-color',\n icon: 'background-tt',\n divider: true,\n name: '单元格背景',\n extendIcon: 'angle-right',\n actionHandle: () => {},\n activeHandle: (event: MouseEvent) => {\n if (this.colorSelectService.isOpenColorSelect) {\n return;\n }\n const isHeader = TableEditor.isActiveHeader(this.editor);\n this.colorSelectService.toggleColorSelect(\n event.target as HTMLElement,\n this.backgroundColor,\n BackgroundColors,\n {\n perRowColorNumbers: 7,\n rowOptions: { 1: '#bbb', 2: '#bbb' },\n specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {\n this.tableStore.setSelectedCellsBackgroundColor(null);\n } else {\n this.tableStore.setSelectedCellsBackgroundColor(newColor);\n }\n this.tableStore.selectFirstCell();\n },\n 'rightTop',\n 0\n );\n },\n deactiveHandle: (event: MouseEvent) => {\n if (event.relatedTarget instanceof HTMLElement) {\n if (event.relatedTarget.classList.contains('color-container')) {\n return;\n }\n }\n if (this.colorSelectService.isOpenColorSelect) {\n this.colorSelectService.closeColorSelect();\n }\n }\n },\n {\n key: 'clear-selection',\n icon: 'sweep',\n divider: true,\n name: '清空选中区域',\n actionHandle: () => {\n this.tableStore.clearSelectedCellsContent();\n this.tableStore.selectFirstCell();\n }\n },\n {\n key: 'merge-cells',\n icon: 'table-merge-cells',\n name: '合并单元格',\n actionHandle: () => {\n this.tableStore.mergeCell(this.editor);\n }\n },\n {\n key: 'split-cells',\n icon: 'table-unmerge-cells',\n name: '拆分单元格',\n divider: true,\n actionHandle: () => {\n splitCell(this.editor);\n }\n },\n {\n key: 'delete-selection-rows',\n icon: 'table-delete-rows',\n name: '删除所在行',\n actionHandle: () => {\n this.tableStore.removeDangerousRows();\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousRows();\n }\n },\n {\n key: 'delete-selection-columns',\n icon: 'table-delete-columns',\n divider: true,\n name: '删除所在列',\n actionHandle: () => {\n this.tableStore.removeDangerousColumns();\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousColumns();\n }\n },\n {\n key: 'delete-table',\n icon: 'trash',\n name: '删除表格',\n actionHandle: () => {\n TableEditor.removeTable(this.editor);\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousTable();\n }\n }\n ];\n\n openMenuList(event: MouseEvent) {\n this.ngZone.run(() => {\n setCellMenuInvisibility(this.editor, this.menuEntities, this.tableStore.selectedCells);\n this.menuEntities.forEach(item => {\n if (item.key === 'background-color') {\n item.backgroundColor = this.tableStore.getSelectedCellBackgroundColor();\n }\n });\n this.menuRef = this.thyPopover.open(TheContextMenuComponent, {\n origin: event.target as HTMLElement,\n initialState: {\n menuEntities: this.menuEntities,\n actionHandle: (entity: MenuEntity) => {\n entity.actionHandle(entity);\n },\n activeHandle: (menuEvent: MouseEvent, entity: MenuEntity) => {\n if (entity.activeHandle) {\n entity.activeHandle(menuEvent);\n }\n },\n deactiveHandle: (menuEvent: MouseEvent, entity: MenuEntity) => {\n if (entity.key.indexOf('delete') >= 0) {\n this.tableStore.clearDangerousCells();\n }\n if (entity.deactiveHandle) {\n entity.deactiveHandle(menuEvent);\n }\n }\n },\n originPosition: {\n x: event.x + 30,\n y: event.y\n },\n hasBackdrop: false,\n minWidth: 0,\n placement: 'bottomLeft',\n viewContainerRef: this.theContextService.getOptions().viewContainerRef,\n manualClosure: true,\n insideClosable: false,\n backdropClosable: false\n });\n this.menuRef.afterClosed().subscribe(() => {\n this.tableStore.clearSelectedCells();\n });\n });\n }\n\n closeContextMenu() {\n if (this.isOpened) {\n this.menuRef.close();\n return this.menuRef.afterClosed();\n }\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { TheTableToolbarComponent } from './components/toolbar/table-toolbar.component';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TableStore } from './table.store';\nimport { TheTableContextMenuService } from '../../services/table-contextmenu.service';\nimport { TheContextService } from '../../services/context.service';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { isVirtualKey } from './utils/is-virtual-key';\n\n@Injectable()\nexport class TableService {\n backdropClosable = false;\n\n hasBackdrop = false;\n\n insideClosable = false;\n\n placement: ThyPlacement = 'topLeft';\n\n offset = 8;\n\n toolbarRef: ThyPopoverRef<any>;\n\n get isOpened() {\n return this.toolbarRef && this.toolbarRef.componentInstance;\n }\n\n constructor(\n private thyPopover: ThyPopover,\n private overlay: Overlay,\n private tableStore: TableStore,\n private theTableContextMenuService: TheTableContextMenuService,\n private ngZone: NgZone,\n private theContextService: TheContextService\n ) {}\n\n openToolbar(origin: HTMLElement, isActiveSelect?: boolean) {\n this.theTableContextMenuService.closeContextMenu();\n\n if (this.isOpened) {\n if (this.toolbarRef.containerInstance.config.origin === origin) {\n return;\n }\n this.toolbarRef.close();\n }\n this.toolbarRef = this.thyPopover.open(TheTableToolbarComponent, {\n initialState: {\n tableStore: this.tableStore,\n isActiveSelect\n },\n viewContainerRef: this.theContextService.getOptions().viewContainerRef,\n origin: this.getOrigin(origin),\n backdropClosable: this.backdropClosable,\n placement: this.placement,\n offset: this.offset,\n hasBackdrop: this.hasBackdrop,\n insideClosable: this.insideClosable,\n minWidth: 0,\n panelClass: 'the-temp-table-toolbar-wrap',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n manualClosure: true\n });\n this._listenCellClearEvent();\n }\n\n getOrigin(origin: HTMLElement): HTMLElement {\n if (origin instanceof HTMLTableCellElement && origin.tagName !== 'TH') {\n const { selectedRowsIndex, selectedColumnsIndex, focusCellPath, isSelectedTable, focusCellElement } = this.tableStore;\n const [row, col] = focusCellPath.slice(-2);\n const tableElement = focusCellElement.closest('.the-temp-table-container') as HTMLElement;\n if (isSelectedTable && col === 0 && row === 0) {\n return tableElement.querySelector('.the-temp-table-corner-controls');\n }\n if (selectedColumnsIndex.length > 0 && row === 0) {\n return tableElement.querySelectorAll('.the-temp-table-col-controls')[col] as HTMLElement;\n }\n if (selectedRowsIndex.length > 0 && col === 0) {\n return tableElement.querySelectorAll('.the-temp-table-row-controls-button-wrap')[row] as HTMLElement;\n }\n }\n return origin;\n }\n\n closeToolbar() {\n if (this.isOpened) {\n this.ngZone.run(() => {\n this.toolbarRef.close();\n });\n return this.toolbarRef.afterClosed();\n }\n }\n\n _listenCellClearEvent() {\n const onMouseObservable = merge(\n fromEvent<MouseEvent>(document, 'mousedown').pipe(filter((e: MouseEvent) => e.button !== 2)),\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n filter((e: KeyboardEvent) => {\n return !isVirtualKey(e);\n })\n )\n )\n .pipe(take(1))\n .subscribe((e: MouseEvent) => {\n if (this.tableStore.selectedCells && this.tableStore.selectedCells.length > 0) {\n if (e.type === 'keydown') {\n this.tableStore.clearSelectedCellsContent();\n }\n this.tableStore.clearSelectedCells();\n this.closeToolbar();\n onMouseObservable.unsubscribe();\n }\n });\n }\n}\n","export const SLA_TABLE_SELECTOR = '.slate-element-table';\r\n\r\nexport const SLA_TABLE_CELL_SELECTOR = '.slate-element-table-cell';\r\n","import { Component, OnInit, OnDestroy, Input, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Range, Transforms } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { TableEditor } from '../../table.editor';\nimport { TablePosition } from '../../utils/table-position';\nimport { TableStore } from '../../table.store';\nimport type { TheTableComponent } from '../table.component';\nimport { TableOptions } from '../../table.types';\n\n@Component({\n selector: 'the-table-insert-mark',\n templateUrl: './insert-mark.component.html'\n})\nexport class TheInsertMarkComponent implements OnInit, OnDestroy {\n @Input() type: 'row' | 'column';\n @Input() at: number;\n @Input() tableStore: TableStore;\n\n public insertLength: string;\n\n public dotWrapperHovered: boolean;\n\n tooltipContent = '';\n\n get disabled(): boolean {\n return this.tableStore && !!this.tableStore.selectedCells.length;\n }\n\n get editor(): Editor {\n return this.tableStore && this.tableStore.editor;\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.tooltipContent = this.type === 'row' ? '插入行' : '插入列';\n }\n\n onMouseDown(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n const fun = this.type === 'row' ? TableEditor.insertRow : TableEditor.insertColumn;\n fun(this.editor, 1, this.at);\n // update header\n if (this.type === 'row' && this.at === 0) {\n const { selection } = this.editor;\n const opts = new TableOptions();\n const table = TablePosition.create(opts, this.editor, selection.anchor.path);\n Transforms.setNodes(this.editor, { header: true }, { at: table.tableEntry[1].concat(0) });\n Transforms.setNodes(this.editor, { header: null }, { at: table.tableEntry[1].concat(1) });\n }\n this.tableStore.changeCells();\n }\n\n onMouseEnter(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.dotWrapperHovered = true;\n this.insertLength = this.getLength();\n this.cdr.detectChanges();\n }\n\n onMouseLeave(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.dotWrapperHovered = false;\n this.cdr.detectChanges();\n }\n\n getLength() {\n const { selection } = this.editor;\n if (selection && Range.isCollapsed(selection)) {\n const { table } = TablePosition.create(new TableOptions(), this.editor, selection.anchor.path);\n if (!table) {\n return;\n }\n const tableComponent = ELEMENT_TO_COMPONENT.get(table) as TheTableComponent;\n const tableWrapper = tableComponent.tableWrapper.nativeElement as HTMLElement;\n const tableElement = tableComponent.theTableElement.nativeElement as HTMLElement;\n let result = 0;\n const rowControl = tableComponent.nativeElement.querySelector('.the-temp-table-row-controls') as HTMLElement;\n let rowControlWidth = 11;\n if (rowControl) {\n rowControlWidth = rowControl.getBoundingClientRect().width;\n }\n if (this.type === 'row') {\n result = tableWrapper.offsetWidth + rowControlWidth - 2;\n } else {\n result = tableElement.offsetHeight - 1;\n }\n return result + 'px';\n }\n }\n\n ngOnDestroy() {}\n}\n","<div\n [thyTooltip]=\"!disabled && tooltipContent\"\n class=\"the-temp-table-controls-insert-wrapper\"\n [ngClass]=\"{ disabled: disabled }\"\n contenteditable=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n>\n <div\n class=\"the-temp-table-controls-insert-line\"\n *ngIf=\"dotWrapperHovered\"\n [attr.data-dot-type]=\"type\"\n [ngStyle]=\"{ height: type === 'column' && insertLength, width: type === 'row' && insertLength }\"\n ></div>\n</div>\n","export const TABLE_SELECTOR = '.the-table';\r\n\r\nexport const TABLE_WRAPPER_SELECTOR = '.the-table-wrapper';\r\n\r\nexport const RESIZE_OVERLAY_SELECTOR = '.the-table-resize-overlay-thumb';\r\n","import { Directive, OnDestroy, AfterViewInit, ElementRef, ViewContainerRef, ChangeDetectorRef, NgZone, Inject } from '@angular/core';\nimport { fromEvent, merge, ReplaySubject } from 'rxjs';\nimport { map, takeUntil, filter, mapTo } from 'rxjs/operators';\nimport { Position, TableCellEventDispatcher } from './event-dispatcher';\nimport { RESIZE_OVERLAY_SELECTOR } from './selectors';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../constants/selector';\nimport { TheTableComponentBase, TheTableToken } from '../../plugins/table/table.types';\n\n@Directive({\n selector: 'div[theColumnResize]'\n})\nexport class TheColumnResizeDirective implements AfterViewInit, OnDestroy {\n protected readonly destroyed = new ReplaySubject<void>();\n protected position: Position;\n protected resizeStarted = false;\n\n constructor(\n public elementRef: ElementRef,\n public viewContainerRef: ViewContainerRef,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public eventDispatcher: TableCellEventDispatcher,\n public resizeNotifier: ColumnResizeNotifierSource,\n @Inject(TheTableToken)\n public theTableComponent: TheTableComponentBase\n ) { }\n\n ngAfterViewInit() {\n this._listenForCellEdgeHoverEvents();\n this._listenStartDrag();\n this._listenEndDrag();\n }\n\n _listenForCellEdgeHoverEvents() {\n this.ngZone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement!;\n fromEvent<MouseEvent>(element, 'mousemove') // mouseover to mousemove 增加灵敏性\n .pipe(\n filter(() => !this.resizeStarted),\n map(event => {\n if (!this.theTableComponent.isCollapsed) {\n return null;\n }\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR) as HTMLTableCellElement;\n const positions = [Position.top, Position.right, Position.bottom, Position.left];\n if (cell) {\n const rectCell = cell.getBoundingClientRect();\n const topOffset = event.clientY - rectCell.y;\n const rightOffset = rectCell.right - event.clientX;\n const bottomOffset = rectCell.bottom - event.clientY;\n const leftOffset = event.clientX - rectCell.x;\n const positionOffsets = [topOffset, rightOffset, bottomOffset, leftOffset];\n const minIndex = positionOffsets.indexOf(Math.min(...positionOffsets));\n this.position = positions[minIndex];\n return { cell, position: this.position };\n }\n return null;\n }),\n takeUntil(this.destroyed)\n )\n .subscribe(this.eventDispatcher.tableCellHovered);\n fromEvent<MouseEvent>(element, 'mouseleave')\n .pipe(\n filter(event => {\n return !!event.relatedTarget && !(event.relatedTarget as Element).matches(RESIZE_OVERLAY_SELECTOR);\n }),\n mapTo(null),\n takeUntil(this.destroyed)\n )\n .subscribe(this.eventDispatcher.tableCellHovered);\n });\n }\n\n _listenStartDrag() {\n this.resizeNotifier.resizeStarted.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.resizeStarted = true;\n if (this.position === Position.left || this.position === Position.right) {\n this.theTableComponent.initializeColumns();\n } else {\n this.theTableComponent.initializeRows();\n }\n });\n }\n\n _listenEndDrag() {\n // resizeCanceled 按照 resizeCompleted 处理,因为界面是实时变化的。\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n .pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.resizeStarted = false;\n if (this.position === Position.left || this.position === Position.right) {\n this.theTableComponent.transformColumnsWidth();\n } else {\n this.theTableComponent.transformRowHeight();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, NgZone, AfterViewInit, ViewChild, HostListener } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { take, takeUntil, debounceTime } from 'rxjs/operators';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TablePosition } from '../utils';\nimport { ColumnResizeNotifierSource } from '../../../components/column-resize/column-resize-notifier';\nimport { TableCellEventDispatcher } from '../../../components/column-resize/event-dispatcher';\nimport { TableStore } from '../table.store';\nimport { getElementHeight, getElementWidth } from '../../../utils/dom';\nimport { TableService } from '../table.service';\nimport { TheTableContextMenuService } from '../../../services/table-contextmenu.service';\nimport { TheContextService } from '../../../services/context.service';\nimport { TheBaseElementComponent } from '../../../interfaces/view-base';\nimport { TableCellElement, TableElement, TableRowElement } from '../../../custom-types';\nimport { TableOptions, TheTableColumn, TheTableToken } from '../table.types';\nimport { TheEditor } from '../../../interfaces/editor';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../../constants/selector';\nimport * as TheTransforms from '../../../transforms';\n\n@Component({\n selector: 'the-table, [theTable]',\n templateUrl: './table.component.html',\n providers: [\n TableStore,\n TableService,\n TheTableContextMenuService,\n TableCellEventDispatcher,\n ColumnResizeNotifierSource,\n {\n provide: TheTableToken,\n useExisting: TheTableComponent\n }\n ]\n})\nexport class TheTableComponent extends TheBaseElementComponent<TableElement, Editor> implements OnInit, AfterViewInit, OnDestroy {\n destroy$: Subject<any> = new Subject();\n theTableWrapperWidth: number;\n\n rowControls: { height: number; rowIndex: number }[] = [];\n\n colControls = [];\n\n normalizedColumns: TheTableColumn[];\n\n isInTable: boolean;\n\n get columns(): TheTableColumn[] {\n return this.normalizedColumns || (this.element && this.element.columns);\n }\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n get tbodyNativeElement(): HTMLElement {\n return this.tbodyElement?.nativeElement;\n }\n\n get isSelectedAllCell() {\n return (\n this.tableStore.selectedRowsIndex.length === this.rowControls.length &&\n this.tableStore.selectedColumnsIndex.length === this.colControls.length\n );\n }\n\n @ViewChild('tableWrapper', { read: ElementRef, static: true })\n tableWrapper: ElementRef;\n\n @ViewChild('theTable', { read: ElementRef, static: true })\n theTableElement: ElementRef;\n\n @ViewChild('tbody', { read: ElementRef, static: true })\n tbodyElement: ElementRef;\n\n @HostListener('mousedown', ['$event'])\n handleMousedown(event: MouseEvent) {\n if (event.target instanceof Element && this.tbodyNativeElement.contains(event.target)) {\n return;\n }\n if (!TheEditor.isFocused(this.editor)) {\n TheEditor.focus(this.editor);\n }\n AngularEditor.moveBlockCard(this.editor, this.element, { direction: 'left' });\n event.preventDefault();\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n Promise.resolve().then(() => {\n this.tableStore.emitTableChange();\n this.useRowControls();\n this.cdr.markForCheck();\n });\n this.getIsInTable();\n this.getColControls();\n if (this.normalizedColumns) {\n this.normalizeShowColumns();\n }\n }\n }\n\n constructor(\n elementRef: ElementRef,\n public eventDispatcher: TableCellEventDispatcher,\n public resizeNotifier: ColumnResizeNotifierSource,\n public tableStore: TableStore,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public tableService: TableService,\n private theContextService: TheContextService,\n private theTableContextMenuService: TheTableContextMenuService\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.getColControls();\n this.getIsInTable();\n }\n\n ngAfterViewInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(async () => {\n const blockCardElement = this.nativeElement.closest('slate-block-card');\n if (blockCardElement) {\n blockCardElement.classList.add(`slate-block-card-${this.element.type}`);\n }\n this.tableStore.initEditor(this.editor);\n this.subscribeCellsChange();\n this.subscribeCellPositionChange();\n this.listenTableContextMenuEvent();\n this.useTableWrapperWidth();\n if (this.element.options?.numberedColumn) {\n const loadImageDone = await this.resolveImage();\n // 等待序号列表格内图片加载完成后再去渲染表格行高度\n if (loadImageDone) {\n this.useRowControls();\n this.cdr.detectChanges();\n }\n } else {\n this.useRowControls();\n this.cdr.markForCheck();\n }\n });\n }\n\n subscribeCellPositionChange() {\n this.tableStore\n .cellsPositionChange()\n .pipe(debounceTime(100), takeUntil(this.destroy$))\n .subscribe(x => {\n this.cdr.detectChanges();\n });\n }\n\n useTableWrapperWidth() {\n const rootWidth = this.theContextService.getOptions().width;\n const tablePath = TheEditor.findPath(this.editor, this.element);\n if (tablePath.length > 1) {\n // 解决table不在顶层时,拖动单元格宽度计算问题\n this.theTableWrapperWidth = this.tableWrapper.nativeElement.offsetWidth;\n } else {\n this.theTableWrapperWidth = rootWidth;\n }\n }\n\n subscribeCellsChange() {\n this.tableStore\n .dangerousOrSelectedCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.cdr.detectChanges();\n });\n }\n\n useRowControls() {\n if (this.selection || this.element.options?.numberedColumn) {\n this.rowControls = this.calculateRowControls();\n }\n }\n\n detectChanges() {\n this.cdr.detectChanges();\n }\n\n calculateMinRowSpanCellForRows(): { cell?: TableCellElement; rowIndex: number }[] {\n const table = this.element;\n const cells = table.children.map((row, index) => {\n const noHiddenCells = row.children.filter(cell => !cell.hidden);\n if (noHiddenCells.length > 0) {\n const minRowspan = Math.min.apply(\n Math,\n noHiddenCells.map(cell => {\n return cell.rowspan || 1;\n })\n );\n\n const cell = row.children.find(item => !item.hidden && (item.rowspan || 1) === minRowspan);\n return {\n cell,\n rowIndex: index\n };\n } else {\n return {\n rowIndex: index\n };\n }\n });\n return cells;\n }\n\n calculateRowControls() {\n const minRowSpanCellForRows = this.calculateMinRowSpanCellForRows();\n\n const rowControls = [];\n let previousRowIndex = 0;\n let previousCombineRowIndex = 0;\n minRowSpanCellForRows.forEach((cellInfo, index) => {\n if (!cellInfo.cell) {\n rowControls.push({\n height: 0,\n rowIndex: index\n });\n previousCombineRowIndex = index;\n if (index === minRowSpanCellForRows.length - 1) {\n this.calculateRowControlsAvgHeight(previousCombineRowIndex, previousRowIndex, rowControls);\n }\n return;\n }\n\n // calculate combine row height\n if (previousCombineRowIndex > previousRowIndex) {\n this.calculateRowControlsAvgHeight(previousCombineRowIndex, previousRowIndex, rowControls);\n previousCombineRowIndex = 0;\n }\n\n const cellDom = AngularEditor.toDOMNode(this.editor, cellInfo.cell);\n let height = getElementHeight(cellDom);\n // 当cell为合并的单元格(rowspan > 1),计算其实际高度(当前单元格的高度 - 下方合并单元格的高度)\n if (cellInfo.cell.rowspan > 1) {\n const calcHeight = height - this.getBelowRowHeight(minRowSpanCellForRows, index, cellInfo.rowIndex, cellInfo.cell.rowspan);\n rowControls.push({\n height: calcHeight,\n rowIndex: cellInfo.rowIndex\n });\n } else {\n rowControls.push({\n height,\n rowIndex: cellInfo.rowIndex\n });\n }\n previousRowIndex = index;\n });\n return rowControls;\n }\n\n calculateRowControlsAvgHeight(\n previousCombineRowIndex: number,\n previousRowIndex: number,\n rowControls: { height: number; rowIndex: number }[]\n ) {\n const rowControl = rowControls[previousRowIndex];\n const count = previousCombineRowIndex - previousRowIndex;\n const avgHeight = Math.floor(rowControl.height / (count + 1));\n const firstHeight = rowControl.height - avgHeight * count;\n rowControl.height = firstHeight;\n rowControls\n .filter((item, _index) => _index > previousRowIndex && _index <= previousCombineRowIndex)\n .forEach(rowControl => {\n rowControl.height = avgHeight;\n });\n }\n\n getBelowRowHeight(\n cells: {\n cell?: TableCellElement;\n rowIndex: number;\n }[],\n index: number,\n rowIndex: number,\n rowspan: number\n ) {\n let belowRowlHeight = 0;\n cells.slice(index + 1, cells.length).map(item => {\n if (!item.cell) {\n return;\n }\n if (rowIndex + rowspan > item.rowIndex) {\n const cellDom = AngularEditor.toDOMNode(this.editor, item.cell);\n if (item.cell.rowspan > 1) {\n // 如果下方单元格的rowspan > 1,递归计算\n const height = this.getBelowRowHeight(\n cells,\n cells.findIndex(cell => cell.rowIndex === item.rowIndex),\n item.rowIndex,\n item.cell.rowspan\n );\n belowRowlHeight += getElementHeight(cellDom) - height;\n } else {\n belowRowlHeight += getElementHeight(cellDom);\n }\n }\n });\n return belowRowlHeight;\n }\n\n resolveImage() {\n const imageElements = this.nativeElement.querySelectorAll('img');\n if (imageElements.length) {\n const imageResolves: Promise<any>[] = [];\n imageElements.forEach(item => {\n const image = new Image();\n const imageLoad = new Promise(resolve => {\n image.onload = () => {\n resolve(true);\n };\n image.onerror = () => {\n resolve(true);\n };\n image.src = item.getAttribute('src');\n });\n imageResolves.push(imageLoad);\n });\n return Promise.all(imageResolves);\n }\n return Promise.resolve(true);\n }\n\n getColControls() {\n this.colControls = this.element?.children[0]?.children || [];\n }\n\n onColMouseDown(event: MouseEvent, index: number) {\n event.stopPropagation();\n event.preventDefault();\n if (!!this.selection && this.isInTable) {\n this.tableStore.clearDangerousCells();\n this.tableStore.selectColumn(this.editor, index);\n this.tableService.openToolbar(event.target as HTMLElement, true);\n }\n }\n\n getIsInTable() {\n if (this.selection) {\n const opts = new TableOptions();\n const selection = this.editor.selection;\n const startPosition = TablePosition.create(opts, this.editor, selection.anchor.path);\n const endPosition = TablePosition.create(opts, this.editor, selection.focus.path);\n this.isInTable = startPosition.isInTable() && endPosition.isInTable();\n } else {\n this.isInTable = false;\n }\n }\n\n normalizeShowColumns() {\n const table = this.element;\n const tr = table.children[0];\n if (this.element.columns) {\n let isGood = true;\n this.normalizedColumns = table.columns.map(item => {\n return { ...item };\n });\n if (this.element.columns.length !== tr.children.length) {\n this.normalizedColumns = tr.children.map((item, i) => this.columns[i] || { width: 200 });\n isGood = false;\n }\n const totalWidth = this.normalizedColumns.reduce((pre, cur) => {\n return pre + cur.width;\n }, 0);\n if (totalWidth < this.theTableWrapperWidth) {\n const lastColumnWidth =\n this.theTableWrapperWidth - totalWidth + this.normalizedColumns[this.normalizedColumns.length - 1].width;\n this.normalizedColumns[this.normalizedColumns.length - 1] = { width: lastColumnWidth };\n isGood = false;\n }\n if (isGood) {\n this.normalizedColumns = null;\n }\n }\n }\n\n initializeColumns() {\n if (!this.element.columns) {\n const tr = this.element.children[0] as TableRowElement;\n const tableWidth = AngularEditor.toDOMNode(this.editor, tr).offsetWidth;\n const columns = tr.children.map(cell => {\n return { width: Math.round(tableWidth / tr.children.length) - tr.children.length };\n });\n TheTransforms.setNode(this.editor, { columns }, this.element);\n }\n }\n\n initializeRows() {\n this.element.children.map(row => {\n if (!row.height) {\n const element = TheEditor.toDOMNode(this.editor, row);\n TheTransforms.setNode(this.editor, { height: getElementHeight(element) }, row);\n }\n });\n }\n\n transformRowHeight() {\n const rowElements = this.nativeElement.querySelector('tbody').children;\n if (rowElements) {\n ([...rowElements] as HTMLTableRowElement[]).map((row, index) => {\n const height = getElementHeight(row);\n TheTransforms.setNode(this.editor, { height }, this.element.children[index]);\n });\n }\n }\n\n transformColumnsWidth() {\n const cols = [...this.nativeElement.querySelector('colgroup').children] as HTMLTableColElement[];\n const columns: TheTableColumn[] = cols.map(col => {\n return { width: getElementWidth(col) };\n });\n TheTransforms.setNode(this.editor, { columns }, this.element);\n }\n\n onRowMouseDown(event: MouseEvent, index: number) {\n if (this.readonly) return;\n event.stopPropagation();\n event.preventDefault();\n if (!this.isInTable) {\n const path = TheEditor.findPath(this.editor, this.element);\n Transforms.select(this.editor, path);\n }\n this.tableStore.selectRow(this.editor, index);\n this.tableService.openToolbar(event.target as HTMLElement, true);\n }\n\n onSelectTable(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n this.tableStore.selectTable(this.editor);\n this.tableService.openToolbar(event.target as HTMLElement);\n }\n\n listenTableContextMenuEvent() {\n this.ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this.theTableElement.nativeElement, 'contextmenu')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (this.readonly) {\n return;\n }\n event.preventDefault();\n this.tableStore.isRightClicking = true;\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR) as HTMLTableCellElement;\n if (!cell) {\n return;\n } else {\n if (!cell.classList.contains('selected-cell')) {\n this.tableStore.selectCell(cell, this.editor);\n }\n }\n if (this.theTableContextMenuService.isOpened) {\n this.theTableContextMenuService\n .closeContextMenu()\n .pipe(take(1))\n .subscribe(() => {\n this.theTableContextMenuService.openMenuList(event);\n });\n } else if (this.tableService.isOpened) {\n this.tableService\n .closeToolbar()\n .pipe(take(1))\n .subscribe(() => {\n this.theTableContextMenuService.openMenuList(event);\n });\n } else {\n this.cdr.markForCheck();\n this.theTableContextMenuService.openMenuList(event);\n }\n\n // patch for right click select next cell\n setTimeout(() => {\n Transforms.select(this.editor, this.editor.selection.anchor.path);\n });\n });\n });\n }\n\n trackByFnRowControls(index: number) {\n return index;\n }\n\n trackByFnColControls(index: number) {\n return index;\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<!-- 类名 the-temp-*: 临时解决因受portal影响表格样式问题,后期改回the-* -->\n<div\n class=\"the-temp-table-container\"\n theColumnResize\n [ngClass]=\"{\n 'the-temp-table-with-controls': isInTable,\n 'the-temp-numbered-column-container': element?.options?.numberedColumn,\n 'the-temp-table-selection-hide': tableStore.isCellSelecting || tableStore.isRightClicking\n }\"\n>\n <div\n class=\"the-temp-table-row-controls-wrapper\"\n [ngClass]=\"{\n 'the-temp-table-focus': isInTable\n }\"\n >\n <div\n class=\"the-temp-table-corner-controls\"\n [ngClass]=\"{\n visible: !readonly && isInTable,\n active: isSelectedAllCell,\n dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0\n }\"\n >\n <div class=\"the-temp-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></div>\n <div class=\"the-temp-table-corner-controls-insert-row-marker\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-temp-table-corner-controls-insert-column-marker\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-temp-table-row-controls\">\n <div class=\"the-temp-table-row-controls-inner\">\n <div\n class=\"the-temp-table-row-controls-button-wrap\"\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowControls\"\n [ngClass]=\"{\n active: tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <ng-container *ngIf=\"!readonly && isInTable && !element?.options?.numberedColumn\">\n <button\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-temp-table-row-controls-button the-temp-table-controls-button\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"element?.options?.numberedColumn\">\n <div\n [contentEditable]=\"false\"\n contenteditable=\"false\"\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n class=\"the-temp-table-numbered-controls-button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n >\n <p class=\"row-number d-flex align-items-center\">{{ i + 1 }}</p>\n </div>\n </ng-container>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"> </the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-temp-table-wrapper\" #tableWrapper [ngClass]=\"{ 'the-temp-table-numbered': element?.options?.numberedColumn }\">\n <table class=\"the-temp-table\" #theTable [ngClass]=\"{ 'the-temp-table-with-controls': isInTable }\">\n <colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-temp-table-col-controls-wrapper\">\n <th\n class=\"the-temp-table-col-controls\"\n [ngClass]=\"{\n active: tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n (mousedown)=\"onColMouseDown($event, i)\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColControls\"\n >\n <the-table-insert-mark *ngIf=\"isInTable\" type=\"column\" [at]=\"i + 1\" [tableStore]=\"tableStore\">\n </the-table-insert-mark>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n </table>\n </div>\n</div>\n","import { Editor, Transforms, Range } from 'slate';\r\nimport { createCell } from '../utils/create-cell';\r\nimport { TablePosition } from '../utils';\r\nimport { TableOptions } from '../table.types';\r\n\r\n/**\r\n * Clear the content of the given node\r\n */\r\nexport function clearTableNode(opts: TableOptions, editor: Editor, isTopToBot?: boolean) {\r\n const { selection } = editor;\r\n const element = TablePosition.create(opts, editor, selection.focus.path);\r\n const rowIndex = element.getRowIndex();\r\n const colIndex = element.getColumnIndex();\r\n const removeRow = isTopToBot ? 0 : rowIndex + 1;\r\n for (let i = 0; i < element.getWidth(); i++) {\r\n const inColRange = Range.includes(selection, [...element.tableEntry[1], rowIndex, i]);\r\n if (inColRange && i !== colIndex) {\r\n Transforms.removeNodes(editor, { at: [...element.tableEntry[1], rowIndex, i] });\r\n Transforms.insertNodes(editor, createCell(opts), { at: [...element.tableEntry[1], rowIndex, i] });\r\n }\r\n }\r\n for (let i = 0; i < element.getHeight(); i++) {\r\n const inRowRange = Range.includes(selection, [...element.tableEntry[1], i]);\r\n if (inRowRange && i !== rowIndex) {\r\n Transforms.removeNodes(editor, { at: [...element.tableEntry[1], removeRow] });\r\n }\r\n }\r\n}\r\n","import { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../../queries';\n\nexport function calculateAnchorPositionInCell(editor: Editor) {\n let isFirstLine = false;\n let isLastLine = false;\n const anchorBlock = TheQueries.anchorBlock(editor);\n const anchorBlockPath = TheQueries.findPath(editor, anchorBlock);\n const anchorBlockDom = AngularEditor.toDOMNode(editor, anchorBlock);\n const valueRangeRect = anchorBlockDom.getBoundingClientRect();\n const anchorBlockHeight = window.getComputedStyle(anchorBlockDom).lineHeight;\n const nativeSelection = window.getSelection();\n const nativeRange = nativeSelection && nativeSelection.getRangeAt(0);\n const nativeRangeRect = nativeRange && nativeRange.getBoundingClientRect();\n if (valueRangeRect && nativeRangeRect && anchorBlockHeight) {\n const lineHeight = parseInt(anchorBlockHeight, 10);\n isFirstLine = nativeRangeRect.top - valueRangeRect.top < lineHeight;\n isLastLine = valueRangeRect.bottom - nativeRangeRect.bottom < lineHeight;\n }\n return {\n isFirstLine,\n isLastLine,\n anchorBlockPath\n };\n}\n","import { Component, HostBinding, OnInit } from '@angular/core';\nimport { TableRowElement } from '../../../../custom-types';\nimport { TheBaseElementComponent } from '../../../../interfaces/view-base';\n\n@Component({\n selector: 'tr[theTableRow]',\n template: '<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>'\n})\nexport class TheTableRowComponent extends TheBaseElementComponent<TableRowElement> implements OnInit {\n @HostBinding('style.backgroundColor') backgroundColor: string;\n @HostBinding('style.height') height: string;\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useBackground();\n this.useHeight();\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useBackground();\n this.useHeight();\n }\n\n useBackground() {\n if (this.element.header && !this.backgroundColor) {\n this.backgroundColor = '#F3F3F3';\n }\n if (!this.element.header && this.backgroundColor) {\n this.backgroundColor = null;\n }\n }\n\n useHeight() {\n if (this.element.height) {\n this.height = this.element.height + 'px';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { getElementWidth, coercePixelsFromCssValue, getColsTotalWidth, getElementHeight, getRowsTotalHeight } from '../../utils/dom';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\n\n@Injectable()\nexport class ColumnResizingStore {\n constructor() {\n this.resizeCols = [];\n this.resizeRows = [];\n }\n private direction: 'left' | 'right' | 'top' | 'bottom';\n private resizeCols: { colElement: HTMLTableColElement; baseWidth: number }[];\n private resizeRows: { rowElement: HTMLTableRowElement; baseHeight: number }[];\n private tableCols: { cols: HTMLTableColElement[]; baseWidth: number };\n private tableRows: { rows: HTMLTableRowElement[]; baseHeight: number };\n\n storeResizingCol(colElement: HTMLTableColElement) {\n if (this.resizeCols.some(cache => cache.colElement === colElement)) {\n return;\n }\n this.resizeCols.push({ colElement, baseWidth: getElementWidth(colElement) });\n }\n\n storeResizingRow(rowElement: HTMLTableRowElement) {\n if (this.resizeRows.some(cache => cache.rowElement === rowElement)) {\n return;\n }\n this.resizeRows.push({ rowElement, baseHeight: getElementHeight(rowElement) });\n }\n\n storeTableWidth(cols: HTMLTableColElement[]) {\n if (!this.tableCols) {\n this.tableCols = { cols, baseWidth: getColsTotalWidth(cols) };\n }\n }\n\n storeTableHeight(rows: HTMLTableRowElement[]) {\n if (!this.tableRows) {\n this.tableRows = { rows, baseHeight: getRowsTotalHeight(rows) };\n }\n }\n\n cleanResizing() {\n this.tableCols = null;\n this.tableRows = null;\n this.resizeCols = [];\n this.resizeRows = [];\n this.direction = null;\n }\n\n restoreLeftCols(deltaX: number) {\n let index = this.resizeCols.length - 1;\n while (index >= 0 && deltaX > 0) {\n const currentWidth = coercePixelsFromCssValue(this.resizeCols[index].colElement.style.width);\n if (this.resizeCols[index].baseWidth > currentWidth) {\n if (this.resizeCols[index].baseWidth > currentWidth + deltaX) {\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(currentWidth + deltaX);\n deltaX = 0;\n } else {\n deltaX -= this.resizeCols[index].baseWidth - currentWidth;\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(this.resizeCols[index].baseWidth);\n this.popCol();\n }\n }\n index--;\n }\n return deltaX;\n }\n\n restoreTopRows(deltaY: number) {\n let index = this.resizeRows.length - 1;\n while (index >= 0 && deltaY > 0) {\n const currentHeight = this.resizeRows[index].rowElement.getBoundingClientRect().height;\n if (this.resizeRows[index].baseHeight > currentHeight) {\n if (this.resizeRows[index].baseHeight > currentHeight + deltaY) {\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(currentHeight + deltaY);\n deltaY = 0;\n } else {\n deltaY -= this.resizeRows[index].baseHeight - currentHeight;\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(this.resizeRows[index].baseHeight);\n this.popRow();\n }\n }\n index--;\n }\n return deltaY;\n }\n\n restoreBottomRows(deltaY: number) {\n let index = this.resizeRows.length - 1;\n while (index >= 0 && deltaY < 0) {\n const currentHeight = coercePixelsFromCssValue(this.resizeRows[index].rowElement.style.height);\n if (this.resizeRows[index].baseHeight > currentHeight) {\n if (this.resizeRows[index].baseHeight > currentHeight + Math.abs(deltaY)) {\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(currentHeight + Math.abs(deltaY));\n deltaY = 0;\n } else {\n deltaY += this.resizeRows[index].baseHeight - currentHeight;\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(this.resizeRows[index].baseHeight);\n this.popRow();\n }\n }\n index--;\n }\n return deltaY;\n }\n\n restoreRightCols(deltaX: number) {\n let index = this.resizeCols.length - 1;\n while (index >= 0 && deltaX < 0) {\n const currentWidth = coercePixelsFromCssValue(this.resizeCols[index].colElement.style.width);\n if (this.resizeCols[index].baseWidth > currentWidth) {\n if (this.resizeCols[index].baseWidth > currentWidth + Math.abs(deltaX)) {\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(currentWidth + Math.abs(deltaX));\n deltaX = 0;\n } else {\n deltaX += this.resizeCols[index].baseWidth - currentWidth;\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(this.resizeCols[index].baseWidth);\n this.popCol();\n }\n }\n index--;\n }\n return deltaX;\n }\n\n getScrollWidth(deltaX: number) {\n if (this.tableCols) {\n return getColsTotalWidth(this.tableCols.cols) - this.tableCols.baseWidth - Math.abs(deltaX);\n }\n }\n\n getAddTableHeight(deltaY: number) {\n if (this.tableRows) {\n return getRowsTotalHeight(this.tableRows.rows) - this.tableRows.baseHeight - Math.abs(deltaY);\n }\n }\n\n isRestoring(deltaValue, isXAxis = true) {\n return !this.isResizing(deltaValue, isXAxis);\n }\n\n isResizing(deltaValue, isXAxis = true) {\n return this.direction === this.getDirection(deltaValue, isXAxis);\n }\n\n initDirection(deltaValue: number, isXAxis = true) {\n if (this.resizeCols.length > 0) {\n return;\n }\n if (this.resizeRows.length > 0) {\n return;\n }\n this.direction = this.getDirection(deltaValue, isXAxis);\n }\n\n private getDirection(deltaValue, isXAxis = true) {\n return isXAxis ? (deltaValue > 0 ? 'right' : 'left') : deltaValue > 0 ? 'bottom' : 'top';\n }\n\n private popCol() {\n this.resizeCols.pop();\n }\n\n private popRow() {\n this.resizeRows.pop();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ElementRef } from '@angular/core';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Position } from './event-dispatcher';\n\n/** Tracks state of resize events in progress. */\nexport class ResizeRef {\n direction: 'X' | 'Y';\n position: Position;\n constructor(\n readonly origin: ElementRef,\n readonly overlayRef: OverlayRef,\n readonly minWidthPx: number,\n readonly maxWidthPx: number,\n readonly minHeightPx: number,\n readonly maxHeightPx: number,\n readonly updateSizeAndOffset: () => void\n ) {}\n\n setDirection(direction: 'X' | 'Y') {\n this.direction = direction;\n }\n\n setPosition(position: Position) {\n this.position = position;\n }\n}\n","import {\n Component,\n OnDestroy,\n ElementRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n ViewContainerRef,\n ChangeDetectorRef,\n NgZone,\n Inject\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, ReplaySubject } from 'rxjs';\nimport { takeUntil, mapTo, map, filter, startWith, pairwise, distinctUntilChanged } from 'rxjs/operators';\nimport { ResizeRef } from './resize-ref';\nimport { TableCellEventDispatcher } from './event-dispatcher';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\n\n@Component({\n host: { class: 'the-table-resize-overlay-thumb' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ''\n})\nexport class TheColumnResizeOverlayHandleComponent implements AfterViewInit, OnDestroy {\n protected readonly destroyed = new ReplaySubject<void>();\n\n constructor(\n public elementRef: ElementRef,\n public viewContainerRef: ViewContainerRef,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public resizeRef: ResizeRef,\n public eventDispatcher: TableCellEventDispatcher,\n @Inject(DOCUMENT) public document: any,\n public resizeNotifier: ColumnResizeNotifierSource\n ) {}\n\n ngAfterViewInit() {\n this._listenForMouseEvents();\n }\n\n private _listenForMouseEvents() {\n this.ngZone.runOutsideAngular(() => {\n const takeUntilDestroyed = takeUntil<MouseEvent>(this.destroyed);\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseenter')\n .pipe(takeUntilDestroyed, mapTo(this.resizeRef.origin.nativeElement))\n .subscribe(cell => {\n this.eventDispatcher.tableCellHovered.next({ cell, position: this.resizeRef.position });\n this.resizeRef.updateSizeAndOffset();\n });\n\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed)\n .subscribe(mousedownEvent => {\n mousedownEvent.preventDefault();\n this._dragStarted(mousedownEvent);\n });\n });\n }\n\n private _dragStarted(mousedownEvent: MouseEvent) {\n if (mousedownEvent.button !== 0) {\n return;\n }\n const mouseup = fromEvent<MouseEvent>(this.document, 'mouseup');\n const mousemove = fromEvent<MouseEvent>(this.document, 'mousemove');\n const escape = fromEvent<KeyboardEvent>(this.document, 'keyup').pipe(filter((event: KeyboardEvent) => event.key === 'Escape'));\n\n const startX = mousedownEvent.clientX;\n const startY = mousedownEvent.clientY;\n\n const initialWidthSize = this._getOriginWidth();\n const initialHeightSize = this._getOriginHeight();\n const isXAxis = this._isXAxis();\n let overlayOffset = this._getOverlayOffset();\n let originOffset = this._getOriginOffset();\n let size = isXAxis ? initialWidthSize : initialHeightSize;\n this.updateResizeActive(true);\n this._notifyResizeStarted();\n\n mouseup.pipe(takeUntil(escape), takeUntil(this.destroyed)).subscribe(({ clientX, clientY }) => {\n this._notifyResizeEnded(size, isXAxis ? clientX !== startX : clientY !== startY);\n });\n\n escape.pipe(takeUntil(mouseup), takeUntil(this.destroyed)).subscribe(() => {\n this._notifyResizeEnded(size);\n });\n\n mousemove\n .pipe(\n map(({ clientX, clientY }) => {\n return {\n clientX,\n clientY\n };\n }),\n startWith({\n clientX: startX,\n clientY: startY\n }),\n distinctUntilChanged(),\n pairwise(),\n takeUntil(mouseup),\n takeUntil(escape),\n takeUntil(this.destroyed)\n )\n .subscribe(([prev, curr]) => {\n let deltaSize = isXAxis ? curr.clientX - prev.clientX : curr.clientY - prev.clientY;\n this.resizeNotifier.triggerResize.next({\n tableCell: this.resizeRef.origin.nativeElement,\n deltaSize,\n previousSize: size\n });\n });\n }\n\n protected updateResizeActive(active: boolean): void {\n this.eventDispatcher.overlayHandleActiveForCell.next(active ? { cell: this.resizeRef.origin.nativeElement!, position: this.resizeRef.position } : null);\n }\n\n private _isXAxis(): boolean {\n return this.resizeRef.direction === 'X';\n }\n\n private _getOriginHeight(): number {\n return this.resizeRef.origin.nativeElement!.offsetHeight;\n }\n\n private _getOriginWidth(): number {\n return this.resizeRef.origin.nativeElement!.offsetWidth;\n }\n\n private _getOriginOffset(): number {\n return this.resizeRef.origin.nativeElement!.offsetLeft;\n }\n\n private _getOverlayOffset(): number {\n return parseInt(this.resizeRef.overlayRef.overlayElement.style.left!, 10);\n }\n\n private _isLtr(): boolean {\n return true;\n }\n\n private _notifyResizeEnded(size: number, completedSuccessfully = false): void {\n this.updateResizeActive(false);\n\n this.ngZone.run(() => {\n const sizeMessage = { tableCell: this.resizeRef.origin.nativeElement };\n if (completedSuccessfully) {\n this.resizeNotifier.resizeCompleted.next(sizeMessage);\n } else {\n this.resizeNotifier.resizeCanceled.next(sizeMessage);\n }\n });\n }\n\n private _notifyResizeStarted(): void {\n this.ngZone.run(() => {\n const sizeMessage = { tableCell: this.resizeRef.origin.nativeElement };\n this.resizeNotifier.resizeStarted.next(sizeMessage);\n });\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n","import { Editor } from 'slate';\r\nimport { AngularEditor } from 'slate-angular';\r\nimport { TableElement } from '../../../custom-types';\r\nimport { BASE_CELL_HEIGHT } from '../table.types';\r\n\r\n/**\r\n * 计算每一行的基础高度(不包含隐藏或者跨行的单元格)\r\n * @param editor\r\n * @param table\r\n * @returns\r\n */\r\nexport function getBaseHeightForRows(editor: Editor, table: TableElement) {\r\n const baseHeightForRows = table.children.map((row, index) => {\r\n const baseCells = row.children.filter(cell => !cell.hidden && (!cell.rowspan || cell.rowspan <= 1));\r\n if (baseCells.length > 0) {\r\n const cellDom = AngularEditor.toDOMNode(editor, baseCells[0]);\r\n return cellDom.offsetHeight;\r\n } else {\r\n return BASE_CELL_HEIGHT;\r\n }\r\n });\r\n return baseHeightForRows;\r\n}\r\n","import {\n Component,\n OnInit,\n ElementRef,\n OnDestroy,\n ChangeDetectorRef,\n NgZone,\n HostBinding,\n Renderer2,\n ViewContainerRef,\n AfterViewInit,\n Injector,\n ViewChild\n} from '@angular/core';\nimport { filter, map, take, takeUntil } from 'rxjs/operators';\nimport { Editor } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../../../constants/selector';\nimport { TheTableComponent } from '../table.component';\nimport { TablePosition } from '../../utils/table-position';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { ColumnResizingStore } from '../../../../components/column-resize/resizing.store';\nimport { Position, TableCellEventDispatcher } from '../../../../components/column-resize/event-dispatcher';\nimport { ColumnResizeNotifierSource, ColumnSizeAction } from '../../../../components/column-resize/column-resize-notifier';\nimport { ConnectedPosition, Overlay, OverlayRef, ScrollDispatcher } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { TheColumnResizeOverlayHandleComponent } from '../../../../components/column-resize/overlay-handle.component';\nimport { ResizeRef } from '../../../../components/column-resize/resize-ref';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { coercePixelsFromCssValue, getElementHeight, getElementWidth, useElementStyle } from '../../../../utils/dom';\nimport { TheBaseElementComponent } from '../../../../interfaces/view-base';\nimport { BASE_FILL_HEIGHT, TableOptions } from '../../table.types';\nimport { TheEditor } from '../../../../interfaces/editor';\nimport { TableCellElement } from '../../../../custom-types';\nimport { getBaseHeightForRows } from '../../utils/get-base-height';\n\nconst OVERLAY_ACTIVE_CLASS = 'the-resizable-overlay-thumb-active';\nconst OVERLAY_INIT_SIZE = 16;\nexport const POSITION_MAP: { [key: string]: ConnectedPosition } = {\n top: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'center'\n },\n bottom: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'center'\n },\n right: {\n originX: 'end',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top'\n },\n left: {\n originX: 'start',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top'\n }\n};\n\n@Component({\n selector: 'td[theTd]',\n templateUrl: './td.component.html',\n providers: [ColumnResizingStore]\n})\nexport class TheTdComponent extends TheBaseElementComponent<TableCellElement, Editor> implements OnInit, AfterViewInit, OnDestroy {\n destroy$: Subject<any> = new Subject();\n public tablePosition: TablePosition;\n public tableComponent: TheTableComponent;\n protected overlayRef?: OverlayRef;\n public hoverdDirection: Position | null;\n public tableOptions: TableOptions = new TableOptions();\n public cellInnerMinHeight: number = null;\n\n get tableStore() {\n return this.tableComponent.tableStore;\n }\n\n get tableService() {\n return this.tableComponent.tableService;\n }\n\n get eventDispatcher() {\n return this.tableComponent.eventDispatcher;\n }\n\n get resizeNotifier() {\n return this.tableComponent.resizeNotifier;\n }\n\n get theTableWrapperWidth() {\n const tableContainer = this.tableComponent.nativeElement.firstChild as HTMLElement;\n const paddingLeft = coercePixelsFromCssValue(window.getComputedStyle(tableContainer)['paddingLeft']);\n return this.tableComponent.theTableWrapperWidth - paddingLeft;\n }\n\n get tableElement(): HTMLElement {\n return this.tableComponent.theTableElement.nativeElement;\n }\n\n get scrollableElementTop() {\n const cdkscrollable: HTMLElement = this.elementRef.nativeElement.closest('[cdkscrollable]');\n if (cdkscrollable) {\n return cdkscrollable.getBoundingClientRect().top;\n }\n return -window.scrollY;\n }\n\n get scrollableElementLeft() {\n return this.tableComponent.tableWrapper.nativeElement.scrollLeft;\n }\n\n get isXAxisHover() {\n return [Position.left, Position.right].includes(this.hoverdDirection);\n }\n\n get rowResizeClass() {\n return [\n 'the-row-resize-handle-panel',\n this.tablePosition.table && this.tablePosition.table.options?.numberedColumn ? 'the-numbered-resize-handle-panel' : ''\n ];\n }\n\n public dotWrapperHovered: boolean;\n\n public resizeRef: ResizeRef;\n\n @HostBinding('style.backgroundColor') backgroundColor: string;\n\n @HostBinding('attr.colspan') colspan: number;\n\n @HostBinding('attr.rowspan') rowspan: number;\n\n @HostBinding('style.display') display: string;\n\n @ViewChild('cellInner', { static: true })\n cellInner: ElementRef;\n\n get cellInnerNativeElement(): HTMLElement {\n return this.cellInner.nativeElement;\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useState();\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private ngZone: NgZone,\n public injector: Injector,\n public overlay: Overlay,\n public resizingStore: ColumnResizingStore,\n public scrollDispatcher: ScrollDispatcher\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useBackground();\n this.useSpan();\n this.useDisplay();\n this.useFocus();\n useElementStyle(this.elementRef.nativeElement, this.element);\n }\n\n ngAfterViewInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.useTablePosition();\n this.getInjectionService();\n this.subscribeSelectedCellsChange();\n this.subscribeDangerousCellsChange();\n this.subscribeTableChange();\n this.listenCellSelectEvents();\n this.listenForCellHoverEvents();\n this.listenForResizeEvents();\n // const height = this.calculateCellInnerMinHeight();\n // this.useMinHeight(height);\n });\n }\n\n getInjectionService() {\n this.tableComponent = ELEMENT_TO_COMPONENT.get(this.tablePosition.table) as TheTableComponent;\n }\n\n subscribeSelectedCellsChange() {\n this.tableStore\n .selectedCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(x => {\n if (x.length === 0) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'selected-cell');\n } else {\n const isSelectedCell = x.some(\n ({ row, col }) => row === this.tablePosition.getRowIndex() && col === this.tablePosition.getColumnIndex()\n );\n if (isSelectedCell) {\n this.renderer.addClass(this.elementRef.nativeElement, 'selected-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'selected-cell');\n }\n }\n this.cdr.detectChanges();\n });\n }\n\n subscribeDangerousCellsChange() {\n this.tableStore\n .dangerousCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(x => {\n if (x.length === 0) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'dangerous-cell');\n } else {\n const isSelectedCell = x.some(\n ({ row, col }) => row === this.tablePosition.getRowIndex() && col === this.tablePosition.getColumnIndex()\n );\n if (isSelectedCell) {\n this.renderer.addClass(this.elementRef.nativeElement, 'dangerous-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'dangerous-cell');\n }\n }\n this.cdr.detectChanges();\n });\n }\n\n subscribeTableChange() {\n this.tableStore\n .tableChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.useTablePosition();\n // const height = this.calculateCellInnerMinHeight();\n // this.useMinHeight(height);\n });\n }\n\n useState() {\n this.useBackground();\n this.useSpan();\n this.useDisplay();\n this.useFocus();\n useElementStyle(this.elementRef.nativeElement, this.element);\n }\n\n useTablePosition() {\n const opts = new TableOptions();\n const path = TheEditor.findPath(this.editor, this.element);\n // must be path of cell's children\n this.tablePosition = TablePosition.create(opts, this.editor, path.concat(0));\n }\n\n useBackground() {\n if (this.element.backgroundColor !== this.backgroundColor) {\n this.backgroundColor = this.element.backgroundColor as string;\n }\n }\n\n useSpan() {\n this.colspan = undefined;\n this.rowspan = undefined;\n if (this.element.colspan) {\n this.colspan = this.element.colspan;\n }\n if (this.element.rowspan) {\n this.rowspan = this.element.rowspan;\n }\n }\n\n calculateCellInnerMinHeight() {\n if (this.element.colspan) {\n const rowIndex = this.tablePosition.getRowIndex();\n if (this.calculateCombinedRows().length > 0) {\n let height = 0;\n const heights = getBaseHeightForRows(this.editor, this.tableComponent.element);\n for (let index = rowIndex; index < this.element.rowspan + rowIndex; index++) {\n height += heights[index];\n }\n height = height - BASE_FILL_HEIGHT;\n return height;\n }\n }\n return undefined;\n }\n\n calculateCombinedRows() {\n const rowIndex = this.tablePosition.getRowIndex();\n const combinedRows: number[] = [];\n const table = this.tablePosition.table;\n table.children.forEach((row, _rowIndex) => {\n if (_rowIndex > rowIndex && _rowIndex <= rowIndex + this.element.rowspan) {\n const isCombined = row.children.every(cell => cell.hidden || cell.rowspan > 1);\n if (isCombined) {\n combinedRows.push(_rowIndex);\n }\n }\n });\n return combinedRows;\n }\n\n useDisplay() {\n this.display = this.element.hidden ? 'none' : '';\n }\n\n useFocus() {\n if (this.isCollapsed) {\n this.renderer.addClass(this.elementRef.nativeElement, 'focused-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'focused-cell');\n }\n }\n\n useMinHeight(minHeight: number) {\n if (this.cellInnerMinHeight === minHeight) {\n return;\n }\n this.cellInnerMinHeight = minHeight;\n // if (this.cellInnerMinHeight) {\n // this.cellInnerNativeElement.style.minHeight = `${this.cellInnerMinHeight}px`;\n // } else {\n // this.cellInnerNativeElement.style.removeProperty('min-height');\n // }\n }\n\n //#region cell-select\n listenCellSelectEvents() {\n this.ngZone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement!;\n fromEvent<MouseEvent>(element, 'mousedown')\n .pipe(\n takeUntil(this.destroy$),\n filter((e: MouseEvent) => e.button !== 2),\n map(event => {\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR);\n return cell;\n }),\n filter(cell => !!cell)\n )\n .subscribe((cell: HTMLTableCellElement) => {\n this.tableStore.selectCellStart(cell, this.editor);\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n this.listenCellMouseEvents();\n });\n });\n }\n\n listenCellMouseEvents() {\n const mouseoverObservable = fromEvent<MouseEvent>(document, 'mouseover')\n .pipe(\n takeUntil(this.destroy$),\n map(event => {\n event.preventDefault();\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR);\n return cell;\n }),\n filter((cell: HTMLTableCellElement) => !!cell)\n )\n .subscribe((cell: HTMLTableCellElement) => {\n this.tableStore.selectCellOngoing(cell, this.editor);\n });\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(take(1))\n .subscribe(() => {\n this.tableStore.selectCellEnd(this.editor);\n if (this.tableStore.isCellSelecting) {\n this.ngZone.run(() => {\n this.tableComponent.tableService.openToolbar(this.tableStore.focusCellElement);\n });\n }\n mouseoverObservable.unsubscribe();\n });\n }\n\n //#region resizable\n private listenForCellHoverEvents() {\n const element = this.elementRef.nativeElement!;\n this.eventDispatcher\n .resizeOverlayVisibleForTableCell(element)\n .pipe(\n takeUntil(this.destroy$),\n map(value => {\n // 禁止第一列左侧\n if (value && value.position === Position.left && this.tablePosition.getColumnIndex() === 0) {\n return null;\n }\n // 禁止第一行顶部\n if (value && value.position === Position.top && this.tablePosition.getRowIndex() === 0) {\n return null;\n }\n return value;\n })\n )\n .subscribe(hoveredCellInfo => {\n if (hoveredCellInfo && hoveredCellInfo.position) {\n this.hoverdDirection = hoveredCellInfo.position;\n } else {\n this.hoverdDirection = null;\n }\n if (hoveredCellInfo) {\n this.hoverdDirection = hoveredCellInfo.position;\n if (!this.overlayRef || !this.overlayRef.hasAttached()) {\n this.overlayRef = this._createOverlayForHandle();\n this._showHandleOverlay();\n } else {\n this.resizeRef.setDirection(this.isXAxisHover ? 'X' : 'Y');\n this.updateOverlayHandleSizeAndOffset();\n }\n } else if (this.overlayRef) {\n this.overlayRef.detach();\n }\n });\n }\n\n private listenForResizeEvents() {\n const takeUntilDestroyed = takeUntil<ColumnSizeAction>(this.destroy$);\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\n .pipe(\n takeUntilDestroyed,\n filter(columnSize => columnSize.tableCell === this.elementRef.nativeElement)\n )\n .subscribe(({ deltaSize, previousSize, completeImmediately }) => {\n const { top, left, height, width } = this.elementRef.nativeElement.getBoundingClientRect();\n const { clientY, clientX } = event as MouseEvent;\n let isPreventApplySize = false;\n // 向下,或者向右移动(deltaSize > 0),鼠标位置不在当前单元格拖拽线上,阻止应用拖拽尺寸\n if (this.isXAxisHover) {\n const cellWidth = this.hoverdDirection === Position.left ? 0 : width;\n isPreventApplySize = deltaSize > 0 && left + cellWidth - clientX > 0;\n } else {\n const cellHeight = this.hoverdDirection === Position.top ? 0 : height;\n isPreventApplySize = deltaSize > 0 && top + cellHeight - clientY > 0;\n }\n if (isPreventApplySize) {\n return;\n }\n this.elementRef.nativeElement!.classList.add(OVERLAY_ACTIVE_CLASS);\n this.applySize(deltaSize, previousSize);\n if (completeImmediately) {\n this._completeResizeOperation();\n }\n });\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n .pipe(takeUntilDestroyed)\n .subscribe(columnSize => {\n this._cleanUpAfterResize(columnSize);\n this.resizingStore.cleanResizing();\n });\n }\n\n private _completeResizeOperation(): void {\n this.ngZone.run(() => {\n this.resizeNotifier.resizeCompleted.next({\n tableCell: this.elementRef.nativeElement\n });\n });\n }\n\n private _cleanUpAfterResize(columnSize: ColumnSizeAction): void {\n this.elementRef.nativeElement!.classList.remove(OVERLAY_ACTIVE_CLASS);\n }\n\n private _createHandlePortal(): ComponentPortal<TheColumnResizeOverlayHandleComponent> {\n const customTokens = new WeakMap();\n this.resizeRef = new ResizeRef(\n this.elementRef,\n this.overlayRef!,\n this.tableOptions.minWidthPx,\n this.tableOptions.maxWidthPx,\n this.tableOptions.minHeightPx,\n this.tableOptions.maxHeightPx,\n () => {\n this.updateOverlayHandleSizeAndOffset();\n }\n );\n customTokens.set(ResizeRef, this.resizeRef);\n customTokens.set(TableCellEventDispatcher, this.eventDispatcher);\n customTokens.set(ColumnResizeNotifierSource, this.resizeNotifier);\n const injector = new PortalInjector(this.injector, customTokens);\n return new ComponentPortal(TheColumnResizeOverlayHandleComponent, this.viewContainerRef, injector);\n }\n\n private _showHandleOverlay(): void {\n this.overlayRef!.attach(this._createHandlePortal()).changeDetectorRef.markForCheck();\n this.updateOverlayHandleSizeAndOffset();\n }\n\n private updateOverlayHandleSizeAndOffset() {\n this.overlayRef?.removePanelClass(['the-column-resize-handle-panel', ...this.rowResizeClass]);\n this.isXAxisHover ? this.updateOverlayHandleColumnSize() : this.updateOverlayHandleRowSize();\n this.overlayRef?.updatePositionStrategy(this.createPositionStrategy());\n this.resizeRef.setDirection(this.isXAxisHover ? 'X' : 'Y');\n this.resizeRef.setPosition(this.hoverdDirection);\n }\n\n private updateOverlayHandleColumnSize() {\n let height = 0;\n const tableElementTop = this.tableElement.getBoundingClientRect().top;\n if (tableElementTop < this.scrollableElementTop) {\n height = this.tableElement.offsetHeight - (this.scrollableElementTop - tableElementTop);\n } else {\n height = this.tableElement.offsetHeight;\n }\n this.overlayRef!.addPanelClass('the-column-resize-handle-panel');\n this.overlayRef!.updateSize({ height, width: OVERLAY_INIT_SIZE });\n }\n\n private updateOverlayHandleRowSize() {\n const tableElement = this.tableComponent.nativeElement;\n const rowControl = tableElement.querySelector('.the-temp-table-row-controls') as HTMLElement;\n let rowControlWidth = 11;\n if (rowControl) {\n rowControlWidth = rowControl.getBoundingClientRect().width;\n }\n const width = this.tableComponent.tableWrapper.nativeElement.offsetWidth + rowControlWidth - 2;\n this.overlayRef!.addPanelClass(this.rowResizeClass);\n this.overlayRef!.updateSize({ width, height: OVERLAY_INIT_SIZE });\n }\n\n private applySize(deltaSize: number, previousSize?: number): void {\n // update col width and table width\n if (this.isXAxisHover) {\n this.applyColumnSize(deltaSize);\n } else {\n this.applyRowSize(deltaSize);\n }\n this.tableComponent.useRowControls();\n this.tableComponent.detectChanges();\n this.updateOverlayHandleSizeAndOffset();\n }\n\n private _createOverlayForHandle(): OverlayRef {\n // Use of overlays allows us to properly capture click events spanning parts\n // of two table cells and is also useful for displaying a resize thumb\n // over both cells and extending it down the table as needed.\n const overlayOption = this.isXAxisHover\n ? {\n width: OVERLAY_INIT_SIZE + 'px',\n panelClass: 'the-column-resize-handle-panel'\n }\n : {\n height: OVERLAY_INIT_SIZE + 'px',\n panelClass: this.rowResizeClass\n };\n return this.overlay.create({\n // Always position the overlay based on left-indexed coordinates.\n disposeOnNavigation: true,\n positionStrategy: this.createPositionStrategy(),\n ...overlayOption\n });\n }\n\n private createPositionStrategy() {\n let offsetY = this.calculateOverlayHandleOffsetY();\n let offsetX = this.calculateOverlayHandleOffsetX();\n const position: ConnectedPosition = this.isXAxisHover\n ? { ...POSITION_MAP[this.hoverdDirection], offsetY }\n : { ...POSITION_MAP[this.hoverdDirection], offsetX };\n return this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef.nativeElement)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withPositions([position]);\n }\n\n private calculateOverlayHandleOffsetY() {\n const tableElementTop = this.tableElement.getBoundingClientRect().top;\n if (tableElementTop < this.scrollableElementTop) {\n return this.scrollableElementTop - this.elementRef.nativeElement.getBoundingClientRect().top;\n } else {\n return tableElementTop - this.elementRef.nativeElement.getBoundingClientRect().top;\n }\n }\n\n private calculateOverlayHandleOffsetX() {\n const cellElementLeft = this.elementRef.nativeElement.getBoundingClientRect().left;\n const tableElementLeft = this.tableElement.getBoundingClientRect().left;\n return tableElementLeft - cellElementLeft + this.scrollableElementLeft;\n }\n\n applyColumnSize(deltaX: number): void {\n const cols = [...this.tableElement.querySelector('colgroup').children] as HTMLTableColElement[];\n this.resizingStore.storeTableWidth(cols);\n this.resizingStore.initDirection(deltaX);\n let cellIndex = this.elementRef.nativeElement.cellIndex;\n if (this.hoverdDirection === 'left') {\n cellIndex = cellIndex - 1;\n }\n const colspan = (this.elementRef.nativeElement as HTMLElement).getAttribute('colspan') || 1;\n cellIndex = cellIndex + (colspan as number) / 1 - 1;\n if (deltaX > 0) {\n this.applyRightCols(cols, deltaX, cellIndex + 1);\n if (this.resizingStore.isRestoring(deltaX)) {\n deltaX = this.resizingStore.restoreLeftCols(deltaX);\n }\n if (deltaX > 0) {\n cols[cellIndex].style.width = coerceCssPixelValue(coercePixelsFromCssValue(cols[cellIndex].style.width) + deltaX);\n }\n } else {\n const nextCol = cols[cellIndex + 1];\n if (nextCol) {\n let leftDeltaX = this.resizingStore.getScrollWidth(deltaX);\n const _delta = this.applyLeftCols(cols, deltaX, cellIndex);\n if (_delta === deltaX) {\n // can not resize\n return;\n }\n deltaX = deltaX - _delta;\n if (this.resizingStore.isRestoring(deltaX)) {\n if (leftDeltaX < 0) {\n leftDeltaX = this.resizingStore.restoreRightCols(leftDeltaX);\n }\n if (leftDeltaX < 0) {\n nextCol.style.width = coerceCssPixelValue(getElementWidth(nextCol) + Math.abs(leftDeltaX));\n }\n } else {\n nextCol.style.width = coerceCssPixelValue(getElementWidth(nextCol) + Math.abs(deltaX));\n }\n } else {\n const scrollWidth = getElementWidth(this.tableElement) - this.theTableWrapperWidth;\n if (scrollWidth > 0) {\n if (scrollWidth > Math.abs(deltaX)) {\n this.applyLeftCols(cols, deltaX, cellIndex);\n } else {\n this.applyLeftCols(cols, -scrollWidth, cellIndex);\n }\n }\n }\n }\n }\n\n applyLeftCols(cols: HTMLTableColElement[], deltaX: number, colIndex: number): number {\n while (deltaX < 0 && cols[colIndex]) {\n const currentWidth = getElementWidth(cols[colIndex]);\n if (currentWidth > this.tableOptions.minWidthPx) {\n if (this.resizingStore.isResizing(deltaX)) {\n this.resizingStore.storeResizingCol(cols[colIndex]);\n }\n if (currentWidth > this.tableOptions.minWidthPx + Math.abs(deltaX)) {\n cols[colIndex].style.width = coerceCssPixelValue(currentWidth - Math.abs(deltaX));\n deltaX = 0;\n } else {\n deltaX += currentWidth - this.tableOptions.minWidthPx;\n cols[colIndex].style.width = coerceCssPixelValue(this.tableOptions.minWidthPx);\n }\n }\n colIndex--;\n }\n return deltaX;\n }\n\n applyRightCols(cols: HTMLTableColElement[], deltaX: number, colIndex: number) {\n while (deltaX > 0 && cols[colIndex]) {\n const currentWidth = getElementWidth(cols[colIndex]);\n if (currentWidth > this.tableOptions.minWidthPx) {\n if (this.resizingStore.isResizing(deltaX)) {\n this.resizingStore.storeResizingCol(cols[colIndex]);\n }\n if (currentWidth > deltaX + this.tableOptions.minWidthPx) {\n cols[colIndex].style.width = coerceCssPixelValue(currentWidth - deltaX);\n deltaX = 0;\n } else {\n deltaX -= currentWidth - this.tableOptions.minWidthPx;\n cols[colIndex].style.width = coerceCssPixelValue(this.tableOptions.minWidthPx);\n }\n }\n colIndex++;\n }\n return deltaX;\n }\n\n applyRowSize(deltaY: number): void {\n const rows = [...this.tableElement.querySelector('tbody').children] as HTMLTableRowElement[];\n this.resizingStore.storeTableHeight(rows);\n this.resizingStore.initDirection(deltaY, this.isXAxisHover);\n let rowIndex = this.elementRef.nativeElement.parentElement.rowIndex - 1; // subtract thead's tr\n if (this.hoverdDirection === Position.top) {\n rowIndex = rowIndex - 1;\n }\n const rowSpan = (this.elementRef.nativeElement as HTMLTableCellElement).rowSpan;\n const bottomRowIndex = rowIndex + (rowSpan - 1) + 1;\n if (deltaY > 0) {\n this.applyBottomRows(rows, deltaY, bottomRowIndex);\n if (this.resizingStore.isRestoring(deltaY, this.isXAxisHover)) {\n deltaY = this.resizingStore.restoreTopRows(deltaY);\n }\n if (deltaY > 0) {\n let initHeight = getElementHeight(rows[rowIndex]);\n rows[rowIndex].style.height = coerceCssPixelValue(initHeight + deltaY);\n }\n } else {\n let addDeltaY = this.resizingStore.getAddTableHeight(deltaY);\n const _delta = this.applyTopRows(rows, deltaY, rowIndex);\n if (_delta === deltaY) {\n // can not resize\n return;\n }\n deltaY = deltaY - _delta;\n if (this.resizingStore.isRestoring(deltaY, this.isXAxisHover)) {\n if (addDeltaY < 0) {\n deltaY = this.resizingStore.restoreBottomRows(deltaY);\n }\n }\n }\n }\n\n applyTopRows(rows: HTMLTableRowElement[], deltaY: number, rowIndex: number): number {\n while (deltaY < 0 && rows[rowIndex]) {\n const rowOffsetHeight = getElementHeight(rows[rowIndex]);\n if (rowOffsetHeight > this.tableOptions.minHeightPx) {\n if (this.resizingStore.isResizing(deltaY, this.isXAxisHover)) {\n this.resizingStore.storeResizingRow(rows[rowIndex]);\n }\n if (rowOffsetHeight > this.tableOptions.minHeightPx + Math.abs(deltaY)) {\n rows[rowIndex].style.height = coerceCssPixelValue(rowOffsetHeight - Math.abs(deltaY));\n deltaY = 0;\n } else {\n deltaY += rowOffsetHeight - this.tableOptions.minHeightPx;\n rows[rowIndex].style.height = coerceCssPixelValue(this.tableOptions.minHeightPx);\n }\n }\n rowIndex--;\n }\n return deltaY;\n }\n\n applyBottomRows(rows: HTMLTableRowElement[], deltaY: number, rowIndex: number): number {\n while (rows[rowIndex] && deltaY > 0) {\n const rowOffsetHeight = getElementHeight(rows[rowIndex]);\n if (rowOffsetHeight > this.tableOptions.minHeightPx) {\n if (this.resizingStore.isResizing(deltaY, this.isXAxisHover)) {\n this.resizingStore.storeResizingRow(rows[rowIndex]);\n }\n if (rowOffsetHeight > deltaY + this.tableOptions.minHeightPx) {\n rows[rowIndex].style.height = coerceCssPixelValue(rowOffsetHeight - deltaY);\n deltaY = 0;\n } else {\n deltaY -= rowOffsetHeight - this.tableOptions.minHeightPx;\n rows[rowIndex].style.height = coerceCssPixelValue(this.tableOptions.minHeightPx);\n }\n }\n rowIndex++;\n }\n return deltaY;\n }\n\n //#region\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div #cellInner>\r\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\r\n</div>\r\n","import { TableCellElement, TableElement, TableRowElement } from \"../../../custom-types\";\nimport { getOriginCell } from \"./calc-span\";\n\nexport const normalizeTable = (table: TableElement) => {\n const normalizedNodes = [];\n const rowHeight = table.children.length;\n const columnWidth = table.children[0].children.length;\n table.children.forEach((row: TableRowElement, rowIndex) => {\n row.children.forEach((cell: TableCellElement, columnIndex) => {\n // case 1\n if (cell.colspan || cell.rowspan) {\n const rowspan = cell.rowspan || 1;\n const colspan = cell.colspan || 1;\n if (rowspan > rowHeight - rowIndex) {\n cell.rowspan = rowHeight - rowIndex;\n }\n if (colspan > columnWidth - columnIndex) {\n cell.colspan = columnWidth - columnIndex;\n }\n return;\n }\n // case 2\n if (cell.hidden && !normalizedNodes.includes(cell)) {\n const origin = getOriginCell(table, rowIndex, columnIndex);\n if (!origin) {\n delete table.children[rowIndex].children[columnIndex].hidden;\n }\n }\n });\n });\n return table;\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { insertTable } from '../../plugins/table/transforms/insert-table';\r\nimport { HostListener } from '@angular/core';\r\nimport { ThyPopoverRef } from 'ngx-tethys';\r\nimport { TheEditor } from '../../interfaces';\r\nimport { TableOptions } from '../../plugins/table/table.types';\r\n\r\n@Component({\r\n selector: 'table-select',\r\n templateUrl: './table-select.component.html'\r\n})\r\nexport class TheTableSelectComponent implements OnInit {\r\n @Input() optionsParam: TableOptions;\r\n @Input() editor: TheEditor;\r\n\r\n tableData = new Array(10);\r\n maxRowIndex = -1;\r\n maxColIndex = -1;\r\n\r\n @HostListener('document: mousedown', ['$event'])\r\n handleDocumentMouseDown(event: MouseEvent) {\r\n if (!document.querySelector('.table-selector-container').contains(event.target as HTMLElement)) {\r\n this.popoverRef.close();\r\n }\r\n }\r\n\r\n constructor(private popoverRef: ThyPopoverRef<TheTableSelectComponent>) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onSelectCells(rowIndex, colIndex) {\r\n this.maxRowIndex = rowIndex;\r\n this.maxColIndex = colIndex;\r\n }\r\n\r\n executeTable(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const opts = new TableOptions(this.optionsParam);\r\n insertTable(opts, this.editor, this.maxRowIndex + 1, this.maxColIndex + 1);\r\n if (this.popoverRef) {\r\n this.popoverRef.close();\r\n this.maxColIndex = -1;\r\n this.maxRowIndex = -1;\r\n }\r\n }\r\n}\r\n","<div class=\"table-selector-container\">\r\n <div\r\n *ngFor=\"let item of tableData, let rowIndex = index\"\r\n class=\"selector-row\"\r\n (mousedown)=\"executeTable($event)\"\r\n >\r\n <span\r\n *ngFor=\"let item of tableData, let colIndex = index\"\r\n [ngClass]=\"{'active-cell': rowIndex<= maxRowIndex && colIndex <= maxColIndex, 'selector-cell': true}\"\r\n (mouseenter)=\"onSelectCells(rowIndex, colIndex)\"\r\n >\r\n </span>\r\n </div>\r\n <span class=\"selector-text\">{{maxRowIndex+1}} x {{maxColIndex+1}}</span>\r\n</div>\r\n","import { Overlay } from '@angular/cdk/overlay';\nimport { Component } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys';\nimport { TheBaseToolbarItem } from '../../core/toolbar-item/base-toolbar-item';\nimport { TheTableSelectComponent } from '../../components/table-select/table-select.component';\nimport { TableOptions } from './table.types';\n\n@Component({\n selector: 'the-table-toolbar-item',\n template: `\n <a\n thyIconNavLink\n class=\"link-with-down\"\n [thyTooltip]=\"toolbarItem?.name\"\n thyTooltipPlacement=\"top\"\n [thyIconNavLinkActive]=\"active\"\n (mousedown)=\"execute($event)\"\n >\n <thy-icon [thyIconName]=\"toolbarItem.icon\"></thy-icon>\n <thy-icon class=\"link-down-icon font-size-sm text-desc table-down-icon\" thyIconName=\"caret-down\"> </thy-icon>\n </a>\n `,\n host: {\n class: 'the-toolbar-dropdown-container'\n }\n})\nexport class TheTableToolbarItemComponent extends TheBaseToolbarItem {\n tableSelectRef: ThyPopoverRef<TheTableSelectComponent>;\n\n get isOpenTableSelect() {\n return this.tableSelectRef && this.tableSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover, private overlay: Overlay) {\n super();\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (this.editor?.disabled) {\n return;\n }\n this.toggleTableSelect(event);\n }\n\n toggleTableSelect(event: MouseEvent, optionsParam?: TableOptions) {\n if (this.isOpenTableSelect) {\n this.tableSelectRef.close();\n return;\n }\n this.tableSelectRef = this.thyPopover.open(TheTableSelectComponent, {\n origin: event.currentTarget as HTMLElement,\n initialState: {\n editor: this.editor,\n optionsParam\n },\n minWidth: 0,\n backdropClosable: false,\n hasBackdrop: false,\n insideClosable: false,\n placement: 'bottomLeft',\n offset: 10,\n panelClass: 'the-table-selector-pannel',\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n return this.tableSelectRef;\n }\n}\n","import { Transforms, Point, Node, Range, Editor, NodeEntry, Element, Path, Operation } from 'slate';\nimport { AngularEditor, ELEMENT_TO_COMPONENT, hotkeys } from 'slate-angular';\nimport { TableOptions } from './table.types';\nimport { isRangeInTable, isSelectionInTable, TablePosition } from './utils';\nimport { PluginKeys, TheEditor } from '../../interfaces';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TableCellElement, TableElement, TableRowElement } from '../../custom-types';\nimport { TheTableComponent } from './components/table.component';\nimport { TableEditor } from './table.editor';\nimport { clearTableNode } from './transforms/clear-table-node';\nimport { isVirtualKey } from './utils/is-virtual-key';\nimport { insertColumnAtRow } from './transforms/insert-column';\nimport { calculateAnchorPositionInCell } from './utils/calc-anchor-position';\nimport { CLIPBOARD_FORMAT_KEY } from '../../constants/default';\nimport { getOriginCell } from './utils/calc-span';\nimport { resetTableCell } from './utils/split-cell';\nimport { removeColumns } from './utils/remove-columns';\nimport { addColumns } from './utils/add-columns';\nimport { TheTableRowComponent } from './components/row/row.component';\nimport { TheTdComponent } from './components/td/td.component';\nimport { extractFragment } from '../../utils/fragment';\nimport * as TheQueries from '../../queries';\nimport { normalizeTable } from './utils/normalize-table';\nimport { _ } from '../../utils/lodash';\nimport { createPluginFactory } from '../../core';\nimport { TheTableToolbarItemComponent } from './toolbar-item.component';\n\nexport const withTable = <T extends Editor>(editor: T): T => {\n const {\n deleteBackward,\n deleteForward,\n onKeydown,\n setFragmentData,\n insertData,\n normalizeNode,\n isBlockCard,\n renderElement,\n deleteCutData,\n isContainer,\n onChange\n } = editor;\n\n editor.deleteBackward = unit => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n deleteBackward(unit);\n return;\n }\n const { selection } = editor;\n\n const [, startBlockPath] = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n)\n });\n const startPosition = TablePosition.create(opts, editor, selection.anchor.path);\n if (\n startBlockPath.length <= startPosition.cellEntry[1].length + 1 &&\n startBlockPath.pop() === 0 &&\n selection.anchor.offset === 0 &&\n TheQueries.isStart(editor, selection.anchor, startBlockPath) &&\n !Editor.isVoid(editor, TheQueries.anchorBlock(editor))\n ) {\n return;\n }\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const opts = new TableOptions();\n const afterPoint = Editor.after(editor, editor.selection);\n if (afterPoint && isRangeInTable(opts, editor, { anchor: afterPoint, focus: afterPoint })) {\n const beforePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\n const afterPosition = TablePosition.create(opts, editor, afterPoint.path);\n if (beforePosition.cell && beforePosition.cell !== afterPosition.cell) {\n return;\n }\n }\n deleteForward(unit);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const opts = new TableOptions();\n const isMoveUp = hotkeys.isMoveUp(event);\n const isMoveDown = hotkeys.isMoveDown(event);\n const isMoveBackward = hotkeys.isMoveBackward(event);\n const isMoveForward = hotkeys.isMoveForward(event);\n const { selection } = editor;\n if (!selection || !selection.anchor || !selection.focus) {\n onKeydown(event);\n return;\n }\n const startPosition = TablePosition.create(opts, editor, selection.anchor.path);\n const endPosition = TablePosition.create(opts, editor, selection.focus.path);\n const isCollapsed = Range.isCollapsed(selection);\n if (startPosition && endPosition && endPosition.isInTable()) {\n // for keyboard up and down key in the table\n if (isMoveUp || isMoveDown) {\n const cellPath = endPosition.cellEntry[1];\n const startPath = Editor.start(editor, cellPath).path;\n const endPath = Editor.end(editor, cellPath).path;\n const { isFirstLine, isLastLine } = calculateAnchorPositionInCell(editor);\n startPath.pop();\n endPath.pop();\n\n if ((TheQueries.anchorBlockEntry(editor)[1].toString() !== startPath.toString() || !isFirstLine) && isMoveUp) {\n onKeydown(event);\n return;\n }\n\n if ((TheQueries.anchorBlockEntry(editor)[1].toString() !== endPath.toString() || !isLastLine) && isMoveDown) {\n onKeydown(event);\n return;\n }\n\n event.preventDefault();\n let at: Point;\n if (isMoveUp) {\n const aboveRow = startPosition.table.children[startPosition.getRowIndex() - 1];\n const aboveCell = aboveRow && aboveRow.children[startPosition.getColumnIndex()];\n if (aboveCell) {\n if (aboveCell.hidden) {\n TableEditor.selectOriginCell(\n editor,\n startPosition.table,\n startPosition.getRowIndex() - 1,\n startPosition.getColumnIndex(),\n false\n );\n return;\n } else {\n at = Editor.end(editor, TheEditor.findPath(editor, aboveCell));\n }\n } else {\n const previousNodeEntry = Editor.previous(editor, { at: startPosition.tableEntry[1] });\n const beforePoint = Editor.before(editor, startPosition.tableEntry[1]);\n Editor.next(editor, { at: startPosition.tableEntry[1] });\n\n if (previousNodeEntry) {\n at = Editor.end(editor, previousNodeEntry[1]);\n }\n\n if (!previousNodeEntry && beforePoint) {\n at = Editor.end(editor, beforePoint.path);\n }\n\n if (!previousNodeEntry && !beforePoint) {\n AngularEditor.moveBlockCard(editor, startPosition.tableEntry[0], { direction: 'left' });\n return;\n }\n }\n Transforms.select(editor, at);\n } else {\n let belowRowIndex = startPosition.getRowIndex() + 1;\n if (startPosition.cell.rowspan > 1) {\n belowRowIndex = startPosition.getRowIndex() + startPosition.cell.rowspan;\n }\n const belowRow = startPosition.table.children[belowRowIndex];\n const belowCell = belowRow && belowRow.children[startPosition.getColumnIndex()];\n if (belowCell) {\n if (belowCell.hidden) {\n TableEditor.selectOriginCell(\n editor,\n startPosition.table,\n startPosition.getRowIndex() + 1,\n startPosition.getColumnIndex(),\n true\n );\n return;\n } else {\n at = Editor.start(editor, TheEditor.findPath(editor, belowCell));\n }\n } else {\n const nextNodeEntry = Editor.next(editor, { at: startPosition.tableEntry[1] });\n const movePath = nextNodeEntry ? nextNodeEntry[1] : Editor.after(editor, startPosition.tableEntry[1]).path;\n at = Editor.start(editor, movePath);\n }\n Transforms.select(editor, at);\n }\n return;\n }\n\n if (isMoveBackward) {\n const beforePoint = Editor.before(editor, editor.selection);\n const beforePosition = beforePoint && TablePosition.create(opts, editor, beforePoint.path);\n if (beforePosition && beforePosition.cell && beforePosition.cell.hidden) {\n event.preventDefault();\n const at = Editor.end(editor, TheEditor.findPath(editor, beforePosition.findPrevious()));\n Transforms.select(editor, at);\n }\n }\n\n if (isMoveForward) {\n const afterPoint = Editor.after(editor, editor.selection);\n const afterPosition = afterPoint && TablePosition.create(opts, editor, afterPoint.path);\n if (afterPosition.cell && afterPosition.cell.hidden) {\n event.preventDefault();\n const nextCell = afterPosition.findNext();\n if (nextCell) {\n const at = Editor.start(editor, TheEditor.findPath(editor, afterPosition.findNext()));\n Transforms.select(editor, at);\n event.preventDefault();\n } else {\n AngularEditor.moveBlockCard(editor, startPosition.tableEntry[0], { direction: 'right' });\n event.preventDefault();\n }\n return;\n }\n }\n\n // Prevent deleting cells in the table\n if (!isCollapsed && !startPosition.isInTable() && !isVirtualKey(event)) {\n event.preventDefault();\n let tableOutPath: Point;\n Editor.withoutNormalizing(editor, () => {\n if (Range.isForward(selection)) {\n tableOutPath = Editor.end(editor, [selection.focus.path[0] - 1]);\n clearTableNode(opts, editor, true);\n } else {\n tableOutPath = Editor.start(editor, [selection.focus.path[0] + 1]);\n clearTableNode(opts, editor);\n }\n const tableOutRange = Editor.range(editor, selection.anchor, tableOutPath);\n Transforms.delete(editor, { at: tableOutRange });\n });\n // new range\n const cellRange = Editor.range(editor, editor.selection.focus.path.slice(0, 3));\n const focusRange = Range.intersection(editor.selection, cellRange);\n Transforms.select(editor, focusRange);\n Editor.deleteFragment(editor);\n return;\n }\n }\n onKeydown(event);\n return;\n };\n\n editor.setFragmentData = unit => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n setFragmentData(unit);\n return;\n }\n const { selection } = editor;\n const tablePosition = TablePosition.create(opts, editor, selection.anchor.path);\n const tableComponent = ELEMENT_TO_COMPONENT.get(tablePosition.table) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n let tableFragment = null;\n if (tableComponent.tableStore.selectedRowsIndex.length > 0) {\n const rows = tablePosition.table.children.slice(\n tableComponent.tableStore.selectedRowsIndex[0],\n tableComponent.tableStore.selectedRowsIndex[tableComponent.tableStore.selectedRowsIndex.length - 1] + 1\n );\n tableFragment = {\n ...tablePosition.table,\n children: rows\n };\n } else if (cells.length > 0) {\n const tempRows = {};\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tablePosition.tableEntry[1], row, col];\n const cellNode = Node.get(editor, cellPath) as TableCellElement;\n if (!tempRows[row]) {\n tempRows[row] = [];\n }\n tempRows[row].push(cellNode);\n }\n const rows: TableRowElement[] = Object.values(tempRows).map((item: TableCellElement[]) => {\n return {\n type: ElementKinds.tableRow,\n children: item\n };\n });\n tableFragment = {\n type: ElementKinds.table,\n children: rows\n };\n }\n if (tableFragment) {\n tableFragment = normalizeTable(_.cloneDeep(tableFragment));\n const plainText = Node.string(tableFragment);\n tableFragment = [tableFragment];\n const stringObj = JSON.stringify(tableFragment);\n const encoded = window.btoa(encodeURIComponent(stringObj));\n unit.setData(`application/${CLIPBOARD_FORMAT_KEY}`, encoded);\n unit.setData('text/plain', plainText);\n return;\n }\n setFragmentData(unit);\n };\n\n editor.insertData = data => {\n const fragment = extractFragment(data);\n if (fragment) {\n const opts = new TableOptions();\n const { selection } = editor;\n if (\n isSelectionInTable(opts, editor) &&\n fragment.length === 1 &&\n Element.isElement(fragment[0]) &&\n fragment[0].type === ElementKinds.table\n ) {\n const tablePosition = TablePosition.create(opts, editor, selection.anchor.path);\n const clipboardTable = fragment[0].children as Node[];\n const clipboardRow = (clipboardTable[0] as Element).children;\n const selectRowIndex = tablePosition.getRowIndex();\n const selectColIndex = tablePosition.getColumnIndex();\n const lastRowIndex = selectRowIndex + clipboardTable.length - 1;\n const lastColIndex = selectColIndex + clipboardRow.length - 1;\n\n for (let i = selectRowIndex; i <= lastRowIndex; i++) {\n for (let j = selectColIndex; j <= lastColIndex; j++) {\n const row = tablePosition.table.children[i];\n if (row && row.children[j]) {\n const originCell = getOriginCell(tablePosition.table, i, j);\n if (originCell && (originCell.colspan || originCell.rowspan)) {\n const path = TheEditor.findPath(editor, originCell).slice(-2);\n resetTableCell(editor, tablePosition.table, originCell, path[0], path[1]);\n }\n }\n }\n }\n\n Editor.withoutNormalizing(editor, () => {\n if (lastColIndex > tablePosition.getWidth() - 1) {\n const addColCount = lastColIndex - (tablePosition.getWidth() - 1);\n TableEditor.insertColumn(editor, addColCount, tablePosition.getWidth());\n }\n if (lastRowIndex > tablePosition.getHeight() - 1) {\n const addRowCount = lastRowIndex - (tablePosition.getHeight() - 1);\n TableEditor.insertRow(editor, addRowCount, tablePosition.getHeight());\n }\n clipboardTable.forEach((row: TableElement, i: number) => {\n row.children.forEach((col: Node, j: number) => {\n const at = [...tablePosition.tableEntry[1], selectRowIndex + i, selectColIndex + j];\n Transforms.removeNodes(editor, { at });\n Transforms.insertNodes(editor, col, { at });\n });\n });\n });\n const target = Editor.start(editor, [...tablePosition.tableEntry[1], selectRowIndex, selectColIndex]);\n Transforms.select(editor, target);\n return;\n }\n }\n insertData(data);\n };\n\n editor.normalizeNode = (entry: NodeEntry<Node>) => {\n if (Element.isElement(entry[0]) && entry[0].type === ElementKinds.table) {\n const table = entry[0] as TableElement;\n const maxWidth = Math.max(...table.children.map(row => row.children.length));\n const invalidRows = table.children.filter(row => row.children.length < maxWidth);\n if (invalidRows.length > 0) {\n const opts = new TableOptions();\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n row.children.map((cell, cellIndex) => {\n if (cell.hidden || cell.colspan || cell.rowspan) {\n Transforms.setNodes(\n editor,\n { hidden: null, colspan: null, rowspan: null },\n { at: [...entry[1], rowIndex, cellIndex] }\n );\n }\n });\n });\n invalidRows.forEach(row => {\n const count = maxWidth - row.children.length;\n insertColumnAtRow(\n opts,\n editor,\n count,\n entry as NodeEntry<TableElement>,\n table.children.indexOf(row),\n row.children.length\n );\n });\n });\n }\n if (table.columns && table.columns.length !== maxWidth) {\n const columns = table.columns.length > maxWidth ? removeColumns(table, maxWidth) : addColumns(table, maxWidth);\n Transforms.setNodes(editor, { columns }, { at: entry[1] });\n }\n }\n // adjust selection when selection is in hidden cell\n if (Element.isElement(entry[0]) && entry[0].type === ElementKinds.tableCell && entry[0].hidden) {\n if (editor.selection && Range.isCollapsed(editor.selection) && Path.isAncestor(entry[1], editor.selection.anchor.path)) {\n setTimeout(() => {\n const opts = new TableOptions();\n const tablePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\n const origin = getOriginCell(tablePosition.table, tablePosition.getRowIndex(), tablePosition.getColumnIndex());\n if (origin) {\n const path = AngularEditor.findPath(editor, origin);\n Transforms.select(editor, Editor.end(editor, path));\n }\n }, 0);\n return;\n }\n }\n normalizeNode(entry);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.table) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.table) {\n return TheTableComponent;\n }\n if (element.type === ElementKinds.tableRow) {\n return TheTableRowComponent;\n }\n if (element.type === ElementKinds.tableCell) {\n return TheTdComponent;\n }\n return renderElement(element);\n };\n\n editor.deleteCutData = () => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n deleteCutData();\n return;\n }\n const { selection } = editor;\n const element = TablePosition.create(opts, editor, selection.anchor.path);\n const tableComponent = ELEMENT_TO_COMPONENT.get(element.table) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n if (cells.length > 0) {\n Editor.withoutNormalizing(editor, () => {\n if (tableComponent.tableStore.isSelectedTable) {\n TableEditor.removeTable(editor);\n } else {\n tableComponent.tableStore.clearSelectedCellsContent();\n }\n tableComponent.tableService.closeToolbar();\n });\n return;\n }\n deleteCutData();\n };\n\n editor.isContainer = (element: Element) => {\n return element.type === ElementKinds.tableCell ? true : isContainer(element);\n };\n\n editor.onChange = () => {\n onChange();\n // adujst selection when selection is in hidden cell\n // just hook set_selection\n const isCollapsed = editor.selection && Range.isCollapsed(editor.selection);\n const isSelectionOperation = editor.operations.every(op => Operation.isSelectionOperation(op));\n if (isCollapsed && isSelectionOperation) {\n const opts = new TableOptions();\n const tablePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\n if (tablePosition.isInTable() && tablePosition.cell.hidden) {\n TableEditor.selectOriginCell(\n editor,\n tablePosition.table,\n tablePosition.getRowIndex(),\n tablePosition.getColumnIndex(),\n false\n );\n }\n }\n };\n\n return editor;\n};\n\nexport const createTablePlugin = createPluginFactory({\n key: PluginKeys.table,\n withOverrides: withTable,\n nestedStructureByKey: {\n [ElementKinds.table]: ElementKinds.tableRow,\n [ElementKinds.tableRow]: ElementKinds.tableCell\n },\n toolbarItems: [\n {\n key: ElementKinds.table,\n icon: 'table-border-all',\n name: '表格',\n iconComponent: TheTableToolbarItemComponent,\n execute: editor => TableEditor.insertTable(editor),\n active: editor => TableEditor.isActive(editor)\n }\n ]\n});\n","import { Transforms, Element, Text, Editor } from 'slate';\nimport { PluginKeys } from '../../interfaces';\nimport { CustomElementKinds } from '../../custom-types';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\nimport { TransformEditor } from '../common/transforms.plugin';\nimport * as TheQueries from '../../queries';\n\nexport interface InsertParagraphNodesOptions {\n types: CustomElementKinds[];\n}\n\nexport const withInsertParagraphNodes = <T extends Editor & TransformEditor>(editor: T): T => {\n const { normalizeNode } = editor;\n const types = getPluginOptions<InsertParagraphNodesOptions>(editor, PluginKeys.insertParagraphNodes)?.types ?? [];\n\n editor.normalizeNode = ([currentNode, currentPath]) => {\n if (Text.isText(currentNode) && currentPath.length) {\n const [node] = Editor.parent(editor, currentPath);\n const containerBlocks = [...types, ...TheQueries.getContainerBlocks(editor)];\n if (Element.isElement(node) && containerBlocks.includes(node.type)) {\n const paragraph = createEmptyParagraph();\n (paragraph.children[0] as Text).text = currentNode.text;\n Transforms.insertNodes(editor, paragraph, { at: currentPath });\n return;\n }\n }\n return normalizeNode([currentNode, currentPath]);\n };\n\n return editor;\n};\n\nexport const createInsertParagraphNodesPlugin = createPluginFactory<InsertParagraphNodesOptions>({\n key: PluginKeys.insertParagraphNodes,\n withOverrides: withInsertParagraphNodes\n});\n","import { Editor, Transforms } from 'slate';\nimport { TheiaConverter } from '@atinc/selene';\nimport { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';\nimport { filterTextFormat } from '../../utils/fragment';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\n\nexport const withDeserializeHMTL = <T extends Editor>(editor: T): T => {\n const { insertData } = editor;\n\n editor.insertData = (data: DataTransfer) => {\n const html = data.getData(`text/html`);\n const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n\n if (html && !slateFragment) {\n const htmlDom = new DOMParser().parseFromString(html, 'text/html');\n const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n // 无法识别HTML内容时后退一下:识别纯文本\n if (fragment.length === 1 && Editor.isEmpty(editor, fragment[0]) && fragment[0].type === ElementKinds.paragraph) {\n insertData(data);\n return;\n }\n // 识出纯图片并且粘贴板中存在文件则不进行处理, hook 直接右键复制图片的场景,流转到上传图片流程\n // 后续需要做识别html图片后自动上传处理\n if (fragment.length === 1 && fragment[0].type === ElementKinds.image && data.files.length > 0) {\n insertData(data);\n return;\n }\n // 过滤 text 节点的 color/background-color 属性\n fragment.forEach(node => filterTextFormat(node));\n Transforms.insertFragment(editor, fragment);\n return;\n }\n\n insertData(data);\n };\n return editor;\n};\n\nexport const createDeserializeHMTLPlugin = createPluginFactory({\n key: PluginKeys.deserializeHtml,\n withOverrides: withDeserializeHMTL\n});\n","import { Component, ComponentFactoryResolver, HostListener, Input, NgZone, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { TheBaseToolbarItem } from '../../core/toolbar-item/base-toolbar-item';\nimport { ToolbarItemMode } from '../../constants/toolbar';\nimport { isComponentType } from 'slate-angular';\n\n@Component({\n selector: 'the-toolbar-item',\n template: `\n <ng-container *ngIf=\"itemMode === ToolbarItemMode.horizontal; else selectionItem\">\n <a\n thyIconNavLink\n [thyIconNavLinkIcon]=\"toolbarItem.icon\"\n [thyTooltip]=\"tooltip\"\n [thyTooltipTemplateContext]=\"{ name: toolbarItem.name, shortcutKey: toolbarItem.shortcutKey }\"\n thyTooltipPlacement=\"top\"\n [thyIconNavLinkActive]=\"active\"\n (mousedown)=\"execute($event)\"\n ></a>\n </ng-container>\n <ng-template #selectionItem>\n <ng-container *ngIf=\"!toolbarItem?.quickItemComponent\">\n <thy-icon [thyIconName]=\"toolbarItem?.icon\" [thyIconRotate]=\"0\" class=\"quick-toolbar-icon\"></thy-icon>\n <span class=\"quick-toolbar-name\">{{ toolbarItem?.name }}</span>\n </ng-container>\n </ng-template>\n <ng-template #tooltip let-data> {{ data.name }} {{ data.shortcutKey }} </ng-template>\n <ng-container #toolbarContainer></ng-container>\n `,\n host: {\n class: 'the-toolbar-item'\n }\n})\nexport class TheToolbarItemComponent extends TheBaseToolbarItem implements OnInit {\n @Input() itemMode: ToolbarItemMode = ToolbarItemMode.horizontal;\n\n ToolbarItemMode = ToolbarItemMode;\n\n @ViewChild('toolbarContainer', { read: ViewContainerRef, static: true })\n toolbarContainer: ViewContainerRef;\n\n @HostListener('mousedown', ['$event'])\n toggleDropdown(event: MouseEvent) {\n super.execute(event);\n }\n\n constructor(private ngZone: NgZone, private cfr: ComponentFactoryResolver) {\n super();\n }\n\n ngOnInit() {\n if (this.toolbarItem?.quickItemComponent && isComponentType(this.toolbarItem?.quickItemComponent)) {\n this.renderToolbarItem();\n }\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (this.editor?.disabled || this.disabled || !this.toolbarItem?.execute) {\n return;\n }\n\n this.toolbarItem?.execute(this.editor);\n }\n\n renderToolbarItem() {\n this.ngZone.run(() => {\n const toolbarItemFactory = this.cfr.resolveComponentFactory(this.toolbarItem.quickItemComponent);\n const toolbarItemRef = this.toolbarContainer.createComponent(toolbarItemFactory);\n toolbarItemRef.instance.editor = this.editor;\n toolbarItemRef.instance.item = this.toolbarItem;\n toolbarItemRef.instance.itemMode = ToolbarItemMode.vertical;\n });\n }\n}\n","import { Component, OnInit, Input, HostListener, OnDestroy, ElementRef, ChangeDetectorRef } from '@angular/core';\nimport { mixinUnsubscribe, MixinBase } from 'ngx-tethys/core';\nimport { Editor, Text, Node } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { getPluginOptions } from '../../../../core';\nimport { PluginKeys, ToolbarItem } from '../../../../interfaces';\nimport { ToolbarActionTypes, ToolbarItemMode } from '../../../../constants';\nimport { QuickInsertEditor } from '../../quick-insert.editor';\nimport type { QuickInsertPluginOptions } from '../../quick-insert.plugin';\n\n@Component({\n selector: 'the-quick-toolbar',\n templateUrl: 'quick-toolbar.component.html'\n})\nexport class TheQuickToolbarComponent extends mixinUnsubscribe(MixinBase) implements OnInit, OnDestroy {\n @Input() editor: Editor;\n @Input() quickToolbarItems: ToolbarItem[];\n\n editorElement: HTMLElement;\n ToolbarItemMode = ToolbarItemMode;\n ToolbarActionTypes = ToolbarActionTypes;\n\n @HostListener('document: mousedown', ['$event'])\n handleMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement)) {\n QuickInsertEditor.closeQuickInsertToolbar(this.editor);\n } else {\n event.preventDefault();\n }\n }\n\n @HostListener('document: keydown.enter')\n handleEnter() {\n QuickInsertEditor.closeQuickInsertToolbar(this.editor);\n }\n\n @HostListener('document: keydown.escape')\n handleEsc() {\n QuickInsertEditor.closeQuickInsertToolbar(this.editor);\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.editorElement = AngularEditor.toDOMNode(this.editor, this.editor);\n }\n\n stopPropagation(event) {\n event.preventDefault();\n }\n\n selectionChange(event) {\n this.removeHotKey();\n const toolbarItem = this.quickToolbarItems.find(item => item.key === event.value);\n if (toolbarItem?.execute) {\n toolbarItem.execute(this.editor);\n }\n }\n\n removeHotKey() {\n const hotkey = getPluginOptions<QuickInsertPluginOptions>(this.editor, PluginKeys.quickInsert)?.hotkey;\n const node = Node.get(this.editor, this.editor.selection.anchor.path) as Text;\n if (node && hotkey === node.text) {\n Editor.deleteBackward(this.editor);\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<thy-selection-list\n class=\"the-quick-toolbar\"\n [thyBindKeyEventContainer]=\"editorElement\"\n (thySelectionChange)=\"selectionChange($event)\"\n [thyMultiple]=\"false\"\n>\n <ng-container *ngFor=\"let item of quickToolbarItems\">\n <ng-container *ngIf=\"item.key !== ToolbarActionTypes.split; else splitLine\">\n <thy-list-option [thyValue]=\"item?.key\" (mousedown)=\"stopPropagation($event)\">\n <the-toolbar-item [editor]=\"editor\" [toolbarItem]=\"item\" [itemMode]=\"ToolbarItemMode.vertical\"></the-toolbar-item>\n </thy-list-option>\n </ng-container>\n </ng-container>\n</thy-selection-list>\n\n<ng-template #splitLine>\n <nav-split-line [mode]=\"ToolbarItemMode.horizontal\"></nav-split-line>\n</ng-template>\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ViewContainerRef } from '@angular/core';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ToolbarItem } from '../../interfaces';\nimport { THE_EDITOR_QUICK_TOOLBAR_REF } from '../../utils/weak-maps';\nimport { getBlockAbove } from '../../queries/get-block-above';\nimport { TheQuickToolbarComponent } from './components/quick-toolbar/quick-toolbar.component';\n\nexport const QuickInsertEditor = {\n openQuickInsertToolbar(editor: Editor, quickToolbarItems: ToolbarItem[], origin?: HTMLElement) {\n if (QuickInsertEditor.isOpenedToolbar(editor)) {\n return;\n }\n if (!origin) {\n const [block] = getBlockAbove(editor);\n const rootNode = AngularEditor.toDOMNode(editor, block);\n origin = rootNode.querySelector('[data-slate-leaf=\"true\"]') as HTMLElement;\n }\n const overlay = editor.injector.get(Overlay);\n const viewContainerRef = editor.injector.get(ViewContainerRef);\n const thyPopover = editor.injector.get(ThyPopover);\n\n const quickToolbarRef = thyPopover.open(TheQuickToolbarComponent, {\n initialState: {\n editor,\n quickToolbarItems\n },\n origin,\n viewContainerRef: viewContainerRef,\n backdropClosable: true,\n placement: 'bottomLeft',\n offset: 4,\n hasBackdrop: false,\n insideClosable: true,\n minWidth: 0,\n panelClass: 'the-quick-toolbar-container',\n scrollStrategy: overlay.scrollStrategies.reposition(),\n manualClosure: true\n });\n quickToolbarRef.componentInstance.cdr.markForCheck();\n\n THE_EDITOR_QUICK_TOOLBAR_REF.set(editor, quickToolbarRef);\n },\n closeQuickInsertToolbar(editor: Editor) {\n const quickToolbarRef = THE_EDITOR_QUICK_TOOLBAR_REF.get(editor);\n if (quickToolbarRef) {\n quickToolbarRef.close();\n THE_EDITOR_QUICK_TOOLBAR_REF.set(editor, null);\n }\n },\n isOpenedToolbar(editor: Editor) {\n const quickToolbarRef = THE_EDITOR_QUICK_TOOLBAR_REF.get(editor);\n return !!quickToolbarRef;\n }\n};\n","import { Editor, Node } from 'slate';\nimport { hotkeys } from 'slate-angular';\nimport { TheEditorComponent } from '../../editor.component';\nimport { ElementKinds } from '../../constants';\nimport { THE_EDITOR_QUICK_TOOLBAR_REF, isPureEmptyParagraph } from '../../utils';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { QuickInsertEditor } from './quick-insert.editor';\nimport { getBlockAbove } from '../../queries/get-block-above';\nimport { CustomElementKinds } from '../../custom-types';\n\nexport interface QuickInsertPluginOptions {\n hotKey?: string;\n allowHotkeyInTypes?: CustomElementKinds[];\n}\n\nexport const withQuickInsert = <T extends Editor>(editor: T): T => {\n const { onKeydown, deleteBackward, onChange } = editor;\n let presseingQuickInsertHotkey = false;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const options = getPluginOptions<QuickInsertPluginOptions>(editor, PluginKeys.quickInsert);\n const { hotkey, allowHotkeyInTypes } = options;\n if (event.key === hotkey) {\n const types = [...(allowHotkeyInTypes || [])];\n const [block] = getBlockAbove(editor);\n if (isPureEmptyParagraph(editor, block) && allowOpenQuickToolbar(editor, types)) {\n presseingQuickInsertHotkey = true;\n }\n }\n const quickToolbarRef = THE_EDITOR_QUICK_TOOLBAR_REF.get(editor);\n const isMoveUp = hotkeys.isMoveUp(event);\n const isMoveDown = hotkeys.isMoveDown(event);\n if (quickToolbarRef && (isMoveUp || isMoveDown)) {\n return;\n }\n onKeydown(event);\n };\n\n editor.deleteBackward = unit => {\n if (QuickInsertEditor.isOpenedToolbar(editor)) {\n QuickInsertEditor.closeQuickInsertToolbar(editor);\n }\n deleteBackward(unit);\n };\n\n editor.onChange = () => {\n onChange();\n\n if (editor.selection) {\n const hotkey = getPluginOptions<QuickInsertPluginOptions>(editor, PluginKeys.quickInsert)?.hotkey;\n const [block] = getBlockAbove(editor);\n // quick insert plus\n const editorComponent = editor.injector.get(TheEditorComponent);\n editorComponent.quickInsertInstance?.checkStatus();\n\n if (presseingQuickInsertHotkey && Node.string(block) === hotkey) {\n QuickInsertEditor.openQuickInsertToolbar(editor, editorComponent.quickToolbarItems);\n presseingQuickInsertHotkey = false;\n return;\n } else {\n presseingQuickInsertHotkey = false;\n }\n\n if (QuickInsertEditor.isOpenedToolbar(editor) && !isPureEmptyParagraph(editor, block) && Node.string(block) !== hotkey) {\n QuickInsertEditor.closeQuickInsertToolbar(editor);\n }\n }\n };\n\n return editor;\n};\n\nexport const createQuickInsertPlugin = createPluginFactory<QuickInsertPluginOptions>({\n key: PluginKeys.quickInsert,\n withOverrides: withQuickInsert,\n options: {\n hotkey: '/'\n }\n});\n\nexport const allowOpenQuickToolbar = (editor: Editor, allowTypes: ElementKinds[]) => {\n const [, path] = getBlockAbove(editor);\n const parentNode = Node.parent(editor, path);\n if (path.length === 1 || (parentNode && allowTypes.includes(parentNode.type))) {\n return true;\n }\n return false;\n};\n","import isHotkey from 'is-hotkey';\nimport { TheEditor } from '../../interfaces';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { TransformEditor } from '../common/transforms.plugin';\nimport { SoftBreakOnKeyDownOptions } from './soft-break.types';\nimport * as TheQueries from '../../queries';\n\nexport const withSoftBreak = <T extends TheEditor & TransformEditor>(editor: T): T => {\n const { onKeydown } = editor;\n\n const rules = getPluginOptions<SoftBreakOnKeyDownOptions>(editor, PluginKeys.softBreak)?.rules ?? [];\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const entry = TheQueries.getBlockAbove(editor as any);\n\n rules.forEach(({ hotkey, query }) => {\n if (isHotkey(hotkey, event) && TheQueries.isNodeType(entry, query)) {\n event.preventDefault();\n\n editor.insertText('\\n');\n }\n });\n onKeydown(event);\n };\n\n return editor;\n};\n\nexport const createSoftBreakPlugin = createPluginFactory<SoftBreakOnKeyDownOptions>({\n key: PluginKeys.softBreak,\n withOverrides: withSoftBreak,\n options: {\n rules: [\n { hotkey: 'shift+enter' },\n {\n hotkey: 'enter',\n query: {\n allow: [ElementKinds.blockquote]\n }\n }\n ]\n }\n});\n","import { Component } from '@angular/core';\nimport { Editor } from 'slate';\nimport { InlineCodeElement } from '../../custom-types';\nimport { TheBaseElementComponent } from '../../interfaces';\n\n@Component({\n selector: 'span[theInlineCode]',\n template: `<span contenteditable=\"false\" class=\"the-break-char\">{{ inlineChromiumBugfix }}</span>\n <span><slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children></span>\n <span contenteditable=\"false\" class=\"the-break-char\">{{ inlineChromiumBugfix }}</span>`\n})\nexport class TheInlineCodeComponent extends TheBaseElementComponent<InlineCodeElement, Editor> {\n // Put this at the start and end of an inline component to work around this Chromium bug:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n inlineChromiumBugfix = String.fromCodePoint(160);\n}\n","import { Editor, Transforms } from 'slate';\nimport { DISABLED_OPERATE_TYPES, ElementKinds, HEADING_TYPES, ZERO_WIDTH_CHAR } from '../../constants';\nimport { InlineCodeElement } from '../../custom-types';\nimport { createPluginFactory } from '../../core';\nimport { PluginKeys } from '../../interfaces';\nimport { CONTROL_KEY } from '../../utils';\nimport { TheInlineCodeComponent } from './inline-code.component';\nimport { InlineCodeEditor } from './inline-code.editor';\nimport { withRemoveEmptyNodes } from '../normalizers/remove-empty-nodes';\n\nexport const withInlineCode = <T extends Editor>(editor: T): T => {\n const { isInline, renderElement, insertText } = editor;\n\n editor.isInline = (element: InlineCodeElement) => {\n return element.type === ElementKinds.inlineCode ? true : isInline(element);\n };\n\n editor.renderElement = (element: InlineCodeElement) => {\n if (element.type === ElementKinds.inlineCode) {\n return TheInlineCodeComponent;\n }\n return renderElement(element);\n };\n\n editor.insertText = text => {\n if (text && InlineCodeEditor.isInlineCodeActive(editor)) {\n let selection = editor.selection;\n const currentNodeText = Editor.string(editor, editor.selection.anchor.path);\n insertText(text);\n if (currentNodeText == ZERO_WIDTH_CHAR) {\n const inlineCodePath = Editor.path(editor, editor.selection);\n let range = {\n anchor: Editor.before(editor, selection.anchor),\n focus: selection.anchor\n };\n if (Editor.isStart(editor, selection.anchor, inlineCodePath)) {\n range = {\n anchor: editor.selection.anchor,\n focus: Editor.after(editor, editor.selection)\n };\n }\n Transforms.delete(editor, {\n at: range\n });\n }\n } else {\n insertText(text);\n }\n };\n\n editor = withRemoveEmptyNodes({ type: ElementKinds.inlineCode })(editor);\n return editor;\n};\n\nexport const createInlineCodePlugin = createPluginFactory({\n key: PluginKeys.inlineCode,\n withOverrides: withInlineCode,\n toolbarItems: [\n {\n key: ElementKinds.inlineCode,\n icon: 'code',\n name: '行内代码',\n shortcutKey: `${CONTROL_KEY}+E`,\n execute: editor => InlineCodeEditor.toggleInlineCode(editor),\n active: editor => InlineCodeEditor.isInlineCodeActive(editor)\n }\n ],\n options: {\n disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]\n }\n});\n","import { Editor, Transforms, Element } from 'slate';\nimport { TheEditor, PluginKeys } from '../../interfaces';\nimport { CustomElementKinds } from '../../custom-types';\nimport { getPluginOptions } from '../../core';\nimport type { IndentPluginOptions } from './indent.plugin';\n\nexport const IndentEditor = {\n getAllowedTypes(editor: TheEditor) {\n return getPluginOptions<IndentPluginOptions>(editor, PluginKeys.indent)?.allowedTypes ?? [];\n },\n setIndent(editor: TheEditor) {\n const allowedTypes = IndentEditor.getAllowedTypes(editor);\n const maxIndent = getPluginOptions<IndentPluginOptions>(editor, PluginKeys.indent)?.maxIndent ?? [];\n const nodes = Array.from(\n Editor.nodes<Element>(editor, {\n mode: 'highest',\n match: n => Element.isElement(n) && allowedTypes.includes(n.type)\n })\n );\n const [startBlock] = nodes;\n if (startBlock) {\n let [{ indent }] = startBlock;\n indent = indent ? indent : 0;\n indent += 1;\n if (indent <= maxIndent) {\n Transforms.setNodes(\n editor,\n { indent },\n {\n mode: 'highest',\n match: n => Element.isElement(n) && allowedTypes.includes(n.type)\n }\n );\n }\n }\n },\n cancelIndent(editor: Editor) {\n const allowedTypes = IndentEditor.getAllowedTypes(editor);\n const nodes = Array.from(\n Editor.nodes<Element>(editor, {\n mode: 'highest',\n match: n => Element.isElement(n) && allowedTypes.includes(n.type)\n })\n );\n const [startBlock] = nodes;\n if (startBlock) {\n let [{ indent }] = startBlock;\n indent = indent === 1 ? null : (indent -= 1);\n Transforms.setNodes(\n editor,\n { indent },\n {\n mode: 'highest',\n match: n => Element.isElement(n) && allowedTypes.includes(n.type)\n }\n );\n }\n },\n setTextIndent(editor: TheEditor, kinds: CustomElementKinds[], textIndent: number) {\n Transforms.setNodes(\n editor,\n { textIndent },\n {\n mode: 'highest',\n match: node => Element.isElement(node) && kinds.includes(node.type)\n }\n );\n },\n cancelTextIntent(editor: TheEditor, event: KeyboardEvent, anchorBlock: Element, kinds: CustomElementKinds[]) {\n let { textIndent, indent } = anchorBlock;\n\n if (textIndent > 2) {\n event.preventDefault();\n textIndent -= 2;\n IndentEditor.setTextIndent(editor, kinds, textIndent);\n return true;\n }\n if (textIndent === 2) {\n event.preventDefault();\n IndentEditor.setTextIndent(editor, kinds, null);\n return true;\n }\n if (indent) {\n event.preventDefault();\n IndentEditor.cancelIndent(editor);\n return true;\n }\n\n return false;\n }\n};\n","import { isKeyHotkey } from 'is-hotkey';\nimport { Range, Editor, Element, CustomTypes } from 'slate';\nimport { hotkeys } from 'slate-angular';\nimport { CustomElementKinds } from '../../custom-types';\nimport { TAB_SPACE } from '../../constants/default';\nimport { IndentEditor } from './indent.editor';\n\nexport const onKeydownTextIndent = (\n editor: Editor,\n event: KeyboardEvent,\n kinds: CustomElementKinds[],\n textIndentDisabled: CustomElementKinds[]\n) => {\n const { selection } = editor;\n const isExpanded = Range.isExpanded(selection);\n const nodes = Array.from(\n Editor.nodes<Element>(editor, {\n mode: 'highest',\n match: node => Element.isElement(node) && kinds.includes(node.type)\n })\n );\n const [startBlock] = nodes;\n if (!startBlock) {\n return false;\n }\n\n const [block, path] = startBlock;\n const isStart = Editor.isStart(editor, selection.anchor, path);\n\n if (isKeyHotkey('Tab', event)) {\n event.preventDefault();\n if (startBlock && (isExpanded || isStart)) {\n if (!editor.isVoid(block)) {\n let { textIndent, type } = block;\n // do not apply first-line indentation for lists\n if (!textIndent && !textIndentDisabled.includes(type)) {\n IndentEditor.setTextIndent(editor, kinds, 2);\n return true;\n } else {\n IndentEditor.setIndent(editor);\n return true;\n }\n }\n } else {\n editor.insertText(TAB_SPACE);\n return true;\n }\n }\n if (isKeyHotkey('shift+Tab', event)) {\n if (startBlock && (isExpanded || isStart)) {\n if (!editor.isVoid(block)) {\n return IndentEditor.cancelTextIntent(editor, event, block, kinds);\n }\n }\n }\n if (selection && Range.isCollapsed(selection) && hotkeys.isDeleteBackward(event)) {\n if (startBlock && isStart) {\n return IndentEditor.cancelTextIntent(editor, event, block, kinds);\n }\n }\n return false;\n};\n","import { Editor } from 'slate';\nimport { DISABLED_OPERATE_TYPES, DropdownMode, ElementKinds, HEADING_TYPES, Indents } from '../../constants';\nimport { CustomElementKinds } from '../../custom-types';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { PluginKeys, ToolbarItemType } from '../../interfaces';\nimport { onKeydownTextIndent } from './on-keydown-indent';\nimport { IndentEditor } from './indent.editor';\n\nexport interface IndentPluginOptions {\n maxIndent?: number;\n allowedTypes?: CustomElementKinds[];\n disableIndentTypes?: CustomElementKinds[];\n}\n\nexport const withIndent = <T extends Editor>(editor: T): T => {\n const { onKeydown } = editor;\n\n const allowedTypes = getPluginOptions<IndentPluginOptions>(editor, PluginKeys.indent)?.allowedTypes ?? [];\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const disableIndentTypes = getPluginOptions<IndentPluginOptions>(editor, PluginKeys.indent)?.disableIndentTypes ?? [];\n const isContinue = !onKeydownTextIndent(editor, event, allowedTypes, disableIndentTypes);\n if (isContinue) {\n onKeydown(event);\n }\n };\n\n return editor;\n};\n\nexport const createIndentPlugin = createPluginFactory<IndentPluginOptions>({\n key: PluginKeys.indent,\n withOverrides: withIndent,\n toolbarItems: [\n {\n key: ElementKinds.indent,\n includes: [Indents.indentRight, Indents.indentLeft],\n type: ToolbarItemType.dropdown,\n dropdownMode: DropdownMode.icon,\n dropdownItemKey: Indents.indentRight,\n dropdownFixedIcon: true\n },\n {\n key: Indents.indentRight,\n name: '增加缩进',\n icon: 'float-left',\n shortcutKey: 'Tab',\n execute: editor => IndentEditor.setIndent(editor)\n },\n {\n key: Indents.indentLeft,\n name: '减少缩进',\n icon: 'float-right',\n shortcutKey: 'Shift+Tab/BackSpace',\n execute: editor => IndentEditor.cancelIndent(editor)\n }\n ],\n options: {\n maxIndent: 11,\n allowedTypes: [\n ElementKinds.checkItem,\n ElementKinds.numberedList,\n ElementKinds.bulletedList,\n ElementKinds.paragraph,\n ...HEADING_TYPES\n ],\n disableIndentTypes: [ElementKinds.bulletedList, ElementKinds.numberedList, ElementKinds.checkItem],\n disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]\n }\n});\n","import { Editor } from 'slate';\nimport { ElementKinds, FontSizes, MarkTypes, HEADING_TYPES, FontSizeTypes, DISABLED_OPERATE_TYPES } from '../../constants';\nimport { TheEditor, PluginKeys, ToolbarItem, ToolbarItemType } from '../../interfaces';\nimport { createPluginFactory, getPluginOptions } from '../../core';\nimport { TheContextService } from '../../services/context.service';\nimport { TableEditor } from '../table/table.editor';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\n\nexport const FontSizeEditor = {\n setFontSize(editor: TheEditor, size: FontSizes) {\n const contextService = editor.injector.get(TheContextService);\n const defaultFontSize = contextService.getDefaultFontSize();\n const marks = TheQueries.getSelectionMarks(editor);\n const fontSizeMark: number = marks[MarkTypes.fontSize];\n const isDefaultFontSize = size === defaultFontSize;\n\n if (!fontSizeMark && isDefaultFontSize) {\n return;\n }\n\n // unset fontSize\n if (isDefaultFontSize) {\n FontSizeEditor.unsetFontSize(editor, size);\n return;\n }\n\n FontSizeEditor.setFontSizeMark(editor, size);\n },\n setFontSizeMark(editor: Editor, size: FontSizes) {\n // set Table selectedCells fontSize\n if (TableEditor.toggleMark(editor, false, MarkTypes.fontSize, Number(size))) {\n return;\n }\n // set paragraph text fontSize\n Editor.addMark(editor, MarkTypes.fontSize, Number(size));\n },\n unsetFontSize(editor: Editor, size: FontSizes) {\n const isTable = TableEditor.isActive(editor);\n\n // unset Table selectedCells fontSize\n if (isTable && TableEditor.toggleMark(editor, true, MarkTypes.fontSize, Number(size))) {\n return;\n }\n // unset paragraph text fontSize\n TheTransforms.setMarks(\n editor,\n {\n [MarkTypes.fontSize]: null\n },\n editor.selection\n );\n },\n isFontSizeActive(editor: Editor, size: FontSizes) {\n if (editor.selection) {\n const anchorBlock = TheQueries.anchorBlock(editor);\n switch (anchorBlock?.type) {\n case ElementKinds.heading_1:\n return size === FontSizes.fontSize28;\n case ElementKinds.heading_2:\n return size === FontSizes.fontSize24;\n case ElementKinds.heading_3:\n return size === FontSizes.fontSize20;\n case ElementKinds.heading_4:\n return size === FontSizes.fontSize18;\n case ElementKinds.heading_5:\n return size === FontSizes.fontSize16;\n case ElementKinds.heading_6:\n return size === FontSizes.fontSize14;\n case ElementKinds.paragraph:\n const marks = TheQueries.getSelectionMarks(editor);\n const fontSizeMark = marks[MarkTypes.fontSize];\n return Number(size) === fontSizeMark;\n default:\n return false;\n }\n }\n return false;\n }\n};\n\nconst sizeOptions = (): ToolbarItem[] => {\n return FontSizeTypes.map(fontSize => {\n return {\n key: fontSize,\n name: fontSize,\n execute: editor => FontSizeEditor.setFontSize(editor, fontSize),\n active: editor => FontSizeEditor.isFontSizeActive(editor, fontSize)\n };\n });\n};\n\nexport const createFontSizePlugin = createPluginFactory({\n key: PluginKeys.fontSize,\n toolbarItems: [\n {\n key: MarkTypes.fontSize,\n name: '字号',\n type: ToolbarItemType.dropdown,\n dropdownItemKey: FontSizes.fontSize14,\n includes: FontSizeTypes\n },\n ...sizeOptions()\n ],\n options: {\n disabledOperateTypes: [...HEADING_TYPES, ElementKinds.image, ...DISABLED_OPERATE_TYPES]\n }\n});\n","import { Component, ElementRef, HostListener, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys';\nimport { Editor } from 'slate';\nimport { TheBaseToolbarDropdown } from '../../core/toolbar-item/base-toolbar-item';\nimport { ToolbarItem } from '../../interfaces';\n\n@Component({\n selector: 'the-toolbar-vertical-align-item',\n templateUrl: './toolbar-item.component.html',\n host: {\n class: 'the-toolbar-dropdown-container verticalAlign',\n '[class.hide]': '!active'\n }\n})\nexport class TheVerticalToolbarItemComponent extends TheBaseToolbarDropdown implements OnInit {\n isHide = true;\n dropdownPopoverRef: ThyPopoverRef<any>;\n\n @ViewChild('VerticalAlignItems', { read: TemplateRef, static: true })\n template: TemplateRef<any>;\n\n get isOpened() {\n return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();\n }\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement)) {\n this.close();\n }\n }\n\n constructor(public elementRef: ElementRef, private thyPopover: ThyPopover, private viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnInit(): void {}\n\n menusActive(editor: Editor) {\n return this.menus.find(i => {\n if (this.editor?.selection && i?.active) {\n return i?.active(editor);\n }\n });\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n if (this.editor?.readOnly || this.editor?.disabled) {\n return;\n }\n this.openPopover();\n }\n\n itemMousedown(event: MouseEvent, item: ToolbarItem) {\n event.preventDefault();\n event.stopPropagation();\n\n this.close();\n\n if (item?.execute) {\n item?.execute(this.editor);\n }\n }\n\n openPopover() {\n this.dropdownPopoverRef = this.thyPopover.open(this.template, {\n origin: this.elementRef,\n panelClass: ['the-toolbar-dropdown-popover', this.toolbarItem?.key],\n placement: 'bottomLeft',\n offset: 10,\n minWidth: 0,\n viewContainerRef: this.viewContainerRef,\n insideClosable: false,\n backdropClosable: false,\n hasBackdrop: false\n });\n }\n\n close() {\n if (this.dropdownPopoverRef) {\n this.dropdownPopoverRef.close();\n }\n }\n}\n","<a\n thyIconNavLink\n class=\"icon-mode link-with-down\"\n [thyTooltip]=\"toolbarItem?.name\"\n [thyIconNavLinkActive]=\"isOpened\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n>\n <thy-icon [thyIconName]=\"activeMenuItem?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #VerticalAlignItems>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of toolbarItem?.includes\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenuItem?.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <span *ngIf=\"menu.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu?.icon\"></thy-icon>\n </span>\n <span thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n","import { createPluginFactory } from '../../core';\nimport { DropdownMode, ToolbarActionTypes, VerticalAlignment } from '../../constants';\nimport { PluginKeys, TheEditor, ToolbarItemType } from '../../interfaces';\nimport { TableEditor } from '../table/table.editor';\nimport { TheVerticalToolbarItemComponent } from './toolbar-item.component';\n\nexport const VerticalAlignEditor = {\n isVerticalActive(editor: TheEditor, alignment: VerticalAlignment) {\n const tableCellAlign = TableEditor.isVerticalAlignActive(editor, alignment);\n if (tableCellAlign !== null) {\n return tableCellAlign;\n }\n return false;\n },\n setVerticalAlign(editor: TheEditor, alignment: VerticalAlignment) {\n if (TableEditor.setVerticalAlign(editor, alignment)) {\n return;\n }\n }\n};\n\nexport const createVerticalAlignPlugin = createPluginFactory({\n key: PluginKeys.verticalAlign,\n toolbarItems: [\n {\n key: ToolbarActionTypes.verticalAlign,\n name: '垂直对齐',\n type: ToolbarItemType.dropdown,\n dropdownMode: DropdownMode.icon,\n iconComponent: TheVerticalToolbarItemComponent,\n includes: [ToolbarActionTypes.verticalAlignTop, ToolbarActionTypes.verticalAlignMiddle, ToolbarActionTypes.verticalAlignBottom],\n active: editor => TableEditor.isActive(editor)\n },\n {\n key: ToolbarActionTypes.verticalAlignTop,\n icon: 'align-top',\n name: '顶部对齐',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.top),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.top)\n },\n {\n key: ToolbarActionTypes.verticalAlignMiddle,\n icon: 'align-middle',\n name: '垂直居中',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.middle),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.middle)\n },\n {\n key: ToolbarActionTypes.verticalAlignBottom,\n icon: 'align-bottom',\n name: '底部对齐',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.bottom),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.bottom)\n }\n ]\n});\n","import { take, skip, filter } from 'rxjs/operators';\nimport { Editor, Range } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { EDITOR_TO_ELEMENT } from 'slate-angular';\nimport { PluginKeys, TheEditor } from '../../interfaces';\nimport { TheContextService } from '../../services/context.service';\nimport { MarkProps, MarkTypes, ToolbarActionTypes } from '../../constants';\nimport { createPluginFactory } from '../../core';\nimport { CONTROL_KEY } from '../../utils';\nimport { TableEditor } from '../table/table.editor';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\n\nexport const PaintFormatEditor = {\n formatBrush(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n const obj = {};\n for (const key of MarkProps) {\n const k = contextService.paintFormatStatus.marks[key];\n obj[key] = k || null;\n }\n const block = TheQueries.anchorBlock(editor);\n if (block && Range.isCollapsed(editor.selection)) {\n // TODO:: 在撤销时有bug, 临时使用withoutSaving处理\n HistoryEditor.withoutSaving(editor, () => {\n const path = TheEditor.findPath(editor, block);\n TheTransforms.setMarks(editor, obj, path);\n });\n } else {\n TheTransforms.setMarks(editor, obj);\n }\n PaintFormatEditor.cancelFormatBrushStatus(editor);\n },\n isActive(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n const res = contextService.paintFormatStatus.isActive;\n return res;\n },\n enableFormatBrush(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n if (contextService.paintFormatStatus.isActive) {\n return PaintFormatEditor.cancelFormatBrushStatus(editor);\n }\n contextService.paintFormatStatus = {\n isActive: true,\n marks: TheQueries.getSelectionMarks(editor)\n };\n const element = EDITOR_TO_ELEMENT.get(editor);\n element.classList.add('pointer-paint');\n contextService.onMouseUp$\n .pipe(\n skip(1),\n filter(event => element.contains(event.target as Element)),\n take(1)\n )\n .subscribe((event: MouseEvent) => {\n if (contextService.paintFormatStatus.isActive) {\n PaintFormatEditor.formatBrush(editor);\n }\n });\n editor.onChange();\n },\n cancelFormatBrushStatus(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n contextService.paintFormatStatus = {\n isActive: false,\n marks: {}\n };\n const element = EDITOR_TO_ELEMENT.get(editor);\n element.classList.remove('pointer-paint');\n editor.onChange();\n }\n};\n\nexport const createPaintFormatPlugin = createPluginFactory({\n key: PluginKeys.paintFormat,\n toolbarItems: [\n {\n key: ToolbarActionTypes.undo,\n icon: 'undo',\n name: '撤销',\n shortcutKey: `${CONTROL_KEY}+Z`,\n execute: (editor: TheEditor) => editor.undo()\n },\n {\n key: ToolbarActionTypes.redo,\n icon: 'redo',\n name: '重做',\n shortcutKey: `${CONTROL_KEY}+Shift+Z`,\n execute: (editor: TheEditor) => editor.redo()\n },\n {\n key: ToolbarActionTypes.paintformat,\n icon: 'paintformat',\n name: '格式刷',\n execute: PaintFormatEditor.enableFormatBrush,\n active: PaintFormatEditor.isActive\n },\n {\n key: ToolbarActionTypes.clean,\n icon: 'clean',\n name: '清除格式',\n execute: (editor: TheEditor) => {\n const { selection } = editor;\n if (!selection) {\n return;\n }\n\n if (TableEditor.clearMark(editor)) {\n return;\n }\n\n if (Range.isCollapsed(selection)) {\n const marks = Editor.marks(editor);\n for (const key of Object.keys(marks)) {\n Editor.removeMark(editor, key);\n }\n } else {\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\n MarkProps.forEach(key => {\n unsetMarks[key] = null;\n });\n TheTransforms.setMarks(editor, unsetMarks);\n }\n }\n }\n ]\n});\n","import { Editor, Node, Text, Transforms } from 'slate';\nimport { Colors, ColorType, SpecialBackgroundColor, SpecialTextColor } from '../../constants/color-select';\nimport { MarkTypes } from '../../constants/node-types';\nimport { TheColorSelectService } from '../../services/color-select.service';\nimport { TableEditor } from '../table/table.editor';\n\nexport const ColorEditor = {\n getActiveColor(editor: Editor, type: MarkTypes.color | MarkTypes.backgroundColor): string {\n if (!editor?.selection) {\n return;\n }\n const node = Node.get(editor, editor.selection?.anchor.path);\n if (!Text.isText(node)) {\n return undefined;\n }\n const marks = Editor.marks(editor);\n return marks && marks[type];\n },\n setColor(editor: Editor, color: ColorType, type: MarkTypes.color | MarkTypes.backgroundColor) {\n if (TableEditor.toggleMark(editor, !color, type, color)) {\n return;\n }\n if (color) {\n Editor.addMark(editor, type, color);\n } else {\n Editor.removeMark(editor, type);\n }\n },\n selectColor(editor: Editor, type: MarkTypes.color | MarkTypes.backgroundColor) {\n const rangeRef = Editor.rangeRef(editor, editor.selection);\n const colorSelectService = editor.injector.get(TheColorSelectService);\n const element = (event.target as HTMLElement).closest('.thy-icon-nav-link');\n colorSelectService.toggleColorSelect(\n element as HTMLElement,\n ColorEditor.getActiveColor(editor, type),\n Colors,\n {\n showCustom: true,\n perRowColorNumbers: 8,\n rowOptions: { 2: '#aaa' },\n specialColor: type === MarkTypes.color ? SpecialTextColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n Transforms.select(editor, rangeRef.current);\n ColorEditor.setColor(editor, newColor, type);\n },\n 'bottomLeft',\n 0\n );\n }\n};\n","import { Component } from '@angular/core';\nimport { Transforms } from 'slate';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ColorEditor } from './color.editor';\nimport { Colors, ColorType, SpecialBackgroundColor, SpecialTextColor } from '../../constants/color-select';\nimport { MarkTypes } from '../../constants/node-types';\nimport { TheColorSelectComponent } from '../../components/color-select/color-select.component';\nimport { TheBaseToolbarItem } from '../../core/toolbar-item/base-toolbar-item';\n\n@Component({\n selector: 'the-color-toolbar-item',\n template: `\n <a\n class=\"link-width-down\"\n thyIconNavLink\n [ngStyle]=\"{\n width: toolbarItem.key === 'color' ? '42px' : 'auto'\n }\"\n [thyTooltip]=\"toolbarItem.name\"\n [thyIconNavLinkActive]=\"active\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n >\n <thy-icon [thyIconName]=\"toolbarItem.icon\" thyIconType=\"twotone\" [thyTwotoneColor]=\"active\"></thy-icon>\n <thy-icon\n [ngClass]=\"{\n 'link-down-icon': true,\n 'font-size-sm': true,\n 'text-desc': true\n }\"\n thyIconName=\"caret-down\"\n ></thy-icon>\n </a>\n `,\n host: {\n class: 'the-toolbar-item'\n }\n})\nexport class TheColorToolbarItemComponent extends TheBaseToolbarItem {\n colorSelectRef: ThyPopoverRef<TheColorSelectComponent>;\n\n get isOpenColorSelect() {\n return this.colorSelectRef && this.colorSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover) {\n super();\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n if (this.editor?.disabled || this.disabled) {\n return;\n }\n const type = this.toolbarItem.key as MarkTypes.color & MarkTypes.backgroundColor;\n this.toggleColorSelect(event, type);\n }\n\n toggleColorSelect(event: MouseEvent, type: MarkTypes.color | MarkTypes.backgroundColor) {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n return;\n }\n this.colorSelectRef = this.thyPopover.open(TheColorSelectComponent, {\n initialState: {\n colors: Colors,\n selectedColor: ColorEditor.getActiveColor(this.editor, type),\n option: {\n showCustom: true,\n perRowColorNumbers: 8,\n rowOptions: { 2: '#aaa' },\n specialColor: type === MarkTypes.color ? SpecialTextColor : SpecialBackgroundColor\n },\n selectAction: (color: ColorType) => {\n Transforms.select(this.editor, this.editor.selection);\n ColorEditor.setColor(this.editor, color, type);\n }\n },\n origin: event.currentTarget as HTMLElement,\n backdropClosable: false,\n placement: 'bottomLeft',\n offset: 10,\n minWidth: 0,\n hasBackdrop: false,\n insideClosable: false,\n panelClass: 'color-select-container'\n });\n return this.colorSelectRef;\n }\n\n close() {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n }\n}\n","import { createPluginFactory } from '../../core';\nimport { DISABLED_OPERATE_TYPES, ElementKinds, MarkTypes } from '../../constants';\nimport { PluginKeys } from '../../interfaces';\nimport { ColorEditor } from './color.editor';\nimport { TheColorToolbarItemComponent } from './toolbar-item.component';\n\nexport const createColorPlugin = createPluginFactory({\n key: PluginKeys.color,\n toolbarItems: [\n {\n key: MarkTypes.color,\n icon: 'color-tt',\n name: '字体颜色',\n iconComponent: TheColorToolbarItemComponent,\n active: editor => ColorEditor.getActiveColor(editor, MarkTypes.color)\n },\n {\n key: MarkTypes.backgroundColor,\n icon: 'background-tt',\n name: '背景颜色',\n iconComponent: TheColorToolbarItemComponent,\n active: editor => ColorEditor.getActiveColor(editor, MarkTypes.backgroundColor)\n }\n ],\n options: {\n disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]\n }\n});\n","import * as Types from '../types';\nimport { createTheHistoryPlugin } from './common/history.plugin';\nimport { createDeserializeMdPlugin } from './deserializers/deserialize-md.plugin';\nimport { createAutoInsertDataPlugin } from './common/auto-insert-data.';\nimport { createRemoveEmptyPlugin } from './common/remove-empty.plugin';\nimport { createResetTypePlugin } from './common/reset-type.plugin';\nimport { createImagePlugin } from './image/image.plugin';\nimport { createListPlugin } from './list/list.plugin';\nimport { createTodoItemPlugin } from './todo-item/todo-item.plugin';\nimport { createHrPlugin } from './hr/hr.plugin';\nimport { createAlignPlugin } from './align/align.plugin';\nimport { createHeadingPlugin } from './heading/heading.plugin';\nimport { createMarkPlugin } from './mark/mark.plugin';\nimport { createNodeIDPlugin } from './node-id/node-id.plugin';\nimport { createAutoFormatPlugin } from './autoformat/autoformat.plugin';\nimport { createTransformsPlugin } from './common/transforms.plugin';\nimport { createTrailingNodePlugin } from './normalizers/trailing-node.plugin';\nimport { createBlockCardPlugin } from './common/block-card.plugin';\nimport { createMoveSelectionPlugin } from './common/move-selection.plugin';\nimport { createGetFragmentPlugin } from './common/get-fragment.plugin';\nimport { createBlockquotePlugin } from './blockquote/blockquote.plugin';\nimport { createRemoveVoidPlugin } from './common/remove-void.plugin';\nimport { createCodePlugin } from './code/code.plugin';\nimport { createLinkPlugin } from './link/link.plugin';\nimport { createTablePlugin } from './table/table.plugin';\nimport { createInsertParagraphNodesPlugin } from './normalizers/insert-paragraph-nodes';\nimport { createDeserializeHMTLPlugin } from './deserializers/deserialize-html.plugin';\nimport { createQuickInsertPlugin } from './quick-insert/quick-insert.plugin';\nimport { createSoftBreakPlugin } from './soft-break/soft-break.plugin';\nimport { createInlineCodePlugin } from './inline-code/inline-code.plugin';\nimport { createIndentPlugin } from './indent/indent.plugin';\nimport { createFontSizePlugin } from './font-size/font-size.editor';\nimport { createVerticalAlignPlugin } from './vertical-align/vertical-align.editor';\nimport { createPaintFormatPlugin } from './paint-format/paint-format.editor';\nimport { createColorPlugin } from './color/color.plugin';\n\nexport const internalPlugins = () => [\n createTheHistoryPlugin(),\n createAutoInsertDataPlugin(),\n createRemoveEmptyPlugin(),\n createRemoveVoidPlugin(),\n createBlockCardPlugin(), // should in the front of list、resettype、todo、deserialize-html\n createResetTypePlugin(),\n createIndentPlugin(), // should in the front of list\n createListPlugin(),\n createLinkPlugin(),\n createTablePlugin(),\n createTodoItemPlugin(),\n createHrPlugin(),\n createAlignPlugin(),\n createCodePlugin(),\n createHeadingPlugin(),\n createVerticalAlignPlugin(),\n createMarkPlugin(),\n createFontSizePlugin(),\n createColorPlugin(),\n createSoftBreakPlugin(),\n createBlockquotePlugin(),\n createNodeIDPlugin(),\n createAutoFormatPlugin(),\n createPaintFormatPlugin(),\n createTransformsPlugin(),\n createTrailingNodePlugin(),\n createMoveSelectionPlugin(),\n createInsertParagraphNodesPlugin(),\n createGetFragmentPlugin(),\n createImagePlugin(), // must be before withDeserializeHMTL\n createDeserializeHMTLPlugin(),\n createDeserializeMdPlugin(),\n createQuickInsertPlugin(), // must be before plugins that include onkeydown events\n createInlineCodePlugin()\n];\n","import isHotkey from 'is-hotkey';\nimport { Editor } from 'slate';\nimport { InlineCodeEditor } from '../plugins/inline-code/inline-code.editor';\nimport { ElementKinds, MarkTypes } from '../constants/node-types';\nimport { MarkEditor } from '../plugins/mark/mark.editor';\n\nconst HOTKEYS = {\n 'mod+b': MarkTypes.bold,\n 'mod+i': MarkTypes.italic,\n 'mod+u': MarkTypes.underline,\n 'mod+e': ElementKinds.inlineCode\n};\nexport const markShortcuts = (editor: Editor, event: KeyboardEvent) => {\n for (const hotkey in HOTKEYS) {\n if (isHotkey(hotkey, event)) {\n event.preventDefault();\n const mark = HOTKEYS[hotkey];\n if (mark === ElementKinds.inlineCode) {\n InlineCodeEditor.toggleInlineCode(editor);\n } else {\n MarkEditor.toggleMark(editor, mark);\n }\n }\n }\n};\n","import { Editor } from 'slate';\r\nimport { markShortcuts } from './mark';\r\n\r\nexport const shortcuts = (editor: Editor, event: KeyboardEvent) => {\r\n markShortcuts(editor, event);\r\n};\r\n","import {\n Component,\n Input,\n OnInit,\n ViewChild,\n ViewContainerRef,\n ComponentFactoryResolver,\n OnChanges,\n SimpleChanges,\n ComponentRef,\n ElementRef,\n OnDestroy,\n NgZone,\n Inject,\n TemplateRef,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Editor } from 'slate';\nimport { ComponentType } from 'slate-angular';\nimport { ToolbarAlignment, ToolbarItem, ToolbarItemsComposeReturn, ToolbarItemType, ToolbarKey } from '../../interfaces/toolbar';\nimport { TheToolbarGroupToken, ToolbarMoreGroup } from '../../constants/toolbar';\nimport { ElementKinds, MarkTypes, ToolbarActionTypes } from '../../constants/node-types';\nimport { TheToolbarItemComponent } from '../toolbar-item/toolbar-item.component';\nimport { NavSplitLineComponent } from '../nav-split-line/nav-split-line.component';\nimport { TheToolbarDropdownComponent } from '../toolbar-dropdown/toolbar-dropdown.component';\nimport type { TheToolbarGroupComponent } from '../toolbar-group/toolbar-group.component';\nimport { TheBaseToolbarItem, TheBaseToolbarDropdown } from '../../core/toolbar-item/base-toolbar-item';\n\n@Component({\n selector: 'the-toolbar',\n templateUrl: 'toolbar.component.html',\n host: {\n class: 'the-toolbar-container'\n }\n})\nexport class TheToolbarComponent implements OnInit, OnChanges, OnDestroy {\n @Input() editor: Editor;\n\n @Input() toolbarItems: ToolbarItem[] = [];\n\n @Input() align: ToolbarAlignment;\n\n @Input() containerClass: string[] = [];\n\n @Input() isMore = true;\n\n @Input() afterTemplate: TemplateRef<any>;\n\n @ViewChild('toolbarContainer', { read: ViewContainerRef, static: true }) toolbarContainer: ViewContainerRef;\n\n components: Map<string, ComponentRef<any>> = new Map<string, ComponentRef<any>>();\n moreGroupMenu = ToolbarMoreGroup;\n resizeObserver;\n elementWidth = 0;\n\n constructor(\n private cfr: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef,\n private ngZone: NgZone,\n @Inject(TheToolbarGroupToken) private toolbarGroupComponent: ComponentType<TheToolbarGroupComponent>\n ) { }\n\n ngOnInit(): void {\n this.setToolbarClass();\n this.renderToolbarView();\n this.selectionChange(this.editor);\n\n if (this.isMore) {\n this.resizeElement();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const toolbarItems = changes.toolbarItems;\n if (toolbarItems && !toolbarItems.firstChange) {\n this.renderToolbarView();\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n public setToolbarClass() {\n if (this.editor && !!this.containerClass.length) {\n this.elementRef.nativeElement.classList.add(...this.containerClass);\n }\n }\n\n private resizeElement() {\n const editableElement = this.elementRef.nativeElement;\n // @ts-ignore\n this.resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n const { width } = entry.contentRect;\n if (this.isMore && this.elementWidth !== width) {\n this.elementWidth = width;\n this.renderToolbarView();\n }\n }\n });\n this.resizeObserver.observe(editableElement);\n }\n\n public selectionChange(editor: Editor) {\n const toolbarItems = [...this.toolbarItems, this.moreGroupMenu];\n for (const item of toolbarItems) {\n if (item.key !== ToolbarActionTypes.split) {\n const itemComponent = this.components.get(item.key);\n if (itemComponent && itemComponent.instance.selectionChange) {\n itemComponent.instance.selectionChange(editor);\n }\n }\n }\n }\n\n public renderToolbarView(): void {\n this.components.clear();\n this.toolbarContainer.clear();\n const toolbarItems = this.toolbarItemsCompose();\n const { items, group } = toolbarItems;\n\n this.ngZone.run(() => {\n for (const item of items) {\n if (item.key === ToolbarActionTypes.split) {\n this.createToolbarSplit();\n continue;\n }\n this.createToolbarItem(item);\n }\n this.createMoreGroup(group);\n });\n this.cdr.markForCheck();\n }\n\n /**\n * calculation display toolbar and more grouped toolbars\n *\n *\t┌──────────────────────────────────────── GoolbarToolbarView ───────────────────────────────────┐\n *\t| ┌─────────────────────────────────────── #children ─────────────────────────────────────────┐ |\n *\t| | ┌─────── #itemsView ────────┐ ┌──────────────────────┐ ┌── #groupedItemsDropdown ───┐ | |\n *\t| | | #ungroupedItems | | ToolbarSeparatorView | | #groupedItems | | |\n *\t| | └──────────────────────────-┘ └──────────────────────┘ └────────────────────────────┘ | |\n *\t| | \\---------- only when toolbar items overflow --------/ | |\n *\t| └───────────────────────────────────────────────────────────────────────────────────────────┘ |\n *\t└───────────────────────────────────────────────────────────────────────────────────────────────┘\n * split width: 6px\n * item width: default item: 35px; dropdown item: 50px\n * set aside 50px\n */\n private toolbarItemsCompose(): ToolbarItemsComposeReturn {\n let elementWidth = this.isMore ? this.elementWidth : null;\n const maxItemWidth = 50;\n const defaultItemWidth = 35;\n const splitWidth = 6;\n // special type\n const headingWidth = 70;\n const items: ToolbarItem[] = [];\n const group: ToolbarItem[] = [];\n\n for (const item of this.toolbarItems) {\n if (!this.isMore) {\n items.push(item);\n continue;\n }\n\n // not enough free space\n const allowRender = elementWidth && elementWidth > maxItemWidth;\n if (allowRender && item.key === ToolbarActionTypes.split) {\n items.push(item);\n elementWidth -= splitWidth;\n continue;\n }\n\n if (allowRender) {\n items.push(item);\n } else {\n group.push(item);\n }\n\n if (item.key === ElementKinds.headingList) {\n elementWidth -= headingWidth;\n continue;\n }\n const isCustomComponent = item?.type === ToolbarItemType.dropdown || !!item?.iconComponent;\n elementWidth -= isCustomComponent ? maxItemWidth : defaultItemWidth;\n }\n\n return {\n items: this.pureToolbarItems(items),\n group\n };\n }\n\n /**\n * externally designated more group\n */\n private toolbarItemsAndMoreCompose() {\n const items = [];\n const group = [];\n\n for (const item of this.toolbarItems) {\n if (item.key === ToolbarActionTypes.split) {\n items.push(item);\n continue;\n }\n items.push(item);\n }\n\n return {\n items: this.pureToolbarItems(items),\n group\n };\n }\n\n /**\n * filter adjacent repeated dividers\n * @param {ToolbarItem[]} items\n * @returns\n * @memberof TheToolbarComponent\n */\n pureToolbarItems(items: ToolbarItem[]) {\n if (!Array.isArray(items)) {\n return [];\n }\n return items.filter((a, i) => {\n if (i > 0 && items[i - 1].key !== ToolbarActionTypes.split) {\n return true;\n }\n return a.key !== ToolbarActionTypes.split;\n });\n }\n\n private createToolbarItem(item: ToolbarItem) {\n const { iconComponent, type, dropdownMode, dropdownItemKey, includes, ...args } = item;\n const viewComponent = this.viewComponentType(type);\n const factory = this.cfr.resolveComponentFactory(iconComponent ? iconComponent : viewComponent);\n const compRef = this.toolbarContainer.createComponent<TheBaseToolbarItem>(factory);\n\n compRef.instance.editor = this.editor;\n compRef.instance.toolbarItem = item;\n this.components.set(item.key, compRef);\n if (item.type === ToolbarItemType.dropdown) {\n const dropdownRef = compRef as unknown as ComponentRef<TheBaseToolbarDropdown>;\n dropdownRef.instance.dropdownItemKey = item.dropdownItemKey;\n dropdownRef.instance.menus = includes as ToolbarItem[];\n dropdownRef.instance.mode = dropdownMode;\n }\n }\n\n private createToolbarSplit() {\n const navSplitLineFactory = this.cfr.resolveComponentFactory(NavSplitLineComponent);\n this.toolbarContainer.createComponent(navSplitLineFactory);\n }\n\n private createMoreGroup(group: ToolbarItem[]) {\n if (group.length > 0) {\n const moreGroupFactory = this.cfr.resolveComponentFactory(this.toolbarGroupComponent);\n const compRef = this.toolbarContainer.createComponent(moreGroupFactory);\n compRef.instance.editor = this.editor;\n compRef.instance.menus = group;\n compRef.instance.item = this.moreGroupMenu;\n this.components.set(this.moreGroupMenu.key, compRef);\n }\n }\n\n private viewComponentType(type: ToolbarItemType) {\n if (type === ToolbarItemType.default) {\n return TheToolbarItemComponent;\n }\n if (type === ToolbarItemType.dropdown) {\n return TheToolbarDropdownComponent;\n }\n return TheToolbarItemComponent;\n }\n}\n","<thy-icon-nav [style.justifyContent]=\"align\">\r\n <ng-container #toolbarContainer></ng-container>\r\n <ng-content></ng-content>\r\n <ng-template *ngIf=\"afterTemplate\" [ngTemplateOutlet]=\"afterTemplate\"></ng-template>\r\n</thy-icon-nav>\r\n","import {\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n Input,\n ElementRef,\n NgZone,\n ChangeDetectionStrategy,\n ViewChild\n} from '@angular/core';\nimport { ScrollDispatcher } from '@angular/cdk/overlay';\nimport { merge, fromEvent, Subject } from 'rxjs';\nimport { takeUntil, filter, debounceTime } from 'rxjs/operators';\nimport { Range as slateRange, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { THE_INLINE_TOOLBAR_TYPES } from '../../constants';\nimport { ToolbarItem } from '../../interfaces';\nimport { TheToolbarComponent } from '../toolbar/toolbar.component';\nimport { TheContextService } from '../../services/context.service';\n\n@Component({\n selector: 'the-inline-toolbar',\n template: `<the-toolbar\n #inlineToolbar\n class=\"the-inline-toolbar\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarItems\"\n [isMore]=\"false\"\n ></the-toolbar> `,\n host: {\n '[class.hide]': 'toolbarItems.length === 0'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheInlineToolbarComponent implements OnInit, OnDestroy {\n @Input() editor: Editor;\n @Input() toolbarItems: ToolbarItem[];\n @ViewChild('inlineToolbar') inlineToolbar: TheToolbarComponent;\n\n destroy$ = new Subject();\n\n constructor(\n private elementRef: ElementRef<any>,\n private scrollDispatcher: ScrollDispatcher,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone,\n private contextService: TheContextService\n ) {}\n\n ngOnInit() {\n this.scrollDispatcher\n .scrolled()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateInlineToolbar();\n this.cdr.detectChanges();\n });\n this.ngZone.runOutsideAngular(() => {\n merge(\n fromEvent(document, 'mouseup').pipe(filter((e: MouseEvent) => e.button !== 2)),\n fromEvent(document, 'keyup').pipe(filter((e: KeyboardEvent) => !e.shiftKey))\n )\n .pipe(debounceTime(200), takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateInlineToolbar();\n this.inlineToolbar?.selectionChange(this.editor);\n this.cdr.detectChanges();\n });\n });\n }\n\n updateInlineToolbar() {\n const inlineToolbar = this.elementRef.nativeElement.firstElementChild;\n\n if (!this.editor.selection) {\n inlineToolbar.removeAttribute('style');\n return;\n }\n const anchorBlock = TheQueries.anchorBlock(this.editor);\n if (!inlineToolbar || !anchorBlock) {\n return;\n }\n const { editor } = this;\n const { selection } = editor;\n\n if (\n !selection ||\n !AngularEditor.isFocused(editor) ||\n slateRange.isCollapsed(selection) ||\n Editor.string(editor, selection) === ''\n ) {\n inlineToolbar.removeAttribute('style');\n return;\n }\n\n if (!THE_INLINE_TOOLBAR_TYPES.includes(anchorBlock.type)) {\n return;\n }\n const native = window.getSelection();\n if (native.type !== 'None') {\n const range = native.getRangeAt(0);\n this.updatePosition(inlineToolbar, range);\n }\n }\n\n updatePosition(toolbarElement: HTMLElement, range) {\n let boundary = range.getBoundingClientRect();\n\n if (!boundary || (boundary.height === 0 && boundary.width === 0 && range.startContainer === range.endContainer)) {\n if (range.startContainer.nodeType === 1 && range.startContainer.querySelector('img')) {\n boundary = range.startContainer.querySelector('img').getBoundingClientRect();\n } else {\n boundary = range.startContainer.getBoundingClientRect();\n }\n }\n const editableElement = this.contextService.getEditableElement();\n const editableRect = editableElement.getBoundingClientRect();\n const toolbarHeight = toolbarElement.offsetHeight;\n const toolbarWidth = toolbarElement.offsetWidth;\n const halfOffsetWidth = toolbarWidth / 2;\n const defaultLeft = -halfOffsetWidth;\n const offsetLeft = boundary.left - editableRect.left;\n const isTopLeft = offsetLeft - 30 > halfOffsetWidth; // 30: editable padding left\n const isTopRight = editableRect.width - offsetLeft - boundary.width / 2 < halfOffsetWidth;\n const positions: any = {};\n\n positions.top = boundary.top - toolbarHeight;\n positions.right = 'initial';\n positions.left = boundary.left;\n\n if (isTopLeft) {\n positions.left = boundary.left + boundary.width / 2 + defaultLeft;\n }\n\n if (isTopRight) {\n positions.left = boundary.right - toolbarWidth;\n }\n\n for (let key of Object.keys(positions)) {\n toolbarElement.style[key] = positions[key] + (isNaN(positions[key]) ? '' : 'px');\n }\n toolbarElement.style.opacity = '1';\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Component, ElementRef, Input, HostListener, Renderer2, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { Editor, Node } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { MarkTypes } from '../../../constants/node-types';\nimport { isCleanEmptyParagraph } from '../../../utils/is-clean-empty-paragraph';\nimport { QuickInsertEditor } from '../quick-insert.editor';\nimport * as TheQueries from '../../../queries';\nimport { ToolbarItem } from '../../../interfaces/toolbar';\n\n@Component({\n selector: '[theQuickInsert]',\n templateUrl: './quick-insert.component.html',\n host: {\n class: 'the-quick-insert',\n '[class.hide]': 'isHide'\n }\n})\nexport class TheQuickInsertComponent {\n @Input() editor: Editor;\n @Input() quickToolbarItems: ToolbarItem[];\n @Input() isVisible = false;\n\n isHide = true;\n defaultIconName = 'plus-circle-thin';\n iconNameFill = 'plus-circle-thin-fill';\n displayIconName = this.defaultIconName;\n\n @ViewChild('iconElement', { read: ElementRef, static: false })\n iconElement: ElementRef<any>;\n\n @HostListener('mousedown', ['$event'])\n handleMousedownNativeElement(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n constructor(private renderer: Renderer2, private elementRef: ElementRef, private cdr: ChangeDetectorRef) {}\n\n public checkStatus() {\n const { editor } = this;\n if (this.isVisible && isCleanEmptyParagraph(editor) && !this.hasExcludeAttribute() && !this.isRichMediaScope()) {\n const block = Node.ancestor(editor, [editor?.selection?.anchor.path[0]]);\n const rootNode: HTMLElement = AngularEditor.toDOMNode(editor, block);\n this.updatePosition(rootNode.offsetLeft, rootNode.offsetTop);\n return;\n }\n this.isHide = true;\n }\n\n private isRichMediaScope() {\n const { editor } = this;\n if (editor?.selection) {\n const block = Node.ancestor(editor, [editor?.selection?.anchor.path[0]]);\n const rootElement = AngularEditor.toDOMNode(editor, block);\n const leafElement = rootElement.querySelector('[data-slate-leaf=\"true\"]');\n const rootElementRect = rootElement.getBoundingClientRect();\n const leafElementRect = leafElement.getBoundingClientRect();\n return leafElementRect?.x !== rootElementRect?.x;\n }\n return false;\n }\n\n private hasExcludeAttribute() {\n const marks = TheQueries.getSelectionMarks(this.editor);\n const fontSizeMark: number = marks[MarkTypes.fontSize];\n\n return fontSizeMark;\n }\n\n private updatePosition(left: number, top?: number) {\n this.isHide = false;\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${top}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${left}px`);\n }\n\n mouseEnter(event: MouseEvent) {\n this.displayIconName = this.iconNameFill;\n this.cdr.markForCheck();\n }\n\n mouseLeave(event: MouseEvent) {\n this.displayIconName = this.defaultIconName;\n this.cdr.markForCheck();\n }\n\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n if (QuickInsertEditor.isOpenedToolbar(this.editor)) {\n QuickInsertEditor.closeQuickInsertToolbar(this.editor);\n return;\n }\n QuickInsertEditor.openQuickInsertToolbar(this.editor, this.quickToolbarItems, this.iconElement.nativeElement);\n }\n}\n","<thy-icon\n #iconElement\n [thyIconName]=\"displayIconName\"\n class=\"quick-insert-icon text-desc font-size-xlg\"\n (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousedown)=\"handleClick($event)\"\n></thy-icon>\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Element } from 'slate';\r\nimport { Alignment } from './constants/node-types';\r\n\r\n@Pipe({\r\n name: 'elementStyle'\r\n})\r\nexport class ElementStylePipe implements PipeTransform {\r\n transform(element: Element, align?: Alignment) {\r\n const style: { [key: string]: string } = {};\r\n if (element.align || align) {\r\n style.textAlign = (element.align as string) || align || Alignment.left;\r\n }\r\n if (element.textIndent) {\r\n style.textIndent = element.textIndent + 'em';\r\n }\r\n return style;\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'elementClass'\r\n})\r\nexport class ElementClassPipe implements PipeTransform {\r\n transform(element: Element) {\r\n let classStr = '';\r\n const prefix = 'indent';\r\n if (element.textIndent) {\r\n classStr += `${prefix}-${element.textIndent}`;\r\n }\r\n return classStr;\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewChild, TemplateRef } from '@angular/core';\r\nimport { Element } from 'slate';\r\nimport { ElementKinds } from '../../constants';\r\n\r\n@Component({\r\n selector: 'the-template,[theTemplate]',\r\n templateUrl: 'template.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TheTemplateComponent {\r\n @ViewChild('paragraph', { read: TemplateRef, static: true })\r\n paragraphTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('headingOne', { read: TemplateRef, static: true })\r\n headingOneTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('headingTwo', { read: TemplateRef, static: true })\r\n headingTwoTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('headingThree', { read: TemplateRef, static: true })\r\n headingThreeTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('headingFour', { read: TemplateRef, static: true })\r\n headingFourTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('headingFive', { read: TemplateRef, static: true })\r\n headingFiveTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('headingSix', { read: TemplateRef, static: true })\r\n headingSixTemplate: TemplateRef<any>;\r\n\r\n public renderElement = (element: Element) => {\r\n if (element.type === ElementKinds.default) {\r\n return this.paragraphTemplate;\r\n }\r\n if (element.type === ElementKinds.heading_1) {\r\n return this.headingOneTemplate;\r\n }\r\n if (element.type === ElementKinds.heading_2) {\r\n return this.headingTwoTemplate;\r\n }\r\n if (element.type === ElementKinds.heading_3) {\r\n return this.headingThreeTemplate;\r\n }\r\n if (element.type === ElementKinds.heading_4) {\r\n return this.headingFourTemplate;\r\n }\r\n if (element.type === ElementKinds.heading_5) {\r\n return this.headingFiveTemplate;\r\n }\r\n if (element.type === ElementKinds.heading_6) {\r\n return this.headingSixTemplate;\r\n }\r\n return null;\r\n };\r\n}\r\n","<ng-template #paragraph let-context=\"context\" let-viewContext=\"viewContext\">\r\n <div theDefaultElement [context]=\"context\" [viewContext]=\"viewContext\" [ngStyle]=\"context.element | elementStyle\"></div>\r\n</ng-template>\r\n<ng-template #headingOne let-context=\"context\" let-viewContext=\"viewContext\">\r\n <h1\r\n theDefaultElement\r\n [context]=\"context\"\r\n [viewContext]=\"viewContext\"\r\n [attr.id]=\"context.element.key\"\r\n [ngStyle]=\"context.element | elementStyle\"\r\n ></h1>\r\n</ng-template>\r\n<ng-template #headingTwo let-context=\"context\" let-viewContext=\"viewContext\">\r\n <h2\r\n theDefaultElement\r\n [context]=\"context\"\r\n [viewContext]=\"viewContext\"\r\n [attr.id]=\"context.element.key\"\r\n [ngStyle]=\"context.element | elementStyle\"\r\n ></h2>\r\n</ng-template>\r\n<ng-template #headingThree let-context=\"context\" let-viewContext=\"viewContext\">\r\n <h3\r\n theDefaultElement\r\n [context]=\"context\"\r\n [viewContext]=\"viewContext\"\r\n [attr.id]=\"context.element.key\"\r\n [ngStyle]=\"context.element | elementStyle\"\r\n ></h3>\r\n</ng-template>\r\n<ng-template #headingFour let-context=\"context\" let-viewContext=\"viewContext\">\r\n <h4\r\n theDefaultElement\r\n [context]=\"context\"\r\n [viewContext]=\"viewContext\"\r\n [attr.id]=\"context.element.key\"\r\n [ngStyle]=\"context.element | elementStyle\"\r\n ></h4>\r\n</ng-template>\r\n<ng-template #headingFive let-context=\"context\" let-viewContext=\"viewContext\">\r\n <h5\r\n theDefaultElement\r\n [context]=\"context\"\r\n [viewContext]=\"viewContext\"\r\n [attr.id]=\"context.element.key\"\r\n [ngStyle]=\"context.element | elementStyle\"\r\n ></h5>\r\n</ng-template>\r\n<ng-template #headingSix let-context=\"context\" let-viewContext=\"viewContext\">\r\n <h6\r\n theDefaultElement\r\n [context]=\"context\"\r\n [viewContext]=\"viewContext\"\r\n [attr.id]=\"context.element.key\"\r\n [ngStyle]=\"context.element | elementStyle\"\r\n ></h6>\r\n</ng-template>\r\n","import {\n OnInit,\n OnDestroy,\n Component,\n Input,\n ViewContainerRef,\n ViewChild,\n ElementRef,\n forwardRef,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n NgZone,\n ChangeDetectionStrategy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { mixinUnsubscribe, MixinBase } from 'ngx-tethys/core';\nimport isHotkey from 'is-hotkey';\nimport { Editor, Text, Transforms, createEditor, Element, Descendant, Range, Path, NodeEntry } from 'slate';\nimport { withHistory } from 'slate-history';\nimport { AngularEditor, SlateError, withAngular } from 'slate-angular';\nimport { TheOptions, DomEventDataInfo, TheEditor, TheDataMode, ToolbarEntity } from './interfaces';\nimport { MarkTypes, CLIPBOARD_FORMAT_KEY, DEFAULT_SCROLL_CONTAINER } from './constants';\nimport { TheTemplateComponent } from './components/template/template.component';\nimport { TheToolbarComponent } from './components/toolbar/toolbar.component';\nimport { TheTextComponent } from './components/text/text.component';\nimport { TheContextService } from './services/context.service';\nimport { TheColorSelectService } from './services/color-select.service';\nimport {\n autoFocus,\n autoScrollViewHandle,\n dataDeserialize,\n dataSerializing,\n idCreator,\n setEditorUUID,\n coercePixelsFromCssValue\n} from './utils';\nimport { _ } from './utils/lodash';\nimport { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';\nimport { withTheia, createToolbar } from './core';\nimport { internalPlugins } from './plugins';\nimport { shortcuts } from './shortcuts';\nimport * as TheTransforms from './transforms';\nimport * as TheQueries from './queries';\nimport { ThePlugin } from './interfaces/plugins/plugins';\n\n@Component({\n selector: 'the-editor, theEditor',\n templateUrl: 'editor.component.html',\n providers: [\n TheContextService,\n TheColorSelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TheEditorComponent),\n multi: true\n }\n ],\n host: {\n class: 'the-editor',\n '[class.the-editor-readonly]': 'theOptions?.readonly'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheEditorComponent extends mixinUnsubscribe(MixinBase) implements OnInit, OnChanges, OnDestroy {\n @Input() theOptions: TheOptions;\n\n @Input() thePlugins: ThePlugin[] = [];\n\n @Input() theGlobalToolbar?: TheToolbarComponent;\n\n @Input() theDecorate: (editor: TheEditor, nodeEntry: NodeEntry) => Range[];\n\n @Input() theOnError?: (error: SlateError) => void;\n\n @Output() theOnSave: EventEmitter<Descendant[]> = new EventEmitter<Descendant[]>();\n\n @Output() theOnDOMEvent: EventEmitter<{ nativeEvent: Event; data?: DomEventDataInfo }> = new EventEmitter();\n\n @Output() theEditorCreated: EventEmitter<Editor> = new EventEmitter();\n\n @Output() theUploadingStatus: EventEmitter<boolean> = new EventEmitter(); // true 上传结束 false 上传中\n\n @ViewChild('templateInstance', { static: true })\n templateInstance: TheTemplateComponent;\n\n @ViewChild('globalToolbar')\n globalToolbarInstance: TheToolbarComponent;\n\n @ViewChild('quickInsert', { static: true })\n quickInsertInstance: TheQuickInsertComponent;\n\n toolbarEntity: ToolbarEntity;\n\n editor: TheEditor;\n\n editorValue: Descendant[];\n\n globalToolbarClass: string[];\n\n decorate: (nodeEntry: NodeEntry) => Range[];\n\n get theGlobalToolbarInstance(): TheToolbarComponent {\n return this.theGlobalToolbar ? this.theGlobalToolbar : this.globalToolbarInstance;\n }\n\n get maxHeight() {\n return this.theOptions?.maxHeight ? `${this.theOptions?.maxHeight}px` : null;\n }\n\n get quickToolbarItems() {\n return this.toolbarEntity?.quick;\n }\n\n autoScrollView = _.debounce(function (editor: Editor, scrollContainer: string) {\n return autoScrollViewHandle(editor, scrollContainer);\n }, 80);\n\n elementToHtml: WeakMap<Element, string> = new WeakMap();\n\n private onChangeCallback: (_: any) => void = () => {};\n\n private onTouchedCallback: () => void = () => {};\n\n constructor(\n private theContextService: TheContextService,\n private viewContainerRef: ViewContainerRef,\n private elementRef: ElementRef,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit() {\n this.initialize();\n this.theContextService.uploadingStatus$.subscribe(isUploading => {\n if (isUploading) {\n this.theUploadingStatus.emit(true);\n } else {\n if (this.theContextService.uploadingFiles.length === 0) {\n this.theUploadingStatus.emit(false);\n }\n }\n });\n this.onErrorHandler();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const options = changes.theOptions;\n\n if (options) {\n this.initializeOptions();\n }\n if (options && options.currentValue?.readonly !== options.previousValue?.readonly) {\n this.applyAutoFocus();\n }\n if (changes['theDecorate']) {\n this.generateDecorate();\n }\n if (this.editor?.selection && (options?.currentValue?.readonly || options?.currentValue?.disabled)) {\n Transforms.deselect(this.editor);\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n initialize() {\n const defaultPlugins = internalPlugins();\n const plugins = [...defaultPlugins, ...this.thePlugins];\n this.editor = withTheia(withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY)), plugins);\n this.generateDecorate();\n this.editor.disabled = this.theOptions?.disabled;\n this.editor.extraElementOptions = this.theOptions?.extraElementOptions;\n this.editor.options = this.theOptions;\n setEditorUUID(this.editor, idCreator());\n this.theContextService.initialize({\n theOptions: this.theOptions,\n nativeElement: this.elementRef.nativeElement,\n viewContainerRef: this.viewContainerRef\n });\n this.toolbarCalculate();\n setTimeout(() => {\n // You need to wait for the editor rendering to complete\n // before triggering the external toolbar assignment detection\n this.globalToolbarInit();\n this.theEditorCreated.emit(this.editor);\n this.applyAutoFocus();\n });\n }\n\n initializeOptions() {\n if (!this.theOptions) {\n this.theOptions = {\n readonly: false,\n mode: TheDataMode.html\n };\n }\n if (!this.theOptions.mode) {\n this.theOptions = {\n ...this.theOptions,\n mode: TheDataMode.html\n };\n }\n }\n\n applyAutoFocus() {\n if (!this.theOptions?.disabled && !this.theOptions?.readonly) {\n autoFocus(this.editor, this.theOptions?.autoFocus);\n }\n }\n\n toolbarCalculate() {\n const { globalToolbarClass, toolbarEntity } = createToolbar(this.editor, this?.theOptions?.toolbar);\n this.globalToolbarClass = globalToolbarClass;\n this.toolbarEntity = toolbarEntity;\n }\n\n globalToolbarInit() {\n if (this.theGlobalToolbar) {\n this.theGlobalToolbarInstance.editor = this.editor;\n this.theGlobalToolbarInstance.toolbarItems = this.toolbarEntity.global;\n this.theGlobalToolbarInstance.containerClass = this.globalToolbarClass;\n this.theGlobalToolbarInstance.align = this?.theOptions?.toolbar?.align;\n this.theGlobalToolbarInstance.setToolbarClass();\n this.theGlobalToolbarInstance.renderToolbarView();\n }\n }\n\n writeValue(value: string | Descendant[]) {\n const data = dataDeserialize(this.theOptions?.mode, value);\n // data-deserialize\n this.editorValue = data;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n valueChange(value: Descendant[]) {\n const isEditable = !this.theOptions?.readonly && !this.theOptions?.disabled;\n\n this.theGlobalToolbarInstance?.selectionChange(this.editor);\n\n // quick insert button\n if (isEditable) {\n this.quickInsertInstance?.checkStatus();\n }\n\n // auto scroll view\n const scrollContainer = this.theOptions?.scrollContainer;\n const maxHeight = this.theOptions?.maxHeight;\n if (isEditable && (scrollContainer || maxHeight)) {\n const container = maxHeight ? DEFAULT_SCROLL_CONTAINER : scrollContainer;\n this.autoScrollView(this.editor, container);\n }\n\n if (this.editorValue === value) {\n return;\n }\n this.editorValue = value;\n\n // serializing\n let newValue = this.serializingValue(value);\n this.onChangeCallback(newValue);\n }\n\n serializingValue(value: Descendant[]): string | Descendant[] {\n if (this.theOptions?.mode === TheDataMode.html) {\n let htmlValue = '';\n value.forEach((element: Element) => {\n let elementHtml = this.elementToHtml.get(element);\n if (elementHtml === undefined) {\n // serializing\n elementHtml = dataSerializing(this.theOptions?.mode, [element]) as string;\n htmlValue += elementHtml;\n this.elementToHtml.set(element, elementHtml);\n return;\n }\n htmlValue += elementHtml;\n });\n return htmlValue;\n }\n return value;\n }\n\n onErrorHandler() {\n this.editor.onError = (errorData: SlateError) => {\n if (this.theOnError) {\n this.theOnError(errorData);\n return;\n }\n if (errorData.nativeError) {\n console.error(errorData.nativeError);\n }\n };\n }\n\n renderElement = (element: Element) => {\n const template = this.templateInstance.renderElement(element);\n const component = this.editor.renderElement(element);\n return component ? component : template;\n };\n\n renderLeaf = (text: Text) => {\n const leaf = this.editor.renderLeaf(text);\n return leaf ? leaf : null;\n };\n\n renderText = (text: Text) => {\n for (const key in MarkTypes) {\n if (text[MarkTypes[key]]) {\n return TheTextComponent;\n }\n }\n if (text.text.length === 0) {\n return;\n }\n };\n\n generateDecorate() {\n this.decorate = (nodeEntry: NodeEntry) => {\n const decorations = [];\n\n if (this.theDecorate) {\n decorations.push(...this.theDecorate(this.editor, nodeEntry));\n }\n\n return decorations;\n };\n }\n\n onKeyDown = (event: KeyboardEvent) => {\n shortcuts(this.editor, event);\n this.theOnDOMEvent.emit({\n nativeEvent: event,\n data: {\n key: event.key\n }\n });\n if (isHotkey('mod+s', event)) {\n this.ngZone.run(() => {\n this.theOnSave.emit(this.editorValue);\n });\n event.preventDefault();\n return;\n }\n if (isHotkey('mod+a', event)) {\n this.handleSelectAll();\n }\n AngularEditor.onKeydown(this.editor, event);\n };\n\n mousedown(event: MouseEvent) {\n const editableElement = AngularEditor.toDOMNode(this.editor, this.editor);\n const rectEditable = editableElement.getBoundingClientRect();\n const absoluteElement = document.elementFromPoint(event.x, event.y);\n if (!editableElement.isEqualNode(absoluteElement)) {\n const blockCardElement = absoluteElement.querySelector('.slate-block-card');\n if (!blockCardElement) return;\n }\n let { paddingRight } = window.getComputedStyle(editableElement, null);\n const paddingRightPixels = coercePixelsFromCssValue(paddingRight);\n const fakeRightX = rectEditable.right - paddingRightPixels - 50;\n let relativeElement = document.elementFromPoint(fakeRightX, event.y);\n let relativeBlockCardElement = relativeElement.closest('.slate-block-card');\n if (relativeBlockCardElement) {\n const centerX = rectEditable.x + rectEditable.width / 2;\n const blockCardEntry = AngularEditor.toSlateCardEntry(this.editor, relativeBlockCardElement.firstElementChild);\n if (blockCardEntry && this.editor.isBlockCard(blockCardEntry[0])) {\n event.preventDefault();\n AngularEditor.moveBlockCard(this.editor, blockCardEntry[0], { direction: event.x < centerX ? 'left' : 'right' });\n }\n }\n }\n\n handleSelectAll() {\n let node;\n if (!this.editor.selection) {\n TheTransforms.setEndSelection(this.editor);\n }\n const [start, end] = Range.edges(this.editor.selection);\n const selectionRange = Editor.range(this.editor, start, end);\n const containerBlocks = TheQueries.getContainerBlocks(this.editor);\n for (let i = 0; i < containerBlocks.length; i++) {\n [node] = TheQueries.getNodesByType(this.editor, containerBlocks[i]);\n if (node) {\n const [, path] = node;\n const isStartParent = Path.equals(path, start.path.slice(0, path.length));\n const isEndParent = Path.equals(path, end.path.slice(0, path.length));\n if (isStartParent && isEndParent) {\n const nodeRange = Editor.range(this.editor, path);\n if (!Range.equals(nodeRange, selectionRange)) {\n Transforms.select(this.editor, nodeRange);\n break;\n }\n node = null;\n }\n }\n }\n if (!node) {\n Transforms.select(this.editor, []);\n }\n event.preventDefault();\n return;\n }\n\n onClick = (event: MouseEvent) => {\n AngularEditor.onClick(this.editor, event);\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaPaste = (event: ClipboardEvent) => {\n this.theOnDOMEvent.emit({\n data: {\n ...this.getTextAndJSON(event.clipboardData)\n },\n nativeEvent: event\n });\n };\n\n onSlaBeforeInput = (\n event: Event & {\n inputType: string;\n data: string | null;\n dataTransfer: DataTransfer | null;\n }\n ) => {\n let data = {\n inputType: event.inputType,\n text: (event.data || event.dataTransfer) as string\n };\n if (event.inputType === 'insertFromPaste') {\n data = {\n ...data,\n ...this.getTextAndJSON((event.data || event.dataTransfer) as DataTransfer)\n };\n }\n this.theOnDOMEvent.emit({\n data,\n nativeEvent: event\n });\n };\n\n onSlaBlur = (event: FocusEvent) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaFocus = (event: Event) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaCut = (event: ClipboardEvent) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaCopy = (event: ClipboardEvent) => {};\n\n onSlaCompositionStart = (event: CompositionEvent) => {};\n\n onSlaCompositionEnd = (event: CompositionEvent) => {};\n\n onSlaDragStart = (event: DragEvent) => {};\n\n onSlaDragOver = (event: DragEvent) => {};\n\n onDrop = (event: DragEvent) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n getTextAndJSON(data: DataTransfer) {\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n let json = [];\n if (fragment) {\n json = JSON.parse(decodeURIComponent(window.atob(fragment)));\n }\n const text = data.getData('text/plain');\n return {\n json,\n text\n };\n }\n}\n","<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [placeholder]=\"theOptions?.placeholder\"\n [placeholderDecorate]=\"theOptions?.placeholderDecorate ? theOptions?.placeholderDecorate : null\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <the-inline-toolbar\n *ngIf=\"!theOptions?.readonly && theOptions?.inlineToobarVisible\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.inline\"\n ></the-inline-toolbar>\n <div\n #quickInsert\n theQuickInsert\n [editor]=\"editor\"\n [quickToolbarItems]=\"quickToolbarItems\"\n [isVisible]=\"theOptions?.quickInsertVisible\"\n ></div>\n <the-template #templateInstance></the-template>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { TheColumnResizeOverlayHandleComponent } from './overlay-handle.component';\r\nimport { TheColumnResizeDirective } from './column-resize.directive';\r\n\r\nconst ENTRY_COMMON_COMPONENTS = [TheColumnResizeOverlayHandleComponent];\r\nconst DIRECTIVES = [TheColumnResizeDirective];\r\n\r\n@NgModule({\r\n declarations: ENTRY_COMMON_COMPONENTS,\r\n exports: ENTRY_COMMON_COMPONENTS,\r\n entryComponents: ENTRY_COMMON_COMPONENTS\r\n})\r\nexport class TheColumnResizeCommonModule {}\r\n\r\n@NgModule({\r\n imports: [OverlayModule, TheColumnResizeCommonModule],\r\n declarations: DIRECTIVES,\r\n exports: DIRECTIVES\r\n})\r\nexport class TheColumnSizeModule {}\r\n","import { Component, OnInit, ElementRef, Input, ViewChild, TemplateRef, ViewContainerRef, OnDestroy, HostListener } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { DefaultToolbarItem } from '../../interfaces';\n\n@Component({\n selector: 'the-toolbar-group',\n templateUrl: './toolbar-group.component.html',\n host: {\n class: 'the-toolbar-group'\n }\n})\nexport class TheToolbarGroupComponent implements OnInit, OnDestroy {\n private _item: DefaultToolbarItem;\n\n @Input() menus: DefaultToolbarItem[];\n\n @Input()\n set item(i: DefaultToolbarItem) {\n this._item = i;\n this.activeMenuItem = i;\n }\n\n get item() {\n return this._item;\n }\n\n get isOpened() {\n return this.groupPopoverRef && this.groupPopoverRef.getOverlayRef() && this.groupPopoverRef.getOverlayRef().hasAttached();\n }\n\n editor: Editor;\n active = false;\n activeMenuItem: DefaultToolbarItem;\n groupPopoverRef: ThyPopoverRef<any>;\n\n @ViewChild('groupTemplate', { read: TemplateRef, static: true })\n groupTemplate: TemplateRef<any>;\n\n @HostListener('mousedown', ['$event'])\n mousedownHandler(event) {\n event.preventDefault();\n this.toggleGroupMenus(event);\n }\n\n @HostListener('click', ['$event'])\n clickHandle(event) {\n event.stopPropagation();\n }\n\n constructor(public elementRef: ElementRef, private thyPopover: ThyPopover, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.colseGroup();\n }\n\n toggleGroupMenus(event: MouseEvent) {\n if (this.editor?.disabled) {\n return;\n }\n if (this.isOpened) {\n this.colseGroup();\n } else {\n this.openGroup(event);\n }\n }\n\n public selectionChange(editor: Editor) {\n const activeItem = this.menusActive(editor);\n this.activeMenuItem = activeItem ? activeItem : null;\n this.activeChange();\n this.colseGroup();\n }\n\n menusActive(editor: Editor) {\n return this.menus.find(i => {\n if (this.editor?.selection && i?.active) {\n return i?.active(editor);\n }\n });\n }\n\n activeChange() {\n const activeItem = this.menusActive(this.editor);\n if (this.isOpened && !activeItem) {\n this.active = false;\n return;\n }\n this.active = activeItem ? true : false;\n }\n\n openGroup(event: MouseEvent) {\n this.active = true;\n this.groupPopoverRef = this.thyPopover.open(this.groupTemplate, {\n panelClass: 'the-toolbar-group-container',\n offset: 10,\n minWidth: 0,\n placement: 'bottomRight',\n origin: event.currentTarget as HTMLElement,\n viewContainerRef: this.viewContainerRef,\n hasBackdrop: false,\n outsideClosable: true\n });\n this.groupPopoverRef.afterClosed().subscribe(() => {\n this.activeChange();\n });\n }\n\n colseGroup() {\n if (this.isOpened) {\n this.groupPopoverRef.close();\n }\n }\n}\n","<a thyIconNavLink [thyIconNavLinkIcon]=\"item.icon\" [thyTooltip]=\"item?.name\" thyTooltipPlacement=\"top\" [thyIconNavLinkActive]=\"active\"></a>\r\n\r\n<ng-template #groupTemplate>\r\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SlateModule } from 'slate-angular';\nimport { TheTextComponent } from './components/text/text.component';\nimport { TheDefaultElementComponent } from './components/element/element.component';\nimport { TheEditorComponent } from './editor.component';\nimport { TheImageComponent } from './plugins/image/image.component';\nimport { TheToolbarComponent } from './components/toolbar/toolbar.component';\nimport { TheToolbarDropdownComponent } from './components/toolbar-dropdown/toolbar-dropdown.component';\nimport { TheToolbarItemComponent } from './components/toolbar-item/toolbar-item.component';\nimport { NavSplitLineComponent } from './components/nav-split-line/nav-split-line.component';\nimport { TheTemplateComponent } from './components/template/template.component';\nimport { TheHrComponent } from './plugins/hr/hr.component';\nimport { TheBlockquoteComponent } from './plugins/blockquote/blockquote.component';\nimport { TheTodoItemComponent } from './plugins/todo-item/todo-item.component';\nimport { TheListItemComponent } from './plugins/list/components/list-item.component';\nimport { TheBulletedListComponent } from './plugins/list/components/bulleted-list.component';\nimport { TheNumberedListComponent } from './plugins/list/components/numbered-list.component';\nimport { ElementStylePipe, ElementClassPipe } from './pipes';\n\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyProgressModule } from 'ngx-tethys/progress';\nimport { ThyFormModule } from 'ngx-tethys/form';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyAutocompleteModule } from 'ngx-tethys/autocomplete';\nimport { ThyAvatarModule } from 'ngx-tethys/avatar';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThyActionMenuModule } from 'ngx-tethys/action-menu';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThySelectModule } from 'ngx-tethys/select';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyNotifyModule } from 'ngx-tethys/notify';\nimport { ThyAlertModule } from 'ngx-tethys/alert';\nimport { TheColorSelectComponent } from './components/color-select/color-select.component';\nimport { TheColorToolbarItemComponent } from './plugins/color/toolbar-item.component';\nimport { TheCodeComponent } from './plugins/code/code.component';\nimport { CodemirrorModule } from 'ng-codemirror';\nimport { TheLinkComponent } from './plugins/link/link.component';\nimport { TheLinkEditComponent } from './plugins/link/edit/link-edit.component';\nimport { TheLinkHoverComponent } from './plugins/link/hover/link-hover.component';\nimport { TheTableToolbarComponent } from './plugins/table/components/toolbar/table-toolbar.component';\nimport { TheTableComponent } from './plugins/table/components/table.component';\nimport { TheTableRowComponent } from './plugins/table/components/row/row.component';\nimport { TheTdComponent } from './plugins/table/components/td/td.component';\nimport { TheContextMenuComponent } from './components/contextmenu/contextmenu.component';\nimport { TheColumnSizeModule } from './components/column-resize/column-resize.module';\nimport { TheInsertMarkComponent } from './plugins/table/components/insert-mark/insert-mark.component';\nimport { TheToolbarGroupComponent } from './components/toolbar-group/toolbar-group.component';\nimport { TheToolbarGroupToken } from './constants/toolbar';\nimport { TheTableSelectComponent } from './components/table-select/table-select.component';\nimport { TheTableToolbarItemComponent } from './plugins/table/toolbar-item.component';\nimport { TheConversionHintComponent } from './components/conversion-hint/conversion-hint.component';\nimport { TheVerticalToolbarItemComponent } from './plugins/vertical-align/toolbar-item.component';\nimport { TheInlineToolbarComponent } from './components/inline-toolbar/inline-toolbar.component';\nimport { TheQuickToolbarComponent } from './plugins/quick-insert/components/quick-toolbar/quick-toolbar.component';\nimport { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';\nimport { ThyResizableModule } from 'ngx-tethys/resizable';\nimport { ThySwitchModule } from 'ngx-tethys/switch';\nimport { TheInlineCodeComponent } from './plugins/inline-code/inline-code.component';\nimport { TheTableOptionsComponent } from './plugins/table/components/toolbar/table-options.component';\nimport { THE_MODE_PROVIDER } from './interfaces';\n\nconst TETHYS = [\n ThyIconModule,\n ThyAvatarModule,\n ThyNavModule,\n ThyFormModule,\n ThySharedModule,\n ThyListModule,\n ThyTooltipModule,\n ThyProgressModule,\n ThyAutocompleteModule,\n ThyActionMenuModule,\n ThyInputModule,\n ThySelectModule,\n ThyButtonModule,\n ThyNotifyModule,\n ThyAlertModule,\n ThyResizableModule,\n ThySwitchModule\n];\n\nexport const COMPONENTS = [\n TheToolbarComponent,\n TheToolbarDropdownComponent,\n TheToolbarGroupComponent,\n TheToolbarItemComponent,\n TheInlineToolbarComponent,\n NavSplitLineComponent,\n TheTextComponent,\n TheDefaultElementComponent,\n TheQuickInsertComponent,\n TheQuickToolbarComponent,\n TheColorSelectComponent,\n TheColorToolbarItemComponent,\n TheContextMenuComponent,\n TheInsertMarkComponent,\n TheTableSelectComponent,\n TheTableToolbarItemComponent,\n TheConversionHintComponent,\n TheVerticalToolbarItemComponent,\n TheTableOptionsComponent\n];\n\nexport const PLUGIN_COMPONENTS = [\n TheImageComponent,\n TheTemplateComponent,\n TheHrComponent,\n TheBlockquoteComponent,\n TheTodoItemComponent,\n TheListItemComponent,\n TheBulletedListComponent,\n TheNumberedListComponent,\n TheCodeComponent,\n TheLinkComponent,\n TheLinkEditComponent,\n TheLinkHoverComponent,\n TheTableToolbarComponent,\n TheTableComponent,\n TheTableRowComponent,\n TheTdComponent,\n TheInlineCodeComponent\n];\n\nconst PIPES = [ElementStylePipe, ElementClassPipe];\n\n@NgModule({\n declarations: [TheEditorComponent, ...PIPES, ...COMPONENTS, ...PLUGIN_COMPONENTS],\n imports: [CommonModule, SlateModule, FormsModule, ...TETHYS, CodemirrorModule, TheColumnSizeModule],\n exports: [TheEditorComponent, TheToolbarComponent, TheToolbarDropdownComponent, TheToolbarItemComponent, TheDefaultElementComponent],\n entryComponents: [...COMPONENTS, ...PLUGIN_COMPONENTS],\n providers: [\n {\n provide: TheToolbarGroupToken,\n useValue: TheToolbarGroupComponent\n },\n THE_MODE_PROVIDER\n ]\n})\nexport class TheEditorModule {}\n","import { Injectable } from '@angular/core';\nimport { DefaultQuickToolbarDefinition, DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition } from '../constants';\nimport { ToolbarKey, ToolbarItem, ToolbarDefinition, ToolbarEntity, ToolbarInitOption } from '../interfaces';\n\n@Injectable()\nexport class TheToolbarService {\n initialize(\n toolbarItems: ToolbarItem[],\n global: string[] = DefaultGlobalToolbarDefinition,\n inline: string[] = DefaultInlineToolbarDefinition,\n quick: string[] = DefaultQuickToolbarDefinition\n ): ToolbarInitOption {\n const toolbarDefinition = {\n global,\n inline,\n quick\n };\n\n const toolbarOperations: Map<string, ToolbarItem> = new Map<string, ToolbarItem>();\n toolbarItems.forEach(i => toolbarOperations.set(i.key, i));\n\n const toolbarEntity = this.nextToolbarEntity(toolbarDefinition, toolbarOperations);\n\n return {\n toolbarDefinition,\n toolbarOperations,\n toolbarEntity\n };\n }\n\n nextToolbarEntity(toolbarDefinition: ToolbarDefinition, toolbarItems: Map<string, ToolbarItem>): ToolbarEntity {\n const entity: ToolbarEntity = {};\n for (const defKey in toolbarDefinition) {\n entity[defKey] = this.getToolbarItemByKeys(toolbarDefinition[defKey], toolbarItems);\n }\n return entity;\n }\n\n getToolbarItemByKeys(keys: ToolbarKey[], toolbarItems: Map<string, ToolbarItem>): ToolbarItem[] {\n return keys.map((key: ToolbarKey) => {\n if (key === `split`) {\n return { key: `split` };\n }\n const item = toolbarItems.get(key);\n if (!item) {\n throw new Error(`Read a non-existent toolbar key`);\n }\n if (item.includes) {\n return { ...item, includes: this.getToolbarItemByKeys(item.includes as ToolbarKey[], toolbarItems) };\n }\n return item;\n });\n }\n}\n","/*\n * Public API Surface of editor\n */\nexport * from './editor.module';\nexport * from './interfaces';\nexport * from './constants';\nexport * from './core/index';\nexport * from './plugins';\nexport * from './plugins/public-api';\nexport * from './custom-types';\nexport * from './plugins/image/image.component';\nexport * from './services/toolbar.service';\nexport * from './editor.component';\nexport * from './components/toolbar/toolbar.component';\nexport * from './core/toolbar-item/base-toolbar-item';\nexport * from './components/toolbar-dropdown/toolbar-dropdown.component';\nexport * from './components/toolbar-group/toolbar-group.component';\nexport * from './components/toolbar-item/toolbar-item.component';\nexport * from './components/element/element.component';\nexport * as TheQueries from './queries/index';\nexport * as TheTransforms from './transforms/index';\nexport * from './utils/index';\nexport * from './services/context.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ElementKinds","Alignment","VerticalAlignment","LayoutTypes","FontSizes","Indents","MarkTypes","ToolbarActionTypes","ErrorCodes","InjectionToken","DropdownMode","ToolbarItemMode","BaseTextComponent","Component","BaseElementComponent","ChangeDetectionStrategy","HostBinding","AngularEditor","TheDataMode","TheMode","ToolbarItemType","ToolbarAlignment","PluginKeys","Subject","fromEvent","Injectable","Input","HostListener","TheiaConverter","Range","Node","Element","Text","Editor","HistoryEditor","Transforms","_lodash","isObject","getLastChild","NODE_TO_PARENT","NODE_TO_INDEX","Span","Path","Point","isArray","TheQueries.getInsertElementsPath","TheQueries.anchorBlockEntry","TheQueries.findPath","isHotkey","TheQueries.isNodeTypeIn","TheQueries.getNode","TheQueries.isNodeType","TheQueries.isAncestor","TheQueries.getAboveByType","TheQueries.getNodesByType","TheQueries.anchorBlock","TheTransforms.closeConversionHint","ThyPopover","ViewContainerRef","ChangeDetectorRef","Overlay","marked","TheQueries.isAcrossBlocks","TheTransforms.splitNode","isEmptyParagraph","TheQueries.isEmptyParagraph","anchorBlock","anchorBlockEntry","TheQueries.isAncestorEmpty","IS_SAFARI","hotkeys","TheTransforms.insertElements","map","ThyUploadStatus","TheTransforms.deleteElement","Inject","ViewChild","TheQueries.getParent","TheQueries.isStart","TheQueries.isRangeAtRoot","TheQueries.isBlockTextEmptyAfterSelection","TheTransforms.unwrapNodesByType","TheQueries.getLastChildPath","TheTransforms.moveChildren","TheQueries.findDescendant","TheQueries.isFirstChild","TheQueries.isBlockAboveEmpty","TheTransforms.onKeyDownResetBlockType","getPlainText","TheQueries.getPreviousPath","TheTransforms.setNode","TheQueries.isBlockActive","ELEMENT_TO_COMPONENT","TheTransforms.setMarks","TheQueries.getToolbarItemDisabled","TheQueries.getAnchorBlockEntry","TheQueries.isParagraph","TheQueries.isDescendant","TheTransforms.mergeDeepToNodes","TheQueries.getPointBefore","TheQueries.getText","TheQueries.isCollapsed","TheQueries.getRangeFromBlockStart","TheQueries.someNode","TheQueries.getRangeBefore","TheQueries.getBlockAbove","TheQueries.getLastNode","hasBlockCard","isCardLeft","TheTransforms.insertParagraph","TheQueries.isEmptyParagraphByPath","TheQueries.getBlockCardAbove","FAKE_RIGHT_BLOCK_CARD_OFFSET","timer","isCollapsed","TheQueries.getContainerBlocks","TheQueries.getSelectionNodesByType","TheTransforms.handleContinualDeleteBackward","TheTransforms.handleContinualInsertBreak","TheQueries.getAbove","TheQueries.getPluginByToolbarItem","Directive","takeUntil","take","delay","CodeMirrorComponent","SlateNode","isUrl","combineLatest","startWith","distinctUntilChanged","skip","share","Observable","BehaviorSubject","merge","filter","ReplaySubject","mapTo","debounceTime","index","ElementRef","coerceCssPixelValue","pairwise","DOCUMENT","PortalInjector","ComponentPortal","Operation","isComponentType","mixinUnsubscribe","MixinBase","isKeyHotkey","TheQueries.getSelectionMarks","TemplateRef","EDITOR_TO_ELEMENT","slateRange","Pipe","EventEmitter","withHistory","withAngular","createEditor","TheTransforms.setEndSelection","NG_VALUE_ACCESSOR","forwardRef","Output","NgModule","OverlayModule","ThyIconModule","ThyAvatarModule","ThyNavModule","ThyFormModule","ThySharedModule","ThyListModule","ThyTooltipModule","ThyProgressModule","ThyAutocompleteModule","ThyActionMenuModule","ThyInputModule","ThySelectModule","ThyButtonModule","ThyNotifyModule","ThyAlertModule","ThyResizableModule","ThySwitchModule","CommonModule","SlateModule","FormsModule","CodemirrorModule"],"mappings":"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"}