@worktile/theia 15.3.2 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (729) hide show
  1. package/components/contextmenu/contextmenu.component.d.ts +1 -1
  2. package/components/conversion-hint/conversion-hint.component.d.ts +3 -3
  3. package/components/inline-toolbar/inline-toolbar.component.d.ts +3 -4
  4. package/components/listbox/listbox.d.ts +3 -3
  5. package/components/plugin-menu/plugin-menu.component.d.ts +4 -3
  6. package/components/table-select/table-select.component.d.ts +1 -1
  7. package/components/template/template.component.d.ts +2 -2
  8. package/components/toolbar/toolbar.component.d.ts +4 -4
  9. package/components/toolbar-dropdown/toolbar-dropdown.component.d.ts +2 -2
  10. package/components/toolbar-group/toolbar-group.component.d.ts +5 -6
  11. package/constants/default.d.ts +1 -1
  12. package/core/toolbar-item/base-toolbar-item.d.ts +6 -7
  13. package/core/utils/plugin-menu.d.ts +2 -2
  14. package/editor.component.d.ts +1 -1
  15. package/editor.module.d.ts +1 -1
  16. package/{esm2020 → esm2022}/components/action/prevent-default.mjs +4 -4
  17. package/{esm2020 → esm2022}/components/column-resize/column-resize-notifier.mjs +4 -4
  18. package/{esm2020 → esm2022}/components/column-resize/column-resize.directive.mjs +4 -4
  19. package/{esm2020 → esm2022}/components/column-resize/column-resize.module.mjs +9 -9
  20. package/{esm2020 → esm2022}/components/column-resize/event-dispatcher.mjs +4 -4
  21. package/{esm2020 → esm2022}/components/column-resize/overlay-handle.component.mjs +4 -4
  22. package/{esm2020 → esm2022}/components/column-resize/resizing.store.mjs +4 -4
  23. package/{esm2020 → esm2022}/components/contextmenu/contextmenu.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/components/conversion-hint/conversion-hint.component.mjs +4 -4
  25. package/{esm2020 → esm2022}/components/element/element.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/components/inline-toolbar/inline-toolbar.component.mjs +6 -6
  27. package/esm2022/components/listbox/listbox.mjs +375 -0
  28. package/esm2022/components/plugin-menu/plugin-menu.component.mjs +191 -0
  29. package/{esm2020 → esm2022}/components/table-select/table-select.component.mjs +4 -4
  30. package/esm2022/components/template/template.component.mjs +62 -0
  31. package/{esm2020 → esm2022}/components/text/text.component.mjs +4 -4
  32. package/esm2022/components/toolbar/toolbar.component.mjs +266 -0
  33. package/esm2022/components/toolbar-dropdown/toolbar-dropdown.component.mjs +144 -0
  34. package/esm2022/components/toolbar-group/toolbar-group.component.mjs +122 -0
  35. package/{esm2020 → esm2022}/components/toolbar-item/toolbar-item.component.mjs +6 -6
  36. package/esm2022/constants/auto-format-rules.mjs +167 -0
  37. package/{esm2020 → esm2022}/constants/default.mjs +2 -2
  38. package/esm2022/constants/plugin-menu.mjs +328 -0
  39. package/esm2022/core/toolbar-item/base-toolbar-item.mjs +87 -0
  40. package/{esm2020 → esm2022}/core/utils/combine-plugins.mjs +1 -1
  41. package/esm2022/core/utils/plugin-menu.mjs +33 -0
  42. package/esm2022/custom-types.mjs +2 -0
  43. package/{esm2020 → esm2022}/editor.component.mjs +11 -11
  44. package/esm2022/editor.module.mjs +254 -0
  45. package/esm2022/interfaces/auto-format.mjs +2 -0
  46. package/esm2022/interfaces/editor.mjs +25 -0
  47. package/esm2022/interfaces/plugins/plugin-menu.mjs +19 -0
  48. package/esm2022/interfaces/plugins/with-override.mjs +2 -0
  49. package/esm2022/interfaces/reset-block-type-plugin-options.mjs +2 -0
  50. package/esm2022/interfaces/toolbar.mjs +12 -0
  51. package/{esm2020 → esm2022}/interfaces/view-base.mjs +4 -4
  52. package/esm2022/pipes.mjs +42 -0
  53. package/esm2022/plugins/align/align.editor.mjs +43 -0
  54. package/esm2022/plugins/align/align.plugin.mjs +64 -0
  55. package/{esm2020 → esm2022}/plugins/autoformat/autoformat.plugin.mjs +1 -1
  56. package/esm2022/plugins/autoformat/transforms/auto-format-block.mjs +14 -0
  57. package/esm2022/plugins/autoformat/transforms/auto-format-inline.mjs +78 -0
  58. package/esm2022/plugins/blockquote/blockquote.component.mjs +21 -0
  59. package/esm2022/plugins/blockquote/blockquote.editor.mjs +17 -0
  60. package/esm2022/plugins/blockquote/blockquote.plugin.mjs +85 -0
  61. package/{esm2020 → esm2022}/plugins/code/code.component.mjs +4 -4
  62. package/esm2022/plugins/code/code.editor.mjs +48 -0
  63. package/{esm2020 → esm2022}/plugins/code/code.plugin.mjs +1 -1
  64. package/esm2022/plugins/color/color.editor.mjs +27 -0
  65. package/{esm2020 → esm2022}/plugins/color/toolbar-item.component.mjs +4 -4
  66. package/{esm2020 → esm2022}/plugins/common/block-card.plugin.mjs +1 -1
  67. package/{esm2020 → esm2022}/plugins/common/common.plugin.mjs +1 -1
  68. package/{esm2020 → esm2022}/plugins/common/get-fragment.plugin.mjs +1 -1
  69. package/esm2022/plugins/common/history.plugin.mjs +31 -0
  70. package/{esm2020 → esm2022}/plugins/common/insert-data-by-invalid-type.mjs +1 -1
  71. package/{esm2020 → esm2022}/plugins/common/move-selection.plugin.mjs +1 -1
  72. package/{esm2020 → esm2022}/plugins/common/remove-empty.plugin.mjs +1 -1
  73. package/{esm2020 → esm2022}/plugins/common/remove-void.plugin.mjs +1 -1
  74. package/{esm2020 → esm2022}/plugins/common/reset-type.plugin.mjs +1 -1
  75. package/esm2022/plugins/common/transforms.plugin.mjs +18 -0
  76. package/esm2022/plugins/deserialize/deserialize-html.plugin.mjs +53 -0
  77. package/esm2022/plugins/deserialize/deserialize-md.plugin.mjs +130 -0
  78. package/esm2022/plugins/font-size/font-size.editor.mjs +98 -0
  79. package/esm2022/plugins/heading/heading.editor.mjs +54 -0
  80. package/esm2022/plugins/heading/heading.plugin.mjs +136 -0
  81. package/{esm2020 → esm2022}/plugins/hr/hr.component.mjs +6 -6
  82. package/esm2022/plugins/hr/hr.editor.mjs +16 -0
  83. package/esm2022/plugins/hr/hr.plugin.mjs +56 -0
  84. package/esm2022/plugins/image/image.component.mjs +420 -0
  85. package/esm2022/plugins/image/image.editor.mjs +81 -0
  86. package/esm2022/plugins/indent/indent.editor.mjs +78 -0
  87. package/{esm2020 → esm2022}/plugins/indent/indent.plugin.mjs +1 -1
  88. package/esm2022/plugins/indent/on-keydown-indent.mjs +59 -0
  89. package/esm2022/plugins/inline-code/inline-code.component.mjs +26 -0
  90. package/esm2022/plugins/inline-code/inline-code.editor.mjs +48 -0
  91. package/esm2022/plugins/inline-code/inline-code.plugin.mjs +66 -0
  92. package/esm2022/plugins/link/edit/link-edit.component.mjs +103 -0
  93. package/{esm2020 → esm2022}/plugins/link/hover/link-hover.component.mjs +4 -4
  94. package/esm2022/plugins/link/link.component.mjs +167 -0
  95. package/esm2022/plugins/link/link.editor.mjs +66 -0
  96. package/{esm2020 → esm2022}/plugins/link/link.plugin.mjs +1 -1
  97. package/esm2022/plugins/list/components/bulleted-list.component.mjs +33 -0
  98. package/esm2022/plugins/list/components/list-item.component.mjs +93 -0
  99. package/esm2022/plugins/list/components/numbered-list.component.mjs +39 -0
  100. package/esm2022/plugins/list/list.editor.mjs +126 -0
  101. package/esm2022/plugins/list/list.plugin.mjs +312 -0
  102. package/esm2022/plugins/list/normalizers/get-list-normalizer.mjs +39 -0
  103. package/esm2022/plugins/list/normalizers/normalize-list-item.mjs +18 -0
  104. package/esm2022/plugins/list/normalizers/normalize-no.mjs +43 -0
  105. package/esm2022/plugins/list/on-key-down-list.mjs +33 -0
  106. package/esm2022/plugins/list/queries/get-list-item-entry.mjs +28 -0
  107. package/esm2022/plugins/list/queries/get-start-list-item.mjs +27 -0
  108. package/esm2022/plugins/list/queries/has-list-in-list-item.mjs +27 -0
  109. package/esm2022/plugins/list/queries/is-in-list.mjs +6 -0
  110. package/esm2022/plugins/list/queries/is-list-nested.mjs +10 -0
  111. package/esm2022/plugins/list/queries/is-list.mjs +5 -0
  112. package/{esm2020 → esm2022}/plugins/list/queries/is-node-type-list.mjs +1 -1
  113. package/esm2022/plugins/list/queries/is-selection-at-list-item-start.mjs +13 -0
  114. package/esm2022/plugins/list/queries/is-selection-in-same-list-item.mjs +17 -0
  115. package/{esm2020 → esm2022}/plugins/list/queries/is-single-list-item.mjs +1 -1
  116. package/esm2022/plugins/list/transforms/insert-list-data.mjs +72 -0
  117. package/esm2022/plugins/list/transforms/insert-list-item.mjs +72 -0
  118. package/esm2022/plugins/list/transforms/move-list-item-down.mjs +41 -0
  119. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +43 -0
  120. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +30 -0
  121. package/esm2022/plugins/list/transforms/move-list-item-up.mjs +78 -0
  122. package/esm2022/plugins/list/transforms/unwrap-list.mjs +10 -0
  123. package/esm2022/plugins/mark/mark.editor.mjs +28 -0
  124. package/{esm2020 → esm2022}/plugins/mark/mark.plugin.mjs +1 -1
  125. package/{esm2020 → esm2022}/plugins/mention/mention.editor.mjs +1 -1
  126. package/esm2022/plugins/mention/mention.plugin.mjs +91 -0
  127. package/{esm2020 → esm2022}/plugins/mention/suggestion.component.mjs +4 -4
  128. package/{esm2020 → esm2022}/plugins/node-id/node-id.plugin.mjs +1 -1
  129. package/{esm2020 → esm2022}/plugins/normalizers/insert-paragraph-nodes.mjs +1 -1
  130. package/esm2022/plugins/normalizers/remove-empty-nodes.mjs +18 -0
  131. package/{esm2020 → esm2022}/plugins/normalizers/trailing-node.plugin.mjs +1 -1
  132. package/{esm2020 → esm2022}/plugins/paint-format/paint-format.editor.mjs +1 -1
  133. package/{esm2020 → esm2022}/plugins/quick-insert/components/quick-insert.component.mjs +4 -4
  134. package/esm2022/plugins/quick-insert/quick-insert.editor.mjs +68 -0
  135. package/esm2022/plugins/quick-insert/quick-insert.plugin.mjs +104 -0
  136. package/esm2022/plugins/table/components/insert-mark/insert-mark.component.mjs +104 -0
  137. package/{esm2020 → esm2022}/plugins/table/components/row/row.component.mjs +6 -6
  138. package/{esm2020 → esm2022}/plugins/table/components/table.component.mjs +16 -16
  139. package/{esm2020 → esm2022}/plugins/table/components/td/td.component.mjs +4 -4
  140. package/{esm2020 → esm2022}/plugins/table/components/toolbar/table-options.component.mjs +6 -6
  141. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +189 -0
  142. package/esm2022/plugins/table/table.editor.mjs +209 -0
  143. package/{esm2020 → esm2022}/plugins/table/table.pipe.mjs +7 -7
  144. package/esm2022/plugins/table/table.plugin.mjs +544 -0
  145. package/{esm2020 → esm2022}/plugins/table/table.service.mjs +4 -4
  146. package/esm2022/plugins/table/table.store.mjs +426 -0
  147. package/esm2022/plugins/table/table.types.mjs +60 -0
  148. package/{esm2020 → esm2022}/plugins/table/toolbar-item.component.mjs +6 -6
  149. package/esm2022/plugins/table/transforms/clear-cell.mjs +14 -0
  150. package/esm2022/plugins/table/transforms/clear-table-node.mjs +27 -0
  151. package/esm2022/plugins/table/transforms/insert-column.mjs +69 -0
  152. package/esm2022/plugins/table/transforms/insert-row.mjs +50 -0
  153. package/esm2022/plugins/table/transforms/insert-table.mjs +15 -0
  154. package/esm2022/plugins/table/transforms/remove-column.mjs +51 -0
  155. package/esm2022/plugins/table/transforms/remove-row.mjs +48 -0
  156. package/esm2022/plugins/table/transforms/remove-table.mjs +49 -0
  157. package/esm2022/plugins/table/utils/calc-anchor-position.mjs +25 -0
  158. package/esm2022/plugins/table/utils/cell-position.mjs +60 -0
  159. package/esm2022/plugins/table/utils/create-table-position.mjs +10 -0
  160. package/esm2022/plugins/table/utils/get-min-max-cell-index.mjs +69 -0
  161. package/esm2022/plugins/table/utils/get-select-cell-node.mjs +23 -0
  162. package/esm2022/plugins/table/utils/handle-cell.mjs +25 -0
  163. package/esm2022/plugins/table/utils/is-range-in-table.mjs +16 -0
  164. package/esm2022/plugins/table/utils/is-selection-in-table.mjs +51 -0
  165. package/esm2022/plugins/table/utils/merge-cell.mjs +108 -0
  166. package/esm2022/plugins/table/utils/set-menu-cell-invisibility.mjs +45 -0
  167. package/esm2022/plugins/table/utils/split-cell.mjs +29 -0
  168. package/esm2022/plugins/table/utils/table-entry.mjs +21 -0
  169. package/{esm2020 → esm2022}/plugins/todo-item/todo-item.component.mjs +7 -7
  170. package/esm2022/plugins/todo-item/todo-item.editor.mjs +32 -0
  171. package/esm2022/plugins/todo-item/todo-item.plugin.mjs +93 -0
  172. package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +83 -0
  173. package/esm2022/queries/anchor-block-entry.mjs +13 -0
  174. package/esm2022/queries/anchor-block.mjs +6 -0
  175. package/esm2022/queries/anchor-inline-entry.mjs +10 -0
  176. package/{esm2020 → esm2022}/queries/find-descendant.mjs +1 -1
  177. package/esm2022/queries/find-node.mjs +45 -0
  178. package/esm2022/queries/get-above-by-type.mjs +14 -0
  179. package/esm2022/queries/get-above.mjs +9 -0
  180. package/esm2022/queries/get-anchor-block-entry.mjs +8 -0
  181. package/esm2022/queries/get-block-above.mjs +10 -0
  182. package/esm2022/queries/get-block-card-above.mjs +10 -0
  183. package/esm2022/queries/get-block-card-cursor.mjs +5 -0
  184. package/esm2022/queries/get-container-blocks.mjs +12 -0
  185. package/esm2022/queries/get-insert-elements-path.mjs +44 -0
  186. package/{esm2020 → esm2022}/queries/get-last-node.mjs +1 -1
  187. package/esm2022/queries/get-node.mjs +10 -0
  188. package/esm2022/queries/get-nodes-by-type.mjs +15 -0
  189. package/esm2022/queries/get-nodes.mjs +7 -0
  190. package/esm2022/queries/get-parent.mjs +12 -0
  191. package/esm2022/queries/get-plain-text.mjs +16 -0
  192. package/esm2022/queries/get-plugin-by-toolbar.mjs +13 -0
  193. package/{esm2020 → esm2022}/queries/get-point-before.mjs +1 -1
  194. package/esm2022/queries/get-point-from-location.mjs +15 -0
  195. package/esm2022/queries/get-rang-from-block-start.mjs +16 -0
  196. package/esm2022/queries/get-range-before.mjs +17 -0
  197. package/{esm2020 → esm2022}/queries/get-selection-marks.mjs +1 -1
  198. package/esm2022/queries/get-selection-nodes-by-type.mjs +30 -0
  199. package/esm2022/queries/get-text.mjs +9 -0
  200. package/esm2022/queries/get-toolbar-disabled.mjs +13 -0
  201. package/esm2022/queries/is-across-blocks.mjs +7 -0
  202. package/esm2022/queries/is-ancestor-empty.mjs +6 -0
  203. package/esm2022/queries/is-block-above-empty.mjs +11 -0
  204. package/esm2022/queries/is-block-active.mjs +8 -0
  205. package/esm2022/queries/is-block-card-cursor.mjs +4 -0
  206. package/{esm2020 → esm2022}/queries/is-block-text-empty-after-selection.mjs +1 -1
  207. package/esm2022/queries/is-contain-nested-type.mjs +29 -0
  208. package/esm2022/queries/is-container-type.mjs +3 -0
  209. package/esm2022/queries/is-empty-content-filter.mjs +23 -0
  210. package/{esm2020 → esm2022}/queries/is-empty-content.mjs +1 -1
  211. package/esm2022/queries/is-empty-paragraph-by-path.mjs +7 -0
  212. package/esm2022/queries/is-empty-paragraph.mjs +28 -0
  213. package/esm2022/queries/is-global-collapsed.mjs +5 -0
  214. package/esm2022/queries/is-include-types.mjs +12 -0
  215. package/esm2022/queries/is-node-type-in.mjs +9 -0
  216. package/esm2022/queries/is-node-type.mjs +15 -0
  217. package/esm2022/queries/is-paragraph.mjs +9 -0
  218. package/esm2022/queries/is-range-across-blocks.mjs +22 -0
  219. package/esm2022/queries/is-start.mjs +6 -0
  220. package/esm2022/queries/some-node.mjs +9 -0
  221. package/{esm2020 → esm2022}/services/context.service.mjs +4 -4
  222. package/{esm2020 → esm2022}/services/table-contextmenu.service.mjs +4 -4
  223. package/{esm2020 → esm2022}/services/toolbar.service.mjs +4 -4
  224. package/{esm2020 → esm2022}/shortcuts/index.mjs +1 -1
  225. package/esm2022/shortcuts/mark.mjs +25 -0
  226. package/esm2022/test/utils/with-editor.mjs +8 -0
  227. package/esm2022/test/utils/with-plugin.mjs +8 -0
  228. package/{esm2020 → esm2022}/transforms/clear-marks.mjs +1 -1
  229. package/esm2022/transforms/close-conversion-hint.mjs +8 -0
  230. package/{esm2020 → esm2022}/transforms/delete-element.mjs +1 -1
  231. package/esm2022/transforms/handle-continual-delete-backward.mjs +18 -0
  232. package/esm2022/transforms/handle-continual-insert-break.mjs +20 -0
  233. package/esm2022/transforms/insert-elements.mjs +38 -0
  234. package/esm2022/transforms/insert-paragraph.mjs +6 -0
  235. package/esm2022/transforms/move-children.mjs +22 -0
  236. package/esm2022/transforms/on-keydown-reset-block-type.mjs +22 -0
  237. package/{esm2020 → esm2022}/transforms/set-end-selection.mjs +1 -1
  238. package/esm2022/transforms/set-marks.mjs +9 -0
  239. package/esm2022/transforms/set-node.mjs +6 -0
  240. package/esm2022/transforms/un-hang-range.mjs +11 -0
  241. package/esm2022/transforms/un-wrap.mjs +12 -0
  242. package/esm2022/transforms/unwrap-nodes-by-type.mjs +14 -0
  243. package/{esm2020 → esm2022}/utils/auto-focus.mjs +1 -1
  244. package/esm2022/utils/copy-node.mjs +32 -0
  245. package/esm2022/utils/create-empty-paragraph.mjs +5 -0
  246. package/esm2022/utils/create-paragraph.mjs +14 -0
  247. package/{esm2020 → esm2022}/utils/dom.mjs +1 -1
  248. package/esm2022/utils/editor-uuid.mjs +8 -0
  249. package/esm2022/utils/fragment.mjs +74 -0
  250. package/esm2022/utils/get-editable-element-height.mjs +6 -0
  251. package/esm2022/utils/get-toolbar-class.mjs +6 -0
  252. package/esm2022/utils/index.mjs +20 -0
  253. package/esm2022/utils/insert-data-by-invalid-type.mjs +62 -0
  254. package/esm2022/utils/is-clean-empty-paragraph.mjs +37 -0
  255. package/esm2022/utils/is-inline.mjs +9 -0
  256. package/{esm2020 → esm2022}/utils/match.mjs +1 -1
  257. package/esm2022/utils/merge-element-options.mjs +19 -0
  258. package/esm2022/utils/scroll-into-view.mjs +38 -0
  259. package/{fesm2020 → fesm2022}/worktile-theia.mjs +398 -389
  260. package/fesm2022/worktile-theia.mjs.map +1 -0
  261. package/interfaces/auto-format.d.ts +5 -5
  262. package/interfaces/editor.d.ts +8 -6
  263. package/interfaces/plugins/plugin-menu.d.ts +5 -5
  264. package/interfaces/plugins/with-override.d.ts +2 -2
  265. package/interfaces/reset-block-type-plugin-options.d.ts +3 -3
  266. package/interfaces/toolbar.d.ts +5 -5
  267. package/interfaces/view-base.d.ts +3 -2
  268. package/package.json +11 -17
  269. package/pipes.d.ts +3 -3
  270. package/plugins/align/align.editor.d.ts +4 -4
  271. package/plugins/align/align.plugin.d.ts +2 -1
  272. package/plugins/autoformat/autoformat.plugin.d.ts +2 -1
  273. package/plugins/autoformat/transforms/auto-format-block.d.ts +5 -4
  274. package/plugins/autoformat/transforms/auto-format-inline.d.ts +2 -2
  275. package/plugins/blockquote/blockquote.component.d.ts +3 -3
  276. package/plugins/blockquote/blockquote.editor.d.ts +2 -2
  277. package/plugins/blockquote/blockquote.plugin.d.ts +2 -1
  278. package/plugins/code/code.component.d.ts +2 -3
  279. package/plugins/code/code.editor.d.ts +3 -3
  280. package/plugins/code/code.plugin.d.ts +2 -1
  281. package/plugins/color/color.editor.d.ts +3 -3
  282. package/plugins/common/block-card.plugin.d.ts +2 -1
  283. package/plugins/common/common.plugin.d.ts +2 -1
  284. package/plugins/common/get-fragment.plugin.d.ts +2 -1
  285. package/plugins/common/history.plugin.d.ts +6 -6
  286. package/plugins/common/insert-data-by-invalid-type.d.ts +2 -1
  287. package/plugins/common/move-selection.plugin.d.ts +2 -1
  288. package/plugins/common/remove-empty.plugin.d.ts +2 -1
  289. package/plugins/common/remove-void.plugin.d.ts +2 -1
  290. package/plugins/common/reset-type.plugin.d.ts +2 -1
  291. package/plugins/common/transforms.plugin.d.ts +2 -1
  292. package/plugins/deserialize/deserialize-html.plugin.d.ts +2 -1
  293. package/plugins/deserialize/deserialize-md.plugin.d.ts +2 -1
  294. package/plugins/font-size/font-size.editor.d.ts +3 -4
  295. package/plugins/heading/heading.editor.d.ts +3 -4
  296. package/plugins/heading/heading.plugin.d.ts +2 -2
  297. package/plugins/hr/hr.component.d.ts +3 -3
  298. package/plugins/hr/hr.editor.d.ts +3 -3
  299. package/plugins/hr/hr.plugin.d.ts +2 -1
  300. package/plugins/image/image.component.d.ts +2 -3
  301. package/plugins/image/image.editor.d.ts +8 -7
  302. package/plugins/indent/indent.editor.d.ts +3 -4
  303. package/plugins/indent/indent.plugin.d.ts +2 -1
  304. package/plugins/indent/on-keydown-indent.d.ts +2 -2
  305. package/plugins/inline-code/inline-code.component.d.ts +2 -3
  306. package/plugins/inline-code/inline-code.editor.d.ts +6 -5
  307. package/plugins/inline-code/inline-code.plugin.d.ts +2 -1
  308. package/plugins/link/edit/link-edit.component.d.ts +4 -3
  309. package/plugins/link/hover/link-hover.component.d.ts +1 -1
  310. package/plugins/link/link.component.d.ts +2 -3
  311. package/plugins/link/link.editor.d.ts +5 -5
  312. package/plugins/link/link.plugin.d.ts +2 -1
  313. package/plugins/list/components/bulleted-list.component.d.ts +2 -3
  314. package/plugins/list/components/list-item.component.d.ts +3 -3
  315. package/plugins/list/components/numbered-list.component.d.ts +2 -3
  316. package/plugins/list/list.editor.d.ts +11 -9
  317. package/plugins/list/list.plugin.d.ts +2 -1
  318. package/plugins/list/normalizers/get-list-normalizer.d.ts +3 -2
  319. package/plugins/list/normalizers/normalize-list-item.d.ts +3 -2
  320. package/plugins/list/normalizers/normalize-no.d.ts +3 -2
  321. package/plugins/list/on-key-down-list.d.ts +2 -2
  322. package/plugins/list/queries/get-list-item-entry.d.ts +3 -2
  323. package/plugins/list/queries/get-start-list-item.d.ts +2 -2
  324. package/plugins/list/queries/has-list-in-list-item.d.ts +5 -4
  325. package/plugins/list/queries/is-in-list.d.ts +3 -2
  326. package/plugins/list/queries/is-list-nested.d.ts +3 -2
  327. package/plugins/list/queries/is-list.d.ts +2 -2
  328. package/plugins/list/queries/is-node-type-list.d.ts +2 -1
  329. package/plugins/list/queries/is-selection-at-list-item-start.d.ts +2 -2
  330. package/plugins/list/queries/is-selection-in-same-list-item.d.ts +2 -2
  331. package/plugins/list/transforms/insert-list-data.d.ts +5 -3
  332. package/plugins/list/transforms/insert-list-item.d.ts +2 -2
  333. package/plugins/list/transforms/move-list-item-down.d.ts +3 -2
  334. package/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.d.ts +3 -2
  335. package/plugins/list/transforms/move-list-item-sublist-items-to-list.d.ts +3 -2
  336. package/plugins/list/transforms/move-list-item-up.d.ts +3 -2
  337. package/plugins/list/transforms/unwrap-list.d.ts +2 -2
  338. package/plugins/mark/mark.editor.d.ts +3 -2
  339. package/plugins/mark/mark.plugin.d.ts +2 -1
  340. package/plugins/mention/mention.plugin.d.ts +2 -1
  341. package/plugins/mention/suggestion.component.d.ts +1 -1
  342. package/plugins/node-id/node-id.plugin.d.ts +2 -2
  343. package/plugins/normalizers/insert-paragraph-nodes.d.ts +2 -1
  344. package/plugins/normalizers/trailing-node.plugin.d.ts +2 -2
  345. package/plugins/quick-insert/components/quick-insert.component.d.ts +3 -3
  346. package/plugins/quick-insert/quick-insert.editor.d.ts +6 -6
  347. package/plugins/quick-insert/quick-insert.plugin.d.ts +3 -3
  348. package/plugins/table/components/insert-mark/insert-mark.component.d.ts +3 -3
  349. package/plugins/table/components/table.component.d.ts +2 -3
  350. package/plugins/table/components/td/td.component.d.ts +2 -2
  351. package/plugins/table/components/toolbar/table-options.component.d.ts +3 -3
  352. package/plugins/table/components/toolbar/table-toolbar.component.d.ts +3 -3
  353. package/plugins/table/table.editor.d.ts +11 -11
  354. package/plugins/table/table.store.d.ts +12 -12
  355. package/plugins/table/table.types.d.ts +4 -3
  356. package/plugins/table/transforms/clear-cell.d.ts +3 -2
  357. package/plugins/table/transforms/clear-table-node.d.ts +2 -2
  358. package/plugins/table/transforms/insert-column.d.ts +5 -4
  359. package/plugins/table/transforms/insert-row.d.ts +2 -2
  360. package/plugins/table/transforms/insert-table.d.ts +3 -2
  361. package/plugins/table/transforms/remove-column.d.ts +2 -2
  362. package/plugins/table/transforms/remove-row.d.ts +2 -2
  363. package/plugins/table/transforms/remove-table.d.ts +2 -2
  364. package/plugins/table/utils/calc-anchor-position.d.ts +2 -2
  365. package/plugins/table/utils/cell-position.d.ts +3 -3
  366. package/plugins/table/utils/create-table-position.d.ts +3 -2
  367. package/plugins/table/utils/get-min-max-cell-index.d.ts +2 -2
  368. package/plugins/table/utils/get-select-cell-node.d.ts +3 -3
  369. package/plugins/table/utils/handle-cell.d.ts +3 -2
  370. package/plugins/table/utils/is-range-in-table.d.ts +3 -2
  371. package/plugins/table/utils/is-selection-in-table.d.ts +3 -3
  372. package/plugins/table/utils/merge-cell.d.ts +6 -5
  373. package/plugins/table/utils/set-menu-cell-invisibility.d.ts +2 -2
  374. package/plugins/table/utils/split-cell.d.ts +3 -3
  375. package/plugins/table/utils/table-entry.d.ts +5 -5
  376. package/plugins/todo-item/todo-item.component.d.ts +2 -3
  377. package/plugins/todo-item/todo-item.editor.d.ts +3 -3
  378. package/plugins/todo-item/todo-item.plugin.d.ts +2 -1
  379. package/plugins/vertical-align/toolbar-item.component.d.ts +2 -3
  380. package/queries/anchor-block-entry.d.ts +4 -2
  381. package/queries/anchor-block.d.ts +3 -2
  382. package/queries/anchor-inline-entry.d.ts +3 -2
  383. package/queries/find-descendant.d.ts +3 -2
  384. package/queries/find-node.d.ts +3 -3
  385. package/queries/get-above-by-type.d.ts +2 -3
  386. package/queries/get-above.d.ts +3 -3
  387. package/queries/get-anchor-block-entry.d.ts +4 -2
  388. package/queries/get-block-above.d.ts +3 -3
  389. package/queries/get-block-card-above.d.ts +3 -3
  390. package/queries/get-block-card-cursor.d.ts +2 -2
  391. package/queries/get-container-blocks.d.ts +2 -2
  392. package/queries/get-last-node.d.ts +3 -2
  393. package/queries/get-node.d.ts +3 -2
  394. package/queries/get-nodes-by-type.d.ts +2 -3
  395. package/queries/get-nodes.d.ts +2 -3
  396. package/queries/get-parent.d.ts +3 -3
  397. package/queries/get-plain-text.d.ts +2 -2
  398. package/queries/get-plugin-by-toolbar.d.ts +2 -3
  399. package/queries/get-point-before.d.ts +3 -2
  400. package/queries/get-point-from-location.d.ts +3 -2
  401. package/queries/get-rang-from-block-start.d.ts +2 -3
  402. package/queries/get-range-before.d.ts +3 -2
  403. package/queries/get-selection-marks.d.ts +2 -2
  404. package/queries/get-selection-nodes-by-type.d.ts +3 -2
  405. package/queries/get-text.d.ts +3 -2
  406. package/queries/get-toolbar-disabled.d.ts +2 -3
  407. package/queries/is-across-blocks.d.ts +3 -2
  408. package/queries/is-ancestor-empty.d.ts +3 -2
  409. package/queries/is-block-above-empty.d.ts +2 -2
  410. package/queries/is-block-active.d.ts +2 -2
  411. package/queries/is-block-card-cursor.d.ts +2 -2
  412. package/queries/is-block-text-empty-after-selection.d.ts +2 -2
  413. package/queries/is-contain-nested-type.d.ts +2 -2
  414. package/queries/is-container-type.d.ts +3 -2
  415. package/queries/is-empty-content-filter.d.ts +2 -2
  416. package/queries/is-empty-paragraph-by-path.d.ts +3 -2
  417. package/queries/is-empty-paragraph.d.ts +6 -4
  418. package/queries/is-global-collapsed.d.ts +2 -2
  419. package/queries/is-include-types.d.ts +2 -2
  420. package/queries/is-node-type-in.d.ts +2 -3
  421. package/queries/is-paragraph.d.ts +2 -2
  422. package/queries/is-range-across-blocks.d.ts +3 -3
  423. package/queries/is-start.d.ts +3 -2
  424. package/queries/some-node.d.ts +3 -2
  425. package/shortcuts/index.d.ts +2 -2
  426. package/shortcuts/mark.d.ts +2 -2
  427. package/test/utils/with-editor.d.ts +2 -0
  428. package/transforms/clear-marks.d.ts +2 -2
  429. package/transforms/close-conversion-hint.d.ts +2 -2
  430. package/transforms/delete-element.d.ts +3 -2
  431. package/transforms/handle-continual-delete-backward.d.ts +4 -3
  432. package/transforms/handle-continual-insert-break.d.ts +3 -3
  433. package/transforms/insert-elements.d.ts +3 -2
  434. package/transforms/insert-paragraph.d.ts +3 -2
  435. package/transforms/move-children.d.ts +3 -2
  436. package/transforms/on-keydown-reset-block-type.d.ts +2 -2
  437. package/transforms/set-end-selection.d.ts +2 -2
  438. package/transforms/set-marks.d.ts +3 -2
  439. package/transforms/set-node.d.ts +3 -2
  440. package/transforms/un-hang-range.d.ts +3 -2
  441. package/transforms/un-wrap.d.ts +2 -2
  442. package/transforms/unwrap-nodes-by-type.d.ts +2 -3
  443. package/utils/auto-focus.d.ts +2 -2
  444. package/utils/copy-node.d.ts +5 -3
  445. package/utils/create-paragraph.d.ts +2 -0
  446. package/utils/dom.d.ts +2 -2
  447. package/utils/editor-uuid.d.ts +3 -3
  448. package/utils/fragment.d.ts +7 -5
  449. package/utils/get-editable-element-height.d.ts +2 -2
  450. package/utils/get-toolbar-class.d.ts +2 -2
  451. package/utils/index.d.ts +1 -0
  452. package/utils/is-clean-empty-paragraph.d.ts +4 -3
  453. package/utils/is-inline.d.ts +3 -2
  454. package/utils/match.d.ts +2 -2
  455. package/utils/merge-element-options.d.ts +1 -1
  456. package/utils/scroll-into-view.d.ts +2 -2
  457. package/esm2020/components/listbox/listbox.mjs +0 -375
  458. package/esm2020/components/plugin-menu/plugin-menu.component.mjs +0 -191
  459. package/esm2020/components/template/template.component.mjs +0 -62
  460. package/esm2020/components/toolbar/toolbar.component.mjs +0 -266
  461. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +0 -144
  462. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +0 -122
  463. package/esm2020/constants/auto-format-rules.mjs +0 -167
  464. package/esm2020/constants/plugin-menu.mjs +0 -325
  465. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +0 -87
  466. package/esm2020/core/utils/plugin-menu.mjs +0 -33
  467. package/esm2020/custom-types.mjs +0 -2
  468. package/esm2020/editor.module.mjs +0 -254
  469. package/esm2020/interfaces/auto-format.mjs +0 -2
  470. package/esm2020/interfaces/editor.mjs +0 -25
  471. package/esm2020/interfaces/plugins/plugin-menu.mjs +0 -19
  472. package/esm2020/interfaces/plugins/with-override.mjs +0 -2
  473. package/esm2020/interfaces/reset-block-type-plugin-options.mjs +0 -2
  474. package/esm2020/interfaces/toolbar.mjs +0 -12
  475. package/esm2020/pipes.mjs +0 -42
  476. package/esm2020/plugins/align/align.editor.mjs +0 -43
  477. package/esm2020/plugins/align/align.plugin.mjs +0 -64
  478. package/esm2020/plugins/autoformat/transforms/auto-format-block.mjs +0 -14
  479. package/esm2020/plugins/autoformat/transforms/auto-format-inline.mjs +0 -78
  480. package/esm2020/plugins/blockquote/blockquote.component.mjs +0 -21
  481. package/esm2020/plugins/blockquote/blockquote.editor.mjs +0 -20
  482. package/esm2020/plugins/blockquote/blockquote.plugin.mjs +0 -85
  483. package/esm2020/plugins/code/code.editor.mjs +0 -48
  484. package/esm2020/plugins/color/color.editor.mjs +0 -27
  485. package/esm2020/plugins/common/history.plugin.mjs +0 -31
  486. package/esm2020/plugins/common/transforms.plugin.mjs +0 -18
  487. package/esm2020/plugins/deserialize/deserialize-html.plugin.mjs +0 -53
  488. package/esm2020/plugins/deserialize/deserialize-md.plugin.mjs +0 -130
  489. package/esm2020/plugins/font-size/font-size.editor.mjs +0 -98
  490. package/esm2020/plugins/heading/heading.editor.mjs +0 -54
  491. package/esm2020/plugins/heading/heading.plugin.mjs +0 -136
  492. package/esm2020/plugins/hr/hr.editor.mjs +0 -16
  493. package/esm2020/plugins/hr/hr.plugin.mjs +0 -56
  494. package/esm2020/plugins/image/image.component.mjs +0 -420
  495. package/esm2020/plugins/image/image.editor.mjs +0 -81
  496. package/esm2020/plugins/indent/indent.editor.mjs +0 -78
  497. package/esm2020/plugins/indent/on-keydown-indent.mjs +0 -59
  498. package/esm2020/plugins/inline-code/inline-code.component.mjs +0 -26
  499. package/esm2020/plugins/inline-code/inline-code.editor.mjs +0 -48
  500. package/esm2020/plugins/inline-code/inline-code.plugin.mjs +0 -66
  501. package/esm2020/plugins/link/edit/link-edit.component.mjs +0 -103
  502. package/esm2020/plugins/link/link.component.mjs +0 -167
  503. package/esm2020/plugins/link/link.editor.mjs +0 -66
  504. package/esm2020/plugins/list/components/bulleted-list.component.mjs +0 -33
  505. package/esm2020/plugins/list/components/list-item.component.mjs +0 -93
  506. package/esm2020/plugins/list/components/numbered-list.component.mjs +0 -39
  507. package/esm2020/plugins/list/list.editor.mjs +0 -126
  508. package/esm2020/plugins/list/list.plugin.mjs +0 -312
  509. package/esm2020/plugins/list/normalizers/get-list-normalizer.mjs +0 -39
  510. package/esm2020/plugins/list/normalizers/normalize-list-item.mjs +0 -18
  511. package/esm2020/plugins/list/normalizers/normalize-no.mjs +0 -43
  512. package/esm2020/plugins/list/on-key-down-list.mjs +0 -33
  513. package/esm2020/plugins/list/queries/get-list-item-entry.mjs +0 -28
  514. package/esm2020/plugins/list/queries/get-start-list-item.mjs +0 -27
  515. package/esm2020/plugins/list/queries/has-list-in-list-item.mjs +0 -27
  516. package/esm2020/plugins/list/queries/is-in-list.mjs +0 -6
  517. package/esm2020/plugins/list/queries/is-list-nested.mjs +0 -10
  518. package/esm2020/plugins/list/queries/is-list.mjs +0 -5
  519. package/esm2020/plugins/list/queries/is-selection-at-list-item-start.mjs +0 -13
  520. package/esm2020/plugins/list/queries/is-selection-in-same-list-item.mjs +0 -17
  521. package/esm2020/plugins/list/transforms/insert-list-data.mjs +0 -72
  522. package/esm2020/plugins/list/transforms/insert-list-item.mjs +0 -73
  523. package/esm2020/plugins/list/transforms/move-list-item-down.mjs +0 -41
  524. package/esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +0 -43
  525. package/esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +0 -30
  526. package/esm2020/plugins/list/transforms/move-list-item-up.mjs +0 -78
  527. package/esm2020/plugins/list/transforms/unwrap-list.mjs +0 -10
  528. package/esm2020/plugins/mark/mark.editor.mjs +0 -28
  529. package/esm2020/plugins/mention/mention.plugin.mjs +0 -91
  530. package/esm2020/plugins/normalizers/remove-empty-nodes.mjs +0 -18
  531. package/esm2020/plugins/quick-insert/quick-insert.editor.mjs +0 -68
  532. package/esm2020/plugins/quick-insert/quick-insert.plugin.mjs +0 -104
  533. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +0 -104
  534. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +0 -189
  535. package/esm2020/plugins/table/table.editor.mjs +0 -209
  536. package/esm2020/plugins/table/table.plugin.mjs +0 -544
  537. package/esm2020/plugins/table/table.store.mjs +0 -426
  538. package/esm2020/plugins/table/table.types.mjs +0 -60
  539. package/esm2020/plugins/table/transforms/clear-cell.mjs +0 -14
  540. package/esm2020/plugins/table/transforms/clear-table-node.mjs +0 -27
  541. package/esm2020/plugins/table/transforms/insert-column.mjs +0 -69
  542. package/esm2020/plugins/table/transforms/insert-row.mjs +0 -50
  543. package/esm2020/plugins/table/transforms/insert-table.mjs +0 -15
  544. package/esm2020/plugins/table/transforms/remove-column.mjs +0 -51
  545. package/esm2020/plugins/table/transforms/remove-row.mjs +0 -48
  546. package/esm2020/plugins/table/transforms/remove-table.mjs +0 -49
  547. package/esm2020/plugins/table/utils/calc-anchor-position.mjs +0 -25
  548. package/esm2020/plugins/table/utils/cell-position.mjs +0 -60
  549. package/esm2020/plugins/table/utils/create-table-position.mjs +0 -10
  550. package/esm2020/plugins/table/utils/get-min-max-cell-index.mjs +0 -69
  551. package/esm2020/plugins/table/utils/get-select-cell-node.mjs +0 -23
  552. package/esm2020/plugins/table/utils/handle-cell.mjs +0 -25
  553. package/esm2020/plugins/table/utils/is-range-in-table.mjs +0 -16
  554. package/esm2020/plugins/table/utils/is-selection-in-table.mjs +0 -51
  555. package/esm2020/plugins/table/utils/merge-cell.mjs +0 -108
  556. package/esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs +0 -45
  557. package/esm2020/plugins/table/utils/split-cell.mjs +0 -29
  558. package/esm2020/plugins/table/utils/table-entry.mjs +0 -21
  559. package/esm2020/plugins/todo-item/todo-item.editor.mjs +0 -32
  560. package/esm2020/plugins/todo-item/todo-item.plugin.mjs +0 -93
  561. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +0 -83
  562. package/esm2020/queries/anchor-block-entry.mjs +0 -13
  563. package/esm2020/queries/anchor-block.mjs +0 -6
  564. package/esm2020/queries/anchor-inline-entry.mjs +0 -10
  565. package/esm2020/queries/find-node.mjs +0 -45
  566. package/esm2020/queries/get-above-by-type.mjs +0 -14
  567. package/esm2020/queries/get-above.mjs +0 -9
  568. package/esm2020/queries/get-anchor-block-entry.mjs +0 -8
  569. package/esm2020/queries/get-block-above.mjs +0 -10
  570. package/esm2020/queries/get-block-card-above.mjs +0 -10
  571. package/esm2020/queries/get-block-card-cursor.mjs +0 -5
  572. package/esm2020/queries/get-container-blocks.mjs +0 -12
  573. package/esm2020/queries/get-insert-elements-path.mjs +0 -44
  574. package/esm2020/queries/get-node.mjs +0 -10
  575. package/esm2020/queries/get-nodes-by-type.mjs +0 -15
  576. package/esm2020/queries/get-nodes.mjs +0 -7
  577. package/esm2020/queries/get-parent.mjs +0 -12
  578. package/esm2020/queries/get-plain-text.mjs +0 -16
  579. package/esm2020/queries/get-plugin-by-toolbar.mjs +0 -13
  580. package/esm2020/queries/get-point-from-location.mjs +0 -15
  581. package/esm2020/queries/get-rang-from-block-start.mjs +0 -16
  582. package/esm2020/queries/get-range-before.mjs +0 -17
  583. package/esm2020/queries/get-selection-nodes-by-type.mjs +0 -30
  584. package/esm2020/queries/get-text.mjs +0 -9
  585. package/esm2020/queries/get-toolbar-disabled.mjs +0 -13
  586. package/esm2020/queries/is-across-blocks.mjs +0 -7
  587. package/esm2020/queries/is-ancestor-empty.mjs +0 -6
  588. package/esm2020/queries/is-block-above-empty.mjs +0 -11
  589. package/esm2020/queries/is-block-active.mjs +0 -8
  590. package/esm2020/queries/is-block-card-cursor.mjs +0 -4
  591. package/esm2020/queries/is-contain-nested-type.mjs +0 -29
  592. package/esm2020/queries/is-container-type.mjs +0 -3
  593. package/esm2020/queries/is-empty-content-filter.mjs +0 -23
  594. package/esm2020/queries/is-empty-paragraph-by-path.mjs +0 -7
  595. package/esm2020/queries/is-empty-paragraph.mjs +0 -28
  596. package/esm2020/queries/is-global-collapsed.mjs +0 -5
  597. package/esm2020/queries/is-include-types.mjs +0 -12
  598. package/esm2020/queries/is-node-type-in.mjs +0 -9
  599. package/esm2020/queries/is-node-type.mjs +0 -15
  600. package/esm2020/queries/is-paragraph.mjs +0 -9
  601. package/esm2020/queries/is-range-across-blocks.mjs +0 -22
  602. package/esm2020/queries/is-start.mjs +0 -6
  603. package/esm2020/queries/some-node.mjs +0 -9
  604. package/esm2020/shortcuts/mark.mjs +0 -25
  605. package/esm2020/test/utils/with-plugin.mjs +0 -11
  606. package/esm2020/transforms/close-conversion-hint.mjs +0 -8
  607. package/esm2020/transforms/handle-continual-delete-backward.mjs +0 -18
  608. package/esm2020/transforms/handle-continual-insert-break.mjs +0 -20
  609. package/esm2020/transforms/insert-elements.mjs +0 -38
  610. package/esm2020/transforms/insert-paragraph.mjs +0 -6
  611. package/esm2020/transforms/move-children.mjs +0 -22
  612. package/esm2020/transforms/on-keydown-reset-block-type.mjs +0 -23
  613. package/esm2020/transforms/set-marks.mjs +0 -9
  614. package/esm2020/transforms/set-node.mjs +0 -6
  615. package/esm2020/transforms/un-hang-range.mjs +0 -11
  616. package/esm2020/transforms/un-wrap.mjs +0 -12
  617. package/esm2020/transforms/unwrap-nodes-by-type.mjs +0 -14
  618. package/esm2020/utils/copy-node.mjs +0 -32
  619. package/esm2020/utils/create-empty-paragraph.mjs +0 -14
  620. package/esm2020/utils/editor-uuid.mjs +0 -8
  621. package/esm2020/utils/fragment.mjs +0 -74
  622. package/esm2020/utils/get-editable-element-height.mjs +0 -6
  623. package/esm2020/utils/get-toolbar-class.mjs +0 -6
  624. package/esm2020/utils/index.mjs +0 -19
  625. package/esm2020/utils/insert-data-by-invalid-type.mjs +0 -62
  626. package/esm2020/utils/is-clean-empty-paragraph.mjs +0 -37
  627. package/esm2020/utils/is-inline.mjs +0 -9
  628. package/esm2020/utils/merge-element-options.mjs +0 -19
  629. package/esm2020/utils/scroll-into-view.mjs +0 -38
  630. package/fesm2015/worktile-theia.mjs +0 -16674
  631. package/fesm2015/worktile-theia.mjs.map +0 -1
  632. package/fesm2020/worktile-theia.mjs.map +0 -1
  633. /package/{esm2020 → esm2022}/components/column-resize/resize-ref.mjs +0 -0
  634. /package/{esm2020 → esm2022}/components/column-resize/selectors.mjs +0 -0
  635. /package/{esm2020 → esm2022}/components/index.mjs +0 -0
  636. /package/{esm2020 → esm2022}/components/listbox/listbox.type.mjs +0 -0
  637. /package/{esm2020 → esm2022}/constants/code.mjs +0 -0
  638. /package/{esm2020 → esm2022}/constants/color-select.mjs +0 -0
  639. /package/{esm2020 → esm2022}/constants/error.mjs +0 -0
  640. /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
  641. /package/{esm2020 → esm2022}/constants/node-types.mjs +0 -0
  642. /package/{esm2020 → esm2022}/constants/selector.mjs +0 -0
  643. /package/{esm2020 → esm2022}/constants/toolbar.mjs +0 -0
  644. /package/{esm2020 → esm2022}/core/create-plugin.mjs +0 -0
  645. /package/{esm2020 → esm2022}/core/create-toolbar.mjs +0 -0
  646. /package/{esm2020 → esm2022}/core/index.mjs +0 -0
  647. /package/{esm2020 → esm2022}/core/utils/flatten-deep-plugins.mjs +0 -0
  648. /package/{esm2020 → esm2022}/core/utils/get-plugin-options.mjs +0 -0
  649. /package/{esm2020 → esm2022}/core/utils/get-plugin.mjs +0 -0
  650. /package/{esm2020 → esm2022}/core/utils/get-plugins.mjs +0 -0
  651. /package/{esm2020 → esm2022}/core/utils/index.mjs +0 -0
  652. /package/{esm2020 → esm2022}/core/utils/merge-array.mjs +0 -0
  653. /package/{esm2020 → esm2022}/core/utils/merge-deep-plugins.mjs +0 -0
  654. /package/{esm2020 → esm2022}/core/utils/merge-options.mjs +0 -0
  655. /package/{esm2020 → esm2022}/core/utils/nested-structure-by-key.mjs +0 -0
  656. /package/{esm2020 → esm2022}/core/utils/plugins-by-key.mjs +0 -0
  657. /package/{esm2020 → esm2022}/core/with-theia.mjs +0 -0
  658. /package/{esm2020 → esm2022}/interfaces/element.mjs +0 -0
  659. /package/{esm2020 → esm2022}/interfaces/image.mjs +0 -0
  660. /package/{esm2020 → esm2022}/interfaces/index.mjs +0 -0
  661. /package/{esm2020 → esm2022}/interfaces/plugins/index.mjs +0 -0
  662. /package/{esm2020 → esm2022}/interfaces/plugins/no-infer.mjs +0 -0
  663. /package/{esm2020 → esm2022}/interfaces/plugins/plugin-key.mjs +0 -0
  664. /package/{esm2020 → esm2022}/interfaces/plugins/plugins.mjs +0 -0
  665. /package/{esm2020 → esm2022}/interfaces/upload.mjs +0 -0
  666. /package/{esm2020 → esm2022}/interfaces/utility/index.mjs +0 -0
  667. /package/{esm2020 → esm2022}/interfaces/utility/nested-structure-by-key.mjs +0 -0
  668. /package/{esm2020 → esm2022}/interfaces/utility/override-by-key.mjs +0 -0
  669. /package/{esm2020 → esm2022}/interfaces/utility/types.mjs +0 -0
  670. /package/{esm2020 → esm2022}/interfaces/valid-children-types.mjs +0 -0
  671. /package/{esm2020 → esm2022}/plugins/color/color.plugin.mjs +0 -0
  672. /package/{esm2020 → esm2022}/plugins/image/image.plugin.mjs +0 -0
  673. /package/{esm2020 → esm2022}/plugins/index.mjs +0 -0
  674. /package/{esm2020 → esm2022}/plugins/link/link.types.mjs +0 -0
  675. /package/{esm2020 → esm2022}/plugins/list/queries/get-list-item-sublist.mjs +0 -0
  676. /package/{esm2020 → esm2022}/plugins/list/queries/get-list-types.mjs +0 -0
  677. /package/{esm2020 → esm2022}/plugins/list/types.mjs +0 -0
  678. /package/{esm2020 → esm2022}/plugins/mention/index.mjs +0 -0
  679. /package/{esm2020 → esm2022}/plugins/mention/mention.type.mjs +0 -0
  680. /package/{esm2020 → esm2022}/plugins/public-api.mjs +0 -0
  681. /package/{esm2020 → esm2022}/plugins/soft-break/soft-break.plugin.mjs +0 -0
  682. /package/{esm2020 → esm2022}/plugins/soft-break/soft-break.types.mjs +0 -0
  683. /package/{esm2020 → esm2022}/plugins/table/transforms/index.mjs +0 -0
  684. /package/{esm2020 → esm2022}/plugins/table/utils/add-columns.mjs +0 -0
  685. /package/{esm2020 → esm2022}/plugins/table/utils/calc-span.mjs +0 -0
  686. /package/{esm2020 → esm2022}/plugins/table/utils/calculate-table.mjs +0 -0
  687. /package/{esm2020 → esm2022}/plugins/table/utils/create-cell.mjs +0 -0
  688. /package/{esm2020 → esm2022}/plugins/table/utils/create-row.mjs +0 -0
  689. /package/{esm2020 → esm2022}/plugins/table/utils/create-table.mjs +0 -0
  690. /package/{esm2020 → esm2022}/plugins/table/utils/get-grid-columns.mjs +0 -0
  691. /package/{esm2020 → esm2022}/plugins/table/utils/index.mjs +0 -0
  692. /package/{esm2020 → esm2022}/plugins/table/utils/is-header-row.mjs +0 -0
  693. /package/{esm2020 → esm2022}/plugins/table/utils/is-legal-table.mjs +0 -0
  694. /package/{esm2020 → esm2022}/plugins/table/utils/is-virtual-key.mjs +0 -0
  695. /package/{esm2020 → esm2022}/plugins/table/utils/next-path.mjs +0 -0
  696. /package/{esm2020 → esm2022}/plugins/table/utils/normalize-table.mjs +0 -0
  697. /package/{esm2020 → esm2022}/plugins/table/utils/remove-columns.mjs +0 -0
  698. /package/{esm2020 → esm2022}/plugins/table/utils/remove-row-column.mjs +0 -0
  699. /package/{esm2020 → esm2022}/plugins/table/utils/set-cells-background-color.mjs +0 -0
  700. /package/{esm2020 → esm2022}/plugins/table/utils/set-node-options.mjs +0 -0
  701. /package/{esm2020 → esm2022}/plugins/table/utils/table-position.mjs +0 -0
  702. /package/{esm2020 → esm2022}/plugins/vertical-align/vertical-align.editor.mjs +0 -0
  703. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  704. /package/{esm2020 → esm2022}/queries/find-path.mjs +0 -0
  705. /package/{esm2020 → esm2022}/queries/get-directly-parent.mjs +0 -0
  706. /package/{esm2020 → esm2022}/queries/get-last-child-path.mjs +0 -0
  707. /package/{esm2020 → esm2022}/queries/get-next-sibling-nodes.mjs +0 -0
  708. /package/{esm2020 → esm2022}/queries/get-previous-path.mjs +0 -0
  709. /package/{esm2020 → esm2022}/queries/index.mjs +0 -0
  710. /package/{esm2020 → esm2022}/queries/is-ancestor.mjs +0 -0
  711. /package/{esm2020 → esm2022}/queries/is-collapsed.mjs +0 -0
  712. /package/{esm2020 → esm2022}/queries/is-descendant.mjs +0 -0
  713. /package/{esm2020 → esm2022}/queries/is-first-child.mjs +0 -0
  714. /package/{esm2020 → esm2022}/queries/is-point-at-root.mjs +0 -0
  715. /package/{esm2020 → esm2022}/queries/is-range-at-root.mjs +0 -0
  716. /package/{esm2020 → esm2022}/test/index.mjs +0 -0
  717. /package/{esm2020 → esm2022}/transforms/apply-deep-to-nodes.mjs +0 -0
  718. /package/{esm2020 → esm2022}/transforms/index.mjs +0 -0
  719. /package/{esm2020 → esm2022}/transforms/merge-deep-to-nodes.mjs +0 -0
  720. /package/{esm2020 → esm2022}/utils/blob.mjs +0 -0
  721. /package/{esm2020 → esm2022}/utils/cast-array.mjs +0 -0
  722. /package/{esm2020 → esm2022}/utils/color-picker.mjs +0 -0
  723. /package/{esm2020 → esm2022}/utils/common.mjs +0 -0
  724. /package/{esm2020 → esm2022}/utils/data-transform.mjs +0 -0
  725. /package/{esm2020 → esm2022}/utils/id-creator.mjs +0 -0
  726. /package/{esm2020 → esm2022}/utils/lodash.mjs +0 -0
  727. /package/{esm2020 → esm2022}/utils/refocus.mjs +0 -0
  728. /package/{esm2020 → esm2022}/utils/weak-maps.mjs +0 -0
  729. /package/{esm2020 → esm2022}/worktile-theia.mjs +0 -0
@@ -0,0 +1,126 @@
1
+ import { Transforms, Node, Editor, Path, Element } from 'slate';
2
+ import { ElementKinds, LIST_BLOCK_TYPES } from '../../constants/node-types';
3
+ import { isNodeTypeList } from './queries/is-node-type-list';
4
+ import * as TheQueries from '../../queries';
5
+ import * as TheTransforms from '../../transforms';
6
+ export const ListEditor = {
7
+ isList(editor, element, type) {
8
+ return Editor.isBlock(editor, element) && element.type === type;
9
+ },
10
+ toggleList(editor, type, startIndex) {
11
+ if (!editor.selection) {
12
+ return;
13
+ }
14
+ if (!startIndex) {
15
+ startIndex = 1;
16
+ }
17
+ const types = [ElementKinds.bulletedList, ElementKinds.numberedList];
18
+ Editor.withoutNormalizing(editor, () => {
19
+ const [...listItems] = Editor.nodes(editor, {
20
+ match: (n) => Element.isElement(n) && n.type === ElementKinds.listItem,
21
+ mode: 'lowest'
22
+ });
23
+ const firstListItemPath = listItems.length && listItems[0][1];
24
+ const activeListPath = listItems.length && Path.parent(firstListItemPath);
25
+ const activeListNode = listItems.length && Node.get(editor, activeListPath);
26
+ // 同级且类型相同:unwrap
27
+ const isLowestActive = listItems.length &&
28
+ listItems.every(([, path]) => activeListNode.type === type && (Path.isSibling(firstListItemPath, path) || Path.equals(firstListItemPath, path)));
29
+ if (isLowestActive) {
30
+ const upListItem = Path.parent(activeListPath);
31
+ Transforms.unwrapNodes(editor, {
32
+ at: editor.selection,
33
+ match: node => node === activeListNode,
34
+ split: true,
35
+ mode: 'lowest'
36
+ });
37
+ if (upListItem && Node.get(editor, upListItem).type === ElementKinds.listItem) {
38
+ Transforms.moveNodes(editor, {
39
+ at: editor.selection,
40
+ to: Path.next(upListItem),
41
+ match: (n) => Element.isElement(n) && n.type === ElementKinds.listItem
42
+ });
43
+ }
44
+ else {
45
+ Transforms.unwrapNodes(editor, {
46
+ match: (n) => Element.isElement(n) && n.type === ElementKinds.listItem
47
+ });
48
+ }
49
+ return;
50
+ }
51
+ // 跨级、同级且类型不同
52
+ if (activeListNode && types.includes(activeListNode.type)) {
53
+ Transforms.setNodes(editor, { type }, { match: (n) => Element.isElement(n) && n.type !== type && types.includes(n.type) });
54
+ return;
55
+ }
56
+ // wrap
57
+ ListEditor.buildListItem(editor);
58
+ Transforms.wrapNodes(editor, { type, children: [], start: startIndex }, {
59
+ at: editor.selection,
60
+ match: (n) => Element.isElement(n) && n.type === ElementKinds.listItem
61
+ });
62
+ });
63
+ },
64
+ unwrapList(editor) {
65
+ Editor.withoutNormalizing(editor, () => {
66
+ TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true, mode: 'all' });
67
+ TheTransforms.unwrapNodesByType(editor, [ElementKinds.listItem], { split: true, mode: 'all' });
68
+ });
69
+ },
70
+ wrapList(editor, type) {
71
+ Editor.withoutNormalizing(editor, () => {
72
+ const listItem = {
73
+ type: ElementKinds.listItem,
74
+ children: []
75
+ };
76
+ const list = {
77
+ type,
78
+ children: []
79
+ };
80
+ Transforms.wrapNodes(editor, list, { split: true });
81
+ Transforms.wrapNodes(editor, listItem, { split: true });
82
+ });
83
+ },
84
+ isActive(editor, type) {
85
+ const [match] = TheQueries.getNodesByType(editor, type);
86
+ return !!match;
87
+ },
88
+ getActiveList(editor) {
89
+ const [match] = TheQueries.getNodesByType(editor, LIST_BLOCK_TYPES);
90
+ return match;
91
+ },
92
+ buildListItem(editor) {
93
+ const nodes = Editor.nodes(editor, {
94
+ match: (n) => Editor.isBlock(editor, n),
95
+ mode: 'lowest'
96
+ });
97
+ for (const [node, path] of nodes) {
98
+ if (!Editor.isVoid(editor, node) && Element.isElement(node) && node.type !== ElementKinds.paragraph) {
99
+ Transforms.setNodes(editor, { type: ElementKinds.paragraph, checked: undefined }, // todo remove checked
100
+ { at: path });
101
+ }
102
+ else if (Element.isElement(node) && node.type === ElementKinds.paragraph) {
103
+ let { textIndent } = node;
104
+ if (textIndent) {
105
+ Transforms.setNodes(editor, { textIndent: undefined, indent: undefined }, // remove indent
106
+ { at: path });
107
+ }
108
+ }
109
+ if (Node.parent(editor, path).type !== ElementKinds.listItem) {
110
+ Transforms.wrapNodes(editor, { type: ElementKinds.listItem, children: [] }, {
111
+ at: path,
112
+ split: true
113
+ });
114
+ }
115
+ }
116
+ },
117
+ buildInsertDataChildren(node) {
118
+ const { children } = node;
119
+ const listItem = children[0];
120
+ if (isNodeTypeList(node) && Element.isElement(listItem) && listItem.children[0].type === ElementKinds.paragraph) {
121
+ return node;
122
+ }
123
+ return ListEditor.buildInsertDataChildren(listItem);
124
+ }
125
+ };
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2xpc3QuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsTUFBTSxDQUFDLE1BQWlCLEVBQUUsT0FBc0IsRUFBRSxJQUEyRDtRQUN6RyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO0lBQ3BFLENBQUM7SUFDRCxVQUFVLENBQUMsTUFBaUIsRUFBRSxJQUEyRCxFQUFFLFVBQW1CO1FBQzFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0s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LFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDaEksT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU8sVUFBVSxDQUFDLHVCQUF1QixDQUFDLFFBQXlCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zZm9ybXMsIE5vZGUsIEVkaXRvciwgUGF0aCwgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcywgTElTVF9CTE9DS19UWVBFUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcbmltcG9ydCB7IEN1c3RvbUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgaXNOb2RlVHlwZUxpc3QgfSBmcm9tICcuL3F1ZXJpZXMvaXMtbm9kZS10eXBlLWxpc3QnO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IExpc3RFZGl0b3IgPSB7XG4gICAgaXNMaXN0KGVkaXRvcjogVGhlRWRpdG9yLCBlbGVtZW50OiBDdXN0b21FbGVtZW50LCB0eXBlOiBFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0IHwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCkge1xuICAgICAgICByZXR1cm4gRWRpdG9yLmlzQmxvY2soZWRpdG9yLCBlbGVtZW50KSAmJiBlbGVtZW50LnR5cGUgPT09IHR5cGU7XG4gICAgfSxcbiAgICB0b2dnbGVMaXN0KGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0IHwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCwgc3RhcnRJbmRleD86IG51bWJlcikge1xuICAgICAgICBpZiAoIWVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHR5cGVzID0gW0VsZW1lbnRLaW5kcy5idWxsZXRlZExpc3QsIEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3RdO1xuXG4gICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbLi4ubGlzdEl0ZW1zXSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICBtYXRjaDogKG46IEN1c3RvbUVsZW1lbnQpID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpc3RJdGVtLFxuICAgICAgICAgICAgICAgIG1vZGU6ICdsb3dlc3QnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0TGlzdEl0ZW1QYXRoID0gbGlzdEl0ZW1zLmxlbmd0aCAmJiBsaXN0SXRlbXNbMF1bMV07XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVMaXN0UGF0aCA9IGxpc3RJdGVtcy5sZW5ndGggJiYgUGF0aC5wYXJlbnQoZmlyc3RMaXN0SXRlbVBhdGgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlTGlzdE5vZGUgPSBsaXN0SXRlbXMubGVuZ3RoICYmIChOb2RlLmdldChlZGl0b3IsIGFjdGl2ZUxpc3RQYXRoKSBhcyBDdXN0b21FbGVtZW50KTtcblxuICAgICAgICAgICAgLy8g5ZCM57qn5LiU57G75Z6L55u45ZCM77yadW53cmFwXG4gICAgICAgICAgICBjb25zdCBpc0xvd2VzdEFjdGl2ZSA9XG4gICAgICAgICAgICAgICAgbGlzdEl0ZW1zLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGxpc3RJdGVtcy5ldmVyeShcbiAgICAgICAgICAgICAgICAgICAgKFssIHBhdGhdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlTGlzdE5vZGUudHlwZSA9PT0gdHlwZSAmJiAoUGF0aC5pc1NpYmxpbmcoZmlyc3RMaXN0SXRlbVBhdGgsIHBhdGgpIHx8IFBhdGguZXF1YWxzKGZpcnN0TGlzdEl0ZW1QYXRoLCBwYXRoKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGlzTG93ZXN0QWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBMaXN0SXRlbSA9IFBhdGgucGFyZW50KGFjdGl2ZUxpc3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnVud3JhcE5vZGVzKGVkaXRvciwge1xuICAgICAgICAgICAgICAgICAgICBhdDogZWRpdG9yLnNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gbm9kZSA9PT0gYWN0aXZlTGlzdE5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHNwbGl0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiAnbG93ZXN0J1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh1cExpc3RJdGVtICYmIChOb2RlLmdldChlZGl0b3IsIHVwTGlzdEl0ZW0pIGFzIEN1c3RvbUVsZW1lbnQpLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saXN0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmVOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBlZGl0b3Iuc2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG86IFBhdGgubmV4dCh1cExpc3RJdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiAobjogQ3VzdG9tRWxlbWVudCkgPT4gRWxlbWVudC5pc0VsZW1lbnQobikgJiYgbi50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy51bndyYXBOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiAobjogQ3VzdG9tRWxlbWVudCkgPT4gRWxlbWVudC5pc0VsZW1lbnQobikgJiYgbi50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g6Leo57qn44CB5ZCM57qn5LiU57G75Z6L5LiN5ZCMXG4gICAgICAgICAgICBpZiAoYWN0aXZlTGlzdE5vZGUgJiYgdHlwZXMuaW5jbHVkZXMoYWN0aXZlTGlzdE5vZGUudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZSB9IGFzIEN1c3RvbUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHsgbWF0Y2g6IChuOiBDdXN0b21FbGVtZW50KSA9PiBFbGVtZW50LmlzRWxlbWVudChuKSAmJiBuLnR5cGUgIT09IHR5cGUgJiYgdHlwZXMuaW5jbHVkZXMobi50eXBlKSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHdyYXBcbiAgICAgICAgICAgIExpc3RFZGl0b3IuYnVpbGRMaXN0SXRlbShlZGl0b3IpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCB7IHR5cGUsIGNoaWxkcmVuOiBbXSwgc3RhcnQ6IHN0YXJ0SW5kZXggfSBhcyBDdXN0b21FbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgYXQ6IGVkaXRvci5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgbWF0Y2g6IChuOiBDdXN0b21FbGVtZW50KSA9PiBFbGVtZW50LmlzRWxlbWVudChuKSAmJiBuLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saXN0SXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgdW53cmFwTGlzdChlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy51bndyYXBOb2Rlc0J5VHlwZShlZGl0b3IsIFtFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0LCBFbGVtZW50S2luZHMubnVtYmVyZWRMaXN0XSwgeyBzcGxpdDogdHJ1ZSwgbW9kZTogJ2FsbCcgfSk7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnVud3JhcE5vZGVzQnlUeXBlKGVkaXRvciwgW0VsZW1lbnRLaW5kcy5saXN0SXRlbV0sIHsgc3BsaXQ6IHRydWUsIG1vZGU6ICdhbGwnIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHdyYXBMaXN0KGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0IHwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCkge1xuICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGlzdEl0ZW06IEN1c3RvbUVsZW1lbnQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogRWxlbWVudEtpbmRzLmxpc3RJdGVtLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSB7XG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLndyYXBOb2RlcyhlZGl0b3IsIGxpc3QsIHsgc3BsaXQ6IHRydWUgfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLndyYXBOb2RlcyhlZGl0b3IsIGxpc3RJdGVtLCB7IHNwbGl0OiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGlzQWN0aXZlKGVkaXRvcjogVGhlRWRpdG9yLCB0eXBlOiBFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0IHwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCkge1xuICAgICAgICBjb25zdCBbbWF0Y2hdID0gVGhlUXVlcmllcy5nZXROb2Rlc0J5VHlwZShlZGl0b3IsIHR5cGUpO1xuICAgICAgICByZXR1cm4gISFtYXRjaDtcbiAgICB9LFxuICAgIGdldEFjdGl2ZUxpc3QoZWRpdG9yOiBUaGVFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUoZWRpdG9yLCBMSVNUX0JMT0NLX1RZUEVTIGFzIHN0cmluZ1tdKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH0sXG4gICAgYnVpbGRMaXN0SXRlbShlZGl0b3I6IFRoZUVkaXRvcikge1xuICAgICAgICBjb25zdCBub2RlcyA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgIG1hdGNoOiAobjogQ3VzdG9tRWxlbWVudCkgPT4gRWRpdG9yLmlzQmxvY2soZWRpdG9yLCBuKSxcbiAgICAgICAgICAgIG1vZGU6ICdsb3dlc3QnXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IFtub2RlLCBwYXRoXSBvZiBub2Rlcykge1xuICAgICAgICAgICAgaWYgKCFFZGl0b3IuaXNWb2lkKGVkaXRvciwgbm9kZSkgJiYgRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgKG5vZGUgYXMgYW55KS50eXBlICE9PSBFbGVtZW50S2luZHMucGFyYWdyYXBoKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGgsIGNoZWNrZWQ6IHVuZGVmaW5lZCB9IGFzIGFueSwgLy8gdG9kbyByZW1vdmUgY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgICB7IGF0OiBwYXRoIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiAobm9kZSBhcyBDdXN0b21FbGVtZW50KS50eXBlID09PSBFbGVtZW50S2luZHMucGFyYWdyYXBoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgdGV4dEluZGVudCB9ID0gbm9kZSBhcyBDdXN0b21FbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0SW5kZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHRleHRJbmRlbnQ6IHVuZGVmaW5lZCwgaW5kZW50OiB1bmRlZmluZWQgfSBhcyBDdXN0b21FbGVtZW50LCAvLyByZW1vdmUgaW5kZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGF0OiBwYXRoIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKE5vZGUucGFyZW50KGVkaXRvciwgcGF0aCkgYXMgQ3VzdG9tRWxlbWVudCkudHlwZSAhPT0gRWxlbWVudEtpbmRzLmxpc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiBFbGVtZW50S2luZHMubGlzdEl0ZW0sIGNoaWxkcmVuOiBbXSB9IGFzIEN1c3RvbUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGJ1aWxkSW5zZXJ0RGF0YUNoaWxkcmVuKG5vZGU6IEN1c3RvbUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZTtcbiAgICAgICAgY29uc3QgbGlzdEl0ZW0gPSBjaGlsZHJlblswXTtcbiAgICAgICAgaWYgKGlzTm9kZVR5cGVMaXN0KG5vZGUpICYmIEVsZW1lbnQuaXNFbGVtZW50KGxpc3RJdGVtKSAmJiAobGlzdEl0ZW0uY2hpbGRyZW5bMF0gYXMgQ3VzdG9tRWxlbWVudCkudHlwZSA9PT0gRWxlbWVudEtpbmRzLnBhcmFncmFwaCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTGlzdEVkaXRvci5idWlsZEluc2VydERhdGFDaGlsZHJlbihsaXN0SXRlbSBhcyBDdXN0b21FbGVtZW50KTtcbiAgICB9XG59O1xuIl19
@@ -0,0 +1,312 @@
1
+ import { Transforms, Node, Editor, Path } from 'slate';
2
+ import { AngularEditor, getPlainText } from 'slate-angular';
3
+ import { CLIPBOARD_FORMAT_KEY, ElementKinds, PluginMenuIcons, ThePluginMenuItemType } from '../../constants';
4
+ import * as TheQueries from '../../queries';
5
+ import * as TheTransforms from '../../transforms';
6
+ import { isList } from './queries/is-list';
7
+ import { isInList } from './queries/is-in-list';
8
+ import { isListNested } from './queries/is-list-nested';
9
+ import { getListTypes } from './queries/get-list-types';
10
+ import { getStartListItem } from './queries/get-start-list-item';
11
+ import { isSingleListItem } from './queries/is-single-list-item';
12
+ import { getListItemEntry } from './queries/get-list-item-entry';
13
+ import { hasListInListItem, hasStableListInListItem, hasStableListItem } from './queries/has-list-in-list-item';
14
+ import { isSelectionAtListItemStart } from './queries/is-selection-at-list-item-start';
15
+ import { insertListData } from './transforms/insert-list-data';
16
+ import { moveListItemUp } from './transforms/move-list-item-up';
17
+ import { insertListItem } from './transforms/insert-list-item';
18
+ import { unwrapList } from './transforms/unwrap-list';
19
+ import { moveListItemSublistItemsToListItemSublist } from './transforms/move-list-item-sublist-items-to-list-item-sublist';
20
+ import { getListNormalizer } from './normalizers/get-list-normalizer';
21
+ import { onKeyDownList } from './on-key-down-list';
22
+ import { TheNumberedListComponent } from './components/numbered-list.component';
23
+ import { TheBulletedListComponent } from './components/bulleted-list.component';
24
+ import { TheListItemComponent } from './components/list-item.component';
25
+ import { extractFragment } from '../../utils/fragment';
26
+ import { isSelectionInSameListItem } from './queries/is-selection-in-same-list-item';
27
+ import { createPluginFactory, getPluginOptions } from '../../core';
28
+ import { PluginKeys } from '../../interfaces';
29
+ import { ListEditor } from './list.editor';
30
+ export const withList = (editor) => {
31
+ const { insertBreak, deleteBackward, onKeydown, insertData, setFragmentData, renderElement } = editor;
32
+ const validLiChildrenTypes = getPluginOptions(editor, PluginKeys.list)?.validLiChildrenTypes ?? [];
33
+ const resetBlockTypesListRule = {
34
+ types: [ElementKinds.listItem],
35
+ defaultType: ElementKinds.paragraph,
36
+ onReset: (_editor) => unwrapList(_editor)
37
+ };
38
+ editor.insertBreak = () => {
39
+ const node = TheQueries.anchorBlock(editor);
40
+ if (!node) {
41
+ insertBreak();
42
+ return;
43
+ }
44
+ const isVoid = Editor.isVoid(editor, node);
45
+ if (isVoid) {
46
+ insertBreak();
47
+ return;
48
+ }
49
+ const listEntry = getListItemEntry(editor, {});
50
+ if (listEntry) {
51
+ let moved;
52
+ const { list, listItem } = listEntry;
53
+ const [listItemNode, listItemPath] = listItem;
54
+ const cursor = editor.selection.focus;
55
+ const isStart = Editor.isStart(editor, cursor, listItemPath);
56
+ // deprecated
57
+ // 如果有子级
58
+ if (hasListInListItem(listItemNode)) {
59
+ /**
60
+ * If selection is at the end of li,
61
+ * insert below li where children will be moved.
62
+ */
63
+ if (Editor.isEnd(editor, cursor, listItemPath)) {
64
+ return Transforms.insertNodes(editor, {
65
+ type: ElementKinds.listItem,
66
+ children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]
67
+ }, { at: Path.next(listItemPath), select: true });
68
+ }
69
+ /**
70
+ * 如果选区是在listItem的开头,则在listItem上方插入
71
+ */
72
+ if (isStart) {
73
+ return Transforms.insertNodes(editor, {
74
+ type: ElementKinds.listItem,
75
+ children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]
76
+ }, { at: listItemPath });
77
+ }
78
+ }
79
+ // 如果选择的listItem为空则将其向上移动
80
+ if (isStart && TheQueries.isBlockAboveEmpty(editor)) {
81
+ moved = moveListItemUp(editor, { list, listItem });
82
+ if (moved)
83
+ return;
84
+ }
85
+ const didReset = TheTransforms.onKeyDownResetBlockType({
86
+ rules: [
87
+ {
88
+ ...resetBlockTypesListRule,
89
+ predicate: () => !moved && isStart && TheQueries.isBlockAboveEmpty(editor)
90
+ }
91
+ ]
92
+ })(null, editor);
93
+ if (didReset) {
94
+ return;
95
+ }
96
+ /**
97
+ * Add a new list item if selection is in a LIST_ITEM > p.type.
98
+ */
99
+ if (!moved) {
100
+ const inserted = insertListItem(editor);
101
+ if (inserted) {
102
+ return;
103
+ }
104
+ }
105
+ }
106
+ insertBreak();
107
+ };
108
+ editor.setFragmentData = unit => {
109
+ const { selection } = editor;
110
+ const [start] = Editor.edges(editor, selection);
111
+ if (isInList(editor, start)) {
112
+ const fragmentData = editor.getFragment();
113
+ const fragmentElement = fragmentData[0];
114
+ if (getListTypes().includes(fragmentElement.type)) {
115
+ const startNodes = getStartListItem([fragmentElement.children[0]]);
116
+ const children = startNodes.concat(fragmentElement.children.slice(1));
117
+ let fragmentNodes = [
118
+ {
119
+ ...fragmentElement,
120
+ children
121
+ }
122
+ ];
123
+ if (isSelectionInSameListItem(editor)) {
124
+ // 仅仅复制列表中的内容
125
+ fragmentNodes = children[0].children;
126
+ }
127
+ const fragment = fragmentNodes.concat(fragmentData.slice(1));
128
+ const domRange = AngularEditor.toDOMRange(editor, selection);
129
+ const contents = domRange.cloneContents();
130
+ const stringObj = JSON.stringify(fragment);
131
+ const encoded = window.btoa(encodeURIComponent(stringObj));
132
+ unit.setData(`application/${CLIPBOARD_FORMAT_KEY}`, encoded);
133
+ const div = document.createElement('div');
134
+ div.appendChild(contents);
135
+ div.setAttribute('hidden', 'true');
136
+ document.body.appendChild(div);
137
+ unit.setData('text/html', div.innerHTML);
138
+ unit.setData('text/plain', getPlainText(div));
139
+ document.body.removeChild(div);
140
+ return;
141
+ }
142
+ }
143
+ setFragmentData(unit);
144
+ };
145
+ editor.deleteBackward = unit => {
146
+ const res = getListItemEntry(editor, {});
147
+ if (res && isSelectionAtListItemStart(editor)) {
148
+ const { list, listItem } = res;
149
+ const [, listPath] = list;
150
+ const [listItemNode, listItemPath] = listItem;
151
+ const previousListItemPath = TheQueries.getPreviousPath(listItemPath);
152
+ if (previousListItemPath) {
153
+ const beforePoint = Editor.before(editor, listItemPath);
154
+ const parentPath = Path.parent(beforePoint.path);
155
+ const parentNode = Node.get(editor, parentPath);
156
+ if (Editor.isVoid(editor, parentNode)) {
157
+ Editor.withoutNormalizing(editor, () => {
158
+ TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], {
159
+ split: true
160
+ });
161
+ TheTransforms.unwrapNodesByType(editor, ElementKinds.listItem);
162
+ });
163
+ return;
164
+ }
165
+ }
166
+ if (previousListItemPath && hasStableListInListItem(listItemNode)) {
167
+ Editor.withoutNormalizing(editor, () => {
168
+ deleteBackward(unit);
169
+ const [previousListItemNode] = Editor.node(editor, previousListItemPath);
170
+ moveListItemSublistItemsToListItemSublist(editor, {
171
+ fromListItem: listItem,
172
+ toListItem: [previousListItemNode, previousListItemPath],
173
+ start: false
174
+ }, {});
175
+ });
176
+ return;
177
+ }
178
+ // move listItem children to before listItem
179
+ if (listItemNode.children.length > 1) {
180
+ Editor.withoutNormalizing(editor, () => {
181
+ const beforePathRef = Editor.pathRef(editor, listItemPath);
182
+ const beforePoint = Editor.before(editor, listItemPath);
183
+ const startPoint = Editor.start(editor, listItemPath);
184
+ const endPoint = Editor.end(editor, listItemPath);
185
+ const isInFirstChild = !isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath);
186
+ const to = isInFirstChild ? listPath : Path.next(Path.parent(beforePoint.path));
187
+ Transforms.moveNodes(editor, {
188
+ at: Editor.range(editor, startPoint, endPoint),
189
+ to,
190
+ match: node => listItemNode.children.includes(node)
191
+ });
192
+ Transforms.delete(editor, { at: beforePathRef.unref() });
193
+ if (!isInFirstChild) {
194
+ deleteBackward(unit);
195
+ }
196
+ });
197
+ return;
198
+ }
199
+ // deprecated
200
+ if (!isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath)) {
201
+ unwrapList(editor);
202
+ return;
203
+ }
204
+ }
205
+ deleteBackward(unit);
206
+ };
207
+ editor.insertData = (data) => {
208
+ const text = data.getData('text/plain');
209
+ const fragment = extractFragment(data);
210
+ const aboveEntry = Editor.above(editor, {
211
+ match: (n) => Editor.isBlock(editor, n) && n.type === ElementKinds.listItem
212
+ });
213
+ if (fragment) {
214
+ const res = getListItemEntry(editor, {});
215
+ if (fragment.length === 1 &&
216
+ isList(fragment[0]) &&
217
+ aboveEntry &&
218
+ !isSingleListItem(fragment[0]) &&
219
+ hasStableListItem(res.listItem[0])) {
220
+ insertListData(editor, { fromList: fragment[0], toListItemEntry: aboveEntry });
221
+ return;
222
+ }
223
+ }
224
+ insertData(data);
225
+ };
226
+ editor.onKeydown = (event) => {
227
+ const isContinue = !onKeyDownList(event, editor);
228
+ if (isContinue) {
229
+ onKeydown(event);
230
+ }
231
+ };
232
+ editor.normalizeNode = getListNormalizer(editor, { validLiChildrenTypes: validLiChildrenTypes });
233
+ editor.renderElement = (element) => {
234
+ if (element.type === ElementKinds.numberedList) {
235
+ return TheNumberedListComponent;
236
+ }
237
+ if (element.type === ElementKinds.bulletedList) {
238
+ return TheBulletedListComponent;
239
+ }
240
+ if (element.type === ElementKinds.listItem) {
241
+ return TheListItemComponent;
242
+ }
243
+ return renderElement(element);
244
+ };
245
+ return editor;
246
+ };
247
+ const listOptions = {
248
+ validLiChildrenTypes: [ElementKinds.image],
249
+ allowParentTypes: [ElementKinds.listItem, ElementKinds.tableCell, ElementKinds.blockquote]
250
+ };
251
+ export const createListPlugin = createPluginFactory({
252
+ key: PluginKeys.list,
253
+ withOverrides: withList,
254
+ plugins: [
255
+ {
256
+ key: PluginKeys.numberedList,
257
+ options: listOptions
258
+ },
259
+ {
260
+ key: PluginKeys.bulletedList,
261
+ options: listOptions
262
+ }
263
+ ],
264
+ nestedStructureByKey: {
265
+ [ElementKinds.bulletedList]: ElementKinds.listItem,
266
+ [ElementKinds.numberedList]: ElementKinds.listItem
267
+ },
268
+ toolbarItems: [
269
+ {
270
+ key: ElementKinds.numberedList,
271
+ icon: 'list-ordered',
272
+ name: '有序列表',
273
+ execute: editor => ListEditor.toggleList(editor, ElementKinds.numberedList),
274
+ active: editor => ListEditor.isActive(editor, ElementKinds.numberedList)
275
+ },
276
+ {
277
+ key: ElementKinds.bulletedList,
278
+ icon: 'list-bullet',
279
+ name: '无序列表',
280
+ execute: editor => ListEditor.toggleList(editor, ElementKinds.bulletedList),
281
+ active: editor => ListEditor.isActive(editor, ElementKinds.bulletedList)
282
+ }
283
+ ],
284
+ menuItems: [
285
+ {
286
+ key: ElementKinds.numberedList,
287
+ keywords: 'yxlb,youxuliebiao,numbered list,numberedlist,有序列表',
288
+ execute: editor => ListEditor.toggleList(editor, ElementKinds.numberedList),
289
+ active: editor => ListEditor.isActive(editor, ElementKinds.numberedList),
290
+ type: ThePluginMenuItemType.icon,
291
+ name: '有序列表',
292
+ description: '插入有序列表',
293
+ displayKey: '/yxlb',
294
+ icon: 'list-ordered',
295
+ menuIcon: PluginMenuIcons.numberedList
296
+ },
297
+ {
298
+ key: ElementKinds.bulletedList,
299
+ keywords: 'wxlb,wuxuliebiao,bulletedlist,bulleted list,无序列表',
300
+ execute: editor => ListEditor.toggleList(editor, ElementKinds.bulletedList),
301
+ active: editor => ListEditor.isActive(editor, ElementKinds.bulletedList),
302
+ type: ThePluginMenuItemType.icon,
303
+ name: '无序列表',
304
+ description: '插入无序列表',
305
+ displayKey: '/wxlb',
306
+ icon: 'list-bullet',
307
+ menuIcon: PluginMenuIcons.bulletedList
308
+ }
309
+ ],
310
+ options: listOptions
311
+ });
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2xpc3QucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQXFCLE1BQU0sT0FBTyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0csT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxj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RUFBRSxrREFBa0Q7WUFDNUQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUMzRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQ3hFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxJQUFJO1lBQ2hDLElBQUksRUFBRSxNQUFNO1lBQ1osV0FBVyxFQUFFLFFBQVE7WUFDckIsVUFBVSxFQUFFLE9BQU87WUFDbkIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxZQUFZO1NBQ3pDO0tBQ0o7SUFDRCxPQUFPLEVBQUUsV0FBVztDQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2Zvcm1zLCBOb2RlLCBFZGl0b3IsIFBhdGgsIEFuY2VzdG9yLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgZ2V0UGxhaW5UZXh0IH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBDTElQQk9BUkRfRk9STUFUX0tFWSwgRWxlbWVudEtpbmRzLCBQbHVnaW5NZW51SWNvbnMsIFRoZVBsdWdpbk1lbnVJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGlzTGlzdCB9IGZyb20gJy4vcXVlcmllcy9pcy1saXN0JztcbmltcG9ydCB7IGlzSW5MaXN0IH0gZnJvbSAnLi9xdWVyaWVzL2lzLWluLWxpc3QnO1xuaW1wb3J0IHsgaXNMaXN0TmVzdGVkIH0gZnJvbSAnLi9xdWVyaWVzL2lzLWxpc3QtbmVzdGVkJztcbmltcG9ydCB7IGdldExpc3RUeXBlcyB9IGZyb20gJy4vcXVlcmllcy9nZXQtbGlzdC10eXBlcyc7XG5pbXBvcnQgeyBnZXRTdGFydExpc3RJdGVtIH0gZnJvbSAnLi9xdWVyaWVzL2dldC1zdGFydC1saXN0LWl0ZW0nO1xuaW1wb3J0IHsgaXNTaW5nbGVMaXN0SXRlbSB9IGZyb20gJy4vcXVlcmllcy9pcy1zaW5nbGUtbGlzdC1pdGVtJztcbmltcG9ydCB7IGdldExpc3RJdGVtRW50cnkgfSBmcm9tICcuL3F1ZXJpZXMvZ2V0LWxpc3QtaXRlbS1lbnRyeSc7XG5pbXBvcnQgeyBoYXNMaXN0SW5MaXN0SXRlbSwgaGFzU3RhYmxlTGlzdEluTGlzdEl0ZW0sIGhhc1N0YWJsZUxpc3RJdGVtIH0gZnJvbSAnLi9xdWVyaWVzL2hhcy1saXN0LWluLWxpc3QtaXRlbSc7XG5pbXBvcnQgeyBpc1NlbGVjdGlvbkF0TGlzdEl0ZW1TdGFydCB9IGZyb20gJy4vcXVlcmllcy9pcy1zZWxlY3Rpb24tYXQtbGlzdC1pdGVtLXN0YXJ0JztcbmltcG9ydCB7IGluc2VydExpc3REYXRhIH0gZnJvbSAnLi90cmFuc2Zvcm1zL2luc2VydC1saXN0LWRhdGEnO1xuaW1wb3J0IHsgbW92ZUxpc3RJdGVtVXAgfSBmcm9tICcuL3RyYW5zZm9ybXMvbW92ZS1saXN0LWl0ZW0tdXAnO1xuaW1wb3J0IHsgaW5zZXJ0TGlzdEl0ZW0gfSBmcm9tICcuL3RyYW5zZm9ybXMvaW5zZXJ0LWxpc3QtaXRlbSc7XG5pbXBvcnQgeyB1bndyYXBMaXN0IH0gZnJvbSAnLi90cmFuc2Zvcm1zL3Vud3JhcC1saXN0JztcbmltcG9ydCB7IG1vdmVMaXN0SXRlbVN1Ymxpc3RJdGVtc1RvTGlzdEl0ZW1TdWJsaXN0IH0gZnJvbSAnLi90cmFuc2Zvcm1zL21vdmUtbGlzdC1pdGVtLXN1Ymxpc3QtaXRlbXMtdG8tbGlzdC1pdGVtLXN1Ymxpc3QnO1xuaW1wb3J0IHsgZ2V0TGlzdE5vcm1hbGl6ZXIgfSBmcm9tICcuL25vcm1hbGl6ZXJzL2dldC1saXN0LW5vcm1hbGl6ZXInO1xuaW1wb3J0IHsgb25LZXlEb3duTGlzdCB9IGZyb20gJy4vb24ta2V5LWRvd24tbGlzdCc7XG5pbXBvcnQgeyBXaXRoTGlzdE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFRoZU51bWJlcmVkTGlzdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9udW1iZXJlZC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVCdWxsZXRlZExpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYnVsbGV0ZWQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBleHRyYWN0RnJhZ21lbnQgfSBmcm9tICcuLi8uLi91dGlscy9mcmFnbWVudCc7XG5pbXBvcnQgeyBpc1NlbGVjdGlvbkluU2FtZUxpc3RJdGVtIH0gZnJvbSAnLi9xdWVyaWVzL2lzLXNlbGVjdGlvbi1pbi1zYW1lLWxpc3QtaXRlbSc7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5LCBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExpc3RFZGl0b3IgfSBmcm9tICcuL2xpc3QuZWRpdG9yJztcbmltcG9ydCB7IEN1c3RvbUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpc3QgPSA8VCBleHRlbmRzIFRoZUVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBpbnNlcnRCcmVhaywgZGVsZXRlQmFja3dhcmQsIG9uS2V5ZG93biwgaW5zZXJ0RGF0YSwgc2V0RnJhZ21lbnREYXRhLCByZW5kZXJFbGVtZW50IH0gPSBlZGl0b3I7XG5cbiAgICBjb25zdCB2YWxpZExpQ2hpbGRyZW5UeXBlcyA9IGdldFBsdWdpbk9wdGlvbnM8V2l0aExpc3RPcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMubGlzdCk/LnZhbGlkTGlDaGlsZHJlblR5cGVzID8/IFtdO1xuXG4gICAgY29uc3QgcmVzZXRCbG9ja1R5cGVzTGlzdFJ1bGUgPSB7XG4gICAgICAgIHR5cGVzOiBbRWxlbWVudEtpbmRzLmxpc3RJdGVtXSxcbiAgICAgICAgZGVmYXVsdFR5cGU6IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGgsXG4gICAgICAgIG9uUmVzZXQ6IChfZWRpdG9yOiBUaGVFZGl0b3IpID0+IHVud3JhcExpc3QoX2VkaXRvcilcbiAgICB9O1xuXG4gICAgZWRpdG9yLmluc2VydEJyZWFrID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gVGhlUXVlcmllcy5hbmNob3JCbG9jayhlZGl0b3IpO1xuXG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgaW5zZXJ0QnJlYWsoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzVm9pZCA9IEVkaXRvci5pc1ZvaWQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgaWYgKGlzVm9pZCkge1xuICAgICAgICAgICAgaW5zZXJ0QnJlYWsoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsaXN0RW50cnkgPSBnZXRMaXN0SXRlbUVudHJ5KGVkaXRvciwge30pO1xuICAgICAgICBpZiAobGlzdEVudHJ5KSB7XG4gICAgICAgICAgICBsZXQgbW92ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCB7IGxpc3QsIGxpc3RJdGVtIH0gPSBsaXN0RW50cnk7XG4gICAgICAgICAgICBjb25zdCBbbGlzdEl0ZW1Ob2RlLCBsaXN0SXRlbVBhdGhdID0gbGlzdEl0ZW07XG4gICAgICAgICAgICBjb25zdCBjdXJzb3IgPSBlZGl0b3Iuc2VsZWN0aW9uLmZvY3VzO1xuICAgICAgICAgICAgY29uc3QgaXNTdGFydCA9IEVkaXRvci5pc1N0YXJ0KGVkaXRvciwgY3Vyc29yLCBsaXN0SXRlbVBhdGgpO1xuXG4gICAgICAgICAgICAvLyBkZXByZWNhdGVkXG4gICAgICAgICAgICAvLyDlpoLmnpzmnInlrZDnuqdcbiAgICAgICAgICAgIGlmIChoYXNMaXN0SW5MaXN0SXRlbShsaXN0SXRlbU5vZGUpKSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogSWYgc2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgbGksXG4gICAgICAgICAgICAgICAgICogaW5zZXJ0IGJlbG93IGxpIHdoZXJlIGNoaWxkcmVuIHdpbGwgYmUgbW92ZWQuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKEVkaXRvci5pc0VuZChlZGl0b3IsIGN1cnNvciwgbGlzdEl0ZW1QYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMubGlzdEl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGgsIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XSB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYXQ6IFBhdGgubmV4dChsaXN0SXRlbVBhdGgpLCBzZWxlY3Q6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIOWmguaenOmAieWMuuaYr+WcqGxpc3RJdGVt55qE5byA5aS077yM5YiZ5ZyobGlzdEl0ZW3kuIrmlrnmj5LlhaVcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAoaXNTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMubGlzdEl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFt7IHR5cGU6IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGgsIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XSB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYXQ6IGxpc3RJdGVtUGF0aCB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDlpoLmnpzpgInmi6nnmoRsaXN0SXRlbeS4uuepuuWImeWwhuWFtuWQkeS4iuenu+WKqFxuICAgICAgICAgICAgaWYgKGlzU3RhcnQgJiYgVGhlUXVlcmllcy5pc0Jsb2NrQWJvdmVFbXB0eShlZGl0b3IpKSB7XG4gICAgICAgICAgICAgICAgbW92ZWQgPSBtb3ZlTGlzdEl0ZW1VcChlZGl0b3IsIHsgbGlzdCwgbGlzdEl0ZW0gfSk7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVkKSByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGRpZFJlc2V0ID0gVGhlVHJhbnNmb3Jtcy5vbktleURvd25SZXNldEJsb2NrVHlwZSh7XG4gICAgICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzZXRCbG9ja1R5cGVzTGlzdFJ1bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6ICgpID0+ICFtb3ZlZCAmJiBpc1N0YXJ0ICYmIFRoZVF1ZXJpZXMuaXNCbG9ja0Fib3ZlRW1wdHkoZWRpdG9yKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSkobnVsbCwgZWRpdG9yKTtcbiAgICAgICAgICAgIGlmIChkaWRSZXNldCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBZGQgYSBuZXcgbGlzdCBpdGVtIGlmIHNlbGVjdGlvbiBpcyBpbiBhIExJU1RfSVRFTSA+IHAudHlwZS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKCFtb3ZlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGVkID0gaW5zZXJ0TGlzdEl0ZW0oZWRpdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGluc2VydEJyZWFrKCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5zZXRGcmFnbWVudERhdGEgPSB1bml0ID0+IHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3QgW3N0YXJ0XSA9IEVkaXRvci5lZGdlcyhlZGl0b3IsIHNlbGVjdGlvbik7XG4gICAgICAgIGlmIChpc0luTGlzdChlZGl0b3IsIHN0YXJ0KSkge1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREYXRhID0gZWRpdG9yLmdldEZyYWdtZW50KCk7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudEVsZW1lbnQgPSBmcmFnbWVudERhdGFbMF0gYXMgQ3VzdG9tRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChnZXRMaXN0VHlwZXMoKS5pbmNsdWRlcyhmcmFnbWVudEVsZW1lbnQudHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydE5vZGVzID0gZ2V0U3RhcnRMaXN0SXRlbShbZnJhZ21lbnRFbGVtZW50LmNoaWxkcmVuWzBdXSBhcyBDdXN0b21FbGVtZW50W10pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gc3RhcnROb2Rlcy5jb25jYXQoKGZyYWdtZW50RWxlbWVudC5jaGlsZHJlbiBhcyBDdXN0b21FbGVtZW50W10pLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICBsZXQgZnJhZ21lbnROb2RlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZnJhZ21lbnRFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0gYXMgTm9kZVtdO1xuICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGlvbkluU2FtZUxpc3RJdGVtKGVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5LuF5LuF5aSN5Yi25YiX6KGo5Lit55qE5YaF5a65XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50Tm9kZXMgPSBjaGlsZHJlblswXS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBmcmFnbWVudE5vZGVzLmNvbmNhdChmcmFnbWVudERhdGEuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvbVJhbmdlID0gQW5ndWxhckVkaXRvci50b0RPTVJhbmdlKGVkaXRvciwgc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50cyA9IGRvbVJhbmdlLmNsb25lQ29udGVudHMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdPYmogPSBKU09OLnN0cmluZ2lmeShmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZCA9IHdpbmRvdy5idG9hKGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdPYmopKTtcbiAgICAgICAgICAgICAgICB1bml0LnNldERhdGEoYGFwcGxpY2F0aW9uLyR7Q0xJUEJPQVJEX0ZPUk1BVF9LRVl9YCwgZW5jb2RlZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgZGl2LmFwcGVuZENoaWxkKGNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgICAgICAgICB1bml0LnNldERhdGEoJ3RleHQvaHRtbCcsIGRpdi5pbm5lckhUTUwpO1xuICAgICAgICAgICAgICAgIHVuaXQuc2V0RGF0YSgndGV4dC9wbGFpbicsIGdldFBsYWluVGV4dChkaXYpKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldEZyYWdtZW50RGF0YSh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUJhY2t3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGdldExpc3RJdGVtRW50cnkoZWRpdG9yLCB7fSk7XG5cbiAgICAgICAgaWYgKHJlcyAmJiBpc1NlbGVjdGlvbkF0TGlzdEl0ZW1TdGFydChlZGl0b3IpKSB7XG4gICAgICAgICAgICBjb25zdCB7IGxpc3QsIGxpc3RJdGVtIH0gPSByZXM7XG4gICAgICAgICAgICBjb25zdCBbLCBsaXN0UGF0aF0gPSBsaXN0O1xuICAgICAgICAgICAgY29uc3QgW2xpc3RJdGVtTm9kZSwgbGlzdEl0ZW1QYXRoXSA9IGxpc3RJdGVtO1xuXG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0xpc3RJdGVtUGF0aCA9IFRoZVF1ZXJpZXMuZ2V0UHJldmlvdXNQYXRoKGxpc3RJdGVtUGF0aCk7XG5cbiAgICAgICAgICAgIGlmIChwcmV2aW91c0xpc3RJdGVtUGF0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gRWRpdG9yLmJlZm9yZShlZGl0b3IsIGxpc3RJdGVtUGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IFBhdGgucGFyZW50KGJlZm9yZVBvaW50LnBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBOb2RlLmdldChlZGl0b3IsIHBhcmVudFBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChFZGl0b3IuaXNWb2lkKGVkaXRvciwgcGFyZW50Tm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMudW53cmFwTm9kZXNCeVR5cGUoZWRpdG9yLCBbRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdF0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnVud3JhcE5vZGVzQnlUeXBlKGVkaXRvciwgRWxlbWVudEtpbmRzLmxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwcmV2aW91c0xpc3RJdGVtUGF0aCAmJiBoYXNTdGFibGVMaXN0SW5MaXN0SXRlbShsaXN0SXRlbU5vZGUpKSB7XG4gICAgICAgICAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlQmFja3dhcmQodW5pdCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtwcmV2aW91c0xpc3RJdGVtTm9kZV0gPSBFZGl0b3Iubm9kZShlZGl0b3IsIHByZXZpb3VzTGlzdEl0ZW1QYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZUxpc3RJdGVtU3VibGlzdEl0ZW1zVG9MaXN0SXRlbVN1Ymxpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUxpc3RJdGVtOiBsaXN0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0xpc3RJdGVtOiBbcHJldmlvdXNMaXN0SXRlbU5vZGUgYXMgQW5jZXN0b3IsIHByZXZpb3VzTGlzdEl0ZW1QYXRoXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbW92ZSBsaXN0SXRlbSBjaGlsZHJlbiB0byBiZWZvcmUgbGlzdEl0ZW1cbiAgICAgICAgICAgIGlmIChsaXN0SXRlbU5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBhdGhSZWYgPSBFZGl0b3IucGF0aFJlZihlZGl0b3IsIGxpc3RJdGVtUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gRWRpdG9yLmJlZm9yZShlZGl0b3IsIGxpc3RJdGVtUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBFZGl0b3Iuc3RhcnQoZWRpdG9yLCBsaXN0SXRlbVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IEVkaXRvci5lbmQoZWRpdG9yLCBsaXN0SXRlbVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0luRmlyc3RDaGlsZCA9ICFpc0xpc3ROZXN0ZWQoZWRpdG9yLCBsaXN0UGF0aCkgJiYgVGhlUXVlcmllcy5pc0ZpcnN0Q2hpbGQobGlzdEl0ZW1QYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG8gPSBpc0luRmlyc3RDaGlsZCA/IGxpc3RQYXRoIDogUGF0aC5uZXh0KFBhdGgucGFyZW50KGJlZm9yZVBvaW50LnBhdGgpKTtcblxuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmVOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBFZGl0b3IucmFuZ2UoZWRpdG9yLCBzdGFydFBvaW50LCBlbmRQb2ludCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiBub2RlID0+IGxpc3RJdGVtTm9kZS5jaGlsZHJlbi5pbmNsdWRlcyhub2RlIGFzIGFueSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvciwgeyBhdDogYmVmb3JlUGF0aFJlZi51bnJlZigpIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNJbkZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJhY2t3YXJkKHVuaXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBkZXByZWNhdGVkXG4gICAgICAgICAgICBpZiAoIWlzTGlzdE5lc3RlZChlZGl0b3IsIGxpc3RQYXRoKSAmJiBUaGVRdWVyaWVzLmlzRmlyc3RDaGlsZChsaXN0SXRlbVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdW53cmFwTGlzdChlZGl0b3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZUJhY2t3YXJkKHVuaXQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaW5zZXJ0RGF0YSA9IChkYXRhOiBEYXRhVHJhbnNmZXIpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGV4dHJhY3RGcmFnbWVudChkYXRhKTtcbiAgICAgICAgY29uc3QgYWJvdmVFbnRyeSA9IEVkaXRvci5hYm92ZShlZGl0b3IsIHtcbiAgICAgICAgICAgIG1hdGNoOiAobjogQ3VzdG9tRWxlbWVudCkgPT4gRWRpdG9yLmlzQmxvY2soZWRpdG9yLCBuKSAmJiBuLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saXN0SXRlbVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBnZXRMaXN0SXRlbUVudHJ5KGVkaXRvciwge30pO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGZyYWdtZW50Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIGlzTGlzdChmcmFnbWVudFswXSBhcyBDdXN0b21FbGVtZW50KSAmJlxuICAgICAgICAgICAgICAgIGFib3ZlRW50cnkgJiZcbiAgICAgICAgICAgICAgICAhaXNTaW5nbGVMaXN0SXRlbShmcmFnbWVudFswXSkgJiZcbiAgICAgICAgICAgICAgICBoYXNTdGFibGVMaXN0SXRlbShyZXMubGlzdEl0ZW1bMF0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpbnNlcnRMaXN0RGF0YShlZGl0b3IsIHsgZnJvbUxpc3Q6IGZyYWdtZW50WzBdIGFzIEN1c3RvbUVsZW1lbnQsIHRvTGlzdEl0ZW1FbnRyeTogYWJvdmVFbnRyeSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpbnNlcnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICBlZGl0b3Iub25LZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQ29udGludWUgPSAhb25LZXlEb3duTGlzdChldmVudCwgZWRpdG9yKTtcbiAgICAgICAgaWYgKGlzQ29udGludWUpIHtcbiAgICAgICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZWRpdG9yLm5vcm1hbGl6ZU5vZGUgPSBnZXRMaXN0Tm9ybWFsaXplcihlZGl0b3IsIHsgdmFsaWRMaUNoaWxkcmVuVHlwZXM6IHZhbGlkTGlDaGlsZHJlblR5cGVzIH0pO1xuXG4gICAgZWRpdG9yLnJlbmRlckVsZW1lbnQgPSAoZWxlbWVudDogQ3VzdG9tRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMubnVtYmVyZWRMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlTnVtYmVyZWRMaXN0Q29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5idWxsZXRlZExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBUaGVCdWxsZXRlZExpc3RDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpc3RJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlTGlzdEl0ZW1Db21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlbmRlckVsZW1lbnQoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5jb25zdCBsaXN0T3B0aW9ucyA9IHtcbiAgICB2YWxpZExpQ2hpbGRyZW5UeXBlczogW0VsZW1lbnRLaW5kcy5pbWFnZV0sXG4gICAgYWxsb3dQYXJlbnRUeXBlczogW0VsZW1lbnRLaW5kcy5saXN0SXRlbSwgRWxlbWVudEtpbmRzLnRhYmxlQ2VsbCwgRWxlbWVudEtpbmRzLmJsb2NrcXVvdGVdXG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTGlzdFBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnk8V2l0aExpc3RPcHRpb25zPih7XG4gICAga2V5OiBQbHVnaW5LZXlzLmxpc3QsXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aExpc3QsXG4gICAgcGx1Z2luczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFBsdWdpbktleXMubnVtYmVyZWRMaXN0LFxuICAgICAgICAgICAgb3B0aW9uczogbGlzdE9wdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBQbHVnaW5LZXlzLmJ1bGxldGVkTGlzdCxcbiAgICAgICAgICAgIG9wdGlvbnM6IGxpc3RPcHRpb25zXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG5lc3RlZFN0cnVjdHVyZUJ5S2V5OiB7XG4gICAgICAgIFtFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0XTogRWxlbWVudEtpbmRzLmxpc3RJdGVtLFxuICAgICAgICBbRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdF06IEVsZW1lbnRLaW5kcy5saXN0SXRlbVxuICAgIH0sXG4gICAgdG9vbGJhckl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCxcbiAgICAgICAgICAgIGljb246ICdsaXN0LW9yZGVyZWQnLFxuICAgICAgICAgICAgbmFtZTogJ+acieW6j+WIl+ihqCcsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gTGlzdEVkaXRvci50b2dnbGVMaXN0KGVkaXRvciwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBMaXN0RWRpdG9yLmlzQWN0aXZlKGVkaXRvciwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0LFxuICAgICAgICAgICAgaWNvbjogJ2xpc3QtYnVsbGV0JyxcbiAgICAgICAgICAgIG5hbWU6ICfml6Dluo/liJfooagnLFxuICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IExpc3RFZGl0b3IudG9nZ2xlTGlzdChlZGl0b3IsIEVsZW1lbnRLaW5kcy5idWxsZXRlZExpc3QpLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gTGlzdEVkaXRvci5pc0FjdGl2ZShlZGl0b3IsIEVsZW1lbnRLaW5kcy5idWxsZXRlZExpc3QpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG1lbnVJdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QsXG4gICAgICAgICAgICBrZXl3b3JkczogJ3l4bGIseW91eHVsaWViaWFvLG51bWJlcmVkIGxpc3QsbnVtYmVyZWRsaXN0LOacieW6j+WIl+ihqCcsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gTGlzdEVkaXRvci50b2dnbGVMaXN0KGVkaXRvciwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBMaXN0RWRpdG9yLmlzQWN0aXZlKGVkaXRvciwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCksXG4gICAgICAgICAgICB0eXBlOiBUaGVQbHVnaW5NZW51SXRlbVR5cGUuaWNvbixcbiAgICAgICAgICAgIG5hbWU6ICfmnInluo/liJfooagnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICfmj5LlhaXmnInluo/liJfooagnLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJy95eGxiJyxcbiAgICAgICAgICAgIGljb246ICdsaXN0LW9yZGVyZWQnLFxuICAgICAgICAgICAgbWVudUljb246IFBsdWdpbk1lbnVJY29ucy5udW1iZXJlZExpc3RcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0LFxuICAgICAgICAgICAga2V5d29yZHM6ICd3eGxiLHd1eHVsaWViaWFvLGJ1bGxldGVkbGlzdCxidWxsZXRlZCBsaXN0LOaXoOW6j+WIl+ihqCcsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gTGlzdEVkaXRvci50b2dnbGVMaXN0KGVkaXRvciwgRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBMaXN0RWRpdG9yLmlzQWN0aXZlKGVkaXRvciwgRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCksXG4gICAgICAgICAgICB0eXBlOiBUaGVQbHVnaW5NZW51SXRlbVR5cGUuaWNvbixcbiAgICAgICAgICAgIG5hbWU6ICfml6Dluo/liJfooagnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICfmj5LlhaXml6Dluo/liJfooagnLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJy93eGxiJyxcbiAgICAgICAgICAgIGljb246ICdsaXN0LWJ1bGxldCcsXG4gICAgICAgICAgICBtZW51SWNvbjogUGx1Z2luTWVudUljb25zLmJ1bGxldGVkTGlzdFxuICAgICAgICB9XG4gICAgXSxcbiAgICBvcHRpb25zOiBsaXN0T3B0aW9uc1xufSk7XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { Transforms, Element } from 'slate';
2
+ import { ElementKinds } from '../../../constants';
3
+ import { match } from '../../../utils/match';
4
+ import { getListTypes } from '../queries/get-list-types';
5
+ import { normalizeListItem } from './normalize-list-item';
6
+ import { normalizeNo } from './normalize-no';
7
+ import { isList } from '../queries/is-list';
8
+ import { TheHistoryEditor } from '../../common/history.plugin';
9
+ /**
10
+ * Normalize list node to force the ul>li>p+ul structure.
11
+ */
12
+ export const getListNormalizer = (editor, { validLiChildrenTypes }) => {
13
+ const { normalizeNode } = editor;
14
+ return ([node, path]) => {
15
+ // 不是选区, 执行续号检测操作
16
+ if (isList(node) && !TheHistoryEditor.isUndoing(editor)) {
17
+ const moved = normalizeNo(editor, [node, path]);
18
+ if (moved) {
19
+ return;
20
+ }
21
+ }
22
+ if (match(node, { type: getListTypes() })) {
23
+ if (Element.isElement(node) && !node.children.length) {
24
+ return Transforms.removeNodes(editor, { at: path });
25
+ }
26
+ }
27
+ // normalize list item
28
+ // 1. list-item at least one child
29
+ // 2. list-item first child is not list
30
+ if (Element.isElement(node) && node.type === ElementKinds.listItem) {
31
+ if (normalizeListItem(editor, { nodeEntry: [node, path] })) {
32
+ // Tree changed - kick off another normalization
33
+ return;
34
+ }
35
+ }
36
+ normalizeNode([node, path]);
37
+ };
38
+ };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWxpc3Qtbm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2xpc3Qvbm9ybWFsaXplcnMvZ2V0LWxpc3Qtbm9ybWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFHbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBaUIsRUFBRSxFQUFFLG9CQUFvQixFQUF5QixFQUFFLEVBQUU7SUFDcEcsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVqQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFZLEVBQUUsRUFBRTtRQUMvQixpQkFBaUI7UUFDakIsSUFBSSxNQUFNLENBQUMsSUFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoRCxJQUFJLEtBQUssRUFBRTtnQkFDUCxPQUFPO2FBQ1Y7U0FDSjtRQUVELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLFFBQXlCLENBQUMsTUFBTSxFQUFFO2dCQUNwRSxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDdkQ7U0FDSjtRQUVELHNCQUFzQjtRQUN0QixrQ0FBa0M7UUFDbEMsdUNBQXVDO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDaEUsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUN4RCxnREFBZ0Q7Z0JBQ2hELE9BQU87YUFDVjtTQUNKO1FBRUQsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY2VuZGFudCwgTm9kZUVudHJ5LCBUcmFuc2Zvcm1zLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdXN0b21FbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBtYXRjaCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL21hdGNoJztcbmltcG9ydCB7IGdldExpc3RUeXBlcyB9IGZyb20gJy4uL3F1ZXJpZXMvZ2V0LWxpc3QtdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplTGlzdEl0ZW0gfSBmcm9tICcuL25vcm1hbGl6ZS1saXN0LWl0ZW0nO1xuaW1wb3J0IHsgTGlzdE5vcm1hbGl6ZXJPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplTm8gfSBmcm9tICcuL25vcm1hbGl6ZS1ubyc7XG5pbXBvcnQgeyBpc0xpc3QgfSBmcm9tICcuLi9xdWVyaWVzL2lzLWxpc3QnO1xuaW1wb3J0IHsgVGhlSGlzdG9yeUVkaXRvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9oaXN0b3J5LnBsdWdpbic7XG5cbi8qKlxuICogTm9ybWFsaXplIGxpc3Qgbm9kZSB0byBmb3JjZSB0aGUgdWw+bGk+cCt1bCBzdHJ1Y3R1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRMaXN0Tm9ybWFsaXplciA9IChlZGl0b3I6IFRoZUVkaXRvciwgeyB2YWxpZExpQ2hpbGRyZW5UeXBlcyB9OiBMaXN0Tm9ybWFsaXplck9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IG5vcm1hbGl6ZU5vZGUgfSA9IGVkaXRvcjtcblxuICAgIHJldHVybiAoW25vZGUsIHBhdGhdOiBOb2RlRW50cnkpID0+IHtcbiAgICAgICAgLy8g5LiN5piv6YCJ5Yy6LCDmiafooYznu63lj7fmo4DmtYvmk43kvZxcbiAgICAgICAgaWYgKGlzTGlzdChub2RlIGFzIEN1c3RvbUVsZW1lbnQpICYmICFUaGVIaXN0b3J5RWRpdG9yLmlzVW5kb2luZyhlZGl0b3IpKSB7XG4gICAgICAgICAgICBjb25zdCBtb3ZlZCA9IG5vcm1hbGl6ZU5vKGVkaXRvciwgW25vZGUsIHBhdGhdKTtcbiAgICAgICAgICAgIGlmIChtb3ZlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaChub2RlLCB7IHR5cGU6IGdldExpc3RUeXBlcygpIH0pKSB7XG4gICAgICAgICAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgIShub2RlLmNoaWxkcmVuIGFzIERlc2NlbmRhbnRbXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybXMucmVtb3ZlTm9kZXMoZWRpdG9yLCB7IGF0OiBwYXRoIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm9ybWFsaXplIGxpc3QgaXRlbVxuICAgICAgICAvLyAxLiBsaXN0LWl0ZW0gYXQgbGVhc3Qgb25lIGNoaWxkXG4gICAgICAgIC8vIDIuIGxpc3QtaXRlbSBmaXJzdCBjaGlsZCBpcyBub3QgbGlzdFxuICAgICAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW0pIHtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVMaXN0SXRlbShlZGl0b3IsIHsgbm9kZUVudHJ5OiBbbm9kZSwgcGF0aF0gfSkpIHtcbiAgICAgICAgICAgICAgICAvLyBUcmVlIGNoYW5nZWQgLSBraWNrIG9mZiBhbm90aGVyIG5vcm1hbGl6YXRpb25cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBub3JtYWxpemVOb2RlKFtub2RlLCBwYXRoXSk7XG4gICAgfTtcbn07XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { Element } from 'slate';
2
+ import { ElementKinds } from '../../../constants';
3
+ import { insertParagraph } from '../../../transforms/insert-paragraph';
4
+ export const normalizeListItem = (editor, { nodeEntry }) => {
5
+ const [listItemNode, listItemPath] = nodeEntry;
6
+ const firstChildPath = listItemPath.concat([0]);
7
+ const firstChild = listItemNode.children?.[0];
8
+ if (!firstChild) {
9
+ insertParagraph(editor, firstChildPath);
10
+ return true;
11
+ }
12
+ // Ensure that all lists have a <p> tag as a first element
13
+ if (Element.isElement(firstChild) && (firstChild.type === ElementKinds.bulletedList || firstChild.type === ElementKinds.numberedList)) {
14
+ insertParagraph(editor, firstChildPath);
15
+ return true;
16
+ }
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWxpc3QtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2xpc3Qvbm9ybWFsaXplcnMvbm9ybWFsaXplLWxpc3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUd2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBaUIsRUFBRSxFQUFFLFNBQVMsRUFBNkMsRUFBRSxFQUFFO0lBQzdHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQy9DLE1BQU0sY0FBYyxHQUFTLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sVUFBVSxHQUFJLFlBQVksQ0FBQyxRQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFMUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNiLGVBQWUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELDBEQUEwRDtJQUMxRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDbkksZUFBZSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztLQUNmO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZSwgTm9kZUVudHJ5LCBQYXRoLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMaXN0SXRlbUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGluc2VydFBhcmFncmFwaCB9IGZyb20gJy4uLy4uLy4uL3RyYW5zZm9ybXMvaW5zZXJ0LXBhcmFncmFwaCc7XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVMaXN0SXRlbSA9IChlZGl0b3I6IFRoZUVkaXRvciwgeyBub2RlRW50cnkgfTogeyBub2RlRW50cnk6IE5vZGVFbnRyeTxMaXN0SXRlbUVsZW1lbnQ+IH0pID0+IHtcbiAgICBjb25zdCBbbGlzdEl0ZW1Ob2RlLCBsaXN0SXRlbVBhdGhdID0gbm9kZUVudHJ5O1xuICAgIGNvbnN0IGZpcnN0Q2hpbGRQYXRoOiBQYXRoID0gbGlzdEl0ZW1QYXRoLmNvbmNhdChbMF0pO1xuICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSAobGlzdEl0ZW1Ob2RlLmNoaWxkcmVuIGFzIE5vZGVbXSk/LlswXTtcblxuICAgIGlmICghZmlyc3RDaGlsZCkge1xuICAgICAgICBpbnNlcnRQYXJhZ3JhcGgoZWRpdG9yLCBmaXJzdENoaWxkUGF0aCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBsaXN0cyBoYXZlIGEgPHA+IHRhZyBhcyBhIGZpcnN0IGVsZW1lbnRcbiAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQoZmlyc3RDaGlsZCkgJiYgKGZpcnN0Q2hpbGQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8fCBmaXJzdENoaWxkLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QpKSB7XG4gICAgICAgIGluc2VydFBhcmFncmFwaChlZGl0b3IsIGZpcnN0Q2hpbGRQYXRoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufTtcbiJdfQ==