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 @@
1010 "@marko/compiler": "^5.39.55",
1111 "@types/node": "24.0.10",
1212 "browserslist": "4.28.1",
13 "codemirror": "6.0.1",
1413 "dashjs": "5.0.3",
1514 "devalue": "5.6.2",
1615 "esbuild": "0.25.5",
......@@ -50,87 +49,6 @@
5049 }
5150 }
5251 },
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 },
13452 "node_modules/@esbuild/aix-ppc64": {
13553 "version": "0.25.5",
13654 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
......@@ -549,30 +467,6 @@
549467 "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
550468 "license": "MIT"
551469 },
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 },
576470 "node_modules/@luxass/strip-json-comments": {
577471 "version": "1.4.0",
578472 "resolved": "https://registry.npmjs.org/@luxass/strip-json-comments/-/strip-json-comments-1.4.0.tgz",
......@@ -582,12 +476,6 @@
582476 "node": ">=18"
583477 }
584478 },
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 },
591479 "node_modules/@marko/compiler": {
592480 "version": "5.39.55",
593481 "resolved": "https://registry.npmjs.org/@marko/compiler/-/compiler-5.39.55.tgz",
......@@ -890,21 +778,6 @@
890778 "integrity": "sha512-eNk3TRV+xQMJ1PEj0FQGY8KD4m0GPxT487XJ+Iftm7mVa9WpPFDMWqPt+46buiP5j5Wzqe5oMIhqBcAeKfygSA==",
891779 "license": "MIT"
892780 },
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 },
908781 "node_modules/complain": {
909782 "version": "1.6.1",
910783 "resolved": "https://registry.npmjs.org/complain/-/complain-1.6.1.tgz",
......@@ -914,12 +787,6 @@
914787 "error-stack-parser": "^2.0.1"
915788 }
916789 },
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 },
923790 "node_modules/csstype": {
924791 "version": "3.2.3",
925792 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
......@@ -1458,12 +1325,6 @@
14581325 "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
14591326 "license": "MIT"
14601327 },
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 },
14671328 "node_modules/type-detect": {
14681329 "version": "1.0.0",
14691330 "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz",
......@@ -1569,12 +1430,6 @@
15691430 "integrity": "sha512-rkvG4SraZQaPSN/5XjwKswdU0OP9MF28QjrYzUBbhb8QyG3ljB1Ky996m++jiI7KdiAP2CkBiQZd9pqEDTClqA==",
15701431 "license": "MIT"
15711432 },
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 },
15781433 "node_modules/warp10": {
15791434 "version": "2.1.0",
15801435 "resolved": "https://registry.npmjs.org/warp10/-/warp10-2.1.0.tgz",
package.json-1
......@@ -6,7 +6,6 @@
66 "@marko/compiler": "^5.39.55",
77 "@types/node": "24.0.10",
88 "browserslist": "4.28.1",
9 "codemirror": "6.0.1",
109 "dashjs": "5.0.3",
1110 "devalue": "5.6.2",
1211 "esbuild": "0.25.5",
src/q+a/scripts/editor.client.tsx+6-24
......@@ -1,5 +1,3 @@
1import { EditorState } from "@codemirror/state";
2import { basicSetup, EditorView } from "codemirror";
31import type { ScriptPayload } from "@/q+a/views/editor.marko";
42import QuestionRender from "@/q+a/tags/question.marko";
53
......@@ -8,6 +6,7 @@ const date = new Date(payload.date);
86
97const main = document.getElementById("edit-grid")! as HTMLDivElement;
108const preview = document.getElementById("preview")! as HTMLDivElement;
9const editor = document.getElementById("editor") as HTMLTextAreaElement;
1110
1211async function updatePreview(text: string) {
1312 preview.innerHTML = await QuestionRender.render({
......@@ -23,31 +22,14 @@ async function updatePreview(text: string) {
2322}
2423updatePreview(payload.text);
2524
26const startState = EditorState.create({
27 doc: payload.text,
28 extensions: [
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")!,
25editor.value = payload.text;
26editor.addEventListener("input", () => {
27 updatePreview(editor.value);
4628});
47view.focus();
29editor.focus();
4830
4931(globalThis as any).onCommitQuestion = wrapAction(async () => {
50 const text = view.state.doc.toString();
32 const text = editor.value;
5133 const res = await fetch(`/admin/q+a/${payload.id}`, {
5234 method: "PATCH",
5335 headers: {
src/q+a/views/editor.css+3
......@@ -32,6 +32,9 @@
3232 background-color: #303030;
3333 overflow-y: scroll;
3434 height: 100%;
35 width: calc(100% - 20px);
36 resize: none;
37 max-width: unset;
3538}
3639.cm-scroller {
3740 overflow-y: auto;
src/q+a/views/editor.marko+1-1
......@@ -54,7 +54,7 @@ export interface ScriptPayload {
5454 <option value=QuestionType.reject>reject</>
5555 </select>
5656 </div>
57 <div#editor />
57 <textarea#editor />
5858 <main#preview>
5959 <question editor ...{ question } />
6060 </main>