Use VanX.list
This commit is contained in:
parent
eee5e46b23
commit
810c34d4b0
|
|
@ -31,6 +31,7 @@
|
||||||
"eslint-plugin-import": "^2.32.0",
|
"eslint-plugin-import": "^2.32.0",
|
||||||
"typescript": "~4.5.4",
|
"typescript": "~4.5.4",
|
||||||
"vanjs-core": "^1.5.5",
|
"vanjs-core": "^1.5.5",
|
||||||
|
"vanjs-ext": "^0.6.3",
|
||||||
"vite": "^7.1.2"
|
"vite": "^7.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -9105,6 +9106,16 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/vanjs-ext": {
|
||||||
|
"version": "0.6.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/vanjs-ext/-/vanjs-ext-0.6.3.tgz",
|
||||||
|
"integrity": "sha512-Jmaeqx9nCjelwDVSQEaRtt7R4Y/Kj/zJBG3bZSiIPj8Wtr8nEFRsJX9K5qcGl1o3cGEEFBE9suyoSqs/6tiOBg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"vanjs-core": "^1.5.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "7.1.2",
|
"version": "7.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.2.tgz",
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
"eslint-plugin-import": "^2.32.0",
|
"eslint-plugin-import": "^2.32.0",
|
||||||
"typescript": "~4.5.4",
|
"typescript": "~4.5.4",
|
||||||
"vanjs-core": "^1.5.5",
|
"vanjs-core": "^1.5.5",
|
||||||
|
"vanjs-ext": "^0.6.3",
|
||||||
"vite": "^7.1.2"
|
"vite": "^7.1.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
||||||
|
|
@ -30,36 +30,48 @@ import './pico.jade.css';
|
||||||
import './index.css';
|
import './index.css';
|
||||||
|
|
||||||
import van from "vanjs-core"
|
import van from "vanjs-core"
|
||||||
|
import * as vanX from "vanjs-ext"
|
||||||
const v = van.tags
|
const v = van.tags
|
||||||
|
|
||||||
import { basicSetup } from "codemirror"
|
import { basicSetup } from "codemirror"
|
||||||
import { EditorView } from "@codemirror/view"
|
import { EditorView } from "@codemirror/view"
|
||||||
import { oneDark } from "@codemirror/theme-one-dark"
|
import { oneDark } from "@codemirror/theme-one-dark"
|
||||||
|
|
||||||
// const fixedHeightEditor = EditorView.theme({
|
|
||||||
// "&": {height: "100%"},
|
|
||||||
// ".cm-scroller": {overflow: "auto"}
|
|
||||||
// })
|
|
||||||
|
|
||||||
const fixedHeightEditor = EditorView.theme({
|
const fixedHeightEditor = EditorView.theme({
|
||||||
"&": {
|
"&": {
|
||||||
height: "100%",
|
height: "100%",
|
||||||
minHeight: "0px",
|
minHeight: "0px",
|
||||||
resize: "horizontal",
|
resize: "horizontal",
|
||||||
overflow: "auto",
|
overflow: "auto",
|
||||||
width: "400px",
|
width: "600px",
|
||||||
minWidth: "8em",
|
minWidth: "8em",
|
||||||
},
|
},
|
||||||
".cm-scroller": { overflow: "auto" }
|
".cm-scroller": { overflow: "auto" }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
class EditorColumn {
|
||||||
|
view: EditorView;
|
||||||
|
wrapper: HTMLElement;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.view = new EditorView({
|
||||||
|
doc: "Start document",
|
||||||
|
extensions: [basicSetup, oneDark, fixedHeightEditor]
|
||||||
|
})
|
||||||
|
console.log("Character width: ", this.view.defaultCharacterWidth);
|
||||||
|
this.wrapper = v.div({ class: "editorWrapper" }, this.view.dom);
|
||||||
|
}
|
||||||
|
get dom() {
|
||||||
|
return this.wrapper;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create and mount editor list
|
||||||
|
const editors = vanX.reactive([]);
|
||||||
|
vanX.list(document.getElementById("editorGrid"), editors, v => v.val.dom);
|
||||||
|
|
||||||
function addView() {
|
function addView() {
|
||||||
const view = new EditorView({
|
editors.push(vanX.noreactive(new EditorColumn()));
|
||||||
doc: "Start document",
|
|
||||||
extensions: [basicSetup, oneDark, fixedHeightEditor]
|
|
||||||
})
|
|
||||||
const wrapper = v.div({class: "editorWrapper"}, view.dom);
|
|
||||||
document.getElementById("editorGrid").appendChild(wrapper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.getElementById("addEditor")?.addEventListener("click", addView);
|
document.getElementById("addEditor")?.addEventListener("click", addView);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue