From d76402ff0da7fb5d986f811c1aad8ffd05d5f5f6 Mon Sep 17 00:00:00 2001 From: Oleksii Husakov Date: Tue, 6 Jun 2023 19:37:02 +0300 Subject: [PATCH] feat: update package.json --- package-lock.json | 31 ++++++++++++++++++----------- package.json | 1 + src/other/codemirror/CodeMirror.tsx | 17 ++++++++++++---- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index d2f12bc7..83755faa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1228,6 +1228,22 @@ "@codemirror/theme-one-dark": "^6.0.0", "@uiw/codemirror-extensions-basic-setup": "4.21.1", "codemirror": "^6.0.0" + }, + "dependencies": { + "codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + } } }, "@ungap/promise-all-settled": { @@ -1732,18 +1748,9 @@ "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" }, "codemirror": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", - "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/search": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" - } + "version": "5.65.13", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.13.tgz", + "integrity": "sha512-SVWEzKXmbHmTQQWaz03Shrh4nybG0wXx2MEu3FO4ezbPW8IbnZEd5iGHGEffSUaitKYa3i+pHpBsSvw8sPHtzg==" }, "color-convert": { "version": "1.9.3", diff --git a/package.json b/package.json index 68eea8ab..c031aae5 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "@codemirror/language": "^6.6.0", "@codemirror/legacy-modes": "^6.3.1", "@codemirror/lint": "^6.2.0", + "codemirror": "^5.47.0", "@mui/x-date-pickers": "^6.0.0", "@toast-ui/editor": "^3.2.2", "@toast-ui/editor-plugin-code-syntax-highlight": "^3.1.0", diff --git a/src/other/codemirror/CodeMirror.tsx b/src/other/codemirror/CodeMirror.tsx index 705a918e..89cae24f 100644 --- a/src/other/codemirror/CodeMirror.tsx +++ b/src/other/codemirror/CodeMirror.tsx @@ -1,3 +1,9 @@ +import "codemirror/lib/codemirror.css"; +import "codemirror/mode/jinja2/jinja2"; +import "codemirror/mode/fortran/fortran"; +import "codemirror/mode/shell/shell"; +import "codemirror/mode/python/python"; +import "codemirror/mode/javascript/javascript"; import { javascript } from "@codemirror/lang-javascript"; import { json, jsonParseLinter } from "@codemirror/lang-json"; import { python } from "@codemirror/lang-python"; @@ -6,7 +12,8 @@ import { fortran } from "@codemirror/legacy-modes/mode/fortran"; import { jinja2 } from "@codemirror/legacy-modes/mode/jinja2"; import { shell } from "@codemirror/legacy-modes/mode/shell"; import { linter, lintGutter } from "@codemirror/lint"; -import CodeMirrorBase, { BasicSetupOptions, ReactCodeMirrorProps } from "@uiw/react-codemirror"; +import { CompletionContext, CompletionResult, autocompletion } from "@codemirror/autocomplete"; +import CodeMirrorBase, { BasicSetupOptions } from "@uiw/react-codemirror"; import React from "react"; const LANGUAGES_MAP: Record = { @@ -24,7 +31,7 @@ export interface CodeMirrorProps { content?: string; options: boolean | BasicSetupOptions; language: string; - extensions: ReactCodeMirrorProps["extensions"][]; + completions: (context: CompletionContext) => CompletionResult; } export interface CodeMirrorState { @@ -64,7 +71,9 @@ class CodeMirror extends React.Component { } render() { - const { content = "", options = {}, language, extensions = [] } = this.props; + const { content = "", options = {}, language, completions } = this.props; + const completionExtension = autocompletion({ override: [completions] }); + return ( { onBlur={() => this.setState({ isEditing: false })} basicSetup={options} theme="light" - extensions={[...extensions, ...this.getLanguageExtensions(language)]} + extensions={[completionExtension, ...this.getLanguageExtensions(language)]} /> ); }