'use client' // https://xdsoft.net/jodit/play.html?spellcheck=true&language=ua&direction=ltr&saveHeightInStorage=true&saveModeInStorage=true&defaultActionOnPaste=insert_as_text&disablePlugins=ai-assistant%2Cmobile%2Cprint%2Cspeech-recognize%2Ctable%2Ctable-keyboard-navigation%2Cpowered-by-jodit%2Ciframe&minHeight=360&maxHeight=NaN&maxWidth=NaN&buttons=bold%2Citalic%2Cunderline%2Cstrikethrough%2Ceraser%2Cul%2Col%2Cfont%2Cfontsize%2Cparagraph%2ClineHeight%2Csuperscript%2Csubscript%2CclassSpan%2Cfile%2Cimage%2Cvideo%2Cspellcheck%2Ccut //import JoditEditor from 'jodit-react' import dynamic from 'next/dynamic' import React, {useMemo, useRef, useState} from 'react' const JoditEditor = dynamic(() => import('jodit-react'), {ssr: false}) export default function BasicEditor({ placeholder, maxHeight, handleChange }: { placeholder: string maxHeight: number handleChange: any }) { const editor = useRef(null) const [content, setContent] = useState('') const config = useMemo( () => ({ readonly: false, // all options from https://xdsoft.net/jodit/docs/, placeholder: placeholder || 'Start typings...', spellcheck: true, language: 'ua', saveHeightInStorage: true, saveModeInStorage: true, //defaultActionOnPaste: 'insert_as_text', disablePlugins: 'ai-assistant,mobile,print,speech-recognize,table,table-keyboard-navigation,powered-by-jodit,iframe', minHeight: maxHeight || 320, maxHeight: 1100, // maxWidth: 992, uploader: { insertImageAsBase64URI: true, imagesExtensions: ['jpg', 'png', 'jpeg', 'gif', 'svg', 'webp'] }, buttons: 'bold,italic,underline,strikethrough,eraser,ul,ol,font,fontsize,paragraph,lineHeight,superscript,subscript,classSpan,file,image,video,spellcheck,cut' }), [placeholder, maxHeight] ) return ( setContent(newContent)} // preferred to use only this option to update the content for performance reasons onChange={handleChange} /> ) }