@witchcraft/editor 0.0.5 → 0.0.7

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.mts +15 -2
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +67 -13
  4. package/dist/runtime/assets/base.css +1 -0
  5. package/dist/runtime/assets/handle-arrow.svg +16 -0
  6. package/dist/runtime/assets/handle-border-circles-single.svg +44 -0
  7. package/dist/runtime/assets/handle-border-circles.svg +27 -0
  8. package/dist/runtime/assets/handle-temp.svg +1 -0
  9. package/dist/runtime/assets/utils.css +1 -0
  10. package/dist/runtime/components/CodeBlockThemePicker.d.vue.ts +12 -0
  11. package/dist/runtime/components/CodeBlockThemePicker.vue +123 -0
  12. package/dist/runtime/components/CodeBlockThemePicker.vue.d.ts +12 -0
  13. package/dist/runtime/components/Commands.d.vue.ts +10 -0
  14. package/dist/runtime/components/Commands.vue +60 -0
  15. package/dist/runtime/components/Commands.vue.d.ts +10 -0
  16. package/dist/runtime/components/Editor.d.vue.ts +40 -0
  17. package/dist/runtime/components/Editor.vue +208 -0
  18. package/dist/runtime/components/Editor.vue.d.ts +40 -0
  19. package/dist/runtime/components/EditorDemoApp.d.vue.ts +2 -0
  20. package/dist/runtime/components/EditorDemoApp.vue +104 -0
  21. package/dist/runtime/components/EditorDemoApp.vue.d.ts +2 -0
  22. package/dist/runtime/components/EditorDemoControls.d.vue.ts +12 -0
  23. package/dist/runtime/components/EditorDemoControls.vue +36 -0
  24. package/dist/runtime/components/EditorDemoControls.vue.d.ts +12 -0
  25. package/dist/runtime/components/TestWrapper.d.vue.ts +11 -0
  26. package/dist/runtime/components/TestWrapper.vue +63 -0
  27. package/dist/runtime/components/TestWrapper.vue.d.ts +11 -0
  28. package/dist/runtime/composables/useEditor.d.ts +9 -0
  29. package/dist/runtime/composables/useEditor.js +21 -0
  30. package/dist/runtime/composables/useWindowDebugging.d.ts +3 -0
  31. package/dist/runtime/composables/useWindowDebugging.js +16 -0
  32. package/dist/runtime/demo/App.d.vue.ts +2 -0
  33. package/dist/runtime/demo/App.vue +101 -0
  34. package/dist/runtime/demo/App.vue.d.ts +2 -0
  35. package/dist/runtime/demo/README.md +1 -0
  36. package/dist/runtime/demo/main.d.ts +1 -0
  37. package/dist/runtime/demo/main.js +4 -0
  38. package/dist/runtime/demo/tailwind.css +1 -0
  39. package/dist/runtime/env.d.ts +2 -0
  40. package/dist/runtime/injectionKeys.d.ts +6 -0
  41. package/dist/runtime/injectionKeys.js +3 -0
  42. package/dist/runtime/main.lib.d.ts +2 -0
  43. package/dist/runtime/main.lib.js +2 -0
  44. package/dist/runtime/pm/commands/backspace.d.ts +12 -0
  45. package/dist/runtime/pm/commands/backspace.js +26 -0
  46. package/dist/runtime/pm/commands/changeAttrs.d.ts +9 -0
  47. package/dist/runtime/pm/commands/changeAttrs.js +15 -0
  48. package/dist/runtime/pm/commands/deleteSelection.d.ts +9 -0
  49. package/dist/runtime/pm/commands/deleteSelection.js +8 -0
  50. package/dist/runtime/pm/commands/enter.d.ts +14 -0
  51. package/dist/runtime/pm/commands/enter.js +9 -0
  52. package/dist/runtime/pm/commands/insertBreak.d.ts +9 -0
  53. package/dist/runtime/pm/commands/insertBreak.js +22 -0
  54. package/dist/runtime/pm/features/Base/Base.d.ts +4 -0
  55. package/dist/runtime/pm/features/Base/Base.js +32 -0
  56. package/dist/runtime/pm/features/Base/commands/deleteNodes.d.ts +10 -0
  57. package/dist/runtime/pm/features/Base/commands/deleteNodes.js +29 -0
  58. package/dist/runtime/pm/features/Base/commands/setCursorVisible.d.ts +12 -0
  59. package/dist/runtime/pm/features/Base/commands/setCursorVisible.js +7 -0
  60. package/dist/runtime/pm/features/Base/plugins/debugSelectionPlugin.d.ts +9 -0
  61. package/dist/runtime/pm/features/Base/plugins/debugSelectionPlugin.js +48 -0
  62. package/dist/runtime/pm/features/Base/plugins/isCursorVisiblePlugin.d.ts +3 -0
  63. package/dist/runtime/pm/features/Base/plugins/isCursorVisiblePlugin.js +26 -0
  64. package/dist/runtime/pm/features/Base/plugins/isUsingTouchPlugin.d.ts +3 -0
  65. package/dist/runtime/pm/features/Base/plugins/isUsingTouchPlugin.js +38 -0
  66. package/dist/runtime/pm/features/Base/plugins/selectingIndicator.d.ts +5 -0
  67. package/dist/runtime/pm/features/Base/plugins/selectingIndicator.js +35 -0
  68. package/dist/runtime/pm/features/Base/plugins/unfocusedSelectionIndicatorPlugin.d.ts +33 -0
  69. package/dist/runtime/pm/features/Base/plugins/unfocusedSelectionIndicatorPlugin.js +66 -0
  70. package/dist/runtime/pm/features/Base/types.d.ts +3 -0
  71. package/dist/runtime/pm/features/Base/types.js +0 -0
  72. package/dist/runtime/pm/features/BaseShortcuts/BaseShortcuts.d.ts +3 -0
  73. package/dist/runtime/pm/features/BaseShortcuts/BaseShortcuts.js +34 -0
  74. package/dist/runtime/pm/features/Blockquote/Blockquote.d.ts +5 -0
  75. package/dist/runtime/pm/features/Blockquote/Blockquote.js +65 -0
  76. package/dist/runtime/pm/features/Blockquote/commands/blockquoteEnter.d.ts +11 -0
  77. package/dist/runtime/pm/features/Blockquote/commands/blockquoteEnter.js +31 -0
  78. package/dist/runtime/pm/features/Blockquote/commands/blockquoteShiftEnter.d.ts +11 -0
  79. package/dist/runtime/pm/features/Blockquote/commands/blockquoteShiftEnter.js +12 -0
  80. package/dist/runtime/pm/features/Blocks/Blocks.d.ts +2 -0
  81. package/dist/runtime/pm/features/Blocks/Blocks.js +2 -0
  82. package/dist/runtime/pm/features/Blocks/Item.d.ts +11 -0
  83. package/dist/runtime/pm/features/Blocks/Item.js +157 -0
  84. package/dist/runtime/pm/features/Blocks/List.d.ts +4 -0
  85. package/dist/runtime/pm/features/Blocks/List.js +59 -0
  86. package/dist/runtime/pm/features/Blocks/commands/changeItemType.d.ts +20 -0
  87. package/dist/runtime/pm/features/Blocks/commands/changeItemType.js +40 -0
  88. package/dist/runtime/pm/features/Blocks/commands/changeTypeAttr.d.ts +14 -0
  89. package/dist/runtime/pm/features/Blocks/commands/changeTypeAttr.js +28 -0
  90. package/dist/runtime/pm/features/Blocks/commands/copyOrMoveItem.d.ts +23 -0
  91. package/dist/runtime/pm/features/Blocks/commands/copyOrMoveItem.js +124 -0
  92. package/dist/runtime/pm/features/Blocks/commands/deleteItem.d.ts +12 -0
  93. package/dist/runtime/pm/features/Blocks/commands/deleteItem.js +8 -0
  94. package/dist/runtime/pm/features/Blocks/commands/indentItem.d.ts +12 -0
  95. package/dist/runtime/pm/features/Blocks/commands/indentItem.js +58 -0
  96. package/dist/runtime/pm/features/Blocks/commands/itemMenuCommands.d.ts +18 -0
  97. package/dist/runtime/pm/features/Blocks/commands/itemMenuCommands.js +40 -0
  98. package/dist/runtime/pm/features/Blocks/commands/moveItem.d.ts +12 -0
  99. package/dist/runtime/pm/features/Blocks/commands/moveItem.js +80 -0
  100. package/dist/runtime/pm/features/Blocks/commands/setNode.d.ts +20 -0
  101. package/dist/runtime/pm/features/Blocks/commands/setNode.js +87 -0
  102. package/dist/runtime/pm/features/Blocks/commands/splitItem.d.ts +17 -0
  103. package/dist/runtime/pm/features/Blocks/commands/splitItem.js +87 -0
  104. package/dist/runtime/pm/features/Blocks/commands/unindentItem.d.ts +12 -0
  105. package/dist/runtime/pm/features/Blocks/commands/unindentItem.js +42 -0
  106. package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.d.vue.ts +0 -0
  107. package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.vue +129 -0
  108. package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.vue.d.ts +0 -0
  109. package/dist/runtime/pm/features/Blocks/components/ItemMenu.d.vue.ts +6 -0
  110. package/dist/runtime/pm/features/Blocks/components/ItemMenu.vue +78 -0
  111. package/dist/runtime/pm/features/Blocks/components/ItemMenu.vue.d.ts +6 -0
  112. package/dist/runtime/pm/features/Blocks/components/ItemNodeView.d.vue.ts +92 -0
  113. package/dist/runtime/pm/features/Blocks/components/ItemNodeView.vue +350 -0
  114. package/dist/runtime/pm/features/Blocks/components/ItemNodeView.vue.d.ts +92 -0
  115. package/dist/runtime/pm/features/Blocks/components/defaultItemMenu.d.ts +5 -0
  116. package/dist/runtime/pm/features/Blocks/components/defaultItemMenu.js +42 -0
  117. package/dist/runtime/pm/features/Blocks/composables/useDragWithThreshold.d.ts +1 -0
  118. package/dist/runtime/pm/features/Blocks/composables/useDragWithThreshold.js +0 -0
  119. package/dist/runtime/pm/features/Blocks/composables/useHandleHeight.d.ts +5 -0
  120. package/dist/runtime/pm/features/Blocks/composables/useHandleHeight.js +22 -0
  121. package/dist/runtime/pm/features/Blocks/composables/useHasChildren.d.ts +5 -0
  122. package/dist/runtime/pm/features/Blocks/composables/useHasChildren.js +10 -0
  123. package/dist/runtime/pm/features/Blocks/composables/useNodeStates.d.ts +7 -0
  124. package/dist/runtime/pm/features/Blocks/composables/useNodeStates.js +20 -0
  125. package/dist/runtime/pm/features/Blocks/itemMenuMenuItems.d.ts +20 -0
  126. package/dist/runtime/pm/features/Blocks/itemMenuMenuItems.js +138 -0
  127. package/dist/runtime/pm/features/Blocks/plugins/ensureLastItemIsContentPlugin.d.ts +11 -0
  128. package/dist/runtime/pm/features/Blocks/plugins/ensureLastItemIsContentPlugin.js +36 -0
  129. package/dist/runtime/pm/features/Blocks/plugins/itemBlockIdPlugin.d.ts +8 -0
  130. package/dist/runtime/pm/features/Blocks/plugins/itemBlockIdPlugin.js +30 -0
  131. package/dist/runtime/pm/features/Blocks/plugins/itemHasSingularSelectionPlugin.d.ts +3 -0
  132. package/dist/runtime/pm/features/Blocks/plugins/itemHasSingularSelectionPlugin.js +30 -0
  133. package/dist/runtime/pm/features/Blocks/plugins/itemMenuPlugin.d.ts +4 -0
  134. package/dist/runtime/pm/features/Blocks/plugins/itemMenuPlugin.js +17 -0
  135. package/dist/runtime/pm/features/Blocks/states/stateful.d.ts +2 -0
  136. package/dist/runtime/pm/features/Blocks/states/stateful.js +37 -0
  137. package/dist/runtime/pm/features/Blocks/states/task/cancelled.svg +32 -0
  138. package/dist/runtime/pm/features/Blocks/states/task/checked.svg +27 -0
  139. package/dist/runtime/pm/features/Blocks/states/task/checked2.svg +24 -0
  140. package/dist/runtime/pm/features/Blocks/states/task/partial.svg +24 -0
  141. package/dist/runtime/pm/features/Blocks/states/task/partial2.svg +31 -0
  142. package/dist/runtime/pm/features/Blocks/states/task/unchecked.svg +20 -0
  143. package/dist/runtime/pm/features/Blocks/types.d.ts +43 -0
  144. package/dist/runtime/pm/features/Blocks/types.js +2 -0
  145. package/dist/runtime/pm/features/Blocks/utils/createItemMenuCommandExecuter.d.ts +3 -0
  146. package/dist/runtime/pm/features/Blocks/utils/createItemMenuCommandExecuter.js +24 -0
  147. package/dist/runtime/pm/features/Blocks/utils/fixBlockIds.d.ts +4 -0
  148. package/dist/runtime/pm/features/Blocks/utils/fixBlockIds.js +23 -0
  149. package/dist/runtime/pm/features/Blocks/utils/isValidId.d.ts +2 -0
  150. package/dist/runtime/pm/features/Blocks/utils/isValidId.js +7 -0
  151. package/dist/runtime/pm/features/CodeBlock/CodeBlock.d.ts +16 -0
  152. package/dist/runtime/pm/features/CodeBlock/CodeBlock.js +91 -0
  153. package/dist/runtime/pm/features/CodeBlock/build/generateHighlightJsInfo.d.ts +1 -0
  154. package/dist/runtime/pm/features/CodeBlock/build/generateHighlightJsInfo.js +63 -0
  155. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockEnterOrSplit.d.ts +9 -0
  156. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockEnterOrSplit.js +28 -0
  157. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockIndent.d.ts +9 -0
  158. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockIndent.js +39 -0
  159. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockUnindent.d.ts +9 -0
  160. package/dist/runtime/pm/features/CodeBlock/commands/codeBlockUnindent.js +50 -0
  161. package/dist/runtime/pm/features/CodeBlock/commands/focusCodeBlockLanguage.d.ts +9 -0
  162. package/dist/runtime/pm/features/CodeBlock/commands/focusCodeBlockLanguage.js +27 -0
  163. package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.d.vue.ts +92 -0
  164. package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.vue +112 -0
  165. package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.vue.d.ts +92 -0
  166. package/dist/runtime/pm/features/CodeBlock/composables/useAsyncCodeBlockHighlighting.d.ts +28 -0
  167. package/dist/runtime/pm/features/CodeBlock/composables/useAsyncCodeBlockHighlighting.js +137 -0
  168. package/dist/runtime/pm/features/CodeBlock/composables/useHighlightJsTheme.d.ts +37 -0
  169. package/dist/runtime/pm/features/CodeBlock/composables/useHighlightJsTheme.js +101 -0
  170. package/dist/runtime/pm/features/CodeBlock/highlightJsInfo.d.ts +17 -0
  171. package/dist/runtime/pm/features/CodeBlock/highlightJsInfo.js +711 -0
  172. package/dist/runtime/pm/features/CodeBlock/types.d.ts +4 -0
  173. package/dist/runtime/pm/features/CodeBlock/types.js +2 -0
  174. package/dist/runtime/pm/features/Collaboration/Collaboration.d.ts +66 -0
  175. package/dist/runtime/pm/features/Collaboration/Collaboration.js +169 -0
  176. package/dist/runtime/pm/features/CommandsMenus/CommandBar.d.ts +19 -0
  177. package/dist/runtime/pm/features/CommandsMenus/CommandBar.js +97 -0
  178. package/dist/runtime/pm/features/CommandsMenus/commandBarMenuItems.d.ts +20 -0
  179. package/dist/runtime/pm/features/CommandsMenus/commandBarMenuItems.js +188 -0
  180. package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.d.vue.ts +8 -0
  181. package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.vue +58 -0
  182. package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.vue.d.ts +8 -0
  183. package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.d.vue.ts +12 -0
  184. package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.vue +42 -0
  185. package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.vue.d.ts +12 -0
  186. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.d.vue.ts +10 -0
  187. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.vue +55 -0
  188. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.vue.d.ts +10 -0
  189. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.d.vue.ts +11 -0
  190. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.vue +58 -0
  191. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.vue.d.ts +11 -0
  192. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.d.vue.ts +11 -0
  193. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.vue +54 -0
  194. package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.vue.d.ts +11 -0
  195. package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.d.vue.ts +5 -0
  196. package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.vue +13 -0
  197. package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.vue.d.ts +5 -0
  198. package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.d.vue.ts +8 -0
  199. package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.vue +45 -0
  200. package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.vue.d.ts +8 -0
  201. package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.d.vue.ts +2 -0
  202. package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.vue +5 -0
  203. package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.vue.d.ts +2 -0
  204. package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.d.vue.ts +2 -0
  205. package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.vue +5 -0
  206. package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.vue.d.ts +2 -0
  207. package/dist/runtime/pm/features/CommandsMenus/types.d.ts +61 -0
  208. package/dist/runtime/pm/features/CommandsMenus/types.js +5 -0
  209. package/dist/runtime/pm/features/CommandsMenus/utils/defaultCommandExecutor.d.ts +3 -0
  210. package/dist/runtime/pm/features/CommandsMenus/utils/defaultCommandExecutor.js +11 -0
  211. package/dist/runtime/pm/features/CommandsMenus/utils/findCommand.d.ts +10 -0
  212. package/dist/runtime/pm/features/CommandsMenus/utils/findCommand.js +16 -0
  213. package/dist/runtime/pm/features/CommandsMenus/utils/popupPositionModifier.d.ts +5 -0
  214. package/dist/runtime/pm/features/CommandsMenus/utils/popupPositionModifier.js +9 -0
  215. package/dist/runtime/pm/features/CommandsMenus/utils/popupVerticalPositioner.d.ts +5 -0
  216. package/dist/runtime/pm/features/CommandsMenus/utils/popupVerticalPositioner.js +11 -0
  217. package/dist/runtime/pm/features/Document/Document.d.ts +3 -0
  218. package/dist/runtime/pm/features/Document/Document.js +6 -0
  219. package/dist/runtime/pm/features/DocumentApi/DocumentApi.d.ts +86 -0
  220. package/dist/runtime/pm/features/DocumentApi/DocumentApi.js +170 -0
  221. package/dist/runtime/pm/features/DocumentApi/composables/useEditorContent.d.ts +13 -0
  222. package/dist/runtime/pm/features/DocumentApi/composables/useEditorContent.js +76 -0
  223. package/dist/runtime/pm/features/DocumentApi/composables/useTestDocumentApi.d.ts +23 -0
  224. package/dist/runtime/pm/features/DocumentApi/composables/useTestDocumentApi.js +70 -0
  225. package/dist/runtime/pm/features/DocumentApi/types.d.ts +133 -0
  226. package/dist/runtime/pm/features/DocumentApi/types.js +1 -0
  227. package/dist/runtime/pm/features/DocumentApi/utils/convertFullTransactionForPartialState.d.ts +3 -0
  228. package/dist/runtime/pm/features/DocumentApi/utils/convertFullTransactionForPartialState.js +37 -0
  229. package/dist/runtime/pm/features/DocumentApi/utils/convertTrForInstance.d.ts +4 -0
  230. package/dist/runtime/pm/features/DocumentApi/utils/convertTrForInstance.js +13 -0
  231. package/dist/runtime/pm/features/DocumentApi/utils/convertTransactionForFullState.d.ts +2 -0
  232. package/dist/runtime/pm/features/DocumentApi/utils/convertTransactionForFullState.js +22 -0
  233. package/dist/runtime/pm/features/DocumentApi/utils/copyMeta.d.ts +2 -0
  234. package/dist/runtime/pm/features/DocumentApi/utils/copyMeta.js +6 -0
  235. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedJson.d.ts +1 -0
  236. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedJson.js +14 -0
  237. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedNodeFromDoc.d.ts +1 -0
  238. package/dist/runtime/pm/features/DocumentApi/utils/getEmbedNodeFromDoc.js +14 -0
  239. package/dist/runtime/pm/features/DocumentApi/utils/getStateEmbedRange.d.ts +9 -0
  240. package/dist/runtime/pm/features/DocumentApi/utils/getStateEmbedRange.js +19 -0
  241. package/dist/runtime/pm/features/DocumentApi/utils/isEmbedId.d.ts +2 -0
  242. package/dist/runtime/pm/features/DocumentApi/utils/isEmbedId.js +3 -0
  243. package/dist/runtime/pm/features/EmbeddedDocument/Embedded.d.ts +24 -0
  244. package/dist/runtime/pm/features/EmbeddedDocument/Embedded.js +73 -0
  245. package/dist/runtime/pm/features/EmbeddedDocument/EmbeddedDocument.d.ts +23 -0
  246. package/dist/runtime/pm/features/EmbeddedDocument/EmbeddedDocument.js +70 -0
  247. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.d.vue.ts +14 -0
  248. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.vue +169 -0
  249. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.vue.d.ts +14 -0
  250. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.d.vue.ts +92 -0
  251. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.vue +170 -0
  252. package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.vue.d.ts +92 -0
  253. package/dist/runtime/pm/features/EmbeddedDocument/composables/useEmbeddedEditor.d.ts +31 -0
  254. package/dist/runtime/pm/features/EmbeddedDocument/composables/useEmbeddedEditor.js +199 -0
  255. package/dist/runtime/pm/features/EmbeddedDocument/types.d.ts +49 -0
  256. package/dist/runtime/pm/features/EmbeddedDocument/types.js +6 -0
  257. package/dist/runtime/pm/features/EmbeddedDocument/utils/isEmbeddedBlock.d.ts +9 -0
  258. package/dist/runtime/pm/features/EmbeddedDocument/utils/isEmbeddedBlock.js +3 -0
  259. package/dist/runtime/pm/features/EmbeddedDocument/utils/redirectFromEmbedded.d.ts +28 -0
  260. package/dist/runtime/pm/features/EmbeddedDocument/utils/redirectFromEmbedded.js +17 -0
  261. package/dist/runtime/pm/features/FileLoader/FileLoader.d.ts +16 -0
  262. package/dist/runtime/pm/features/FileLoader/FileLoader.js +99 -0
  263. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/FileLoaderHandler.d.ts +28 -0
  264. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/FileLoaderHandler.js +69 -0
  265. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/TestFileLoaderHandler.d.ts +11 -0
  266. package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/TestFileLoaderHandler.js +49 -0
  267. package/dist/runtime/pm/features/FileLoader/commands/insertFile.d.ts +17 -0
  268. package/dist/runtime/pm/features/FileLoader/commands/insertFile.js +39 -0
  269. package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.d.vue.ts +92 -0
  270. package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.vue +38 -0
  271. package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.vue.d.ts +92 -0
  272. package/dist/runtime/pm/features/FileLoader/plugins/fileLoaderPlugin.d.ts +5 -0
  273. package/dist/runtime/pm/features/FileLoader/plugins/fileLoaderPlugin.js +61 -0
  274. package/dist/runtime/pm/features/FileLoader/types.d.ts +73 -0
  275. package/dist/runtime/pm/features/FileLoader/types.js +0 -0
  276. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNode.d.ts +4 -0
  277. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNode.js +27 -0
  278. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNodes.d.ts +9 -0
  279. package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNodes.js +22 -0
  280. package/dist/runtime/pm/features/FileLoader/utils/findLoadingNodePos.d.ts +2 -0
  281. package/dist/runtime/pm/features/FileLoader/utils/findLoadingNodePos.js +11 -0
  282. package/dist/runtime/pm/features/FileLoader/utils/optionsCheck.d.ts +3 -0
  283. package/dist/runtime/pm/features/FileLoader/utils/optionsCheck.js +8 -0
  284. package/dist/runtime/pm/features/FileLoader/utils/readAsDataUrl.d.ts +1 -0
  285. package/dist/runtime/pm/features/FileLoader/utils/readAsDataUrl.js +12 -0
  286. package/dist/runtime/pm/features/HardBreak/HardBreak.d.ts +5 -0
  287. package/dist/runtime/pm/features/HardBreak/HardBreak.js +14 -0
  288. package/dist/runtime/pm/features/Heading/Heading.d.ts +24 -0
  289. package/dist/runtime/pm/features/Heading/Heading.js +85 -0
  290. package/dist/runtime/pm/features/Heading/commands/changeLevelAttr.d.ts +16 -0
  291. package/dist/runtime/pm/features/Heading/commands/changeLevelAttr.js +33 -0
  292. package/dist/runtime/pm/features/Heading/types.d.ts +14 -0
  293. package/dist/runtime/pm/features/Heading/types.js +0 -0
  294. package/dist/runtime/pm/features/Highlight/Highlight.d.ts +72 -0
  295. package/dist/runtime/pm/features/Highlight/Highlight.js +163 -0
  296. package/dist/runtime/pm/features/Highlight/retyped/tiptapHighlight.d.ts +3 -0
  297. package/dist/runtime/pm/features/Highlight/retyped/tiptapHighlight.js +5 -0
  298. package/dist/runtime/pm/features/Highlight/types.d.ts +27 -0
  299. package/dist/runtime/pm/features/Highlight/types.js +2 -0
  300. package/dist/runtime/pm/features/History/History.d.ts +35 -0
  301. package/dist/runtime/pm/features/History/History.js +63 -0
  302. package/dist/runtime/pm/features/Iframe/Iframe.d.ts +21 -0
  303. package/dist/runtime/pm/features/Iframe/Iframe.js +127 -0
  304. package/dist/runtime/pm/features/Iframe/IframeParsers.d.ts +37 -0
  305. package/dist/runtime/pm/features/Iframe/IframeParsers.js +88 -0
  306. package/dist/runtime/pm/features/Iframe/components/IframeNodeView.d.vue.ts +92 -0
  307. package/dist/runtime/pm/features/Iframe/components/IframeNodeView.vue +79 -0
  308. package/dist/runtime/pm/features/Iframe/components/IframeNodeView.vue.d.ts +92 -0
  309. package/dist/runtime/pm/features/Iframe/types.d.ts +5 -0
  310. package/dist/runtime/pm/features/Iframe/types.js +0 -0
  311. package/dist/runtime/pm/features/Image/Image.d.ts +2 -0
  312. package/dist/runtime/pm/features/Image/Image.js +13 -0
  313. package/dist/runtime/pm/features/Link/Link.d.ts +38 -0
  314. package/dist/runtime/pm/features/Link/Link.js +241 -0
  315. package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.d.vue.ts +28 -0
  316. package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.vue +113 -0
  317. package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.vue.d.ts +28 -0
  318. package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.d.vue.ts +29 -0
  319. package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.vue +104 -0
  320. package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.vue.d.ts +29 -0
  321. package/dist/runtime/pm/features/Link/components/BubbleMenuLink.d.vue.ts +11 -0
  322. package/dist/runtime/pm/features/Link/components/BubbleMenuLink.vue +126 -0
  323. package/dist/runtime/pm/features/Link/components/BubbleMenuLink.vue.d.ts +11 -0
  324. package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.d.vue.ts +18 -0
  325. package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.vue +54 -0
  326. package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.vue.d.ts +18 -0
  327. package/dist/runtime/pm/features/Link/types.d.ts +44 -0
  328. package/dist/runtime/pm/features/Link/types.js +3 -0
  329. package/dist/runtime/pm/features/Menus/Menus.d.ts +45 -0
  330. package/dist/runtime/pm/features/Menus/Menus.js +142 -0
  331. package/dist/runtime/pm/features/Menus/components/MarkMenuManager.d.vue.ts +6 -0
  332. package/dist/runtime/pm/features/Menus/components/MarkMenuManager.vue +165 -0
  333. package/dist/runtime/pm/features/Menus/components/MarkMenuManager.vue.d.ts +6 -0
  334. package/dist/runtime/pm/features/Menus/types.d.ts +51 -0
  335. package/dist/runtime/pm/features/Menus/types.js +3 -0
  336. package/dist/runtime/pm/features/Menus/utils/isMarkMenu.d.ts +2 -0
  337. package/dist/runtime/pm/features/Menus/utils/isMarkMenu.js +3 -0
  338. package/dist/runtime/pm/features/Tables/commands/tableEnter.d.ts +15 -0
  339. package/dist/runtime/pm/features/Tables/commands/tableEnter.js +19 -0
  340. package/dist/runtime/pm/features/Tables/index.d.ts +9 -0
  341. package/dist/runtime/pm/features/Tables/index.js +44 -0
  342. package/dist/runtime/pm/generator.d.ts +82 -0
  343. package/dist/runtime/pm/generator.js +205 -0
  344. package/dist/runtime/pm/schema.d.ts +4 -0
  345. package/dist/runtime/pm/schema.js +80 -0
  346. package/dist/runtime/pm/testSchema.d.ts +5 -0
  347. package/dist/runtime/pm/testSchema.js +30 -0
  348. package/dist/runtime/pm/utils/createDropIndicator.d.ts +23 -0
  349. package/dist/runtime/pm/utils/createDropIndicator.js +36 -0
  350. package/dist/runtime/pm/utils/createStateOnlyPluginApply.d.ts +2 -0
  351. package/dist/runtime/pm/utils/createStateOnlyPluginApply.js +9 -0
  352. package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.d.ts +2 -0
  353. package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.js +14 -0
  354. package/dist/runtime/pm/utils/dropPointInfo.d.ts +56 -0
  355. package/dist/runtime/pm/utils/dropPointInfo.js +28 -0
  356. package/dist/runtime/pm/utils/findUpwards.d.ts +20 -0
  357. package/dist/runtime/pm/utils/findUpwards.js +18 -0
  358. package/dist/runtime/pm/utils/generateRandomDoc.d.ts +23 -0
  359. package/dist/runtime/pm/utils/generateRandomDoc.js +83 -0
  360. package/dist/runtime/pm/utils/generateRandomTree.d.ts +50 -0
  361. package/dist/runtime/pm/utils/generateRandomTree.js +38 -0
  362. package/dist/runtime/pm/utils/getChildChunks.d.ts +3 -0
  363. package/dist/runtime/pm/utils/getChildChunks.js +15 -0
  364. package/dist/runtime/pm/utils/getDiffReplacementRange.d.ts +20 -0
  365. package/dist/runtime/pm/utils/getDiffReplacementRange.js +9 -0
  366. package/dist/runtime/pm/utils/getElMaxVisualSize.d.ts +9 -0
  367. package/dist/runtime/pm/utils/getElMaxVisualSize.js +7 -0
  368. package/dist/runtime/pm/utils/getElPropertyAsInt.d.ts +4 -0
  369. package/dist/runtime/pm/utils/getElPropertyAsInt.js +8 -0
  370. package/dist/runtime/pm/utils/getGroupNodeNames.d.ts +2 -0
  371. package/dist/runtime/pm/utils/getGroupNodeNames.js +7 -0
  372. package/dist/runtime/pm/utils/getMarkPosition.d.ts +11 -0
  373. package/dist/runtime/pm/utils/getMarkPosition.js +34 -0
  374. package/dist/runtime/pm/utils/getMarksInSelection.d.ts +3 -0
  375. package/dist/runtime/pm/utils/getMarksInSelection.js +16 -0
  376. package/dist/runtime/pm/utils/getTypeByName.d.ts +2 -0
  377. package/dist/runtime/pm/utils/getTypeByName.js +5 -0
  378. package/dist/runtime/pm/utils/index.d.ts +15 -0
  379. package/dist/runtime/pm/utils/index.js +15 -0
  380. package/dist/runtime/pm/utils/internal/createNodeTypesList.d.ts +2 -0
  381. package/dist/runtime/pm/utils/internal/createNodeTypesList.js +17 -0
  382. package/dist/runtime/pm/utils/internal/debugMap.d.ts +7 -0
  383. package/dist/runtime/pm/utils/internal/debugMap.js +24 -0
  384. package/dist/runtime/pm/utils/internal/debugNode.d.ts +2 -0
  385. package/dist/runtime/pm/utils/internal/debugNode.js +18 -0
  386. package/dist/runtime/pm/utils/internal/debugSel.d.ts +5 -0
  387. package/dist/runtime/pm/utils/internal/debugSel.js +8 -0
  388. package/dist/runtime/pm/utils/internal/recurse.d.ts +2 -0
  389. package/dist/runtime/pm/utils/internal/recurse.js +39 -0
  390. package/dist/runtime/pm/utils/internal/stripBlockId.d.ts +2 -0
  391. package/dist/runtime/pm/utils/internal/stripBlockId.js +9 -0
  392. package/dist/runtime/pm/utils/mapSelection.d.ts +8 -0
  393. package/dist/runtime/pm/utils/mapSelection.js +12 -0
  394. package/dist/runtime/pm/utils/nodesBetween.d.ts +21 -0
  395. package/dist/runtime/pm/utils/nodesBetween.js +21 -0
  396. package/dist/runtime/pm/utils/pointToPmPoint.d.ts +2 -0
  397. package/dist/runtime/pm/utils/pointToPmPoint.js +3 -0
  398. package/dist/runtime/pm/utils/splitIntoChunks.d.ts +32 -0
  399. package/dist/runtime/pm/utils/splitIntoChunks.js +31 -0
  400. package/dist/runtime/testDocuments.d.ts +53 -0
  401. package/dist/runtime/testDocuments.js +122 -0
  402. package/dist/runtime/types/index.d.ts +53 -0
  403. package/dist/runtime/types/index.js +9 -0
  404. package/dist/types.d.mts +2 -12
  405. package/package.json +11 -9
  406. package/src/runtime/pm/commands/changeAttrs.ts +1 -1
  407. package/src/runtime/pm/features/Blocks/Item.ts +1 -1
  408. package/src/runtime/pm/features/Blocks/commands/moveItem.ts +1 -1
  409. package/src/runtime/pm/features/Blocks/components/DragTreeHandle.vue +14 -9
  410. package/src/runtime/pm/features/EmbeddedDocument/Embedded.ts +1 -1
  411. package/src/runtime/pm/features/FileLoader/types.ts +2 -2
  412. package/src/runtime/pm/generator.ts +266 -0
  413. package/src/runtime/pm/schema.ts +1 -0
  414. package/src/runtime/pm/utils/generateRandomDoc.ts +140 -0
  415. package/src/runtime/pm/utils/generateRandomTree.ts +100 -0
  416. package/dist/module.d.cts +0 -2
@@ -0,0 +1,66 @@
1
+ import { Extension } from "@tiptap/core";
2
+ import { ySyncPlugin, yUndoPlugin } from "y-prosemirror";
3
+ import * as Y from "yjs";
4
+ type YSyncOpts = Parameters<typeof ySyncPlugin>[1];
5
+ type YUndoOpts = Parameters<typeof yUndoPlugin>[0];
6
+ declare module "@tiptap/core" {
7
+ interface Commands<ReturnType> {
8
+ collaboration: {
9
+ /** Sets the fragment to use for the collaboration extension. */
10
+ setFragment: (fragment: Y.XmlFragment | undefined, options?: {
11
+ register?: boolean;
12
+ unregister?: boolean;
13
+ }) => ReturnType;
14
+ /** Enables or disables collaboration. */
15
+ enableCollaboration: (enable: boolean) => ReturnType;
16
+ /**
17
+ * Undo recent changes
18
+ *
19
+ * @example editor.commands.undo()
20
+ */
21
+ undo: () => ReturnType;
22
+ /**
23
+ * Reapply reverted changes
24
+ *
25
+ * @example editor.commands.redo()
26
+ */
27
+ redo: () => ReturnType;
28
+ };
29
+ }
30
+ }
31
+ export interface CollaborationStorage {
32
+ /**
33
+ * Whether collaboration is currently disabled.
34
+ * Disabling collaboration will prevent any changes from being synced with other users.
35
+ */
36
+ isDisabled: boolean;
37
+ }
38
+ export interface CollaborationOptions {
39
+ /**
40
+ * A raw Y.js fragment, can be used instead of `document` and `field`.
41
+ *
42
+ * @example new Y.Doc().getXmlFragment('body')
43
+ */
44
+ fragment?: Y.XmlFragment | null;
45
+ /**
46
+ * Fired when the content from Yjs is initially rendered to Tiptap.
47
+ */
48
+ onFirstRender?: () => void;
49
+ /**
50
+ * Options for the Yjs sync plugin.
51
+ */
52
+ ySyncOptions?: YSyncOpts;
53
+ /**
54
+ * Options for the Yjs undo plugin.
55
+ */
56
+ yUndoOptions?: YUndoOpts;
57
+ /** @internal */
58
+ _destroySyncPlugin?: () => void;
59
+ }
60
+ /**
61
+ * This extension allows you to collaborate with others in real-time.
62
+ *
63
+ * @see https://tiptap.dev/api/extensions/collaboration
64
+ */
65
+ export declare const Collaboration: Extension<CollaborationOptions, CollaborationStorage>;
66
+ export {};
@@ -0,0 +1,169 @@
1
+ import { Extension } from "@tiptap/core";
2
+ import { Plugin, PluginKey } from "@tiptap/pm/state";
3
+ import {
4
+ redo,
5
+ undo,
6
+ ySyncPlugin,
7
+ yUndoPlugin,
8
+ yUndoPluginKey,
9
+ yXmlFragmentToProseMirrorRootNode
10
+ } from "y-prosemirror";
11
+ import * as Y from "yjs";
12
+ const ySyncFilterPluginKey = new PluginKey("ySyncFilter");
13
+ function createUndoPlugin(self) {
14
+ const yUndoPluginInstance = yUndoPlugin(self.options.yUndoOptions);
15
+ const originalUndoPluginView = yUndoPluginInstance.spec.view;
16
+ yUndoPluginInstance.spec.view = (view) => {
17
+ const { undoManager } = yUndoPluginKey.getState(view.state);
18
+ if (undoManager.restore) {
19
+ undoManager.restore();
20
+ undoManager.restore = () => {
21
+ };
22
+ }
23
+ const viewRet = originalUndoPluginView ? originalUndoPluginView(view) : void 0;
24
+ return {
25
+ destroy: () => {
26
+ const hasUndoManSelf = undoManager.trackedOrigins.has(undoManager);
27
+ const observers = undoManager._observers;
28
+ undoManager.restore = () => {
29
+ if (hasUndoManSelf) {
30
+ undoManager.trackedOrigins.add(undoManager);
31
+ }
32
+ undoManager.doc.on("afterTransaction", undoManager.afterTransactionHandler);
33
+ undoManager._observers = observers;
34
+ };
35
+ if (viewRet?.destroy) {
36
+ viewRet.destroy();
37
+ }
38
+ }
39
+ };
40
+ };
41
+ return yUndoPluginInstance;
42
+ }
43
+ function createSyncPlugin(self) {
44
+ const fragment = self.options.fragment;
45
+ if (!fragment) {
46
+ throw new Error("Collaboration requires a fragment.");
47
+ }
48
+ const plugin = ySyncPlugin(fragment, {
49
+ ...self.options.ySyncOptions,
50
+ onFirstRender: self.options.onFirstRender
51
+ });
52
+ let off;
53
+ function destroy() {
54
+ off?.();
55
+ }
56
+ if (self.editor.options.enableContentCheck) {
57
+ const onBeforeTransaction = () => {
58
+ try {
59
+ yXmlFragmentToProseMirrorRootNode(fragment, self.editor.schema).check();
60
+ } catch (error) {
61
+ self.editor.emit("contentError", {
62
+ error,
63
+ editor: self.editor,
64
+ disableCollaboration: () => {
65
+ fragment.doc?.destroy();
66
+ self.storage.isDisabled = true;
67
+ }
68
+ });
69
+ return false;
70
+ }
71
+ return void 0;
72
+ };
73
+ fragment.doc?.on("beforeTransaction", onBeforeTransaction);
74
+ off = () => {
75
+ fragment.doc?.off("beforeTransaction", onBeforeTransaction);
76
+ };
77
+ }
78
+ return { plugin, destroy };
79
+ }
80
+ function createSyncFilterPlugin(self) {
81
+ if (!self.editor.options.enableContentCheck) return;
82
+ const fragment = self.options.fragment;
83
+ if (!fragment) {
84
+ throw new Error("Collaboration requires a fragment.");
85
+ }
86
+ return new Plugin({
87
+ key: ySyncFilterPluginKey,
88
+ filterTransaction: () => {
89
+ if (self.storage.isDisabled) {
90
+ fragment.doc?.destroy();
91
+ return true;
92
+ }
93
+ return true;
94
+ }
95
+ });
96
+ }
97
+ function createPlugins(self) {
98
+ const { plugin: syncPlugin, destroy: destroySyncPlugin } = createSyncPlugin(self);
99
+ self.options._destroySyncPlugin = destroySyncPlugin;
100
+ const filterPlugin = createSyncFilterPlugin(self);
101
+ const plugins = [
102
+ syncPlugin,
103
+ createUndoPlugin(self)
104
+ ];
105
+ if (filterPlugin) {
106
+ plugins.push(filterPlugin);
107
+ }
108
+ return plugins;
109
+ }
110
+ export const Collaboration = Extension.create({
111
+ name: "collaboration",
112
+ priority: 1e3,
113
+ addOptions() {
114
+ return {
115
+ document: null,
116
+ field: "default",
117
+ fragment: new Y.Doc().getXmlFragment("prosemirror")
118
+ };
119
+ },
120
+ addStorage() {
121
+ return {
122
+ isDisabled: false
123
+ };
124
+ },
125
+ onCreate() {
126
+ if (this.editor.extensionManager.extensions.find((extension) => extension.name === "history")) {
127
+ console.warn(
128
+ '[tiptap warn]: "@tiptap/extension-collaboration" comes with its own history support and is not compatible with "@tiptap/extension-history".'
129
+ );
130
+ }
131
+ },
132
+ addCommands() {
133
+ return {
134
+ enableCollaboration: (enable) => () => {
135
+ this.storage.isDisabled = !enable;
136
+ return true;
137
+ },
138
+ undo: () => ({ tr, state, dispatch }) => {
139
+ tr.setMeta("preventDispatch", true);
140
+ const undoManager = yUndoPluginKey.getState(state).undoManager;
141
+ if (undoManager.undoStack.length === 0) {
142
+ return false;
143
+ }
144
+ if (!dispatch) {
145
+ return true;
146
+ }
147
+ return undo(state);
148
+ },
149
+ redo: () => ({ tr, state, dispatch }) => {
150
+ tr.setMeta("preventDispatch", true);
151
+ const undoManager = yUndoPluginKey.getState(state).undoManager;
152
+ if (undoManager.redoStack.length === 0) {
153
+ return false;
154
+ }
155
+ if (!dispatch) {
156
+ return true;
157
+ }
158
+ return redo(state);
159
+ }
160
+ };
161
+ },
162
+ onDestroy() {
163
+ this.options._destroySyncPlugin?.();
164
+ },
165
+ addProseMirrorPlugins() {
166
+ const self = this;
167
+ return createPlugins(self);
168
+ }
169
+ });
@@ -0,0 +1,19 @@
1
+ import { Extension } from "@tiptap/core";
2
+ import { type CommandBarExtensionOptions } from "./types.js";
3
+ declare module "@tiptap/core" {
4
+ interface Commands<ReturnType> {
5
+ commandBar: {
6
+ /**
7
+ * Enables the commandBar.
8
+ */
9
+ enableCommandBar: () => ReturnType;
10
+ /**
11
+ * Closes the commandBar.
12
+ *
13
+ * The commandBar has no close command, it can only be enabled or disabled.
14
+ */
15
+ disableCommandBar: () => ReturnType;
16
+ };
17
+ }
18
+ }
19
+ export declare const CommandBar: Extension<CommandBarExtensionOptions, any>;
@@ -0,0 +1,97 @@
1
+ import { Extension } from "@tiptap/core";
2
+ import { NodeSelection, Plugin } from "@tiptap/pm/state";
3
+ import { defaultCommandBarMenuItems } from "./commandBarMenuItems.js";
4
+ import { commandBarMenuPluginKey } from "./types.js";
5
+ import { findCommand } from "./utils/findCommand.js";
6
+ import { createStateOnlyPluginObjApply } from "../../utils/createStateOnlyPluginObjApply.js";
7
+ export const CommandBar = Extension.create({
8
+ name: "commandBar",
9
+ addOptions() {
10
+ return {
11
+ commandBar: defaultCommandBarMenuItems
12
+ };
13
+ },
14
+ addCommands() {
15
+ return {
16
+ enableCommandBar: () => ({ tr, dispatch }) => {
17
+ if (dispatch) {
18
+ this.options.commandBar.enabled = true;
19
+ tr.setMeta(commandBarMenuPluginKey, { canOpen: true });
20
+ tr.setMeta("addToHistory", false);
21
+ }
22
+ return true;
23
+ },
24
+ disableCommandBar: () => ({ tr, dispatch }) => {
25
+ if (dispatch) {
26
+ this.options.commandBar.enabled = false;
27
+ tr.setMeta(commandBarMenuPluginKey, { canOpen: false });
28
+ tr.setMeta("addToHistory", false);
29
+ }
30
+ return true;
31
+ }
32
+ };
33
+ },
34
+ onCreate() {
35
+ if ("registerMenu" in this.editor.commands) {
36
+ this.editor.commands.registerMenu({
37
+ type: "mark",
38
+ closeCommand: void 0,
39
+ name: "commandBar",
40
+ pluginKey: commandBarMenuPluginKey,
41
+ canShow: (_state, pluginState) => !!pluginState?.state && !!pluginState?.canOpen
42
+ });
43
+ }
44
+ },
45
+ addProseMirrorPlugins() {
46
+ const self = this;
47
+ return [
48
+ new Plugin({
49
+ key: commandBarMenuPluginKey,
50
+ state: {
51
+ init() {
52
+ return {
53
+ state: true,
54
+ canOpen: self.options.commandBar.enabled && (document.activeElement === self.editor.view.dom || self.editor.view.dom.contains(document.activeElement))
55
+ };
56
+ },
57
+ apply: createStateOnlyPluginObjApply(commandBarMenuPluginKey)
58
+ },
59
+ props: {
60
+ handleDOMEvents: {
61
+ blur() {
62
+ self.editor.commands.command(({ tr }) => {
63
+ tr.setMeta("addToHistory", false);
64
+ tr.setMeta(commandBarMenuPluginKey, { canOpen: false });
65
+ return true;
66
+ });
67
+ },
68
+ focus() {
69
+ self.editor.commands.command(({ tr }) => {
70
+ tr.setMeta("addToHistory", false);
71
+ tr.setMeta(commandBarMenuPluginKey, { canOpen: true });
72
+ return true;
73
+ });
74
+ }
75
+ }
76
+ },
77
+ appendTransaction(_trs, oldState, newState) {
78
+ const wasOpened = commandBarMenuPluginKey.getState(oldState)?.state ?? false;
79
+ const selection = newState.selection;
80
+ const isNodeSelection = selection instanceof NodeSelection;
81
+ if (!wasOpened && isNodeSelection) return void 0;
82
+ const tr = newState.tr;
83
+ const commandBarCanShow = self.options.commandBar.options?.onlyOpenOnSelection === true ? !selection.empty : true;
84
+ const canShow = findCommand(self.options.commandBar.commands, (command) => {
85
+ const res = command.canShow?.(newState);
86
+ if (res === true || res === void 0) return true;
87
+ return false;
88
+ });
89
+ tr.setMeta(commandBarMenuPluginKey, {
90
+ state: !isNodeSelection && commandBarCanShow && canShow
91
+ });
92
+ return tr;
93
+ }
94
+ })
95
+ ];
96
+ }
97
+ });
@@ -0,0 +1,20 @@
1
+ import type { EditorState } from "@tiptap/pm/state";
2
+ import type { CommandBarCommand, CommandBarMenu } from "./types.js";
3
+ export declare const toggleBoldCommand: CommandBarCommand;
4
+ export declare const toggleItalicCommand: CommandBarCommand;
5
+ export declare const toggleStrikeCommand: CommandBarCommand;
6
+ export declare const toggleUnderlineCommand: CommandBarCommand;
7
+ export declare const toggleCodeCommand: CommandBarCommand;
8
+ export declare const toggleSubscriptCommand: CommandBarCommand;
9
+ export declare const toggleSuperscriptCommand: CommandBarCommand;
10
+ export declare const tableCanShow: (state: EditorState) => boolean;
11
+ export declare const tableAddColBeforeCommand: CommandBarCommand;
12
+ export declare const tableAddColAfterCommand: CommandBarCommand;
13
+ export declare const tableAddRowBeforeCommand: CommandBarCommand;
14
+ export declare const tableAddRowAfterCommand: CommandBarCommand;
15
+ export declare const tableDeleteRowCommand: CommandBarCommand;
16
+ export declare const tableDeleteColCommand: CommandBarCommand;
17
+ export declare function createToggleHighlightCommand(slotCount: number, prefix?: string): CommandBarCommand[];
18
+ export declare const toggleHighlightsCommands: CommandBarCommand[];
19
+ export declare const unsetHighlightCommand: CommandBarCommand;
20
+ export declare const defaultCommandBarMenuItems: CommandBarMenu;
@@ -0,0 +1,188 @@
1
+ import TextIcon from "./components/TextIcon.vue";
2
+ import HighlightIcon from "./icons/HighlightIcon.vue";
3
+ import SubscriptIcon from "./icons/SubscriptIcon.vue";
4
+ import SuperscriptIcon from "./icons/SuperscriptIcon.vue";
5
+ import DashIconsTableColAfter from "~icons/dashicons/table-col-after";
6
+ import DashIconsTableColBefore from "~icons/dashicons/table-col-before";
7
+ import DashIconsTableColDelete from "~icons/dashicons/table-col-delete";
8
+ import DashIconsTableRowAfter from "~icons/dashicons/table-row-after";
9
+ import DashIconsTableRowBefore from "~icons/dashicons/table-row-before";
10
+ import DashIconsTableRowDelete from "~icons/dashicons/table-row-delete";
11
+ export const toggleBoldCommand = {
12
+ type: "command",
13
+ command: "toggleMark",
14
+ args: ["bold"],
15
+ title: "Bold",
16
+ description: "Make the selected text bold.",
17
+ icon: { props: { class: "font-bold", text: "B" }, component: TextIcon }
18
+ };
19
+ export const toggleItalicCommand = {
20
+ type: "command",
21
+ command: "toggleMark",
22
+ args: ["italic"],
23
+ title: "Italic",
24
+ description: "Make the selected text italic.",
25
+ icon: { props: { class: "italic", text: "I" }, component: TextIcon }
26
+ };
27
+ export const toggleStrikeCommand = {
28
+ type: "command",
29
+ command: "toggleMark",
30
+ args: ["strike"],
31
+ title: "Strike",
32
+ description: "Strike through the selected text.",
33
+ icon: { props: { style: "text-decoration:line-through;", text: "S" }, component: TextIcon }
34
+ };
35
+ export const toggleUnderlineCommand = {
36
+ type: "command",
37
+ command: "toggleMark",
38
+ args: ["underline"],
39
+ title: "Underline",
40
+ description: "Underline the selected text.",
41
+ icon: { props: { class: "underline", text: "U" }, component: TextIcon }
42
+ };
43
+ export const toggleCodeCommand = {
44
+ type: "command",
45
+ command: "toggleMark",
46
+ args: ["code"],
47
+ title: "Code",
48
+ description: "Make the selected text code.",
49
+ icon: { props: { class: "font-bold", text: "</>" }, component: TextIcon }
50
+ };
51
+ export const toggleSubscriptCommand = {
52
+ type: "command",
53
+ command: "toggleMark",
54
+ args: ["subscript"],
55
+ title: "Subscript",
56
+ description: "Subscript the selected text.",
57
+ icon: { component: SubscriptIcon }
58
+ };
59
+ export const toggleSuperscriptCommand = {
60
+ type: "command",
61
+ command: "toggleMark",
62
+ args: ["superscript"],
63
+ title: "Superscript",
64
+ description: "Superscript the selected text.",
65
+ icon: { component: SuperscriptIcon }
66
+ };
67
+ export const tableCanShow = (state) => state.selection.$from.node(-1).type.name === "tableCell" && state.selection.$to.node(-1).type.name === "tableCell";
68
+ export const tableAddColBeforeCommand = {
69
+ type: "command",
70
+ command: "addColumnBefore",
71
+ title: "Add column before.",
72
+ description: "Add a column before the selected column.",
73
+ icon: { component: DashIconsTableColBefore },
74
+ canShow: tableCanShow
75
+ };
76
+ export const tableAddColAfterCommand = {
77
+ type: "command",
78
+ command: "addColumnAfter",
79
+ title: "Add column after.",
80
+ description: "Add a column after the selected column.",
81
+ icon: { component: DashIconsTableColAfter },
82
+ canShow: tableCanShow
83
+ };
84
+ export const tableAddRowBeforeCommand = {
85
+ type: "command",
86
+ command: "addRowBefore",
87
+ title: "Add row before.",
88
+ description: "Add a row before the selected row.",
89
+ icon: { component: DashIconsTableRowBefore },
90
+ canShow: tableCanShow
91
+ };
92
+ export const tableAddRowAfterCommand = {
93
+ type: "command",
94
+ command: "addRowAfter",
95
+ title: "Add row after.",
96
+ description: "Add a row after the selected row.",
97
+ icon: { component: DashIconsTableRowAfter },
98
+ canShow: tableCanShow
99
+ };
100
+ export const tableDeleteRowCommand = {
101
+ type: "command",
102
+ command: "deleteRow",
103
+ title: "Delete row.",
104
+ description: "Delete the selected row.",
105
+ icon: { component: DashIconsTableRowDelete },
106
+ canShow: tableCanShow
107
+ };
108
+ export const tableDeleteColCommand = {
109
+ type: "command",
110
+ command: "deleteColumn",
111
+ title: "Delete column.",
112
+ description: "Delete the selected column.",
113
+ icon: { component: DashIconsTableColDelete },
114
+ canShow: tableCanShow
115
+ };
116
+ export function createToggleHighlightCommand(slotCount, prefix = "slot") {
117
+ return [...Array(slotCount).keys()].map((i) => {
118
+ const command = {
119
+ type: "command",
120
+ command: "toggleHighlight",
121
+ title: `Highlight Slot ${i + 1}`,
122
+ description: `Highlight the selected text with color slot ${i + 1}.`,
123
+ icon: { component: HighlightIcon, props: { colorSlot: prefix + (i + 1) } },
124
+ args: [prefix + (i + 1)]
125
+ };
126
+ return command;
127
+ });
128
+ }
129
+ export const toggleHighlightsCommands = createToggleHighlightCommand(5);
130
+ export const unsetHighlightCommand = {
131
+ type: "command",
132
+ command: "unsetHighlight",
133
+ title: "Unset Highlight",
134
+ description: "Unset the highlight mark.",
135
+ icon: { component: HighlightIcon, props: { colorSlot: void 0 } },
136
+ args: []
137
+ };
138
+ export const defaultCommandBarMenuItems = {
139
+ enabled: true,
140
+ options: {
141
+ onlyOpenOnSelection: true
142
+ },
143
+ commands: [
144
+ {
145
+ type: "group",
146
+ groupType: "inline",
147
+ title: "Basic",
148
+ variations: [
149
+ toggleBoldCommand,
150
+ toggleItalicCommand,
151
+ toggleStrikeCommand,
152
+ toggleUnderlineCommand,
153
+ toggleCodeCommand
154
+ ]
155
+ },
156
+ {
157
+ type: "group",
158
+ groupType: "inline",
159
+ title: "Highlight",
160
+ variations: [
161
+ ...toggleHighlightsCommands,
162
+ unsetHighlightCommand
163
+ ]
164
+ },
165
+ {
166
+ type: "group",
167
+ groupType: "inline",
168
+ title: "Sub/Sup",
169
+ variations: [
170
+ toggleSubscriptCommand,
171
+ toggleSuperscriptCommand
172
+ ]
173
+ },
174
+ {
175
+ type: "group",
176
+ groupType: "inline",
177
+ title: "Table",
178
+ variations: [
179
+ tableAddColBeforeCommand,
180
+ tableAddColAfterCommand,
181
+ tableAddRowBeforeCommand,
182
+ tableAddRowAfterCommand,
183
+ tableDeleteRowCommand,
184
+ tableDeleteColCommand
185
+ ]
186
+ }
187
+ ]
188
+ };
@@ -0,0 +1,8 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import type { CommandBarCommand, CommandBarGroup } from "../types";
3
+ type __VLS_Props = {
4
+ editor: Editor;
5
+ commands: (CommandBarCommand | CommandBarGroup)[];
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ export default _default;
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <div
3
+ class="
4
+ rounded-sm
5
+ border-neutral-300
6
+ dark:border-neutral-700
7
+ border
8
+ bg-neutral-50
9
+ dark:bg-neutral-950
10
+ p-1
11
+ flex
12
+ [&>div]:px-1
13
+ [&>div:last-of-type]:pr-0
14
+ [&>div]:border-neutral-300
15
+ [&>div]:dark:border-neutral-700
16
+ [&>div]:border-r
17
+ [&>div:last-of-type]:border-r-0
18
+ "
19
+ >
20
+ <template
21
+ v-for="item in commands"
22
+ :key="item.title"
23
+ >
24
+ <div
25
+ v-if="item.type === 'command'"
26
+ >
27
+ <CommandBarItem
28
+ v-if="item.canShow === void 0 || item.canShow(editor.state)"
29
+ :editor="editor"
30
+ :item="item"
31
+ />
32
+ <!-- @close="emit('close')" -->
33
+ </div>
34
+ <div
35
+ v-else-if="item.type === 'group' && item.variations.some((subItem2) => subItem2.canShow === void 0 || subItem2.canShow(editor.state))"
36
+ class="
37
+ flex
38
+ gap-1
39
+ "
40
+ >
41
+ <CommandBarItem
42
+ :item="subItem"
43
+ :editor="editor"
44
+ v-for="subItem in item.variations"
45
+ :key="subItem.title"
46
+ />
47
+ </div>
48
+ </template>
49
+ </div>
50
+ </template>
51
+
52
+ <script setup>
53
+ import CommandBarItem from "./CommandBarItem.vue";
54
+ defineProps({
55
+ editor: { type: null, required: true },
56
+ commands: { type: Array, required: true }
57
+ });
58
+ </script>
@@ -0,0 +1,8 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import type { CommandBarCommand, CommandBarGroup } from "../types";
3
+ type __VLS_Props = {
4
+ editor: Editor;
5
+ commands: (CommandBarCommand | CommandBarGroup)[];
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import { type CommandBarCommand } from "../types.js";
3
+ type __VLS_Props = {
4
+ item: CommandBarCommand;
5
+ editor: Editor;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
8
+ close: () => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onClose?: (() => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <!-- pointerdown.prevent to prevent close from blurring the editor (in the plugin) -->
3
+ <div
4
+ class="
5
+ group/menu-item
6
+ px-1
7
+ rounded-xs
8
+ hover:text-accent-700
9
+ dark:hover:text-accent-300
10
+ cursor-pointer
11
+ "
12
+ :title="item.type === 'command' ? item.description : item.title"
13
+ @pointerdown.prevent
14
+ @click="handleClick"
15
+ >
16
+ <WIcon class="min-w-[1rem] text-center flex items-center justify-center h-full">
17
+ <component
18
+ v-if="item.icon"
19
+ :is="'component' in item.icon ? item.icon.component : item.icon"
20
+ v-bind="'props' in item.icon ? { editor, ...item.icon.props } : { editor }"
21
+ />
22
+ </WIcon>
23
+ </div>
24
+ </template>
25
+
26
+ <script setup>
27
+ import { inject } from "vue";
28
+ import { commandExecuterInjectionKey } from "../types.js";
29
+ import { defaultCommandExecuter } from "../utils/defaultCommandExecutor";
30
+ const props = defineProps({
31
+ item: { type: null, required: true },
32
+ editor: { type: null, required: true }
33
+ });
34
+ const emit = defineEmits(["close"]);
35
+ const executer = inject(commandExecuterInjectionKey, defaultCommandExecuter);
36
+ function handleClick() {
37
+ if (props.item.type === "command") {
38
+ executer(props.item, props.editor);
39
+ emit("close");
40
+ }
41
+ }
42
+ </script>