authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-02-18 02:52:18-08:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-02-18 03:00:35-08:00
log6cf1d1f7478150b05b7650bcb1f5eacceeeb7175
tree3609a99f3d4a3c09f5da9bce6efea34b574c1870
parent34491f34f1c37991dab4dd12ba82ad2b917e8219
signature Signed by SSH key SHA256:xbd+BjjhyBfwk7GVoURf9Yx0gzDerHbvYv7SddNWmAs

chore: delete codemirror


5 files changed, 10 insertions(+), 171 deletions(-)

package-lock.json-145
...@@ -10,7 +10,6 @@...@@ -10,7 +10,6 @@
10 "@marko/compiler": "^5.39.55",10 "@marko/compiler": "^5.39.55",
11 "@types/node": "24.0.10",11 "@types/node": "24.0.10",
12 "browserslist": "4.28.1",12 "browserslist": "4.28.1",
13 "codemirror": "6.0.1",
14 "dashjs": "5.0.3",13 "dashjs": "5.0.3",
15 "devalue": "5.6.2",14 "devalue": "5.6.2",
16 "esbuild": "0.25.5",15 "esbuild": "0.25.5",
...@@ -50,87 +49,6 @@...@@ -50,87 +49,6 @@
50 }49 }
51 }50 }
52 },51 },
53 "node_modules/@codemirror/autocomplete": {
54 "version": "6.18.6",
55 "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz",
56 "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==",
57 "license": "MIT",
58 "dependencies": {
59 "@codemirror/language": "^6.0.0",
60 "@codemirror/state": "^6.0.0",
61 "@codemirror/view": "^6.17.0",
62 "@lezer/common": "^1.0.0"
63 }
64 },
65 "node_modules/@codemirror/commands": {
66 "version": "6.8.1",
67 "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz",
68 "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==",
69 "license": "MIT",
70 "dependencies": {
71 "@codemirror/language": "^6.0.0",
72 "@codemirror/state": "^6.4.0",
73 "@codemirror/view": "^6.27.0",
74 "@lezer/common": "^1.1.0"
75 }
76 },
77 "node_modules/@codemirror/language": {
78 "version": "6.11.2",
79 "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.2.tgz",
80 "integrity": "sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==",
81 "license": "MIT",
82 "dependencies": {
83 "@codemirror/state": "^6.0.0",
84 "@codemirror/view": "^6.23.0",
85 "@lezer/common": "^1.1.0",
86 "@lezer/highlight": "^1.0.0",
87 "@lezer/lr": "^1.0.0",
88 "style-mod": "^4.0.0"
89 }
90 },
91 "node_modules/@codemirror/lint": {
92 "version": "6.8.5",
93 "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz",
94 "integrity": "sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==",
95 "license": "MIT",
96 "dependencies": {
97 "@codemirror/state": "^6.0.0",
98 "@codemirror/view": "^6.35.0",
99 "crelt": "^1.0.5"
100 }
101 },
102 "node_modules/@codemirror/search": {
103 "version": "6.5.11",
104 "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz",
105 "integrity": "sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==",
106 "license": "MIT",
107 "dependencies": {
108 "@codemirror/state": "^6.0.0",
109 "@codemirror/view": "^6.0.0",
110 "crelt": "^1.0.5"
111 }
112 },
113 "node_modules/@codemirror/state": {
114 "version": "6.5.2",
115 "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz",
116 "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==",
117 "license": "MIT",
118 "dependencies": {
119 "@marijn/find-cluster-break": "^1.0.0"
120 }
121 },
122 "node_modules/@codemirror/view": {
123 "version": "6.38.0",
124 "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.0.tgz",
125 "integrity": "sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg==",
126 "license": "MIT",
127 "dependencies": {
128 "@codemirror/state": "^6.5.0",
129 "crelt": "^1.0.6",
130 "style-mod": "^4.1.0",
131 "w3c-keyname": "^2.2.4"
132 }
133 },
134 "node_modules/@esbuild/aix-ppc64": {52 "node_modules/@esbuild/aix-ppc64": {
135 "version": "0.25.5",53 "version": "0.25.5",
136 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",54 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
...@@ -549,30 +467,6 @@...@@ -549,30 +467,6 @@
549 "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",467 "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
550 "license": "MIT"468 "license": "MIT"
551 },469 },
552 "node_modules/@lezer/common": {
553 "version": "1.2.3",
554 "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz",
555 "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==",
556 "license": "MIT"
557 },
558 "node_modules/@lezer/highlight": {
559 "version": "1.2.1",
560 "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz",
561 "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==",
562 "license": "MIT",
563 "dependencies": {
564 "@lezer/common": "^1.0.0"
565 }
566 },
567 "node_modules/@lezer/lr": {
568 "version": "1.4.2",
569 "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz",
570 "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==",
571 "license": "MIT",
572 "dependencies": {
573 "@lezer/common": "^1.0.0"
574 }
575 },
576 "node_modules/@luxass/strip-json-comments": {470 "node_modules/@luxass/strip-json-comments": {
577 "version": "1.4.0",471 "version": "1.4.0",
578 "resolved": "https://registry.npmjs.org/@luxass/strip-json-comments/-/strip-json-comments-1.4.0.tgz",472 "resolved": "https://registry.npmjs.org/@luxass/strip-json-comments/-/strip-json-comments-1.4.0.tgz",
...@@ -582,12 +476,6 @@...@@ -582,12 +476,6 @@
582 "node": ">=18"476 "node": ">=18"
583 }477 }
584 },478 },
585 "node_modules/@marijn/find-cluster-break": {
586 "version": "1.0.2",
587 "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz",
588 "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==",
589 "license": "MIT"
590 },
591 "node_modules/@marko/compiler": {479 "node_modules/@marko/compiler": {
592 "version": "5.39.55",480 "version": "5.39.55",
593 "resolved": "https://registry.npmjs.org/@marko/compiler/-/compiler-5.39.55.tgz",481 "resolved": "https://registry.npmjs.org/@marko/compiler/-/compiler-5.39.55.tgz",
...@@ -890,21 +778,6 @@...@@ -890,21 +778,6 @@
890 "integrity": "sha512-eNk3TRV+xQMJ1PEj0FQGY8KD4m0GPxT487XJ+Iftm7mVa9WpPFDMWqPt+46buiP5j5Wzqe5oMIhqBcAeKfygSA==",778 "integrity": "sha512-eNk3TRV+xQMJ1PEj0FQGY8KD4m0GPxT487XJ+Iftm7mVa9WpPFDMWqPt+46buiP5j5Wzqe5oMIhqBcAeKfygSA==",
891 "license": "MIT"779 "license": "MIT"
892 },780 },
893 "node_modules/codemirror": {
894 "version": "6.0.1",
895 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
896 "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
897 "license": "MIT",
898 "dependencies": {
899 "@codemirror/autocomplete": "^6.0.0",
900 "@codemirror/commands": "^6.0.0",
901 "@codemirror/language": "^6.0.0",
902 "@codemirror/lint": "^6.0.0",
903 "@codemirror/search": "^6.0.0",
904 "@codemirror/state": "^6.0.0",
905 "@codemirror/view": "^6.0.0"
906 }
907 },
908 "node_modules/complain": {781 "node_modules/complain": {
909 "version": "1.6.1",782 "version": "1.6.1",
910 "resolved": "https://registry.npmjs.org/complain/-/complain-1.6.1.tgz",783 "resolved": "https://registry.npmjs.org/complain/-/complain-1.6.1.tgz",
...@@ -914,12 +787,6 @@...@@ -914,12 +787,6 @@
914 "error-stack-parser": "^2.0.1"787 "error-stack-parser": "^2.0.1"
915 }788 }
916 },789 },
917 "node_modules/crelt": {
918 "version": "1.0.6",
919 "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
920 "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==",
921 "license": "MIT"
922 },
923 "node_modules/csstype": {790 "node_modules/csstype": {
924 "version": "3.2.3",791 "version": "3.2.3",
925 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",792 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
...@@ -1458,12 +1325,6 @@...@@ -1458,12 +1325,6 @@
1458 "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",1325 "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
1459 "license": "MIT"1326 "license": "MIT"
1460 },1327 },
1461 "node_modules/style-mod": {
1462 "version": "4.1.2",
1463 "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz",
1464 "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==",
1465 "license": "MIT"
1466 },
1467 "node_modules/type-detect": {1328 "node_modules/type-detect": {
1468 "version": "1.0.0",1329 "version": "1.0.0",
1469 "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz",1330 "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz",
...@@ -1569,12 +1430,6 @@...@@ -1569,12 +1430,6 @@
1569 "integrity": "sha512-rkvG4SraZQaPSN/5XjwKswdU0OP9MF28QjrYzUBbhb8QyG3ljB1Ky996m++jiI7KdiAP2CkBiQZd9pqEDTClqA==",1430 "integrity": "sha512-rkvG4SraZQaPSN/5XjwKswdU0OP9MF28QjrYzUBbhb8QyG3ljB1Ky996m++jiI7KdiAP2CkBiQZd9pqEDTClqA==",
1570 "license": "MIT"1431 "license": "MIT"
1571 },1432 },
1572 "node_modules/w3c-keyname": {
1573 "version": "2.2.8",
1574 "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
1575 "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
1576 "license": "MIT"
1577 },
1578 "node_modules/warp10": {1433 "node_modules/warp10": {
1579 "version": "2.1.0",1434 "version": "2.1.0",
1580 "resolved": "https://registry.npmjs.org/warp10/-/warp10-2.1.0.tgz",1435 "resolved": "https://registry.npmjs.org/warp10/-/warp10-2.1.0.tgz",
package.json-1
...@@ -6,7 +6,6 @@...@@ -6,7 +6,6 @@
6 "@marko/compiler": "^5.39.55",6 "@marko/compiler": "^5.39.55",
7 "@types/node": "24.0.10",7 "@types/node": "24.0.10",
8 "browserslist": "4.28.1",8 "browserslist": "4.28.1",
9 "codemirror": "6.0.1",
10 "dashjs": "5.0.3",9 "dashjs": "5.0.3",
11 "devalue": "5.6.2",10 "devalue": "5.6.2",
12 "esbuild": "0.25.5",11 "esbuild": "0.25.5",
src/q+a/scripts/editor.client.tsx+6-24
...@@ -1,5 +1,3 @@...@@ -1,5 +1,3 @@
1import { EditorState } from "@codemirror/state";
2import { basicSetup, EditorView } from "codemirror";
3import type { ScriptPayload } from "@/q+a/views/editor.marko";1import type { ScriptPayload } from "@/q+a/views/editor.marko";
4import QuestionRender from "@/q+a/tags/question.marko";2import QuestionRender from "@/q+a/tags/question.marko";
53
...@@ -8,6 +6,7 @@ const date = new Date(payload.date);...@@ -8,6 +6,7 @@ const date = new Date(payload.date);
86
9const main = document.getElementById("edit-grid")! as HTMLDivElement;7const main = document.getElementById("edit-grid")! as HTMLDivElement;
10const preview = document.getElementById("preview")! as HTMLDivElement;8const preview = document.getElementById("preview")! as HTMLDivElement;
9const editor = document.getElementById("editor") as HTMLTextAreaElement;
1110
12async function updatePreview(text: string) {11async function updatePreview(text: string) {
13 preview.innerHTML = await QuestionRender.render({12 preview.innerHTML = await QuestionRender.render({
...@@ -23,31 +22,14 @@ async function updatePreview(text: string) {...@@ -23,31 +22,14 @@ async function updatePreview(text: string) {
23}22}
24updatePreview(payload.text);23updatePreview(payload.text);
2524
26const startState = EditorState.create({25editor.value = payload.text;
27 doc: payload.text,26editor.addEventListener("input", () => {
28 extensions: [27 updatePreview(editor.value);
29 basicSetup,
30 EditorView.darkTheme.of(true),
31 EditorView.updateListener.of((update) => {
32 if (update.docChanged) {
33 updatePreview(update.state.doc.toString());
34 }
35 }),
36 EditorView.lineWrapping,
37 ],
38 // selection: EditorSelection.create([
39 // EditorSelection.cursor(0),
40 // ], 0),
41});
42
43const view = new EditorView({
44 state: startState,
45 parent: document.getElementById("editor")!,
46});28});
47view.focus();29editor.focus();
4830
49(globalThis as any).onCommitQuestion = wrapAction(async () => {31(globalThis as any).onCommitQuestion = wrapAction(async () => {
50 const text = view.state.doc.toString();32 const text = editor.value;
51 const res = await fetch(`/admin/q+a/${payload.id}`, {33 const res = await fetch(`/admin/q+a/${payload.id}`, {
52 method: "PATCH",34 method: "PATCH",
53 headers: {35 headers: {
src/q+a/views/editor.css+3
...@@ -32,6 +32,9 @@...@@ -32,6 +32,9 @@
32 background-color: #303030;32 background-color: #303030;
33 overflow-y: scroll;33 overflow-y: scroll;
34 height: 100%;34 height: 100%;
35 width: calc(100% - 20px);
36 resize: none;
37 max-width: unset;
35}38}
36.cm-scroller {39.cm-scroller {
37 overflow-y: auto;40 overflow-y: auto;
src/q+a/views/editor.marko+1-1
...@@ -54,7 +54,7 @@ export interface ScriptPayload {...@@ -54,7 +54,7 @@ export interface ScriptPayload {
54 <option value=QuestionType.reject>reject</>54 <option value=QuestionType.reject>reject</>
55 </select>55 </select>
56 </div>56 </div>
57 <div#editor />57 <textarea#editor />
58 <main#preview>58 <main#preview>
59 <question editor ...{ question } />59 <question editor ...{ question } />
60 </main>60 </main>