import React, { ReactElement, useEffect, useMemo, useRef, useState, } from 'react'; import { EditorState } from 'draft-js'; import Editor, { createEditorStateWithText } from '@draft-js-plugins/editor'; import createInlineToolbarPlugin from '@draft-js-plugins/inline-toolbar'; import editorStyles from './editorStyles.module.css'; const text = 'In this editor a toolbar shows up once you select part of the text …'; const SimpleInlineToolbarEditor = (): ReactElement => { const [plugins, InlineToolbar] = useMemo(() => { const inlineToolbarPlugin = createInlineToolbarPlugin(); return [[inlineToolbarPlugin], inlineToolbarPlugin.InlineToolbar]; }, []); const [editorState, setEditorState] = useState(() => createEditorStateWithText('') ); useEffect(() => { // fixing issue with SSR https://github.com/facebook/draft-js/issues/2332#issuecomment-761573306 setEditorState(createEditorStateWithText(text)); }, []); const editor = useRef(null); const onChange = (value: EditorState): void => { setEditorState(value); }; const focus = (): void => { editor.current?.focus(); }; return (
{ editor.current = element; }} />
); }; export default SimpleInlineToolbarEditor;