@witchcraft/editor 0.0.3 → 0.0.5

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 (416) hide show
  1. package/dist/module.d.cts +2 -0
  2. package/dist/module.d.mts +2 -15
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +13 -72
  5. package/dist/types.d.mts +12 -2
  6. package/package.json +228 -237
  7. package/src/module.ts +1 -2
  8. package/src/runtime/assets/handle-border-circles.svg +0 -0
  9. package/src/runtime/components/Editor.vue +0 -0
  10. package/src/runtime/pm/features/Blocks/components/ItemNodeView.vue +1 -1
  11. package/src/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.vue +0 -2
  12. package/src/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.vue +1 -3
  13. package/src/runtime/pm/features/Iframe/components/IframeNodeView.vue +0 -3
  14. package/src/runtime/pm/features/Link/components/BubbleMenuExternalLink.vue +0 -1
  15. package/src/runtime/pm/features/Link/components/BubbleMenuInternalLink.vue +1 -4
  16. package/src/runtime/pm/features/Link/components/BubbleMenuLinkActions.vue +0 -3
  17. package/src/runtime/pm/features/Menus/components/MarkMenuManager.vue +0 -1
  18. package/src/runtime/pm/schema.ts +0 -0
  19. package/src/runtime/pm/utils/createDropIndicator.ts +9 -3
  20. package/src/runtime/pm/utils/getElPropertyAsInt.ts +3 -0
  21. package/src/runtime/pm/utils/internal/debugSel.ts +0 -0
  22. package/src/runtime/pm/utils/internal/recurse.ts +0 -0
  23. package/dist/runtime/assets/base.css +0 -1
  24. package/dist/runtime/assets/handle-arrow.svg +0 -16
  25. package/dist/runtime/assets/handle-border-circles-single.svg +0 -44
  26. package/dist/runtime/assets/handle-border-circles.svg +0 -27
  27. package/dist/runtime/assets/handle-temp.svg +0 -1
  28. package/dist/runtime/assets/utils.css +0 -1
  29. package/dist/runtime/components/CodeBlockThemePicker.d.vue.ts +0 -12
  30. package/dist/runtime/components/CodeBlockThemePicker.vue +0 -123
  31. package/dist/runtime/components/CodeBlockThemePicker.vue.d.ts +0 -12
  32. package/dist/runtime/components/Commands.d.vue.ts +0 -10
  33. package/dist/runtime/components/Commands.vue +0 -60
  34. package/dist/runtime/components/Commands.vue.d.ts +0 -10
  35. package/dist/runtime/components/Editor.d.vue.ts +0 -40
  36. package/dist/runtime/components/Editor.vue +0 -208
  37. package/dist/runtime/components/Editor.vue.d.ts +0 -40
  38. package/dist/runtime/components/EditorDemoApp.d.vue.ts +0 -2
  39. package/dist/runtime/components/EditorDemoApp.vue +0 -104
  40. package/dist/runtime/components/EditorDemoApp.vue.d.ts +0 -2
  41. package/dist/runtime/components/EditorDemoControls.d.vue.ts +0 -12
  42. package/dist/runtime/components/EditorDemoControls.vue +0 -36
  43. package/dist/runtime/components/EditorDemoControls.vue.d.ts +0 -12
  44. package/dist/runtime/components/TestWrapper.d.vue.ts +0 -11
  45. package/dist/runtime/components/TestWrapper.vue +0 -63
  46. package/dist/runtime/components/TestWrapper.vue.d.ts +0 -11
  47. package/dist/runtime/composables/useEditor.d.ts +0 -9
  48. package/dist/runtime/composables/useEditor.js +0 -21
  49. package/dist/runtime/composables/useWindowDebugging.d.ts +0 -3
  50. package/dist/runtime/composables/useWindowDebugging.js +0 -16
  51. package/dist/runtime/demo/App.d.vue.ts +0 -2
  52. package/dist/runtime/demo/App.vue +0 -101
  53. package/dist/runtime/demo/App.vue.d.ts +0 -2
  54. package/dist/runtime/demo/README.md +0 -1
  55. package/dist/runtime/demo/main.d.ts +0 -1
  56. package/dist/runtime/demo/main.js +0 -4
  57. package/dist/runtime/demo/tailwind.css +0 -1
  58. package/dist/runtime/env.d.ts +0 -2
  59. package/dist/runtime/injectionKeys.d.ts +0 -6
  60. package/dist/runtime/injectionKeys.js +0 -3
  61. package/dist/runtime/main.lib.d.ts +0 -2
  62. package/dist/runtime/main.lib.js +0 -2
  63. package/dist/runtime/pm/commands/backspace.d.ts +0 -12
  64. package/dist/runtime/pm/commands/backspace.js +0 -26
  65. package/dist/runtime/pm/commands/changeAttrs.d.ts +0 -9
  66. package/dist/runtime/pm/commands/changeAttrs.js +0 -15
  67. package/dist/runtime/pm/commands/deleteSelection.d.ts +0 -9
  68. package/dist/runtime/pm/commands/deleteSelection.js +0 -8
  69. package/dist/runtime/pm/commands/enter.d.ts +0 -14
  70. package/dist/runtime/pm/commands/enter.js +0 -9
  71. package/dist/runtime/pm/commands/insertBreak.d.ts +0 -9
  72. package/dist/runtime/pm/commands/insertBreak.js +0 -22
  73. package/dist/runtime/pm/features/Base/Base.d.ts +0 -4
  74. package/dist/runtime/pm/features/Base/Base.js +0 -32
  75. package/dist/runtime/pm/features/Base/commands/deleteNodes.d.ts +0 -10
  76. package/dist/runtime/pm/features/Base/commands/deleteNodes.js +0 -29
  77. package/dist/runtime/pm/features/Base/commands/setCursorVisible.d.ts +0 -12
  78. package/dist/runtime/pm/features/Base/commands/setCursorVisible.js +0 -7
  79. package/dist/runtime/pm/features/Base/plugins/debugSelectionPlugin.d.ts +0 -9
  80. package/dist/runtime/pm/features/Base/plugins/debugSelectionPlugin.js +0 -48
  81. package/dist/runtime/pm/features/Base/plugins/isCursorVisiblePlugin.d.ts +0 -3
  82. package/dist/runtime/pm/features/Base/plugins/isCursorVisiblePlugin.js +0 -26
  83. package/dist/runtime/pm/features/Base/plugins/isUsingTouchPlugin.d.ts +0 -3
  84. package/dist/runtime/pm/features/Base/plugins/isUsingTouchPlugin.js +0 -38
  85. package/dist/runtime/pm/features/Base/plugins/selectingIndicator.d.ts +0 -5
  86. package/dist/runtime/pm/features/Base/plugins/selectingIndicator.js +0 -35
  87. package/dist/runtime/pm/features/Base/plugins/unfocusedSelectionIndicatorPlugin.d.ts +0 -33
  88. package/dist/runtime/pm/features/Base/plugins/unfocusedSelectionIndicatorPlugin.js +0 -66
  89. package/dist/runtime/pm/features/Base/types.d.ts +0 -3
  90. package/dist/runtime/pm/features/Base/types.js +0 -0
  91. package/dist/runtime/pm/features/BaseShortcuts/BaseShortcuts.d.ts +0 -3
  92. package/dist/runtime/pm/features/BaseShortcuts/BaseShortcuts.js +0 -34
  93. package/dist/runtime/pm/features/Blockquote/Blockquote.d.ts +0 -5
  94. package/dist/runtime/pm/features/Blockquote/Blockquote.js +0 -65
  95. package/dist/runtime/pm/features/Blockquote/commands/blockquoteEnter.d.ts +0 -11
  96. package/dist/runtime/pm/features/Blockquote/commands/blockquoteEnter.js +0 -31
  97. package/dist/runtime/pm/features/Blockquote/commands/blockquoteShiftEnter.d.ts +0 -11
  98. package/dist/runtime/pm/features/Blockquote/commands/blockquoteShiftEnter.js +0 -12
  99. package/dist/runtime/pm/features/Blocks/Blocks.d.ts +0 -2
  100. package/dist/runtime/pm/features/Blocks/Blocks.js +0 -2
  101. package/dist/runtime/pm/features/Blocks/Item.d.ts +0 -11
  102. package/dist/runtime/pm/features/Blocks/Item.js +0 -157
  103. package/dist/runtime/pm/features/Blocks/List.d.ts +0 -4
  104. package/dist/runtime/pm/features/Blocks/List.js +0 -59
  105. package/dist/runtime/pm/features/Blocks/commands/changeItemType.d.ts +0 -20
  106. package/dist/runtime/pm/features/Blocks/commands/changeItemType.js +0 -40
  107. package/dist/runtime/pm/features/Blocks/commands/changeTypeAttr.d.ts +0 -14
  108. package/dist/runtime/pm/features/Blocks/commands/changeTypeAttr.js +0 -28
  109. package/dist/runtime/pm/features/Blocks/commands/copyOrMoveItem.d.ts +0 -23
  110. package/dist/runtime/pm/features/Blocks/commands/copyOrMoveItem.js +0 -124
  111. package/dist/runtime/pm/features/Blocks/commands/deleteItem.d.ts +0 -12
  112. package/dist/runtime/pm/features/Blocks/commands/deleteItem.js +0 -8
  113. package/dist/runtime/pm/features/Blocks/commands/indentItem.d.ts +0 -12
  114. package/dist/runtime/pm/features/Blocks/commands/indentItem.js +0 -58
  115. package/dist/runtime/pm/features/Blocks/commands/itemMenuCommands.d.ts +0 -18
  116. package/dist/runtime/pm/features/Blocks/commands/itemMenuCommands.js +0 -40
  117. package/dist/runtime/pm/features/Blocks/commands/moveItem.d.ts +0 -12
  118. package/dist/runtime/pm/features/Blocks/commands/moveItem.js +0 -80
  119. package/dist/runtime/pm/features/Blocks/commands/setNode.d.ts +0 -20
  120. package/dist/runtime/pm/features/Blocks/commands/setNode.js +0 -87
  121. package/dist/runtime/pm/features/Blocks/commands/splitItem.d.ts +0 -17
  122. package/dist/runtime/pm/features/Blocks/commands/splitItem.js +0 -87
  123. package/dist/runtime/pm/features/Blocks/commands/unindentItem.d.ts +0 -12
  124. package/dist/runtime/pm/features/Blocks/commands/unindentItem.js +0 -42
  125. package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.d.vue.ts +0 -0
  126. package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.vue +0 -122
  127. package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.vue.d.ts +0 -0
  128. package/dist/runtime/pm/features/Blocks/components/ItemMenu.d.vue.ts +0 -6
  129. package/dist/runtime/pm/features/Blocks/components/ItemMenu.vue +0 -78
  130. package/dist/runtime/pm/features/Blocks/components/ItemMenu.vue.d.ts +0 -6
  131. package/dist/runtime/pm/features/Blocks/components/ItemNodeView.d.vue.ts +0 -92
  132. package/dist/runtime/pm/features/Blocks/components/ItemNodeView.vue +0 -350
  133. package/dist/runtime/pm/features/Blocks/components/ItemNodeView.vue.d.ts +0 -92
  134. package/dist/runtime/pm/features/Blocks/components/defaultItemMenu.d.ts +0 -5
  135. package/dist/runtime/pm/features/Blocks/components/defaultItemMenu.js +0 -42
  136. package/dist/runtime/pm/features/Blocks/composables/useDragWithThreshold.d.ts +0 -1
  137. package/dist/runtime/pm/features/Blocks/composables/useDragWithThreshold.js +0 -0
  138. package/dist/runtime/pm/features/Blocks/composables/useHandleHeight.d.ts +0 -5
  139. package/dist/runtime/pm/features/Blocks/composables/useHandleHeight.js +0 -22
  140. package/dist/runtime/pm/features/Blocks/composables/useHasChildren.d.ts +0 -5
  141. package/dist/runtime/pm/features/Blocks/composables/useHasChildren.js +0 -10
  142. package/dist/runtime/pm/features/Blocks/composables/useNodeStates.d.ts +0 -7
  143. package/dist/runtime/pm/features/Blocks/composables/useNodeStates.js +0 -20
  144. package/dist/runtime/pm/features/Blocks/itemMenuMenuItems.d.ts +0 -20
  145. package/dist/runtime/pm/features/Blocks/itemMenuMenuItems.js +0 -138
  146. package/dist/runtime/pm/features/Blocks/plugins/ensureLastItemIsContentPlugin.d.ts +0 -11
  147. package/dist/runtime/pm/features/Blocks/plugins/ensureLastItemIsContentPlugin.js +0 -36
  148. package/dist/runtime/pm/features/Blocks/plugins/itemBlockIdPlugin.d.ts +0 -8
  149. package/dist/runtime/pm/features/Blocks/plugins/itemBlockIdPlugin.js +0 -30
  150. package/dist/runtime/pm/features/Blocks/plugins/itemHasSingularSelectionPlugin.d.ts +0 -3
  151. package/dist/runtime/pm/features/Blocks/plugins/itemHasSingularSelectionPlugin.js +0 -30
  152. package/dist/runtime/pm/features/Blocks/plugins/itemMenuPlugin.d.ts +0 -4
  153. package/dist/runtime/pm/features/Blocks/plugins/itemMenuPlugin.js +0 -17
  154. package/dist/runtime/pm/features/Blocks/states/stateful.d.ts +0 -2
  155. package/dist/runtime/pm/features/Blocks/states/stateful.js +0 -37
  156. package/dist/runtime/pm/features/Blocks/states/task/cancelled.svg +0 -32
  157. package/dist/runtime/pm/features/Blocks/states/task/checked.svg +0 -27
  158. package/dist/runtime/pm/features/Blocks/states/task/checked2.svg +0 -24
  159. package/dist/runtime/pm/features/Blocks/states/task/partial.svg +0 -24
  160. package/dist/runtime/pm/features/Blocks/states/task/partial2.svg +0 -31
  161. package/dist/runtime/pm/features/Blocks/states/task/unchecked.svg +0 -20
  162. package/dist/runtime/pm/features/Blocks/types.d.ts +0 -43
  163. package/dist/runtime/pm/features/Blocks/types.js +0 -2
  164. package/dist/runtime/pm/features/Blocks/utils/createItemMenuCommandExecuter.d.ts +0 -3
  165. package/dist/runtime/pm/features/Blocks/utils/createItemMenuCommandExecuter.js +0 -24
  166. package/dist/runtime/pm/features/Blocks/utils/fixBlockIds.d.ts +0 -4
  167. package/dist/runtime/pm/features/Blocks/utils/fixBlockIds.js +0 -23
  168. package/dist/runtime/pm/features/Blocks/utils/isValidId.d.ts +0 -2
  169. package/dist/runtime/pm/features/Blocks/utils/isValidId.js +0 -7
  170. package/dist/runtime/pm/features/CodeBlock/CodeBlock.d.ts +0 -16
  171. package/dist/runtime/pm/features/CodeBlock/CodeBlock.js +0 -91
  172. package/dist/runtime/pm/features/CodeBlock/build/generateHighlightJsInfo.d.ts +0 -1
  173. package/dist/runtime/pm/features/CodeBlock/build/generateHighlightJsInfo.js +0 -63
  174. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockEnterOrSplit.d.ts +0 -9
  175. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockEnterOrSplit.js +0 -28
  176. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockIndent.d.ts +0 -9
  177. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockIndent.js +0 -39
  178. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockUnindent.d.ts +0 -9
  179. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockUnindent.js +0 -50
  180. package/dist/runtime/pm/features/CodeBlock/commands/focusCodeBlockLanguage.d.ts +0 -9
  181. package/dist/runtime/pm/features/CodeBlock/commands/focusCodeBlockLanguage.js +0 -27
  182. package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.d.vue.ts +0 -92
  183. package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.vue +0 -112
  184. package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.vue.d.ts +0 -92
  185. package/dist/runtime/pm/features/CodeBlock/composables/useAsyncCodeBlockHighlighting.d.ts +0 -28
  186. package/dist/runtime/pm/features/CodeBlock/composables/useAsyncCodeBlockHighlighting.js +0 -137
  187. package/dist/runtime/pm/features/CodeBlock/composables/useHighlightJsTheme.d.ts +0 -37
  188. package/dist/runtime/pm/features/CodeBlock/composables/useHighlightJsTheme.js +0 -101
  189. package/dist/runtime/pm/features/CodeBlock/highlightJsInfo.d.ts +0 -17
  190. package/dist/runtime/pm/features/CodeBlock/highlightJsInfo.js +0 -711
  191. package/dist/runtime/pm/features/CodeBlock/types.d.ts +0 -4
  192. package/dist/runtime/pm/features/CodeBlock/types.js +0 -2
  193. package/dist/runtime/pm/features/Collaboration/Collaboration.d.ts +0 -66
  194. package/dist/runtime/pm/features/Collaboration/Collaboration.js +0 -169
  195. package/dist/runtime/pm/features/CommandsMenus/CommandBar.d.ts +0 -19
  196. package/dist/runtime/pm/features/CommandsMenus/CommandBar.js +0 -97
  197. package/dist/runtime/pm/features/CommandsMenus/commandBarMenuItems.d.ts +0 -20
  198. package/dist/runtime/pm/features/CommandsMenus/commandBarMenuItems.js +0 -188
  199. package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.d.vue.ts +0 -8
  200. package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.vue +0 -58
  201. package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.vue.d.ts +0 -8
  202. package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.d.vue.ts +0 -12
  203. package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.vue +0 -42
  204. package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.vue.d.ts +0 -12
  205. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.d.vue.ts +0 -10
  206. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.vue +0 -55
  207. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.vue.d.ts +0 -10
  208. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.d.vue.ts +0 -11
  209. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.vue +0 -58
  210. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.vue.d.ts +0 -11
  211. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.d.vue.ts +0 -11
  212. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.vue +0 -54
  213. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.vue.d.ts +0 -11
  214. package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.d.vue.ts +0 -5
  215. package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.vue +0 -13
  216. package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.vue.d.ts +0 -5
  217. package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.d.vue.ts +0 -8
  218. package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.vue +0 -45
  219. package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.vue.d.ts +0 -8
  220. package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.d.vue.ts +0 -2
  221. package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.vue +0 -5
  222. package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.vue.d.ts +0 -2
  223. package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.d.vue.ts +0 -2
  224. package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.vue +0 -5
  225. package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.vue.d.ts +0 -2
  226. package/dist/runtime/pm/features/CommandsMenus/types.d.ts +0 -61
  227. package/dist/runtime/pm/features/CommandsMenus/types.js +0 -5
  228. package/dist/runtime/pm/features/CommandsMenus/utils/defaultCommandExecutor.d.ts +0 -3
  229. package/dist/runtime/pm/features/CommandsMenus/utils/defaultCommandExecutor.js +0 -11
  230. package/dist/runtime/pm/features/CommandsMenus/utils/findCommand.d.ts +0 -10
  231. package/dist/runtime/pm/features/CommandsMenus/utils/findCommand.js +0 -16
  232. package/dist/runtime/pm/features/CommandsMenus/utils/popupPositionModifier.d.ts +0 -5
  233. package/dist/runtime/pm/features/CommandsMenus/utils/popupPositionModifier.js +0 -9
  234. package/dist/runtime/pm/features/CommandsMenus/utils/popupVerticalPositioner.d.ts +0 -5
  235. package/dist/runtime/pm/features/CommandsMenus/utils/popupVerticalPositioner.js +0 -11
  236. package/dist/runtime/pm/features/Document/Document.d.ts +0 -3
  237. package/dist/runtime/pm/features/Document/Document.js +0 -6
  238. package/dist/runtime/pm/features/DocumentApi/DocumentApi.d.ts +0 -86
  239. package/dist/runtime/pm/features/DocumentApi/DocumentApi.js +0 -170
  240. package/dist/runtime/pm/features/DocumentApi/composables/useEditorContent.d.ts +0 -13
  241. package/dist/runtime/pm/features/DocumentApi/composables/useEditorContent.js +0 -76
  242. package/dist/runtime/pm/features/DocumentApi/composables/useTestDocumentApi.d.ts +0 -23
  243. package/dist/runtime/pm/features/DocumentApi/composables/useTestDocumentApi.js +0 -70
  244. package/dist/runtime/pm/features/DocumentApi/types.d.ts +0 -133
  245. package/dist/runtime/pm/features/DocumentApi/types.js +0 -1
  246. package/dist/runtime/pm/features/DocumentApi/utils/convertFullTransactionForPartialState.d.ts +0 -3
  247. package/dist/runtime/pm/features/DocumentApi/utils/convertFullTransactionForPartialState.js +0 -37
  248. package/dist/runtime/pm/features/DocumentApi/utils/convertTrForInstance.d.ts +0 -4
  249. package/dist/runtime/pm/features/DocumentApi/utils/convertTrForInstance.js +0 -13
  250. package/dist/runtime/pm/features/DocumentApi/utils/convertTransactionForFullState.d.ts +0 -2
  251. package/dist/runtime/pm/features/DocumentApi/utils/convertTransactionForFullState.js +0 -22
  252. package/dist/runtime/pm/features/DocumentApi/utils/copyMeta.d.ts +0 -2
  253. package/dist/runtime/pm/features/DocumentApi/utils/copyMeta.js +0 -6
  254. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedJson.d.ts +0 -1
  255. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedJson.js +0 -14
  256. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedNodeFromDoc.d.ts +0 -1
  257. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedNodeFromDoc.js +0 -14
  258. package/dist/runtime/pm/features/DocumentApi/utils/getStateEmbedRange.d.ts +0 -9
  259. package/dist/runtime/pm/features/DocumentApi/utils/getStateEmbedRange.js +0 -19
  260. package/dist/runtime/pm/features/DocumentApi/utils/isEmbedId.d.ts +0 -2
  261. package/dist/runtime/pm/features/DocumentApi/utils/isEmbedId.js +0 -3
  262. package/dist/runtime/pm/features/EmbeddedDocument/Embedded.d.ts +0 -24
  263. package/dist/runtime/pm/features/EmbeddedDocument/Embedded.js +0 -73
  264. package/dist/runtime/pm/features/EmbeddedDocument/EmbeddedDocument.d.ts +0 -23
  265. package/dist/runtime/pm/features/EmbeddedDocument/EmbeddedDocument.js +0 -70
  266. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.d.vue.ts +0 -14
  267. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.vue +0 -171
  268. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.vue.d.ts +0 -14
  269. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.d.vue.ts +0 -92
  270. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.vue +0 -172
  271. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.vue.d.ts +0 -92
  272. package/dist/runtime/pm/features/EmbeddedDocument/composables/useEmbeddedEditor.d.ts +0 -31
  273. package/dist/runtime/pm/features/EmbeddedDocument/composables/useEmbeddedEditor.js +0 -199
  274. package/dist/runtime/pm/features/EmbeddedDocument/types.d.ts +0 -49
  275. package/dist/runtime/pm/features/EmbeddedDocument/types.js +0 -6
  276. package/dist/runtime/pm/features/EmbeddedDocument/utils/isEmbeddedBlock.d.ts +0 -9
  277. package/dist/runtime/pm/features/EmbeddedDocument/utils/isEmbeddedBlock.js +0 -3
  278. package/dist/runtime/pm/features/EmbeddedDocument/utils/redirectFromEmbedded.d.ts +0 -28
  279. package/dist/runtime/pm/features/EmbeddedDocument/utils/redirectFromEmbedded.js +0 -17
  280. package/dist/runtime/pm/features/FileLoader/FileLoader.d.ts +0 -16
  281. package/dist/runtime/pm/features/FileLoader/FileLoader.js +0 -99
  282. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/FileLoaderHandler.d.ts +0 -28
  283. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/FileLoaderHandler.js +0 -69
  284. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/TestFileLoaderHandler.d.ts +0 -11
  285. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/TestFileLoaderHandler.js +0 -49
  286. package/dist/runtime/pm/features/FileLoader/commands/insertFile.d.ts +0 -17
  287. package/dist/runtime/pm/features/FileLoader/commands/insertFile.js +0 -39
  288. package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.d.vue.ts +0 -92
  289. package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.vue +0 -38
  290. package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.vue.d.ts +0 -92
  291. package/dist/runtime/pm/features/FileLoader/plugins/fileLoaderPlugin.d.ts +0 -5
  292. package/dist/runtime/pm/features/FileLoader/plugins/fileLoaderPlugin.js +0 -61
  293. package/dist/runtime/pm/features/FileLoader/types.d.ts +0 -73
  294. package/dist/runtime/pm/features/FileLoader/types.js +0 -0
  295. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNode.d.ts +0 -4
  296. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNode.js +0 -27
  297. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNodes.d.ts +0 -9
  298. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNodes.js +0 -22
  299. package/dist/runtime/pm/features/FileLoader/utils/findLoadingNodePos.d.ts +0 -2
  300. package/dist/runtime/pm/features/FileLoader/utils/findLoadingNodePos.js +0 -11
  301. package/dist/runtime/pm/features/FileLoader/utils/optionsCheck.d.ts +0 -3
  302. package/dist/runtime/pm/features/FileLoader/utils/optionsCheck.js +0 -8
  303. package/dist/runtime/pm/features/FileLoader/utils/readAsDataUrl.d.ts +0 -1
  304. package/dist/runtime/pm/features/FileLoader/utils/readAsDataUrl.js +0 -12
  305. package/dist/runtime/pm/features/HardBreak/HardBreak.d.ts +0 -5
  306. package/dist/runtime/pm/features/HardBreak/HardBreak.js +0 -14
  307. package/dist/runtime/pm/features/Heading/Heading.d.ts +0 -24
  308. package/dist/runtime/pm/features/Heading/Heading.js +0 -85
  309. package/dist/runtime/pm/features/Heading/commands/changeLevelAttr.d.ts +0 -16
  310. package/dist/runtime/pm/features/Heading/commands/changeLevelAttr.js +0 -33
  311. package/dist/runtime/pm/features/Heading/types.d.ts +0 -14
  312. package/dist/runtime/pm/features/Heading/types.js +0 -0
  313. package/dist/runtime/pm/features/Highlight/Highlight.d.ts +0 -72
  314. package/dist/runtime/pm/features/Highlight/Highlight.js +0 -163
  315. package/dist/runtime/pm/features/Highlight/retyped/tiptapHighlight.d.ts +0 -3
  316. package/dist/runtime/pm/features/Highlight/retyped/tiptapHighlight.js +0 -5
  317. package/dist/runtime/pm/features/Highlight/types.d.ts +0 -27
  318. package/dist/runtime/pm/features/Highlight/types.js +0 -2
  319. package/dist/runtime/pm/features/History/History.d.ts +0 -35
  320. package/dist/runtime/pm/features/History/History.js +0 -63
  321. package/dist/runtime/pm/features/Iframe/Iframe.d.ts +0 -21
  322. package/dist/runtime/pm/features/Iframe/Iframe.js +0 -127
  323. package/dist/runtime/pm/features/Iframe/IframeParsers.d.ts +0 -37
  324. package/dist/runtime/pm/features/Iframe/IframeParsers.js +0 -88
  325. package/dist/runtime/pm/features/Iframe/components/IframeNodeView.d.vue.ts +0 -92
  326. package/dist/runtime/pm/features/Iframe/components/IframeNodeView.vue +0 -82
  327. package/dist/runtime/pm/features/Iframe/components/IframeNodeView.vue.d.ts +0 -92
  328. package/dist/runtime/pm/features/Iframe/types.d.ts +0 -5
  329. package/dist/runtime/pm/features/Iframe/types.js +0 -0
  330. package/dist/runtime/pm/features/Image/Image.d.ts +0 -2
  331. package/dist/runtime/pm/features/Image/Image.js +0 -13
  332. package/dist/runtime/pm/features/Link/Link.d.ts +0 -38
  333. package/dist/runtime/pm/features/Link/Link.js +0 -241
  334. package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.d.vue.ts +0 -28
  335. package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.vue +0 -114
  336. package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.vue.d.ts +0 -28
  337. package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.d.vue.ts +0 -29
  338. package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.vue +0 -107
  339. package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.vue.d.ts +0 -29
  340. package/dist/runtime/pm/features/Link/components/BubbleMenuLink.d.vue.ts +0 -11
  341. package/dist/runtime/pm/features/Link/components/BubbleMenuLink.vue +0 -126
  342. package/dist/runtime/pm/features/Link/components/BubbleMenuLink.vue.d.ts +0 -11
  343. package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.d.vue.ts +0 -18
  344. package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.vue +0 -57
  345. package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.vue.d.ts +0 -18
  346. package/dist/runtime/pm/features/Link/types.d.ts +0 -44
  347. package/dist/runtime/pm/features/Link/types.js +0 -3
  348. package/dist/runtime/pm/features/Menus/Menus.d.ts +0 -45
  349. package/dist/runtime/pm/features/Menus/Menus.js +0 -142
  350. package/dist/runtime/pm/features/Menus/components/MarkMenuManager.d.vue.ts +0 -6
  351. package/dist/runtime/pm/features/Menus/components/MarkMenuManager.vue +0 -166
  352. package/dist/runtime/pm/features/Menus/components/MarkMenuManager.vue.d.ts +0 -6
  353. package/dist/runtime/pm/features/Menus/types.d.ts +0 -51
  354. package/dist/runtime/pm/features/Menus/types.js +0 -3
  355. package/dist/runtime/pm/features/Menus/utils/isMarkMenu.d.ts +0 -2
  356. package/dist/runtime/pm/features/Menus/utils/isMarkMenu.js +0 -3
  357. package/dist/runtime/pm/features/Tables/commands/tableEnter.d.ts +0 -15
  358. package/dist/runtime/pm/features/Tables/commands/tableEnter.js +0 -19
  359. package/dist/runtime/pm/features/Tables/index.d.ts +0 -9
  360. package/dist/runtime/pm/features/Tables/index.js +0 -44
  361. package/dist/runtime/pm/schema.d.ts +0 -4
  362. package/dist/runtime/pm/schema.js +0 -80
  363. package/dist/runtime/pm/testSchema.d.ts +0 -5
  364. package/dist/runtime/pm/testSchema.js +0 -30
  365. package/dist/runtime/pm/utils/createDropIndicator.d.ts +0 -23
  366. package/dist/runtime/pm/utils/createDropIndicator.js +0 -32
  367. package/dist/runtime/pm/utils/createStateOnlyPluginApply.d.ts +0 -2
  368. package/dist/runtime/pm/utils/createStateOnlyPluginApply.js +0 -9
  369. package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.d.ts +0 -2
  370. package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.js +0 -14
  371. package/dist/runtime/pm/utils/dropPointInfo.d.ts +0 -56
  372. package/dist/runtime/pm/utils/dropPointInfo.js +0 -28
  373. package/dist/runtime/pm/utils/findUpwards.d.ts +0 -20
  374. package/dist/runtime/pm/utils/findUpwards.js +0 -18
  375. package/dist/runtime/pm/utils/getChildChunks.d.ts +0 -3
  376. package/dist/runtime/pm/utils/getChildChunks.js +0 -15
  377. package/dist/runtime/pm/utils/getDiffReplacementRange.d.ts +0 -20
  378. package/dist/runtime/pm/utils/getDiffReplacementRange.js +0 -9
  379. package/dist/runtime/pm/utils/getElMaxVisualSize.d.ts +0 -9
  380. package/dist/runtime/pm/utils/getElMaxVisualSize.js +0 -7
  381. package/dist/runtime/pm/utils/getElPropertyAsInt.d.ts +0 -1
  382. package/dist/runtime/pm/utils/getElPropertyAsInt.js +0 -8
  383. package/dist/runtime/pm/utils/getGroupNodeNames.d.ts +0 -2
  384. package/dist/runtime/pm/utils/getGroupNodeNames.js +0 -7
  385. package/dist/runtime/pm/utils/getMarkPosition.d.ts +0 -11
  386. package/dist/runtime/pm/utils/getMarkPosition.js +0 -34
  387. package/dist/runtime/pm/utils/getMarksInSelection.d.ts +0 -3
  388. package/dist/runtime/pm/utils/getMarksInSelection.js +0 -16
  389. package/dist/runtime/pm/utils/getTypeByName.d.ts +0 -2
  390. package/dist/runtime/pm/utils/getTypeByName.js +0 -5
  391. package/dist/runtime/pm/utils/index.d.ts +0 -15
  392. package/dist/runtime/pm/utils/index.js +0 -15
  393. package/dist/runtime/pm/utils/internal/createNodeTypesList.d.ts +0 -2
  394. package/dist/runtime/pm/utils/internal/createNodeTypesList.js +0 -17
  395. package/dist/runtime/pm/utils/internal/debugMap.d.ts +0 -7
  396. package/dist/runtime/pm/utils/internal/debugMap.js +0 -24
  397. package/dist/runtime/pm/utils/internal/debugNode.d.ts +0 -2
  398. package/dist/runtime/pm/utils/internal/debugNode.js +0 -18
  399. package/dist/runtime/pm/utils/internal/debugSel.d.ts +0 -5
  400. package/dist/runtime/pm/utils/internal/debugSel.js +0 -8
  401. package/dist/runtime/pm/utils/internal/recurse.d.ts +0 -2
  402. package/dist/runtime/pm/utils/internal/recurse.js +0 -39
  403. package/dist/runtime/pm/utils/internal/stripBlockId.d.ts +0 -2
  404. package/dist/runtime/pm/utils/internal/stripBlockId.js +0 -9
  405. package/dist/runtime/pm/utils/mapSelection.d.ts +0 -8
  406. package/dist/runtime/pm/utils/mapSelection.js +0 -12
  407. package/dist/runtime/pm/utils/nodesBetween.d.ts +0 -21
  408. package/dist/runtime/pm/utils/nodesBetween.js +0 -21
  409. package/dist/runtime/pm/utils/pointToPmPoint.d.ts +0 -2
  410. package/dist/runtime/pm/utils/pointToPmPoint.js +0 -3
  411. package/dist/runtime/pm/utils/splitIntoChunks.d.ts +0 -32
  412. package/dist/runtime/pm/utils/splitIntoChunks.js +0 -31
  413. package/dist/runtime/testDocuments.d.ts +0 -53
  414. package/dist/runtime/testDocuments.js +0 -122
  415. package/dist/runtime/types/index.d.ts +0 -53
  416. package/dist/runtime/types/index.js +0 -9
@@ -1,86 +0,0 @@
1
- import type { Content, EditorOptions } from "@tiptap/core";
2
- import type { Schema } from "@tiptap/pm/model";
3
- import type { EditorState, Plugin, Transaction } from "@tiptap/pm/state";
4
- import { Editor } from "@tiptap/vue-3";
5
- import type { DocId, DocumentApiInterface, EmbedId, OnSaveDocumentCallback, OnUpdateDocumentCallback } from "./types.js.js";
6
- /**
7
- * Configures the document api which tells the editor how to load/unload/save/cache documents, including embedded ones.
8
- *
9
- * The cache implementation is left up to the user, hence why it's defined as a get/set interface. A load function must be provided for requesting uncached documents.
10
- *
11
- * `save` is optional, but you probably want to save. The function is automatically debounced the configured amount.
12
- *
13
- * **Any function that needs to return a document should return it unwrapped with toRaw if it was a ref or in a ref or reactive. **
14
- *
15
- * A `refCounter` object can be provided with the respective load/unload functions to be notified when embedded views load/unload documents to reference count them and unload them once no editors have them in use.
16
- *
17
- * It is safe to call load multiple times for the same document, the actual load function will only be called once per document, but the refCounter will be called multiple times.
18
- *
19
- * The `getTitle` function can be provided to customize the title of the embedded document. It's passed the full embed id and returns it as docId#blockId by default.
20
- *
21
- * If there are extensions that use onCreate to set state or have plugins that need to change the state on init with appendTransaction, they will not work since there is no view to initialize the plugins. To get around this, plugins can specify a stateInit function that will be called with a transaction from the initial loaded state which it can then modify while having access to `this` and the extension options.
22
- *
23
- * The api creates a default instance of the editor to copy plugins from, this can be replaced by passing your own editor instance.
24
- *
25
- * See {@link useTestDocumentApi} for an example of how to set things up.
26
- */
27
- export declare class DocumentApi<T extends Record<string, any> = Record<string, any>> implements DocumentApiInterface<T> {
28
- private readonly _callbacks;
29
- private readonly _load;
30
- private readonly _save?;
31
- private readonly _saveQueue;
32
- readonly save: DocumentApiInterface<T>["save"];
33
- private readonly _cache;
34
- /**
35
- * The refCounter is called every time an editor loads or unloads a document. It's used to keep track of the number of editors that are using a document, and to unload it when no editors are using it.
36
- *
37
- * Note that you need not immediately unload the cached document. So long as the count is immediatly updated you can set a timeout to actually delete the cache entry (be sure to check the count it still 0 and you can delete it).
38
- */
39
- private readonly _refCounter;
40
- getSuggestions: DocumentApiInterface["getSuggestions"];
41
- getEmbedTitle: DocumentApiInterface["getEmbedTitle"];
42
- postEditorInit: DocumentApiInterface["postEditorInit"];
43
- preEditorInit: DocumentApiInterface["preEditorInit"];
44
- updateFilter?: DocumentApiInterface["updateFilter"];
45
- editor: Editor;
46
- constructor({ editorOptions, getTitle, getSuggestions, load, save, saveDebounce, cache, refCounter, postEditorInit, preEditorInit, updateFilter }: {
47
- /**
48
- * The editor options for the internal instance to use to keep track of the document state. It should include the same extensions as the root editor.
49
- */
50
- editorOptions: Partial<EditorOptions>;
51
- getTitle?: (docId: string, blockId?: string) => string;
52
- getSuggestions: DocumentApiInterface["getSuggestions"];
53
- load: (docId: string, schema: Schema, plugins: Plugin[]) => Promise<{
54
- state: EditorState;
55
- data?: T;
56
- }>;
57
- save?: DocumentApi["_save"];
58
- saveDebounce?: number;
59
- cache: DocumentApi["_cache"];
60
- refCounter: DocumentApi<T>["_refCounter"];
61
- postEditorInit?: DocumentApi["postEditorInit"];
62
- preEditorInit?: DocumentApi["preEditorInit"];
63
- updateFilter?: DocumentApi["updateFilter"];
64
- });
65
- _saveDocument(docId: string): Promise<void>;
66
- updateDocument(embedId: DocId, tr: Transaction, updaterSymbol?: symbol): void;
67
- addEventListener(type: "saving" | "saved", cb: OnSaveDocumentCallback): void;
68
- addEventListener(type: "update", cb: OnUpdateDocumentCallback): void;
69
- removeEventListener(type: "saving" | "saved", cb: OnSaveDocumentCallback): void;
70
- removeEventListener(type: "update", cb: OnUpdateDocumentCallback): void;
71
- unload({ docId }: DocId): void;
72
- private readonly _loading;
73
- load({ docId }: DocId): Promise<{
74
- state: EditorState;
75
- data?: T;
76
- }>;
77
- private _loadInternal;
78
- getFullState(docId: DocId): EditorState;
79
- getFromCache(docId: DocId, options?: {
80
- errorIfNotFound: true;
81
- }): EditorState;
82
- getFromCache(docId: DocId, options?: {
83
- errorIfNotFound?: boolean;
84
- }): EditorState | undefined;
85
- getEmbeddedContent(embedId: EmbedId): Content | undefined;
86
- }
@@ -1,170 +0,0 @@
1
- import { debounce } from "@alanscodelog/utils/debounce";
2
- import { unreachable } from "@alanscodelog/utils/unreachable";
3
- import { Editor } from "@tiptap/vue-3";
4
- import { isProxy } from "vue";
5
- import { convertTransactionForFullState } from "./utils/convertTransactionForFullState.js";
6
- import { getEmbedJson } from "./utils/getEmbedJson.js";
7
- import { getEmbedNodeFromDoc } from "./utils/getEmbedNodeFromDoc.js";
8
- export class DocumentApi {
9
- _callbacks = { update: [], saved: [], saving: [] };
10
- _load;
11
- _save;
12
- _saveQueue = {};
13
- save;
14
- _cache;
15
- /**
16
- * The refCounter is called every time an editor loads or unloads a document. It's used to keep track of the number of editors that are using a document, and to unload it when no editors are using it.
17
- *
18
- * Note that you need not immediately unload the cached document. So long as the count is immediatly updated you can set a timeout to actually delete the cache entry (be sure to check the count it still 0 and you can delete it).
19
- */
20
- _refCounter;
21
- getSuggestions;
22
- getEmbedTitle;
23
- postEditorInit;
24
- // editor + updateState does not work :/
25
- preEditorInit = (_docId, options, state) => {
26
- options.content = state.doc.toJSON();
27
- return options;
28
- };
29
- updateFilter = () => true;
30
- editor;
31
- constructor({
32
- editorOptions,
33
- getTitle,
34
- getSuggestions,
35
- load,
36
- save,
37
- saveDebounce = 1e3,
38
- cache,
39
- refCounter,
40
- postEditorInit,
41
- preEditorInit,
42
- updateFilter
43
- }) {
44
- this.updateFilter = updateFilter;
45
- this.getEmbedTitle = getTitle ? ({ docId, blockId }) => getTitle(docId, blockId) : ({ docId, blockId }) => `${docId}${blockId ? `#${blockId}` : ""}`;
46
- this._load = load;
47
- this._cache = cache;
48
- this._refCounter = refCounter;
49
- this._save = save;
50
- const debouncedSave = debounce(this._saveDocument.bind(this), saveDebounce, {
51
- queue: this._saveQueue,
52
- // even though save is async, promisified debounce is slightly more expensive because it creates a new function with every call
53
- // and we don't really need that
54
- promisify: false
55
- });
56
- this.save = function save2(docId) {
57
- for (const cb of this._callbacks.saving) {
58
- cb(docId);
59
- }
60
- debouncedSave(docId);
61
- };
62
- this.postEditorInit = postEditorInit ?? (() => {
63
- });
64
- if (preEditorInit) this.preEditorInit = preEditorInit;
65
- this.getSuggestions = getSuggestions;
66
- this.editor = new Editor({
67
- ...editorOptions,
68
- extensions: [...editorOptions.extensions],
69
- injectCSS: false
70
- });
71
- }
72
- // eslint-disable-next-line @typescript-eslint/naming-convention
73
- async _saveDocument(docId) {
74
- if (this._save) {
75
- await this._save(docId);
76
- for (const cb of this._callbacks.saved) {
77
- cb(docId);
78
- }
79
- } else {
80
- console.warn("No save function provided, ignoring save request.");
81
- }
82
- }
83
- updateDocument(embedId, tr, updaterSymbol) {
84
- if (this.updateFilter && this.updateFilter(tr) === false) return;
85
- const stateBefore = this.getFromCache(embedId, { errorIfNotFound: true });
86
- const modifiedTr = convertTransactionForFullState(stateBefore, tr);
87
- const newState = stateBefore.apply(modifiedTr);
88
- this._cache.set(embedId.docId, newState);
89
- for (const cb of this._callbacks.update) {
90
- cb(embedId, modifiedTr, stateBefore, newState, updaterSymbol);
91
- }
92
- }
93
- addEventListener(type, cb) {
94
- this._callbacks[type].push(cb);
95
- }
96
- removeEventListener(type, cb) {
97
- const cbIndex = this._callbacks[type].indexOf(cb);
98
- if (cbIndex === -1) {
99
- throw new Error("Tried to remove a callback that was not registered.");
100
- }
101
- this._callbacks[type].splice(cbIndex, 1);
102
- }
103
- unload({ docId }) {
104
- this._refCounter.unload(docId);
105
- }
106
- _loading = {};
107
- async load({ docId }) {
108
- this._loading[docId] ??= this._loadInternal({ docId });
109
- const res = await this._loading[docId];
110
- if (res === void 0) unreachable();
111
- this._loading[docId] = void 0;
112
- this._refCounter.load(docId, res);
113
- if (isProxy(res.state)) {
114
- throw new Error("State cannot be a reactive proxy. You can use toRaw as a temporary workaround but you should ideally not make it reactive");
115
- }
116
- this._cache.set(docId, res.state);
117
- return res;
118
- }
119
- async _loadInternal({ docId }) {
120
- const cachedState = this.getFromCache({ docId }, { errorIfNotFound: false });
121
- if (isProxy(cachedState)) {
122
- throw new Error("State cannot be a reactive proxy. You can use toRaw as a temporary workaround but you should ideally not make it reactive");
123
- }
124
- if (cachedState) {
125
- const res = { state: cachedState };
126
- this._refCounter.load(docId, res);
127
- return res;
128
- }
129
- const schema = this.editor.schema;
130
- const loaded = await this._load(
131
- docId,
132
- schema,
133
- [...this.editor.extensionManager.plugins]
134
- );
135
- let state = loaded.state;
136
- const tr = state.tr;
137
- tr.setMeta("addToHistory", false);
138
- for (const plugin of state.plugins) {
139
- if (plugin.spec.stateInit) {
140
- plugin.spec.stateInit(tr);
141
- }
142
- }
143
- state = state.apply(tr);
144
- return { data: loaded.data, state };
145
- }
146
- getFullState(docId) {
147
- return this.getFromCache(docId, { errorIfNotFound: true });
148
- }
149
- getFromCache({ docId }, options) {
150
- const cached = this._cache.get(docId);
151
- if (cached) return cached;
152
- if (options?.errorIfNotFound) {
153
- throw new Error(`Could not find cached state for document ${docId}. Expected document to be loaded.`);
154
- }
155
- if (isProxy(cached)) {
156
- throw new Error("State cannot be a reactive proxy. You can use toRaw as a temporary workaround but you should ideally not make it reactive");
157
- }
158
- return void 0;
159
- }
160
- getEmbeddedContent(embedId) {
161
- const state = this.getFullState(embedId);
162
- const json = state.doc.toJSON();
163
- const nodeWanted = getEmbedNodeFromDoc(json, embedId.blockId);
164
- if (embedId.blockId && !nodeWanted) {
165
- return void 0;
166
- } else {
167
- return getEmbedJson(nodeWanted) ?? json;
168
- }
169
- }
170
- }
@@ -1,13 +0,0 @@
1
- import type { Content, Editor, EditorOptions } from "@tiptap/core";
2
- import { type Ref, type ShallowRef } from "vue";
3
- import type { DocumentApiInterface } from "../types.js.js";
4
- /**
5
- * Provides two ways to load content into the editor.
6
- *
7
- * The simple one, which is just to provide a content ref.
8
- *
9
- * And the more advanced one which uses the document api to load the content. This requires passing the embed api and an id to load.
10
- *
11
- * The second option is usually the best, as multiple editors can load the same content and it's automatically kept in sync. See {@link DocumentApi} for more info.
12
- */
13
- export declare function useEditorContent(editor: ShallowRef<Editor | undefined>, content: Ref<Content | undefined>, id: Ref<string | undefined>, documentApi: DocumentApiInterface | undefined, recreate: (modifyOptions?: (options: Partial<EditorOptions>) => Partial<EditorOptions>) => void): void;
@@ -1,76 +0,0 @@
1
- import { nextTick, onBeforeUnmount, watch } from "vue";
2
- import { convertTrForInstance } from "../utils/convertTrForInstance.js";
3
- export function useEditorContent(editor, content, id, documentApi, recreate) {
4
- const selfSymbol = Symbol(`self${Math.random()}`);
5
- function onTransaction({ transaction: tr }) {
6
- if (!documentApi || !id.value || !tr.docChanged || tr.getMeta("ignore")) {
7
- return;
8
- }
9
- tr.setMeta("no-step-convert", true);
10
- documentApi.updateDocument({ docId: id.value }, tr, selfSymbol);
11
- }
12
- const onUpdateDocument = (embedId, tr, __, ___, symbol) => {
13
- if (symbol !== selfSymbol && !tr.getMeta("ignore") && tr.docChanged && embedId.docId === id.value) {
14
- tr.setMeta("ignore", true);
15
- const convertedTr = convertTrForInstance(
16
- tr,
17
- editor.value.state
18
- );
19
- editor.value?.view.dispatch(convertedTr);
20
- }
21
- if (tr.docChanged) {
22
- void documentApi?.save(embedId.docId);
23
- }
24
- };
25
- let attached = false;
26
- async function load(changed) {
27
- if (content.value) {
28
- editor.value?.commands.setContent(content.value);
29
- } else if (documentApi) {
30
- if (changed && id.value) {
31
- await documentApi.load({ docId: id.value });
32
- const state = documentApi.getFullState({ docId: id.value });
33
- recreate((options) => documentApi.preEditorInit?.(id.value, { ...options }, state));
34
- await nextTick(async () => {
35
- editor.value.on("transaction", onTransaction);
36
- documentApi.addEventListener("update", onUpdateDocument);
37
- documentApi.postEditorInit(id.value, editor.value);
38
- attached = true;
39
- });
40
- }
41
- }
42
- }
43
- function unload(oldId) {
44
- if (oldId !== void 0 && documentApi) {
45
- documentApi.unload({ docId: oldId });
46
- if (attached) {
47
- documentApi.removeEventListener("update", onUpdateDocument);
48
- editor.value?.off("transaction", onTransaction);
49
- attached = false;
50
- }
51
- }
52
- }
53
- watch([content, id, editor], async ([_newContent, newId], [_oldContent, oldId]) => {
54
- if (!editor.value) {
55
- return;
56
- }
57
- if (!content.value && (!id.value || !documentApi)) {
58
- throw new Error("No content or id and document api provided.");
59
- }
60
- if (id.value && !documentApi) {
61
- throw new Error("Id provided but no document api provided.");
62
- }
63
- if (oldId !== void 0 && newId !== oldId && documentApi) {
64
- unload(oldId);
65
- await load(true);
66
- } else if (_newContent) {
67
- await load(false);
68
- }
69
- }, { deep: false });
70
- void load(true);
71
- onBeforeUnmount(() => {
72
- if (id.value) {
73
- unload(id.value);
74
- }
75
- });
76
- }
@@ -1,23 +0,0 @@
1
- import type { EditorOptions } from "@tiptap/core";
2
- import { EditorState } from "@tiptap/pm/state";
3
- import { type Ref } from "vue";
4
- import type { DocumentApiInterface } from "../types.js.js";
5
- type Cache = Record<string, {
6
- state?: EditorState;
7
- count: number;
8
- }>;
9
- /** Creates a simple instance of the DocumentApi for testing purposes. */
10
- export declare function useTestDocumentApi(editorOptions: Partial<EditorOptions>, embeds: Record<string, {
11
- content: any;
12
- title?: string;
13
- }>, { loadDelay }?: {
14
- loadDelay?: number;
15
- }): {
16
- cache: Ref<Cache>;
17
- documentApi: DocumentApiInterface;
18
- embeds: Record<string, {
19
- content: any;
20
- title?: string;
21
- }>;
22
- };
23
- export {};
@@ -1,70 +0,0 @@
1
- import { delay } from "@alanscodelog/utils/delay";
2
- import { keys } from "@alanscodelog/utils/keys";
3
- import { unreachable } from "@alanscodelog/utils/unreachable";
4
- import { createDocument, generateJSON } from "@tiptap/core";
5
- import { EditorState } from "@tiptap/pm/state";
6
- import { ref, toRaw } from "vue";
7
- import { testExtensions } from "../../../testSchema.js";
8
- import { DocumentApi } from "../DocumentApi.js";
9
- export function useTestDocumentApi(editorOptions, embeds, { loadDelay = 0 } = {}) {
10
- const cache = ref({});
11
- const documentApi = new DocumentApi({
12
- editorOptions,
13
- getSuggestions: async (searchString) => {
14
- const res = [];
15
- for (const docId of keys(embeds)) {
16
- const title = embeds[docId].title ?? docId;
17
- if (title.includes(searchString)) {
18
- res.push({ title, docId });
19
- }
20
- }
21
- if (loadDelay) {
22
- await delay(loadDelay);
23
- }
24
- return res;
25
- },
26
- getTitle: (docId, blockId) => (embeds[docId]?.title ?? docId) + (blockId ? `#${blockId}` : ""),
27
- cache: {
28
- get(docId) {
29
- return toRaw(cache.value[docId]?.state);
30
- },
31
- set(docId, state) {
32
- cache.value[docId].state = state;
33
- }
34
- },
35
- load: async (docId, schema, plugins) => {
36
- if (loadDelay) {
37
- await delay(loadDelay);
38
- }
39
- if (!embeds[docId]) {
40
- throw new Error(`No embed found for docId ${docId} in: ${JSON.stringify(embeds, null, " ")}`);
41
- }
42
- const json = generateJSON(embeds[docId].content, testExtensions);
43
- const doc = createDocument(json, schema);
44
- const state = EditorState.create({
45
- doc,
46
- schema,
47
- plugins
48
- });
49
- return { state };
50
- },
51
- refCounter: {
52
- load(docId, loaded) {
53
- cache.value[docId] ??= { ...loaded, count: 0 };
54
- cache.value[docId].count++;
55
- },
56
- unload: (docId) => {
57
- if (cache.value[docId]) {
58
- if (cache.value[docId].count === 1) {
59
- delete cache.value[docId];
60
- } else {
61
- cache.value[docId].count--;
62
- }
63
- } else {
64
- unreachable();
65
- }
66
- }
67
- }
68
- });
69
- return { documentApi, cache, embeds };
70
- }
@@ -1,133 +0,0 @@
1
- import type { Content, Editor, EditorOptions } from "@tiptap/core";
2
- import type { EditorState, Transaction } from "@tiptap/pm/state";
3
- import type { InjectionKey } from "vue";
4
- export declare const documentApiInjectionKey: InjectionKey<DocumentApiInterface>;
5
- export type DocId = {
6
- docId: string;
7
- };
8
- export type BlockId = {
9
- blockId?: string;
10
- };
11
- /** When the user initially creates an embed, it's docId will be undefined. */
12
- export type MaybeEmbedId = Partial<DocId> & BlockId;
13
- export type EmbedId = DocId & BlockId;
14
- export type OnUpdateDocumentCallback = (embedId: DocId, tr: Transaction, oldEditorState: EditorState, newEditorState: EditorState, selfSymbol?: symbol) => void;
15
- export type OnSaveDocumentCallback = (docId: string) => void;
16
- export type DocumentApiInterface<T extends Record<string, any> = Record<string, any>> = {
17
- /** Debounced save (to storage) function. Use the event listeners to get notified when saving finishes. */
18
- save: (docId: string) => void;
19
- getEmbeddedContent: (embedId: EmbedId) => Content | undefined;
20
- getFromCache: (docId: DocId, options?: {
21
- errorIfNotFound?: boolean;
22
- }) => EditorState | undefined;
23
- /** Load should be called the first time, before attempting to load the state. */
24
- getFullState: (docId: DocId) => EditorState;
25
- /** Like {@link DocumentApi.preEditorInit}, but after initializing and loading the document (and before the transaction listeners are added). */
26
- postEditorInit: (docId: string, editor: Editor) => void;
27
- /**
28
- * Sets options before initializing the editor. By default just does `options.content = state.doc.toJSON()`, but can be useful when managing the document state in some other way (e.g. collab.
29
- *
30
- * Also useful for creating per-doc instances for certain extensions, such as Collaboration.
31
- *
32
- * This is a bit tricky to do normally since the editor component initializes the editor before the document is loaded and is re-used (the wrapper Editor *component*, not the editor) when the document changes.
33
- *
34
- * So this hook can be used to add these additional per-doc instances of extensions. Be sure to clone the properties you are modifying. They are only shallow cloned before being passed to the function.
35
- *
36
- * ```ts
37
- * preEditorInit(docId, options: Partial<EditorOptions>, state: EditorState) {
38
- * // we do not need to set options.content when using collab
39
- * // so no options.content = state.doc.toJSON()
40
- * const ydoc = cache.value[docId].ydoc
41
- * // it's suggested you add the collab extension only here
42
- * // otherwise you would have to initially configure it with a dummy document
43
- * const collabExt = Collaboration.configure({
44
- * document: ydoc
45
- * }) as any
46
- * options.extensions = [
47
- * ...(options.extensions ?? []),
48
- * collabExt
49
- * ]
50
- * return options
51
- * },
52
- * load: async (
53
- * docId: string,
54
- * schema: Schema,
55
- * plugins: Plugin[],
56
- * ) => {
57
- * if (cache.value[docId]?.state) {
58
- * return { state: toRaw(cache.value[docId].state) }
59
- * }
60
- * const doc = getFromYourDb(docId)
61
- * const decoded = toUint8Array(doc.contentBinary)
62
- * const yDoc = new Y.Doc()
63
- * Y.applyUpdate(yDoc, decoded)
64
- *
65
- * const yjs = initProseMirrorDoc(yDoc.getXmlFragment("prosemirror"), schema)
66
- * const state = EditorState.create({
67
- * doc: yjs.doc,
68
- * schema,
69
- * plugins:[
70
- * ...plugins,
71
- * // the document api's yjs instance
72
- * ySyncPlugin(yDoc.getXmlFragment("prosemirror"), {mapping:yjs.mapping}),
73
- * ]
74
- * })
75
- * // return the state and any additional data we want refCounter.load to be called with.
76
- * return { state, doc, yDoc }
77
- * },
78
- * updateFilter(tr:Transaction) {
79
- * const meta = tr.getMeta(ySyncPluginKey)
80
- * if (meta) return false
81
- * return true
82
- * },
83
- * ```
84
- * See {@link DocumentApi.updateFilter} for why yjs (and other syncronization mechanisms) might need to ignore transactions.
85
- */
86
- preEditorInit: (docId: string, options: Partial<EditorOptions>, state: EditorState) => Partial<EditorOptions>;
87
- /**
88
- * Return false to ignore the transaction.
89
- *
90
- * This is useful when using a secondary syncronization mechanism, such as yjs.
91
- *
92
- * If you load all editors of a file with yjs's plugin and point to the same ydoc, yjs's plugin will sync them. But that means that when the DocumentApi tries to sync the transactions they will have already been applied and the document update will fail.
93
- *
94
- * So we have to ignore all of yjs's transactions, but NOT transactions from partially embedded docs => full state, as these do not pass through yjs.
95
- */
96
- updateFilter?: (tr: Transaction) => boolean | undefined;
97
- updateDocument: (embedId: DocId, tr: Transaction, selfSymbol?: symbol) => void;
98
- addEventListener(type: "saving" | "saved", cb: OnSaveDocumentCallback): void;
99
- addEventListener(type: "update", cb: OnUpdateDocumentCallback): void;
100
- removeEventListener(type: "saving" | "saved", cb: OnSaveDocumentCallback): void;
101
- removeEventListener(type: "update", cb: OnUpdateDocumentCallback): void;
102
- /** For the embedded document picker, should return suggestions for the search string. */
103
- getSuggestions: (searchString: string) => Promise<{
104
- title: string;
105
- docId: string;
106
- }[]>;
107
- /** How to format the title of the embedded document. Defaults to docId#blockId */
108
- getEmbedTitle: (embedId: EmbedId) => string;
109
- /**
110
- * Tells the document api how to load an unloaded document and any additional data. Whatever this function returns will be passed to the refCounter.load option in the default DocumentApi implementation.
111
- *
112
- * ```ts
113
- * load: async ( docId: string, schema: Schema, plugins: Plugin[],) => {
114
- * const dbDoc = getFromYourDb(docId)
115
- *
116
- * const state = EditorState.create({
117
- * doc: yjs.doc,
118
- * schema,
119
- * plugins
120
- * })
121
- * // return the state and any additional data we want to cache
122
- * return { state, data: { dbDoc } }
123
- * },
124
- * ```
125
- * See {@link DocumentApi.preEditorInit} for how to set this up with sync (e.g. yjs).
126
- */
127
- load: (docId: DocId) => Promise<{
128
- state: EditorState;
129
- data?: T;
130
- }>;
131
- /** Notifies the document api that an editor has unloaded the document. */
132
- unload: (docId: DocId) => void;
133
- };
@@ -1 +0,0 @@
1
- export const documentApiInjectionKey = Symbol("documentApiInjectionKey");
@@ -1,3 +0,0 @@
1
- import type { EditorState, Transaction } from "@tiptap/pm/state";
2
- import type { EmbedId } from "../types.js.js";
3
- export declare function convertFullTransactionForPartialState(state: EditorState, tr: Transaction, embedId: EmbedId): Transaction | undefined;
@@ -1,37 +0,0 @@
1
- import { Step } from "@tiptap/pm/transform";
2
- import { copyMeta } from "./copyMeta.js";
3
- import { getStateEmbedRange } from "./getStateEmbedRange.js";
4
- import { getDiffReplacementRange } from "../../../utils/getDiffReplacementRange.js";
5
- export function convertFullTransactionForPartialState(state, tr, embedId) {
6
- const blockId = embedId.blockId;
7
- if (!blockId) {
8
- const steps = JSON.parse(
9
- JSON.stringify(tr.steps)
10
- ).map((step) => Step.fromJSON(state.schema, step));
11
- const intTr2 = state.tr;
12
- copyMeta(tr, intTr2);
13
- intTr2.setMeta("ignore", true);
14
- for (const step of steps) {
15
- intTr2.step(step);
16
- }
17
- return intTr2;
18
- }
19
- const { start: nodeStartExisting } = getStateEmbedRange(state.doc, embedId);
20
- const { start: nodeStart } = getStateEmbedRange(
21
- tr.doc,
22
- embedId
23
- );
24
- if (nodeStart === void 0 || nodeStartExisting === void 0) return void 0;
25
- const intTr = state.tr;
26
- copyMeta(tr, intTr);
27
- intTr.setMeta("ignore", true);
28
- const existingNode = state.doc.nodeAt(nodeStartExisting);
29
- const newNode = tr.doc.nodeAt(nodeStart);
30
- const convertedNewNode = newNode ? state.schema.nodeFromJSON(newNode.toJSON()) : void 0;
31
- if (!existingNode || !convertedNewNode) return void 0;
32
- const diff = getDiffReplacementRange(existingNode, convertedNewNode, nodeStartExisting - 1);
33
- if (diff) {
34
- intTr.replace(2 + diff.start, 2 + diff.end, convertedNewNode.slice(diff.sliceStart, diff.sliceEnd));
35
- }
36
- return intTr;
37
- }
@@ -1,4 +0,0 @@
1
- import type { EditorState, Transaction } from "@tiptap/pm/state";
2
- export declare function convertTrForInstance(tr: Transaction,
3
- /** We convert to the schema from this state. */
4
- otherState: EditorState): Transaction;
@@ -1,13 +0,0 @@
1
- import { Step } from "@tiptap/pm/transform";
2
- import { copyMeta } from "./copyMeta.js";
3
- export function convertTrForInstance(tr, otherState) {
4
- const extTr = otherState.tr;
5
- copyMeta(tr, extTr);
6
- const steps = JSON.parse(
7
- JSON.stringify(tr.steps)
8
- ).map((step) => Step.fromJSON(otherState.schema, step));
9
- for (const step of steps) {
10
- extTr.step(step);
11
- }
12
- return extTr;
13
- }
@@ -1,2 +0,0 @@
1
- import type { EditorState, Transaction } from "@tiptap/pm/state";
2
- export declare function convertTransactionForFullState(state: EditorState, tr: Transaction): Transaction;
@@ -1,22 +0,0 @@
1
- import { unreachable } from "@alanscodelog/utils/unreachable";
2
- import { Step, StepMap } from "@tiptap/pm/transform";
3
- import { copyMeta } from "./copyMeta.js";
4
- import { getStateEmbedRange } from "./getStateEmbedRange.js";
5
- export function convertTransactionForFullState(state, tr) {
6
- const steps = tr.getMeta("no-schema-convert") ? tr.steps : JSON.parse(
7
- JSON.stringify(tr.steps)
8
- ).map((step) => Step.fromJSON(state.schema, step));
9
- const extTr = state.tr;
10
- copyMeta(tr, extTr);
11
- const trSubId = tr.doc.nodeAt(1)?.attrs.blockId;
12
- if (!trSubId && !tr.getMeta("no-step-convert")) {
13
- unreachable();
14
- }
15
- const embedRange = trSubId ? getStateEmbedRange(tr.doc, trSubId) : void 0;
16
- const offsetMap = embedRange && !tr.getMeta("no-step-convert") ? StepMap.offset(embedRange.start !== void 0 ? embedRange.start - 1 : 0) : void 0;
17
- for (const step of steps) {
18
- const mapped = offsetMap ? step.map(offsetMap) : step;
19
- extTr.step(mapped);
20
- }
21
- return extTr;
22
- }
@@ -1,2 +0,0 @@
1
- import type { Transaction } from "@tiptap/pm/state";
2
- export declare function copyMeta(from: Transaction, to: Transaction): void;