mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 17:25:39 +01:00
Add 'browser-ems-vite-react' sample
This commit is contained in:
parent
d901c5b613
commit
4f48e64902
11 changed files with 2230 additions and 0 deletions
|
|
@ -0,0 +1,4 @@
|
|||
.Editor {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
import { VFC, useRef, useState, useEffect } from "react";
|
||||
import * as monaco from "monaco-editor/esm/vs/editor/editor.api";
|
||||
import styles from "./Editor.module.css";
|
||||
|
||||
export const Editor: VFC = () => {
|
||||
const [editor, setEditor] =
|
||||
useState<monaco.editor.IStandaloneCodeEditor | null>(null);
|
||||
const monacoEl = useRef(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (monacoEl && !editor) {
|
||||
setEditor(
|
||||
monaco.editor.create(monacoEl.current!, {
|
||||
value: ['function x() {', '\tconsole.log("Hello world!");', '}'].join('\n'),
|
||||
language: "typescript",
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
return () => editor?.dispose();
|
||||
}, [monacoEl.current]);
|
||||
|
||||
return <div className={styles.Editor} ref={monacoEl}></div>;
|
||||
};
|
||||
11
monaco-editor-samples/browser-esm-vite-react/src/main.tsx
Normal file
11
monaco-editor-samples/browser-esm-vite-react/src/main.tsx
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import React from 'react'
|
||||
import ReactDOM from 'react-dom'
|
||||
import {Editor} from './components/Editor'
|
||||
import "./userWorker";
|
||||
|
||||
ReactDOM.render(
|
||||
<React.StrictMode>
|
||||
<Editor />
|
||||
</React.StrictMode>,
|
||||
document.getElementById('root')
|
||||
)
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
import * as monaco from "monaco-editor";
|
||||
import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker";
|
||||
import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker";
|
||||
import cssWorker from "monaco-editor/esm/vs/language/css/css.worker?worker";
|
||||
import htmlWorker from "monaco-editor/esm/vs/language/html/html.worker?worker";
|
||||
import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?worker";
|
||||
|
||||
// @ts-ignore
|
||||
self.MonacoEnvironment = {
|
||||
getWorker(_: any, label: string) {
|
||||
if (label === "json") {
|
||||
return new jsonWorker();
|
||||
}
|
||||
if (label === "css" || label === "scss" || label === "less") {
|
||||
return new cssWorker();
|
||||
}
|
||||
if (label === "html" || label === "handlebars" || label === "razor") {
|
||||
return new htmlWorker();
|
||||
}
|
||||
if (label === "typescript" || label === "javascript") {
|
||||
return new tsWorker();
|
||||
}
|
||||
return new editorWorker();
|
||||
},
|
||||
};
|
||||
|
||||
monaco.languages.typescript.typescriptDefaults.setEagerModelSync(true);
|
||||
1
monaco-editor-samples/browser-esm-vite-react/src/vite-env.d.ts
vendored
Normal file
1
monaco-editor-samples/browser-esm-vite-react/src/vite-env.d.ts
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/// <reference types="vite/client" />
|
||||
Loading…
Add table
Add a link
Reference in a new issue