@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,208 @@
1
+ <template>
2
+ <div
3
+ :class="twMerge(
4
+ `
5
+ editor-wrapper
6
+ [counter-reset:none]
7
+ flex-1
8
+ w-full
9
+ `,
10
+ isEmbedded && `p-1`,
11
+ isScrolling && `
12
+ relative
13
+ after:content-['']
14
+ after:absolute
15
+ after:inset-0
16
+ after:border-[length:var(--pmDragScrollMargin)]
17
+ after:border-transparent
18
+ after:pointer-events-none
19
+ `,
20
+ scrollIndicator.right && `after:border-r-accent-500/60`,
21
+ scrollIndicator.down && `after:border-b-accent-500/60`,
22
+ scrollIndicator.left && `after:border-l-accent-500/60`,
23
+ scrollIndicator.up && `after:border-t-accent-500/60`
24
+ )"
25
+ :data-code-blocks-theme-is-dark="codeBlocksThemeIsDark"
26
+ :style="`${cssVariablesString}`"
27
+ v-bind="$attrs"
28
+ >
29
+ <!-- The class `is-embedded-block` is not needed internally, but is added for consistency in case it might be useful. -->
30
+ <!-- @vue-expect-error -->
31
+ <editor-content
32
+ :editor="editor"
33
+ spellcheck="false"
34
+ :class="twMerge(
35
+ `
36
+ w-full flex-1
37
+ p-2
38
+ pl-6
39
+ [&>.ProseMirror]:outline-hidden
40
+ overflow-auto
41
+ `,
42
+ isEmbedded && `editor-is-embedded`,
43
+ isEmbeddedBlock && `editor-is-embedded-block`
44
+ )"
45
+ v-extract-root-el="(el) => editorContainerEl = el"
46
+ />
47
+ <MarkMenuManager
48
+ v-if="editor && !finalEditorOptions?.editable"
49
+ :editor="editor"
50
+ />
51
+ <ItemMenu
52
+ v-if="editor"
53
+ :editor="editor"
54
+ />
55
+ </div>
56
+ </template>
57
+
58
+ <script setup>
59
+ import { keys } from "@alanscodelog/utils";
60
+ import { EditorContent } from "@tiptap/vue-3";
61
+ import { useScrollNearContainerEdges } from "@witchcraft/ui/composables/useScrollNearContainerEdges";
62
+ import { vExtractRootEl } from "@witchcraft/ui/directives/vExtractRootEl";
63
+ import { twMerge } from "@witchcraft/ui/utils/twMerge";
64
+ import { computed, inject, provide, ref, toRef, toRefs, watch } from "vue";
65
+ import handleCollapseIndicatorImage from "../assets/handle-arrow.svg";
66
+ import handleImage from "../assets/handle-border-circles-single.svg";
67
+ import { useEditor } from "../composables/useEditor.js";
68
+ import { useWindowDebugging } from "../composables/useWindowDebugging.js";
69
+ import { editorCssVariablesInjectionKey, editorScrollInjectionKey } from "../injectionKeys.js";
70
+ import ItemMenu from "../pm/features/Blocks/components/ItemMenu.vue";
71
+ import { statefulStates } from "../pm/features/Blocks/states/stateful.js";
72
+ import { statesInjectionKey } from "../pm/features/Blocks/types";
73
+ import { lowlightInstance } from "../pm/features/CodeBlock/CodeBlock.js";
74
+ import { useAsyncCodeBlockHighlighting } from "../pm/features/CodeBlock/composables/useAsyncCodeBlockHighlighting";
75
+ import { codeBlockThemeIsDarkInjectionKey } from "../pm/features/CodeBlock/types";
76
+ import { useEditorContent } from "../pm/features/DocumentApi/composables/useEditorContent";
77
+ import { documentApiInjectionKey } from "../pm/features/DocumentApi/types.js";
78
+ import { embededEditorOptionsInjectionKey, isEmbeddedBlockInjectionKey, isEmbeddedInjectionKey, parentEditorIdInjectionKey } from "../pm/features/EmbeddedDocument/types";
79
+ import MarkMenuManager from "../pm/features/Menus/components/MarkMenuManager.vue";
80
+ import { extensions } from "../pm/schema.js";
81
+ import { menusInjectionKey } from "../types/index.js";
82
+ const props = defineProps({
83
+ content: { type: null, required: false, default: void 0 },
84
+ docId: { type: String, required: false, default: void 0 },
85
+ documentApi: { type: null, required: false, default: void 0 },
86
+ linkOptions: { type: Object, required: false, default: void 0 },
87
+ dragScrollOptions: { type: Object, required: false, default: () => ({
88
+ scrollMargin: 15,
89
+ outerScrollMargin: 15,
90
+ fastPixelMultiplier: 8
91
+ }) },
92
+ cssVariables: { type: Object, required: false, default: () => ({}) },
93
+ editorOptions: { type: Object, required: false, default: () => ({
94
+ // todo user configurable
95
+ enablePasteRules: true,
96
+ enableInputRules: true
97
+ }) },
98
+ codeBlocksThemeIsDark: { type: Boolean, required: false, default: false },
99
+ menus: { type: Object, required: false, default: () => ({}) }
100
+ });
101
+ const editorContainerEl = ref(null);
102
+ const scroll = useScrollNearContainerEdges({
103
+ containerEl: editorContainerEl,
104
+ ...props.dragScrollOptions
105
+ });
106
+ const {
107
+ isScrolling,
108
+ scrollIndicator
109
+ } = scroll;
110
+ provide(editorScrollInjectionKey, scroll);
111
+ const isEmbedded = inject(isEmbeddedInjectionKey, false);
112
+ const isEmbeddedBlock = inject(isEmbeddedBlockInjectionKey, ref(false));
113
+ const cssVariables = computed(() => isEmbedded ? {} : {
114
+ pmUnfocusedSelectionColor: "rgb(129,163,234)",
115
+ pmNodeTypeMargin: "var(--dragHandleMargin)",
116
+ pmCodeBlockBgColor: "",
117
+ pmMaxEmbedWidth: "800px",
118
+ pmDragScrollMargin: `${props.dragScrollOptions.scrollMargin}px`,
119
+ dragHandleSize: "9px",
120
+ dragHandleMargin: "5px",
121
+ dragHandleImage: `url("${handleImage}")`,
122
+ dragHandleCollapseIndicatorImage: `url("${handleCollapseIndicatorImage}")`,
123
+ ...props.cssVariables
124
+ });
125
+ const cssVariablesString = computed(() => keys(cssVariables.value).map((key) => `--${key}: ${cssVariables.value[key]};`).join(""));
126
+ const menus = toRef(props, "menus");
127
+ const alreadyProvidedDocumentApi = inject(documentApiInjectionKey, void 0);
128
+ if (!isEmbedded) {
129
+ const statefulStatesRef = ref(statefulStates);
130
+ const alreadyProvidedStatefulStates = inject(statesInjectionKey, void 0);
131
+ if (!alreadyProvidedStatefulStates) {
132
+ provide(statesInjectionKey, statefulStatesRef);
133
+ }
134
+ const codeBlockThemeIsDark = toRef(props, "codeBlocksThemeIsDark");
135
+ const alreadyProvidedCodeBlockThemeIsDark = inject(codeBlockThemeIsDarkInjectionKey, void 0);
136
+ if (!alreadyProvidedCodeBlockThemeIsDark) {
137
+ provide(codeBlockThemeIsDarkInjectionKey, codeBlockThemeIsDark);
138
+ }
139
+ const alreadyProvidedEditorCssVariables = inject(editorCssVariablesInjectionKey, void 0);
140
+ if (!alreadyProvidedEditorCssVariables) {
141
+ provide(editorCssVariablesInjectionKey, cssVariables);
142
+ }
143
+ if (props.documentApi && !alreadyProvidedDocumentApi) {
144
+ provide(documentApiInjectionKey, props.documentApi);
145
+ }
146
+ if (menus.value) {
147
+ provide(menusInjectionKey, menus);
148
+ }
149
+ }
150
+ const finalEditorOptions = {
151
+ enableInputRules: true,
152
+ enablePasteRules: true,
153
+ ...props.editorOptions,
154
+ // force extensions to be their own instance per embedded editor
155
+ // see https://github.com/ueberdosis/tiptap/issues/4317
156
+ // and https://github.com/ueberdosis/tiptap/issues/2694
157
+ extensions: props.editorOptions?.extensions ?? extensions,
158
+ autofocus: isEmbedded ? false : props.editorOptions?.autofocus ?? true,
159
+ injectCSS: false
160
+ };
161
+ provide(embededEditorOptionsInjectionKey, finalEditorOptions);
162
+ const emit = defineEmits(["load", "unload"]);
163
+ const { editor, recreate } = useEditor(finalEditorOptions);
164
+ watch(editor, (newVal) => {
165
+ if (newVal) {
166
+ if (props.linkOptions) {
167
+ editor.value.commands.setLinkOpts(props.linkOptions);
168
+ }
169
+ emit("load");
170
+ }
171
+ });
172
+ useWindowDebugging(editor);
173
+ useAsyncCodeBlockHighlighting({
174
+ lowlightInstance,
175
+ editor
176
+ });
177
+ watch(() => props.editorOptions, (newVal) => {
178
+ if (newVal) {
179
+ editor.value?.setOptions(newVal);
180
+ }
181
+ }, { deep: true });
182
+ watch(() => props.linkOptions, (newVal) => {
183
+ if (!isEmbedded) {
184
+ if (newVal) {
185
+ editor.value?.commands.setLinkOpts(newVal);
186
+ }
187
+ }
188
+ }, { deep: true });
189
+ const {
190
+ content,
191
+ docId
192
+ } = toRefs(props);
193
+ useEditorContent(
194
+ editor,
195
+ content,
196
+ docId,
197
+ props.documentApi ?? alreadyProvidedDocumentApi,
198
+ recreate
199
+ );
200
+ provide(parentEditorIdInjectionKey, docId);
201
+ defineExpose({
202
+ editor
203
+ });
204
+ </script>
205
+
206
+ <style>
207
+ a{text-decoration:underline!important}.ProseMirror{position:relative;word-wrap:break-word;font-feature-settings:"liga" 0;font-variant-ligatures:none;white-space:pre-wrap;white-space:break-spaces}.ProseMirror [contenteditable=false]{white-space:normal}.ProseMirror [contenteditable=false] [contenteditable=true]{white-space:pre-wrap}.ProseMirror pre{white-space:pre-wrap}img.ProseMirror-separator{border:none!important;display:inline!important;height:0!important;margin:0!important;width:0!important}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.ProseMirror-gapcursor{display:none;pointer-events:none;position:relative}ul>.ProseMirror-gapcursor{@apply pl-[calc(var(--dragHandleSize)+var(--dragHandleMargin)+var(--spacing-1))]}.ProseMirror-gapcursor:after{animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite;border-top:1px solid #000;content:"";display:block;position:absolute;top:-2px;width:20px}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.ProseMirror-hideselection ::selection{background:transparent}.ProseMirror-hideselection ::-moz-selection{background:transparent}.ProseMirror-hideselection *{caret-color:transparent}
208
+ </style>
@@ -0,0 +1,40 @@
1
+ import type { Content, EditorOptions } from "@tiptap/core";
2
+ import type { ScrollNearContainerEdgesOptions } from "@witchcraft/ui/types/index";
3
+ import { type DocumentApiInterface } from "../pm/features/DocumentApi/types.js";
4
+ import type { EditorLinkOptions } from "../pm/features/Link/types";
5
+ import { type CssVariables, type MenuRenderInfo } from "../types/index.js";
6
+ type __VLS_Props = {
7
+ /** The content for the editor. It is better to use docId and the documentApi instead. */
8
+ content?: Content;
9
+ docId?: string;
10
+ /** The document api, required for the root editor if using nested embeds. This is provided as the documentApi using the documentApiInjectionKey. */
11
+ documentApi?: DocumentApiInterface;
12
+ /** The link options, required for the root editor. Not required for embedded editors. */
13
+ linkOptions?: EditorLinkOptions;
14
+ /** See my component library's (@witchcraft/ui) useScrollNearContainerEdges composable for more info. */
15
+ dragScrollOptions?: Pick<ScrollNearContainerEdgesOptions, "scrollMargin" | "outerScrollMargin" | "fastPixelMultiplier">;
16
+ cssVariables?: Partial<CssVariables>;
17
+ editorOptions?: Partial<EditorOptions>;
18
+ codeBlocksThemeIsDark?: boolean;
19
+ menus?: Record<string, MenuRenderInfo>;
20
+ };
21
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {
22
+ editor: import("vue").ShallowRef<import("@tiptap/vue-3").Editor | undefined, import("@tiptap/vue-3").Editor | undefined>;
23
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
24
+ load: () => any;
25
+ unload: () => any;
26
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
27
+ onLoad?: (() => any) | undefined;
28
+ onUnload?: (() => any) | undefined;
29
+ }>, {
30
+ menus: Record<string, MenuRenderInfo>;
31
+ content: Content;
32
+ docId: string;
33
+ documentApi: DocumentApiInterface;
34
+ linkOptions: EditorLinkOptions;
35
+ dragScrollOptions: Pick<ScrollNearContainerEdgesOptions, "scrollMargin" | "outerScrollMargin" | "fastPixelMultiplier">;
36
+ cssVariables: Partial<CssVariables>;
37
+ editorOptions: Partial<EditorOptions>;
38
+ codeBlocksThemeIsDark: boolean;
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,104 @@
1
+ <template>
2
+ <WRoot class="items-center py-10 gap-2 h-dvh">
3
+ <component :is="'style'">
4
+ <!-- use unhead in a real app -->
5
+ {{ codeBlocksThemeCss.join("\n") }}
6
+ </component>
7
+ <div class="text-xl font-bold">
8
+ <a href="https://github.com/witchcraftjs/editor">@witchcraft/editor</a>
9
+ </div>
10
+ <EditorDemoControls
11
+ :code-blocks-theme-list="codeBlocksThemeList"
12
+ v-model:code-blocks-theme="codeBlocksTheme"
13
+ />
14
+ <Editor
15
+ class="
16
+ max-w-[700px]
17
+ flex-1
18
+ flex
19
+ border
20
+ border-neutral-300
21
+ dark:border-neutral-700
22
+ rounded-sm
23
+ min-h-0
24
+ "
25
+ v-bind="{
26
+ codeBlocksThemeIsDark,
27
+ cssVariables: {
28
+ pmCodeBlockBgColor: codeBlocksThemeBgColor
29
+ },
30
+ docId,
31
+ documentApi,
32
+ linkOptions,
33
+ editorOptions,
34
+ menus
35
+ }"
36
+ />
37
+ </WRoot>
38
+ </template>
39
+
40
+ <script setup>
41
+ import WRoot from "@witchcraft/ui/components/LibRoot";
42
+ import { reactive, ref, shallowRef } from "vue";
43
+ import Editor from "./Editor.vue";
44
+ import EditorDemoControls from "./EditorDemoControls.vue";
45
+ import { useHighlightJsTheme } from "../pm/features/CodeBlock/composables/useHighlightJsTheme.js";
46
+ import { defaultCommandBarMenuItems } from "../pm/features/CommandsMenus/commandBarMenuItems.js";
47
+ import CommandBar from "../pm/features/CommandsMenus/components/CommandBar.vue";
48
+ import { useTestDocumentApi } from "../pm/features/DocumentApi/composables/useTestDocumentApi.js";
49
+ import BubbleMenuLink from "../pm/features/Link/components/BubbleMenuLink.vue";
50
+ import { testExtensions } from "../pm/testSchema.js";
51
+ import { testDocuments } from "../testDocuments.js";
52
+ const {
53
+ theme: codeBlocksTheme,
54
+ knownThemes: codeBlocksThemeList,
55
+ themeCss: codeBlocksThemeCss,
56
+ isDark: codeBlocksThemeIsDark,
57
+ backgroundColor: codeBlocksThemeBgColor
58
+ } = useHighlightJsTheme();
59
+ const editorOptions = {
60
+ extensions: testExtensions
61
+ };
62
+ const linkOptions = {
63
+ openInternal: (href) => {
64
+ window.alert(`This would open an internal link to ${href}.`);
65
+ console.log(`Would open internal link to ${href}.`);
66
+ }
67
+ };
68
+ const fakeSuggestions = reactive(["some", "suggestions"]);
69
+ const menus = shallowRef({
70
+ linkMenu: {
71
+ component: BubbleMenuLink,
72
+ props: (editor) => ({
73
+ editor,
74
+ linkSuggestions: fakeSuggestions,
75
+ getInternalLinkHref(href) {
76
+ return `internal://${href.replace(/[^\w-]/g, "")}`;
77
+ }
78
+ })
79
+ },
80
+ commandBar: {
81
+ component: CommandBar,
82
+ props: (editor) => ({
83
+ editor,
84
+ commands: defaultCommandBarMenuItems.commands
85
+ }),
86
+ popupOptions: {
87
+ pinToItemDistance: (state) => {
88
+ const { $from, $to } = state.selection;
89
+ const fromNode = $from.node(-1);
90
+ const toNode = $to.node(-1);
91
+ if (fromNode.type !== toNode.type) {
92
+ return 0;
93
+ }
94
+ return fromNode.type.name.startsWith("table") ? 120 : 0;
95
+ }
96
+ }
97
+ }
98
+ });
99
+ const { documentApi } = useTestDocumentApi(
100
+ editorOptions,
101
+ testDocuments
102
+ );
103
+ const docId = ref("root");
104
+ </script>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ codeBlocksThemeList: string[];
3
+ };
4
+ type __VLS_PublicProps = __VLS_Props & {
5
+ "codeBlocksTheme": string;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ "update:codeBlocksTheme": (value: string) => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
10
+ "onUpdate:codeBlocksTheme"?: ((value: string) => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,36 @@
1
+ <template>
2
+ <div
3
+ class="
4
+ w-full
5
+ flex
6
+ items-stretch
7
+ justify-center
8
+ gap-2
9
+ [&>*]:rounded-sm
10
+ [&>*]:p-2
11
+ [&>*]:border
12
+ [&>*]:border-neutral-300
13
+ [&>*]:dark:border-neutral-700
14
+ "
15
+ >
16
+ <div class="flex items-center gap-2">
17
+ <span>
18
+ Global Theme:
19
+ </span>
20
+ <WDarkModeSwitcher/>
21
+ </div>
22
+ <CodeBlockThemePicker
23
+ :code-blocks-theme-list="codeBlocksThemeList"
24
+ v-model:code-blocks-theme="codeBlocksTheme"
25
+ />
26
+ </div>
27
+ </template>
28
+
29
+ <script setup>
30
+ import WDarkModeSwitcher from "@witchcraft/ui/components/LibDarkModeSwitcher";
31
+ import CodeBlockThemePicker from "./CodeBlockThemePicker.vue";
32
+ defineProps({
33
+ codeBlocksThemeList: { type: Array, required: true }
34
+ });
35
+ const codeBlocksTheme = defineModel("codeBlocksTheme", { type: String, ...{ required: true } });
36
+ </script>
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ codeBlocksThemeList: string[];
3
+ };
4
+ type __VLS_PublicProps = __VLS_Props & {
5
+ "codeBlocksTheme": string;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ "update:codeBlocksTheme": (value: string) => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
10
+ "onUpdate:codeBlocksTheme"?: ((value: string) => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,11 @@
1
+ type __VLS_Props = {
2
+ testId: string;
3
+ documents: Record<string, {
4
+ title: string;
5
+ content: string;
6
+ }>;
7
+ docId: string;
8
+ loadDelay?: number;
9
+ };
10
+ 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>;
11
+ export default _default;
@@ -0,0 +1,63 @@
1
+ <template>
2
+ <WRoot :test-wrapper-mode="true">
3
+ <Editor
4
+ :data-testid="`test-editor-${testId}`"
5
+ ref="editor"
6
+ v-bind="{
7
+ docId,
8
+ documentApi,
9
+ linkOptions,
10
+ editorOptions
11
+ }"
12
+ />
13
+ <div class="py-[50px]"/>
14
+ </WRoot>
15
+ </template>
16
+
17
+ <script setup>
18
+ import WRoot from "@witchcraft/ui/components/LibRoot";
19
+ import { ref, watchEffect } from "vue";
20
+ import Editor from "./Editor.vue";
21
+ import { useTestDocumentApi } from "../pm/features/DocumentApi/composables/useTestDocumentApi.js";
22
+ import { testExtensions } from "../pm/testSchema.js";
23
+ const props = defineProps({
24
+ testId: { type: String, required: true },
25
+ documents: { type: Object, required: true },
26
+ docId: { type: String, required: true },
27
+ loadDelay: { type: Number, required: false }
28
+ });
29
+ const editorOptions = {
30
+ extensions: testExtensions.map((ext) => {
31
+ if (ext.name === "item") {
32
+ return ext.configure({
33
+ ensureLastItemIsParagraph: false
34
+ });
35
+ }
36
+ return ext;
37
+ }),
38
+ enableCoreExtensions: {
39
+ keymap: false
40
+ }
41
+ };
42
+ const { documentApi } = useTestDocumentApi(
43
+ editorOptions,
44
+ props.documents,
45
+ { loadDelay: props.loadDelay }
46
+ );
47
+ const linkOptions = {
48
+ openInternal: () => {
49
+ console.log("openning internal");
50
+ }
51
+ };
52
+ const editor = ref(null);
53
+ watchEffect(() => {
54
+ if (editor.value) {
55
+ ;
56
+ window[`editor-${props.testId}`] = editor.value;
57
+ }
58
+ });
59
+ </script>
60
+
61
+ <style>
62
+ @reference "../demo/tailwind.css"
63
+ </style>
@@ -0,0 +1,11 @@
1
+ type __VLS_Props = {
2
+ testId: string;
3
+ documents: Record<string, {
4
+ title: string;
5
+ content: string;
6
+ }>;
7
+ docId: string;
8
+ loadDelay?: number;
9
+ };
10
+ 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>;
11
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import type { EditorOptions } from "@tiptap/core";
2
+ import { Editor } from "@tiptap/vue-3";
3
+ /**
4
+ * Unline tiptap's useEditor, this does not auto-mount the editor. Instead the returned `recreate` function must be called manually. This was built with the use of {@link useContentEditor} in mind.
5
+ */
6
+ export declare const useEditor: (options?: Partial<EditorOptions>) => {
7
+ editor: import("@vue/reactivity").ShallowRef<Editor | undefined, Editor | undefined>;
8
+ recreate: (modifyOptions?: (options: Partial<EditorOptions>) => Partial<EditorOptions>) => void;
9
+ };
@@ -0,0 +1,21 @@
1
+ import { Editor } from "@tiptap/vue-3";
2
+ import { onBeforeUnmount, shallowRef } from "vue";
3
+ export const useEditor = (options = {}) => {
4
+ const editor = shallowRef();
5
+ function recreate(modifyOptions) {
6
+ options = modifyOptions?.(options) ?? options;
7
+ editor.value?.destroy();
8
+ editor.value = new Editor(options);
9
+ }
10
+ onBeforeUnmount(() => {
11
+ const nodes = editor.value?.options.element;
12
+ if (nodes && !(nodes instanceof HTMLElement)) {
13
+ console.warn(`Expected editor element to be an HTMLElement, got ${nodes.constructor.name}: ${nodes}`);
14
+ return;
15
+ }
16
+ const newEl = nodes?.cloneNode(true);
17
+ nodes?.parentNode?.replaceChild(newEl, nodes);
18
+ editor.value?.destroy();
19
+ });
20
+ return { editor, recreate };
21
+ };
@@ -0,0 +1,3 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ import type { ShallowRef } from "vue";
3
+ export declare const useWindowDebugging: (editor: ShallowRef<Editor | undefined>) => void;
@@ -0,0 +1,16 @@
1
+ import { watch } from "vue";
2
+ import { debugNode } from "../pm/utils/internal/debugNode.js";
3
+ import { nodesBetween } from "../pm/utils/nodesBetween.js";
4
+ export const useWindowDebugging = (editor) => {
5
+ watch(editor, () => {
6
+ if (!editor.value) return;
7
+ if (typeof window === "undefined" || typeof process === "undefined") return;
8
+ if (import.meta.dev && editor.value !== void 0) {
9
+ const w = window;
10
+ w.editor = editor.value;
11
+ w.tr = () => editor.value.state.tr;
12
+ w.debugNode = debugNode;
13
+ w.nodesBetween = nodesBetween;
14
+ }
15
+ });
16
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,101 @@
1
+ <template>
2
+ <WRoot class="items-center py-4">
3
+ <!-- @vue-expect-error use unhead in a real app -->
4
+ <style>
5
+ {{ codeBlocksThemeCss.join("\n") }}
6
+ </style>
7
+ <DemoControls
8
+ :code-blocks-theme-list="codeBlocksThemeList"
9
+ v-model:code-blocks-theme="codeBlocksTheme"
10
+ @blur="blur"
11
+ />
12
+ <Editor
13
+ class="max-w-[700px] flex-1 max-h-[700px] flex"
14
+ v-bind="{
15
+ codeBlocksThemeIsDark,
16
+ cssVariables: {
17
+ pmCodeBlockBgColor: codeBlocksThemeBgColor
18
+ },
19
+ docId,
20
+ documentApi,
21
+ linkOptions,
22
+ editorOptions,
23
+ menus
24
+ }"
25
+ />
26
+ <div class="py-[50px]"/>
27
+ </WRoot>
28
+ </template>
29
+
30
+ <script setup>
31
+ import WRoot from "@witchcraft/ui/components/LibRoot";
32
+ import { nextTick, reactive, ref, shallowRef } from "vue";
33
+ import Editor from "../components/Editor.vue";
34
+ import DemoControls from "../components/EditorDemoControls.vue";
35
+ import { useHighlightJsTheme } from "../pm/features/CodeBlock/composables/useHighlightJsTheme.js";
36
+ import { defaultCommandBarMenuItems } from "../pm/features/CommandsMenus/commandBarMenuItems";
37
+ import CommandBar from "../pm/features/CommandsMenus/components/CommandBar.vue";
38
+ import { useTestDocumentApi } from "../pm/features/DocumentApi/composables/useTestDocumentApi.js";
39
+ import BubbleMenuLink from "../pm/features/Link/components/BubbleMenuLink.vue";
40
+ import { testExtensions } from "../pm/testSchema.js";
41
+ import { testDocuments } from "../testDocuments";
42
+ const {
43
+ theme: codeBlocksTheme,
44
+ knownThemes: codeBlocksThemeList,
45
+ themeCss: codeBlocksThemeCss,
46
+ isDark: codeBlocksThemeIsDark,
47
+ backgroundColor: codeBlocksThemeBgColor
48
+ } = useHighlightJsTheme();
49
+ function blur() {
50
+ const was = codeBlocksTheme.value;
51
+ codeBlocksTheme.value = "";
52
+ nextTick(() => {
53
+ codeBlocksTheme.value = was;
54
+ });
55
+ }
56
+ const editorOptions = {
57
+ extensions: testExtensions
58
+ };
59
+ const linkOptions = {
60
+ openInternal: (href) => {
61
+ window.alert(`This would open an internal link to ${href}.`);
62
+ console.log(`Would open internal link to ${href}.`);
63
+ }
64
+ };
65
+ const fakeSuggestions = reactive(["some", "suggestions"]);
66
+ const menus = shallowRef({
67
+ linkMenu: {
68
+ component: BubbleMenuLink,
69
+ props: (editor) => ({
70
+ editor,
71
+ linkSuggestions: fakeSuggestions,
72
+ getInternalLinkHref(href) {
73
+ return `internal://${href.replace(/[^\w-]/g, "")}`;
74
+ }
75
+ })
76
+ },
77
+ commandBar: {
78
+ component: CommandBar,
79
+ props: (editor) => ({
80
+ editor,
81
+ commands: defaultCommandBarMenuItems.commands
82
+ }),
83
+ popupOptions: {
84
+ pinToItemDistance: (state) => {
85
+ const { $from, $to } = state.selection;
86
+ const fromNode = $from.node(-1);
87
+ const toNode = $to.node(-1);
88
+ if (fromNode.type !== toNode.type) {
89
+ return 0;
90
+ }
91
+ return fromNode.type.name.startsWith("table") ? 120 : 0;
92
+ }
93
+ }
94
+ }
95
+ });
96
+ const { documentApi } = useTestDocumentApi(
97
+ editorOptions,
98
+ testDocuments
99
+ );
100
+ const docId = ref("root");
101
+ </script>