From 6cf1d1f7478150b05b7650bcb1f5eacceeeb7175 Mon Sep 17 00:00:00 2001 From: clover caruso Date: Wed, 18 Feb 2026 02:52:18 -0800 Subject: [PATCH] chore: delete codemirror --- package-lock.json | 145 ------------------------------ package.json | 1 - src/q+a/scripts/editor.client.tsx | 30 ++----- src/q+a/views/editor.css | 3 + src/q+a/views/editor.marko | 2 +- 5 files changed, 10 insertions(+), 171 deletions(-) diff --git a/package-lock.json b/package-lock.json index e9aa8d436eada107e8021321d62222ea08ca2469..ea91650f189a7482276d8bdccb92e1a8a29fb8eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "@marko/compiler": "^5.39.55", "@types/node": "24.0.10", "browserslist": "4.28.1", - "codemirror": "6.0.1", "dashjs": "5.0.3", "devalue": "5.6.2", "esbuild": "0.25.5", @@ -50,87 +49,6 @@ } } }, - "node_modules/@codemirror/autocomplete": { - "version": "6.18.6", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz", - "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==", - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@codemirror/commands": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz", - "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==", - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.27.0", - "@lezer/common": "^1.1.0" - } - }, - "node_modules/@codemirror/language": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.2.tgz", - "integrity": "sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==", - "license": "MIT", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.23.0", - "@lezer/common": "^1.1.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "node_modules/@codemirror/lint": { - "version": "6.8.5", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz", - "integrity": "sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==", - "license": "MIT", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.35.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/search": { - "version": "6.5.11", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz", - "integrity": "sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==", - "license": "MIT", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/state": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", - "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", - "license": "MIT", - "dependencies": { - "@marijn/find-cluster-break": "^1.0.0" - } - }, - "node_modules/@codemirror/view": { - "version": "6.38.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.0.tgz", - "integrity": "sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg==", - "license": "MIT", - "dependencies": { - "@codemirror/state": "^6.5.0", - "crelt": "^1.0.6", - "style-mod": "^4.1.0", - "w3c-keyname": "^2.2.4" - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", @@ -549,30 +467,6 @@ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, - "node_modules/@lezer/common": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", - "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", - "license": "MIT" - }, - "node_modules/@lezer/highlight": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz", - "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", - "license": "MIT", - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@lezer/lr": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", - "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", - "license": "MIT", - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, "node_modules/@luxass/strip-json-comments": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@luxass/strip-json-comments/-/strip-json-comments-1.4.0.tgz", @@ -582,12 +476,6 @@ "node": ">=18" } }, - "node_modules/@marijn/find-cluster-break": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", - "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", - "license": "MIT" - }, "node_modules/@marko/compiler": { "version": "5.39.55", "resolved": "https://registry.npmjs.org/@marko/compiler/-/compiler-5.39.55.tgz", @@ -890,21 +778,6 @@ "integrity": "sha512-eNk3TRV+xQMJ1PEj0FQGY8KD4m0GPxT487XJ+Iftm7mVa9WpPFDMWqPt+46buiP5j5Wzqe5oMIhqBcAeKfygSA==", "license": "MIT" }, - "node_modules/codemirror": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", - "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/search": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" - } - }, "node_modules/complain": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/complain/-/complain-1.6.1.tgz", @@ -914,12 +787,6 @@ "error-stack-parser": "^2.0.1" } }, - "node_modules/crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", - "license": "MIT" - }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -1458,12 +1325,6 @@ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "license": "MIT" }, - "node_modules/style-mod": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", - "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", - "license": "MIT" - }, "node_modules/type-detect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", @@ -1569,12 +1430,6 @@ "integrity": "sha512-rkvG4SraZQaPSN/5XjwKswdU0OP9MF28QjrYzUBbhb8QyG3ljB1Ky996m++jiI7KdiAP2CkBiQZd9pqEDTClqA==", "license": "MIT" }, - "node_modules/w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", - "license": "MIT" - }, "node_modules/warp10": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/warp10/-/warp10-2.1.0.tgz", diff --git a/package.json b/package.json index 46ab26a5329fb6830d95c354c7e3c720d6ea6f5b..6942fc60f72d1583419c10fa1d24ac7224467549 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "@marko/compiler": "^5.39.55", "@types/node": "24.0.10", "browserslist": "4.28.1", - "codemirror": "6.0.1", "dashjs": "5.0.3", "devalue": "5.6.2", "esbuild": "0.25.5", diff --git a/src/q+a/scripts/editor.client.tsx b/src/q+a/scripts/editor.client.tsx index 0cee070c0732a78dafbb365c5d316ce6269b2f4f..e9f1ce713d1ba76c30fc690b55d3054caf961696 100644 --- a/src/q+a/scripts/editor.client.tsx +++ b/src/q+a/scripts/editor.client.tsx @@ -1,5 +1,3 @@ -import { EditorState } from "@codemirror/state"; -import { basicSetup, EditorView } from "codemirror"; import type { ScriptPayload } from "@/q+a/views/editor.marko"; import QuestionRender from "@/q+a/tags/question.marko"; @@ -8,6 +6,7 @@ const date = new Date(payload.date); const main = document.getElementById("edit-grid")! as HTMLDivElement; const preview = document.getElementById("preview")! as HTMLDivElement; +const editor = document.getElementById("editor") as HTMLTextAreaElement; async function updatePreview(text: string) { preview.innerHTML = await QuestionRender.render({ @@ -23,31 +22,14 @@ async function updatePreview(text: string) { } updatePreview(payload.text); -const startState = EditorState.create({ - doc: payload.text, - extensions: [ - basicSetup, - EditorView.darkTheme.of(true), - EditorView.updateListener.of((update) => { - if (update.docChanged) { - updatePreview(update.state.doc.toString()); - } - }), - EditorView.lineWrapping, - ], - // selection: EditorSelection.create([ - // EditorSelection.cursor(0), - // ], 0), +editor.value = payload.text; +editor.addEventListener("input", () => { + updatePreview(editor.value); }); - -const view = new EditorView({ - state: startState, - parent: document.getElementById("editor")!, -}); -view.focus(); +editor.focus(); (globalThis as any).onCommitQuestion = wrapAction(async () => { - const text = view.state.doc.toString(); + const text = editor.value; const res = await fetch(`/admin/q+a/${payload.id}`, { method: "PATCH", headers: { diff --git a/src/q+a/views/editor.css b/src/q+a/views/editor.css index 105f582831cade250dae95e07d53eee449134469..ad2605acc665d3a4509d95cf6f434e8a520bd861 100644 --- a/src/q+a/views/editor.css +++ b/src/q+a/views/editor.css @@ -32,6 +32,9 @@ background-color: #303030; overflow-y: scroll; height: 100%; + width: calc(100% - 20px); + resize: none; + max-width: unset; } .cm-scroller { overflow-y: auto; diff --git a/src/q+a/views/editor.marko b/src/q+a/views/editor.marko index 5c3863dd3a913dfdba387d5ca2fca7b33cfa2e01..4ce0e15a458902bfe3c1063c4264c094994a67ae 100644 --- a/src/q+a/views/editor.marko +++ b/src/q+a/views/editor.marko @@ -54,7 +54,7 @@ export interface ScriptPayload {