diff --git a/packages/client/src/tiptap/components/color-picker/index.tsx b/packages/client/src/components/color-picker/index.tsx similarity index 100% rename from packages/client/src/tiptap/components/color-picker/index.tsx rename to packages/client/src/components/color-picker/index.tsx diff --git a/packages/client/src/tiptap/components/color-picker/style.module.scss b/packages/client/src/components/color-picker/style.module.scss similarity index 100% rename from packages/client/src/tiptap/components/color-picker/style.module.scss rename to packages/client/src/components/color-picker/style.module.scss diff --git a/packages/client/src/components/divider.tsx b/packages/client/src/components/divider.tsx index 6ce90844..fed9059b 100644 --- a/packages/client/src/components/divider.tsx +++ b/packages/client/src/components/divider.tsx @@ -1,13 +1,20 @@ -export const Divider = () => { +import React from 'react'; + +export const _Divider = ({ vertical = false }) => { return (
); }; + +export const Divider = React.memo(_Divider, (prevProps, nextProps) => { + return prevProps.vertical === nextProps.vertical; +}); diff --git a/packages/client/src/components/document/comments/index.tsx b/packages/client/src/components/document/comments/index.tsx index fd57fa67..f93c2f61 100644 --- a/packages/client/src/components/document/comments/index.tsx +++ b/packages/client/src/components/document/comments/index.tsx @@ -4,7 +4,8 @@ import { useComments } from 'data/comment'; import { useUser } from 'data/user'; import { useToggle } from 'hooks/use-toggle'; import React, { useCallback, useRef, useState } from 'react'; -import { CommentKit, CommentMenuBar, EditorContent, useEditor } from 'tiptap/editor'; +import { EditorContent, useEditor } from 'tiptap/core'; +import { CommentKit, CommentMenuBar } from 'tiptap/editor'; import { Comments } from './comments'; import styles from './index.module.scss'; diff --git a/packages/client/src/tiptap/components/size.tsx b/packages/client/src/components/size-setter.tsx similarity index 84% rename from packages/client/src/tiptap/components/size.tsx rename to packages/client/src/components/size-setter.tsx index 08a8d341..71dedce7 100644 --- a/packages/client/src/tiptap/components/size.tsx +++ b/packages/client/src/components/size-setter.tsx @@ -4,13 +4,14 @@ import { useCallback, useRef } from 'react'; type ISize = { width: number; height: number }; -export const Size: React.FC<{ width: number; maxWidth?: number; height: number; onOk: (arg: ISize) => void }> = ({ - width, - maxWidth, - height, - onOk, - children, -}) => { +interface IProps { + width: number; + maxWidth?: number; + height: number; + onOk: (arg: ISize) => void; +} + +export const SizeSetter: React.FC = ({ width, maxWidth, height, onOk, children }) => { const $form = useRef(); const handleOk = useCallback(() => { diff --git a/packages/client/src/tiptap/components/divider.tsx b/packages/client/src/tiptap/components/divider.tsx deleted file mode 100644 index fed9059b..00000000 --- a/packages/client/src/tiptap/components/divider.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; - -export const _Divider = ({ vertical = false }) => { - return ( -
- ); -}; - -export const Divider = React.memo(_Divider, (prevProps, nextProps) => { - return prevProps.vertical === nextProps.vertical; -}); diff --git a/packages/client/src/tiptap/components/skeleton.tsx b/packages/client/src/tiptap/components/skeleton.tsx deleted file mode 100644 index ad941f13..00000000 --- a/packages/client/src/tiptap/components/skeleton.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Skeleton } from '@douyinfe/semi-ui'; -import React from 'react'; - -export const DocumentSkeleton = () => { - const placeholder = ( - <> - - - - ); - - return ; -}; diff --git a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/all-kit.tsx b/packages/client/src/tiptap/core/all-kit.ts similarity index 92% rename from packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/all-kit.tsx rename to packages/client/src/tiptap/core/all-kit.ts index 872bcbf0..3b9f3f9b 100644 --- a/packages/client/src/tiptap/markdown/markdown-to-prosemirror/html-to-prosemirror/all-kit.tsx +++ b/packages/client/src/tiptap/core/all-kit.ts @@ -1,5 +1,3 @@ -// 基础扩展 -// 自定义节点扩展 import { Attachment } from 'tiptap/core/extensions/attachment'; import { BackgroundColor } from 'tiptap/core/extensions/background-color'; import { Blockquote } from 'tiptap/core/extensions/blockquote'; @@ -64,18 +62,7 @@ export const DocumentWithTitle = Document.extend({ export const AllExtensions = [ Paragraph, - Placeholder.configure({ - placeholder: ({ node, editor }) => { - if (!editor.isEditable) return; - - if (node.type.name === 'title') { - return '请输入标题'; - } - return '输入 / 唤起更多'; - }, - showOnlyCurrent: false, - showOnlyWhenEditable: true, - }), + Placeholder, BackgroundColor, Blockquote, Bold, diff --git a/packages/client/src/tiptap/editor/views/bubble-menu/bubble-menu-plugin.tsx b/packages/client/src/tiptap/core/bubble-menu/bubble-menu-plugin.tsx similarity index 100% rename from packages/client/src/tiptap/editor/views/bubble-menu/bubble-menu-plugin.tsx rename to packages/client/src/tiptap/core/bubble-menu/bubble-menu-plugin.tsx diff --git a/packages/client/src/tiptap/editor/views/bubble-menu/index.tsx b/packages/client/src/tiptap/core/bubble-menu/index.tsx similarity index 100% rename from packages/client/src/tiptap/editor/views/bubble-menu/index.tsx rename to packages/client/src/tiptap/core/bubble-menu/index.tsx diff --git a/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts b/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts index cb12f1c5..75cd9a9b 100644 --- a/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts +++ b/packages/client/src/tiptap/core/extensions/collaboration-cursor/cursor-plugin/index.ts @@ -7,7 +7,7 @@ import { setMeta, yCursorPluginKey, ySyncPluginKey, -} from 'tiptap/core/y-prosemirror/y-prosemirror'; +} from 'tiptap/core/thritypart/y-prosemirror/y-prosemirror'; import * as Y from 'yjs'; /** diff --git a/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts b/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts index 4687a3d2..33c87978 100644 --- a/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts +++ b/packages/client/src/tiptap/core/extensions/collaboration/collaboration.ts @@ -1,5 +1,11 @@ import { Extension } from '@tiptap/core'; -import { redo, undo, ySyncPlugin, yUndoPlugin, yUndoPluginKey } from 'tiptap/core/y-prosemirror/y-prosemirror'; +import { + redo, + undo, + ySyncPlugin, + yUndoPlugin, + yUndoPluginKey, +} from 'tiptap/core/thritypart/y-prosemirror/y-prosemirror'; import { UndoManager } from 'yjs'; declare module '@tiptap/core' { diff --git a/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts b/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts index 42d90445..73a5c8e7 100644 --- a/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts +++ b/packages/client/src/tiptap/core/extensions/collaboration/helpers/is-change-origin.ts @@ -1,5 +1,5 @@ import { Transaction } from 'prosemirror-state'; -import { ySyncPluginKey } from 'tiptap/core/y-prosemirror/y-prosemirror'; +import { ySyncPluginKey } from 'tiptap/core/thritypart/y-prosemirror/y-prosemirror'; export function isChangeOrigin(transaction: Transaction): boolean { return !!transaction.getMeta(ySyncPluginKey); diff --git a/packages/client/src/tiptap/core/extensions/quick-insert.tsx b/packages/client/src/tiptap/core/extensions/quick-insert.ts similarity index 98% rename from packages/client/src/tiptap/core/extensions/quick-insert.tsx rename to packages/client/src/tiptap/core/extensions/quick-insert.ts index 0f4ba345..92b8224c 100644 --- a/packages/client/src/tiptap/core/extensions/quick-insert.tsx +++ b/packages/client/src/tiptap/core/extensions/quick-insert.ts @@ -4,8 +4,8 @@ import Suggestion from '@tiptap/suggestion'; import { Plugin, PluginKey } from 'prosemirror-state'; import tippy from 'tippy.js'; import { EXTENSION_PRIORITY_HIGHEST } from 'tiptap/core/constants'; +import { QUICK_INSERT_ITEMS } from 'tiptap/core/menus/quick-insert'; import { MenuList } from 'tiptap/core/wrappers/menu-list'; -import { QUICK_INSERT_ITEMS } from 'tiptap/editor/menus/quick-insert'; export const QuickInsertPluginKey = new PluginKey('quickInsert'); diff --git a/packages/client/src/tiptap/core/extensions/table-header.tsx b/packages/client/src/tiptap/core/extensions/table-header.ts similarity index 100% rename from packages/client/src/tiptap/core/extensions/table-header.tsx rename to packages/client/src/tiptap/core/extensions/table-header.ts diff --git a/packages/client/src/tiptap/editor/hooks/use-active.tsx b/packages/client/src/tiptap/core/hooks/use-active.tsx similarity index 100% rename from packages/client/src/tiptap/editor/hooks/use-active.tsx rename to packages/client/src/tiptap/core/hooks/use-active.tsx diff --git a/packages/client/src/tiptap/editor/hooks/use-attributes.tsx b/packages/client/src/tiptap/core/hooks/use-attributes.tsx similarity index 100% rename from packages/client/src/tiptap/editor/hooks/use-attributes.tsx rename to packages/client/src/tiptap/core/hooks/use-attributes.tsx diff --git a/packages/client/src/tiptap/core/index.tsx b/packages/client/src/tiptap/core/index.tsx new file mode 100644 index 00000000..93eb8048 --- /dev/null +++ b/packages/client/src/tiptap/core/index.tsx @@ -0,0 +1,44 @@ +import { EditorOptions } from '@tiptap/core'; +import { Editor as BuiltInEditor } from '@tiptap/react'; +import { EditorContent, NodeViewContent, NodeViewWrapper } from '@tiptap/react'; +import { EventEmitter } from 'helpers/event-emitter'; +import { DependencyList, useEffect, useState } from 'react'; + +function useForceUpdate() { + const [, setValue] = useState(0); + return () => setValue((value) => value + 1); +} + +export class Editor extends BuiltInEditor { + public eventEmitter: EventEmitter = new EventEmitter(); +} + +export const useEditor = (options: Partial = {}, deps: DependencyList = []) => { + const [editor, setEditor] = useState(null); + const forceUpdate = useForceUpdate(); + + useEffect(() => { + const instance = new Editor(options); + + setEditor(instance); + + if (!options.editable) { + instance.on('transaction', () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + forceUpdate(); + }); + }); + }); + } + + return () => { + instance.destroy(); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, deps); + + return editor; +}; + +export { EditorContent, NodeViewContent, NodeViewWrapper }; diff --git a/packages/client/src/tiptap/editor/menus/_event.ts b/packages/client/src/tiptap/core/menus/_event.ts similarity index 97% rename from packages/client/src/tiptap/editor/menus/_event.ts rename to packages/client/src/tiptap/core/menus/_event.ts index 37918c29..fe687da4 100644 --- a/packages/client/src/tiptap/editor/menus/_event.ts +++ b/packages/client/src/tiptap/core/menus/_event.ts @@ -1,5 +1,5 @@ import { EventEmitter } from 'helpers/event-emitter'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; const getEventEmitter = (editor: Editor): EventEmitter => { try { diff --git a/packages/client/src/tiptap/editor/menus/align/index.tsx b/packages/client/src/tiptap/core/menus/align/index.tsx similarity index 95% rename from packages/client/src/tiptap/editor/menus/align/index.tsx rename to packages/client/src/tiptap/core/menus/align/index.tsx index f0b5eeab..9960797d 100644 --- a/packages/client/src/tiptap/editor/menus/align/index.tsx +++ b/packages/client/src/tiptap/core/menus/align/index.tsx @@ -1,9 +1,9 @@ import { IconAlignCenter, IconAlignJustify, IconAlignLeft, IconAlignRight } from '@douyinfe/semi-icons'; import { Button, Dropdown, Tooltip } from '@douyinfe/semi-ui'; import React, { useCallback, useMemo } from 'react'; +import { Editor } from 'tiptap/core'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const Align: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/attachment/bubble.tsx b/packages/client/src/tiptap/core/menus/attachment/bubble.tsx similarity index 91% rename from packages/client/src/tiptap/editor/menus/attachment/bubble.tsx rename to packages/client/src/tiptap/core/menus/attachment/bubble.tsx index de0512c9..d246ae91 100644 --- a/packages/client/src/tiptap/editor/menus/attachment/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/attachment/bubble.tsx @@ -1,10 +1,10 @@ import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; import { Button, Space } from '@douyinfe/semi-ui'; +import { Divider } from 'components/divider'; import { Tooltip } from 'components/tooltip'; import { useCallback } from 'react'; -import { Divider } from 'tiptap/components/divider'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { Attachment } from 'tiptap/core/extensions/attachment'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; export const AttachmentBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/attachment/index.tsx b/packages/client/src/tiptap/core/menus/attachment/index.tsx similarity index 85% rename from packages/client/src/tiptap/editor/menus/attachment/index.tsx rename to packages/client/src/tiptap/core/menus/attachment/index.tsx index a076c2ea..b8cbff73 100644 --- a/packages/client/src/tiptap/editor/menus/attachment/index.tsx +++ b/packages/client/src/tiptap/core/menus/attachment/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { AttachmentBubbleMenu } from './bubble'; diff --git a/packages/client/src/tiptap/editor/menus/background-color/index.tsx b/packages/client/src/tiptap/core/menus/background-color/index.tsx similarity index 85% rename from packages/client/src/tiptap/editor/menus/background-color/index.tsx rename to packages/client/src/tiptap/core/menus/background-color/index.tsx index 97b354f9..3315b910 100644 --- a/packages/client/src/tiptap/editor/menus/background-color/index.tsx +++ b/packages/client/src/tiptap/core/menus/background-color/index.tsx @@ -1,12 +1,12 @@ import { IconMark } from '@douyinfe/semi-icons'; import { Button } from '@douyinfe/semi-ui'; +import { ColorPicker } from 'components/color-picker'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; -import { ColorPicker } from 'tiptap/components/color-picker'; +import { Editor } from 'tiptap/core'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { useActive } from 'tiptap/core/hooks/use-active'; +import { useAttributes } from 'tiptap/core/hooks/use-attributes'; const FlexStyle: React.CSSProperties = { display: 'inline-flex', diff --git a/packages/client/src/tiptap/editor/menus/blockquote/index.tsx b/packages/client/src/tiptap/core/menus/blockquote/index.tsx similarity index 90% rename from packages/client/src/tiptap/editor/menus/blockquote/index.tsx rename to packages/client/src/tiptap/core/menus/blockquote/index.tsx index 8fa22a09..65ecc44b 100644 --- a/packages/client/src/tiptap/editor/menus/blockquote/index.tsx +++ b/packages/client/src/tiptap/core/menus/blockquote/index.tsx @@ -2,10 +2,10 @@ import { Button } from '@douyinfe/semi-ui'; import { IconQuote } from 'components/icons'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/core'; import { Blockquote as BlockquoteExtension } from 'tiptap/core/extensions/blockquote'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const Blockquote: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/bold/index.tsx b/packages/client/src/tiptap/core/menus/bold/index.tsx similarity index 89% rename from packages/client/src/tiptap/editor/menus/bold/index.tsx rename to packages/client/src/tiptap/core/menus/bold/index.tsx index ba0b1bd5..aa3517b8 100644 --- a/packages/client/src/tiptap/editor/menus/bold/index.tsx +++ b/packages/client/src/tiptap/core/menus/bold/index.tsx @@ -2,10 +2,10 @@ import { IconBold } from '@douyinfe/semi-icons'; import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/core'; import { Bold as BoldExtension } from 'tiptap/core/extensions/bold'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const Bold: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/bullet-list/index.tsx b/packages/client/src/tiptap/core/menus/bullet-list/index.tsx similarity index 90% rename from packages/client/src/tiptap/editor/menus/bullet-list/index.tsx rename to packages/client/src/tiptap/core/menus/bullet-list/index.tsx index 6515de67..b7463d0f 100644 --- a/packages/client/src/tiptap/editor/menus/bullet-list/index.tsx +++ b/packages/client/src/tiptap/core/menus/bullet-list/index.tsx @@ -2,10 +2,10 @@ import { Button } from '@douyinfe/semi-ui'; import { IconList } from 'components/icons'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/core'; import { BulletList as BulletListExtension } from 'tiptap/core/extensions/bullet-list'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const BulletList: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/callout/bubble.module.scss b/packages/client/src/tiptap/core/menus/callout/bubble.module.scss similarity index 100% rename from packages/client/src/tiptap/editor/menus/callout/bubble.module.scss rename to packages/client/src/tiptap/core/menus/callout/bubble.module.scss diff --git a/packages/client/src/tiptap/editor/menus/callout/bubble.tsx b/packages/client/src/tiptap/core/menus/callout/bubble.tsx similarity index 96% rename from packages/client/src/tiptap/editor/menus/callout/bubble.tsx rename to packages/client/src/tiptap/core/menus/callout/bubble.tsx index 7d3c1521..00a21f93 100644 --- a/packages/client/src/tiptap/editor/menus/callout/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/callout/bubble.tsx @@ -1,12 +1,12 @@ import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; import { Button, Popover, Space, Typography } from '@douyinfe/semi-ui'; +import { Divider } from 'components/divider'; import { IconDrawBoard } from 'components/icons'; import { Tooltip } from 'components/tooltip'; import { useCallback } from 'react'; -import { Divider } from 'tiptap/components/divider'; +import { Editor } from 'tiptap/core'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { Callout } from 'tiptap/core/extensions/callout'; -import { Editor } from 'tiptap/editor'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; import styles from './bubble.module.scss'; diff --git a/packages/client/src/tiptap/editor/menus/callout/index.tsx b/packages/client/src/tiptap/core/menus/callout/index.tsx similarity index 84% rename from packages/client/src/tiptap/editor/menus/callout/index.tsx rename to packages/client/src/tiptap/core/menus/callout/index.tsx index 5a89558a..ec5e7b71 100644 --- a/packages/client/src/tiptap/editor/menus/callout/index.tsx +++ b/packages/client/src/tiptap/core/menus/callout/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { CalloutBubbleMenu } from './bubble'; diff --git a/packages/client/src/tiptap/editor/menus/clear-node-and-marks/index.tsx b/packages/client/src/tiptap/core/menus/clear-node-and-marks/index.tsx similarity index 93% rename from packages/client/src/tiptap/editor/menus/clear-node-and-marks/index.tsx rename to packages/client/src/tiptap/core/menus/clear-node-and-marks/index.tsx index 4a6d86f5..4ce3d565 100644 --- a/packages/client/src/tiptap/editor/menus/clear-node-and-marks/index.tsx +++ b/packages/client/src/tiptap/core/menus/clear-node-and-marks/index.tsx @@ -2,7 +2,7 @@ import { Button } from '@douyinfe/semi-ui'; import { IconClear } from 'components/icons'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; export const CleadrNodeAndMarks: React.FC<{ editor: Editor }> = ({ editor }) => { const clear = useCallback(() => { diff --git a/packages/client/src/tiptap/editor/menus/code-block/bubble.tsx b/packages/client/src/tiptap/core/menus/code-block/bubble.tsx similarity index 93% rename from packages/client/src/tiptap/editor/menus/code-block/bubble.tsx rename to packages/client/src/tiptap/core/menus/code-block/bubble.tsx index 79a9ca72..cf5ad256 100644 --- a/packages/client/src/tiptap/editor/menus/code-block/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/code-block/bubble.tsx @@ -1,10 +1,10 @@ import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; import { Button, Space } from '@douyinfe/semi-ui'; +import { Divider } from 'components/divider'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; -import { Divider } from 'tiptap/components/divider'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { CodeBlock } from 'tiptap/core/extensions/code-block'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; export const CodeBlockBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/code-block/index.tsx b/packages/client/src/tiptap/core/menus/code-block/index.tsx similarity index 85% rename from packages/client/src/tiptap/editor/menus/code-block/index.tsx rename to packages/client/src/tiptap/core/menus/code-block/index.tsx index cb6aefd2..1795b2d2 100644 --- a/packages/client/src/tiptap/editor/menus/code-block/index.tsx +++ b/packages/client/src/tiptap/core/menus/code-block/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { CodeBlockBubbleMenu } from './bubble'; diff --git a/packages/client/src/tiptap/editor/menus/code/index.tsx b/packages/client/src/tiptap/core/menus/code/index.tsx similarity index 89% rename from packages/client/src/tiptap/editor/menus/code/index.tsx rename to packages/client/src/tiptap/core/menus/code/index.tsx index 70a03f9f..5a44beab 100644 --- a/packages/client/src/tiptap/editor/menus/code/index.tsx +++ b/packages/client/src/tiptap/core/menus/code/index.tsx @@ -2,10 +2,10 @@ import { IconCode } from '@douyinfe/semi-icons'; import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/core'; import { Code as InlineCode } from 'tiptap/core/extensions/code'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const Code: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/countdown/bubble.tsx b/packages/client/src/tiptap/core/menus/countdown/bubble.tsx similarity index 90% rename from packages/client/src/tiptap/editor/menus/countdown/bubble.tsx rename to packages/client/src/tiptap/core/menus/countdown/bubble.tsx index cf13c716..d7dcfa42 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/countdown/bubble.tsx @@ -1,11 +1,11 @@ import { IconCopy, IconDelete, IconEdit } from '@douyinfe/semi-icons'; import { Button, Space } from '@douyinfe/semi-ui'; +import { Divider } from 'components/divider'; import { Tooltip } from 'components/tooltip'; import { useCallback } from 'react'; -import { Divider } from 'tiptap/components/divider'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { Countdown } from 'tiptap/core/extensions/countdown'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { useAttributes } from 'tiptap/core/hooks/use-attributes'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; import { triggerOpenCountSettingModal } from '../_event'; diff --git a/packages/client/src/tiptap/editor/menus/countdown/index.tsx b/packages/client/src/tiptap/core/menus/countdown/index.tsx similarity index 89% rename from packages/client/src/tiptap/editor/menus/countdown/index.tsx rename to packages/client/src/tiptap/core/menus/countdown/index.tsx index c0dc4ec0..b07c7bfa 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/index.tsx +++ b/packages/client/src/tiptap/core/menus/countdown/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { CountdownBubbleMenu } from './bubble'; import { CountdownSettingModal } from './modal'; diff --git a/packages/client/src/tiptap/editor/menus/countdown/modal.tsx b/packages/client/src/tiptap/core/menus/countdown/modal.tsx similarity index 97% rename from packages/client/src/tiptap/editor/menus/countdown/modal.tsx rename to packages/client/src/tiptap/core/menus/countdown/modal.tsx index 9b6d547a..d91b017e 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/modal.tsx +++ b/packages/client/src/tiptap/core/menus/countdown/modal.tsx @@ -2,7 +2,7 @@ import { Form, Modal } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { useToggle } from 'hooks/use-toggle'; import { useCallback, useEffect, useRef, useState } from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { cancelSubject, OPEN_COUNT_SETTING_MODAL, subject } from '../_event'; diff --git a/packages/client/src/tiptap/editor/menus/countdown/service.ts b/packages/client/src/tiptap/core/menus/countdown/service.ts similarity index 83% rename from packages/client/src/tiptap/editor/menus/countdown/service.ts rename to packages/client/src/tiptap/core/menus/countdown/service.ts index 3e14d4e7..cc1c9770 100644 --- a/packages/client/src/tiptap/editor/menus/countdown/service.ts +++ b/packages/client/src/tiptap/core/menus/countdown/service.ts @@ -1,4 +1,4 @@ -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { triggerOpenCountSettingModal } from '../_event'; diff --git a/packages/client/src/tiptap/editor/menus/document-children/bubble.tsx b/packages/client/src/tiptap/core/menus/document-children/bubble.tsx similarity index 91% rename from packages/client/src/tiptap/editor/menus/document-children/bubble.tsx rename to packages/client/src/tiptap/core/menus/document-children/bubble.tsx index 2d73e911..2ce45ceb 100644 --- a/packages/client/src/tiptap/editor/menus/document-children/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/document-children/bubble.tsx @@ -1,10 +1,10 @@ import { IconCopy, IconDelete } from '@douyinfe/semi-icons'; import { Button, Space } from '@douyinfe/semi-ui'; +import { Divider } from 'components/divider'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; -import { Divider } from 'tiptap/components/divider'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { DocumentChildren } from 'tiptap/core/extensions/document-children'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; export const DocumentChildrenBubbleMenu = ({ editor }) => { diff --git a/packages/client/src/tiptap/editor/menus/document-children/index.tsx b/packages/client/src/tiptap/core/menus/document-children/index.tsx similarity index 86% rename from packages/client/src/tiptap/editor/menus/document-children/index.tsx rename to packages/client/src/tiptap/core/menus/document-children/index.tsx index dd491bb3..44c763ad 100644 --- a/packages/client/src/tiptap/editor/menus/document-children/index.tsx +++ b/packages/client/src/tiptap/core/menus/document-children/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { DocumentChildrenBubbleMenu } from './bubble'; diff --git a/packages/client/src/tiptap/editor/menus/document-reference/bubble.tsx b/packages/client/src/tiptap/core/menus/document-reference/bubble.tsx similarity index 96% rename from packages/client/src/tiptap/editor/menus/document-reference/bubble.tsx rename to packages/client/src/tiptap/core/menus/document-reference/bubble.tsx index c2241ba2..a7954856 100644 --- a/packages/client/src/tiptap/editor/menus/document-reference/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/document-reference/bubble.tsx @@ -1,14 +1,14 @@ import { IconCopy, IconDelete, IconEdit } from '@douyinfe/semi-icons'; import { Button, List, Popover, Space, Typography } from '@douyinfe/semi-ui'; import { DataRender } from 'components/data-render'; +import { Divider } from 'components/divider'; import { IconDocument } from 'components/icons'; import { Tooltip } from 'components/tooltip'; import { useWikiTocs } from 'data/wiki'; import { useRouter } from 'next/router'; import { useCallback } from 'react'; -import { Divider } from 'tiptap/components/divider'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { DocumentReference } from 'tiptap/core/extensions/document-reference'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; const { Text } = Typography; diff --git a/packages/client/src/tiptap/editor/menus/document-reference/index.tsx b/packages/client/src/tiptap/core/menus/document-reference/index.tsx similarity index 86% rename from packages/client/src/tiptap/editor/menus/document-reference/index.tsx rename to packages/client/src/tiptap/core/menus/document-reference/index.tsx index 3ea87d02..76fc8329 100644 --- a/packages/client/src/tiptap/editor/menus/document-reference/index.tsx +++ b/packages/client/src/tiptap/core/menus/document-reference/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { DocumentReferenceBubbleMenu } from './bubble'; diff --git a/packages/client/src/tiptap/editor/menus/emoji/index.tsx b/packages/client/src/tiptap/core/menus/emoji/index.tsx similarity index 95% rename from packages/client/src/tiptap/editor/menus/emoji/index.tsx rename to packages/client/src/tiptap/core/menus/emoji/index.tsx index 1680ac3f..1d253bfd 100644 --- a/packages/client/src/tiptap/editor/menus/emoji/index.tsx +++ b/packages/client/src/tiptap/core/menus/emoji/index.tsx @@ -3,7 +3,7 @@ import { EmojiPicker } from 'components/emoji-picker'; import { IconEmoji } from 'components/icons'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; export const Emoji: React.FC<{ editor: Editor }> = ({ editor }) => { const setEmoji = useCallback( diff --git a/packages/client/src/tiptap/editor/menus/flow/bubble.tsx b/packages/client/src/tiptap/core/menus/flow/bubble.tsx similarity index 89% rename from packages/client/src/tiptap/editor/menus/flow/bubble.tsx rename to packages/client/src/tiptap/core/menus/flow/bubble.tsx index 7bed994d..47f4f9e6 100644 --- a/packages/client/src/tiptap/editor/menus/flow/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/flow/bubble.tsx @@ -1,11 +1,11 @@ import { IconCopy, IconDelete, IconEdit } from '@douyinfe/semi-icons'; import { Button, Space } from '@douyinfe/semi-ui'; +import { Divider } from 'components/divider'; import { Tooltip } from 'components/tooltip'; import { useCallback } from 'react'; -import { Divider } from 'tiptap/components/divider'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { Flow } from 'tiptap/core/extensions/flow'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { useAttributes } from 'tiptap/core/hooks/use-attributes'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; import { triggerOpenFlowSettingModal } from '../_event'; diff --git a/packages/client/src/tiptap/editor/menus/flow/index.tsx b/packages/client/src/tiptap/core/menus/flow/index.tsx similarity index 88% rename from packages/client/src/tiptap/editor/menus/flow/index.tsx rename to packages/client/src/tiptap/core/menus/flow/index.tsx index 130e2bdb..bb990128 100644 --- a/packages/client/src/tiptap/editor/menus/flow/index.tsx +++ b/packages/client/src/tiptap/core/menus/flow/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { FlowBubbleMenu } from './bubble'; import { FlowSettingModal } from './modal'; diff --git a/packages/client/src/tiptap/editor/menus/flow/modal.tsx b/packages/client/src/tiptap/core/menus/flow/modal.tsx similarity index 98% rename from packages/client/src/tiptap/editor/menus/flow/modal.tsx rename to packages/client/src/tiptap/core/menus/flow/modal.tsx index 90d90db5..89988ed6 100644 --- a/packages/client/src/tiptap/editor/menus/flow/modal.tsx +++ b/packages/client/src/tiptap/core/menus/flow/modal.tsx @@ -2,7 +2,7 @@ import { Modal, Spin, Typography } from '@douyinfe/semi-ui'; import { useToggle } from 'hooks/use-toggle'; import { useCallback, useEffect, useRef, useState } from 'react'; import { createEditor, load } from 'thirtypart/diagram'; -import { Editor } from 'tiptap/editor'; +import { Editor } from 'tiptap/core'; import { cancelSubject, OPEN_FLOW_SETTING_MODAL, subject } from '../_event'; diff --git a/packages/client/src/tiptap/editor/menus/fontsize/index.tsx b/packages/client/src/tiptap/core/menus/fontsize/index.tsx similarity index 85% rename from packages/client/src/tiptap/editor/menus/fontsize/index.tsx rename to packages/client/src/tiptap/core/menus/fontsize/index.tsx index a18e5889..7facc5fd 100644 --- a/packages/client/src/tiptap/editor/menus/fontsize/index.tsx +++ b/packages/client/src/tiptap/core/menus/fontsize/index.tsx @@ -1,9 +1,9 @@ import { Select } from '@douyinfe/semi-ui'; import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/core'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; +import { useActive } from 'tiptap/core/hooks/use-active'; +import { useAttributes } from 'tiptap/core/hooks/use-attributes'; export const FONT_SIZES = [12, 13, 14, 15, 16, 19, 22, 24, 29, 32, 40, 48]; diff --git a/packages/client/src/tiptap/editor/menus/heading/index.tsx b/packages/client/src/tiptap/core/menus/heading/index.tsx similarity index 95% rename from packages/client/src/tiptap/editor/menus/heading/index.tsx rename to packages/client/src/tiptap/core/menus/heading/index.tsx index d4ce2a1e..b84240b1 100644 --- a/packages/client/src/tiptap/editor/menus/heading/index.tsx +++ b/packages/client/src/tiptap/core/menus/heading/index.tsx @@ -1,8 +1,8 @@ import { Select } from '@douyinfe/semi-ui'; import React, { useCallback, useMemo } from 'react'; +import { Editor } from 'tiptap/core'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const Heading: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/horizontal-rule/index.tsx b/packages/client/src/tiptap/core/menus/horizontal-rule/index.tsx similarity index 88% rename from packages/client/src/tiptap/editor/menus/horizontal-rule/index.tsx rename to packages/client/src/tiptap/core/menus/horizontal-rule/index.tsx index cfb56cc6..c4677850 100644 --- a/packages/client/src/tiptap/editor/menus/horizontal-rule/index.tsx +++ b/packages/client/src/tiptap/core/menus/horizontal-rule/index.tsx @@ -2,9 +2,9 @@ import { Button } from '@douyinfe/semi-ui'; import { IconHorizontalRule } from 'components/icons'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/core'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const HorizontalRule: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/ident/index.tsx b/packages/client/src/tiptap/core/menus/ident/index.tsx similarity index 91% rename from packages/client/src/tiptap/editor/menus/ident/index.tsx rename to packages/client/src/tiptap/core/menus/ident/index.tsx index 0bb24039..4fb07454 100644 --- a/packages/client/src/tiptap/editor/menus/ident/index.tsx +++ b/packages/client/src/tiptap/core/menus/ident/index.tsx @@ -2,9 +2,9 @@ import { IconIndentLeft, IconIndentRight } from '@douyinfe/semi-icons'; import { Button } from '@douyinfe/semi-ui'; import { Tooltip } from 'components/tooltip'; import React, { useCallback } from 'react'; +import { Editor } from 'tiptap/core'; import { Title } from 'tiptap/core/extensions/title'; -import { Editor } from 'tiptap/editor'; -import { useActive } from 'tiptap/editor/hooks/use-active'; +import { useActive } from 'tiptap/core/hooks/use-active'; export const Ident: React.FC<{ editor: Editor }> = ({ editor }) => { const isTitleActive = useActive(editor, Title.name); diff --git a/packages/client/src/tiptap/editor/menus/iframe/bubble.tsx b/packages/client/src/tiptap/core/menus/iframe/bubble.tsx similarity index 93% rename from packages/client/src/tiptap/editor/menus/iframe/bubble.tsx rename to packages/client/src/tiptap/core/menus/iframe/bubble.tsx index 7e4e2ef0..38cb3c7f 100644 --- a/packages/client/src/tiptap/editor/menus/iframe/bubble.tsx +++ b/packages/client/src/tiptap/core/menus/iframe/bubble.tsx @@ -1,14 +1,14 @@ import { IconCopy, IconDelete, IconEdit, IconExternalOpen, IconLineHeight } from '@douyinfe/semi-icons'; import { Button, Form, Modal, Space, Typography } from '@douyinfe/semi-ui'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; +import { Divider } from 'components/divider'; +import { SizeSetter } from 'components/size-setter'; import { Tooltip } from 'components/tooltip'; import { useToggle } from 'hooks/use-toggle'; import { useCallback, useRef } from 'react'; -import { Divider } from 'tiptap/components/divider'; -import { Size } from 'tiptap/components/size'; +import { BubbleMenu } from 'tiptap/core/bubble-menu'; import { Iframe } from 'tiptap/core/extensions/iframe'; -import { useAttributes } from 'tiptap/editor/hooks/use-attributes'; -import { BubbleMenu } from 'tiptap/editor/views/bubble-menu'; +import { useAttributes } from 'tiptap/core/hooks/use-attributes'; import { copyNode, deleteNode } from 'tiptap/prose-utils'; const { Text } = Typography; @@ -110,11 +110,11 @@ export const IframeBubbleMenu = ({ editor }) => {