@kerebron/extension-codemirror 0.3.1 → 0.4.1

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 (242) hide show
  1. package/README.md +3 -3
  2. package/esm/_dnt.polyfills.d.ts +101 -0
  3. package/esm/_dnt.polyfills.d.ts.map +1 -0
  4. package/esm/_dnt.polyfills.js +127 -0
  5. package/esm/_dnt.shims.d.ts +6 -0
  6. package/esm/_dnt.shims.d.ts.map +1 -0
  7. package/esm/_dnt.shims.js +61 -0
  8. package/esm/editor/src/CoreEditor.d.ts +13 -4
  9. package/esm/editor/src/CoreEditor.d.ts.map +1 -1
  10. package/esm/editor/src/CoreEditor.js +64 -12
  11. package/esm/editor/src/Extension.d.ts +6 -1
  12. package/esm/editor/src/Extension.d.ts.map +1 -1
  13. package/esm/editor/src/Extension.js +21 -1
  14. package/esm/editor/src/ExtensionManager.d.ts +5 -6
  15. package/esm/editor/src/ExtensionManager.d.ts.map +1 -1
  16. package/esm/editor/src/ExtensionManager.js +43 -55
  17. package/esm/editor/src/Mark.d.ts +3 -0
  18. package/esm/editor/src/Mark.d.ts.map +1 -1
  19. package/esm/editor/src/Mark.js +11 -0
  20. package/esm/editor/src/Node.d.ts +5 -2
  21. package/esm/editor/src/Node.d.ts.map +1 -1
  22. package/esm/editor/src/Node.js +13 -2
  23. package/esm/editor/src/commands/CommandManager.d.ts +13 -6
  24. package/esm/editor/src/commands/CommandManager.d.ts.map +1 -1
  25. package/esm/editor/src/commands/CommandManager.js +59 -2
  26. package/esm/editor/src/commands/baseCommandFactories.d.ts +3 -0
  27. package/esm/editor/src/commands/baseCommandFactories.d.ts.map +1 -0
  28. package/esm/editor/src/commands/baseCommandFactories.js +836 -0
  29. package/esm/editor/src/commands/keyCommandFactories.d.ts +3 -0
  30. package/esm/editor/src/commands/keyCommandFactories.d.ts.map +1 -0
  31. package/esm/editor/src/commands/keyCommandFactories.js +10 -0
  32. package/esm/editor/src/commands/mod.d.ts +5 -53
  33. package/esm/editor/src/commands/mod.d.ts.map +1 -1
  34. package/esm/editor/src/commands/mod.js +14 -821
  35. package/esm/editor/src/commands/replaceCommandFactories.d.ts +3 -0
  36. package/esm/editor/src/commands/replaceCommandFactories.d.ts.map +1 -0
  37. package/esm/editor/src/commands/replaceCommandFactories.js +94 -0
  38. package/esm/editor/src/commands/types.d.ts +18 -0
  39. package/esm/editor/src/commands/types.d.ts.map +1 -0
  40. package/esm/editor/src/commands/types.js +1 -0
  41. package/esm/editor/src/mod.d.ts +2 -0
  42. package/esm/editor/src/mod.d.ts.map +1 -1
  43. package/esm/editor/src/mod.js +2 -0
  44. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts +6 -0
  45. package/esm/editor/src/plugins/TrackSelecionPlugin.d.ts.map +1 -0
  46. package/esm/editor/src/plugins/TrackSelecionPlugin.js +24 -0
  47. package/esm/editor/src/types.d.ts +20 -2
  48. package/esm/editor/src/types.d.ts.map +1 -1
  49. package/esm/editor/src/ui.d.ts +15 -0
  50. package/esm/editor/src/ui.d.ts.map +1 -0
  51. package/esm/editor/src/ui.js +16 -0
  52. package/esm/editor/src/utilities/SmartOutput.d.ts +9 -7
  53. package/esm/editor/src/utilities/SmartOutput.d.ts.map +1 -1
  54. package/esm/editor/src/utilities/SmartOutput.js +35 -20
  55. package/esm/editor/src/utilities/getShadowRoot.d.ts +2 -0
  56. package/esm/editor/src/utilities/getShadowRoot.d.ts.map +1 -0
  57. package/esm/editor/src/utilities/getShadowRoot.js +16 -0
  58. package/esm/editor/src/utilities/mod.d.ts +2 -0
  59. package/esm/editor/src/utilities/mod.d.ts.map +1 -1
  60. package/esm/editor/src/utilities/mod.js +2 -0
  61. package/esm/editor/src/utilities/toRawTextResult.d.ts +3 -0
  62. package/esm/editor/src/utilities/toRawTextResult.d.ts.map +1 -0
  63. package/esm/editor/src/utilities/toRawTextResult.js +21 -0
  64. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts +8 -0
  65. package/esm/extension-autocomplete/src/AutocompletePlugin.d.ts.map +1 -0
  66. package/esm/extension-autocomplete/src/AutocompletePlugin.js +232 -0
  67. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts +17 -0
  68. package/esm/extension-autocomplete/src/DefaultRenderer.d.ts.map +1 -0
  69. package/esm/extension-autocomplete/src/DefaultRenderer.js +137 -0
  70. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts +26 -0
  71. package/esm/extension-autocomplete/src/ExtensionAutocomplete.d.ts.map +1 -0
  72. package/esm/extension-autocomplete/src/ExtensionAutocomplete.js +30 -0
  73. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts +11 -0
  74. package/esm/extension-autocomplete/src/createDefaultMatcher.d.ts.map +1 -0
  75. package/esm/extension-autocomplete/src/createDefaultMatcher.js +58 -0
  76. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts +4 -0
  77. package/esm/extension-autocomplete/src/createRegexMatcher.d.ts.map +1 -0
  78. package/esm/extension-autocomplete/src/createRegexMatcher.js +50 -0
  79. package/esm/extension-autocomplete/src/mod.d.ts +3 -0
  80. package/esm/extension-autocomplete/src/mod.d.ts.map +1 -0
  81. package/esm/extension-autocomplete/src/mod.js +2 -0
  82. package/esm/extension-autocomplete/src/types.d.ts +60 -0
  83. package/esm/extension-autocomplete/src/types.d.ts.map +1 -0
  84. package/esm/extension-autocomplete/src/types.js +1 -0
  85. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts +15 -0
  86. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts.map +1 -0
  87. package/esm/extension-basic-editor/src/ExtensionHtml.js +108 -0
  88. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts +9 -0
  89. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts.map +1 -0
  90. package/esm/extension-basic-editor/src/NodeCodeBlock.js +58 -0
  91. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.d.ts +24 -0
  92. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.d.ts.map +1 -0
  93. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.js +35 -0
  94. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.d.ts +25 -0
  95. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.d.ts.map +1 -0
  96. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.js +96 -0
  97. package/esm/extension-codemirror/src/ExtensionCodeMirror.d.ts +15 -2
  98. package/esm/extension-codemirror/src/ExtensionCodeMirror.d.ts.map +1 -1
  99. package/esm/extension-codemirror/src/ExtensionCodeMirror.js +74 -2
  100. package/esm/extension-codemirror/src/NodeCodeMirror.d.ts +13 -9
  101. package/esm/extension-codemirror/src/NodeCodeMirror.d.ts.map +1 -1
  102. package/esm/extension-codemirror/src/NodeCodeMirror.js +34 -121
  103. package/esm/extension-codemirror/src/codeMirrorBlockNodeView.d.ts +3 -2
  104. package/esm/extension-codemirror/src/codeMirrorBlockNodeView.d.ts.map +1 -1
  105. package/esm/extension-codemirror/src/codeMirrorBlockNodeView.js +164 -103
  106. package/esm/extension-codemirror/src/defaults.d.ts +1 -1
  107. package/esm/extension-codemirror/src/defaults.d.ts.map +1 -1
  108. package/esm/extension-codemirror/src/defaults.js +4 -3
  109. package/esm/extension-codemirror/src/languageLoaders.d.ts.map +1 -1
  110. package/esm/extension-codemirror/src/languageLoaders.js +1 -2
  111. package/esm/extension-codemirror/src/lsp/LSPExtension.d.ts +14 -0
  112. package/esm/extension-codemirror/src/lsp/LSPExtension.d.ts.map +1 -0
  113. package/esm/extension-codemirror/src/lsp/LSPExtension.js +38 -0
  114. package/esm/extension-codemirror/src/lsp/completion.d.ts +8 -0
  115. package/esm/extension-codemirror/src/lsp/completion.d.ts.map +1 -0
  116. package/esm/extension-codemirror/src/lsp/completion.js +179 -0
  117. package/esm/extension-codemirror/src/lsp/hover.d.ts +5 -0
  118. package/esm/extension-codemirror/src/lsp/hover.d.ts.map +1 -0
  119. package/esm/extension-codemirror/src/lsp/hover.js +81 -0
  120. package/esm/extension-codemirror/src/lsp/index.d.ts +7 -0
  121. package/esm/extension-codemirror/src/lsp/index.d.ts.map +1 -0
  122. package/esm/extension-codemirror/src/lsp/index.js +49 -0
  123. package/esm/extension-codemirror/src/lsp/plugin.d.ts +37 -0
  124. package/esm/extension-codemirror/src/lsp/plugin.d.ts.map +1 -0
  125. package/esm/extension-codemirror/src/lsp/plugin.js +125 -0
  126. package/esm/extension-codemirror/src/lsp/pos.d.ts +5 -0
  127. package/esm/extension-codemirror/src/lsp/pos.d.ts.map +1 -0
  128. package/esm/extension-codemirror/src/lsp/pos.js +8 -0
  129. package/esm/extension-codemirror/src/lsp/text.d.ts +2 -0
  130. package/esm/extension-codemirror/src/lsp/text.d.ts.map +1 -0
  131. package/esm/extension-codemirror/src/lsp/text.js +47 -0
  132. package/esm/extension-codemirror/src/lsp/theme.d.ts +2 -0
  133. package/esm/extension-codemirror/src/lsp/theme.d.ts.map +1 -0
  134. package/esm/extension-codemirror/src/lsp/theme.js +76 -0
  135. package/esm/extension-codemirror/src/{y-remote-selections.d.ts → remote-selections.d.ts} +5 -5
  136. package/esm/extension-codemirror/src/remote-selections.d.ts.map +1 -0
  137. package/esm/extension-codemirror/src/{y-remote-selections.js → remote-selections.js} +49 -69
  138. package/esm/extension-codemirror/src/remote-sync.d.ts +11 -0
  139. package/esm/extension-codemirror/src/remote-sync.d.ts.map +1 -0
  140. package/esm/extension-codemirror/src/{y-sync.js → remote-sync.js} +6 -6
  141. package/esm/extension-codemirror/src/types.d.ts +10 -10
  142. package/esm/extension-codemirror/src/types.d.ts.map +1 -1
  143. package/esm/extension-codemirror/src/utils.d.ts +7 -6
  144. package/esm/extension-codemirror/src/utils.d.ts.map +1 -1
  145. package/esm/extension-codemirror/src/utils.js +21 -10
  146. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts +32 -0
  147. package/esm/extension-lsp/src/DiagnosticPlugin.d.ts.map +1 -0
  148. package/esm/extension-lsp/src/DiagnosticPlugin.js +131 -0
  149. package/esm/extension-lsp/src/ExtensionLsp.d.ts +25 -0
  150. package/esm/extension-lsp/src/ExtensionLsp.d.ts.map +1 -0
  151. package/esm/extension-lsp/src/ExtensionLsp.js +126 -0
  152. package/esm/extension-lsp/src/LSPClient.d.ts +56 -0
  153. package/esm/extension-lsp/src/LSPClient.d.ts.map +1 -0
  154. package/esm/extension-lsp/src/LSPClient.js +449 -0
  155. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts +8 -0
  156. package/esm/extension-lsp/src/computeIncrementalChanges.d.ts.map +1 -0
  157. package/esm/extension-lsp/src/computeIncrementalChanges.js +82 -0
  158. package/esm/extension-lsp/src/createLspAutocomplete.d.ts +23 -0
  159. package/esm/extension-lsp/src/createLspAutocomplete.d.ts.map +1 -0
  160. package/esm/extension-lsp/src/createLspAutocomplete.js +68 -0
  161. package/esm/extension-lsp/src/mod.d.ts +4 -0
  162. package/esm/extension-lsp/src/mod.d.ts.map +1 -0
  163. package/esm/extension-lsp/src/mod.js +3 -0
  164. package/esm/extension-lsp/src/workspace.d.ts +62 -0
  165. package/esm/extension-lsp/src/workspace.d.ts.map +1 -0
  166. package/esm/extension-lsp/src/workspace.js +168 -0
  167. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts +36 -0
  168. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.d.ts.map +1 -0
  169. package/esm/extension-markdown/src/DocumentMarkdownInlineTokenizer.js +240 -0
  170. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts +26 -0
  171. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.d.ts.map +1 -0
  172. package/esm/extension-markdown/src/DocumentMarkdownTokenizer.js +115 -0
  173. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts +22 -0
  174. package/esm/extension-markdown/src/ExtensionMarkdown.d.ts.map +1 -0
  175. package/esm/extension-markdown/src/ExtensionMarkdown.js +48 -0
  176. package/esm/extension-markdown/src/MarkdownParser.d.ts +61 -0
  177. package/esm/extension-markdown/src/MarkdownParser.d.ts.map +1 -0
  178. package/esm/extension-markdown/src/MarkdownParser.js +249 -0
  179. package/esm/extension-markdown/src/MarkdownSerializer.d.ts +42 -0
  180. package/esm/extension-markdown/src/MarkdownSerializer.d.ts.map +1 -0
  181. package/esm/extension-markdown/src/MarkdownSerializer.js +325 -0
  182. package/esm/extension-markdown/src/PositionMapper.d.ts +15 -0
  183. package/esm/extension-markdown/src/PositionMapper.d.ts.map +1 -0
  184. package/esm/extension-markdown/src/PositionMapper.js +100 -0
  185. package/esm/extension-markdown/src/TokenSource.d.ts +11 -0
  186. package/esm/extension-markdown/src/TokenSource.d.ts.map +1 -0
  187. package/esm/extension-markdown/src/TokenSource.js +39 -0
  188. package/esm/extension-markdown/src/mdToPmConverter.d.ts +5 -0
  189. package/esm/extension-markdown/src/mdToPmConverter.d.ts.map +1 -0
  190. package/esm/extension-markdown/src/mdToPmConverter.js +111 -0
  191. package/esm/extension-markdown/src/pmToMdConverter.d.ts +16 -0
  192. package/esm/extension-markdown/src/pmToMdConverter.d.ts.map +1 -0
  193. package/esm/extension-markdown/src/pmToMdConverter.js +433 -0
  194. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts +4 -0
  195. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.d.ts.map +1 -0
  196. package/esm/extension-markdown/src/token_handlers/basic_token_handlers.js +151 -0
  197. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts +3 -0
  198. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.d.ts.map +1 -0
  199. package/esm/extension-markdown/src/token_handlers/footnote_token_handlers.js +34 -0
  200. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts +6 -0
  201. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.d.ts.map +1 -0
  202. package/esm/extension-markdown/src/token_handlers/inline_token_handlers.js +380 -0
  203. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts +3 -0
  204. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.d.ts.map +1 -0
  205. package/esm/extension-markdown/src/token_handlers/lists_token_handlers.js +323 -0
  206. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts +9 -0
  207. package/esm/extension-markdown/src/token_handlers/table_token_handlers.d.ts.map +1 -0
  208. package/esm/extension-markdown/src/token_handlers/table_token_handlers.js +308 -0
  209. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts +5 -0
  210. package/esm/extension-markdown/src/treeSitterTokenizer.d.ts.map +1 -0
  211. package/esm/extension-markdown/src/treeSitterTokenizer.js +769 -0
  212. package/esm/extension-markdown/src/types.d.ts +28 -0
  213. package/esm/extension-markdown/src/types.d.ts.map +1 -0
  214. package/esm/extension-markdown/src/types.js +131 -0
  215. package/esm/extension-markdown/src/utils.d.ts +8 -0
  216. package/esm/extension-markdown/src/utils.d.ts.map +1 -0
  217. package/esm/extension-markdown/src/utils.js +86 -0
  218. package/esm/tree-sitter-shim/src/main.d.ts +15 -0
  219. package/esm/tree-sitter-shim/src/main.d.ts.map +1 -0
  220. package/esm/tree-sitter-shim/src/main.js +25 -0
  221. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts +6 -0
  222. package/esm/tree-sitter-shim/src/tree_sitter/node.d.ts.map +1 -0
  223. package/esm/tree-sitter-shim/src/tree_sitter/node.js +1 -0
  224. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts +7 -0
  225. package/esm/tree-sitter-shim/src/tree_sitter/parser.d.ts.map +1 -0
  226. package/esm/tree-sitter-shim/src/tree_sitter/parser.js +5 -0
  227. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts +6 -0
  228. package/esm/tree-sitter-shim/src/tree_sitter/tree.d.ts.map +1 -0
  229. package/esm/tree-sitter-shim/src/tree_sitter/tree.js +1 -0
  230. package/esm/wasm/src/mod.d.ts +12 -0
  231. package/esm/wasm/src/mod.d.ts.map +1 -0
  232. package/esm/wasm/src/mod.js +48 -0
  233. package/esm/wasm/wasm.d.ts +138 -0
  234. package/esm/wasm/wasm.d.ts.map +1 -0
  235. package/esm/wasm/wasm.js +120 -0
  236. package/package.json +6 -26
  237. package/esm/extension-codemirror/src/NodeDocumentCode.d.ts +0 -7
  238. package/esm/extension-codemirror/src/NodeDocumentCode.d.ts.map +0 -1
  239. package/esm/extension-codemirror/src/NodeDocumentCode.js +0 -37
  240. package/esm/extension-codemirror/src/y-remote-selections.d.ts.map +0 -1
  241. package/esm/extension-codemirror/src/y-sync.d.ts +0 -11
  242. package/esm/extension-codemirror/src/y-sync.d.ts.map +0 -1
@@ -1,8 +1,9 @@
1
1
  import { Schema } from 'prosemirror-model';
2
2
  import { InputRulesPlugin, } from './plugins/input-rules/InputRulesPlugin.js';
3
3
  import { KeymapPlugin } from './plugins/keymap/keymap.js';
4
- import { chainCommands, } from './commands/mod.js';
4
+ import { firstCommand } from './commands/mod.js';
5
5
  import { addAttributesToSchema } from './utilities/getHtmlAttributes.js';
6
+ import { TrackSelecionPlugin } from './plugins/TrackSelecionPlugin.js';
6
7
  export function findDuplicates(items) {
7
8
  const filtered = items.filter((el, index) => items.indexOf(el) !== index);
8
9
  return Array.from(new Set(filtered));
@@ -18,13 +19,19 @@ export function splitExtensions(extensions) {
18
19
  };
19
20
  }
20
21
  export class ExtensionManager {
21
- constructor(extensions, editor) {
22
+ constructor(extensions, editor, commandManager) {
22
23
  Object.defineProperty(this, "editor", {
23
24
  enumerable: true,
24
25
  configurable: true,
25
26
  writable: true,
26
27
  value: editor
27
28
  });
29
+ Object.defineProperty(this, "commandManager", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: commandManager
34
+ });
28
35
  Object.defineProperty(this, "schema", {
29
36
  enumerable: true,
30
37
  configurable: true,
@@ -41,7 +48,7 @@ export class ExtensionManager {
41
48
  enumerable: true,
42
49
  configurable: true,
43
50
  writable: true,
44
- value: void 0
51
+ value: []
45
52
  });
46
53
  Object.defineProperty(this, "nodeViews", {
47
54
  enumerable: true,
@@ -49,12 +56,6 @@ export class ExtensionManager {
49
56
  writable: true,
50
57
  value: {}
51
58
  });
52
- Object.defineProperty(this, "commandFactories", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: true,
56
- value: {}
57
- });
58
59
  Object.defineProperty(this, "converters", {
59
60
  enumerable: true,
60
61
  configurable: true,
@@ -76,7 +77,6 @@ export class ExtensionManager {
76
77
  },
77
78
  });
78
79
  editor.dispatchEvent(event);
79
- this.plugins = this.getPlugins();
80
80
  }
81
81
  getExtension(name) {
82
82
  const { nodeExtensions, markExtensions, baseExtensions } = splitExtensions(this.extensions);
@@ -86,43 +86,15 @@ export class ExtensionManager {
86
86
  }
87
87
  }
88
88
  }
89
- getPlugins() {
90
- const plugins = [];
89
+ initPlugins() {
91
90
  const inputRules = [];
92
- const commands = new Map();
93
91
  const keyBindings = new Map();
94
- const mergeCommands = (toInsert, extName) => {
95
- for (const key in toInsert) {
96
- const commandFactory = toInsert[key];
97
- if (!commandFactory) {
98
- continue;
99
- }
100
- if (this.debug) {
101
- const wrappedFactory = (...args) => {
102
- const realCommand = commandFactory(...args);
103
- const command = (state, dispatch, view) => {
104
- if (dispatch) {
105
- console.debug(`Command: ${extName}.${key}`);
106
- }
107
- return realCommand(state, dispatch, view);
108
- };
109
- return command;
110
- };
111
- commands.set(key, wrappedFactory);
112
- this.commandFactories[key] = wrappedFactory;
113
- }
114
- else {
115
- commands.set(key, commandFactory);
116
- this.commandFactories[key] = commandFactory;
117
- }
118
- }
119
- };
120
- function mergeShortcuts(toInsert, extName) {
92
+ const mergeShortcuts = (toInsert, extName) => {
121
93
  for (const key in toInsert) {
122
94
  if (!toInsert[key]) {
123
95
  continue;
124
96
  }
125
- const commandFactory = commands.get(toInsert[key]);
97
+ const commandFactory = this.commandManager.commandFactories[toInsert[key]];
126
98
  if (!commandFactory) {
127
99
  console.warn(`No command constructor: ${toInsert[key]}`);
128
100
  continue;
@@ -130,26 +102,27 @@ export class ExtensionManager {
130
102
  const command = commandFactory();
131
103
  const keyBinding = keyBindings.get(key);
132
104
  if (keyBinding) {
133
- keyBindings.set(key, chainCommands(keyBinding, command));
105
+ keyBindings.set(key, firstCommand(command, keyBinding));
134
106
  }
135
107
  else {
136
108
  keyBindings.set(key, command);
137
109
  }
138
110
  }
139
- }
111
+ };
140
112
  let converters = {};
141
113
  for (const extension of this.extensions) {
114
+ extension.setEditor(this.editor);
142
115
  if (extension.type === 'node') {
143
116
  const nodeType = this.schema.nodes[extension.name];
144
117
  inputRules.push(...extension.getInputRules(nodeType));
145
- plugins.push(...extension.getProseMirrorPlugins(this.editor, this.schema));
146
- mergeCommands(extension.getCommandFactories(this.editor, nodeType), extension.name);
118
+ this.plugins.push(...extension.getProseMirrorPlugins());
119
+ this.commandManager.mergeCommandFactories(extension.getCommandFactories(this.editor, nodeType), extension.name);
147
120
  mergeShortcuts(extension.getKeyboardShortcuts(this.editor), extension.name);
148
121
  converters = {
149
122
  ...converters,
150
123
  ...extension.getConverters(this.editor, this.schema),
151
124
  };
152
- const nodeView = extension.getNodeView();
125
+ const nodeView = extension.getNodeView(this.editor);
153
126
  if (nodeView) {
154
127
  this.nodeViews[extension.name] = nodeView;
155
128
  }
@@ -157,12 +130,12 @@ export class ExtensionManager {
157
130
  if (extension.type === 'mark') {
158
131
  const markType = this.schema.marks[extension.name];
159
132
  inputRules.push(...extension.getInputRules(markType));
160
- mergeCommands(extension.getCommandFactories(this.editor, markType), extension.name);
133
+ this.commandManager.mergeCommandFactories(extension.getCommandFactories(this.editor, markType), extension.name);
161
134
  mergeShortcuts(extension.getKeyboardShortcuts(this.editor), extension.name);
162
135
  }
163
136
  if (extension.type === 'extension') {
164
- plugins.push(...extension.getProseMirrorPlugins(this.editor, this.schema));
165
- mergeCommands(extension.getCommandFactories(this.editor), extension.name);
137
+ this.plugins.push(...extension.getProseMirrorPlugins());
138
+ this.commandManager.mergeCommandFactories(extension.getCommandFactories(this.editor), extension.name);
166
139
  mergeShortcuts(extension.getKeyboardShortcuts(this.editor), extension.name);
167
140
  converters = {
168
141
  ...converters,
@@ -180,13 +153,13 @@ export class ExtensionManager {
180
153
  console.debug(`Key: ${key}`);
181
154
  return true;
182
155
  };
183
- keyBindings.set(key, chainCommands(wrapperCommand, keyBinding));
156
+ keyBindings.set(key, firstCommand(wrapperCommand, keyBinding));
184
157
  }
185
158
  }
186
159
  this.converters = converters;
187
- plugins.push(new InputRulesPlugin(inputRules));
188
- plugins.push(new KeymapPlugin(Object.fromEntries(keyBindings)));
189
- return plugins;
160
+ this.plugins.push(new InputRulesPlugin(inputRules));
161
+ this.plugins.push(new KeymapPlugin(Object.fromEntries(keyBindings)));
162
+ this.plugins.push(new TrackSelecionPlugin(this.editor));
190
163
  }
191
164
  setupExtensions(extensions) {
192
165
  const allExtensions = new Map();
@@ -218,7 +191,7 @@ export class ExtensionManager {
218
191
  if (!initialized.has(require)) {
219
192
  const requiredExtension = allExtensions.get(require);
220
193
  if (!requiredExtension) {
221
- throw new Error('Required extension not found: ' + require);
194
+ throw new Error(`Required extension for (${'name' in extension ? extension.name : extension}) not found: ${require}`);
222
195
  }
223
196
  recursiveInitializeExtension(requiredExtension);
224
197
  }
@@ -240,6 +213,15 @@ export class ExtensionManager {
240
213
  }
241
214
  getSchemaByResolvedExtensions(editor) {
242
215
  const { nodeExtensions, markExtensions, baseExtensions } = splitExtensions(this.extensions);
216
+ for (const extension of baseExtensions) {
217
+ if (Array.isArray(extension.conflicts)) {
218
+ for (const name of extension.conflicts) {
219
+ if (this.getExtension(name)) {
220
+ throw new Error(`Extension conflict: ${extension.name} vs ${name}`);
221
+ }
222
+ }
223
+ }
224
+ }
243
225
  const nodes = {};
244
226
  for (const extension of nodeExtensions) {
245
227
  nodes[extension.name] = extension.getNodeSpec();
@@ -251,7 +233,7 @@ export class ExtensionManager {
251
233
  addAttributesToSchema(marks[extension.name], extension);
252
234
  }
253
235
  const spec = {
254
- topNode: this.editor.options.topNode || 'doc',
236
+ topNode: this.editor.config.topNode || 'doc',
255
237
  nodes,
256
238
  marks,
257
239
  };
@@ -269,4 +251,10 @@ export class ExtensionManager {
269
251
  editor.dispatchEvent(event);
270
252
  return new Schema(spec);
271
253
  }
254
+ created() {
255
+ this.initPlugins();
256
+ for (const extension of this.extensions) {
257
+ extension.created();
258
+ }
259
+ }
272
260
  }
@@ -10,8 +10,11 @@ export declare abstract class Mark {
10
10
  protected config: Partial<MarkConfig>;
11
11
  readonly type = "mark";
12
12
  name: string;
13
+ protected editor: CoreEditor;
13
14
  readonly attributes: Record<string, Attribute<any>>;
14
15
  constructor(config?: Partial<MarkConfig>);
16
+ setEditor(editor: CoreEditor): void;
17
+ created(): void;
15
18
  getMarkSpec(): MarkSpec;
16
19
  getInputRules(type: MarkType): InputRule[];
17
20
  getCommandFactories(editor: CoreEditor, type: MarkType): Partial<CommandFactories>;
@@ -1 +1 @@
1
- {"version":3,"file":"Mark.d.ts","sourceRoot":"","sources":["../../../src/editor/src/Mark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,UAAU;IAEzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,8BAAsB,IAAI;IAML,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;IALxD,QAAQ,CAAC,IAAI,UAAU;IACvB,IAAI,EAAE,MAAM,CAAU;IAEtB,SAAgB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM;gBAEnC,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAE7D,WAAW,IAAI,QAAQ;IAIvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAI1C,mBAAmB,CACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAI5B,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGpE"}
1
+ {"version":3,"file":"Mark.d.ts","sourceRoot":"","sources":["../../../src/editor/src/Mark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,UAAU;IAEzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,8BAAsB,IAAI;IAOL,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;IANxD,QAAQ,CAAC,IAAI,UAAU;IACvB,IAAI,EAAE,MAAM,CAAU;IACtB,SAAS,CAAC,MAAM,EAAG,UAAU,CAAC;IAE9B,SAAgB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM;gBAEnC,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAE7D,SAAS,CAAC,MAAM,EAAE,UAAU;IAI5B,OAAO;IAGP,WAAW,IAAI,QAAQ;IAIvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAI1C,mBAAmB,CACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAI5B,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGpE"}
@@ -18,6 +18,12 @@ export class Mark {
18
18
  writable: true,
19
19
  value: 'node'
20
20
  });
21
+ Object.defineProperty(this, "editor", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
21
27
  Object.defineProperty(this, "attributes", {
22
28
  enumerable: true,
23
29
  configurable: true,
@@ -25,6 +31,11 @@ export class Mark {
25
31
  value: {}
26
32
  });
27
33
  }
34
+ setEditor(editor) {
35
+ this.editor = editor;
36
+ }
37
+ created() {
38
+ }
28
39
  getMarkSpec() {
29
40
  throw new Error('MarkSpec not defined: ' + this.name);
30
41
  }
@@ -16,14 +16,17 @@ export declare abstract class Node {
16
16
  protected config: Partial<NodeConfig>;
17
17
  readonly type = "node";
18
18
  name: string;
19
+ protected editor: CoreEditor;
19
20
  readonly attributes: Record<string, Attribute<any>>;
20
21
  constructor(config?: Partial<NodeConfig>);
22
+ setEditor(editor: CoreEditor): void;
23
+ created(): void;
21
24
  getNodeSpec(): NodeSpec;
22
25
  getInputRules(type: NodeType): InputRule[];
23
- getProseMirrorPlugins(editor: CoreEditor, schema: Schema): Plugin[];
26
+ getProseMirrorPlugins(): Plugin[];
24
27
  getCommandFactories(editor: CoreEditor, type: NodeType): Partial<CommandFactories>;
25
28
  getKeyboardShortcuts(editor: CoreEditor): Partial<CommandShortcuts>;
26
- getNodeView(): NodeViewConstructor | undefined;
29
+ getNodeView(editor: CoreEditor): NodeViewConstructor | undefined;
27
30
  getConverters(editor: CoreEditor, schema: Schema): Record<string, Converter>;
28
31
  }
29
32
  //# sourceMappingURL=Node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../../src/editor/src/Node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,UAAU;IAEzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC;CAC9B;AAED,8BAAsB,IAAI;IAML,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;IALxD,QAAQ,CAAC,IAAI,UAAU;IACvB,IAAI,EAAE,MAAM,CAAU;IAEtB,SAAgB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM;gBAEnC,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAE7D,WAAW,IAAI,QAAQ;IAIvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAI1C,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAInE,mBAAmB,CACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAI5B,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInE,WAAW,IAAI,mBAAmB,GAAG,SAAS;IAI9C,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;CAG7E"}
1
+ {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../../src/editor/src/Node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,UAAU;IAEzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC;CAC9B;AAED,8BAAsB,IAAI;IAOL,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;IANxD,QAAQ,CAAC,IAAI,UAAU;IACvB,IAAI,EAAE,MAAM,CAAU;IACtB,SAAS,CAAC,MAAM,EAAG,UAAU,CAAC;IAE9B,SAAgB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM;gBAEnC,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAE7D,SAAS,CAAC,MAAM,EAAE,UAAU;IAI5B,OAAO;IAGP,WAAW,IAAI,QAAQ;IAIvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAI1C,qBAAqB,IAAI,MAAM,EAAE;IAIjC,mBAAmB,CACjB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAI5B,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInE,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,GAAG,SAAS;IAIhE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;CAG7E"}
@@ -18,6 +18,12 @@ export class Node {
18
18
  writable: true,
19
19
  value: 'node'
20
20
  });
21
+ Object.defineProperty(this, "editor", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
21
27
  Object.defineProperty(this, "attributes", {
22
28
  enumerable: true,
23
29
  configurable: true,
@@ -25,13 +31,18 @@ export class Node {
25
31
  value: {}
26
32
  });
27
33
  }
34
+ setEditor(editor) {
35
+ this.editor = editor;
36
+ }
37
+ created() {
38
+ }
28
39
  getNodeSpec() {
29
40
  throw new Error('NodeSpec not defined: ' + this.name);
30
41
  }
31
42
  getInputRules(type) {
32
43
  return [];
33
44
  }
34
- getProseMirrorPlugins(editor, schema) {
45
+ getProseMirrorPlugins() {
35
46
  return [];
36
47
  }
37
48
  getCommandFactories(editor, type) {
@@ -40,7 +51,7 @@ export class Node {
40
51
  getKeyboardShortcuts(editor) {
41
52
  return {};
42
53
  }
43
- getNodeView() {
54
+ getNodeView(editor) {
44
55
  return undefined;
45
56
  }
46
57
  getConverters(editor, schema) {
@@ -1,16 +1,23 @@
1
- import { EditorState, Transaction } from 'prosemirror-state';
2
- import { CoreEditor } from '../CoreEditor.js';
3
- import { ChainedCommands, CommandFactory } from './mod.js';
1
+ import type { EditorState, Transaction } from 'prosemirror-state';
2
+ import type { CoreEditor } from '../CoreEditor.js';
3
+ import type { ChainedCommands, CommandFactories, CommandFactory } from './types.js';
4
+ type CommandRunner = (...args: any[]) => boolean;
4
5
  export declare class CommandManager {
5
6
  private editor;
6
- private commandFactories;
7
- constructor(editor: CoreEditor, commandFactories?: {
7
+ readonly commandFactories: {
8
8
  [key: string]: CommandFactory;
9
- });
9
+ };
10
+ readonly run: {
11
+ [key: string]: CommandRunner;
12
+ };
13
+ private debug;
14
+ constructor(editor: CoreEditor);
15
+ mergeCommandFactories(toInsert: Partial<CommandFactories>, extName: string): void;
10
16
  get state(): EditorState;
11
17
  get chain(): () => ChainedCommands;
12
18
  get can(): () => ChainedCommands;
13
19
  createChain(startTr?: Transaction, shouldDispatch?: boolean): ChainedCommands;
14
20
  createCan(startTr?: Transaction): ChainedCommands;
15
21
  }
22
+ export {};
16
23
  //# sourceMappingURL=CommandManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandManager.d.ts","sourceRoot":"","sources":["../../../../src/editor/src/commands/CommandManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3D,qBAAa,cAAc;IAEvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;gBADhB,MAAM,EAAE,UAAU,EAClB,gBAAgB,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAO;IAIlE,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED,IAAI,KAAK,IAAI,MAAM,eAAe,CAEjC;IAED,IAAI,GAAG,IAAI,MAAM,eAAe,CAE/B;IAEM,WAAW,CAChB,OAAO,CAAC,EAAE,WAAW,EACrB,cAAc,UAAO,GACpB,eAAe;IA4CX,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,eAAe;CAGzD"}
1
+ {"version":3,"file":"CommandManager.d.ts","sourceRoot":"","sources":["../../../../src/editor/src/commands/CommandManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EACV,eAAe,EAEf,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AAMpB,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;AAEjD,qBAAa,cAAc;IAOvB,OAAO,CAAC,MAAM;IANhB,SAAgB,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAM;IACzE,SAAgB,GAAG,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAM;IAE3D,OAAO,CAAC,KAAK,CAAQ;gBAGX,MAAM,EAAE,UAAU;IAOrB,qBAAqB,CAC1B,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACnC,OAAO,EAAE,MAAM;IA4CjB,IAAI,KAAK,IAAI,WAAW,CAEvB;IAED,IAAI,KAAK,IAAI,MAAM,eAAe,CAEjC;IAED,IAAI,GAAG,IAAI,MAAM,eAAe,CAE/B;IAEM,WAAW,CAChB,OAAO,CAAC,EAAE,WAAW,EACrB,cAAc,UAAO,GACpB,eAAe;IA4CX,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,eAAe;CAGzD"}
@@ -1,6 +1,10 @@
1
+ import { EditorView } from 'prosemirror-view';
1
2
  import { createChainableState } from './createChainableState.js';
3
+ import { baseCommandFactories } from './baseCommandFactories.js';
4
+ import { keyCommandFactories } from './keyCommandFactories.js';
5
+ import { replaceCommandFactories } from './replaceCommandFactories.js';
2
6
  export class CommandManager {
3
- constructor(editor, commandFactories = {}) {
7
+ constructor(editor) {
4
8
  Object.defineProperty(this, "editor", {
5
9
  enumerable: true,
6
10
  configurable: true,
@@ -11,8 +15,61 @@ export class CommandManager {
11
15
  enumerable: true,
12
16
  configurable: true,
13
17
  writable: true,
14
- value: commandFactories
18
+ value: {}
15
19
  });
20
+ Object.defineProperty(this, "run", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: {}
25
+ });
26
+ Object.defineProperty(this, "debug", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true,
30
+ value: true
31
+ });
32
+ this.mergeCommandFactories(baseCommandFactories, 'baseCommand');
33
+ this.mergeCommandFactories(keyCommandFactories, 'key');
34
+ this.mergeCommandFactories(replaceCommandFactories, 'replace');
35
+ }
36
+ mergeCommandFactories(toInsert, extName) {
37
+ for (const key in toInsert) {
38
+ const commandFactory = toInsert[key];
39
+ if (!commandFactory) {
40
+ continue;
41
+ }
42
+ if (this.debug) {
43
+ const wrappedFactory = (...args) => {
44
+ const realCommand = commandFactory(...args);
45
+ const command = (state, dispatch, view) => {
46
+ if (dispatch) {
47
+ console.debug(`Command: ${extName}.${key}`);
48
+ }
49
+ return realCommand(state, dispatch, view);
50
+ };
51
+ return command;
52
+ };
53
+ this.commandFactories[key] = wrappedFactory;
54
+ }
55
+ else {
56
+ this.commandFactories[key] = commandFactory;
57
+ }
58
+ }
59
+ for (const key in this.commandFactories) {
60
+ const factory = this.commandFactories[key];
61
+ this.run[key] = (...args) => {
62
+ const command = factory(...args);
63
+ const state = this.editor.state;
64
+ const view = this.editor.view;
65
+ if (view instanceof EditorView) {
66
+ return command(state, view.dispatch, view);
67
+ }
68
+ else {
69
+ return command(state, view.dispatch);
70
+ }
71
+ };
72
+ }
16
73
  }
17
74
  get state() {
18
75
  return this.editor.state;
@@ -0,0 +1,3 @@
1
+ import { CommandFactory } from './types.js';
2
+ export declare const baseCommandFactories: Record<string, CommandFactory>;
3
+ //# sourceMappingURL=baseCommandFactories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseCommandFactories.d.ts","sourceRoot":"","sources":["../../../../src/editor/src/commands/baseCommandFactories.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AAo/B1D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA2B/D,CAAC"}