@witchcraft/editor 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module.d.mts +15 -2
- package/dist/module.json +1 -1
- package/dist/module.mjs +67 -13
- package/dist/runtime/assets/base.css +1 -0
- package/dist/runtime/assets/handle-arrow.svg +16 -0
- package/dist/runtime/assets/handle-border-circles-single.svg +44 -0
- package/dist/runtime/assets/handle-border-circles.svg +27 -0
- package/dist/runtime/assets/handle-temp.svg +1 -0
- package/dist/runtime/assets/utils.css +1 -0
- package/dist/runtime/components/CodeBlockThemePicker.d.vue.ts +12 -0
- package/dist/runtime/components/CodeBlockThemePicker.vue +123 -0
- package/dist/runtime/components/CodeBlockThemePicker.vue.d.ts +12 -0
- package/dist/runtime/components/Commands.d.vue.ts +10 -0
- package/dist/runtime/components/Commands.vue +60 -0
- package/dist/runtime/components/Commands.vue.d.ts +10 -0
- package/dist/runtime/components/Editor.d.vue.ts +40 -0
- package/dist/runtime/components/Editor.vue +208 -0
- package/dist/runtime/components/Editor.vue.d.ts +40 -0
- package/dist/runtime/components/EditorDemoApp.d.vue.ts +2 -0
- package/dist/runtime/components/EditorDemoApp.vue +104 -0
- package/dist/runtime/components/EditorDemoApp.vue.d.ts +2 -0
- package/dist/runtime/components/EditorDemoControls.d.vue.ts +12 -0
- package/dist/runtime/components/EditorDemoControls.vue +36 -0
- package/dist/runtime/components/EditorDemoControls.vue.d.ts +12 -0
- package/dist/runtime/components/TestWrapper.d.vue.ts +11 -0
- package/dist/runtime/components/TestWrapper.vue +63 -0
- package/dist/runtime/components/TestWrapper.vue.d.ts +11 -0
- package/dist/runtime/composables/useEditor.d.ts +9 -0
- package/dist/runtime/composables/useEditor.js +21 -0
- package/dist/runtime/composables/useWindowDebugging.d.ts +3 -0
- package/dist/runtime/composables/useWindowDebugging.js +16 -0
- package/dist/runtime/demo/App.d.vue.ts +2 -0
- package/dist/runtime/demo/App.vue +101 -0
- package/dist/runtime/demo/App.vue.d.ts +2 -0
- package/dist/runtime/demo/README.md +1 -0
- package/dist/runtime/demo/main.d.ts +1 -0
- package/dist/runtime/demo/main.js +4 -0
- package/dist/runtime/demo/tailwind.css +1 -0
- package/dist/runtime/env.d.ts +2 -0
- package/dist/runtime/injectionKeys.d.ts +6 -0
- package/dist/runtime/injectionKeys.js +3 -0
- package/dist/runtime/main.lib.d.ts +2 -0
- package/dist/runtime/main.lib.js +2 -0
- package/dist/runtime/pm/commands/backspace.d.ts +12 -0
- package/dist/runtime/pm/commands/backspace.js +26 -0
- package/dist/runtime/pm/commands/changeAttrs.d.ts +9 -0
- package/dist/runtime/pm/commands/changeAttrs.js +15 -0
- package/dist/runtime/pm/commands/deleteSelection.d.ts +9 -0
- package/dist/runtime/pm/commands/deleteSelection.js +8 -0
- package/dist/runtime/pm/commands/enter.d.ts +14 -0
- package/dist/runtime/pm/commands/enter.js +9 -0
- package/dist/runtime/pm/commands/insertBreak.d.ts +9 -0
- package/dist/runtime/pm/commands/insertBreak.js +22 -0
- package/dist/runtime/pm/features/Base/Base.d.ts +4 -0
- package/dist/runtime/pm/features/Base/Base.js +32 -0
- package/dist/runtime/pm/features/Base/commands/deleteNodes.d.ts +10 -0
- package/dist/runtime/pm/features/Base/commands/deleteNodes.js +29 -0
- package/dist/runtime/pm/features/Base/commands/setCursorVisible.d.ts +12 -0
- package/dist/runtime/pm/features/Base/commands/setCursorVisible.js +7 -0
- package/dist/runtime/pm/features/Base/plugins/debugSelectionPlugin.d.ts +9 -0
- package/dist/runtime/pm/features/Base/plugins/debugSelectionPlugin.js +48 -0
- package/dist/runtime/pm/features/Base/plugins/isCursorVisiblePlugin.d.ts +3 -0
- package/dist/runtime/pm/features/Base/plugins/isCursorVisiblePlugin.js +26 -0
- package/dist/runtime/pm/features/Base/plugins/isUsingTouchPlugin.d.ts +3 -0
- package/dist/runtime/pm/features/Base/plugins/isUsingTouchPlugin.js +38 -0
- package/dist/runtime/pm/features/Base/plugins/selectingIndicator.d.ts +5 -0
- package/dist/runtime/pm/features/Base/plugins/selectingIndicator.js +35 -0
- package/dist/runtime/pm/features/Base/plugins/unfocusedSelectionIndicatorPlugin.d.ts +33 -0
- package/dist/runtime/pm/features/Base/plugins/unfocusedSelectionIndicatorPlugin.js +66 -0
- package/dist/runtime/pm/features/Base/types.d.ts +3 -0
- package/dist/runtime/pm/features/Base/types.js +0 -0
- package/dist/runtime/pm/features/BaseShortcuts/BaseShortcuts.d.ts +3 -0
- package/dist/runtime/pm/features/BaseShortcuts/BaseShortcuts.js +34 -0
- package/dist/runtime/pm/features/Blockquote/Blockquote.d.ts +5 -0
- package/dist/runtime/pm/features/Blockquote/Blockquote.js +65 -0
- package/dist/runtime/pm/features/Blockquote/commands/blockquoteEnter.d.ts +11 -0
- package/dist/runtime/pm/features/Blockquote/commands/blockquoteEnter.js +31 -0
- package/dist/runtime/pm/features/Blockquote/commands/blockquoteShiftEnter.d.ts +11 -0
- package/dist/runtime/pm/features/Blockquote/commands/blockquoteShiftEnter.js +12 -0
- package/dist/runtime/pm/features/Blocks/Blocks.d.ts +2 -0
- package/dist/runtime/pm/features/Blocks/Blocks.js +2 -0
- package/dist/runtime/pm/features/Blocks/Item.d.ts +11 -0
- package/dist/runtime/pm/features/Blocks/Item.js +157 -0
- package/dist/runtime/pm/features/Blocks/List.d.ts +4 -0
- package/dist/runtime/pm/features/Blocks/List.js +59 -0
- package/dist/runtime/pm/features/Blocks/commands/changeItemType.d.ts +20 -0
- package/dist/runtime/pm/features/Blocks/commands/changeItemType.js +40 -0
- package/dist/runtime/pm/features/Blocks/commands/changeTypeAttr.d.ts +14 -0
- package/dist/runtime/pm/features/Blocks/commands/changeTypeAttr.js +28 -0
- package/dist/runtime/pm/features/Blocks/commands/copyOrMoveItem.d.ts +23 -0
- package/dist/runtime/pm/features/Blocks/commands/copyOrMoveItem.js +124 -0
- package/dist/runtime/pm/features/Blocks/commands/deleteItem.d.ts +12 -0
- package/dist/runtime/pm/features/Blocks/commands/deleteItem.js +8 -0
- package/dist/runtime/pm/features/Blocks/commands/indentItem.d.ts +12 -0
- package/dist/runtime/pm/features/Blocks/commands/indentItem.js +58 -0
- package/dist/runtime/pm/features/Blocks/commands/itemMenuCommands.d.ts +18 -0
- package/dist/runtime/pm/features/Blocks/commands/itemMenuCommands.js +40 -0
- package/dist/runtime/pm/features/Blocks/commands/moveItem.d.ts +12 -0
- package/dist/runtime/pm/features/Blocks/commands/moveItem.js +80 -0
- package/dist/runtime/pm/features/Blocks/commands/setNode.d.ts +20 -0
- package/dist/runtime/pm/features/Blocks/commands/setNode.js +87 -0
- package/dist/runtime/pm/features/Blocks/commands/splitItem.d.ts +17 -0
- package/dist/runtime/pm/features/Blocks/commands/splitItem.js +87 -0
- package/dist/runtime/pm/features/Blocks/commands/unindentItem.d.ts +12 -0
- package/dist/runtime/pm/features/Blocks/commands/unindentItem.js +42 -0
- package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.d.vue.ts +0 -0
- package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.vue +129 -0
- package/dist/runtime/pm/features/Blocks/components/DragTreeHandle.vue.d.ts +0 -0
- package/dist/runtime/pm/features/Blocks/components/ItemMenu.d.vue.ts +6 -0
- package/dist/runtime/pm/features/Blocks/components/ItemMenu.vue +78 -0
- package/dist/runtime/pm/features/Blocks/components/ItemMenu.vue.d.ts +6 -0
- package/dist/runtime/pm/features/Blocks/components/ItemNodeView.d.vue.ts +92 -0
- package/dist/runtime/pm/features/Blocks/components/ItemNodeView.vue +350 -0
- package/dist/runtime/pm/features/Blocks/components/ItemNodeView.vue.d.ts +92 -0
- package/dist/runtime/pm/features/Blocks/components/defaultItemMenu.d.ts +5 -0
- package/dist/runtime/pm/features/Blocks/components/defaultItemMenu.js +42 -0
- package/dist/runtime/pm/features/Blocks/composables/useDragWithThreshold.d.ts +1 -0
- package/dist/runtime/pm/features/Blocks/composables/useDragWithThreshold.js +0 -0
- package/dist/runtime/pm/features/Blocks/composables/useHandleHeight.d.ts +5 -0
- package/dist/runtime/pm/features/Blocks/composables/useHandleHeight.js +22 -0
- package/dist/runtime/pm/features/Blocks/composables/useHasChildren.d.ts +5 -0
- package/dist/runtime/pm/features/Blocks/composables/useHasChildren.js +10 -0
- package/dist/runtime/pm/features/Blocks/composables/useNodeStates.d.ts +7 -0
- package/dist/runtime/pm/features/Blocks/composables/useNodeStates.js +20 -0
- package/dist/runtime/pm/features/Blocks/itemMenuMenuItems.d.ts +20 -0
- package/dist/runtime/pm/features/Blocks/itemMenuMenuItems.js +138 -0
- package/dist/runtime/pm/features/Blocks/plugins/ensureLastItemIsContentPlugin.d.ts +11 -0
- package/dist/runtime/pm/features/Blocks/plugins/ensureLastItemIsContentPlugin.js +36 -0
- package/dist/runtime/pm/features/Blocks/plugins/itemBlockIdPlugin.d.ts +8 -0
- package/dist/runtime/pm/features/Blocks/plugins/itemBlockIdPlugin.js +30 -0
- package/dist/runtime/pm/features/Blocks/plugins/itemHasSingularSelectionPlugin.d.ts +3 -0
- package/dist/runtime/pm/features/Blocks/plugins/itemHasSingularSelectionPlugin.js +30 -0
- package/dist/runtime/pm/features/Blocks/plugins/itemMenuPlugin.d.ts +4 -0
- package/dist/runtime/pm/features/Blocks/plugins/itemMenuPlugin.js +17 -0
- package/dist/runtime/pm/features/Blocks/states/stateful.d.ts +2 -0
- package/dist/runtime/pm/features/Blocks/states/stateful.js +37 -0
- package/dist/runtime/pm/features/Blocks/states/task/cancelled.svg +32 -0
- package/dist/runtime/pm/features/Blocks/states/task/checked.svg +27 -0
- package/dist/runtime/pm/features/Blocks/states/task/checked2.svg +24 -0
- package/dist/runtime/pm/features/Blocks/states/task/partial.svg +24 -0
- package/dist/runtime/pm/features/Blocks/states/task/partial2.svg +31 -0
- package/dist/runtime/pm/features/Blocks/states/task/unchecked.svg +20 -0
- package/dist/runtime/pm/features/Blocks/types.d.ts +43 -0
- package/dist/runtime/pm/features/Blocks/types.js +2 -0
- package/dist/runtime/pm/features/Blocks/utils/createItemMenuCommandExecuter.d.ts +3 -0
- package/dist/runtime/pm/features/Blocks/utils/createItemMenuCommandExecuter.js +24 -0
- package/dist/runtime/pm/features/Blocks/utils/fixBlockIds.d.ts +4 -0
- package/dist/runtime/pm/features/Blocks/utils/fixBlockIds.js +23 -0
- package/dist/runtime/pm/features/Blocks/utils/isValidId.d.ts +2 -0
- package/dist/runtime/pm/features/Blocks/utils/isValidId.js +7 -0
- package/dist/runtime/pm/features/CodeBlock/CodeBlock.d.ts +16 -0
- package/dist/runtime/pm/features/CodeBlock/CodeBlock.js +91 -0
- package/dist/runtime/pm/features/CodeBlock/build/generateHighlightJsInfo.d.ts +1 -0
- package/dist/runtime/pm/features/CodeBlock/build/generateHighlightJsInfo.js +63 -0
- package/dist/runtime/pm/features/CodeBlock/commands/codeBlockEnterOrSplit.d.ts +9 -0
- package/dist/runtime/pm/features/CodeBlock/commands/codeBlockEnterOrSplit.js +28 -0
- package/dist/runtime/pm/features/CodeBlock/commands/codeBlockIndent.d.ts +9 -0
- package/dist/runtime/pm/features/CodeBlock/commands/codeBlockIndent.js +39 -0
- package/dist/runtime/pm/features/CodeBlock/commands/codeBlockUnindent.d.ts +9 -0
- package/dist/runtime/pm/features/CodeBlock/commands/codeBlockUnindent.js +50 -0
- package/dist/runtime/pm/features/CodeBlock/commands/focusCodeBlockLanguage.d.ts +9 -0
- package/dist/runtime/pm/features/CodeBlock/commands/focusCodeBlockLanguage.js +27 -0
- package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.d.vue.ts +92 -0
- package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.vue +112 -0
- package/dist/runtime/pm/features/CodeBlock/components/CodeBlockView.vue.d.ts +92 -0
- package/dist/runtime/pm/features/CodeBlock/composables/useAsyncCodeBlockHighlighting.d.ts +28 -0
- package/dist/runtime/pm/features/CodeBlock/composables/useAsyncCodeBlockHighlighting.js +137 -0
- package/dist/runtime/pm/features/CodeBlock/composables/useHighlightJsTheme.d.ts +37 -0
- package/dist/runtime/pm/features/CodeBlock/composables/useHighlightJsTheme.js +101 -0
- package/dist/runtime/pm/features/CodeBlock/highlightJsInfo.d.ts +17 -0
- package/dist/runtime/pm/features/CodeBlock/highlightJsInfo.js +711 -0
- package/dist/runtime/pm/features/CodeBlock/types.d.ts +4 -0
- package/dist/runtime/pm/features/CodeBlock/types.js +2 -0
- package/dist/runtime/pm/features/Collaboration/Collaboration.d.ts +66 -0
- package/dist/runtime/pm/features/Collaboration/Collaboration.js +169 -0
- package/dist/runtime/pm/features/CommandsMenus/CommandBar.d.ts +19 -0
- package/dist/runtime/pm/features/CommandsMenus/CommandBar.js +97 -0
- package/dist/runtime/pm/features/CommandsMenus/commandBarMenuItems.d.ts +20 -0
- package/dist/runtime/pm/features/CommandsMenus/commandBarMenuItems.js +188 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.d.vue.ts +8 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.vue +58 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandBar.vue.d.ts +8 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.d.vue.ts +12 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.vue +42 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandBarItem.vue.d.ts +12 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.d.vue.ts +10 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.vue +55 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuGroup.vue.d.ts +10 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.d.vue.ts +11 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.vue +58 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuItem.vue.d.ts +11 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.d.vue.ts +11 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.vue +54 -0
- package/dist/runtime/pm/features/CommandsMenus/components/CommandMenuList.vue.d.ts +11 -0
- package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.d.vue.ts +5 -0
- package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.vue +13 -0
- package/dist/runtime/pm/features/CommandsMenus/components/TextIcon.vue.d.ts +5 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.d.vue.ts +8 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.vue +45 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/HighlightIcon.vue.d.ts +8 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.d.vue.ts +2 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.vue +5 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/SubscriptIcon.vue.d.ts +2 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.d.vue.ts +2 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.vue +5 -0
- package/dist/runtime/pm/features/CommandsMenus/icons/SuperscriptIcon.vue.d.ts +2 -0
- package/dist/runtime/pm/features/CommandsMenus/types.d.ts +61 -0
- package/dist/runtime/pm/features/CommandsMenus/types.js +5 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/defaultCommandExecutor.d.ts +3 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/defaultCommandExecutor.js +11 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/findCommand.d.ts +10 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/findCommand.js +16 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/popupPositionModifier.d.ts +5 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/popupPositionModifier.js +9 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/popupVerticalPositioner.d.ts +5 -0
- package/dist/runtime/pm/features/CommandsMenus/utils/popupVerticalPositioner.js +11 -0
- package/dist/runtime/pm/features/Document/Document.d.ts +3 -0
- package/dist/runtime/pm/features/Document/Document.js +6 -0
- package/dist/runtime/pm/features/DocumentApi/DocumentApi.d.ts +86 -0
- package/dist/runtime/pm/features/DocumentApi/DocumentApi.js +170 -0
- package/dist/runtime/pm/features/DocumentApi/composables/useEditorContent.d.ts +13 -0
- package/dist/runtime/pm/features/DocumentApi/composables/useEditorContent.js +76 -0
- package/dist/runtime/pm/features/DocumentApi/composables/useTestDocumentApi.d.ts +23 -0
- package/dist/runtime/pm/features/DocumentApi/composables/useTestDocumentApi.js +70 -0
- package/dist/runtime/pm/features/DocumentApi/types.d.ts +133 -0
- package/dist/runtime/pm/features/DocumentApi/types.js +1 -0
- package/dist/runtime/pm/features/DocumentApi/utils/convertFullTransactionForPartialState.d.ts +3 -0
- package/dist/runtime/pm/features/DocumentApi/utils/convertFullTransactionForPartialState.js +37 -0
- package/dist/runtime/pm/features/DocumentApi/utils/convertTrForInstance.d.ts +4 -0
- package/dist/runtime/pm/features/DocumentApi/utils/convertTrForInstance.js +13 -0
- package/dist/runtime/pm/features/DocumentApi/utils/convertTransactionForFullState.d.ts +2 -0
- package/dist/runtime/pm/features/DocumentApi/utils/convertTransactionForFullState.js +22 -0
- package/dist/runtime/pm/features/DocumentApi/utils/copyMeta.d.ts +2 -0
- package/dist/runtime/pm/features/DocumentApi/utils/copyMeta.js +6 -0
- package/dist/runtime/pm/features/DocumentApi/utils/getEmbedJson.d.ts +1 -0
- package/dist/runtime/pm/features/DocumentApi/utils/getEmbedJson.js +14 -0
- package/dist/runtime/pm/features/DocumentApi/utils/getEmbedNodeFromDoc.d.ts +1 -0
- package/dist/runtime/pm/features/DocumentApi/utils/getEmbedNodeFromDoc.js +14 -0
- package/dist/runtime/pm/features/DocumentApi/utils/getStateEmbedRange.d.ts +9 -0
- package/dist/runtime/pm/features/DocumentApi/utils/getStateEmbedRange.js +19 -0
- package/dist/runtime/pm/features/DocumentApi/utils/isEmbedId.d.ts +2 -0
- package/dist/runtime/pm/features/DocumentApi/utils/isEmbedId.js +3 -0
- package/dist/runtime/pm/features/EmbeddedDocument/Embedded.d.ts +24 -0
- package/dist/runtime/pm/features/EmbeddedDocument/Embedded.js +73 -0
- package/dist/runtime/pm/features/EmbeddedDocument/EmbeddedDocument.d.ts +23 -0
- package/dist/runtime/pm/features/EmbeddedDocument/EmbeddedDocument.js +70 -0
- package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.d.vue.ts +14 -0
- package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.vue +169 -0
- package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedDocumentPicker.vue.d.ts +14 -0
- package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.d.vue.ts +92 -0
- package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.vue +170 -0
- package/dist/runtime/pm/features/EmbeddedDocument/components/EmbeddedNodeView.vue.d.ts +92 -0
- package/dist/runtime/pm/features/EmbeddedDocument/composables/useEmbeddedEditor.d.ts +31 -0
- package/dist/runtime/pm/features/EmbeddedDocument/composables/useEmbeddedEditor.js +199 -0
- package/dist/runtime/pm/features/EmbeddedDocument/types.d.ts +49 -0
- package/dist/runtime/pm/features/EmbeddedDocument/types.js +6 -0
- package/dist/runtime/pm/features/EmbeddedDocument/utils/isEmbeddedBlock.d.ts +9 -0
- package/dist/runtime/pm/features/EmbeddedDocument/utils/isEmbeddedBlock.js +3 -0
- package/dist/runtime/pm/features/EmbeddedDocument/utils/redirectFromEmbedded.d.ts +28 -0
- package/dist/runtime/pm/features/EmbeddedDocument/utils/redirectFromEmbedded.js +17 -0
- package/dist/runtime/pm/features/FileLoader/FileLoader.d.ts +16 -0
- package/dist/runtime/pm/features/FileLoader/FileLoader.js +99 -0
- package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/FileLoaderHandler.d.ts +28 -0
- package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/FileLoaderHandler.js +69 -0
- package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/TestFileLoaderHandler.d.ts +11 -0
- package/dist/runtime/pm/features/FileLoader/FileLoaderHandler/TestFileLoaderHandler.js +49 -0
- package/dist/runtime/pm/features/FileLoader/commands/insertFile.d.ts +17 -0
- package/dist/runtime/pm/features/FileLoader/commands/insertFile.js +39 -0
- package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.d.vue.ts +92 -0
- package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.vue +38 -0
- package/dist/runtime/pm/features/FileLoader/components/FileLoaderNodeView.vue.d.ts +92 -0
- package/dist/runtime/pm/features/FileLoader/plugins/fileLoaderPlugin.d.ts +5 -0
- package/dist/runtime/pm/features/FileLoader/plugins/fileLoaderPlugin.js +61 -0
- package/dist/runtime/pm/features/FileLoader/types.d.ts +73 -0
- package/dist/runtime/pm/features/FileLoader/types.js +0 -0
- package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNode.d.ts +4 -0
- package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNode.js +27 -0
- package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNodes.d.ts +9 -0
- package/dist/runtime/pm/features/FileLoader/utils/cleanupFileLoaderNodes.js +22 -0
- package/dist/runtime/pm/features/FileLoader/utils/findLoadingNodePos.d.ts +2 -0
- package/dist/runtime/pm/features/FileLoader/utils/findLoadingNodePos.js +11 -0
- package/dist/runtime/pm/features/FileLoader/utils/optionsCheck.d.ts +3 -0
- package/dist/runtime/pm/features/FileLoader/utils/optionsCheck.js +8 -0
- package/dist/runtime/pm/features/FileLoader/utils/readAsDataUrl.d.ts +1 -0
- package/dist/runtime/pm/features/FileLoader/utils/readAsDataUrl.js +12 -0
- package/dist/runtime/pm/features/HardBreak/HardBreak.d.ts +5 -0
- package/dist/runtime/pm/features/HardBreak/HardBreak.js +14 -0
- package/dist/runtime/pm/features/Heading/Heading.d.ts +24 -0
- package/dist/runtime/pm/features/Heading/Heading.js +85 -0
- package/dist/runtime/pm/features/Heading/commands/changeLevelAttr.d.ts +16 -0
- package/dist/runtime/pm/features/Heading/commands/changeLevelAttr.js +33 -0
- package/dist/runtime/pm/features/Heading/types.d.ts +14 -0
- package/dist/runtime/pm/features/Heading/types.js +0 -0
- package/dist/runtime/pm/features/Highlight/Highlight.d.ts +72 -0
- package/dist/runtime/pm/features/Highlight/Highlight.js +163 -0
- package/dist/runtime/pm/features/Highlight/retyped/tiptapHighlight.d.ts +3 -0
- package/dist/runtime/pm/features/Highlight/retyped/tiptapHighlight.js +5 -0
- package/dist/runtime/pm/features/Highlight/types.d.ts +27 -0
- package/dist/runtime/pm/features/Highlight/types.js +2 -0
- package/dist/runtime/pm/features/History/History.d.ts +35 -0
- package/dist/runtime/pm/features/History/History.js +63 -0
- package/dist/runtime/pm/features/Iframe/Iframe.d.ts +21 -0
- package/dist/runtime/pm/features/Iframe/Iframe.js +127 -0
- package/dist/runtime/pm/features/Iframe/IframeParsers.d.ts +37 -0
- package/dist/runtime/pm/features/Iframe/IframeParsers.js +88 -0
- package/dist/runtime/pm/features/Iframe/components/IframeNodeView.d.vue.ts +92 -0
- package/dist/runtime/pm/features/Iframe/components/IframeNodeView.vue +79 -0
- package/dist/runtime/pm/features/Iframe/components/IframeNodeView.vue.d.ts +92 -0
- package/dist/runtime/pm/features/Iframe/types.d.ts +5 -0
- package/dist/runtime/pm/features/Iframe/types.js +0 -0
- package/dist/runtime/pm/features/Image/Image.d.ts +2 -0
- package/dist/runtime/pm/features/Image/Image.js +13 -0
- package/dist/runtime/pm/features/Link/Link.d.ts +38 -0
- package/dist/runtime/pm/features/Link/Link.js +241 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.d.vue.ts +28 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.vue +113 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuExternalLink.vue.d.ts +28 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.d.vue.ts +29 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.vue +104 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuInternalLink.vue.d.ts +29 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuLink.d.vue.ts +11 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuLink.vue +126 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuLink.vue.d.ts +11 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.d.vue.ts +18 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.vue +54 -0
- package/dist/runtime/pm/features/Link/components/BubbleMenuLinkActions.vue.d.ts +18 -0
- package/dist/runtime/pm/features/Link/types.d.ts +44 -0
- package/dist/runtime/pm/features/Link/types.js +3 -0
- package/dist/runtime/pm/features/Menus/Menus.d.ts +45 -0
- package/dist/runtime/pm/features/Menus/Menus.js +142 -0
- package/dist/runtime/pm/features/Menus/components/MarkMenuManager.d.vue.ts +6 -0
- package/dist/runtime/pm/features/Menus/components/MarkMenuManager.vue +165 -0
- package/dist/runtime/pm/features/Menus/components/MarkMenuManager.vue.d.ts +6 -0
- package/dist/runtime/pm/features/Menus/types.d.ts +51 -0
- package/dist/runtime/pm/features/Menus/types.js +3 -0
- package/dist/runtime/pm/features/Menus/utils/isMarkMenu.d.ts +2 -0
- package/dist/runtime/pm/features/Menus/utils/isMarkMenu.js +3 -0
- package/dist/runtime/pm/features/Tables/commands/tableEnter.d.ts +15 -0
- package/dist/runtime/pm/features/Tables/commands/tableEnter.js +19 -0
- package/dist/runtime/pm/features/Tables/index.d.ts +9 -0
- package/dist/runtime/pm/features/Tables/index.js +44 -0
- package/dist/runtime/pm/generator.d.ts +82 -0
- package/dist/runtime/pm/generator.js +205 -0
- package/dist/runtime/pm/schema.d.ts +4 -0
- package/dist/runtime/pm/schema.js +80 -0
- package/dist/runtime/pm/testSchema.d.ts +5 -0
- package/dist/runtime/pm/testSchema.js +30 -0
- package/dist/runtime/pm/utils/createDropIndicator.d.ts +23 -0
- package/dist/runtime/pm/utils/createDropIndicator.js +36 -0
- package/dist/runtime/pm/utils/createStateOnlyPluginApply.d.ts +2 -0
- package/dist/runtime/pm/utils/createStateOnlyPluginApply.js +9 -0
- package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.d.ts +2 -0
- package/dist/runtime/pm/utils/createStateOnlyPluginObjApply.js +14 -0
- package/dist/runtime/pm/utils/dropPointInfo.d.ts +56 -0
- package/dist/runtime/pm/utils/dropPointInfo.js +28 -0
- package/dist/runtime/pm/utils/findUpwards.d.ts +20 -0
- package/dist/runtime/pm/utils/findUpwards.js +18 -0
- package/dist/runtime/pm/utils/generateRandomDoc.d.ts +23 -0
- package/dist/runtime/pm/utils/generateRandomDoc.js +83 -0
- package/dist/runtime/pm/utils/generateRandomTree.d.ts +50 -0
- package/dist/runtime/pm/utils/generateRandomTree.js +38 -0
- package/dist/runtime/pm/utils/getChildChunks.d.ts +3 -0
- package/dist/runtime/pm/utils/getChildChunks.js +15 -0
- package/dist/runtime/pm/utils/getDiffReplacementRange.d.ts +20 -0
- package/dist/runtime/pm/utils/getDiffReplacementRange.js +9 -0
- package/dist/runtime/pm/utils/getElMaxVisualSize.d.ts +9 -0
- package/dist/runtime/pm/utils/getElMaxVisualSize.js +7 -0
- package/dist/runtime/pm/utils/getElPropertyAsInt.d.ts +4 -0
- package/dist/runtime/pm/utils/getElPropertyAsInt.js +8 -0
- package/dist/runtime/pm/utils/getGroupNodeNames.d.ts +2 -0
- package/dist/runtime/pm/utils/getGroupNodeNames.js +7 -0
- package/dist/runtime/pm/utils/getMarkPosition.d.ts +11 -0
- package/dist/runtime/pm/utils/getMarkPosition.js +34 -0
- package/dist/runtime/pm/utils/getMarksInSelection.d.ts +3 -0
- package/dist/runtime/pm/utils/getMarksInSelection.js +16 -0
- package/dist/runtime/pm/utils/getTypeByName.d.ts +2 -0
- package/dist/runtime/pm/utils/getTypeByName.js +5 -0
- package/dist/runtime/pm/utils/index.d.ts +15 -0
- package/dist/runtime/pm/utils/index.js +15 -0
- package/dist/runtime/pm/utils/internal/createNodeTypesList.d.ts +2 -0
- package/dist/runtime/pm/utils/internal/createNodeTypesList.js +17 -0
- package/dist/runtime/pm/utils/internal/debugMap.d.ts +7 -0
- package/dist/runtime/pm/utils/internal/debugMap.js +24 -0
- package/dist/runtime/pm/utils/internal/debugNode.d.ts +2 -0
- package/dist/runtime/pm/utils/internal/debugNode.js +18 -0
- package/dist/runtime/pm/utils/internal/debugSel.d.ts +5 -0
- package/dist/runtime/pm/utils/internal/debugSel.js +8 -0
- package/dist/runtime/pm/utils/internal/recurse.d.ts +2 -0
- package/dist/runtime/pm/utils/internal/recurse.js +39 -0
- package/dist/runtime/pm/utils/internal/stripBlockId.d.ts +2 -0
- package/dist/runtime/pm/utils/internal/stripBlockId.js +9 -0
- package/dist/runtime/pm/utils/mapSelection.d.ts +8 -0
- package/dist/runtime/pm/utils/mapSelection.js +12 -0
- package/dist/runtime/pm/utils/nodesBetween.d.ts +21 -0
- package/dist/runtime/pm/utils/nodesBetween.js +21 -0
- package/dist/runtime/pm/utils/pointToPmPoint.d.ts +2 -0
- package/dist/runtime/pm/utils/pointToPmPoint.js +3 -0
- package/dist/runtime/pm/utils/splitIntoChunks.d.ts +32 -0
- package/dist/runtime/pm/utils/splitIntoChunks.js +31 -0
- package/dist/runtime/testDocuments.d.ts +53 -0
- package/dist/runtime/testDocuments.js +122 -0
- package/dist/runtime/types/index.d.ts +53 -0
- package/dist/runtime/types/index.js +9 -0
- package/dist/types.d.mts +2 -12
- package/package.json +11 -9
- package/src/runtime/pm/commands/changeAttrs.ts +1 -1
- package/src/runtime/pm/features/Blocks/Item.ts +1 -1
- package/src/runtime/pm/features/Blocks/commands/moveItem.ts +1 -1
- package/src/runtime/pm/features/Blocks/components/DragTreeHandle.vue +14 -9
- package/src/runtime/pm/features/EmbeddedDocument/Embedded.ts +1 -1
- package/src/runtime/pm/features/FileLoader/types.ts +2 -2
- package/src/runtime/pm/generator.ts +266 -0
- package/src/runtime/pm/schema.ts +1 -0
- package/src/runtime/pm/utils/generateRandomDoc.ts +140 -0
- package/src/runtime/pm/utils/generateRandomTree.ts +100 -0
- package/dist/module.d.cts +0 -2
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { EnumLike } from "@alanscodelog/utils";
|
|
2
|
+
import type { Point } from "../../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Given a point (a mouse position), a box, and a possible indent, returns information regarding it's position.
|
|
5
|
+
*
|
|
6
|
+
* For example if we "zoom" in on a list section like this where the mouse is hovering at the level of B1 (not neccesarily inside it):
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* ...
|
|
10
|
+
* - C1
|
|
11
|
+
* - B1
|
|
12
|
+
* - A1
|
|
13
|
+
* ...
|
|
14
|
+
* ```
|
|
15
|
+
* We are interested in the following:
|
|
16
|
+
* - In what y section we're in (outside-top, top, bottom, outside-bottom)
|
|
17
|
+
* - In what x section we're in (outside-left, inside, inside-indent, outside-right)
|
|
18
|
+
* ```
|
|
19
|
+
* outside-left \ inside \ inside-indent \ outside-right
|
|
20
|
+
* \ \ \
|
|
21
|
+
* outside-top \ \ \
|
|
22
|
+
* -----------------┌──────────────┬───────────────┐
|
|
23
|
+
* │B1 │ │
|
|
24
|
+
* │ │ │
|
|
25
|
+
* top │ │ │
|
|
26
|
+
* -----------------├──────────────┼───────────────┤
|
|
27
|
+
* │<---indent--->│ │
|
|
28
|
+
* │ │ │
|
|
29
|
+
* bottom │ │ │
|
|
30
|
+
* -----------------└──────────────┴───────────────┘
|
|
31
|
+
* outside-bottom
|
|
32
|
+
* ```
|
|
33
|
+
* We can use this information to determine where we want to drop something.
|
|
34
|
+
*/
|
|
35
|
+
export declare function dropPointInfo(point: Point, box: Point & {
|
|
36
|
+
width: number;
|
|
37
|
+
height: number;
|
|
38
|
+
}, indentX: number): DropInfo;
|
|
39
|
+
export declare const DROP_Y: {
|
|
40
|
+
TOP: "TOP";
|
|
41
|
+
OUTSIDE_TOP: "OUTSIDE_TOP";
|
|
42
|
+
BOTTOM: "BOTTOM";
|
|
43
|
+
OUTSIDE_BOTTOM: "OUTSIDE_BOTTOM";
|
|
44
|
+
};
|
|
45
|
+
export type DropY = EnumLike<typeof DROP_Y>;
|
|
46
|
+
export declare const DROP_X: {
|
|
47
|
+
INSIDE: "INSIDE";
|
|
48
|
+
OUTSIDE_LEFT: "OUTSIDE_LEFT";
|
|
49
|
+
INSIDE_INDENT: "INSIDE_INDENT";
|
|
50
|
+
OUTSIDE_RIGHT: "OUTSIDE_RIGHT";
|
|
51
|
+
};
|
|
52
|
+
export type DropX = EnumLike<typeof DROP_X>;
|
|
53
|
+
export type DropInfo = {
|
|
54
|
+
x: DropX;
|
|
55
|
+
y: DropY;
|
|
56
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { enumFromArray } from "@alanscodelog/utils/enumFromArray";
|
|
2
|
+
export function dropPointInfo(point, box, indentX) {
|
|
3
|
+
const info = {
|
|
4
|
+
x: "INSIDE",
|
|
5
|
+
y: "TOP"
|
|
6
|
+
};
|
|
7
|
+
if (point.y < box.y) info.y = DROP_Y.OUTSIDE_TOP;
|
|
8
|
+
else if (point.y < box.y + box.height / 2) info.y = DROP_Y.TOP;
|
|
9
|
+
else if (point.y < box.y + box.height) info.y = DROP_Y.BOTTOM;
|
|
10
|
+
else info.y = DROP_Y.OUTSIDE_BOTTOM;
|
|
11
|
+
if (point.x < box.x) info.x = DROP_X.OUTSIDE_LEFT;
|
|
12
|
+
else if (point.x < box.x + indentX) info.x = DROP_X.INSIDE;
|
|
13
|
+
else if (point.x < box.x + box.width) info.x = DROP_X.INSIDE_INDENT;
|
|
14
|
+
else info.x = DROP_X.OUTSIDE_RIGHT;
|
|
15
|
+
return info;
|
|
16
|
+
}
|
|
17
|
+
export const DROP_Y = enumFromArray([
|
|
18
|
+
"OUTSIDE_TOP",
|
|
19
|
+
"TOP",
|
|
20
|
+
"BOTTOM",
|
|
21
|
+
"OUTSIDE_BOTTOM"
|
|
22
|
+
]);
|
|
23
|
+
export const DROP_X = enumFromArray([
|
|
24
|
+
"OUTSIDE_LEFT",
|
|
25
|
+
"INSIDE",
|
|
26
|
+
"INSIDE_INDENT",
|
|
27
|
+
"OUTSIDE_RIGHT"
|
|
28
|
+
]);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Node, ResolvedPos } from "@tiptap/pm/model";
|
|
2
|
+
/**
|
|
3
|
+
* Traverse the tree upwards (along parents, along the left) to find a position.
|
|
4
|
+
*/
|
|
5
|
+
export declare function findUpwards(
|
|
6
|
+
/** Needed to resolve positions from. */
|
|
7
|
+
node: Node,
|
|
8
|
+
/** Position to start searching from. */
|
|
9
|
+
from: number, filter: ($pos: ResolvedPos, pos: number, loop: number) => boolean, { start, step, stop }?: {
|
|
10
|
+
/** Where to start searching, -1 would be current node (default), 0 the parent, and so on. */
|
|
11
|
+
start?: number;
|
|
12
|
+
step?: number;
|
|
13
|
+
stop?: number;
|
|
14
|
+
}): {
|
|
15
|
+
$pos: ResolvedPos;
|
|
16
|
+
pos: number;
|
|
17
|
+
} | {
|
|
18
|
+
$pos: undefined;
|
|
19
|
+
pos: undefined;
|
|
20
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function findUpwards(node, from, filter, {
|
|
2
|
+
start = -1,
|
|
3
|
+
step = 1,
|
|
4
|
+
stop
|
|
5
|
+
} = {}) {
|
|
6
|
+
const $from = node.resolve(from);
|
|
7
|
+
let loops = 0;
|
|
8
|
+
for (let depth = start; depth < $from.depth; depth += step) {
|
|
9
|
+
const currentDepth = $from.depth - depth;
|
|
10
|
+
const newPos = $from.before(currentDepth);
|
|
11
|
+
const $pos = node.resolve(newPos);
|
|
12
|
+
if (!filter && stop === loops || filter($pos, newPos, loops)) {
|
|
13
|
+
return { $pos, pos: newPos };
|
|
14
|
+
}
|
|
15
|
+
loops++;
|
|
16
|
+
}
|
|
17
|
+
return { $pos: void 0, pos: void 0 };
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Node } from "@tiptap/pm/model";
|
|
2
|
+
import type { builders } from "prosemirror-test-builder";
|
|
3
|
+
import { generateRandomTree } from "./generateRandomTree.js";
|
|
4
|
+
import type { GeneratorConfigEntry } from "../generator.js";
|
|
5
|
+
/**
|
|
6
|
+
* Generates a random doc using faker js.
|
|
7
|
+
*
|
|
8
|
+
* A config describing how to create the doc is required. One is available under `pm/generator`.
|
|
9
|
+
*
|
|
10
|
+
* @experimental
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateRandomDoc<TBuilder extends ReturnType<typeof builders>, TData extends string>(builder: TBuilder, config?: GeneratorConfigEntry<any, any, any, any>[], treeOptions?: Parameters<typeof generateRandomTree>[1], { checkAfterNodeCreation }?: {
|
|
13
|
+
/**
|
|
14
|
+
* Checks if every returned node is valid for debugging invalid generator configs.
|
|
15
|
+
*
|
|
16
|
+
* A check is always done on the root node at the end regardless of this option.
|
|
17
|
+
*
|
|
18
|
+
* It is very slow (each check, rechecks children).
|
|
19
|
+
*
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
checkAfterNodeCreation?: boolean;
|
|
23
|
+
}): Node;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { unreachable } from "@alanscodelog/utils/unreachable";
|
|
2
|
+
import { faker } from "@faker-js/faker";
|
|
3
|
+
import { generateRandomTree } from "./generateRandomTree.js";
|
|
4
|
+
import { generatorConfig } from "../generator.js";
|
|
5
|
+
export function generateRandomDoc(builder, config = generatorConfig, treeOptions, {
|
|
6
|
+
checkAfterNodeCreation = false
|
|
7
|
+
} = {}) {
|
|
8
|
+
const schema = builder.schema;
|
|
9
|
+
const map = {};
|
|
10
|
+
function schemaFilter(name) {
|
|
11
|
+
return name !== "text" && name !== schema.topNodeType.name;
|
|
12
|
+
}
|
|
13
|
+
for (const entry of config) {
|
|
14
|
+
for (const node of entry.parents.names) {
|
|
15
|
+
if (node === "") throw new Error(`Empty node name ""`);
|
|
16
|
+
const type = entry.parents.type === "node" ? schema.nodes[node] : schema.marks[node];
|
|
17
|
+
if (type === void 0 && node !== "text") {
|
|
18
|
+
throw new Error(`${node} (on entry of type ${entry.parents.type}) not found in schema. Valid names are ${Object.keys(entry.parents.type === "node" ? schema.nodes : schema.marks)}`);
|
|
19
|
+
}
|
|
20
|
+
for (const node2 of entry.parents.names) {
|
|
21
|
+
const subEntry = { ...entry };
|
|
22
|
+
if (entry.ignoreValidation === void 0 || entry.ignoreValidation !== true) {
|
|
23
|
+
const childrenToValidate = (entry.children.names ?? []).filter((_) => !Array.isArray(entry.ignoreValidation) || !entry.ignoreValidation.includes(_));
|
|
24
|
+
for (const child of childrenToValidate) {
|
|
25
|
+
if (child === "") throw new Error(`Empty node name ""`);
|
|
26
|
+
if (entry.children.type === "node") {
|
|
27
|
+
const childType = schema.nodes[child];
|
|
28
|
+
const possibleNames = [childType.name, ...(childType.spec.group ?? "").split(" ").filter((e) => e !== "")];
|
|
29
|
+
const isAllowedChild = type.spec.content && possibleNames.some((n) => type.spec.content.includes(n));
|
|
30
|
+
if (!(isAllowedChild && schemaFilter(childType.name))) {
|
|
31
|
+
throw new Error(`Node ${node2} cannot contain child of type ${child}`);
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
const childType = schema.marks[child];
|
|
35
|
+
if (entry.parents.type === "node") {
|
|
36
|
+
} else {
|
|
37
|
+
const possibleNames = [childType.name, ...(childType.spec.group ?? "").split(" ").filter((e) => e !== "")];
|
|
38
|
+
const t = type;
|
|
39
|
+
const isExcluded = t.spec.excludes !== void 0 && possibleNames.some((n) => {
|
|
40
|
+
return t.spec.excludes.includes(n) || t.spec.excludes.includes("_");
|
|
41
|
+
});
|
|
42
|
+
if (isExcluded) {
|
|
43
|
+
throw new Error(`Mark ${node2} cannot contain mark child of type ${child}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
map[node2] = { ...subEntry };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const children = generateRandomTree({
|
|
54
|
+
parentData: (data) => {
|
|
55
|
+
if (data === "") return "";
|
|
56
|
+
if (!data) unreachable();
|
|
57
|
+
if (!map[data] || !map[data].children.names || map[data].children.names.length === 0) {
|
|
58
|
+
return "";
|
|
59
|
+
} else {
|
|
60
|
+
const picked = faker.helpers.arrayElement(map[data].children.names);
|
|
61
|
+
return picked;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
createNode: (children2, _isLeaf, data) => {
|
|
65
|
+
if (data === "") return void 0;
|
|
66
|
+
if (!data) unreachable();
|
|
67
|
+
const type = schema.nodes[data];
|
|
68
|
+
if (!type) return void 0;
|
|
69
|
+
const parent = map[data]?.create?.(data, children2) ?? builder[data]({}, ...children2);
|
|
70
|
+
if (checkAfterNodeCreation) {
|
|
71
|
+
;
|
|
72
|
+
parent?.check?.();
|
|
73
|
+
}
|
|
74
|
+
return parent;
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
...treeOptions,
|
|
78
|
+
initialData: schema.topNodeType.name
|
|
79
|
+
});
|
|
80
|
+
const doc = map[schema.topNodeType.name]?.create?.(schema.topNodeType.name, children) ?? builder[schema.topNodeType.name]({}, ...children);
|
|
81
|
+
doc.check?.();
|
|
82
|
+
return doc;
|
|
83
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a random tree structure where the probability of generating children
|
|
3
|
+
* decreases linearly with depth, resulting in a tree that is bushy at the top
|
|
4
|
+
* and sparse towards the maximum depth.
|
|
5
|
+
*
|
|
6
|
+
* This function is agnostic to the actual node structure, relying on the caller-provided
|
|
7
|
+
* callbacks to create and link nodes.
|
|
8
|
+
*
|
|
9
|
+
* It uses faker.js for randomness (even on the option parameters).
|
|
10
|
+
*
|
|
11
|
+
* See {@link generateRandomDoc} for an example of how to use it.
|
|
12
|
+
*
|
|
13
|
+
* @experimental
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateRandomTree<T, TData>({ createNode, parentData }: {
|
|
16
|
+
/** A function that creates a new node (type T) given its depth. */
|
|
17
|
+
createNode: (children: T[], isLeaf: boolean, parentData?: TData) => T | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* A function that is called before creating a a node or it's children whose result is passed to both. This allows creating children that will be compatible with the parent (via this same function, it is passed it's parent).
|
|
20
|
+
*
|
|
21
|
+
* For example, we could randomly generate a parent type. It's then passed both to the children, to limit the types of children nodes, and to the parent so it can actually create it.
|
|
22
|
+
*/
|
|
23
|
+
parentData?: (parentData?: TData) => TData;
|
|
24
|
+
}, { rootNodes: rootNodes, depth, minChildren, maxInitialChildren, initialData }?: {
|
|
25
|
+
/**
|
|
26
|
+
* The exact number of nodes at depth 0.
|
|
27
|
+
*
|
|
28
|
+
* @default faker.number.int({ min: 0, max: 5 })
|
|
29
|
+
*/
|
|
30
|
+
rootNodes?: number;
|
|
31
|
+
/**
|
|
32
|
+
* The maximum depth of the tree (0-indexed). Nodes at this depth will have 0 children.
|
|
33
|
+
*
|
|
34
|
+
* @default faker.number.int({ min: 0, max: 5 })
|
|
35
|
+
*/
|
|
36
|
+
depth?: number;
|
|
37
|
+
/**
|
|
38
|
+
* The absolute minimum number of children any node can have.
|
|
39
|
+
*
|
|
40
|
+
* @default 0
|
|
41
|
+
*/
|
|
42
|
+
minChildren?: number;
|
|
43
|
+
/**
|
|
44
|
+
* The maximum children a node can have at depth 0. This value scales down as depth increases.
|
|
45
|
+
*
|
|
46
|
+
* @default 10
|
|
47
|
+
*/
|
|
48
|
+
maxInitialChildren?: number;
|
|
49
|
+
initialData?: TData;
|
|
50
|
+
}): T[];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { faker } from "@faker-js/faker";
|
|
2
|
+
export function generateRandomTree({
|
|
3
|
+
createNode,
|
|
4
|
+
parentData
|
|
5
|
+
}, {
|
|
6
|
+
rootNodes = faker.number.int({ min: 0, max: 5 }),
|
|
7
|
+
depth = faker.number.int({ min: 0, max: 5 }),
|
|
8
|
+
minChildren = 0,
|
|
9
|
+
maxInitialChildren = 10,
|
|
10
|
+
initialData
|
|
11
|
+
} = {}) {
|
|
12
|
+
const generateChildren = (currentDepth, childCount, pData) => {
|
|
13
|
+
const res = [];
|
|
14
|
+
for (let i = 0; i < childCount; i++) {
|
|
15
|
+
const numChildren = calculateNumChildren(depth, currentDepth, minChildren, maxInitialChildren);
|
|
16
|
+
const data = parentData?.(pData) ?? void 0;
|
|
17
|
+
const parent = createNode(
|
|
18
|
+
generateChildren(currentDepth + 1, numChildren, data),
|
|
19
|
+
numChildren === 0,
|
|
20
|
+
data
|
|
21
|
+
);
|
|
22
|
+
if (parent === void 0) continue;
|
|
23
|
+
res.push(parent);
|
|
24
|
+
}
|
|
25
|
+
return res;
|
|
26
|
+
};
|
|
27
|
+
return generateChildren(0, rootNodes, initialData);
|
|
28
|
+
}
|
|
29
|
+
function calculateNumChildren(depth, currentDepth, minChildren, maxInitialChildren) {
|
|
30
|
+
const decayFactor = depth > 0 ? (depth - currentDepth) / depth : 0;
|
|
31
|
+
const maxAtDepth = minChildren + (maxInitialChildren - minChildren) * decayFactor;
|
|
32
|
+
const maxChildrenAtDepth = Math.max(minChildren, Math.floor(maxAtDepth));
|
|
33
|
+
let numChildren = 0;
|
|
34
|
+
if (currentDepth < depth) {
|
|
35
|
+
numChildren = faker.number.int({ min: minChildren, max: maxChildrenAtDepth });
|
|
36
|
+
}
|
|
37
|
+
return numChildren;
|
|
38
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { nodesBetween } from "./nodesBetween.js";
|
|
2
|
+
export const getChildChunks = (doc, itemType, selection) => {
|
|
3
|
+
const children = [];
|
|
4
|
+
nodesBetween(doc, selection, (node, pos) => {
|
|
5
|
+
if (node?.type === itemType) {
|
|
6
|
+
const $pos = doc.resolve(pos + 1);
|
|
7
|
+
if ($pos.depth > selection.$from.depth) {
|
|
8
|
+
children.push({ $from: $pos, $to: $pos });
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return true;
|
|
13
|
+
});
|
|
14
|
+
return children;
|
|
15
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Node } from "@tiptap/pm/model";
|
|
2
|
+
/**
|
|
3
|
+
* Given two different nodes, calculates the range that needs to be replaced with the latter node, to sync them.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* const offset = ... // the shared offset between the two nodes, if needed
|
|
7
|
+
* const diff = getDiffReplacementRange(existingNode, convertedNewNode)
|
|
8
|
+
* if (diff) {
|
|
9
|
+
* intTr.replace(offset + diff.start, offset + diff.end, convertedNewNode.slice(diff.start, diff.otherEnd))
|
|
10
|
+
* }
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare function getDiffReplacementRange(nodeA: Node, nodeB: Node, offset?: number): {
|
|
14
|
+
start: number;
|
|
15
|
+
end: number;
|
|
16
|
+
/** For slicing the latter node. */
|
|
17
|
+
sliceStart: number;
|
|
18
|
+
/** For slicing the latter node. */
|
|
19
|
+
sliceEnd: number;
|
|
20
|
+
} | null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function getDiffReplacementRange(nodeA, nodeB, offset = 0) {
|
|
2
|
+
const diffStart = nodeA.content.findDiffStart(nodeB.content);
|
|
3
|
+
const diffEnd = nodeA.content.findDiffEnd(nodeB.content);
|
|
4
|
+
if (diffStart === null || diffEnd === null) return null;
|
|
5
|
+
const nodeStart = Math.min(diffStart, diffEnd.a);
|
|
6
|
+
const start = nodeStart + offset;
|
|
7
|
+
const end = diffEnd.a + offset;
|
|
8
|
+
return { start, end, sliceStart: nodeStart, sliceEnd: diffEnd.b };
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the visual width and height of an element (el.getBoundingClientRect().width/height - scrollbarWidth/Height).
|
|
3
|
+
*
|
|
4
|
+
* Useful for creating drop indicators that don't go outside the element.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getElMaxVisualSize(el: HTMLElement): {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function getElMaxVisualSize(el) {
|
|
2
|
+
const scrollBarWidth = el.offsetWidth - el.clientWidth;
|
|
3
|
+
const width = el.getBoundingClientRect().width - scrollBarWidth;
|
|
4
|
+
const scrollBarHeight = el.offsetHeight - el.clientHeight;
|
|
5
|
+
const height = el.getBoundingClientRect().height - scrollBarHeight;
|
|
6
|
+
return { width, height };
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const pxRegex = /([0-9.]+)px/g;
|
|
2
|
+
export function getElPropertyAsInt(el, prop) {
|
|
3
|
+
const value = window.getComputedStyle(el).getPropertyValue(prop);
|
|
4
|
+
if (!pxRegex.test(value)) {
|
|
5
|
+
throw new Error(`Component must set property ${prop} in pixels for getElPropertyAsInt to be able to extract the value.`);
|
|
6
|
+
}
|
|
7
|
+
return Number.parseInt(value.replace(pxRegex, "$1"), 10);
|
|
8
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MarkType } from "@tiptap/pm/model";
|
|
2
|
+
import type { EditorState } from "@tiptap/pm/state";
|
|
3
|
+
/**
|
|
4
|
+
* Get the position of any mark of the given type touching the given position.
|
|
5
|
+
*
|
|
6
|
+
* Basically searches outwards from the position until it finds a text node without the given mark type.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getMarkPosition(state: EditorState, markTypeOrName: MarkType | string, pos: number): {
|
|
9
|
+
from: number;
|
|
10
|
+
to: number;
|
|
11
|
+
} | null;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getMarkType } from "@tiptap/core";
|
|
2
|
+
export function getMarkPosition(state, markTypeOrName, pos) {
|
|
3
|
+
const markType = getMarkType(markTypeOrName, state.schema);
|
|
4
|
+
const $pos = state.doc.resolve(pos);
|
|
5
|
+
const isAtEnd = $pos.parentOffset === $pos.parent.nodeSize - 2;
|
|
6
|
+
const startOffset = isAtEnd ? $pos.parentOffset - 1 : $pos.parentOffset;
|
|
7
|
+
const start = $pos.parent.childAfter(startOffset);
|
|
8
|
+
if (!start) return null;
|
|
9
|
+
function hasMark(node) {
|
|
10
|
+
const marks = node.marks;
|
|
11
|
+
for (const mark of marks) {
|
|
12
|
+
if (mark.type === markType) return true;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const parent = $pos.parent;
|
|
17
|
+
let fromIndex = $pos.index() - (isAtEnd ? 1 : 0) - 1;
|
|
18
|
+
let fromPos = $pos.start() + (start?.offset ?? 0);
|
|
19
|
+
let toPos = fromPos;
|
|
20
|
+
let toIndex = fromIndex + 1;
|
|
21
|
+
while (fromIndex > 0 && hasMark(parent.child(fromIndex))) {
|
|
22
|
+
const child = parent.child(fromIndex);
|
|
23
|
+
const childSize = child.nodeSize;
|
|
24
|
+
fromIndex -= 1;
|
|
25
|
+
fromPos -= childSize;
|
|
26
|
+
}
|
|
27
|
+
while (toIndex < parent.childCount && hasMark(parent.child(toIndex))) {
|
|
28
|
+
const child = parent.child(toIndex);
|
|
29
|
+
const childSize = child.nodeSize;
|
|
30
|
+
toIndex += 1;
|
|
31
|
+
toPos += childSize;
|
|
32
|
+
}
|
|
33
|
+
return { from: fromPos, to: toPos };
|
|
34
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function getMarksInSelection(state) {
|
|
2
|
+
const sel = state.selection;
|
|
3
|
+
const marks = [];
|
|
4
|
+
const isAtEnd = sel.$from.parentOffset === sel.$to.parent.nodeSize - 2;
|
|
5
|
+
const start = isAtEnd ? sel.from - 1 : sel.from;
|
|
6
|
+
const end = sel.empty ? sel.from + 1 : sel.to;
|
|
7
|
+
state.doc.nodesBetween(start, end, (node) => {
|
|
8
|
+
if (node.marks) {
|
|
9
|
+
for (const mark of node.marks) {
|
|
10
|
+
marks.push(mark);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
});
|
|
15
|
+
return marks;
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { createStateOnlyPluginApply } from "./createStateOnlyPluginApply.js";
|
|
2
|
+
export { createStateOnlyPluginObjApply } from "./createStateOnlyPluginObjApply.js";
|
|
3
|
+
export { dropPointInfo } from "./dropPointInfo.js";
|
|
4
|
+
export { findUpwards } from "./findUpwards.js";
|
|
5
|
+
export { getChildChunks } from "./getChildChunks.js";
|
|
6
|
+
export { getDiffReplacementRange } from "./getDiffReplacementRange.js";
|
|
7
|
+
export { getElMaxVisualSize } from "./getElMaxVisualSize.js";
|
|
8
|
+
export { getElPropertyAsInt } from "./getElPropertyAsInt.js";
|
|
9
|
+
export { getGroupNodeNames } from "./getGroupNodeNames.js";
|
|
10
|
+
export { getMarkPosition } from "./getMarkPosition.js";
|
|
11
|
+
export { getMarksInSelection } from "./getMarksInSelection.js";
|
|
12
|
+
export { mapSelection } from "./mapSelection.js";
|
|
13
|
+
export { nodesBetween } from "./nodesBetween.js";
|
|
14
|
+
export { pointToPmPoint } from "./pointToPmPoint.js";
|
|
15
|
+
export { splitIntoChunks } from "./splitIntoChunks.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { createStateOnlyPluginApply } from "./createStateOnlyPluginApply.js";
|
|
2
|
+
export { createStateOnlyPluginObjApply } from "./createStateOnlyPluginObjApply.js";
|
|
3
|
+
export { dropPointInfo } from "./dropPointInfo.js";
|
|
4
|
+
export { findUpwards } from "./findUpwards.js";
|
|
5
|
+
export { getChildChunks } from "./getChildChunks.js";
|
|
6
|
+
export { getDiffReplacementRange } from "./getDiffReplacementRange.js";
|
|
7
|
+
export { getElMaxVisualSize } from "./getElMaxVisualSize.js";
|
|
8
|
+
export { getElPropertyAsInt } from "./getElPropertyAsInt.js";
|
|
9
|
+
export { getGroupNodeNames } from "./getGroupNodeNames.js";
|
|
10
|
+
export { getMarkPosition } from "./getMarkPosition.js";
|
|
11
|
+
export { getMarksInSelection } from "./getMarksInSelection.js";
|
|
12
|
+
export { mapSelection } from "./mapSelection.js";
|
|
13
|
+
export { nodesBetween } from "./nodesBetween.js";
|
|
14
|
+
export { pointToPmPoint } from "./pointToPmPoint.js";
|
|
15
|
+
export { splitIntoChunks } from "./splitIntoChunks.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { pushIfNotIn } from "@alanscodelog/utils";
|
|
2
|
+
import { getGroupNodeNames } from "../getGroupNodeNames.js";
|
|
3
|
+
export const createNodeTypesList = (schema, mutatedNodeTypes, nodeTypeNames, nodeGroups) => {
|
|
4
|
+
if (nodeGroups) {
|
|
5
|
+
pushIfNotIn(
|
|
6
|
+
mutatedNodeTypes,
|
|
7
|
+
getGroupNodeNames(schema, nodeGroups)
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
if (nodeTypeNames) {
|
|
11
|
+
pushIfNotIn(
|
|
12
|
+
mutatedNodeTypes,
|
|
13
|
+
nodeTypeNames
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
return mutatedNodeTypes;
|
|
17
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function debugMap(tr, {
|
|
2
|
+
asTable = true,
|
|
3
|
+
start = 0,
|
|
4
|
+
end = tr.doc.nodeSize - 1,
|
|
5
|
+
collapse = true
|
|
6
|
+
} = {}) {
|
|
7
|
+
console[collapse ? "groupCollapsed" : "group"]("map");
|
|
8
|
+
if (asTable) {
|
|
9
|
+
const table = {
|
|
10
|
+
before: [],
|
|
11
|
+
after: []
|
|
12
|
+
};
|
|
13
|
+
for (let i = start; i <= end; i++) {
|
|
14
|
+
table.before.push(i);
|
|
15
|
+
table.after.push(tr.mapping.map(i));
|
|
16
|
+
}
|
|
17
|
+
console.table(table);
|
|
18
|
+
} else {
|
|
19
|
+
for (let i = start; i <= end; i++) {
|
|
20
|
+
console.log(i, tr.mapping.map(i));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
console.groupEnd();
|
|
24
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { type Fragment, type Node, ResolvedPos, type Slice } from "@tiptap/pm/model";
|
|
2
|
+
export declare function debugNode(doc?: Slice | Fragment | ResolvedPos | Node | null | undefined, title?: string | number, collapse?: boolean, deep?: boolean, props?: ("size" | "is" | "attrs")[]): void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ResolvedPos } from "@tiptap/pm/model";
|
|
2
|
+
import { recurse } from "./recurse.js";
|
|
3
|
+
export function debugNode(doc, title, collapse = true, deep = true, props = ["size"]) {
|
|
4
|
+
if (doc instanceof ResolvedPos) {
|
|
5
|
+
doc = doc.node();
|
|
6
|
+
}
|
|
7
|
+
const d = doc;
|
|
8
|
+
const isSlice = d?.constructor?.name === "Slice";
|
|
9
|
+
const isFragment = d?.constructor?.name === "Fragment";
|
|
10
|
+
const message = !doc ? "UNDEFINED" : isSlice ? `[[${d.content.content.map((node) => recurse(node, deep, props) ?? "").join("]\n[")}]]` : isFragment ? `[[${d.content.map((node) => recurse(node, deep, props) ?? "").join("]\n[")}]]` : recurse(d, deep, props);
|
|
11
|
+
console[collapse ? "groupCollapsed" : "group"](
|
|
12
|
+
title !== void 0 ? title.toString() : "",
|
|
13
|
+
message !== "UNDEFINED" ? isSlice || isFragment ? "Slice" : message.split("\n")[0] : message
|
|
14
|
+
// new Error().stack?.split("\n")[2],
|
|
15
|
+
);
|
|
16
|
+
console.log(message);
|
|
17
|
+
console.groupEnd();
|
|
18
|
+
}
|