From 589eff0545e3f8db44b770b4d7c888b910d76acd Mon Sep 17 00:00:00 2001 From: fantasticit Date: Mon, 30 May 2022 00:08:58 +0800 Subject: [PATCH] tiptap: improve katext --- .../src/tiptap/core/extensions/katex.ts | 3 +- .../core/wrappers/katex/index.module.scss | 8 +- .../src/tiptap/core/wrappers/katex/index.tsx | 84 +++----------- .../collaboration/collaboration/menubar.tsx | 4 +- .../src/tiptap/editor/menus/katex/bubble.tsx | 109 ++++++++++++++++++ .../src/tiptap/editor/menus/katex/index.tsx | 12 ++ 6 files changed, 146 insertions(+), 74 deletions(-) create mode 100644 packages/client/src/tiptap/editor/menus/katex/bubble.tsx create mode 100644 packages/client/src/tiptap/editor/menus/katex/index.tsx diff --git a/packages/client/src/tiptap/core/extensions/katex.ts b/packages/client/src/tiptap/core/extensions/katex.ts index ab73d6bf..d6e6ffd5 100644 --- a/packages/client/src/tiptap/core/extensions/katex.ts +++ b/packages/client/src/tiptap/core/extensions/katex.ts @@ -20,8 +20,7 @@ export const KatexInputRegex = /^\$\$(.+)?\$\$$/; export const Katex = Node.create({ name: 'katex', - group: 'inline', - inline: true, + group: 'block', selectable: true, atom: true, diff --git a/packages/client/src/tiptap/core/wrappers/katex/index.module.scss b/packages/client/src/tiptap/core/wrappers/katex/index.module.scss index 36725be8..3987b548 100644 --- a/packages/client/src/tiptap/core/wrappers/katex/index.module.scss +++ b/packages/client/src/tiptap/core/wrappers/katex/index.module.scss @@ -1,9 +1,7 @@ .wrap { - display: inline-flex; - padding: 2px 8px; - font-size: 12px; - line-height: 16px; + display: flex; + padding: 1rem 4px; + font-size: 1em; cursor: pointer; - transform: translateY(1px); justify-content: center; } diff --git a/packages/client/src/tiptap/core/wrappers/katex/index.tsx b/packages/client/src/tiptap/core/wrappers/katex/index.tsx index d4fd0005..25cf6875 100644 --- a/packages/client/src/tiptap/core/wrappers/katex/index.tsx +++ b/packages/client/src/tiptap/core/wrappers/katex/index.tsx @@ -1,22 +1,20 @@ -import { IconHelpCircle } from '@douyinfe/semi-icons'; -import { Popover, Space, TextArea, Typography } from '@douyinfe/semi-ui'; import { NodeViewWrapper } from '@tiptap/react'; import cls from 'classnames'; -import { useUser } from 'data/user'; -import { useToggle } from 'hooks/use-toggle'; +import { convertColorToRGBA } from 'helpers/color'; +import { Theme, ThemeEnum } from 'hooks/use-theme'; import katex from 'katex'; -import { useCallback, useEffect, useMemo, useRef } from 'react'; +import { useMemo } from 'react'; import styles from './index.module.scss'; -const { Text } = Typography; - -export const KatexWrapper = ({ editor, node, updateAttributes }) => { - const isEditable = editor.isEditable; - const { text, defaultShowPicker, createUser } = node.attrs; - const { user } = useUser(); - const ref = useRef(); - const [visible, toggleVisible] = useToggle(false); +export const KatexWrapper = ({ node }) => { + const { text } = node.attrs; + const { theme } = Theme.useHook(); + const backgroundColor = useMemo(() => { + const color = `rgb(254, 242, 237)`; + if (theme === ThemeEnum.dark) return convertColorToRGBA(color, 0.75); + return color; + }, [theme]); const formatText = useMemo(() => { try { @@ -36,59 +34,15 @@ export const KatexWrapper = ({ editor, node, updateAttributes }) => { [text, formatText] ); - const onVisibleChange = useCallback( - (value) => { - toggleVisible(value); - if (defaultShowPicker && user && createUser === user.name) { - updateAttributes({ defaultShowPicker: false }); - } - }, - [defaultShowPicker, toggleVisible, updateAttributes, createUser, user] - ); - - useEffect(() => { - if (defaultShowPicker && user && createUser === user.name) { - toggleVisible(true); - setTimeout(() => ref.current?.focus(), 100); - } - }, [defaultShowPicker, toggleVisible, createUser, user]); - return ( - - {isEditable ? ( - -