Use VanX.list

This commit is contained in:
Quinten Kock 2025-08-13 01:23:20 +02:00
parent eee5e46b23
commit 810c34d4b0
3 changed files with 36 additions and 12 deletions

11
package-lock.json generated
View File

@ -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",

View File

@ -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": {

View File

@ -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);