import { useEffect, useState } from 'react'; import { isMobile } from 'react-device-detect'; import { ThemeProvider } from 'styled-components'; import usePreference from '../hooks/usePreference'; import themes, { Themes } from '../style/themes'; import EditorControls from './EditorControls'; import EditorGlobalStyle from './EditorGlobalStyle'; import EditorTextArea from './EditorTextArea'; export interface EditorProps { forcedContent: string; setForcedContent: (value: string) => void; actualContent: string; setActualContent: (value: string) => void; contentType?: string; pasteId?: string; } export default function Editor({ forcedContent, setForcedContent, actualContent, setActualContent, contentType, pasteId, }: EditorProps) { const [language, setLanguage] = useState('plain'); const [readOnly, setReadOnly] = useState(isMobile && !!pasteId); const [theme, setTheme] = usePreference( 'theme', 'dark', pref => !!themes[pref] ); const [fontSize, setFontSize, fontSizeCheck] = usePreference( 'fontsize', 16, pref => pref >= 10 && pref <= 22 ); useEffect(() => { if (contentType) { setLanguage(contentType); } }, [contentType]); function zoom(delta: number) { const newFontSize = fontSize + delta; if (fontSizeCheck(newFontSize)) { setFontSize(newFontSize); } } return ( <> ); }