@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,51 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/core";
|
|
2
|
+
import { type EditorState, PluginKey } from "@tiptap/pm/state";
|
|
3
|
+
import type { Component, InjectionKey, Ref } from "vue";
|
|
4
|
+
export interface MenuCloseCommands {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Menus describe how to close them again with this key.
|
|
8
|
+
*
|
|
9
|
+
* It can be used by other menus to close any open menus before opening itself (see {@link closeOtherMenus}).
|
|
10
|
+
*
|
|
11
|
+
* The close command must not need to take any arguments.
|
|
12
|
+
*
|
|
13
|
+
* You can extend the `MenuCloseCommands` interface to add more commands.
|
|
14
|
+
*/
|
|
15
|
+
export declare const menusPluginKey: PluginKey<MenusPluginState>;
|
|
16
|
+
export type MenusPluginState = {
|
|
17
|
+
state: boolean;
|
|
18
|
+
menu?: OpenMenuInfo;
|
|
19
|
+
pin: boolean;
|
|
20
|
+
canShow: boolean;
|
|
21
|
+
};
|
|
22
|
+
export interface BaseMenu<T extends PluginKey<any> | undefined = PluginKey<any> | undefined> {
|
|
23
|
+
name: string;
|
|
24
|
+
closeCommand: keyof MenuCloseCommands | undefined;
|
|
25
|
+
type: "context" | "floating" | "mark";
|
|
26
|
+
pluginKey: T extends PluginKey<any> ? T : never;
|
|
27
|
+
priority?: number;
|
|
28
|
+
canShow: T extends PluginKey<any> ? (state: EditorState, pluginState: ReturnType<T["getState"]>) => boolean : never;
|
|
29
|
+
}
|
|
30
|
+
export type OpenMenuInfo = Omit<BaseMenu, "pluginKey" | "canShow">;
|
|
31
|
+
export interface ContextMenu<T extends PluginKey<any> | undefined = PluginKey<any> | undefined> extends BaseMenu<T> {
|
|
32
|
+
type: "context";
|
|
33
|
+
}
|
|
34
|
+
export interface FloatingMenu<T extends PluginKey<any> | undefined = PluginKey<any> | undefined> extends BaseMenu<T> {
|
|
35
|
+
type: "floating";
|
|
36
|
+
}
|
|
37
|
+
export interface MarkMenu<T extends PluginKey<any> = PluginKey<any>> extends BaseMenu<T> {
|
|
38
|
+
type: "mark";
|
|
39
|
+
}
|
|
40
|
+
export type Menu<T extends PluginKey<any> = PluginKey<any>> = MarkMenu<T> | FloatingMenu<T> | ContextMenu<T>;
|
|
41
|
+
export type MenuRenderInfo = {
|
|
42
|
+
props?: (editor: Editor) => Record<string, any>;
|
|
43
|
+
component: Component;
|
|
44
|
+
popupOptions?: {
|
|
45
|
+
/**
|
|
46
|
+
* Attempts to pin the mark menu to the top of the item if the cursor is this close or less to it. Set to a number greater than zero or return a number greater than 0 to enable it.
|
|
47
|
+
*/
|
|
48
|
+
pinToItemDistance?: number | ((state: EditorState) => number);
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export declare const menusInjectionKey: InjectionKey<(Ref<Record<string, MenuRenderInfo>>)>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Command } from "@tiptap/core";
|
|
2
|
+
import type { NodeType } from "@tiptap/pm/model";
|
|
3
|
+
declare module "@tiptap/core" {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
5
|
+
tableEnter: {
|
|
6
|
+
/**
|
|
7
|
+
* Handles enter in a table. Splits the table at the next row, inserting a default item, or if it can't, after the table. Does not delete the selection as it's just weird since delete in a table just clears them.
|
|
8
|
+
*
|
|
9
|
+
* @redirectable
|
|
10
|
+
*/
|
|
11
|
+
tableEnter: (pos?: number) => ReturnType;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export declare const tableEnter: (tableTypesOrNames?: (string | NodeType)[], itemTypeOrName?: string | NodeType) => (pos?: number) => Command;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getNodeType } from "@tiptap/core";
|
|
2
|
+
export const tableEnter = (tableTypesOrNames = ["table", "tableRow", "tableCell", "tableHeader"], itemTypeOrName = "item") => (pos) => ({ state, dispatch, tr }) => {
|
|
3
|
+
const itemType = getNodeType(itemTypeOrName, state.schema);
|
|
4
|
+
const tableType = tableTypesOrNames.map((name) => getNodeType(name, state.schema));
|
|
5
|
+
const { $from, empty } = state.selection;
|
|
6
|
+
const $pos = pos !== void 0 ? tr.doc.resolve(pos) : $from;
|
|
7
|
+
const parent = $pos.node(-1);
|
|
8
|
+
if (tableType.includes(parent.type)) {
|
|
9
|
+
const item = itemType.createAndFill();
|
|
10
|
+
if (!item) return false;
|
|
11
|
+
if (dispatch) {
|
|
12
|
+
if (pos === void 0 && !empty) {
|
|
13
|
+
}
|
|
14
|
+
tr.insert($from.after(-2), item);
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const TableRow: import("@tiptap/core").Node<import("@tiptap/extension-table", { with: { "resolution-mode": "require" } }).TableRowOptions, any>;
|
|
2
|
+
export declare const TableCell: import("@tiptap/core").Node<import("@tiptap/extension-table", { with: { "resolution-mode": "require" } }).TableCellOptions, any>;
|
|
3
|
+
export declare const TableHeader: import("@tiptap/core").Node<import("@tiptap/extension-table", { with: { "resolution-mode": "require" } }).TableHeaderOptions, any>;
|
|
4
|
+
export declare const Table: import("@tiptap/core").Node<import("@tiptap/extension-table", { with: { "resolution-mode": "require" } }).TableOptions, any>;
|
|
5
|
+
export declare const TableExtensions: (import("@tiptap/core").Node<import("@tiptap/extension-table", { with: { "resolution-mode": "require" } }).TableRowOptions, any> | import("@tiptap/core").Node<import("@tiptap/extension-table", { with: { "resolution-mode": "require" } }).TableOptions, any>)[];
|
|
6
|
+
export type NodeTableName = "table";
|
|
7
|
+
export type NodeTableRowName = "tableRow";
|
|
8
|
+
export type NodeTableCellName = "tableCell";
|
|
9
|
+
export type NodeTableHeaderName = "tableHeader";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Table as TiptapTable,
|
|
3
|
+
TableCell as TiptapTableCell,
|
|
4
|
+
TableHeader as TiptapTableHeader,
|
|
5
|
+
TableRow as TiptapTableRow
|
|
6
|
+
} from "@tiptap/extension-table";
|
|
7
|
+
import { tableEnter } from "./commands/tableEnter.js";
|
|
8
|
+
export const TableRow = TiptapTableRow.extend({
|
|
9
|
+
// force table rows to contain something, otherwise create and fill won't work as expected
|
|
10
|
+
content: "(tableCell | tableHeader)+",
|
|
11
|
+
addKeyboardShortcuts() {
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export const TableCell = TiptapTableCell.extend({
|
|
16
|
+
content: "block",
|
|
17
|
+
addKeyboardShortcuts() {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
export const TableHeader = TiptapTableHeader.extend({
|
|
22
|
+
content: "block",
|
|
23
|
+
addKeyboardShortcuts() {
|
|
24
|
+
return {};
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
export const Table = TiptapTable.extend({
|
|
28
|
+
addOptions() {
|
|
29
|
+
return {
|
|
30
|
+
...this.parent?.(),
|
|
31
|
+
resizable: true,
|
|
32
|
+
lastColumnResizable: false
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
addCommands() {
|
|
36
|
+
return {
|
|
37
|
+
tableEnter: tableEnter()
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
addKeyboardShortcuts() {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
export const TableExtensions = [Table, TableRow, TableCell, TableHeader];
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { Mark, Node } from "@tiptap/pm/model";
|
|
2
|
+
export declare const pm: {
|
|
3
|
+
schema: import("@tiptap/pm/model").Schema<"paragraph" | "item" | "codeBlock" | "heading" | "iframe" | "image" | "table" | "text" | "blockquote" | "cite" | "list" | "tableCell" | "doc" | "embeddedDoc" | "tableRow" | "tableHeader", "bold" | "code" | "italic" | "strike" | "subscript" | "superscript" | "underline" | "hardBreak" | "highlight">;
|
|
4
|
+
} & {
|
|
5
|
+
readonly [x: string]: import("prosemirror-test-builder").NodeBuilder;
|
|
6
|
+
readonly paragraph: import("prosemirror-test-builder").NodeBuilder;
|
|
7
|
+
readonly item: import("prosemirror-test-builder").NodeBuilder;
|
|
8
|
+
readonly codeBlock: import("prosemirror-test-builder").NodeBuilder;
|
|
9
|
+
readonly heading: import("prosemirror-test-builder").NodeBuilder;
|
|
10
|
+
readonly iframe: import("prosemirror-test-builder").NodeBuilder;
|
|
11
|
+
readonly image: import("prosemirror-test-builder").NodeBuilder;
|
|
12
|
+
readonly table: import("prosemirror-test-builder").NodeBuilder;
|
|
13
|
+
readonly text: import("prosemirror-test-builder").NodeBuilder;
|
|
14
|
+
readonly blockquote: import("prosemirror-test-builder").NodeBuilder;
|
|
15
|
+
readonly cite: import("prosemirror-test-builder").NodeBuilder;
|
|
16
|
+
readonly list: import("prosemirror-test-builder").NodeBuilder;
|
|
17
|
+
readonly tableCell: import("prosemirror-test-builder").NodeBuilder;
|
|
18
|
+
readonly doc: import("prosemirror-test-builder").NodeBuilder;
|
|
19
|
+
readonly embeddedDoc: import("prosemirror-test-builder").NodeBuilder;
|
|
20
|
+
readonly tableRow: import("prosemirror-test-builder").NodeBuilder;
|
|
21
|
+
readonly tableHeader: import("prosemirror-test-builder").NodeBuilder;
|
|
22
|
+
} & {
|
|
23
|
+
readonly [x: string]: import("prosemirror-test-builder").MarkBuilder;
|
|
24
|
+
readonly bold: import("prosemirror-test-builder").MarkBuilder;
|
|
25
|
+
readonly code: import("prosemirror-test-builder").MarkBuilder;
|
|
26
|
+
readonly italic: import("prosemirror-test-builder").MarkBuilder;
|
|
27
|
+
readonly strike: import("prosemirror-test-builder").MarkBuilder;
|
|
28
|
+
readonly subscript: import("prosemirror-test-builder").MarkBuilder;
|
|
29
|
+
readonly superscript: import("prosemirror-test-builder").MarkBuilder;
|
|
30
|
+
readonly underline: import("prosemirror-test-builder").MarkBuilder;
|
|
31
|
+
readonly hardBreak: import("prosemirror-test-builder").MarkBuilder;
|
|
32
|
+
readonly highlight: import("prosemirror-test-builder").MarkBuilder;
|
|
33
|
+
} & {
|
|
34
|
+
[name: string]: import("prosemirror-test-builder").NodeBuilder | import("prosemirror-test-builder").MarkBuilder;
|
|
35
|
+
};
|
|
36
|
+
export type GeneratorConfigEntry<TChildrenType extends "node" | "text" = "node" | "text", TParentType extends "node" | "text" = "node" | "text", TChildren extends TChildrenType extends "node" ? Node : Mark | string = TChildrenType extends "node" ? Node : Mark | string, TParent extends TParentType extends "node" ? Node : Mark | string = TParentType extends "node" ? Node : Mark | string> = {
|
|
37
|
+
parents: {
|
|
38
|
+
/**
|
|
39
|
+
* The type of the parent (node or "text") where "text" is a string or mark.
|
|
40
|
+
* Determines the call signature of the create function.
|
|
41
|
+
*/
|
|
42
|
+
type: TParentType;
|
|
43
|
+
/** Possible parent nodes that can have the given children. The children need not be direct descendants, see `ignoreValidation`. */
|
|
44
|
+
names: string[];
|
|
45
|
+
};
|
|
46
|
+
children: {
|
|
47
|
+
/**
|
|
48
|
+
* The type of children (node or "text") where "text" is a string or mark.
|
|
49
|
+
* Determines the call signature of the create function.
|
|
50
|
+
*/
|
|
51
|
+
type: TChildrenType;
|
|
52
|
+
names?: string[];
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Set to true to ignore all children mismatches, or set an array of children names to ignore.
|
|
56
|
+
*
|
|
57
|
+
* This is needed for creating "end" nodes that aren't valid names (e.g. `text` is not technically allowed since you can't do `builder.text()`).
|
|
58
|
+
*
|
|
59
|
+
* Or when the children are not direct children of the parent types as there is some in-between wrapper node that needs to be generated.
|
|
60
|
+
*/
|
|
61
|
+
ignoreValidation?: boolean | string[];
|
|
62
|
+
isRoot?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Creates the node. Can return undefined to "terminate" the branch being created, the node will be filtered out of the nodes passed to it's parent.
|
|
65
|
+
*
|
|
66
|
+
* If not set, a default `builder[parentType]({}, ...children)` will be used.
|
|
67
|
+
*
|
|
68
|
+
* Note also, it is not required to use the children. You can ignore them or use a subset or create a different one if needed (some node types *require* text and if your text not can return "" this can be a problem).
|
|
69
|
+
*/
|
|
70
|
+
create?: (parent: string, children: TChildren[]) => TParent | undefined;
|
|
71
|
+
};
|
|
72
|
+
export declare function getTextOrMarkLength(textOrMark: string | Mark): number;
|
|
73
|
+
export declare function createGeneratorConfig<TChildrenType extends "node" | "text" = "node" | "text", TParentType extends "node" | "text" = "node" | "text", TChildren extends TChildrenType extends "node" ? Node : Mark | string = TChildrenType extends "node" ? Node : Mark | string, TParent extends TParentType extends "node" ? Node : Mark | string = TParentType extends "node" ? Node : Mark | string>(config: GeneratorConfigEntry<TChildrenType, TParentType, TChildren, TParent>): GeneratorConfigEntry<TChildrenType, TParentType, TChildren, TParent>;
|
|
74
|
+
export declare const generatorConfig: (GeneratorConfigEntry<"node", "node", Node, Node & {
|
|
75
|
+
tag: {
|
|
76
|
+
[tag: string]: number;
|
|
77
|
+
};
|
|
78
|
+
}> | GeneratorConfigEntry<"text", "node", string | Mark, Node & {
|
|
79
|
+
tag: {
|
|
80
|
+
[tag: string]: number;
|
|
81
|
+
};
|
|
82
|
+
}> | GeneratorConfigEntry<"text", "text", string | Mark, string | Mark>)[];
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { faker } from "@faker-js/faker";
|
|
2
|
+
import { nanoid } from "nanoid";
|
|
3
|
+
import { builders } from "prosemirror-test-builder";
|
|
4
|
+
import { schema } from "./schema.js";
|
|
5
|
+
export const pm = builders(schema);
|
|
6
|
+
export function getTextOrMarkLength(textOrMark) {
|
|
7
|
+
if (typeof textOrMark === "string") {
|
|
8
|
+
return textOrMark.length;
|
|
9
|
+
}
|
|
10
|
+
const textNodes = textOrMark.flat.map((_) => "text" in _ ? _.text.length : getTextOrMarkLength(_));
|
|
11
|
+
return textNodes.reduce((a, b) => a + b, 0);
|
|
12
|
+
}
|
|
13
|
+
export function createGeneratorConfig(config) {
|
|
14
|
+
return config;
|
|
15
|
+
}
|
|
16
|
+
function createPsuedoSentence() {
|
|
17
|
+
const sentenceLength = faker.number.int({ min: 0, max: 1e3 });
|
|
18
|
+
const sentence = Array.from(
|
|
19
|
+
{ length: sentenceLength },
|
|
20
|
+
() => faker.string.sample({ min: 0, max: 1e3 })
|
|
21
|
+
).join(" ");
|
|
22
|
+
return sentence;
|
|
23
|
+
}
|
|
24
|
+
export const generatorConfig = [
|
|
25
|
+
createGeneratorConfig({
|
|
26
|
+
isRoot: true,
|
|
27
|
+
parents: { type: "node", names: ["doc"] },
|
|
28
|
+
ignoreValidation: true,
|
|
29
|
+
children: { type: "node", names: ["item"] },
|
|
30
|
+
create: (_parent, children) => {
|
|
31
|
+
if (!children || children.length === 0) {
|
|
32
|
+
return pm.doc(pm.list(pm.item({ blockId: nanoid(10) }, pm.paragraph({}, ""))));
|
|
33
|
+
}
|
|
34
|
+
return pm.doc(pm.list(...children));
|
|
35
|
+
}
|
|
36
|
+
}),
|
|
37
|
+
createGeneratorConfig({
|
|
38
|
+
parents: { type: "node", names: ["list"] },
|
|
39
|
+
children: { type: "node", names: ["item"] },
|
|
40
|
+
create: (_parent, children) => {
|
|
41
|
+
if (!children || children.length === 0) {
|
|
42
|
+
return pm.list(pm.item({ blockId: nanoid(10) }, pm.paragraph("")));
|
|
43
|
+
}
|
|
44
|
+
return pm.list(...children);
|
|
45
|
+
}
|
|
46
|
+
}),
|
|
47
|
+
createGeneratorConfig({
|
|
48
|
+
parents: { type: "node", names: ["item"] },
|
|
49
|
+
children: { type: "node", names: [
|
|
50
|
+
"paragraph",
|
|
51
|
+
"heading",
|
|
52
|
+
"codeBlock",
|
|
53
|
+
"embeddedDoc",
|
|
54
|
+
"iframe",
|
|
55
|
+
"table",
|
|
56
|
+
"image",
|
|
57
|
+
"blockquote"
|
|
58
|
+
] },
|
|
59
|
+
create: (_parent, children) => {
|
|
60
|
+
if (!children || children.length === 0) {
|
|
61
|
+
return pm.item({ blockId: nanoid(10) }, pm.paragraph(""));
|
|
62
|
+
}
|
|
63
|
+
return pm.item(
|
|
64
|
+
{ blockId: nanoid(10) },
|
|
65
|
+
children[0],
|
|
66
|
+
...children.length > 1 ? [pm.list(
|
|
67
|
+
{},
|
|
68
|
+
...children.slice(1).map(
|
|
69
|
+
(_) => pm.item({ blockId: nanoid(10) }, _)
|
|
70
|
+
)
|
|
71
|
+
)] : []
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}),
|
|
75
|
+
createGeneratorConfig({
|
|
76
|
+
parents: { type: "node", names: ["blockquote"] },
|
|
77
|
+
children: { type: "node", names: ["paragraph", "cite"] },
|
|
78
|
+
create: (_parent, children) => {
|
|
79
|
+
const parTypes = [];
|
|
80
|
+
const citeTypes = [];
|
|
81
|
+
for (const child of children) {
|
|
82
|
+
if (child.type.name === "cite") {
|
|
83
|
+
citeTypes.push(child);
|
|
84
|
+
} else {
|
|
85
|
+
parTypes.push(child);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (parTypes.length === 0) {
|
|
89
|
+
return pm.blockquote({}, pm.paragraph(""));
|
|
90
|
+
} else {
|
|
91
|
+
const someCite = citeTypes.find((_) => _.textContent.length > 0) ?? pm.cite({}, createPsuedoSentence());
|
|
92
|
+
return pm.blockquote({}, ...parTypes, someCite);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}),
|
|
96
|
+
createGeneratorConfig({
|
|
97
|
+
parents: { type: "node", names: ["table"] },
|
|
98
|
+
children: { type: "node", names: [
|
|
99
|
+
"tableHeader",
|
|
100
|
+
"tableCell"
|
|
101
|
+
] },
|
|
102
|
+
ignoreValidation: true,
|
|
103
|
+
// we're handling the in-between tableRow nodes
|
|
104
|
+
create: (_parent, children) => {
|
|
105
|
+
const headerType = [];
|
|
106
|
+
const cellType = [];
|
|
107
|
+
for (const child of children) {
|
|
108
|
+
if (child.type.name === "tableHeader") {
|
|
109
|
+
headerType.push(child);
|
|
110
|
+
} else if (child.type.name === "tableCell") {
|
|
111
|
+
cellType.push(child);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const colNum = headerType.length;
|
|
115
|
+
if (colNum === 0) {
|
|
116
|
+
return pm.table({}, pm.tableRow({}, pm.tableCell(pm.paragraph(""))));
|
|
117
|
+
}
|
|
118
|
+
const rowCount = Math.ceil(cellType.length / colNum);
|
|
119
|
+
const rows = [];
|
|
120
|
+
for (let i = 0; i < rowCount; i++) {
|
|
121
|
+
rows.push(pm.tableRow({}, ...cellType.slice(i * colNum, (i + 1) * colNum)));
|
|
122
|
+
}
|
|
123
|
+
return pm.table({}, pm.tableRow({}, ...headerType), ...rows);
|
|
124
|
+
}
|
|
125
|
+
}),
|
|
126
|
+
createGeneratorConfig({
|
|
127
|
+
parents: { type: "node", names: ["tableHeader", "tableCell"] },
|
|
128
|
+
children: { type: "node", names: ["paragraph"] },
|
|
129
|
+
create: (_parent, children) => {
|
|
130
|
+
if (!children || children.length === 0) {
|
|
131
|
+
return pm.tableCell(pm.paragraph(""));
|
|
132
|
+
}
|
|
133
|
+
return pm.tableCell(...children.slice(0, 1));
|
|
134
|
+
}
|
|
135
|
+
}),
|
|
136
|
+
createGeneratorConfig({
|
|
137
|
+
parents: { type: "node", names: ["paragraph", "heading", "codeBlock", "cite", "heading"] },
|
|
138
|
+
children: { type: "text", names: [
|
|
139
|
+
"bold",
|
|
140
|
+
"italic",
|
|
141
|
+
"underline",
|
|
142
|
+
"strike",
|
|
143
|
+
"subscript",
|
|
144
|
+
"superscript",
|
|
145
|
+
"code",
|
|
146
|
+
"link"
|
|
147
|
+
] },
|
|
148
|
+
create(parent, children) {
|
|
149
|
+
if (parent === "heading") {
|
|
150
|
+
return pm[parent]({ level: 1 }, ...children);
|
|
151
|
+
}
|
|
152
|
+
if (parent === "cite") {
|
|
153
|
+
return pm[parent]({}, faker.lorem.sentence());
|
|
154
|
+
}
|
|
155
|
+
if (parent === "paragraph") {
|
|
156
|
+
const someIndex = faker.number.int({ min: 0, max: children.length });
|
|
157
|
+
children.splice(someIndex, 0, pm.hardBreak());
|
|
158
|
+
}
|
|
159
|
+
return pm[parent]({}, ...children);
|
|
160
|
+
}
|
|
161
|
+
}),
|
|
162
|
+
createGeneratorConfig({
|
|
163
|
+
parents: {
|
|
164
|
+
type: "text",
|
|
165
|
+
names: [
|
|
166
|
+
"bold",
|
|
167
|
+
"italic",
|
|
168
|
+
"underline",
|
|
169
|
+
"strike",
|
|
170
|
+
"subscript",
|
|
171
|
+
"superscript",
|
|
172
|
+
"link"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
// note the addition of text
|
|
176
|
+
children: { type: "text", names: [
|
|
177
|
+
"bold",
|
|
178
|
+
"italic",
|
|
179
|
+
"underline",
|
|
180
|
+
"strike",
|
|
181
|
+
"subscript",
|
|
182
|
+
"superscript",
|
|
183
|
+
"link",
|
|
184
|
+
"text"
|
|
185
|
+
] },
|
|
186
|
+
ignoreValidation: ["text"]
|
|
187
|
+
// text is not a real node
|
|
188
|
+
// create: (parent, children) => {
|
|
189
|
+
// return pm[parent]({}, ...children as any) as any
|
|
190
|
+
// }
|
|
191
|
+
}),
|
|
192
|
+
createGeneratorConfig({
|
|
193
|
+
ignoreValidation: true,
|
|
194
|
+
// text is not a real node
|
|
195
|
+
parents: { type: "text", names: ["code"] },
|
|
196
|
+
children: { type: "text", names: ["text"] }
|
|
197
|
+
}),
|
|
198
|
+
createGeneratorConfig({
|
|
199
|
+
parents: { type: "text", names: ["text"] },
|
|
200
|
+
children: { type: "text" },
|
|
201
|
+
create: (_parent) => {
|
|
202
|
+
return createPsuedoSentence();
|
|
203
|
+
}
|
|
204
|
+
})
|
|
205
|
+
];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type EditorOptions } from "@tiptap/core";
|
|
2
|
+
import type { Schema } from "@tiptap/pm/model";
|
|
3
|
+
export declare const extensions: EditorOptions["extensions"];
|
|
4
|
+
export declare const schema: Schema<"codeBlock" | "paragraph" | "item" | "heading" | "iframe" | "image" | "table" | "text" | "embeddedDoc" | "blockquote" | "cite" | "list" | "tableCell" | "doc" | "tableRow" | "tableHeader", "bold" | "code" | "italic" | "strike" | "subscript" | "superscript" | "underline" | "hardBreak" | "highlight">;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { getSchema } from "@tiptap/core";
|
|
2
|
+
import { Bold } from "@tiptap/extension-bold";
|
|
3
|
+
import { Code } from "@tiptap/extension-code";
|
|
4
|
+
import { Dropcursor } from "@tiptap/extension-dropcursor";
|
|
5
|
+
import { Gapcursor } from "@tiptap/extension-gapcursor";
|
|
6
|
+
import { Italic } from "@tiptap/extension-italic";
|
|
7
|
+
import { Paragraph } from "@tiptap/extension-paragraph";
|
|
8
|
+
import { Strike } from "@tiptap/extension-strike";
|
|
9
|
+
import { Subscript } from "@tiptap/extension-subscript";
|
|
10
|
+
import { Superscript } from "@tiptap/extension-superscript";
|
|
11
|
+
import { Text } from "@tiptap/extension-text";
|
|
12
|
+
import { Underline } from "@tiptap/extension-underline";
|
|
13
|
+
import { Base } from "./features/Base/Base.js";
|
|
14
|
+
import { Blockquote, Cite } from "./features/Blockquote/Blockquote.js";
|
|
15
|
+
import { Item } from "./features/Blocks/Item.js";
|
|
16
|
+
import { List } from "./features/Blocks/List.js";
|
|
17
|
+
import { CodeBlock } from "./features/CodeBlock/CodeBlock.js";
|
|
18
|
+
import { CommandBar } from "./features/CommandsMenus/CommandBar.js";
|
|
19
|
+
import { Document } from "./features/Document/Document.js";
|
|
20
|
+
import { EmbeddedDocument } from "./features/EmbeddedDocument/EmbeddedDocument.js";
|
|
21
|
+
import { HardBreak } from "./features/HardBreak/HardBreak.js";
|
|
22
|
+
import { Heading } from "./features/Heading/Heading.js";
|
|
23
|
+
import { Highlight } from "./features/Highlight/Highlight.js";
|
|
24
|
+
import { History } from "./features/History/History.js";
|
|
25
|
+
import { Iframe } from "./features/Iframe/Iframe.js";
|
|
26
|
+
import { Image } from "./features/Image/Image.js";
|
|
27
|
+
import { Link } from "./features/Link/Link.js";
|
|
28
|
+
import { Menus } from "./features/Menus/Menus.js";
|
|
29
|
+
import { TableExtensions } from "./features/Tables/index.js";
|
|
30
|
+
function stripShortcuts(c) {
|
|
31
|
+
return c.extend({
|
|
32
|
+
addKeyboardShortcuts() {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export const extensions = [
|
|
38
|
+
Document,
|
|
39
|
+
Gapcursor,
|
|
40
|
+
Dropcursor,
|
|
41
|
+
// custom
|
|
42
|
+
stripShortcuts(Paragraph.extend({
|
|
43
|
+
group: "block"
|
|
44
|
+
})),
|
|
45
|
+
CommandBar,
|
|
46
|
+
Base,
|
|
47
|
+
List,
|
|
48
|
+
Item,
|
|
49
|
+
Heading,
|
|
50
|
+
CodeBlock,
|
|
51
|
+
Iframe,
|
|
52
|
+
EmbeddedDocument,
|
|
53
|
+
Link,
|
|
54
|
+
// needs to be before other marks so we don't get link splitting
|
|
55
|
+
HardBreak,
|
|
56
|
+
Image,
|
|
57
|
+
Highlight,
|
|
58
|
+
...TableExtensions,
|
|
59
|
+
...[
|
|
60
|
+
// do not use configured extensions here
|
|
61
|
+
// see https://github.com/ueberdosis/tiptap/issues/4081
|
|
62
|
+
Text,
|
|
63
|
+
// styling
|
|
64
|
+
Blockquote,
|
|
65
|
+
Cite,
|
|
66
|
+
Code,
|
|
67
|
+
Italic,
|
|
68
|
+
Underline,
|
|
69
|
+
Strike,
|
|
70
|
+
Subscript,
|
|
71
|
+
Superscript,
|
|
72
|
+
Bold,
|
|
73
|
+
// embedding
|
|
74
|
+
// other
|
|
75
|
+
History
|
|
76
|
+
].map((e) => stripShortcuts(e)),
|
|
77
|
+
Menus
|
|
78
|
+
];
|
|
79
|
+
const _schema = getSchema(extensions);
|
|
80
|
+
export const schema = _schema;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Schema } from "@tiptap/pm/model";
|
|
2
|
+
import { type NodeFileLoaderName } from "./features/FileLoader/FileLoader.js";
|
|
3
|
+
import { type schema as baseSchema } from "./schema.js";
|
|
4
|
+
export declare const testExtensions: (import("@tiptap/core").AnyExtension | import("@tiptap/core").Node<import("./features/FileLoader/types.ts").FileLoaderExtensionOptions, any>)[];
|
|
5
|
+
export declare const testSchema: typeof baseSchema & Schema<NodeFileLoaderName & "itemNoId">;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getSchema } from "@tiptap/core";
|
|
2
|
+
import { VueNodeViewRenderer } from "@tiptap/vue-3";
|
|
3
|
+
import { BaseShortcuts } from "./features/BaseShortcuts/BaseShortcuts.js";
|
|
4
|
+
import FileLoaderNodeView from "./features/FileLoader/components/FileLoaderNodeView.vue";
|
|
5
|
+
import { FileLoader } from "./features/FileLoader/FileLoader.js";
|
|
6
|
+
import { TestFileLoaderHandler } from "./features/FileLoader/FileLoaderHandler/TestFileLoaderHandler.js";
|
|
7
|
+
import { extensions } from "./schema.js";
|
|
8
|
+
export const testExtensions = [
|
|
9
|
+
FileLoader.extend({
|
|
10
|
+
addOptions() {
|
|
11
|
+
return {
|
|
12
|
+
...this.parent?.(),
|
|
13
|
+
handler: TestFileLoaderHandler
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
addNodeView() {
|
|
17
|
+
return VueNodeViewRenderer(FileLoaderNodeView, {
|
|
18
|
+
stopEvent() {
|
|
19
|
+
return true;
|
|
20
|
+
},
|
|
21
|
+
ignoreMutation() {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}),
|
|
27
|
+
BaseShortcuts,
|
|
28
|
+
...extensions
|
|
29
|
+
];
|
|
30
|
+
export const testSchema = getSchema(testExtensions);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type DropInfo } from "./dropPointInfo.js";
|
|
2
|
+
import type { Point } from "../../types/index.js";
|
|
3
|
+
export interface DropIndicator extends Point {
|
|
4
|
+
width: number;
|
|
5
|
+
type: "child" | "before" | "after";
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Calculates the position and type of the drop indicator based on the pointer coordinates
|
|
9
|
+
* and the target element's bounding rectangle.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createDropIndicator(
|
|
12
|
+
/** The drop point information object. */
|
|
13
|
+
dropInfo: DropInfo,
|
|
14
|
+
/** The bounding rectangle of the element being dragged over. It will be used for positioning the indicator and constraining it's width `(target.x < indicator < target.right)`. */
|
|
15
|
+
targetRect: DOMRect,
|
|
16
|
+
/**
|
|
17
|
+
* Determines the additional indentation to add when indicating a child drop operation. You normally want this to be the indentation of the dragged item.
|
|
18
|
+
*
|
|
19
|
+
* Can be gotten with {@link getElPropertyAsInt}, see it for details.
|
|
20
|
+
*/
|
|
21
|
+
indentX: number,
|
|
22
|
+
/** Maximum width of the drop indicator. See {@link getElMaxVisualSize}. */
|
|
23
|
+
maxWidth: number): DropIndicator | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DROP_X, DROP_Y } from "./dropPointInfo.js";
|
|
2
|
+
export function createDropIndicator(dropInfo, targetRect, indentX, maxWidth) {
|
|
3
|
+
const d = dropInfo;
|
|
4
|
+
let dropIndicator;
|
|
5
|
+
const inBottomHalf = d.y === DROP_Y.BOTTOM || d.y === DROP_Y.OUTSIDE_BOTTOM;
|
|
6
|
+
const toRightOfIndent = d.x === DROP_X.INSIDE_INDENT || d.x === DROP_X.OUTSIDE_RIGHT;
|
|
7
|
+
if (toRightOfIndent && inBottomHalf) {
|
|
8
|
+
dropIndicator = {
|
|
9
|
+
type: "child",
|
|
10
|
+
x: targetRect.x + indentX,
|
|
11
|
+
y: targetRect.y + targetRect.height,
|
|
12
|
+
width: maxWidth
|
|
13
|
+
};
|
|
14
|
+
} else {
|
|
15
|
+
if (inBottomHalf) {
|
|
16
|
+
dropIndicator = {
|
|
17
|
+
type: "after",
|
|
18
|
+
x: targetRect.x,
|
|
19
|
+
y: targetRect.y + targetRect.height,
|
|
20
|
+
width: maxWidth
|
|
21
|
+
};
|
|
22
|
+
} else {
|
|
23
|
+
dropIndicator = {
|
|
24
|
+
type: "before",
|
|
25
|
+
x: targetRect.x,
|
|
26
|
+
y: targetRect.y,
|
|
27
|
+
width: maxWidth
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const rightDiff = dropIndicator.x + dropIndicator.width - targetRect.right;
|
|
32
|
+
if (rightDiff > 0) {
|
|
33
|
+
dropIndicator.width -= rightDiff;
|
|
34
|
+
}
|
|
35
|
+
return dropIndicator;
|
|
36
|
+
}
|