@witchcraft/editor 0.0.5 → 0.0.6

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 (400) 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 +122 -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/schema.d.ts +4 -0
  343. package/dist/runtime/pm/schema.js +80 -0
  344. package/dist/runtime/pm/testSchema.d.ts +5 -0
  345. package/dist/runtime/pm/testSchema.js +30 -0
  346. package/dist/runtime/pm/utils/createDropIndicator.d.ts +23 -0
  347. package/dist/runtime/pm/utils/createDropIndicator.js +36 -0
  348. package/dist/runtime/pm/utils/createStateOnlyPluginApply.d.ts +2 -0
  349. package/dist/runtime/pm/utils/createStateOnlyPluginApply.js +9 -0
  350. package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.d.ts +2 -0
  351. package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.js +14 -0
  352. package/dist/runtime/pm/utils/dropPointInfo.d.ts +56 -0
  353. package/dist/runtime/pm/utils/dropPointInfo.js +28 -0
  354. package/dist/runtime/pm/utils/findUpwards.d.ts +20 -0
  355. package/dist/runtime/pm/utils/findUpwards.js +18 -0
  356. package/dist/runtime/pm/utils/getChildChunks.d.ts +3 -0
  357. package/dist/runtime/pm/utils/getChildChunks.js +15 -0
  358. package/dist/runtime/pm/utils/getDiffReplacementRange.d.ts +20 -0
  359. package/dist/runtime/pm/utils/getDiffReplacementRange.js +9 -0
  360. package/dist/runtime/pm/utils/getElMaxVisualSize.d.ts +9 -0
  361. package/dist/runtime/pm/utils/getElMaxVisualSize.js +7 -0
  362. package/dist/runtime/pm/utils/getElPropertyAsInt.d.ts +4 -0
  363. package/dist/runtime/pm/utils/getElPropertyAsInt.js +8 -0
  364. package/dist/runtime/pm/utils/getGroupNodeNames.d.ts +2 -0
  365. package/dist/runtime/pm/utils/getGroupNodeNames.js +7 -0
  366. package/dist/runtime/pm/utils/getMarkPosition.d.ts +11 -0
  367. package/dist/runtime/pm/utils/getMarkPosition.js +34 -0
  368. package/dist/runtime/pm/utils/getMarksInSelection.d.ts +3 -0
  369. package/dist/runtime/pm/utils/getMarksInSelection.js +16 -0
  370. package/dist/runtime/pm/utils/getTypeByName.d.ts +2 -0
  371. package/dist/runtime/pm/utils/getTypeByName.js +5 -0
  372. package/dist/runtime/pm/utils/index.d.ts +15 -0
  373. package/dist/runtime/pm/utils/index.js +15 -0
  374. package/dist/runtime/pm/utils/internal/createNodeTypesList.d.ts +2 -0
  375. package/dist/runtime/pm/utils/internal/createNodeTypesList.js +17 -0
  376. package/dist/runtime/pm/utils/internal/debugMap.d.ts +7 -0
  377. package/dist/runtime/pm/utils/internal/debugMap.js +24 -0
  378. package/dist/runtime/pm/utils/internal/debugNode.d.ts +2 -0
  379. package/dist/runtime/pm/utils/internal/debugNode.js +18 -0
  380. package/dist/runtime/pm/utils/internal/debugSel.d.ts +5 -0
  381. package/dist/runtime/pm/utils/internal/debugSel.js +8 -0
  382. package/dist/runtime/pm/utils/internal/recurse.d.ts +2 -0
  383. package/dist/runtime/pm/utils/internal/recurse.js +39 -0
  384. package/dist/runtime/pm/utils/internal/stripBlockId.d.ts +2 -0
  385. package/dist/runtime/pm/utils/internal/stripBlockId.js +9 -0
  386. package/dist/runtime/pm/utils/mapSelection.d.ts +8 -0
  387. package/dist/runtime/pm/utils/mapSelection.js +12 -0
  388. package/dist/runtime/pm/utils/nodesBetween.d.ts +21 -0
  389. package/dist/runtime/pm/utils/nodesBetween.js +21 -0
  390. package/dist/runtime/pm/utils/pointToPmPoint.d.ts +2 -0
  391. package/dist/runtime/pm/utils/pointToPmPoint.js +3 -0
  392. package/dist/runtime/pm/utils/splitIntoChunks.d.ts +32 -0
  393. package/dist/runtime/pm/utils/splitIntoChunks.js +31 -0
  394. package/dist/runtime/testDocuments.d.ts +53 -0
  395. package/dist/runtime/testDocuments.js +122 -0
  396. package/dist/runtime/types/index.d.ts +53 -0
  397. package/dist/runtime/types/index.js +9 -0
  398. package/dist/types.d.mts +2 -12
  399. package/package.json +5 -5
  400. package/dist/module.d.cts +0 -2
@@ -0,0 +1,78 @@
1
+ <template>
2
+ <!-- @vue-expect-error -->
3
+ <WPopup
4
+ :model-value="menu.opened"
5
+ :preferred-horizontal="['left-most']"
6
+ :preferred-vertical="popupVerticalPositioner"
7
+ :position-modifier="popupPositionModifier"
8
+ ref="popup"
9
+ @update:model-value="!$event && props.editor.commands.closeItemMenu()"
10
+ >
11
+ <template #popup="{ extractEl }">
12
+ <div
13
+ :ref="extractEl"
14
+ >
15
+ <CommandsMenuList
16
+ :entries="commandsMenu"
17
+ @close="props.editor.commands.closeItemMenu()"
18
+ />
19
+ </div>
20
+ </template>
21
+ </WPopup>
22
+ </template>
23
+
24
+ <script setup>
25
+ import { unreachable } from "@alanscodelog/utils/unreachable";
26
+ import WPopup from "@witchcraft/ui/components/LibPopup";
27
+ import { computed, provide, ref, toRef, watch } from "vue";
28
+ import { defaultItemMenu as commandsMenu } from "./defaultItemMenu.js";
29
+ import CommandsMenuList from "../../CommandsMenus/components/CommandMenuList.vue";
30
+ import { commandExecuterInjectionKey, menuBlockIdInjectionKey, menuEditorInjectionKey } from "../../CommandsMenus/types.js";
31
+ import { popupPositionModifier } from "../../CommandsMenus/utils/popupPositionModifier.js";
32
+ import { popupVerticalPositioner } from "../../CommandsMenus/utils/popupVerticalPositioner.js";
33
+ import { itemMenuPluginKey } from "../types.js";
34
+ import { createItemMenuCommandExecuter } from "../utils/createItemMenuCommandExecuter.js";
35
+ const props = defineProps({
36
+ editor: { type: null, required: true }
37
+ });
38
+ const menu = ref({ opened: false, id: void 0 });
39
+ const popup = ref();
40
+ const virtualMenuEl = ref(null);
41
+ function virtualGetBoundingClientRect() {
42
+ const el = props.editor.view.dom.querySelector(`li[blockid='${menu.value.id}']`);
43
+ const handle = el?.parentElement?.querySelector(".grab-handle");
44
+ if (handle instanceof HTMLElement) {
45
+ const rect = handle.getBoundingClientRect();
46
+ return {
47
+ // rect cannot be spread normally, it's properties are not enumerable
48
+ ...rect.toJSON(),
49
+ width: 0
50
+ // override the width of the item, we want it to be ignored
51
+ // we want to keep the height though, since we want the menu centered to it if possible
52
+ };
53
+ }
54
+ unreachable();
55
+ }
56
+ function updateState({ editor }) {
57
+ const was = menu.value;
58
+ const willBe = itemMenuPluginKey.getState(editor.state) ?? menu.value;
59
+ if (willBe.opened && (was.opened !== willBe.opened || was.id !== willBe.id)) {
60
+ virtualMenuEl.value = { getBoundingClientRect: virtualGetBoundingClientRect };
61
+ popup.value.setReference(virtualMenuEl.value);
62
+ } else if (virtualMenuEl.value && !willBe.opened) {
63
+ virtualMenuEl.value = null;
64
+ popup.value.setReference(virtualMenuEl.value);
65
+ }
66
+ menu.value = willBe;
67
+ }
68
+ const editorRef = toRef(props, "editor");
69
+ provide(menuEditorInjectionKey, editorRef);
70
+ const blockId = computed(() => menu.value.id);
71
+ provide(menuBlockIdInjectionKey, blockId);
72
+ provide(commandExecuterInjectionKey, createItemMenuCommandExecuter(() => blockId.value));
73
+ watch(() => props.editor, (newVal, oldVal) => {
74
+ oldVal.off("transaction", updateState);
75
+ newVal.on("transaction", updateState);
76
+ });
77
+ props.editor.on("transaction", updateState);
78
+ </script>
@@ -0,0 +1,6 @@
1
+ import type { Editor } from "@tiptap/core";
2
+ type __VLS_Props = {
3
+ editor: Editor;
4
+ };
5
+ 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>;
6
+ export default _default;
@@ -0,0 +1,92 @@
1
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ editor: {
3
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["editor"]>;
4
+ required: true;
5
+ };
6
+ node: {
7
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["node"]>;
8
+ required: true;
9
+ };
10
+ decorations: {
11
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["decorations"]>;
12
+ required: true;
13
+ };
14
+ selected: {
15
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["selected"]>;
16
+ required: true;
17
+ };
18
+ extension: {
19
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["extension"]>;
20
+ required: true;
21
+ };
22
+ getPos: {
23
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["getPos"]>;
24
+ required: true;
25
+ };
26
+ updateAttributes: {
27
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["updateAttributes"]>;
28
+ required: true;
29
+ };
30
+ deleteNode: {
31
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["deleteNode"]>;
32
+ required: true;
33
+ };
34
+ view: {
35
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["view"]>;
36
+ required: true;
37
+ };
38
+ innerDecorations: {
39
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["innerDecorations"]>;
40
+ required: true;
41
+ };
42
+ HTMLAttributes: {
43
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["HTMLAttributes"]>;
44
+ required: true;
45
+ };
46
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
47
+ editor: {
48
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["editor"]>;
49
+ required: true;
50
+ };
51
+ node: {
52
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["node"]>;
53
+ required: true;
54
+ };
55
+ decorations: {
56
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["decorations"]>;
57
+ required: true;
58
+ };
59
+ selected: {
60
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["selected"]>;
61
+ required: true;
62
+ };
63
+ extension: {
64
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["extension"]>;
65
+ required: true;
66
+ };
67
+ getPos: {
68
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["getPos"]>;
69
+ required: true;
70
+ };
71
+ updateAttributes: {
72
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["updateAttributes"]>;
73
+ required: true;
74
+ };
75
+ deleteNode: {
76
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["deleteNode"]>;
77
+ required: true;
78
+ };
79
+ view: {
80
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["view"]>;
81
+ required: true;
82
+ };
83
+ innerDecorations: {
84
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["innerDecorations"]>;
85
+ required: true;
86
+ };
87
+ HTMLAttributes: {
88
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["HTMLAttributes"]>;
89
+ required: true;
90
+ };
91
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
92
+ export default _default;
@@ -0,0 +1,350 @@
1
+ <template>
2
+ <!-- The component requires the following global css variables to be set, see CssVariables type:
3
+ --dragHandleSize
4
+ --dragHandleMargin
5
+ --dragHandleImage
6
+ --dragHandleCollapseIndicatorImage
7
+ --pmNodeTypeMargin
8
+ --pmDragDropIndicatorHeight
9
+ -->
10
+ <!-- @vue-expect-error role is a valid attribute -->
11
+ <node-view-wrapper
12
+ :class="twMerge(
13
+ `
14
+ group/item
15
+ pl-[calc(var(--dragHandleSize)+var(--dragHandleMargin)+var(--spacing))]
16
+ relative
17
+ `,
18
+ passedDragThreshold && `
19
+ pointer-events-none
20
+ bg-neutral-100
21
+ dark:bg-neutral-900
22
+ rounded-sm
23
+ `
24
+ )"
25
+ role="listitem"
26
+ :style="
27
+ `
28
+ --counterStyle:${counterStyle};
29
+ --nodeState:${nodeState?.icon};
30
+ --typeHandleHeight:${typeHandleHeight}px;
31
+ `
32
+ "
33
+ v-extract-root-el="(el) => itemEl = el"
34
+ >
35
+ <DragTreeHandle
36
+ :has-children="hasChildren"
37
+ :hide-children="node.attrs.hideChildren"
38
+ :passed-drag-threshold="passedDragThreshold"
39
+ :class="twMerge(
40
+ `[&>.collapse-indicator]:h-[var(--typeHandleHeight)]`,
41
+ hasSingularSelection && `
42
+ group-[.using-touch]:flex
43
+ group-[.using-touch]:opacity-100
44
+ `
45
+ )"
46
+ @collapse-indicator-click="collapseIndicatorClick"
47
+ @grab-handle-pointer-down="grabPointerDown"
48
+ @grab-handle-passive-touch-start="touchStart"
49
+ @grab-handle-context-menu="editor.commands.toggleItemMenu(props.node.attrs.blockId)"
50
+ />
51
+ <div
52
+ contenteditable="false"
53
+ :class="
54
+ twMerge(
55
+ `type-handle
56
+ flex flex-col justify-center items-center
57
+ w-[1.2rem]
58
+ center
59
+ left-[calc(var(--dragHandleSize)+var(--dragHandleMargin))+var(--pmNodeTypeMargin)]
60
+ absolute
61
+ z-[1]
62
+ `,
63
+ node.attrs.type.startsWith('ordered') && `
64
+ [counter-increment:ordered]
65
+ after:content-[counter(ordered,var(--counterStyle))_\'.\']
66
+ `,
67
+ node.attrs.type.startsWith('unordered') && `
68
+ after:content-[counter(none,var(--counterStyle))]
69
+ `,
70
+ node.attrs.type.startsWith('stateful') && `
71
+ after:h-[1.2rem]
72
+ after:content-[var(--nodeState)]
73
+ after:cursor-pointer
74
+ hover:after:[filter:drop-shadow(0px_1px_1px_rgba(0,0,0,0.4))]
75
+ hover:after:content-[var(--nodeState)]
76
+ `,
77
+ node.attrs.type === 'none' && `
78
+ hidden
79
+ `,
80
+ `type-${node.attrs.type}`
81
+ )
82
+ "
83
+ :style="`
84
+ height:var(--typeHandleHeight);
85
+ `"
86
+ :role="node.attrs.type.startsWith('stateful') ? 'checkbox' : ''"
87
+ :aria-checked="node.attrs.state"
88
+ tabindex="0"
89
+ @pointerdown="typeHandlePointerDown"
90
+ />
91
+ <node-view-content
92
+ as="li"
93
+ v-bind="node.attrs"
94
+ :class="twMerge(
95
+ `
96
+ item-content
97
+ [counter-reset:ordered]
98
+ relative
99
+ flex
100
+ block
101
+ full
102
+ `,
103
+ node.attrs.hideChildren && `
104
+ [&_ul.list]:hidden
105
+ `,
106
+ node.attrs.type !== 'none' && `
107
+ pl-[calc(1.2rem+var(--pmNodeTypeMargin))]
108
+ `
109
+ )"
110
+ />
111
+ </node-view-wrapper>
112
+ <Teleport
113
+ v-if="passedDragThreshold && pointerCoords"
114
+ :to="teleportTo"
115
+ >
116
+ <div
117
+ :id="cloneId"
118
+ class="
119
+ item-node-clone
120
+ fixed
121
+ cursor-pointer
122
+ scale-50
123
+ -m-2
124
+ pointer-events-none
125
+ select-none
126
+ bg-bg
127
+ dark:bg-neutral-900
128
+ border-neutral-500
129
+ border
130
+ rounded-sm
131
+ p-3
132
+ "
133
+ :style="`left:${pointerCoords.x}px;top:${pointerCoords.y}px`"
134
+ />
135
+ </Teleport>
136
+
137
+ <Teleport
138
+ v-if="dropIndicator !== void 0 && !scroll?.isScrolling.value"
139
+ :to="teleportTo"
140
+ >
141
+ <div
142
+ class="
143
+ fixed
144
+ h-[var(--pmDragDropIndicatorHeight,5px)]
145
+ bg-accent-500
146
+ opacity-50
147
+ "
148
+ :style="`
149
+ left:${dropIndicator.x}px;
150
+ top:calc(${dropIndicator.y}px ${dropIndicator.type !== 'before' ? `- (var(--pmDragDropIndicatorHeight, 5px))` : ''});
151
+ width:calc(${dropIndicator.width}px);
152
+ `"
153
+ />
154
+ </Teleport>
155
+ </template>
156
+
157
+ <script setup>
158
+ import { unreachable } from "@alanscodelog/utils/unreachable";
159
+ import { NodeViewContent, nodeViewProps, NodeViewWrapper } from "@tiptap/vue-3";
160
+ import { useDragWithThreshold } from "@witchcraft/ui/composables/useDragWithThreshold";
161
+ import { vExtractRootEl } from "@witchcraft/ui/directives/vExtractRootEl";
162
+ import { twMerge } from "tailwind-merge";
163
+ import { computed, inject, nextTick, onMounted, ref, watch } from "vue";
164
+ import DragTreeHandle from "./DragTreeHandle.vue";
165
+ import { editorScrollInjectionKey, editorTeleportToInjectionKey } from "../../../../injectionKeys.js";
166
+ import { createDropIndicator } from "../../../utils/createDropIndicator.js";
167
+ import { dropPointInfo } from "../../../utils/dropPointInfo.js";
168
+ import { findUpwards } from "../../../utils/findUpwards.js";
169
+ import { getElMaxVisualSize } from "../../../utils/getElMaxVisualSize.js";
170
+ import { getElPropertyAsInt } from "../../../utils/getElPropertyAsInt.js";
171
+ import { debugNode } from "../../../utils/internal/debugNode.js";
172
+ import { useHandleHeight } from "../composables/useHandleHeight.js";
173
+ import { useNodeStates } from "../composables/useNodeStates.js";
174
+ import { statesInjectionKey } from "../types.js";
175
+ const props = defineProps(nodeViewProps);
176
+ const itemEl = ref(null);
177
+ const hasChildren = computed(() => props.node.childCount > 1);
178
+ const { handleHeight: typeHandleHeight, recalculateHandleHeight } = useHandleHeight(itemEl);
179
+ watch([() => props.node, () => props.decorations], () => {
180
+ nextTick(() => {
181
+ recalculateHandleHeight();
182
+ });
183
+ });
184
+ const states = inject(statesInjectionKey);
185
+ const { nodeState, counterStyle } = useNodeStates(props);
186
+ const hasSingularSelection = computed(() => props.decorations.find((deco) => deco.type.attrs.hasSingularSelection));
187
+ const teleportTo = inject(editorTeleportToInjectionKey, "body");
188
+ const cloneId = `editor-item-node-clone`;
189
+ const {
190
+ pointerCoords,
191
+ passedDragThreshold,
192
+ startDragThresholdCheck,
193
+ endDragThresholdCheck,
194
+ checkDragThreshold
195
+ } = useDragWithThreshold({ threshold: ref(5) });
196
+ const scroll = inject(editorScrollInjectionKey);
197
+ if (!scroll) {
198
+ throw new Error("editorScrollInjectionKey must be provided.");
199
+ }
200
+ const draggedEl = ref(null);
201
+ const dropIndicator = ref(void 0);
202
+ let dropoverEl;
203
+ let firstDragEvent = false;
204
+ function stopDrag() {
205
+ firstDragEvent = false;
206
+ props.editor.commands.setCursorVisible(true);
207
+ if ("enableMarkMenus" in props.editor.commands) {
208
+ ;
209
+ props.editor.commands.enableMarkMenus();
210
+ }
211
+ endDragThresholdCheck();
212
+ document.removeEventListener("keyup", escapeDrag);
213
+ document.removeEventListener("pointermove", grabPointerMove);
214
+ document.removeEventListener("pointerup", grabPointerUp);
215
+ scroll?.endScroll();
216
+ const clone = document.querySelector(`#${cloneId}`);
217
+ if (clone) clone.innerHTML = "";
218
+ draggedEl.value = null;
219
+ dropoverEl = void 0;
220
+ dropIndicator.value = void 0;
221
+ }
222
+ function escapeDrag(e) {
223
+ if (e.code === "Escape") stopDrag();
224
+ }
225
+ function grabPointerDown(e) {
226
+ e.preventDefault();
227
+ startDragThresholdCheck(e);
228
+ if (e.button !== 0) return;
229
+ document.addEventListener("pointermove", grabPointerMove);
230
+ document.addEventListener("pointerup", grabPointerUp);
231
+ document.addEventListener("keyup", escapeDrag);
232
+ }
233
+ function grabPointerMove(e) {
234
+ e.preventDefault();
235
+ checkDragThreshold(e);
236
+ if (passedDragThreshold.value) {
237
+ if (!firstDragEvent) {
238
+ firstDragEvent = true;
239
+ props.editor.commands.setCursorVisible(false);
240
+ if ("disableMarkMenus" in props.editor.commands) {
241
+ ;
242
+ props.editor.commands.disableMarkMenus();
243
+ }
244
+ }
245
+ if (!draggedEl.value) {
246
+ draggedEl.value = itemEl.value.cloneNode(true);
247
+ setTimeout(() => {
248
+ const clone = document.querySelector(`#${cloneId}`);
249
+ clone?.append(draggedEl.value);
250
+ });
251
+ }
252
+ scroll?.scrollEdges(e.clientX, e.clientY);
253
+ if (pointerCoords.value && e.target instanceof HTMLElement) {
254
+ const editorEl = props.editor.view.dom;
255
+ const editorBox = editorEl.getBoundingClientRect();
256
+ const target = document.elementFromPoint(editorBox.x + editorBox.width - 1, pointerCoords.value.y)?.closest(".item-content > *") ?? null;
257
+ const targetIsSelf = target === itemEl.value || itemEl.value?.contains(target);
258
+ const targetIsParentIsBlock = target?.parentElement?.classList.contains("item-content");
259
+ const parentEl = editorEl.parentElement;
260
+ if (!parentEl || !target || targetIsSelf || !targetIsParentIsBlock) return;
261
+ const dropOverPos = props.editor.view.posAtDOM(target, 0);
262
+ if (dropOverPos < 0) {
263
+ return;
264
+ }
265
+ const width = getElMaxVisualSize(parentEl).width;
266
+ const targetBox = target.getBoundingClientRect();
267
+ const indentX = getElPropertyAsInt(itemEl.value, "padding-left");
268
+ const dropInfo = dropPointInfo(pointerCoords.value, targetBox, indentX);
269
+ dropoverEl = target;
270
+ dropIndicator.value = createDropIndicator(dropInfo, targetBox, indentX, width);
271
+ }
272
+ }
273
+ }
274
+ function grabPointerUp(_e) {
275
+ if (!passedDragThreshold.value || !props.editor.isEditable) {
276
+ } else {
277
+ if (dropoverEl && dropIndicator.value) {
278
+ const dropOverPos = props.editor.view.posAtDOM(dropoverEl, 0);
279
+ if (dropOverPos < 0) {
280
+ stopDrag();
281
+ return;
282
+ }
283
+ const {
284
+ /* $pos: $dropPos, */
285
+ pos
286
+ } = findUpwards(
287
+ props.editor.state.doc,
288
+ dropOverPos,
289
+ ($pos) => $pos.node().type.name === "item",
290
+ { stop: 2 }
291
+ // we shouldn't have to go more than 2 nodes up
292
+ );
293
+ if (!pos || !pos) {
294
+ stopDrag();
295
+ return;
296
+ }
297
+ const propsPos = props.getPos();
298
+ if (!propsPos) unreachable();
299
+ props.editor.commands.copyOrMoveItem(
300
+ propsPos + 1,
301
+ pos,
302
+ dropIndicator.value.type,
303
+ {
304
+ move: true
305
+ }
306
+ );
307
+ }
308
+ }
309
+ stopDrag();
310
+ }
311
+ function collapseIndicatorClick(e) {
312
+ const pos = props.getPos();
313
+ if (!pos) unreachable();
314
+ const $pos = props.editor.state.doc.resolve(pos);
315
+ debugNode($pos.node());
316
+ const wantedPos = pos + 2;
317
+ const sel = props.editor.state.selection;
318
+ props.editor.chain().setTextSelection({ from: wantedPos, to: wantedPos }).changeAttrs("item", { hideChildren: !props.node.attrs.hideChildren }).setTextSelection({ from: sel.from, to: sel.to }).run();
319
+ e.preventDefault();
320
+ }
321
+ function typeHandlePointerDown(e) {
322
+ const pos = props.getPos();
323
+ if (!pos) unreachable();
324
+ if (nodeState.value) {
325
+ const wantedPos = pos + 2;
326
+ const entries = states?.value[counterStyle.value]?.entries;
327
+ if (entries === void 0) unreachable();
328
+ let stateIndex = entries.indexOf(nodeState.value);
329
+ if (stateIndex === -1) unreachable();
330
+ if (stateIndex + 1 >= entries.length) stateIndex = 0;
331
+ const sel = props.editor.state.selection;
332
+ if (props.editor.view.dom !== document.activeElement) {
333
+ props.editor.commands.focus();
334
+ }
335
+ props.editor.chain().setTextSelection({ from: wantedPos, to: wantedPos }).changeItemType({
336
+ type: props.node.attrs.type,
337
+ state: entries[stateIndex + 1].value
338
+ }).setTextSelection({ from: sel.from, to: sel.to }).run();
339
+ e.preventDefault();
340
+ }
341
+ }
342
+ function touchStart(e) {
343
+ e.preventDefault();
344
+ }
345
+ onMounted(() => {
346
+ nextTick(() => {
347
+ recalculateHandleHeight();
348
+ });
349
+ });
350
+ </script>
@@ -0,0 +1,92 @@
1
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ editor: {
3
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["editor"]>;
4
+ required: true;
5
+ };
6
+ node: {
7
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["node"]>;
8
+ required: true;
9
+ };
10
+ decorations: {
11
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["decorations"]>;
12
+ required: true;
13
+ };
14
+ selected: {
15
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["selected"]>;
16
+ required: true;
17
+ };
18
+ extension: {
19
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["extension"]>;
20
+ required: true;
21
+ };
22
+ getPos: {
23
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["getPos"]>;
24
+ required: true;
25
+ };
26
+ updateAttributes: {
27
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["updateAttributes"]>;
28
+ required: true;
29
+ };
30
+ deleteNode: {
31
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["deleteNode"]>;
32
+ required: true;
33
+ };
34
+ view: {
35
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["view"]>;
36
+ required: true;
37
+ };
38
+ innerDecorations: {
39
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["innerDecorations"]>;
40
+ required: true;
41
+ };
42
+ HTMLAttributes: {
43
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["HTMLAttributes"]>;
44
+ required: true;
45
+ };
46
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
47
+ editor: {
48
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["editor"]>;
49
+ required: true;
50
+ };
51
+ node: {
52
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["node"]>;
53
+ required: true;
54
+ };
55
+ decorations: {
56
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["decorations"]>;
57
+ required: true;
58
+ };
59
+ selected: {
60
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["selected"]>;
61
+ required: true;
62
+ };
63
+ extension: {
64
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["extension"]>;
65
+ required: true;
66
+ };
67
+ getPos: {
68
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["getPos"]>;
69
+ required: true;
70
+ };
71
+ updateAttributes: {
72
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["updateAttributes"]>;
73
+ required: true;
74
+ };
75
+ deleteNode: {
76
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["deleteNode"]>;
77
+ required: true;
78
+ };
79
+ view: {
80
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["view"]>;
81
+ required: true;
82
+ };
83
+ innerDecorations: {
84
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["innerDecorations"]>;
85
+ required: true;
86
+ };
87
+ HTMLAttributes: {
88
+ type: import("vue").PropType<import("@tiptap/core").NodeViewProps["HTMLAttributes"]>;
89
+ required: true;
90
+ };
91
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
92
+ export default _default;
@@ -0,0 +1,5 @@
1
+ export declare const defaultItemMenu: (import("../types.ts").ItemMenuCommand | {
2
+ type: "group";
3
+ title: string;
4
+ variations: import("../types.ts").ItemMenuCommand[];
5
+ })[];
@@ -0,0 +1,42 @@
1
+ import {
2
+ bulletItemCommand,
3
+ codeBlockCommand,
4
+ deleteNodesCommand,
5
+ embeddedDocCommand,
6
+ heading1Command,
7
+ heading2Command,
8
+ heading3Command,
9
+ heading4Command,
10
+ heading5Command,
11
+ heading6Command,
12
+ numberedItemCommand,
13
+ paragraphCommand,
14
+ tableCommand
15
+ } from "../itemMenuMenuItems.js";
16
+ export const defaultItemMenu = [
17
+ deleteNodesCommand,
18
+ {
19
+ type: "group",
20
+ title: "Change Item Type",
21
+ variations: [
22
+ bulletItemCommand,
23
+ numberedItemCommand
24
+ ]
25
+ },
26
+ {
27
+ type: "group",
28
+ title: "Change Block Type",
29
+ variations: [
30
+ codeBlockCommand,
31
+ embeddedDocCommand,
32
+ paragraphCommand,
33
+ tableCommand,
34
+ heading1Command,
35
+ heading2Command,
36
+ heading3Command,
37
+ heading4Command,
38
+ heading5Command,
39
+ heading6Command
40
+ ]
41
+ }
42
+ ];
@@ -0,0 +1,5 @@
1
+ import { type Ref } from "vue";
2
+ export declare function useHandleHeight(handlesEl: Ref<HTMLElement | null>): {
3
+ handleHeight: Ref<number>;
4
+ recalculateHandleHeight: () => void;
5
+ };