diff --git a/apps/client/src/widgets/type_widgets/read_only_code.ts b/apps/client/src/widgets/type_widgets/read_only_code.ts index c120138a8..fd74aaa5a 100644 --- a/apps/client/src/widgets/type_widgets/read_only_code.ts +++ b/apps/client/src/widgets/type_widgets/read_only_code.ts @@ -39,7 +39,7 @@ export default class ReadOnlyCodeTypeWidget extends AbstractCodeTypeWidget { this.show(); } - getExtraOpts(): Partial { + getExtraOpts() { return { readOnly: true }; diff --git a/packages/codemirror/src/index.ts b/packages/codemirror/src/index.ts index 3188f20ac..160140e23 100644 --- a/packages/codemirror/src/index.ts +++ b/packages/codemirror/src/index.ts @@ -1,7 +1,7 @@ import { defaultKeymap, history, historyKeymap } from "@codemirror/commands"; import { EditorView, highlightActiveLine, keymap, lineNumbers, placeholder, ViewUpdate, type EditorViewConfig } from "@codemirror/view"; import { defaultHighlightStyle, StreamLanguage, syntaxHighlighting, indentUnit, bracketMatching, foldGutter } from "@codemirror/language"; -import { Compartment, type Extension } from "@codemirror/state"; +import { Compartment, EditorState, type Extension } from "@codemirror/state"; import { highlightSelectionMatches } from "@codemirror/search"; import { vim } from "@replit/codemirror-vim"; import byMimeType from "./syntax_highlighting.js"; @@ -14,6 +14,7 @@ export interface EditorConfig { placeholder?: string; lineWrapping?: boolean; vimKeybindings?: boolean; + readOnly?: boolean; onContentChanged?: ContentChangedListener; } @@ -51,6 +52,10 @@ export default class CodeMirror extends EditorView { ]) ] + if (config.readOnly) { + extensions.push(EditorState.readOnly.of(true)); + } + if (config.placeholder) { extensions.push(placeholder(config.placeholder)); }