Server IP : 192.158.238.246 / Your IP : 52.14.123.251 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/cwd/plugins/code-snippets/js/components/SnippetForm/SnippetEditor/ |
Upload File : |
import React, { useEffect, useRef } from 'react' import { isMacOS } from '../../../utils/general' import { useSnippetForm } from '../../../hooks/useSnippetForm' import { CodeEditorShortcuts } from './CodeEditorShortcuts' export const CodeEditor: React.FC = () => { const { snippet, setSnippet, codeEditorInstance, setCodeEditorInstance, submitSnippet } = useSnippetForm() const textareaRef = useRef<HTMLTextAreaElement>(null) useEffect(() => { setCodeEditorInstance(editorInstance => { if (textareaRef.current && !editorInstance) { editorInstance = window.wp.codeEditor.initialize(textareaRef.current) editorInstance.codemirror.on('changes', instance => { setSnippet(previous => ({ ...previous, code: instance.getValue() })) }) } return editorInstance }) }, [setCodeEditorInstance, textareaRef, setSnippet]) useEffect(() => { if (codeEditorInstance) { const extraKeys = codeEditorInstance.codemirror.getOption('extraKeys') const controlKey = isMacOS() ? 'Cmd' : 'Ctrl' codeEditorInstance.codemirror.setOption('extraKeys', { ...'object' === typeof extraKeys ? extraKeys : undefined, [`${controlKey}-S`]: submitSnippet, [`${controlKey}-Enter`]: submitSnippet }) } }, [submitSnippet, codeEditorInstance, snippet]) return ( <div className="snippet-editor"> <textarea ref={textareaRef} id="snippet_code" name="snippet_code" rows={200} spellCheck={false} onChange={event => { setSnippet(previous => ({ ...previous, code: event.target.value })) }} >{snippet.code}</textarea> <CodeEditorShortcuts editorTheme={window.CODE_SNIPPETS_EDIT?.editorTheme ?? 'default'} /> </div> ) }