import React, { useCallback, useMemo, useState } from 'react'; import { TextStyleKit } from '@tiptap/extension-text-style'; import StarterKit from '@tiptap/starter-kit'; import { Image } from "@tiptap/extension-image"; import { Mark } from '@tiptap/core'; import { Editor, Extension } from '@tiptap/react'; import { EditorContent, useEditor, useEditorState } from '@tiptap/react'; import { Button, Toast, Divider, Dropdown, Input, Collapse } from '../../index'; import { cssClasses } from '@douyinfe/semi-foundation/sidebar/constants'; import { IconH1, IconHn, IconH2, IconH3, IconH4, IconH5, IconH6, IconList, IconOrderedList, IconQuote, IconLink, IconItalic, IconStrikeThrough, IconText, IconBold, IconCode, IconMinus, IconUndo, IconRedo, IconCheckCircleStroked, IconDeleteStroked, IconAlignLeft, IconAlignJustify, IconAlignCenter, IconAlignRight, IconImage } from '@douyinfe/semi-icons'; import { ButtonProps } from '../../button'; import { DropdownItemProps } from '../../dropdown'; import cls from 'classnames'; import { CollapseHeader } from './code'; import { SideBarCollapseProps } from '../interface'; import { TextAlign } from '@tiptap/extension-text-align'; import { ImageUploadNode, ImageUploadNodeOptions } from './imageSlot'; import LocaleConsumer from '../../locale/localeConsumer'; import { Locale } from '../../locale/interface'; const collapseCls = cssClasses.COLLAPSE; const prefixCls = cssClasses.FILE; // 用于保证在输入link ,选区 UI 对用户保持一致性,否则会在输入时候,因为富文本本区域焦点丢失而看不到选区 const SelectionMark = Mark.create({ name: 'selectionMark', inclusive: false, parseHTML() { return [ { tag: 'span.select' }, ]; }, renderHTML() { return ['span', { class: 'select' }, 0]; }, }); export interface FileItemProps { key?: string; className?: string; name?: string; style?: React.CSSProperties; editable?: boolean; content?: string; onContentChange?: (content: string) => void; extensions?: Extension[]; imgUploadProps?: ImageUploadNodeOptions } interface ConfigureButtonProps extends ButtonProps { active?: boolean } const ConfigureButton = React.memo((props: ConfigureButtonProps) => { const { active, className, ...rest } = props; return (