@tiptap/vue-3 2.5.0-beta.1 → 2.5.0-beta.3

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 (188) hide show
  1. package/dist/index.cjs +453 -447
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +453 -445
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.umd.js +453 -447
  6. package/dist/index.umd.js.map +1 -1
  7. package/dist/packages/core/src/CommandManager.d.ts +20 -0
  8. package/dist/packages/core/src/Editor.d.ts +161 -0
  9. package/dist/packages/core/src/EventEmitter.d.ts +11 -0
  10. package/dist/packages/core/src/Extension.d.ts +343 -0
  11. package/dist/packages/core/src/ExtensionManager.d.ts +55 -0
  12. package/dist/packages/core/src/InputRule.d.ts +42 -0
  13. package/dist/packages/core/src/Mark.d.ts +451 -0
  14. package/dist/packages/core/src/Node.d.ts +611 -0
  15. package/dist/packages/core/src/NodePos.d.ts +44 -0
  16. package/dist/packages/core/src/NodeView.d.ts +31 -0
  17. package/dist/packages/core/src/PasteRule.d.ts +50 -0
  18. package/dist/packages/core/src/Tracker.d.ts +11 -0
  19. package/dist/packages/core/src/commands/blur.d.ts +13 -0
  20. package/dist/packages/core/src/commands/clearContent.d.ts +14 -0
  21. package/dist/packages/core/src/commands/clearNodes.d.ts +13 -0
  22. package/dist/packages/core/src/commands/command.d.ts +18 -0
  23. package/dist/packages/core/src/commands/createParagraphNear.d.ts +13 -0
  24. package/dist/packages/core/src/commands/cut.d.ts +20 -0
  25. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +13 -0
  26. package/dist/packages/core/src/commands/deleteNode.d.ts +15 -0
  27. package/dist/packages/core/src/commands/deleteRange.d.ts +14 -0
  28. package/dist/packages/core/src/commands/deleteSelection.d.ts +13 -0
  29. package/dist/packages/core/src/commands/enter.d.ts +13 -0
  30. package/dist/packages/core/src/commands/exitCode.d.ts +13 -0
  31. package/dist/packages/core/src/commands/extendMarkRange.d.ts +25 -0
  32. package/dist/packages/core/src/commands/first.d.ts +14 -0
  33. package/dist/packages/core/src/commands/focus.d.ts +27 -0
  34. package/dist/packages/core/src/commands/forEach.d.ts +14 -0
  35. package/dist/packages/core/src/commands/index.d.ts +55 -0
  36. package/dist/packages/core/src/commands/insertContent.d.ts +34 -0
  37. package/dist/packages/core/src/commands/insertContentAt.d.ts +47 -0
  38. package/dist/packages/core/src/commands/join.d.ts +41 -0
  39. package/dist/packages/core/src/commands/joinItemBackward.d.ts +13 -0
  40. package/dist/packages/core/src/commands/joinItemForward.d.ts +13 -0
  41. package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +12 -0
  42. package/dist/packages/core/src/commands/joinTextblockForward.d.ts +12 -0
  43. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +14 -0
  44. package/dist/packages/core/src/commands/lift.d.ts +17 -0
  45. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +13 -0
  46. package/dist/packages/core/src/commands/liftListItem.d.ts +15 -0
  47. package/dist/packages/core/src/commands/newlineInCode.d.ts +13 -0
  48. package/dist/packages/core/src/commands/resetAttributes.d.ts +16 -0
  49. package/dist/packages/core/src/commands/scrollIntoView.d.ts +13 -0
  50. package/dist/packages/core/src/commands/selectAll.d.ts +13 -0
  51. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +13 -0
  52. package/dist/packages/core/src/commands/selectNodeForward.d.ts +13 -0
  53. package/dist/packages/core/src/commands/selectParentNode.d.ts +13 -0
  54. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +13 -0
  55. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +13 -0
  56. package/dist/packages/core/src/commands/setContent.d.ts +40 -0
  57. package/dist/packages/core/src/commands/setMark.d.ts +15 -0
  58. package/dist/packages/core/src/commands/setMeta.d.ts +15 -0
  59. package/dist/packages/core/src/commands/setNode.d.ts +16 -0
  60. package/dist/packages/core/src/commands/setNodeSelection.d.ts +14 -0
  61. package/dist/packages/core/src/commands/setTextSelection.d.ts +14 -0
  62. package/dist/packages/core/src/commands/sinkListItem.d.ts +15 -0
  63. package/dist/packages/core/src/commands/splitBlock.d.ts +17 -0
  64. package/dist/packages/core/src/commands/splitListItem.d.ts +15 -0
  65. package/dist/packages/core/src/commands/toggleList.d.ts +18 -0
  66. package/dist/packages/core/src/commands/toggleMark.d.ts +30 -0
  67. package/dist/packages/core/src/commands/toggleNode.d.ts +17 -0
  68. package/dist/packages/core/src/commands/toggleWrap.d.ts +16 -0
  69. package/dist/packages/core/src/commands/undoInputRule.d.ts +13 -0
  70. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +13 -0
  71. package/dist/packages/core/src/commands/unsetMark.d.ts +25 -0
  72. package/dist/packages/core/src/commands/updateAttributes.d.ts +24 -0
  73. package/dist/packages/core/src/commands/wrapIn.d.ts +16 -0
  74. package/dist/packages/core/src/commands/wrapInList.d.ts +16 -0
  75. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +5 -0
  76. package/dist/packages/core/src/extensions/commands.d.ts +3 -0
  77. package/dist/packages/core/src/extensions/editable.d.ts +2 -0
  78. package/dist/packages/core/src/extensions/focusEvents.d.ts +2 -0
  79. package/dist/packages/core/src/extensions/index.d.ts +6 -0
  80. package/dist/packages/core/src/extensions/keymap.d.ts +2 -0
  81. package/dist/packages/core/src/extensions/tabindex.d.ts +2 -0
  82. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +10 -0
  83. package/dist/packages/core/src/helpers/createChainableState.d.ts +10 -0
  84. package/dist/packages/core/src/helpers/createDocument.d.ts +12 -0
  85. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +15 -0
  86. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +7 -0
  87. package/dist/packages/core/src/helpers/findChildren.d.ts +9 -0
  88. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +10 -0
  89. package/dist/packages/core/src/helpers/findParentNode.d.ts +16 -0
  90. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +17 -0
  91. package/dist/packages/core/src/helpers/generateHTML.d.ts +8 -0
  92. package/dist/packages/core/src/helpers/generateJSON.d.ts +8 -0
  93. package/dist/packages/core/src/helpers/generateText.d.ts +12 -0
  94. package/dist/packages/core/src/helpers/getAttributes.d.ts +9 -0
  95. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +6 -0
  96. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +11 -0
  97. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +8 -0
  98. package/dist/packages/core/src/helpers/getExtensionField.d.ts +9 -0
  99. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +2 -0
  100. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +3 -0
  101. package/dist/packages/core/src/helpers/getMarkRange.d.ts +3 -0
  102. package/dist/packages/core/src/helpers/getMarkType.d.ts +2 -0
  103. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +3 -0
  104. package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +11 -0
  105. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +3 -0
  106. package/dist/packages/core/src/helpers/getNodeType.d.ts +2 -0
  107. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +3 -0
  108. package/dist/packages/core/src/helpers/getSchema.d.ts +4 -0
  109. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +10 -0
  110. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +8 -0
  111. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +8 -0
  112. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +9 -0
  113. package/dist/packages/core/src/helpers/getText.d.ts +15 -0
  114. package/dist/packages/core/src/helpers/getTextBetween.d.ts +14 -0
  115. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +8 -0
  116. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +8 -0
  117. package/dist/packages/core/src/helpers/index.d.ts +50 -0
  118. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +9 -0
  119. package/dist/packages/core/src/helpers/isActive.d.ts +2 -0
  120. package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +2 -0
  121. package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +2 -0
  122. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +2 -0
  123. package/dist/packages/core/src/helpers/isList.d.ts +2 -0
  124. package/dist/packages/core/src/helpers/isMarkActive.d.ts +3 -0
  125. package/dist/packages/core/src/helpers/isNodeActive.d.ts +3 -0
  126. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +2 -0
  127. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +2 -0
  128. package/dist/packages/core/src/helpers/isTextSelection.d.ts +2 -0
  129. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +2 -0
  130. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +4 -0
  131. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +2 -0
  132. package/dist/packages/core/src/helpers/splitExtensions.d.ts +9 -0
  133. package/dist/packages/core/src/index.d.ts +24 -0
  134. package/dist/packages/core/src/inputRules/index.d.ts +5 -0
  135. package/dist/packages/core/src/inputRules/markInputRule.d.ts +13 -0
  136. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +23 -0
  137. package/dist/packages/core/src/inputRules/textInputRule.d.ts +10 -0
  138. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +15 -0
  139. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +28 -0
  140. package/dist/packages/core/src/pasteRules/index.d.ts +3 -0
  141. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +13 -0
  142. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +13 -0
  143. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +10 -0
  144. package/dist/packages/core/src/style.d.ts +1 -0
  145. package/dist/packages/core/src/types.d.ts +250 -0
  146. package/dist/packages/core/src/utilities/callOrReturn.d.ts +9 -0
  147. package/dist/packages/core/src/utilities/createStyleTag.d.ts +1 -0
  148. package/dist/packages/core/src/utilities/deleteProps.d.ts +6 -0
  149. package/dist/packages/core/src/utilities/elementFromString.d.ts +1 -0
  150. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +1 -0
  151. package/dist/packages/core/src/utilities/findDuplicates.d.ts +1 -0
  152. package/dist/packages/core/src/utilities/fromString.d.ts +1 -0
  153. package/dist/packages/core/src/utilities/index.d.ts +20 -0
  154. package/dist/packages/core/src/utilities/isAndroid.d.ts +1 -0
  155. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +1 -0
  156. package/dist/packages/core/src/utilities/isFunction.d.ts +1 -0
  157. package/dist/packages/core/src/utilities/isMacOS.d.ts +1 -0
  158. package/dist/packages/core/src/utilities/isNumber.d.ts +1 -0
  159. package/dist/packages/core/src/utilities/isPlainObject.d.ts +1 -0
  160. package/dist/packages/core/src/utilities/isRegExp.d.ts +1 -0
  161. package/dist/packages/core/src/utilities/isString.d.ts +1 -0
  162. package/dist/packages/core/src/utilities/isiOS.d.ts +1 -0
  163. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +1 -0
  164. package/dist/packages/core/src/utilities/mergeDeep.d.ts +1 -0
  165. package/dist/packages/core/src/utilities/minMax.d.ts +1 -0
  166. package/dist/packages/core/src/utilities/objectIncludes.d.ts +8 -0
  167. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +8 -0
  168. package/dist/packages/extension-bubble-menu/src/bubble-menu-plugin.d.ts +76 -0
  169. package/dist/packages/extension-bubble-menu/src/bubble-menu.d.ts +15 -0
  170. package/dist/packages/extension-bubble-menu/src/index.d.ts +4 -0
  171. package/dist/packages/extension-floating-menu/src/floating-menu-plugin.d.ts +66 -0
  172. package/dist/packages/extension-floating-menu/src/floating-menu.d.ts +15 -0
  173. package/dist/packages/extension-floating-menu/src/index.d.ts +4 -0
  174. package/dist/packages/vue-3/src/BubbleMenu.d.ts +72 -72
  175. package/dist/packages/vue-3/src/Editor.d.ts +23 -24
  176. package/dist/packages/vue-3/src/EditorContent.d.ts +17 -17
  177. package/dist/packages/vue-3/src/FloatingMenu.d.ts +57 -57
  178. package/dist/packages/vue-3/src/NodeViewContent.d.ts +13 -13
  179. package/dist/packages/vue-3/src/NodeViewWrapper.d.ts +13 -13
  180. package/dist/packages/vue-3/src/VueNodeViewRenderer.d.ts +48 -48
  181. package/dist/packages/vue-3/src/VueRenderer.d.ts +36 -22
  182. package/dist/packages/vue-3/src/index.d.ts +10 -10
  183. package/dist/packages/vue-3/src/useEditor.d.ts +3 -3
  184. package/package.json +5 -5
  185. package/src/Editor.ts +3 -5
  186. package/src/EditorContent.ts +12 -26
  187. package/src/VueNodeViewRenderer.ts +7 -3
  188. package/src/VueRenderer.ts +32 -17
@@ -1,5 +1,4 @@
1
1
  import {
2
- DefineComponent,
3
2
  defineComponent,
4
3
  getCurrentInstance,
5
4
  h,
@@ -8,7 +7,6 @@ import {
8
7
  PropType,
9
8
  Ref,
10
9
  ref,
11
- Teleport,
12
10
  unref,
13
11
  watchEffect,
14
12
  } from 'vue'
@@ -45,6 +43,17 @@ export const EditorContent = defineComponent({
45
43
  // @ts-ignore
46
44
  editor.contentComponent = instance.ctx._
47
45
 
46
+ if (instance) {
47
+ editor.appContext = {
48
+ ...instance.appContext,
49
+ provides: {
50
+ // @ts-ignore
51
+ ...instance.provides,
52
+ ...instance.appContext.provides,
53
+ },
54
+ }
55
+ }
56
+
48
57
  editor.setOptions({
49
58
  element,
50
59
  })
@@ -69,6 +78,7 @@ export const EditorContent = defineComponent({
69
78
  }
70
79
 
71
80
  editor.contentComponent = null
81
+ editor.appContext = null
72
82
 
73
83
  if (!editor.options.element.firstChild) {
74
84
  return
@@ -87,35 +97,11 @@ export const EditorContent = defineComponent({
87
97
  },
88
98
 
89
99
  render() {
90
- const vueRenderers: any[] = []
91
-
92
- if (this.editor) {
93
- this.editor.vueRenderers.forEach(vueRenderer => {
94
- const node = h(
95
- Teleport,
96
- {
97
- to: vueRenderer.teleportElement,
98
- key: vueRenderer.id,
99
- },
100
- h(
101
- vueRenderer.component as DefineComponent,
102
- {
103
- ref: vueRenderer.id,
104
- ...vueRenderer.props,
105
- },
106
- ),
107
- )
108
-
109
- vueRenderers.push(node)
110
- })
111
- }
112
-
113
100
  return h(
114
101
  'div',
115
102
  {
116
103
  ref: (el: any) => { this.rootEl = el },
117
104
  },
118
- ...vueRenderers,
119
105
  )
120
106
  },
121
107
  })
@@ -124,7 +124,7 @@ class VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions
124
124
  }
125
125
 
126
126
  get dom() {
127
- if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {
127
+ if (!this.renderer.element || !this.renderer.element.hasAttribute('data-node-view-wrapper')) {
128
128
  throw Error('Please use the NodeViewWrapper component for your node view.')
129
129
  }
130
130
 
@@ -183,14 +183,18 @@ class VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions
183
183
  this.renderer.updateProps({
184
184
  selected: true,
185
185
  })
186
- this.renderer.element.classList.add('ProseMirror-selectednode')
186
+ if (this.renderer.element) {
187
+ this.renderer.element.classList.add('ProseMirror-selectednode')
188
+ }
187
189
  }
188
190
 
189
191
  deselectNode() {
190
192
  this.renderer.updateProps({
191
193
  selected: false,
192
194
  })
193
- this.renderer.element.classList.remove('ProseMirror-selectednode')
195
+ if (this.renderer.element) {
196
+ this.renderer.element.classList.remove('ProseMirror-selectednode')
197
+ }
194
198
  }
195
199
 
196
200
  getDecorationClasses() {
@@ -1,5 +1,7 @@
1
1
  import { Editor } from '@tiptap/core'
2
- import { Component, markRaw, reactive } from 'vue'
2
+ import {
3
+ Component, DefineComponent, h, markRaw, reactive, render,
4
+ } from 'vue'
3
5
 
4
6
  import { Editor as ExtendedEditor } from './Editor.js'
5
7
 
@@ -8,19 +10,27 @@ export interface VueRendererOptions {
8
10
  props?: Record<string, any>,
9
11
  }
10
12
 
13
+ type ExtendedVNode = ReturnType<typeof h> | null
14
+
15
+ interface RenderedComponent {
16
+ vNode: ExtendedVNode
17
+ destroy: () => void
18
+ el: Element | null
19
+ }
20
+
11
21
  /**
12
22
  * This class is used to render Vue components inside the editor.
13
23
  */
14
24
  export class VueRenderer {
15
25
  id: string
16
26
 
27
+ renderedComponent!: RenderedComponent
28
+
17
29
  editor: ExtendedEditor
18
30
 
19
31
  component: Component
20
32
 
21
- teleportElement: Element
22
-
23
- element: Element
33
+ el: Element | null
24
34
 
25
35
  props: Record<string, any>
26
36
 
@@ -28,35 +38,40 @@ export class VueRenderer {
28
38
  this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()
29
39
  this.editor = editor as ExtendedEditor
30
40
  this.component = markRaw(component)
31
- this.teleportElement = document.createElement('div')
32
- this.element = this.teleportElement
41
+ this.el = document.createElement('div')
33
42
  this.props = reactive(props)
34
- this.editor.vueRenderers.set(this.id, this)
43
+ this.renderedComponent = this.renderComponent()
44
+ }
45
+
46
+ get element(): Element | null {
47
+ return this.renderedComponent.el
48
+ }
35
49
 
36
- if (this.editor.contentComponent) {
37
- this.editor.contentComponent.update()
50
+ renderComponent() {
51
+ let vNode: ExtendedVNode = h(this.component as DefineComponent, this.props)
38
52
 
39
- if (this.teleportElement.children.length !== 1) {
40
- throw Error('VueRenderer doesn’t support multiple child elements.')
41
- }
53
+ if (typeof document !== 'undefined' && this.el) { render(vNode, this.el) }
42
54
 
43
- this.element = this.teleportElement.firstElementChild as Element
55
+ const destroy = () => {
56
+ if (this.el) { render(null, this.el) }
57
+ this.el = null
58
+ vNode = null
44
59
  }
45
- }
46
60
 
47
- get ref(): any {
48
- return this.editor.contentComponent?.refs[this.id]
61
+ return { vNode, destroy, el: this.el ? this.el.firstElementChild : null }
49
62
  }
50
63
 
51
64
  updateProps(props: Record<string, any> = {}): void {
65
+
52
66
  Object
53
67
  .entries(props)
54
68
  .forEach(([key, value]) => {
55
69
  this.props[key] = value
56
70
  })
71
+ this.renderComponent()
57
72
  }
58
73
 
59
74
  destroy(): void {
60
- this.editor.vueRenderers.delete(this.id)
75
+ this.renderedComponent.destroy()
61
76
  }
62
77
  }