diff --git a/src/components/Editor.tsx b/src/components/Editor.tsx index 0cb0b7c..eaf5df6 100644 --- a/src/components/Editor.tsx +++ b/src/components/Editor.tsx @@ -40,6 +40,8 @@ export default function Editor({ pref => pref >= 10 && pref <= 22 ); + const [wordWrap, setWordWrap] = usePreference('wordwrap-enabled', true, (value) => true) + useEffect(() => { if (contentType) { setLanguage(contentType); @@ -66,6 +68,8 @@ export default function Editor({ setReadOnly={setReadOnly} theme={theme} setTheme={setTheme} + wordWrap={wordWrap} + setWordWrap={setWordWrap} zoom={zoom} /> diff --git a/src/components/EditorControls.tsx b/src/components/EditorControls.tsx index 0d3db40..728e448 100644 --- a/src/components/EditorControls.tsx +++ b/src/components/EditorControls.tsx @@ -19,6 +19,8 @@ export interface EditorControlsProps { setReadOnly: (value: boolean) => void; theme: keyof Themes; setTheme: (value: keyof Themes) => void; + wordWrap: boolean + setWordWrap: (value: boolean) => void; zoom: (delta: number) => void; } @@ -31,6 +33,8 @@ export default function EditorControls({ setReadOnly, theme, setTheme, + wordWrap, + setWordWrap, zoom, }: EditorControlsProps) { const [saving, setSaving] = useState(false); @@ -113,6 +117,7 @@ export default function EditorControls({
+ ; } @@ -73,6 +74,7 @@ export default function EditorTextArea({ language, fontSize, readOnly, + wordWrap, resetFunction, }: EditorTextAreaProps) { const [editor, setEditor] = useState(); @@ -166,7 +168,7 @@ export default function EditorTextArea({ fontFamily: 'JetBrains Mono', fontSize: fontSize, fontLigatures: true, - wordWrap: 'on', + wordWrap: wordWrap ? 'on' : 'off', renderLineHighlight: 'none', renderValidationDecorations: 'off', readOnly, diff --git a/src/hooks/usePreference.ts b/src/hooks/usePreference.ts index 737c0df..7d93905 100644 --- a/src/hooks/usePreference.ts +++ b/src/hooks/usePreference.ts @@ -9,7 +9,7 @@ export default function usePreference( const [value, setValue] = useState(() => { const prefRaw = localStorage.getItem(id); const pref = prefRaw !== null ? (JSON.parse(prefRaw) as T) : undefined; - if (pref && valid(pref)) { + if (pref !== null && pref !== undefined && valid(pref)) { return pref; } else { return defaultValue;