From cdb8ff54ec4d573a4de596c3611d59317e5d91d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Mr=C3=B3=C5=BA?= Date: Sun, 4 Aug 2024 20:36:04 +0200 Subject: [PATCH] feat: add svelte language to CodeMirror --- packages/components/react/package.json | 4 ++ .../src/core/CodeMirrorEditor/languages.ts | 7 ++++ pnpm-lock.yaml | 40 +++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/packages/components/react/package.json b/packages/components/react/package.json index 4be6d28d8..6dc4d8342 100644 --- a/packages/components/react/package.json +++ b/packages/components/react/package.json @@ -66,9 +66,13 @@ "@codemirror/language": "^6.10.2", "@codemirror/state": "^6.4.1", "@codemirror/view": "^6.28.1", + "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.2.0", + "@lezer/javascript": "^1.2.0", + "@lezer/lr": "^1.0.0", "@nanostores/react": "0.7.2", "@radix-ui/react-accordion": "^1.2.0", + "@replit/codemirror-lang-svelte": "^6.0.0", "@tutorialkit/runtime": "workspace:*", "@tutorialkit/theme": "workspace:*", "@webcontainer/api": "1.2.0", diff --git a/packages/components/react/src/core/CodeMirrorEditor/languages.ts b/packages/components/react/src/core/CodeMirrorEditor/languages.ts index 969dd2b3a..1b9369401 100644 --- a/packages/components/react/src/core/CodeMirrorEditor/languages.ts +++ b/packages/components/react/src/core/CodeMirrorEditor/languages.ts @@ -78,6 +78,13 @@ export const supportedLanguages = [ return import('@codemirror/lang-wast').then((module) => module.wast()); }, }), + LanguageDescription.of({ + name: 'Svelte', + extensions: ['svelte'], + async load() { + return import('@replit/codemirror-lang-svelte').then((module) => module.svelte()); + }, + }), ]; export async function getLanguage(fileName: string) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f71e3dcbb..f03ea39a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -451,15 +451,27 @@ importers: '@codemirror/view': specifier: ^6.28.1 version: 6.28.1 + '@lezer/common': + specifier: ^1.0.0 + version: 1.2.1 '@lezer/highlight': specifier: ^1.2.0 version: 1.2.0 + '@lezer/javascript': + specifier: ^1.2.0 + version: 1.4.17 + '@lezer/lr': + specifier: ^1.0.0 + version: 1.4.1 '@nanostores/react': specifier: 0.7.2 version: 0.7.2(nanostores@0.10.3)(react@18.3.1) '@radix-ui/react-accordion': specifier: ^1.2.0 version: 1.2.0(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@replit/codemirror-lang-svelte': + specifier: ^6.0.0 + version: 6.0.0(@codemirror/autocomplete@6.16.3)(@codemirror/lang-css@6.2.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.17)(@lezer/lr@1.4.1) '@tutorialkit/runtime': specifier: workspace:* version: link:../../runtime @@ -2896,6 +2908,34 @@ packages: react: 18.3.1 dev: false + /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.16.3)(@codemirror/lang-css@6.2.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.17)(@lezer/lr@1.4.1): + resolution: {integrity: sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==} + peerDependencies: + '@codemirror/autocomplete': ^6.0.0 + '@codemirror/lang-css': ^6.0.1 + '@codemirror/lang-html': ^6.2.0 + '@codemirror/lang-javascript': ^6.1.1 + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + '@lezer/highlight': ^1.0.0 + '@lezer/javascript': ^1.2.0 + '@lezer/lr': ^1.0.0 + dependencies: + '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.1)(@lezer/common@1.2.1) + '@codemirror/lang-css': 6.2.1(@codemirror/view@6.28.1) + '@codemirror/lang-html': 6.4.9 + '@codemirror/lang-javascript': 6.2.2 + '@codemirror/language': 6.10.2 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.28.1 + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/javascript': 1.4.17 + '@lezer/lr': 1.4.1 + dev: false + /@rollup/pluginutils@5.1.0: resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'}