@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,85 @@
1
+ import { isArray } from "@alanscodelog/utils/isArray";
2
+ import { keys } from "@alanscodelog/utils/keys";
3
+ import { mergeAttributes, Node, textblockTypeInputRule } from "@tiptap/core";
4
+ import { changeLevelAttr } from "./commands/changeLevelAttr.js";
5
+ export const Heading = Node.create({
6
+ name: "heading",
7
+ content: "inline*",
8
+ group: "block",
9
+ defining: true,
10
+ addOptions() {
11
+ return {
12
+ levels: [1, 2, 3, 4, 5, 6],
13
+ HTMLAttributes: {
14
+ class: [
15
+ "text-xl",
16
+ "text-2xl/normal",
17
+ "text-3xl/normal",
18
+ "text-4xl/normal",
19
+ "text-5xl/normal",
20
+ "text-6xl/normal"
21
+ ]
22
+ }
23
+ };
24
+ },
25
+ addAttributes() {
26
+ return {
27
+ level: {
28
+ default: 1,
29
+ rendered: false
30
+ }
31
+ };
32
+ },
33
+ parseHTML() {
34
+ return this.options.levels.map((level) => ({
35
+ tag: `h${level}`,
36
+ attrs: { level }
37
+ }));
38
+ },
39
+ // eslint-disable-next-line @typescript-eslint/naming-convention
40
+ renderHTML({ HTMLAttributes, node }) {
41
+ const level = this.options.levels.includes(node.attrs.level) ? node.attrs.level : this.options.levels[0];
42
+ const thisFinalHTMLAttributes = { ...this.options.HTMLAttributes };
43
+ for (const key of keys(thisFinalHTMLAttributes)) {
44
+ if (isArray(thisFinalHTMLAttributes[key])) {
45
+ thisFinalHTMLAttributes[key] = thisFinalHTMLAttributes[key][level - 1];
46
+ }
47
+ }
48
+ return [
49
+ `h${level}`,
50
+ mergeAttributes(
51
+ thisFinalHTMLAttributes,
52
+ HTMLAttributes,
53
+ {
54
+ level
55
+ }
56
+ ),
57
+ 0
58
+ ];
59
+ },
60
+ addCommands() {
61
+ return {
62
+ setHeading: changeLevelAttr({
63
+ attributeKey: "level",
64
+ nodeType: this.type.name,
65
+ allowedValues: this.options.levels,
66
+ toggleGroups: ["block"]
67
+ }),
68
+ toggleHeading: ({ level = 1 }) => ({ commands }) => {
69
+ if (!this.options.levels.includes(level)) {
70
+ return false;
71
+ }
72
+ return commands.toggleNode(this.name, "paragraph", { level });
73
+ }
74
+ };
75
+ },
76
+ addInputRules() {
77
+ return this.options.levels.map((level) => textblockTypeInputRule({
78
+ find: new RegExp(`^(#{1,${level}})\\s$`),
79
+ type: this.type,
80
+ getAttributes: {
81
+ level
82
+ }
83
+ }));
84
+ }
85
+ });
@@ -0,0 +1,16 @@
1
+ import { type Command } from "@tiptap/core";
2
+ import type { CommandAttributeOptions, CommandToggleNodesOptions } from "../../../../types/index.js";
3
+ declare module "@tiptap/core" {
4
+ interface Commands<ReturnType> {
5
+ changeLevelAttr: {
6
+ changeLevelAttr: (opts: {
7
+ level: number;
8
+ onlyHeading: boolean;
9
+ }, pos?: number) => ReturnType;
10
+ };
11
+ }
12
+ }
13
+ export declare const changeLevelAttr: ({ nodeType, allowedValues, attributeKey, toggleGroups, toggleNodeTypeNames }: CommandAttributeOptions<number> & CommandToggleNodesOptions) => ({ level, onlyHeadings }: {
14
+ level: number;
15
+ onlyHeadings?: boolean;
16
+ }, pos?: number) => Command;
@@ -0,0 +1,33 @@
1
+ import { getNodeType } from "@tiptap/core";
2
+ import { findUpwards } from "../../../utils/findUpwards.js";
3
+ import { createNodeTypesList } from "../../../utils/internal/createNodeTypesList.js";
4
+ export const changeLevelAttr = ({
5
+ nodeType,
6
+ allowedValues,
7
+ attributeKey,
8
+ toggleGroups,
9
+ toggleNodeTypeNames
10
+ }) => ({
11
+ level,
12
+ onlyHeadings = false
13
+ }, pos) => ({ state, commands, tr, editor }) => {
14
+ if (!allowedValues.includes(level)) {
15
+ return false;
16
+ }
17
+ const nodeTypes = createNodeTypesList(
18
+ editor.schema,
19
+ [nodeType],
20
+ onlyHeadings ? void 0 : toggleNodeTypeNames,
21
+ onlyHeadings ? void 0 : toggleGroups
22
+ );
23
+ const nodeTypeType = getNodeType(nodeType, editor.schema);
24
+ const from = pos ?? state.selection.map(tr.doc, tr.mapping).from;
25
+ const nodePos = findUpwards(tr.doc, from, ($pos) => {
26
+ if (nodeTypes.includes($pos.node().type.name)) {
27
+ return true;
28
+ }
29
+ return false;
30
+ })?.$pos?.pos;
31
+ if (!nodePos) return false;
32
+ return commands.setNode(nodeTypeType, { [`${attributeKey}`]: level }, nodePos - 1);
33
+ };
@@ -0,0 +1,14 @@
1
+ export interface HeadingNodeOptions<T extends number[] = [1, 2, 3, 4, 5, 6]> {
2
+ /**
3
+ * The available heading levels.
4
+ */
5
+ levels: T;
6
+ /**
7
+ * The HTML attributes for the heading node.
8
+ *
9
+ * Each value can also be an array of values for each heading level.
10
+ *
11
+ * The default adds tailwind text size classes.
12
+ */
13
+ HTMLAttributes: Record<string, any>;
14
+ }
File without changes
@@ -0,0 +1,72 @@
1
+ import { Mark } from "@tiptap/core";
2
+ import { type HighlightMarkOptions } from "./types.js";
3
+ declare module "@tiptap/core" {
4
+ interface Commands<ReturnType> {
5
+ highlight: {
6
+ /**
7
+ * Set a highlight mark.
8
+ *
9
+ * The color must be one of the keys in the configured `colors` option or it will throw an error.
10
+ *
11
+ * If no color is provided, the default color will be used.
12
+ */
13
+ setHighlight: (color?: keyof HighlightMarkOptions["colors"]) => ReturnType;
14
+ /**
15
+ * Toggle a highlight mark.
16
+ *
17
+ * The color must be one of the keys in the configured `colors` option or it will throw an error.
18
+ *
19
+ * If no color is provided, the default color will be used.
20
+ */
21
+ toggleHighlight: (color?: keyof HighlightMarkOptions["colors"]) => ReturnType;
22
+ /**
23
+ * Unset a highlight mark.
24
+ */
25
+ unsetHighlight: () => ReturnType;
26
+ /**
27
+ * Set the highlight options.
28
+ *
29
+ * Note that you will need to keep the same keys to avoid having to manually migrate the doc. You can add more keys, but again, not remove any without having to migrate the doc. That's why they are named slot* by default, to avoid tight coupling with colors.
30
+ */
31
+ setHighlightOptions: (options: Partial<HighlightMarkOptions>) => ReturnType;
32
+ };
33
+ }
34
+ }
35
+ export declare const defaultColors: {
36
+ slot1: {
37
+ name: string;
38
+ color: string;
39
+ matches: string[];
40
+ };
41
+ slot2: {
42
+ name: string;
43
+ color: string;
44
+ matches: string[];
45
+ };
46
+ slot3: {
47
+ name: string;
48
+ color: string;
49
+ matches: string[];
50
+ };
51
+ slot4: {
52
+ name: string;
53
+ color: string;
54
+ matches: string[];
55
+ };
56
+ slot5: {
57
+ name: string;
58
+ color: string;
59
+ matches: string[];
60
+ };
61
+ };
62
+ /**
63
+ * For highlighting text with pre-configured colors.
64
+ *
65
+ * Colors can be changed on the fly using setHighlightOptions.
66
+ *
67
+ * The Commands feature includes a HighlightIcon component designed to work with this extension. It's included in the CommandBar menu by default.
68
+ *
69
+ * See also `createToggleHighlightCommand` in commandBarMenuItems.ts for creating a custom number of commands with custom prefixes if needed.
70
+ */
71
+ export declare const Highlight: Mark<HighlightMarkOptions<"slot1" | "slot2" | "slot3" | "slot4" | "slot5">, any>;
72
+ export type MarkHighlightName = "highlight";
@@ -0,0 +1,163 @@
1
+ import { keys } from "@alanscodelog/utils/keys";
2
+ import {
3
+ Mark,
4
+ markInputRule,
5
+ markPasteRule,
6
+ mergeAttributes
7
+ } from "@tiptap/core";
8
+ import { Plugin } from "@tiptap/pm/state";
9
+ import { inputRegex, pasteRegex } from "./retyped/tiptapHighlight.js";
10
+ import { highlightPluginKey } from "./types.js";
11
+ import { createStateOnlyPluginObjApply } from "../../utils/createStateOnlyPluginObjApply.js";
12
+ export const defaultColors = {
13
+ slot1: {
14
+ name: "Yellow",
15
+ color: "rgba(255, 234, 54, 0.5)",
16
+ matches: ["#ffff00", "yellow"]
17
+ },
18
+ slot2: {
19
+ name: "Orange",
20
+ color: "rgba(255, 132, 0, 0.5)",
21
+ matches: ["#ffa500", "orange"]
22
+ },
23
+ slot3: {
24
+ name: "Red",
25
+ color: "rgba(255, 0, 0, 0.5)",
26
+ matches: ["#ff0000", "red"]
27
+ },
28
+ slot4: {
29
+ name: "Green",
30
+ color: "rgba(70, 177, 0, 0.5)",
31
+ matches: ["#008000", "green"]
32
+ },
33
+ slot5: {
34
+ name: "Blue",
35
+ color: "rgba(0, 101, 255, 0.5)",
36
+ matches: ["#0000ff", "blue"]
37
+ }
38
+ };
39
+ export const Highlight = Mark.create({
40
+ name: "highlight",
41
+ addOptions() {
42
+ return {
43
+ defaultColor: "slot1",
44
+ colors: defaultColors,
45
+ HTMLAttributes: {}
46
+ };
47
+ },
48
+ addAttributes() {
49
+ return {
50
+ color: {
51
+ default: null,
52
+ parseHTML: (element) => {
53
+ const color = element.getAttribute("data-color");
54
+ if (color && color in this.options.colors) {
55
+ return color;
56
+ }
57
+ const bgColor = element.style.backgroundColor;
58
+ const foundSimilar = keys(this.options.colors).find((key) => {
59
+ const c = this.options.colors[key];
60
+ if (c.color === color || color && c.matches?.includes(color) || c.color === bgColor || c.matches?.includes(bgColor)) return true;
61
+ return false;
62
+ });
63
+ if (foundSimilar) {
64
+ return foundSimilar;
65
+ }
66
+ if (color) {
67
+ return this.options.defaultColor;
68
+ }
69
+ return false;
70
+ },
71
+ renderHTML: (attributes) => {
72
+ const color = attributes.color;
73
+ if (!color) {
74
+ return {};
75
+ }
76
+ const finalColor = this.options.colors[color];
77
+ return {
78
+ "data-color": finalColor.color,
79
+ style: `background-color: ${finalColor.color}; color: inherit`
80
+ };
81
+ }
82
+ }
83
+ };
84
+ },
85
+ parseHTML() {
86
+ return [
87
+ {
88
+ tag: "mark"
89
+ }
90
+ ];
91
+ },
92
+ // eslint-disable-next-line @typescript-eslint/naming-convention
93
+ renderHTML({ HTMLAttributes }) {
94
+ return ["mark", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];
95
+ },
96
+ addCommands() {
97
+ return {
98
+ setHighlightOptions: (options) => ({ tr, dispatch }) => {
99
+ if (dispatch) {
100
+ tr.setMeta(highlightPluginKey, {
101
+ ...options,
102
+ colors: options.colors ? { ...options.colors } : void 0
103
+ });
104
+ }
105
+ return true;
106
+ },
107
+ setHighlight: (color) => ({ commands }) => {
108
+ if (color === void 0) {
109
+ return commands.setMark(this.name, { color: this.options.defaultColor });
110
+ }
111
+ if (color in this.options.colors) {
112
+ return commands.setMark(this.name, { color });
113
+ } else {
114
+ throw new Error(`Color ${color} not found in the Highlight options.`);
115
+ }
116
+ },
117
+ toggleHighlight: (color) => ({ commands }) => {
118
+ if (color === void 0) {
119
+ return commands.toggleMark(this.name, { color: this.options.defaultColor });
120
+ }
121
+ if (color in this.options.colors) {
122
+ return commands.toggleMark(this.name, { color });
123
+ } else {
124
+ throw new Error(`Color ${color} not found in the Highlight options.`);
125
+ }
126
+ },
127
+ unsetHighlight: () => ({ commands }) => commands.unsetMark(this.name)
128
+ };
129
+ },
130
+ addProseMirrorPlugins() {
131
+ const self = this;
132
+ return [
133
+ new Plugin({
134
+ key: highlightPluginKey,
135
+ state: {
136
+ init() {
137
+ return {
138
+ ...self.options,
139
+ colors: { ...self.options.colors }
140
+ };
141
+ },
142
+ apply: createStateOnlyPluginObjApply(highlightPluginKey)
143
+ }
144
+ })
145
+ ];
146
+ },
147
+ addInputRules() {
148
+ return [
149
+ markInputRule({
150
+ find: inputRegex,
151
+ type: this.type
152
+ })
153
+ ];
154
+ },
155
+ addPasteRules() {
156
+ return [
157
+ markPasteRule({
158
+ find: pasteRegex,
159
+ type: this.type
160
+ })
161
+ ];
162
+ }
163
+ });
@@ -0,0 +1,3 @@
1
+ // see ./tiptapHighlight.js
2
+ export declare const inputRegex: RegExp
3
+ export declare const pasteRegex: RegExp
@@ -0,0 +1,5 @@
1
+ /** Avoid importing the module directly to avoid interface merging. */
2
+ import { inputRegex as _inputRegex, pasteRegex as _pasteRegex } from "@tiptap/extension-highlight"
3
+
4
+ export const inputRegex = _inputRegex
5
+ export const pasteRegex = _pasteRegex
@@ -0,0 +1,27 @@
1
+ import { PluginKey } from "@tiptap/pm/state";
2
+ import type { HTMLAttributesOptions } from "../../../types/index.js";
3
+ export interface HighlightMarkOptions<T extends string = `slot${[1, 2, 3, 4, 5][number]}`> extends HTMLAttributesOptions {
4
+ /**
5
+ * The colors to use for the highlight in Record<name, {color: string, name: string}> format.
6
+ *
7
+ * This is to allow the colors/slots to be configurable by the user without needing to change the document when they do so since only the key is stored.
8
+ *
9
+ * The value is a record to allow additional properties to be stored.
10
+ *
11
+ * The `matches` property can be used to specify an additional array of strings/colors to match when parsing HTML.
12
+ *
13
+ * The default is Record<"slotX", {color: "rgbaa(...)", name: "colorName", matches?: [name, "#color"]}>
14
+ */
15
+ colors: Record<T, {
16
+ color: string;
17
+ name: string;
18
+ matches?: string[];
19
+ }>;
20
+ /**
21
+ * For when a non-matching color is found in the HTML. Default is slot1 which is yellow.
22
+ */
23
+ defaultColor: T;
24
+ }
25
+ export declare const highlightPluginKey: PluginKey<{
26
+ colors: HighlightMarkOptions["colors"];
27
+ }>;
@@ -0,0 +1,2 @@
1
+ import { PluginKey } from "@tiptap/pm/state";
2
+ export const highlightPluginKey = new PluginKey("highlightPluginKey");
@@ -0,0 +1,35 @@
1
+ import type { Dispatch, Extension } from "@tiptap/core";
2
+ import { type EditorState } from "@tiptap/pm/state";
3
+ declare module "@tiptap/core" {
4
+ interface Commands<ReturnType> {
5
+ historyExtended: {
6
+ /**
7
+ * Set the functions needed to forward history commands.
8
+ *
9
+ * Set to null to disable. Should be set to null before destroying the editor.
10
+ */
11
+ setHistoryRedirect: (redirectState?: () => EditorState | undefined, redirectDispatch?: Dispatch) => ReturnType;
12
+ };
13
+ }
14
+ }
15
+ declare module "@tiptap/extension-history" {
16
+ interface HistoryOptions {
17
+ /**
18
+ * If set, undo and redo will be forwarded to the editor this function returns instead of the current one. This makes handling embedded editors easier.
19
+ *
20
+ * This is a function so as to make it easier to always get the latest state.
21
+ */
22
+ redirectState?: () => EditorState | undefined;
23
+ /**
24
+ * Required if redirectState is set. Tells the extension how to forward the transactions.
25
+ */
26
+ redirectDispatch?: Dispatch;
27
+ }
28
+ }
29
+ export declare const filterKey = "filterForHistoryForwarding";
30
+ /**
31
+ * Extends the existing history extension to allow for forwarding of history for embedded editors.
32
+ *
33
+ * The embedded editor node view will take care of
34
+ */
35
+ export declare const History: Extension<any, any>;
@@ -0,0 +1,63 @@
1
+ import TipTapHistoryExtension from "@tiptap/extension-history";
2
+ import { history, redo, undo } from "@tiptap/pm/history";
3
+ import { Plugin, PluginKey } from "@tiptap/pm/state";
4
+ export const filterKey = "filterForHistoryForwarding";
5
+ export const History = TipTapHistoryExtension.extend({
6
+ name: "history",
7
+ addOptions() {
8
+ return {
9
+ depth: 100,
10
+ newGroupDelay: 500,
11
+ redirectState: void 0,
12
+ redirectDispatch: void 0
13
+ };
14
+ },
15
+ addCommands() {
16
+ return {
17
+ undo: () => ({ state, dispatch, tr }) => {
18
+ const redirectState = this.options.redirectState?.();
19
+ const redirectDispatch = dispatch && this.options.redirectDispatch;
20
+ if (redirectState) {
21
+ if (dispatch) {
22
+ tr.setMeta(filterKey, true);
23
+ }
24
+ return undo(redirectState, redirectDispatch);
25
+ } else {
26
+ return undo(state, dispatch);
27
+ }
28
+ },
29
+ redo: () => ({ state, dispatch, tr }) => {
30
+ const redirectState = this.options.redirectState?.();
31
+ const redirectDispatch = this.options.redirectDispatch;
32
+ if (redirectState) {
33
+ tr.setMeta(filterKey, true);
34
+ redo(redirectState, redirectDispatch);
35
+ return true;
36
+ } else {
37
+ return redo(state, dispatch);
38
+ }
39
+ },
40
+ setHistoryRedirect: (redirectState, redirectDispatch) => ({ dispatch }) => {
41
+ if (dispatch) {
42
+ this.options.redirectState = redirectState;
43
+ this.options.redirectDispatch = redirectDispatch;
44
+ }
45
+ return true;
46
+ }
47
+ };
48
+ },
49
+ addProseMirrorPlugins() {
50
+ return [
51
+ history(this.options),
52
+ new Plugin({
53
+ key: new PluginKey("history-forwarding"),
54
+ filterTransaction: (transaction) => {
55
+ if (transaction.getMeta(filterKey)) {
56
+ return false;
57
+ }
58
+ return true;
59
+ }
60
+ })
61
+ ];
62
+ }
63
+ });
@@ -0,0 +1,21 @@
1
+ import { Node } from "@tiptap/core";
2
+ import type { IframeNodeOptions } from "./types.js";
3
+ declare module "@tiptap/core" {
4
+ interface Commands<ReturnType> {
5
+ iframe: {
6
+ /**
7
+ * Add an iframe
8
+ */
9
+ setIframe: (options: {
10
+ src: string;
11
+ }) => ReturnType;
12
+ /**
13
+ * Set the options for the iframe plugin, such as the default HTMLAttributes and the url handlers.
14
+ */
15
+ setIframeOptions: (options: IframeNodeOptions) => ReturnType;
16
+ openExternalLink: (url: string) => ReturnType;
17
+ };
18
+ }
19
+ }
20
+ export declare const Iframe: Node<IframeNodeOptions, any>;
21
+ export type NodeIframeName = "iframe";
@@ -0,0 +1,127 @@
1
+ import { mergeAttributes, Node, nodePasteRule } from "@tiptap/core";
2
+ import { VueNodeViewRenderer } from "@tiptap/vue-3";
3
+ import IframeNodeView from "./components/IframeNodeView.vue";
4
+ import { defaultAllow, InstagramSourceParser, VimeoSourceParser, YoutubeSourceParser } from "./IframeParsers.js";
5
+ export const Iframe = Node.create({
6
+ name: "iframe",
7
+ group: "block",
8
+ atom: true,
9
+ addOptions() {
10
+ return {
11
+ HTMLAttributes: {},
12
+ handlers: {
13
+ youtube: new YoutubeSourceParser(),
14
+ instagram: new InstagramSourceParser(),
15
+ vimeo: new VimeoSourceParser()
16
+ }
17
+ };
18
+ },
19
+ addAttributes() {
20
+ return {
21
+ src: {
22
+ default: null
23
+ },
24
+ frameborder: {
25
+ default: 0
26
+ },
27
+ allow: defaultAllow,
28
+ aspectRatio: {
29
+ default: 16 / 9
30
+ }
31
+ };
32
+ },
33
+ parseHTML() {
34
+ return [{
35
+ tag: "iframe",
36
+ getAttrs: (element) => {
37
+ const src = element.getAttribute("src");
38
+ if (!src) {
39
+ return false;
40
+ }
41
+ for (const value of Object.values(this.options.handlers)) {
42
+ if (value.matchUrl?.test(src)) {
43
+ const attrs = value.parseAttributes(element);
44
+ if (attrs) {
45
+ return {
46
+ ...attrs,
47
+ src: value.cleanUrl(src)
48
+ };
49
+ }
50
+ }
51
+ }
52
+ return { src };
53
+ }
54
+ }];
55
+ },
56
+ // eslint-disable-next-line @typescript-eslint/naming-convention
57
+ renderHTML({ HTMLAttributes }) {
58
+ return [
59
+ "div",
60
+ mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {
61
+ class: `
62
+ iframe-wrapper
63
+ group/embed
64
+ relative
65
+ w-[99%]
66
+ max-w-[var(--pm-max-embed-width)]
67
+ ${HTMLAttributes?.class ?? this.options.HTMLAttributes?.class ?? ""}
68
+ `
69
+ }),
70
+ [
71
+ "iframe",
72
+ { class: "w-full aspect-video" }
73
+ ]
74
+ ];
75
+ },
76
+ addPasteRules() {
77
+ return [
78
+ nodePasteRule({
79
+ find: (text) => {
80
+ for (const [key, value] of Object.entries(this.options.handlers)) {
81
+ if (!value.matchUrl) continue;
82
+ const res = text.match(value.matchUrl);
83
+ if (res) {
84
+ return [
85
+ {
86
+ ...res,
87
+ text,
88
+ index: 0,
89
+ type: key
90
+ }
91
+ ];
92
+ }
93
+ }
94
+ return null;
95
+ },
96
+ type: this.type,
97
+ getAttributes: (match) => {
98
+ for (const value of Object.values(this.options.handlers)) {
99
+ if (value.matchUrl && match[0].match(value.matchUrl)) {
100
+ return {
101
+ ...value.defaultAttributes,
102
+ src: value.cleanUrl(match[0])
103
+ };
104
+ }
105
+ }
106
+ return false;
107
+ }
108
+ })
109
+ ];
110
+ },
111
+ addNodeView() {
112
+ return VueNodeViewRenderer(IframeNodeView);
113
+ },
114
+ addCommands() {
115
+ return {
116
+ setIframe: (options) => ({ tr, dispatch }) => {
117
+ const { selection } = tr;
118
+ const node = this.type.create(options);
119
+ if (dispatch) {
120
+ tr.replaceRangeWith(selection.from, selection.to, node);
121
+ }
122
+ return true;
123
+ },
124
+ setIframeOptions: (options) => ({ commands }) => commands.updateAttributes(this.name, options)
125
+ };
126
+ }
127
+ });