@kerebron/extension-basic-editor 0.2.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 (197) hide show
  1. package/README.md +4 -2
  2. package/esm/editor/src/CoreEditor.d.ts +24 -9
  3. package/esm/editor/src/CoreEditor.d.ts.map +1 -1
  4. package/esm/editor/src/CoreEditor.js +125 -70
  5. package/esm/editor/src/DummyEditorView.d.ts +60 -0
  6. package/esm/editor/src/DummyEditorView.d.ts.map +1 -0
  7. package/esm/editor/src/DummyEditorView.js +277 -0
  8. package/esm/editor/src/Extension.d.ts +15 -10
  9. package/esm/editor/src/Extension.d.ts.map +1 -1
  10. package/esm/editor/src/Extension.js +23 -3
  11. package/esm/editor/src/ExtensionManager.d.ts +9 -9
  12. package/esm/editor/src/ExtensionManager.d.ts.map +1 -1
  13. package/esm/editor/src/ExtensionManager.js +81 -74
  14. package/esm/editor/src/Mark.d.ts +11 -6
  15. package/esm/editor/src/Mark.d.ts.map +1 -1
  16. package/esm/editor/src/Mark.js +19 -2
  17. package/esm/editor/src/Node.d.ts +18 -13
  18. package/esm/editor/src/Node.d.ts.map +1 -1
  19. package/esm/editor/src/Node.js +22 -5
  20. package/esm/editor/src/commands/CommandManager.d.ts +14 -11
  21. package/esm/editor/src/commands/CommandManager.d.ts.map +1 -1
  22. package/esm/editor/src/commands/CommandManager.js +64 -6
  23. package/esm/editor/src/commands/baseCommandFactories.d.ts +3 -0
  24. package/esm/editor/src/commands/baseCommandFactories.d.ts.map +1 -0
  25. package/esm/editor/src/commands/baseCommandFactories.js +836 -0
  26. package/esm/editor/src/commands/keyCommandFactories.d.ts +3 -0
  27. package/esm/editor/src/commands/keyCommandFactories.d.ts.map +1 -0
  28. package/esm/editor/src/commands/keyCommandFactories.js +10 -0
  29. package/esm/editor/src/commands/mod.d.ts +5 -47
  30. package/esm/editor/src/commands/mod.d.ts.map +1 -1
  31. package/esm/editor/src/commands/mod.js +14 -866
  32. package/esm/editor/src/commands/replaceCommandFactories.d.ts +3 -0
  33. package/esm/editor/src/commands/replaceCommandFactories.d.ts.map +1 -0
  34. package/esm/editor/src/commands/replaceCommandFactories.js +94 -0
  35. package/esm/editor/src/commands/types.d.ts +18 -0
  36. package/esm/editor/src/commands/types.d.ts.map +1 -0
  37. package/esm/editor/src/commands/types.js +1 -0
  38. package/esm/editor/src/mod.d.ts +3 -0
  39. package/esm/editor/src/mod.d.ts.map +1 -1
  40. package/esm/editor/src/mod.js +3 -0
  41. package/esm/editor/src/nodeToTreeString.d.ts +8 -2
  42. package/esm/editor/src/nodeToTreeString.d.ts.map +1 -1
  43. package/esm/editor/src/nodeToTreeString.js +47 -29
  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/plugins/input-rules/InputRulesPlugin.js +2 -2
  48. package/esm/editor/src/plugins/keymap/keymap.d.ts +11 -0
  49. package/esm/editor/src/plugins/keymap/keymap.d.ts.map +1 -0
  50. package/esm/editor/src/plugins/keymap/keymap.js +125 -0
  51. package/esm/editor/src/plugins/keymap/mod.d.ts +2 -0
  52. package/esm/editor/src/plugins/keymap/mod.d.ts.map +1 -0
  53. package/esm/editor/src/plugins/keymap/mod.js +1 -0
  54. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts +4 -0
  55. package/esm/editor/src/plugins/keymap/w3c-keyname.d.ts.map +1 -0
  56. package/esm/editor/src/plugins/keymap/w3c-keyname.js +124 -0
  57. package/esm/editor/src/types.d.ts +30 -7
  58. package/esm/editor/src/types.d.ts.map +1 -1
  59. package/esm/editor/src/ui.d.ts +15 -0
  60. package/esm/editor/src/ui.d.ts.map +1 -0
  61. package/esm/editor/src/ui.js +16 -0
  62. package/esm/editor/src/utilities/SmartOutput.d.ts +41 -0
  63. package/esm/editor/src/utilities/SmartOutput.d.ts.map +1 -0
  64. package/esm/editor/src/utilities/SmartOutput.js +228 -0
  65. package/esm/editor/src/utilities/createNodeFromContent.d.ts +4 -3
  66. package/esm/editor/src/utilities/createNodeFromContent.d.ts.map +1 -1
  67. package/esm/editor/src/utilities/createNodeFromContent.js +4 -5
  68. package/esm/editor/src/utilities/getHtmlAttributes.d.ts +8 -3
  69. package/esm/editor/src/utilities/getHtmlAttributes.d.ts.map +1 -1
  70. package/esm/editor/src/utilities/getShadowRoot.d.ts +2 -0
  71. package/esm/editor/src/utilities/getShadowRoot.d.ts.map +1 -0
  72. package/esm/editor/src/utilities/getShadowRoot.js +16 -0
  73. package/esm/editor/src/utilities/mod.d.ts +3 -0
  74. package/esm/editor/src/utilities/mod.d.ts.map +1 -1
  75. package/esm/editor/src/utilities/mod.js +3 -0
  76. package/esm/editor/src/utilities/toRawTextResult.d.ts +3 -0
  77. package/esm/editor/src/utilities/toRawTextResult.d.ts.map +1 -0
  78. package/esm/editor/src/utilities/toRawTextResult.js +21 -0
  79. package/esm/extension-basic-editor/src/ExtensionBaseKeymap.d.ts +1 -2
  80. package/esm/extension-basic-editor/src/ExtensionBaseKeymap.d.ts.map +1 -1
  81. package/esm/extension-basic-editor/src/ExtensionBaseKeymap.js +40 -14
  82. package/esm/extension-basic-editor/src/ExtensionBasicCodeEditor.d.ts +11 -0
  83. package/esm/extension-basic-editor/src/ExtensionBasicCodeEditor.d.ts.map +1 -0
  84. package/esm/extension-basic-editor/src/ExtensionBasicCodeEditor.js +71 -0
  85. package/esm/extension-basic-editor/src/ExtensionBasicEditor.d.ts +23 -9
  86. package/esm/extension-basic-editor/src/ExtensionBasicEditor.d.ts.map +1 -1
  87. package/esm/extension-basic-editor/src/ExtensionBasicEditor.js +38 -8
  88. package/esm/extension-basic-editor/src/ExtensionDropcursor.d.ts +7 -0
  89. package/esm/extension-basic-editor/src/ExtensionDropcursor.d.ts.map +1 -1
  90. package/esm/extension-basic-editor/src/ExtensionDropcursor.js +211 -1
  91. package/esm/extension-basic-editor/src/ExtensionGapcursor.d.ts +21 -1
  92. package/esm/extension-basic-editor/src/ExtensionGapcursor.d.ts.map +1 -1
  93. package/esm/extension-basic-editor/src/ExtensionGapcursor.js +239 -1
  94. package/esm/extension-basic-editor/src/ExtensionHistory.d.ts +4 -3
  95. package/esm/extension-basic-editor/src/ExtensionHistory.d.ts.map +1 -1
  96. package/esm/extension-basic-editor/src/ExtensionHistory.js +29 -3
  97. package/esm/extension-basic-editor/src/ExtensionHtml.d.ts.map +1 -1
  98. package/esm/extension-basic-editor/src/ExtensionHtml.js +7 -4
  99. package/esm/extension-basic-editor/src/ExtensionMediaUpload.d.ts +24 -0
  100. package/esm/extension-basic-editor/src/ExtensionMediaUpload.d.ts.map +1 -0
  101. package/esm/extension-basic-editor/src/ExtensionMediaUpload.js +176 -0
  102. package/esm/extension-basic-editor/src/ExtensionSelection.d.ts +11 -0
  103. package/esm/extension-basic-editor/src/ExtensionSelection.d.ts.map +1 -0
  104. package/esm/extension-basic-editor/src/ExtensionSelection.js +237 -0
  105. package/esm/extension-basic-editor/src/MarkBookmark.d.ts.map +1 -1
  106. package/esm/extension-basic-editor/src/MarkChange.d.ts.map +1 -1
  107. package/esm/extension-basic-editor/src/MarkCode.d.ts +4 -7
  108. package/esm/extension-basic-editor/src/MarkCode.d.ts.map +1 -1
  109. package/esm/extension-basic-editor/src/MarkCode.js +2 -11
  110. package/esm/extension-basic-editor/src/MarkHighlight.d.ts +8 -0
  111. package/esm/extension-basic-editor/src/MarkHighlight.d.ts.map +1 -0
  112. package/esm/extension-basic-editor/src/MarkHighlight.js +43 -0
  113. package/esm/extension-basic-editor/src/MarkItalic.d.ts +4 -6
  114. package/esm/extension-basic-editor/src/MarkItalic.d.ts.map +1 -1
  115. package/esm/extension-basic-editor/src/MarkItalic.js +2 -11
  116. package/esm/extension-basic-editor/src/MarkLink.d.ts +1 -11
  117. package/esm/extension-basic-editor/src/MarkLink.d.ts.map +1 -1
  118. package/esm/extension-basic-editor/src/MarkLink.js +0 -32
  119. package/esm/extension-basic-editor/src/MarkStrike.d.ts +11 -0
  120. package/esm/extension-basic-editor/src/MarkStrike.d.ts.map +1 -0
  121. package/esm/extension-basic-editor/src/MarkStrike.js +39 -0
  122. package/esm/extension-basic-editor/src/MarkStrong.d.ts +4 -7
  123. package/esm/extension-basic-editor/src/MarkStrong.d.ts.map +1 -1
  124. package/esm/extension-basic-editor/src/MarkStrong.js +2 -11
  125. package/esm/extension-basic-editor/src/MarkTextColor.d.ts +8 -0
  126. package/esm/extension-basic-editor/src/MarkTextColor.d.ts.map +1 -0
  127. package/esm/extension-basic-editor/src/MarkTextColor.js +35 -0
  128. package/esm/extension-basic-editor/src/MarkUnderline.d.ts +3 -5
  129. package/esm/extension-basic-editor/src/MarkUnderline.d.ts.map +1 -1
  130. package/esm/extension-basic-editor/src/MarkUnderline.js +2 -11
  131. package/esm/extension-basic-editor/src/NodeAside.d.ts +0 -3
  132. package/esm/extension-basic-editor/src/NodeAside.d.ts.map +1 -1
  133. package/esm/extension-basic-editor/src/NodeAside.js +0 -8
  134. package/esm/extension-basic-editor/src/NodeBlockquote.d.ts +3 -6
  135. package/esm/extension-basic-editor/src/NodeBlockquote.d.ts.map +1 -1
  136. package/esm/extension-basic-editor/src/NodeBlockquote.js +2 -11
  137. package/esm/extension-basic-editor/src/NodeBulletList.d.ts +4 -7
  138. package/esm/extension-basic-editor/src/NodeBulletList.d.ts.map +1 -1
  139. package/esm/extension-basic-editor/src/NodeBulletList.js +2 -11
  140. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts +9 -0
  141. package/esm/extension-basic-editor/src/NodeCodeBlock.d.ts.map +1 -0
  142. package/esm/extension-basic-editor/src/NodeCodeBlock.js +58 -0
  143. package/esm/extension-basic-editor/src/NodeDefinitionDesc.d.ts +8 -0
  144. package/esm/extension-basic-editor/src/NodeDefinitionDesc.d.ts.map +1 -0
  145. package/esm/extension-basic-editor/src/NodeDefinitionDesc.js +29 -0
  146. package/esm/extension-basic-editor/src/NodeDefinitionList.d.ts +13 -0
  147. package/esm/extension-basic-editor/src/NodeDefinitionList.d.ts.map +1 -0
  148. package/esm/extension-basic-editor/src/NodeDefinitionList.js +41 -0
  149. package/esm/extension-basic-editor/src/NodeDefinitionTerm.d.ts +8 -0
  150. package/esm/extension-basic-editor/src/NodeDefinitionTerm.d.ts.map +1 -0
  151. package/esm/extension-basic-editor/src/NodeDefinitionTerm.js +29 -0
  152. package/esm/extension-basic-editor/src/NodeDocumentCode.d.ts +7 -0
  153. package/esm/extension-basic-editor/src/NodeDocumentCode.d.ts.map +1 -0
  154. package/esm/extension-basic-editor/src/NodeDocumentCode.js +37 -0
  155. package/esm/extension-basic-editor/src/NodeFrontmatter.d.ts +8 -0
  156. package/esm/extension-basic-editor/src/NodeFrontmatter.d.ts.map +1 -0
  157. package/esm/extension-basic-editor/src/NodeFrontmatter.js +29 -0
  158. package/esm/extension-basic-editor/src/NodeHardBreak.d.ts +5 -2
  159. package/esm/extension-basic-editor/src/NodeHardBreak.d.ts.map +1 -1
  160. package/esm/extension-basic-editor/src/NodeHardBreak.js +40 -53
  161. package/esm/extension-basic-editor/src/NodeHeading.d.ts +3 -14
  162. package/esm/extension-basic-editor/src/NodeHeading.d.ts.map +1 -1
  163. package/esm/extension-basic-editor/src/NodeHeading.js +2 -15
  164. package/esm/extension-basic-editor/src/NodeHorizontalRule.d.ts +4 -4
  165. package/esm/extension-basic-editor/src/NodeHorizontalRule.d.ts.map +1 -1
  166. package/esm/extension-basic-editor/src/NodeHorizontalRule.js +1 -2
  167. package/esm/extension-basic-editor/src/NodeListItem.d.ts +7 -5
  168. package/esm/extension-basic-editor/src/NodeListItem.d.ts.map +1 -1
  169. package/esm/extension-basic-editor/src/NodeListItem.js +10 -15
  170. package/esm/extension-basic-editor/src/NodeMath.d.ts +8 -0
  171. package/esm/extension-basic-editor/src/NodeMath.d.ts.map +1 -0
  172. package/esm/extension-basic-editor/src/NodeMath.js +112 -0
  173. package/esm/extension-basic-editor/src/NodeOrderedList.d.ts +3 -6
  174. package/esm/extension-basic-editor/src/NodeOrderedList.d.ts.map +1 -1
  175. package/esm/extension-basic-editor/src/NodeOrderedList.js +4 -14
  176. package/esm/extension-basic-editor/src/NodeParagraph.d.ts +2 -5
  177. package/esm/extension-basic-editor/src/NodeParagraph.d.ts.map +1 -1
  178. package/esm/extension-basic-editor/src/NodeParagraph.js +2 -11
  179. package/esm/extension-basic-editor/src/NodeTaskItem.d.ts +24 -0
  180. package/esm/extension-basic-editor/src/NodeTaskItem.d.ts.map +1 -0
  181. package/esm/extension-basic-editor/src/NodeTaskItem.js +153 -0
  182. package/esm/extension-basic-editor/src/NodeTaskList.d.ts +11 -0
  183. package/esm/extension-basic-editor/src/NodeTaskList.d.ts.map +1 -0
  184. package/esm/extension-basic-editor/src/NodeTaskList.js +38 -0
  185. package/esm/extension-basic-editor/src/NodeText.d.ts +0 -1
  186. package/esm/extension-basic-editor/src/NodeText.d.ts.map +1 -1
  187. package/esm/extension-basic-editor/src/NodeText.js +0 -6
  188. package/esm/extension-basic-editor/src/NodeVideo.d.ts +8 -0
  189. package/esm/extension-basic-editor/src/NodeVideo.d.ts.map +1 -0
  190. package/esm/extension-basic-editor/src/NodeVideo.js +58 -0
  191. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.d.ts +24 -0
  192. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.d.ts.map +1 -0
  193. package/esm/extension-basic-editor/src/remote-selection/ExtensionRemoteSelection.js +35 -0
  194. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.d.ts +25 -0
  195. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.d.ts.map +1 -0
  196. package/esm/extension-basic-editor/src/remote-selection/remoteSelectionPlugin.js +96 -0
  197. package/package.json +29 -6
@@ -1,5 +1,5 @@
1
1
  import { Node } from '../../editor/src/mod.js';
2
- import { exitCode, } from '../../editor/src/commands/mod.js';
2
+ import { firstCommand } from '../../editor/src/commands/mod.js';
3
3
  export class NodeHardBreak extends Node {
4
4
  constructor() {
5
5
  super(...arguments);
@@ -15,7 +15,14 @@ export class NodeHardBreak extends Node {
15
15
  writable: true,
16
16
  value: ['doc']
17
17
  });
18
- // TODO automerge
18
+ Object.defineProperty(this, "options", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: {
23
+ keepMarks: true,
24
+ }
25
+ });
19
26
  }
20
27
  getNodeSpec() {
21
28
  return {
@@ -29,62 +36,42 @@ export class NodeHardBreak extends Node {
29
36
  },
30
37
  };
31
38
  }
32
- /*if (!exitCode(view.state, view.dispatch)) return false
33
- view.focus()
34
- return true
35
- }},*/
36
- getCommands(editor, type) {
39
+ getCommandFactories(editor, type) {
40
+ // TODO: refactor commands
41
+ // const comm2: Command = (state: EditorState, dispatch?: (tr: Transaction) => void) => {
42
+ // const { selection, storedMarks } = state
43
+ // if (selection.$from.parent.type.spec.isolating) {
44
+ // return false
45
+ // }
46
+ // const { keepMarks } = this.options
47
+ // // const { splittableMarks } = editor.extensionManager
48
+ // const splittableMarks = [];
49
+ // const marks = storedMarks
50
+ // || (selection.$to.parentOffset && selection.$from.marks())
51
+ // return editor.chain()
52
+ // .insertContent({ type: this.name })
53
+ // .command(({ tr, dispatch }) => {
54
+ // if (dispatch && marks && keepMarks) {
55
+ // for (const mark of marks) {
56
+ // console.log('mteset', mark.type);
57
+ // }
58
+ // const filteredMarks = marks
59
+ // .filter(mark => splittableMarks.includes(mark.type.name))
60
+ // tr.ensureMarks(filteredMarks)
61
+ // }
62
+ // return true
63
+ // })
64
+ // .run();
65
+ // }
66
+ const setHardBreak = firstCommand(editor.run.exitCode);
37
67
  return {
38
- // 'first': commands => first(commands),
39
- 'setHardBreak': () => (state, dispatch) => {
40
- if (!exitCode(state, dispatch)) {
41
- return false;
42
- }
43
- editor.view.focus();
44
- if (dispatch) {
45
- dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView());
46
- }
47
- return true;
48
- },
49
- // const commands = editor.commands;
50
- // return commands.first([
51
- // () => commands.exitCode(),
52
- // () => commands.command(() => {
53
- // const { selection, storedMarks } = state
54
- //
55
- // if (selection.$from.parent.type.spec.isolating) {
56
- // return false
57
- // }
58
- //
59
- // const { keepMarks } = this.options
60
- // const { splittableMarks } = editor.extensionManager
61
- // const marks = storedMarks
62
- // || (selection.$to.parentOffset && selection.$from.marks())
63
- //
64
- // return chain()
65
- // .insertContent({ type: this.name })
66
- // .command(({ tr, dispatch }) => {
67
- // if (dispatch && marks && keepMarks) {
68
- // const filteredMarks = marks
69
- // .filter(mark => splittableMarks.includes(mark.type.name))
70
- //
71
- // tr.ensureMarks(filteredMarks)
72
- // }
73
- //
74
- // return true
75
- // })
76
- // .run()
77
- // }),
78
- // ])
79
- // chainCommands(exitCode, (state, dispatch) => {
80
- // if (dispatch) dispatch(state.tr.replaceSelectionWith(br.create()).scrollIntoView())
81
- // return true
82
- // })
68
+ 'setHardBreak': () => setHardBreak,
83
69
  };
84
70
  }
85
71
  getKeyboardShortcuts() {
72
+ // https://stackoverflow.com/a/73619128
86
73
  const mac = typeof navigator != 'undefined'
87
- ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)
74
+ ? /Mac|iP(hone|[oa]d)/.test(navigator?.platform)
88
75
  : false;
89
76
  const shortcuts = {
90
77
  'Ctrl-Enter': 'setHardBreak',
@@ -1,24 +1,13 @@
1
- import { NodeSpec, NodeType } from 'prosemirror-model';
1
+ import type { NodeSpec, NodeType } from 'prosemirror-model';
2
2
  import { type CoreEditor, Node } from '../../editor/src/mod.js';
3
- import { type Commands, type CommandShortcuts } from '../../editor/src/commands/mod.js';
3
+ import { type CommandFactories, type CommandShortcuts } from '../../editor/src/commands/mod.js';
4
4
  import { type InputRule } from '../../editor/src/plugins/input-rules/mod.js';
5
5
  export declare class NodeHeading extends Node {
6
6
  name: string;
7
7
  requires: string[];
8
- automerge: {
9
- block: string;
10
- attrParsers: {
11
- fromAutomerge: (block: any) => {
12
- level: any;
13
- };
14
- fromProsemirror: (node: any) => {
15
- level: any;
16
- };
17
- };
18
- };
19
8
  getNodeSpec(): NodeSpec;
20
9
  getInputRules(type: NodeType): InputRule[];
21
- getCommands(editor: CoreEditor, type: NodeType): Partial<Commands>;
10
+ getCommandFactories(editor: CoreEditor, type: NodeType): Partial<CommandFactories>;
22
11
  getKeyboardShortcuts(): Partial<CommandShortcuts>;
23
12
  }
24
13
  //# sourceMappingURL=NodeHeading.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeHeading.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeHeading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,SAAS,EAEf,MAAM,6CAA6C,CAAC;AAIrD,qBAAa,WAAY,SAAQ,IAAI;IAC1B,IAAI,SAAa;IAC1B,QAAQ,WAAW;IAEnB,SAAS;;;;;;;;;;MAMP;IAEO,WAAW,IAAI,QAAQ;IAoBvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAc1C,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUlE,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAS3D"}
1
+ {"version":3,"file":"NodeHeading.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeHeading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,SAAS,EAEf,MAAM,6CAA6C,CAAC;AAIrD,qBAAa,WAAY,SAAQ,IAAI;IAC1B,IAAI,SAAa;IAC1B,QAAQ,WAAW;IAEV,WAAW,IAAI,QAAQ;IAoBvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAc1C,mBAAmB,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAWnB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAS3D"}
@@ -1,5 +1,4 @@
1
1
  import { Node } from '../../editor/src/mod.js';
2
- import { setBlockType, } from '../../editor/src/commands/mod.js';
3
2
  import { textblockTypeInputRule, } from '../../editor/src/plugins/input-rules/mod.js';
4
3
  const maxLevel = 6;
5
4
  export class NodeHeading extends Node {
@@ -17,18 +16,6 @@ export class NodeHeading extends Node {
17
16
  writable: true,
18
17
  value: ['doc']
19
18
  });
20
- Object.defineProperty(this, "automerge", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: {
25
- block: 'heading',
26
- attrParsers: {
27
- fromAutomerge: (block) => ({ level: block.attrs.level }),
28
- fromProsemirror: (node) => ({ level: node.attrs.level }),
29
- },
30
- }
31
- });
32
19
  }
33
20
  getNodeSpec() {
34
21
  return {
@@ -58,10 +45,10 @@ export class NodeHeading extends Node {
58
45
  textblockTypeInputRule(new RegExp('^(#{1,' + maxLevel + '})\\s$'), type, (match) => ({ level: match[1].length })),
59
46
  ];
60
47
  }
61
- getCommands(editor, type) {
48
+ getCommandFactories(editor, type) {
62
49
  const commands = {};
63
50
  for (let i = 1; i <= maxLevel; i++) {
64
- commands['setHeading' + i] = () => setBlockType(type, { level: i });
51
+ commands['setHeading' + i] = () => editor.commandFactories.setBlockType(type, { level: i });
65
52
  }
66
53
  return commands;
67
54
  }
@@ -1,11 +1,11 @@
1
- import { NodeSpec, NodeType } from 'prosemirror-model';
2
- import { CoreEditor, Node } from '../../editor/src/mod.js';
3
- import { Commands, CommandShortcuts } from '../../editor/src/commands/mod.js';
1
+ import type { NodeSpec, NodeType } from 'prosemirror-model';
2
+ import { type CoreEditor, Node } from '../../editor/src/mod.js';
3
+ import type { CommandFactories, CommandShortcuts } from '../../editor/src/commands/mod.js';
4
4
  export declare class NodeHorizontalRule extends Node {
5
5
  name: string;
6
6
  requires: string[];
7
7
  getNodeSpec(): NodeSpec;
8
- getCommands(editor: CoreEditor, type: NodeType): Partial<Commands>;
8
+ getCommandFactories(editor: CoreEditor, type: NodeType): Partial<CommandFactories>;
9
9
  getKeyboardShortcuts(): Partial<CommandShortcuts>;
10
10
  }
11
11
  //# sourceMappingURL=NodeHorizontalRule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeHorizontalRule.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeHorizontalRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,qBAAa,kBAAmB,SAAQ,IAAI;IACjC,IAAI,SAAQ;IACrB,QAAQ,WAAW;IAEV,WAAW,IAAI,QAAQ;IAUvB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAalE,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAO3D"}
1
+ {"version":3,"file":"NodeHorizontalRule.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeHorizontalRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,kBAAmB,SAAQ,IAAI;IACjC,IAAI,SAAQ;IACrB,QAAQ,WAAW;IAEV,WAAW,IAAI,QAAQ;IAUvB,mBAAmB,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAanB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAK3D"}
@@ -14,7 +14,6 @@ export class NodeHorizontalRule extends Node {
14
14
  writable: true,
15
15
  value: ['doc']
16
16
  });
17
- // TODO automerge
18
17
  }
19
18
  getNodeSpec() {
20
19
  return {
@@ -25,7 +24,7 @@ export class NodeHorizontalRule extends Node {
25
24
  },
26
25
  };
27
26
  }
28
- getCommands(editor, type) {
27
+ getCommandFactories(editor, type) {
29
28
  return {
30
29
  'setHorizontalRule': () => (state, dispatch) => {
31
30
  if (dispatch) {
@@ -1,13 +1,15 @@
1
+ import { type Attrs, NodeSpec, type NodeType } from 'prosemirror-model';
2
+ import type { Command } from 'prosemirror-state';
1
3
  import { type CoreEditor, Node } from '../../editor/src/mod.js';
2
- import { type Commands, type CommandShortcuts } from '../../editor/src/commands/mod.js';
4
+ import { type CommandFactories, type CommandShortcuts } from '../../editor/src/commands/mod.js';
5
+ export declare function splitListItem(itemType: NodeType, itemAttrs?: Attrs): Command;
6
+ export declare function liftListItem(itemType: NodeType): Command;
7
+ export declare function sinkListItem(itemType: NodeType): Command;
3
8
  export declare class NodeListItem extends Node {
4
9
  name: string;
5
10
  requires: string[];
6
- automerge: {
7
- block: string;
8
- };
9
11
  getNodeSpec(): NodeSpec;
10
- getCommands(editor: CoreEditor, type: NodeType): Partial<Commands>;
12
+ getCommandFactories(editor: CoreEditor, type: NodeType): Partial<CommandFactories>;
11
13
  getKeyboardShortcuts(): Partial<CommandShortcuts>;
12
14
  }
13
15
  //# sourceMappingURL=NodeListItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeListItem.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeListItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAC;AA8P1C,qBAAa,YAAa,SAAQ,IAAI;IAC3B,IAAI,SAAe;IAC5B,QAAQ,WAAW;IAEnB,SAAS;;MAEP;IAEO,WAAW,IAAI,QAAQ;IAWhC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQlE,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAOlD"}
1
+ {"version":3,"file":"NodeListItem.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeListItem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EAGV,QAAQ,EACR,KAAK,QAAQ,EAEd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,OAAO,EAIR,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAU1C,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,CA+D5E;AAwBD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAgBxD;AAuGD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CA0CxD;AAED,qBAAa,YAAa,SAAQ,IAAI;IAC3B,IAAI,SAAe;IAC5B,QAAQ,WAAW;IAEV,WAAW,IAAI,QAAQ;IAWvB,mBAAmB,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAQnB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAO3D"}
@@ -1,7 +1,10 @@
1
+ import { Fragment, NodeRange, Slice, } from 'prosemirror-model';
2
+ import { Selection } from 'prosemirror-state';
1
3
  import { Node } from '../../editor/src/mod.js';
4
+ import { canJoin, canSplit, liftTarget, ReplaceAroundStep, } from 'prosemirror-transform';
2
5
  /// Build a command that splits a non-empty textblock at the top level
3
6
  /// of a list item by also splitting that list item.
4
- function splitListItem(itemType, itemAttrs) {
7
+ export function splitListItem(itemType, itemAttrs) {
5
8
  return function (state, dispatch) {
6
9
  const { $from, $to, node } = state.selection;
7
10
  if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {
@@ -80,7 +83,7 @@ function splitListItemKeepMarks(itemType, itemAttrs) {
80
83
  }
81
84
  /// Create a command to lift the list item around the selection up into
82
85
  /// a wrapping list.
83
- function liftListItem(itemType) {
86
+ export function liftListItem(itemType) {
84
87
  return function (state, dispatch) {
85
88
  let { $from, $to } = state.selection;
86
89
  let range = $from.blockRange($to, (node) => node.childCount > 0 && node.firstChild.type == itemType);
@@ -142,7 +145,7 @@ function liftOutOfList(state, dispatch, range) {
142
145
  }
143
146
  /// Create a command to sink the list item around the selection down
144
147
  /// into an inner list.
145
- function sinkListItem(itemType) {
148
+ export function sinkListItem(itemType) {
146
149
  return function (state, dispatch) {
147
150
  const { $from, $to } = state.selection;
148
151
  const range = $from.blockRange($to, (node) => node.childCount > 0 && node.firstChild.type == itemType);
@@ -181,14 +184,6 @@ export class NodeListItem extends Node {
181
184
  writable: true,
182
185
  value: ['doc']
183
186
  });
184
- Object.defineProperty(this, "automerge", {
185
- enumerable: true,
186
- configurable: true,
187
- writable: true,
188
- value: {
189
- block: 'list_item',
190
- }
191
- });
192
187
  }
193
188
  getNodeSpec() {
194
189
  return {
@@ -200,7 +195,7 @@ export class NodeListItem extends Node {
200
195
  },
201
196
  };
202
197
  }
203
- getCommands(editor, type) {
198
+ getCommandFactories(editor, type) {
204
199
  return {
205
200
  'splitListItem': () => splitListItem(type),
206
201
  'liftListItem': () => liftListItem(type),
@@ -209,9 +204,9 @@ export class NodeListItem extends Node {
209
204
  }
210
205
  getKeyboardShortcuts() {
211
206
  return {
212
- // 'Enter': 'splitListItem',
213
- 'Mod-[': 'liftListItem',
214
- 'Mod-]': 'sinkListItem',
207
+ 'Enter': 'splitListItem',
208
+ 'Tab': 'sinkListItem',
209
+ 'Shift-Tab': 'liftListItem',
215
210
  };
216
211
  }
217
212
  }
@@ -0,0 +1,8 @@
1
+ import { type NodeSpec } from 'prosemirror-model';
2
+ import { Node } from '../../editor/src/mod.js';
3
+ export declare class NodeMath extends Node {
4
+ name: string;
5
+ requires: string[];
6
+ getNodeSpec(): NodeSpec;
7
+ }
8
+ //# sourceMappingURL=NodeMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeMath.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeMath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAM/C,qBAAa,QAAS,SAAQ,IAAI;IACvB,IAAI,SAAU;IACvB,QAAQ,WAAW;IAEV,WAAW,IAAI,QAAQ;CA8CjC"}
@@ -0,0 +1,112 @@
1
+ import { Node } from '../../editor/src/mod.js';
2
+ // import { MathMLToLaTeX } from 'mathml-to-latex';
3
+ // const latex = MathMLToLaTeX.convert(mathMl);
4
+ // https://mathlive.io/mathfield/
5
+ export class NodeMath extends Node {
6
+ constructor() {
7
+ super(...arguments);
8
+ Object.defineProperty(this, "name", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: 'math'
13
+ });
14
+ Object.defineProperty(this, "requires", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: ['doc']
19
+ });
20
+ }
21
+ getNodeSpec() {
22
+ return {
23
+ inline: true,
24
+ attrs: {
25
+ type: { default: 'mathml' },
26
+ content: {},
27
+ },
28
+ group: 'inline',
29
+ draggable: true,
30
+ // parseDOM: [
31
+ // {
32
+ // tag: 'math',
33
+ // getAttrs(dom: HTMLElement) {
34
+ // return {
35
+ // content: dom.outerHTML,
36
+ // };
37
+ // },
38
+ // },
39
+ // ],
40
+ parseDOM: [{
41
+ tag: 'math',
42
+ getAttrs: (dom) => ({
43
+ type: 'mathml',
44
+ content: new XMLSerializer().serializeToString(dom),
45
+ }),
46
+ }],
47
+ toDOM(node) {
48
+ const parser = new DOMParser();
49
+ const parsed = parser.parseFromString(node.attrs.content, 'application/xml');
50
+ // Check for parsing errors (e.g., invalid XML)
51
+ const errorNode = parsed.getElementsByTagName('parsererror');
52
+ if (errorNode.length > 0) {
53
+ return ['span', { class: 'mathml-error' }, 'Invalid MathML'];
54
+ }
55
+ // Import and return the parsed MathML element
56
+ return document.importNode(parsed.documentElement, true);
57
+ // const { xml } = node.attrs;
58
+ // return ['math', {}, []];
59
+ },
60
+ };
61
+ }
62
+ }
63
+ /*
64
+ MathML vs. LaTeX: Which is Better for Web Math Equations?
65
+ Neither is universally "better"—it depends on your goals (authoring, rendering, accessibility, or storage). MathML and LaTeX serve different primary purposes but can complement each other on the web (e.g., via converters like MathJax). Here's a comparison focused on web use:
66
+ Key Differences
67
+
68
+ Purpose:
69
+
70
+ LaTeX: A human-readable markup language for typesetting math (e.g., $E=mc^2$). It's concise and widely used for authoring documents, papers, and web input. Not native to HTML; requires a processor (e.g., MathJax, KaTeX) to render as HTML/CSS/SVG.
71
+ MathML: An XML-based standard (part of HTML5) for describing math structure and presentation (Presentation MathML for visuals; Content MathML for semantics). Designed for direct embedding in web pages (e.g., <math><mi>E</mi>=<mi>m</mi><msup><mi>c</mi><mn>2</mn></msup></math>). Browsers like Firefox and Safari support it natively; others need polyfills.
72
+
73
+
74
+ Ease of Authoring:
75
+
76
+ LaTeX: Wins for humans—shorter, intuitive syntax familiar to mathematicians. Easier to write/edit manually or in editors like Overleaf. Verbose MathML is painful for hand-coding complex equations.
77
+ MathML: Better for programmatic generation (e.g., from tools or APIs) due to its structured XML. Use WYSIWYG editors (like those above) to avoid writing tags.
78
+
79
+
80
+ Rendering on Web:
81
+
82
+ LaTeX: Requires a JS library (MathJax ~300KB, KaTeX lighter ~100KB) for cross-browser display. Renders beautifully everywhere but adds load time and JS dependency. No native browser support.
83
+ MathML: Native in Firefox/Safari (fast, no JS). Improving in Chrome/Edge (as of 2023+), but still needs MathJax fallback for full support. Outputs scalable HTML/CSS without images.
84
+
85
+
86
+ Accessibility:
87
+
88
+ MathML: Superior—semantic structure allows screen readers (e.g., NVDA with MathCAT, JAWS) to read equations meaningfully (e.g., "E equals m times c squared"). Essential for WCAG/ADA compliance.
89
+ LaTeX: Poor native accessibility; screen readers treat it as plain text. MathJax can convert to MathML internally for better support, but raw LaTeX fails.
90
+
91
+
92
+ Performance & Compatibility:
93
+
94
+ LaTeX: Faster authoring, but rendering depends on the library. Universal via JS, but increases page weight.
95
+ MathML: Lightweight native rendering where supported; more robust for search engines/parsing (e.g., Google indexes MathML). Less portable outside web (LaTeX dominates PDFs/print).
96
+
97
+
98
+ Storage/Interoperability:
99
+
100
+ LaTeX: Compact for databases/files. Easy to convert to MathML (via tools like texmath or Pandoc).
101
+ MathML: Better for web standards (XML parsable), but bulkier. Ideal for exchange between math tools.
102
+
103
+
104
+
105
+ Recommendation
106
+
107
+ Use LaTeX if your focus is easy input/authoring (e.g., users typing equations) and you're okay with a renderer like MathJax. It's more practical for most web projects today due to familiarity and tools. Store as LaTeX, render via JS, and convert to MathML for accessibility if needed.
108
+ Use MathML if prioritizing native web standards, accessibility, or programmatic output (e.g., from editors). It's "better" for semantic web math and future-proofing (browser support is growing), but pair with LaTeX input for usability.
109
+ Hybrid Approach: Best for web—author in LaTeX, convert/output MathML for display/storage. Libraries like MathJax handle both seamlessly (input LaTeX, output rendered MathML). This gives LaTeX's simplicity with MathML's benefits.
110
+
111
+ If accessibility is key, always generate MathML (even from LaTeX source). Test in browsers: LaTeX+MathJax works everywhere; pure MathML shines in Firefox but needs fallbacks elsewhere.
112
+ */
@@ -1,7 +1,7 @@
1
1
  import { NodeSpec, NodeType } from 'prosemirror-model';
2
- import { CoreEditor, Node } from '../../editor/src/mod.js';
2
+ import { type CoreEditor, Node } from '../../editor/src/mod.js';
3
3
  import { type InputRule } from '../../editor/src/plugins/input-rules/mod.js';
4
- import { type Commands, type CommandShortcuts } from '../../editor/src/commands/mod.js';
4
+ import { type CommandFactories, type CommandShortcuts } from '../../editor/src/commands/mod.js';
5
5
  export declare class NodeOrderedList extends Node {
6
6
  name: string;
7
7
  requires: string[];
@@ -17,10 +17,7 @@ export declare class NodeOrderedList extends Node {
17
17
  };
18
18
  getNodeSpec(): NodeSpec;
19
19
  getInputRules(type: NodeType): InputRule[];
20
- getCommands(editor: CoreEditor, type: NodeType): Partial<Commands>;
20
+ getCommandFactories(editor: CoreEditor, type: NodeType): Partial<CommandFactories>;
21
21
  getKeyboardShortcuts(): Partial<CommandShortcuts>;
22
- automerge: {
23
- block: string;
24
- };
25
22
  }
26
23
  //# sourceMappingURL=NodeOrderedList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeOrderedList.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeOrderedList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EACL,KAAK,SAAS,EAEf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAC;AAG1C,qBAAa,eAAgB,SAAQ,IAAI;IAC9B,IAAI,SAAkB;IAC/B,QAAQ,WAAW;IAEnB,UAAU;;;6BAGW,WAAW;;;;6BAQX,WAAW;;MAM9B;IAEO,WAAW,IAAI,QAAQ;IAWvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAa1C,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMlE,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAM1D,SAAS;;MAEP;CACH"}
1
+ {"version":3,"file":"NodeOrderedList.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeOrderedList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAMhE,OAAO,EACL,KAAK,SAAS,EAEf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,eAAgB,SAAQ,IAAI;IAC9B,IAAI,SAAkB;IAC/B,QAAQ,WAAW;IAEV,UAAU;;;6BAGE,WAAW;;;;6BAQX,WAAW;;MAM9B;IAEO,WAAW,IAAI,QAAQ;IAWvB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE;IAa1C,mBAAmB,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAMnB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAK3D"}
@@ -1,8 +1,6 @@
1
1
  import { Node } from '../../editor/src/mod.js';
2
- import { getHtmlAttributes } from '../../editor/src/utilities/mod.js';
2
+ import { getHtmlAttributes, setHtmlAttributes, } from '../../editor/src/utilities/mod.js';
3
3
  import { wrappingInputRule, } from '../../editor/src/plugins/input-rules/mod.js';
4
- import { wrapInList, } from '../../editor/src/commands/mod.js';
5
- import { setHtmlAttributes } from '../../editor/src/utilities/mod.js';
6
4
  export class NodeOrderedList extends Node {
7
5
  constructor() {
8
6
  super(...arguments);
@@ -41,14 +39,6 @@ export class NodeOrderedList extends Node {
41
39
  },
42
40
  }
43
41
  });
44
- Object.defineProperty(this, "automerge", {
45
- enumerable: true,
46
- configurable: true,
47
- writable: true,
48
- value: {
49
- block: 'ordered_list',
50
- }
51
- });
52
42
  }
53
43
  getNodeSpec() {
54
44
  return {
@@ -67,14 +57,14 @@ export class NodeOrderedList extends Node {
67
57
  wrappingInputRule(/^(\d+)\.\s$/, type, (match) => ({ order: +match[1] }), (match, node) => node.childCount + node.attrs.order == +match[1]),
68
58
  ];
69
59
  }
70
- getCommands(editor, type) {
60
+ getCommandFactories(editor, type) {
71
61
  return {
72
- 'toggleOrderedList': () => wrapInList(type),
62
+ 'toggleOrderedList': () => editor.commandFactories.wrapInList(type),
73
63
  };
74
64
  }
75
65
  getKeyboardShortcuts() {
76
66
  return {
77
- 'Shift-Ctrl-9': 'toggleOrderedList',
67
+ 'Shift-Ctrl-7': 'toggleOrderedList',
78
68
  };
79
69
  }
80
70
  }
@@ -1,14 +1,11 @@
1
1
  import { type NodeSpec, type NodeType } from 'prosemirror-model';
2
2
  import { type CoreEditor, Node } from '../../editor/src/mod.js';
3
- import { type Commands, type CommandShortcuts } from '../../editor/src/commands/mod.js';
3
+ import { type CommandFactories, type CommandShortcuts } from '../../editor/src/commands/mod.js';
4
4
  export declare class NodeParagraph extends Node {
5
5
  name: string;
6
6
  requires: string[];
7
- automerge: {
8
- block: string;
9
- };
10
7
  getNodeSpec(): NodeSpec;
11
- getCommands(editor: CoreEditor, type: NodeType): Partial<Commands>;
8
+ getCommandFactories(editor: CoreEditor, type: NodeType): Partial<CommandFactories>;
12
9
  getKeyboardShortcuts(): Partial<CommandShortcuts>;
13
10
  }
14
11
  //# sourceMappingURL=NodeParagraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeParagraph.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeParagraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,aAAc,SAAQ,IAAI;IAC5B,IAAI,SAAe;IAC5B,QAAQ,WAAW;IAEnB,SAAS;;MAEP;IAEO,WAAW,IAAI,QAAQ;IAWvB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMlE,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAK3D"}
1
+ {"version":3,"file":"NodeParagraph.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeParagraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,aAAc,SAAQ,IAAI;IAC5B,IAAI,SAAe;IAC5B,QAAQ,WAAW;IAEV,WAAW,IAAI,QAAQ;IAWvB,mBAAmB,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAMnB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAK3D"}
@@ -1,5 +1,4 @@
1
1
  import { Node } from '../../editor/src/mod.js';
2
- import { setBlockType, } from '../../editor/src/commands/mod.js';
3
2
  export class NodeParagraph extends Node {
4
3
  constructor() {
5
4
  super(...arguments);
@@ -15,14 +14,6 @@ export class NodeParagraph extends Node {
15
14
  writable: true,
16
15
  value: ['doc']
17
16
  });
18
- Object.defineProperty(this, "automerge", {
19
- enumerable: true,
20
- configurable: true,
21
- writable: true,
22
- value: {
23
- block: 'paragraph',
24
- }
25
- });
26
17
  }
27
18
  getNodeSpec() {
28
19
  return {
@@ -34,9 +25,9 @@ export class NodeParagraph extends Node {
34
25
  },
35
26
  };
36
27
  }
37
- getCommands(editor, type) {
28
+ getCommandFactories(editor, type) {
38
29
  return {
39
- 'setParagraph': () => setBlockType(type),
30
+ 'setParagraph': () => editor.commandFactories.setBlockType(type),
40
31
  };
41
32
  }
42
33
  getKeyboardShortcuts() {
@@ -0,0 +1,24 @@
1
+ import { Node as PmNode, NodeSpec, type NodeType } from 'prosemirror-model';
2
+ import { type CoreEditor, Node } from '../../editor/src/mod.js';
3
+ import { type CommandFactories, type CommandShortcuts } from '../../editor/src/commands/mod.js';
4
+ import { NodeViewConstructor } from '../../editor/src/DummyEditorView.js';
5
+ /**
6
+ * Matches a task item to a - [ ] on input.
7
+ */
8
+ export declare const inputRegex: RegExp;
9
+ export interface TaskItemOptions {
10
+ onReadOnlyChecked?: (node: PmNode, checked: boolean) => boolean;
11
+ nested: boolean;
12
+ }
13
+ export declare class NodeTaskItem extends Node {
14
+ protected config: Partial<TaskItemOptions>;
15
+ name: string;
16
+ requires: string[];
17
+ constructor(config?: Partial<TaskItemOptions>);
18
+ getNodeSpec(): NodeSpec;
19
+ getCommandFactories(editor: CoreEditor, type: NodeType): Partial<CommandFactories>;
20
+ getNodeView(editor: CoreEditor): NodeViewConstructor;
21
+ getKeyboardShortcuts(): Partial<CommandShortcuts>;
22
+ getInputRules(type: NodeType): import("../../editor/src/plugins/input-rules/InputRulesPlugin.js").InputRule[];
23
+ }
24
+ //# sourceMappingURL=NodeTaskItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeTaskItem.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/NodeTaskItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAO1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAI1E;;GAEG;AACH,eAAO,MAAM,UAAU,QAA2B,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAChE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,YAAa,SAAQ,IAAI;cAIE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC;IAH7D,IAAI,SAAe;IAC5B,QAAQ,WAAW;gBAEmB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAIlE,WAAW,IAAI,QAAQ;IAyCvB,mBAAmB,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC;IAQnB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB;IA4EpD,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAQjD,aAAa,CAAC,IAAI,EAAE,QAAQ;CAWtC"}