// import { } from 'draft-js' import { stateToHTML } from 'draft-js-export-html' import { useCallback, useMemo, useState } from 'react' import { Editor, EditorState } from 'react-draft-wysiwyg' import CustomLink from './CustomLink' import './customEditor.scss' interface CustomEditorProps { baseState: EditorState editorType: 'info' | 'title' | 'content' | 'question' | 'link' | 'subject' handleChange: ( value: string, type: 'info' | 'title' | 'content' | 'question' | 'link' | 'subject' ) => void } const CustomEditor: React.FC<CustomEditorProps> = ({ baseState, handleChange, editorType, }: CustomEditorProps) => { const [editorState, setEditorState] = useState<EditorState>(baseState) const entityStyleFn = useMemo( () => (entity: any) => { const entityType = entity.get('type').toLowerCase() if (entityType === 'link') { const data = entity.getData() return { element: 'a', attributes: { title: data.title, href: data.href ? data.href : data.url, }, } } }, [] ) const handleStateChange = useCallback( (state: EditorState) => { setEditorState(state) handleChange( stateToHTML(state.getCurrentContent(), { entityStyleFn }), editorType ) }, [editorType, handleChange, entityStyleFn] ) return ( <Editor editorState={editorState} onEditorStateChange={(state) => handleStateChange(state)} handlePastedText={() => false} wrapperClassName="wrapper-class" editorClassName="editor-class" toolbarClassName="toolbar-class" toolbarCustomButtons={[<CustomLink editorState={editorState} />]} /> ) } export default CustomEditor