@witchcraft/editor 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +122 -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/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/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 +5 -5
- package/dist/module.d.cts +0 -2
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<!-- Every focusable element needs to checkCloseOnBlur to preserve focus when focusing to another element inside the component -->
|
|
3
|
+
|
|
4
|
+
<div
|
|
5
|
+
v-if="showBubbleMenu"
|
|
6
|
+
tabindex="0"
|
|
7
|
+
:class="twMerge(`
|
|
8
|
+
rounded-sm
|
|
9
|
+
border-neutral-300
|
|
10
|
+
dark:border-neutral-700
|
|
11
|
+
border
|
|
12
|
+
bg-neutral-50
|
|
13
|
+
dark:bg-neutral-950
|
|
14
|
+
p-2
|
|
15
|
+
`)"
|
|
16
|
+
>
|
|
17
|
+
<bubble-menu-external-link
|
|
18
|
+
v-if="!isInternalLink"
|
|
19
|
+
:editor="editor"
|
|
20
|
+
:link-suggestions="finalLinkSuggestions"
|
|
21
|
+
:link-mark="linkMark"
|
|
22
|
+
:is-changed="isChanged"
|
|
23
|
+
ref="component"
|
|
24
|
+
v-model:link-href="linkHref"
|
|
25
|
+
v-model:link-text-value="linkTextValue"
|
|
26
|
+
@close="close"
|
|
27
|
+
@copy="copy"
|
|
28
|
+
@remove="removeLink"
|
|
29
|
+
/>
|
|
30
|
+
<bubble-menu-internal-link
|
|
31
|
+
v-if="isInternalLink"
|
|
32
|
+
:editor="editor"
|
|
33
|
+
:link-suggestions="finalInternalLinkSuggestions"
|
|
34
|
+
:link-mark="linkMark"
|
|
35
|
+
:is-changed="isChanged"
|
|
36
|
+
:get-internal-link-href="getInternalLinkHref"
|
|
37
|
+
ref="component"
|
|
38
|
+
v-model:link-text="linkTextValue"
|
|
39
|
+
@close="close"
|
|
40
|
+
@copy="copy"
|
|
41
|
+
@remove="removeLink"
|
|
42
|
+
/>
|
|
43
|
+
</div>
|
|
44
|
+
</template>
|
|
45
|
+
|
|
46
|
+
<script setup>
|
|
47
|
+
import { unreachable } from "@alanscodelog/utils/unreachable";
|
|
48
|
+
import { copy } from "@witchcraft/ui/helpers/copy";
|
|
49
|
+
import { twMerge } from "@witchcraft/ui/utils/twMerge";
|
|
50
|
+
import { computed, nextTick, onBeforeUnmount, onMounted, ref, toRaw, watch } from "vue";
|
|
51
|
+
import BubbleMenuExternalLink from "./BubbleMenuExternalLink.vue";
|
|
52
|
+
import { getMarkPosition } from "../../../utils/getMarkPosition.js";
|
|
53
|
+
import { getMarksInSelection } from "../../../utils/getMarksInSelection.js";
|
|
54
|
+
import { linkMenuPluginKey } from "../types.js";
|
|
55
|
+
const props = defineProps({
|
|
56
|
+
editor: { type: null, required: true },
|
|
57
|
+
linkSuggestions: { type: Array, required: false },
|
|
58
|
+
internalLinkSuggestions: { type: Array, required: false },
|
|
59
|
+
getLinkSuggestions: { type: Function, required: false },
|
|
60
|
+
getLinkInternalSuggestions: { type: Function, required: false },
|
|
61
|
+
getInternalLinkHref: { type: Function, required: true }
|
|
62
|
+
});
|
|
63
|
+
const component = ref();
|
|
64
|
+
const showBubbleMenu = ref(false);
|
|
65
|
+
const linkHref = ref("");
|
|
66
|
+
const linkTextValue = ref("");
|
|
67
|
+
const originalLinkTextValue = ref("");
|
|
68
|
+
const isInternalLink = ref(false);
|
|
69
|
+
const linkMark = ref();
|
|
70
|
+
function updateFromMark(mark) {
|
|
71
|
+
linkHref.value = mark?.attrs.href ?? "";
|
|
72
|
+
const state = props.editor.state;
|
|
73
|
+
const sel = state.selection;
|
|
74
|
+
if (mark) {
|
|
75
|
+
const markPos = getMarkPosition(state, toRaw(mark.type), sel.from);
|
|
76
|
+
if (!markPos) unreachable();
|
|
77
|
+
linkTextValue.value = state.doc.cut(markPos.from, markPos.to).textContent;
|
|
78
|
+
} else {
|
|
79
|
+
if (!sel.empty) {
|
|
80
|
+
linkTextValue.value = state.doc.cut(sel.from, sel.to).textContent;
|
|
81
|
+
} else {
|
|
82
|
+
linkTextValue.value = "";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
originalLinkTextValue.value = linkTextValue.value;
|
|
86
|
+
if (mark?.attrs.internal) {
|
|
87
|
+
isInternalLink.value = true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const isChanged = computed(
|
|
91
|
+
() => !linkMark.value || originalLinkTextValue.value !== linkTextValue.value || linkHref.value !== linkMark.value.attrs.href
|
|
92
|
+
);
|
|
93
|
+
function close(e) {
|
|
94
|
+
props.editor.commands.closeLinkMenu();
|
|
95
|
+
e?.preventDefault();
|
|
96
|
+
}
|
|
97
|
+
function removeLink() {
|
|
98
|
+
props.editor.commands.unsetLink();
|
|
99
|
+
close();
|
|
100
|
+
}
|
|
101
|
+
function updateState() {
|
|
102
|
+
const state = linkMenuPluginKey.getState(props.editor.state);
|
|
103
|
+
if (!state) return;
|
|
104
|
+
const newLinkMark = getMarksInSelection(props.editor.state).find((_) => _.type.name === "link");
|
|
105
|
+
const isSame = newLinkMark === linkMark.value;
|
|
106
|
+
linkMark.value = newLinkMark;
|
|
107
|
+
isInternalLink.value = state.type === "internal";
|
|
108
|
+
if (!isSame || !newLinkMark) updateFromMark(state.state ? newLinkMark : void 0);
|
|
109
|
+
showBubbleMenu.value = !!state.state;
|
|
110
|
+
if (state.state === "focus") {
|
|
111
|
+
nextTick(() => {
|
|
112
|
+
component.value?.focus(linkMark.value ? "link" : "text");
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const finalLinkSuggestions = computed(() => props.linkSuggestions ?? props.getLinkSuggestions?.(linkHref.value, linkTextValue.value));
|
|
117
|
+
const finalInternalLinkSuggestions = computed(() => props.internalLinkSuggestions ?? props.getLinkInternalSuggestions?.(linkHref.value));
|
|
118
|
+
watch(() => props.editor.state, () => updateState());
|
|
119
|
+
onMounted(() => {
|
|
120
|
+
updateState();
|
|
121
|
+
props.editor.on("transaction", updateState);
|
|
122
|
+
});
|
|
123
|
+
onBeforeUnmount(() => {
|
|
124
|
+
props.editor.off("transaction", updateState);
|
|
125
|
+
});
|
|
126
|
+
</script>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/vue-3";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
editor: Editor;
|
|
4
|
+
linkSuggestions?: string[];
|
|
5
|
+
internalLinkSuggestions?: string[];
|
|
6
|
+
getLinkSuggestions?: (href: string, text: string) => string[];
|
|
7
|
+
getLinkInternalSuggestions?: (href: string) => string[];
|
|
8
|
+
getInternalLinkHref: (title: string) => string;
|
|
9
|
+
};
|
|
10
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Mark } from "@tiptap/pm/model";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
linkMark: Mark | undefined;
|
|
4
|
+
linkHref?: string;
|
|
5
|
+
isChanged: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
+
close: (e: Event) => any;
|
|
9
|
+
copy: (value: string) => any;
|
|
10
|
+
save: (e: Event) => any;
|
|
11
|
+
remove: () => any;
|
|
12
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
13
|
+
onClose?: ((e: Event) => any) | undefined;
|
|
14
|
+
onCopy?: ((value: string) => any) | undefined;
|
|
15
|
+
onSave?: ((e: Event) => any) | undefined;
|
|
16
|
+
onRemove?: (() => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex flex-nowrap flex-row gap-1 border border-transparent">
|
|
3
|
+
<WButton
|
|
4
|
+
:border="false"
|
|
5
|
+
:disabled="!isChanged"
|
|
6
|
+
class="text-ok-700 dark:text-ok-300"
|
|
7
|
+
:aria-label="linkMark ? 'Save' : 'Add'"
|
|
8
|
+
:title="linkMark ? 'Save' : 'Add'"
|
|
9
|
+
@click="emit('save', $event)"
|
|
10
|
+
>
|
|
11
|
+
<WIcon v-if="linkMark">
|
|
12
|
+
<i-fa-solid-check class="w-[1.25em]"/>
|
|
13
|
+
</WIcon>
|
|
14
|
+
<WIcon v-else>
|
|
15
|
+
<i-fa-solid-plus/>
|
|
16
|
+
</WIcon>
|
|
17
|
+
</WButton>
|
|
18
|
+
<WButton
|
|
19
|
+
v-if="linkHref"
|
|
20
|
+
:border="false"
|
|
21
|
+
class="text-neutral-700 dark:text-neutral-300"
|
|
22
|
+
aria-label="Copy"
|
|
23
|
+
title="Copy"
|
|
24
|
+
@click="emit('copy', linkHref)"
|
|
25
|
+
>
|
|
26
|
+
<WIcon><i-fa-solid-copy class="w-[1.25em]"/></WIcon>
|
|
27
|
+
</WButton>
|
|
28
|
+
<WButton
|
|
29
|
+
v-if="linkMark"
|
|
30
|
+
:border="false"
|
|
31
|
+
class="text-neutral-700 dark:text-neutral-300"
|
|
32
|
+
aria-label="Remove Link"
|
|
33
|
+
title="Remove Link"
|
|
34
|
+
@click="emit('remove')"
|
|
35
|
+
>
|
|
36
|
+
<WIcon><i-fa-solid-trash class="w-[1.25em]"/></WIcon>
|
|
37
|
+
</WButton>
|
|
38
|
+
</div>
|
|
39
|
+
</template>
|
|
40
|
+
|
|
41
|
+
<script setup>
|
|
42
|
+
import WIcon from "@witchcraft/ui/components/Icon";
|
|
43
|
+
import WButton from "@witchcraft/ui/components/LibButton";
|
|
44
|
+
import IFaSolidCheck from "~icons/fa-solid/check";
|
|
45
|
+
import IFaSolidCopy from "~icons/fa-solid/copy";
|
|
46
|
+
import IFaSolidPlus from "~icons/fa-solid/plus";
|
|
47
|
+
import IFaSolidTrash from "~icons/fa-solid/trash";
|
|
48
|
+
defineProps({
|
|
49
|
+
linkMark: { type: null, required: true },
|
|
50
|
+
linkHref: { type: String, required: false },
|
|
51
|
+
isChanged: { type: Boolean, required: true }
|
|
52
|
+
});
|
|
53
|
+
const emit = defineEmits(["close", "copy", "save", "remove"]);
|
|
54
|
+
</script>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Mark } from "@tiptap/pm/model";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
linkMark: Mark | undefined;
|
|
4
|
+
linkHref?: string;
|
|
5
|
+
isChanged: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
+
close: (e: Event) => any;
|
|
9
|
+
copy: (value: string) => any;
|
|
10
|
+
save: (e: Event) => any;
|
|
11
|
+
remove: () => any;
|
|
12
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
13
|
+
onClose?: ((e: Event) => any) | undefined;
|
|
14
|
+
onCopy?: ((value: string) => any) | undefined;
|
|
15
|
+
onSave?: ((e: Event) => any) | undefined;
|
|
16
|
+
onRemove?: (() => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { MakeRequired } from "@alanscodelog/utils/types";
|
|
2
|
+
import type { LinkOptions } from "@tiptap/extension-link";
|
|
3
|
+
import { PluginKey } from "@tiptap/pm/state";
|
|
4
|
+
export interface AdditionalLinkOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Returns true if the given href is an internal link.
|
|
7
|
+
*
|
|
8
|
+
* Note this should check if the internal link is in a valid format and prevent xss attacks. Usually just making it a simple format is enough.
|
|
9
|
+
*
|
|
10
|
+
* The default one checks against the regex /internal:\/\/[0-9a-zA-Z_-]+/
|
|
11
|
+
*/
|
|
12
|
+
isInternalLink: (href: string) => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* How to open internal links.
|
|
15
|
+
*
|
|
16
|
+
* The default is just to log the link to the console and warn to set the function which should be set with `setLinkOpts`
|
|
17
|
+
*/
|
|
18
|
+
openInternal: (href: string) => void;
|
|
19
|
+
/**
|
|
20
|
+
* How to open external links.
|
|
21
|
+
*
|
|
22
|
+
* The default is to open the link in a new tab.
|
|
23
|
+
*
|
|
24
|
+
* This can be changed using `setLinkOpts` to set a different function.
|
|
25
|
+
*/
|
|
26
|
+
openExternal: (href: string) => void;
|
|
27
|
+
openLinkOnClickModifier: "ctrlKey" | "shiftKey" | "altKey" | "metaKey";
|
|
28
|
+
}
|
|
29
|
+
export type EditorLinkOptions = MakeRequired<Partial<LinkOptions>, "openInternal">;
|
|
30
|
+
export type LinkMenuPluginState = {
|
|
31
|
+
state: "open" | "focus" | false;
|
|
32
|
+
justChangedLink: boolean;
|
|
33
|
+
type: "external" | "internal" | undefined;
|
|
34
|
+
autoOpen: boolean;
|
|
35
|
+
allowAutoOpenOnRecentlyChangedLink: boolean;
|
|
36
|
+
};
|
|
37
|
+
export type DirectLinkClickPluginState = {};
|
|
38
|
+
export declare const linkMenuPluginKey: PluginKey<LinkMenuPluginState>;
|
|
39
|
+
export declare const directLinkClickWithModifierPluginKey: PluginKey<DirectLinkClickPluginState>;
|
|
40
|
+
declare module "../../../types/index.js" {
|
|
41
|
+
interface MenuCloseCommands {
|
|
42
|
+
closeLinkMenu: () => any;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Extension } from "@tiptap/core";
|
|
2
|
+
import { type PluginKey } from "@tiptap/pm/state";
|
|
3
|
+
import { type Menu, type OpenMenuInfo } from "./types.js";
|
|
4
|
+
declare module "@tiptap/core" {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
|
+
menus: {
|
|
7
|
+
/** Can be used to close the open menu. Use force to close pinned menus. */
|
|
8
|
+
closeOtherMenus: (forceUnpin?: boolean) => ReturnType;
|
|
9
|
+
/** This will temporarily open and "pin" the menu, disabling the auto-prioritizing, until it's closed with `force: true`. */
|
|
10
|
+
pinOpenMenu: (options: Pick<OpenMenuInfo, "name">) => ReturnType;
|
|
11
|
+
/**
|
|
12
|
+
* Register a menu to be hnadled by the Menus extension.
|
|
13
|
+
*
|
|
14
|
+
* The ideal place to register them is usually in the onCreate hook of the extension. Do not do it from addProseMirrorPlugins as this will cause the menus to be registered more times than they should be.
|
|
15
|
+
*
|
|
16
|
+
* To be technical, this happens because the DocumentApi creates a state using a copy of the editor's plugins from the extension manager. The problem is not the copy but that the plugin property is actually a getter that calls `addProseMirrorPlugins` so the functon must not have side-effects.
|
|
17
|
+
*/
|
|
18
|
+
registerMenu: <TPluginKey extends PluginKey<any>>(menu: Menu<TPluginKey>) => ReturnType;
|
|
19
|
+
/**
|
|
20
|
+
* Since most mark menus don't have a close command, this is can be used to temporarily disable them.
|
|
21
|
+
*
|
|
22
|
+
* This should not be used to more permanantly turn off mark menus, as internally this is used to temporarily disable AND enable them. All optional mark menus have options to disable them.
|
|
23
|
+
*/
|
|
24
|
+
disableMarkMenus: () => ReturnType;
|
|
25
|
+
/**
|
|
26
|
+
* Enables showing of mark menus again.
|
|
27
|
+
*/
|
|
28
|
+
enableMarkMenus: () => ReturnType;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Helps coordinate the display of different menus, never allowing more than one to be opened, sorting by priority, and autoclosing others. \*.
|
|
34
|
+
*
|
|
35
|
+
* If this extension is available, extensions with menus will register themselves, some with a higher priority than others.
|
|
36
|
+
*
|
|
37
|
+
* On each transaction, the extension will check in order of priority if any of the registered menus should be opened and save which menu that is to it's `menusPluginKey`, closing other open menus.
|
|
38
|
+
*
|
|
39
|
+
* The MarkMenuManager component is used in the editor wrapper to easily display "mark" menus with the help of this extension. If it is not used, they won't show since they must be added manually. The commponent reads the saved state and if the menu is a mark menu and a renderer has been provided for it using the `menusInjectionKey`, it renders the menu. The editor wrapper provides the `menus` option which takes care of providing the menus.
|
|
40
|
+
*
|
|
41
|
+
* \* Note that menus may choose to not implement or not provide a close command. In cases like "mark" menus this is fine if using the MarkMenuManager since it will only ever display one menu, but can otherwise break the intended purpose of the extension.
|
|
42
|
+
*/
|
|
43
|
+
export declare const Menus: Extension<{}, {
|
|
44
|
+
menus: Menu[];
|
|
45
|
+
}>;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { Extension } from "@tiptap/core";
|
|
2
|
+
import { Plugin } from "@tiptap/pm/state";
|
|
3
|
+
import { menusPluginKey } from "./types.js";
|
|
4
|
+
import { createStateOnlyPluginObjApply } from "../../utils/createStateOnlyPluginObjApply.js";
|
|
5
|
+
export const Menus = Extension.create({
|
|
6
|
+
name: "menus",
|
|
7
|
+
addStorage() {
|
|
8
|
+
return {
|
|
9
|
+
menus: []
|
|
10
|
+
};
|
|
11
|
+
},
|
|
12
|
+
addCommands() {
|
|
13
|
+
return {
|
|
14
|
+
enableMarkMenus: () => ({ tr, dispatch }) => {
|
|
15
|
+
if (dispatch) {
|
|
16
|
+
tr.setMeta(menusPluginKey, {
|
|
17
|
+
canShow: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
},
|
|
22
|
+
disableMarkMenus: () => ({ tr, dispatch }) => {
|
|
23
|
+
if (dispatch) {
|
|
24
|
+
tr.setMeta(menusPluginKey, {
|
|
25
|
+
canShow: false
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
},
|
|
30
|
+
registerMenu: (menu) => () => {
|
|
31
|
+
const menus = this.storage.menus;
|
|
32
|
+
const existingIndex = menus.findIndex((m) => m.name === menu.name);
|
|
33
|
+
if (existingIndex >= 0) {
|
|
34
|
+
console.warn("Menu already registered, replacing.", {
|
|
35
|
+
existing: menus[existingIndex],
|
|
36
|
+
new: menu
|
|
37
|
+
});
|
|
38
|
+
menus.splice(existingIndex, 1, menu);
|
|
39
|
+
}
|
|
40
|
+
menus.push(menu);
|
|
41
|
+
menus.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
42
|
+
return true;
|
|
43
|
+
},
|
|
44
|
+
unregisterMenu: (menu) => ({ tr }) => {
|
|
45
|
+
const menus = this.storage.menus;
|
|
46
|
+
const index = menus.indexOf(menu);
|
|
47
|
+
if (index !== -1) {
|
|
48
|
+
menus.splice(index, 1);
|
|
49
|
+
tr.setMeta(menusPluginKey, { menus });
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
},
|
|
54
|
+
pinOpenMenu: (options) => ({ dispatch, tr, commands }) => {
|
|
55
|
+
const menus = this.storage.menus;
|
|
56
|
+
const menu = menus.find((m) => m.name === options.name);
|
|
57
|
+
if (!menu) {
|
|
58
|
+
console.warn("Menu to open not found.", options);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
commands.closeOtherMenus(true);
|
|
62
|
+
if (dispatch) {
|
|
63
|
+
tr.setMeta(menusPluginKey, {
|
|
64
|
+
state: true,
|
|
65
|
+
pin: true,
|
|
66
|
+
menu
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
},
|
|
71
|
+
closeOtherMenus: (forceUnpin = false) => ({ dispatch, tr, state, commands }) => {
|
|
72
|
+
const other = menusPluginKey.getState(state);
|
|
73
|
+
if (other?.pin && !forceUnpin) return false;
|
|
74
|
+
const otherMenu = other?.menu;
|
|
75
|
+
if (otherMenu?.closeCommand) {
|
|
76
|
+
commands[otherMenu.closeCommand]();
|
|
77
|
+
if (dispatch) {
|
|
78
|
+
tr.setMeta(menusPluginKey, {
|
|
79
|
+
state: false,
|
|
80
|
+
menu: void 0
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
addProseMirrorPlugins() {
|
|
90
|
+
const self = this;
|
|
91
|
+
return [
|
|
92
|
+
new Plugin({
|
|
93
|
+
key: menusPluginKey,
|
|
94
|
+
state: {
|
|
95
|
+
init() {
|
|
96
|
+
return {
|
|
97
|
+
state: false,
|
|
98
|
+
pin: false,
|
|
99
|
+
canShow: true
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
apply: createStateOnlyPluginObjApply(menusPluginKey)
|
|
103
|
+
},
|
|
104
|
+
appendTransaction(trs, oldState, newState) {
|
|
105
|
+
const menuWasSetByTrs = trs.some((tr) => tr.getMeta(menusPluginKey));
|
|
106
|
+
if (menuWasSetByTrs) return void 0;
|
|
107
|
+
const menus = self.storage.menus;
|
|
108
|
+
const activeMenu = getActiveMenu(menus, newState);
|
|
109
|
+
const value = menusPluginKey.getState(newState);
|
|
110
|
+
const valueWas = menusPluginKey.getState(oldState);
|
|
111
|
+
if (valueWas?.pin) {
|
|
112
|
+
return void 0;
|
|
113
|
+
}
|
|
114
|
+
if (value?.state !== !!activeMenu || value?.menu?.name !== activeMenu?.name) {
|
|
115
|
+
return newState.tr.setMeta(menusPluginKey, {
|
|
116
|
+
state: !!activeMenu,
|
|
117
|
+
menu: activeMenu ? {
|
|
118
|
+
name: activeMenu.name,
|
|
119
|
+
type: activeMenu.type,
|
|
120
|
+
closeCommand: activeMenu.closeCommand
|
|
121
|
+
} : void 0
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return void 0;
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
function getActiveMenu(menus, state) {
|
|
131
|
+
if (!menus) return void 0;
|
|
132
|
+
for (const menu of menus) {
|
|
133
|
+
const menuState = menu.pluginKey.getState(state);
|
|
134
|
+
if (menuState === void 0) {
|
|
135
|
+
console.warn("Menu plugin state is undefined. Did you register a plugin with this key?", menu.pluginKey, menu.name);
|
|
136
|
+
}
|
|
137
|
+
if (menu.canShow(state, menuState)) {
|
|
138
|
+
return menu;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return void 0;
|
|
142
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/vue-3";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
editor: Editor;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<WPopup
|
|
3
|
+
:model-value="!!activeMarkMenu"
|
|
4
|
+
:preferred-horizontal="['center-most']"
|
|
5
|
+
:preferred-vertical="['top-most']"
|
|
6
|
+
:modify-position="modifyPopupToMenuBounds"
|
|
7
|
+
:use-backdrop="false"
|
|
8
|
+
class="[&>div]:transition-[left,top] duration-30"
|
|
9
|
+
ref="popupComponent"
|
|
10
|
+
>
|
|
11
|
+
<template #popup="{ extractEl }">
|
|
12
|
+
<div
|
|
13
|
+
tabindex="0"
|
|
14
|
+
class="p-2"
|
|
15
|
+
:ref="(_) => {
|
|
16
|
+
extractEl(_);
|
|
17
|
+
menuEl = _;
|
|
18
|
+
}"
|
|
19
|
+
@keydown.esc="close"
|
|
20
|
+
>
|
|
21
|
+
<component
|
|
22
|
+
v-if="menuRenderer?.component"
|
|
23
|
+
:editor="editor"
|
|
24
|
+
:is="menuRenderer.component"
|
|
25
|
+
ref="component"
|
|
26
|
+
v-bind="menuRenderer?.props?.(editor) ?? { editor }"
|
|
27
|
+
@close="close"
|
|
28
|
+
@copy="copy"
|
|
29
|
+
/>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
32
|
+
</WPopup>
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<script setup>
|
|
36
|
+
import WPopup from "@witchcraft/ui/components/LibPopup";
|
|
37
|
+
import { copy } from "@witchcraft/ui/helpers/copy";
|
|
38
|
+
import {
|
|
39
|
+
computed,
|
|
40
|
+
inject,
|
|
41
|
+
nextTick,
|
|
42
|
+
ref,
|
|
43
|
+
useTemplateRef,
|
|
44
|
+
watch,
|
|
45
|
+
watchEffect
|
|
46
|
+
} from "vue";
|
|
47
|
+
import { findUpwards } from "../../../utils/findUpwards.js";
|
|
48
|
+
import { menusInjectionKey, menusPluginKey } from "../types.js";
|
|
49
|
+
const props = defineProps({
|
|
50
|
+
editor: { type: null, required: true }
|
|
51
|
+
});
|
|
52
|
+
const menus = inject(menusInjectionKey, ref({}));
|
|
53
|
+
const activeMarkMenu = ref();
|
|
54
|
+
const menuRenderer = computed(() => {
|
|
55
|
+
if (!activeMarkMenu.value) return void 0;
|
|
56
|
+
const menuCompInfo = menus?.value?.[activeMarkMenu.value];
|
|
57
|
+
return menuCompInfo;
|
|
58
|
+
});
|
|
59
|
+
const popupComponent = useTemplateRef("popupComponent");
|
|
60
|
+
const menuEl = ref(null);
|
|
61
|
+
const virtualEditorEl = ref(null);
|
|
62
|
+
const virtualCursorEl = ref(null);
|
|
63
|
+
function virtualCursorGetBoundingClientRect() {
|
|
64
|
+
const opts = menuRenderer.value?.popupOptions;
|
|
65
|
+
const selection = props.editor.state.selection;
|
|
66
|
+
const doc = props.editor.state.doc;
|
|
67
|
+
const $fromItem = findUpwards(doc, selection.from, ($pos) => $pos.node().type.name === "item")?.$pos;
|
|
68
|
+
const end = props.editor.view.coordsAtPos(selection.to);
|
|
69
|
+
const start = props.editor.view.coordsAtPos(selection.from);
|
|
70
|
+
const itemStart = props.editor.view.coordsAtPos($fromItem?.pos ?? selection.from);
|
|
71
|
+
const pinToItemDistance = typeof opts?.pinToItemDistance === "function" ? opts?.pinToItemDistance(props.editor.state) : opts?.pinToItemDistance ?? 0;
|
|
72
|
+
const itemStartIsShortDistance = Math.abs(start.top - itemStart.top) < pinToItemDistance;
|
|
73
|
+
const leftMost = Math.min(start.left, end.left);
|
|
74
|
+
const rightMost = Math.max(start.right, end.right);
|
|
75
|
+
const topMost = Math.min(start.top, end.top, itemStartIsShortDistance ? itemStart.top : Infinity);
|
|
76
|
+
const bottomMost = Math.max(start.bottom, end.bottom);
|
|
77
|
+
return {
|
|
78
|
+
x: leftMost,
|
|
79
|
+
y: topMost,
|
|
80
|
+
top: topMost,
|
|
81
|
+
bottom: bottomMost,
|
|
82
|
+
left: leftMost,
|
|
83
|
+
right: rightMost,
|
|
84
|
+
width: rightMost - leftMost,
|
|
85
|
+
height: bottomMost - topMost
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function virtualEditorGetBoundingClientRect() {
|
|
89
|
+
const editorRect = props.editor.view.dom.getBoundingClientRect();
|
|
90
|
+
const bodyRect = document.body.getBoundingClientRect();
|
|
91
|
+
return {
|
|
92
|
+
x: editorRect.x,
|
|
93
|
+
left: editorRect.left,
|
|
94
|
+
right: editorRect.right,
|
|
95
|
+
width: editorRect.width,
|
|
96
|
+
y: 0,
|
|
97
|
+
top: 0,
|
|
98
|
+
bottom: bodyRect.bottom,
|
|
99
|
+
height: bodyRect.height
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const modifyPopupToMenuBounds = (pos, reference, popup, _bg, space) => {
|
|
103
|
+
const editorRect = props.editor.view.dom.closest(".editor-wrapper")?.getBoundingClientRect();
|
|
104
|
+
if (!editorRect) {
|
|
105
|
+
throw new Error("MarkMenuManager: The wrapping scrollable editor component must have the `editor-wrapper` class for mark menus to work as they need to know the position of the scrollable wrapper.");
|
|
106
|
+
}
|
|
107
|
+
const yMin = Math.max(editorRect.top - popup.height, 0);
|
|
108
|
+
if (pos.y < yMin) pos.y = yMin;
|
|
109
|
+
if (reference && pos.y + popup.height > reference.top) {
|
|
110
|
+
pos.y = space.bottom > space.top ? reference.bottom : reference.top - popup.height;
|
|
111
|
+
}
|
|
112
|
+
return pos;
|
|
113
|
+
};
|
|
114
|
+
function close(e) {
|
|
115
|
+
e?.preventDefault();
|
|
116
|
+
props.editor.commands.closeOtherMenus();
|
|
117
|
+
}
|
|
118
|
+
function documentRefocusBlur(e) {
|
|
119
|
+
document.removeEventListener("focus", documentRefocusBlur);
|
|
120
|
+
checkMenuBlur(e);
|
|
121
|
+
}
|
|
122
|
+
function checkMenuBlur(e) {
|
|
123
|
+
if ("relatedTarget" in e) {
|
|
124
|
+
if (e.relatedTarget === null) {
|
|
125
|
+
document.addEventListener("focus", documentRefocusBlur);
|
|
126
|
+
} else if (!menuEl.value?.contains(e.relatedTarget)) {
|
|
127
|
+
close(e);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
watchEffect(() => {
|
|
132
|
+
if (activeMarkMenu.value) {
|
|
133
|
+
document.addEventListener("click", checkMenuBlur);
|
|
134
|
+
virtualCursorEl.value = { getBoundingClientRect: virtualCursorGetBoundingClientRect };
|
|
135
|
+
popupComponent.value?.setReference(virtualCursorEl.value);
|
|
136
|
+
virtualEditorEl.value = { getBoundingClientRect: virtualEditorGetBoundingClientRect };
|
|
137
|
+
popupComponent.value?.setBackground(virtualEditorEl.value);
|
|
138
|
+
} else {
|
|
139
|
+
document.removeEventListener("click", checkMenuBlur);
|
|
140
|
+
virtualCursorEl.value = null;
|
|
141
|
+
popupComponent.value?.setReference(virtualCursorEl.value);
|
|
142
|
+
virtualEditorEl.value = null;
|
|
143
|
+
popupComponent.value?.setBackground(virtualEditorEl.value);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
const recompute = () => {
|
|
147
|
+
nextTick(() => {
|
|
148
|
+
popupComponent.value?.recompute();
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
function updateState() {
|
|
152
|
+
const state = menusPluginKey.getState(props.editor.state);
|
|
153
|
+
if (state?.menu?.type === "mark" && state.canShow) {
|
|
154
|
+
activeMarkMenu.value = state?.menu?.name;
|
|
155
|
+
recompute();
|
|
156
|
+
} else {
|
|
157
|
+
activeMarkMenu.value = void 0;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
watch(() => props.editor, (newVal, oldVal) => {
|
|
161
|
+
oldVal.off("transaction", updateState);
|
|
162
|
+
newVal.on("transaction", updateState);
|
|
163
|
+
});
|
|
164
|
+
props.editor.on("transaction", updateState);
|
|
165
|
+
</script>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Editor } from "@tiptap/vue-3";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
editor: Editor;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|