temp
This commit is contained in:
64
packages/codemirror/.gitignore
vendored
Normal file
64
packages/codemirror/.gitignore
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
node_modules
|
||||
|
||||
# mac
|
||||
.DS_Store
|
||||
|
||||
.env*
|
||||
!.env*example
|
||||
|
||||
dist
|
||||
# build
|
||||
/build
|
||||
|
||||
/logs
|
||||
|
||||
.turbo
|
||||
|
||||
/pack-dist
|
||||
|
||||
# astro
|
||||
.astro
|
||||
|
||||
# next
|
||||
.next
|
||||
|
||||
# nuxt
|
||||
.nuxt
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# vuepress
|
||||
.vuepress/dist
|
||||
|
||||
# coverage
|
||||
coverage/
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
|
||||
# debug logs
|
||||
*.log
|
||||
*.tmp
|
||||
|
||||
# vscode
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
|
||||
# idea
|
||||
.idea
|
||||
|
||||
# system
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
Desktop.ini
|
||||
|
||||
# temp files
|
||||
*.tmp
|
||||
*.temp
|
||||
|
||||
# local development
|
||||
*.local
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kevisual/codemirror",
|
||||
"version": "0.0.3",
|
||||
"version": "0.0.4",
|
||||
"description": "",
|
||||
"main": "dist/editor.js",
|
||||
"private": false,
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
import { EditorView, basicSetup } from 'codemirror';
|
||||
import { javascript } from '@codemirror/lang-javascript';
|
||||
import { json } from '@codemirror/lang-json';
|
||||
|
||||
let editor: EditorView = null;
|
||||
|
||||
type CreateOpts = {
|
||||
jsx?: boolean;
|
||||
typescript?: boolean;
|
||||
type?: 'javascript' | 'json';
|
||||
};
|
||||
/**
|
||||
* 创建单例
|
||||
@@ -19,9 +21,15 @@ const createEditorInstance = (el?: HTMLDivElement, opts?: CreateOpts) => {
|
||||
} else if (editor) {
|
||||
return editor;
|
||||
}
|
||||
const { jsx, typescript } = opts || {};
|
||||
const { type = 'javascript' } = opts || {};
|
||||
const plugins = [basicSetup];
|
||||
if (type === 'json') {
|
||||
plugins.push(json());
|
||||
} else {
|
||||
plugins.push(javascript({ jsx: opts?.jsx, typescript: opts?.typescript }));
|
||||
}
|
||||
editor = new EditorView({
|
||||
extensions: [basicSetup, javascript({ jsx, typescript })],
|
||||
extensions: plugins,
|
||||
parent: el || document.body,
|
||||
});
|
||||
editor.dom.style.height = '100%';
|
||||
@@ -34,8 +42,15 @@ const createEditorInstance = (el?: HTMLDivElement, opts?: CreateOpts) => {
|
||||
* @returns
|
||||
*/
|
||||
export const createEditor = (el: HTMLDivElement, opts?: CreateOpts) => {
|
||||
const { type = 'javascript' } = opts || {};
|
||||
const plugins = [basicSetup];
|
||||
if (type === 'json') {
|
||||
plugins.push(json());
|
||||
} else {
|
||||
plugins.push(javascript({ jsx: opts?.jsx, typescript: opts?.typescript }));
|
||||
}
|
||||
const editor = new EditorView({
|
||||
extensions: [basicSetup, javascript({ jsx: opts?.jsx, typescript: opts?.typescript })],
|
||||
extensions: plugins,
|
||||
parent: el || document.body,
|
||||
});
|
||||
editor.dom.style.height = '100%';
|
||||
|
||||
Reference in New Issue
Block a user