@bojackduy/opencode-learn 0.1.6 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server.js +45 -25
- package/dist/tui.js +1001 -478
- package/package.json +1 -1
- package/plugins/learn-tui.tsx +167 -22
- package/plugins/learn.ts +42 -23
package/dist/tui.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// plugins/learn-tui.tsx
|
|
3
|
-
import { use as _$use } from "@opentui/solid";
|
|
4
3
|
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
5
4
|
import { effect as _$effect } from "@opentui/solid";
|
|
5
|
+
import { use as _$use } from "@opentui/solid";
|
|
6
6
|
import { createTextNode as _$createTextNode } from "@opentui/solid";
|
|
7
7
|
import { insertNode as _$insertNode } from "@opentui/solid";
|
|
8
8
|
import { insert as _$insert } from "@opentui/solid";
|
|
@@ -14,7 +14,214 @@ import { useKeyboard, useTerminalDimensions } from "@opentui/solid";
|
|
|
14
14
|
import * as fs from "fs";
|
|
15
15
|
import * as path from "path";
|
|
16
16
|
import { watch } from "fs";
|
|
17
|
+
import { SyntaxStyle } from "@opentui/core";
|
|
17
18
|
import { tmpdir } from "os";
|
|
19
|
+
function syntaxStyle(theme) {
|
|
20
|
+
return SyntaxStyle.fromTheme([{
|
|
21
|
+
scope: ["default"],
|
|
22
|
+
style: {
|
|
23
|
+
foreground: theme.text
|
|
24
|
+
}
|
|
25
|
+
}, {
|
|
26
|
+
scope: ["comment", "comment.documentation"],
|
|
27
|
+
style: {
|
|
28
|
+
foreground: theme.syntaxComment,
|
|
29
|
+
italic: true
|
|
30
|
+
}
|
|
31
|
+
}, {
|
|
32
|
+
scope: ["string", "symbol", "character", "character.special"],
|
|
33
|
+
style: {
|
|
34
|
+
foreground: theme.syntaxString
|
|
35
|
+
}
|
|
36
|
+
}, {
|
|
37
|
+
scope: ["number", "boolean", "float", "constant"],
|
|
38
|
+
style: {
|
|
39
|
+
foreground: theme.syntaxNumber
|
|
40
|
+
}
|
|
41
|
+
}, {
|
|
42
|
+
scope: ["keyword.return", "keyword.conditional", "keyword.repeat", "keyword.coroutine", "keyword", "keyword.directive", "keyword.modifier", "keyword.exception"],
|
|
43
|
+
style: {
|
|
44
|
+
foreground: theme.syntaxKeyword,
|
|
45
|
+
italic: true
|
|
46
|
+
}
|
|
47
|
+
}, {
|
|
48
|
+
scope: ["keyword.type"],
|
|
49
|
+
style: {
|
|
50
|
+
foreground: theme.syntaxType,
|
|
51
|
+
bold: true,
|
|
52
|
+
italic: true
|
|
53
|
+
}
|
|
54
|
+
}, {
|
|
55
|
+
scope: ["keyword.import", "keyword.export", "tag.attribute"],
|
|
56
|
+
style: {
|
|
57
|
+
foreground: theme.syntaxKeyword
|
|
58
|
+
}
|
|
59
|
+
}, {
|
|
60
|
+
scope: ["keyword.function", "function.method", "variable.member", "function", "constructor"],
|
|
61
|
+
style: {
|
|
62
|
+
foreground: theme.syntaxFunction
|
|
63
|
+
}
|
|
64
|
+
}, {
|
|
65
|
+
scope: ["operator", "keyword.operator", "punctuation.delimiter", "keyword.conditional.ternary", "punctuation.special", "tag.delimiter"],
|
|
66
|
+
style: {
|
|
67
|
+
foreground: theme.syntaxOperator
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
scope: ["variable", "variable.parameter", "function.method.call", "function.call", "property", "parameter", "field"],
|
|
71
|
+
style: {
|
|
72
|
+
foreground: theme.syntaxVariable
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
scope: ["type", "module", "class", "namespace"],
|
|
76
|
+
style: {
|
|
77
|
+
foreground: theme.syntaxType
|
|
78
|
+
}
|
|
79
|
+
}, {
|
|
80
|
+
scope: ["punctuation", "punctuation.bracket"],
|
|
81
|
+
style: {
|
|
82
|
+
foreground: theme.syntaxPunctuation
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
scope: ["variable.builtin", "type.builtin", "function.builtin", "module.builtin", "constant.builtin", "variable.super", "tag"],
|
|
86
|
+
style: {
|
|
87
|
+
foreground: theme.error
|
|
88
|
+
}
|
|
89
|
+
}, {
|
|
90
|
+
scope: ["string.escape", "string.regexp"],
|
|
91
|
+
style: {
|
|
92
|
+
foreground: theme.syntaxKeyword
|
|
93
|
+
}
|
|
94
|
+
}, {
|
|
95
|
+
scope: ["markup.heading"],
|
|
96
|
+
style: {
|
|
97
|
+
foreground: theme.markdownHeading,
|
|
98
|
+
bold: true
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
scope: ["markup.heading.1"],
|
|
102
|
+
style: {
|
|
103
|
+
foreground: theme.markdownHeading,
|
|
104
|
+
bold: true,
|
|
105
|
+
underline: true
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
108
|
+
scope: ["markup.bold", "markup.strong"],
|
|
109
|
+
style: {
|
|
110
|
+
foreground: theme.markdownStrong,
|
|
111
|
+
bold: true
|
|
112
|
+
}
|
|
113
|
+
}, {
|
|
114
|
+
scope: ["markup.italic"],
|
|
115
|
+
style: {
|
|
116
|
+
foreground: theme.markdownEmph,
|
|
117
|
+
italic: true
|
|
118
|
+
}
|
|
119
|
+
}, {
|
|
120
|
+
scope: ["markup.list"],
|
|
121
|
+
style: {
|
|
122
|
+
foreground: theme.markdownListItem
|
|
123
|
+
}
|
|
124
|
+
}, {
|
|
125
|
+
scope: ["markup.quote"],
|
|
126
|
+
style: {
|
|
127
|
+
foreground: theme.markdownBlockQuote,
|
|
128
|
+
italic: true
|
|
129
|
+
}
|
|
130
|
+
}, {
|
|
131
|
+
scope: ["markup.raw", "markup.raw.block"],
|
|
132
|
+
style: {
|
|
133
|
+
foreground: theme.markdownCode
|
|
134
|
+
}
|
|
135
|
+
}, {
|
|
136
|
+
scope: ["markup.raw.inline"],
|
|
137
|
+
style: {
|
|
138
|
+
foreground: theme.markdownCode,
|
|
139
|
+
background: theme.background
|
|
140
|
+
}
|
|
141
|
+
}, {
|
|
142
|
+
scope: ["markup.link", "markup.link.url", "string.special", "string.special.url"],
|
|
143
|
+
style: {
|
|
144
|
+
foreground: theme.markdownLink,
|
|
145
|
+
underline: true
|
|
146
|
+
}
|
|
147
|
+
}, {
|
|
148
|
+
scope: ["markup.link.label", "label"],
|
|
149
|
+
style: {
|
|
150
|
+
foreground: theme.markdownLinkText,
|
|
151
|
+
underline: true
|
|
152
|
+
}
|
|
153
|
+
}, {
|
|
154
|
+
scope: ["spell", "nospell", "markup.underline"],
|
|
155
|
+
style: {
|
|
156
|
+
foreground: theme.text
|
|
157
|
+
}
|
|
158
|
+
}, {
|
|
159
|
+
scope: ["conceal", "markup.strikethrough", "markup.list.unchecked", "debug"],
|
|
160
|
+
style: {
|
|
161
|
+
foreground: theme.textMuted
|
|
162
|
+
}
|
|
163
|
+
}, {
|
|
164
|
+
scope: ["comment.error", "error"],
|
|
165
|
+
style: {
|
|
166
|
+
foreground: theme.error,
|
|
167
|
+
italic: true,
|
|
168
|
+
bold: true
|
|
169
|
+
}
|
|
170
|
+
}, {
|
|
171
|
+
scope: ["comment.warning", "warning"],
|
|
172
|
+
style: {
|
|
173
|
+
foreground: theme.warning,
|
|
174
|
+
italic: true,
|
|
175
|
+
bold: true
|
|
176
|
+
}
|
|
177
|
+
}, {
|
|
178
|
+
scope: ["comment.todo", "comment.note"],
|
|
179
|
+
style: {
|
|
180
|
+
foreground: theme.info,
|
|
181
|
+
italic: true,
|
|
182
|
+
bold: true
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
scope: ["type.definition"],
|
|
186
|
+
style: {
|
|
187
|
+
foreground: theme.syntaxType,
|
|
188
|
+
bold: true
|
|
189
|
+
}
|
|
190
|
+
}, {
|
|
191
|
+
scope: ["attribute", "annotation"],
|
|
192
|
+
style: {
|
|
193
|
+
foreground: theme.warning
|
|
194
|
+
}
|
|
195
|
+
}, {
|
|
196
|
+
scope: ["markup.list.checked"],
|
|
197
|
+
style: {
|
|
198
|
+
foreground: theme.success
|
|
199
|
+
}
|
|
200
|
+
}, {
|
|
201
|
+
scope: ["diff.plus"],
|
|
202
|
+
style: {
|
|
203
|
+
foreground: theme.diffAdded,
|
|
204
|
+
background: theme.diffAddedBg
|
|
205
|
+
}
|
|
206
|
+
}, {
|
|
207
|
+
scope: ["diff.minus"],
|
|
208
|
+
style: {
|
|
209
|
+
foreground: theme.diffRemoved,
|
|
210
|
+
background: theme.diffRemovedBg
|
|
211
|
+
}
|
|
212
|
+
}, {
|
|
213
|
+
scope: ["diff.delta"],
|
|
214
|
+
style: {
|
|
215
|
+
foreground: theme.diffContext,
|
|
216
|
+
background: theme.diffContextBg
|
|
217
|
+
}
|
|
218
|
+
}, {
|
|
219
|
+
scope: ["info"],
|
|
220
|
+
style: {
|
|
221
|
+
foreground: theme.info
|
|
222
|
+
}
|
|
223
|
+
}]);
|
|
224
|
+
}
|
|
18
225
|
var PENDING_DIR = ".opencode/learn-pending";
|
|
19
226
|
var TUI_LOG = path.join(tmpdir(), "learn-tui.log");
|
|
20
227
|
function tlog(...a) {
|
|
@@ -30,6 +237,18 @@ function ensureDir(dir) {
|
|
|
30
237
|
});
|
|
31
238
|
} catch {}
|
|
32
239
|
}
|
|
240
|
+
function decodeQuizText(s) {
|
|
241
|
+
if (!s || typeof s !== "string")
|
|
242
|
+
return s;
|
|
243
|
+
if (!s.includes("\\"))
|
|
244
|
+
return s;
|
|
245
|
+
let out = s.replace(/\\r\\n/g, `
|
|
246
|
+
`).replace(/\\n/g, `
|
|
247
|
+
`).replace(/\\r/g, "\r").replace(/\\t/g, "\t");
|
|
248
|
+
out = out.replace(/\\"/g, '"').replace(/\\'/g, "'");
|
|
249
|
+
out = out.replace(/\\\\/g, "\\");
|
|
250
|
+
return out;
|
|
251
|
+
}
|
|
33
252
|
function prevent(e) {
|
|
34
253
|
try {
|
|
35
254
|
e.preventDefault?.();
|
|
@@ -38,6 +257,7 @@ function prevent(e) {
|
|
|
38
257
|
}
|
|
39
258
|
function QuizDialog(props) {
|
|
40
259
|
const theme = () => props.api.theme.current;
|
|
260
|
+
const syntax = () => syntaxStyle(theme());
|
|
41
261
|
const dims = useTerminalDimensions();
|
|
42
262
|
const popupWidth = () => Math.max(68, Math.min(dims().width - 4, 92));
|
|
43
263
|
const popupHeight = () => Math.max(4, Math.min(24, dims().height - 2));
|
|
@@ -54,6 +274,40 @@ function QuizDialog(props) {
|
|
|
54
274
|
const [selected, setSelected] = createSignal(new Map);
|
|
55
275
|
const [feedback, setFeedback] = createSignal(null);
|
|
56
276
|
let noteInputEl;
|
|
277
|
+
let scrollRef;
|
|
278
|
+
const [canScrollUp, setCanScrollUp] = createSignal(false);
|
|
279
|
+
const [canScrollDown, setCanScrollDown] = createSignal(false);
|
|
280
|
+
const updateScrollIndicators = () => {
|
|
281
|
+
try {
|
|
282
|
+
if (!scrollRef) {
|
|
283
|
+
setCanScrollUp(false);
|
|
284
|
+
setCanScrollDown(false);
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const st = typeof scrollRef.scrollTop === "number" ? scrollRef.scrollTop : 0;
|
|
288
|
+
const h = typeof scrollRef.height === "number" ? scrollRef.height : scrollRef.viewportHeight ?? popupHeight();
|
|
289
|
+
const sh = typeof scrollRef.scrollHeight === "number" ? scrollRef.scrollHeight : 0;
|
|
290
|
+
let effectiveSh = sh;
|
|
291
|
+
if (!effectiveSh && typeof scrollRef.getChildren === "function") {
|
|
292
|
+
try {
|
|
293
|
+
const kids = scrollRef.getChildren();
|
|
294
|
+
if (kids?.length)
|
|
295
|
+
effectiveSh = Math.max(...kids.map((c) => (c.y || 0) + (c.height || 0)), h);
|
|
296
|
+
} catch {}
|
|
297
|
+
}
|
|
298
|
+
if (!effectiveSh || effectiveSh <= h + 1) {
|
|
299
|
+
setCanScrollUp(false);
|
|
300
|
+
setCanScrollDown(false);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
setCanScrollUp(st > 0);
|
|
304
|
+
setCanScrollDown(st + h < effectiveSh - 1);
|
|
305
|
+
} catch {
|
|
306
|
+
setCanScrollUp(false);
|
|
307
|
+
setCanScrollDown(false);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
const scrollAmount = () => Math.max(1, Math.floor((scrollRef?.height ?? popupHeight()) / 3));
|
|
57
311
|
createEffect(() => {
|
|
58
312
|
if (focused() === "note" && noteInputEl) {
|
|
59
313
|
try {
|
|
@@ -61,6 +315,23 @@ function QuizDialog(props) {
|
|
|
61
315
|
} catch {}
|
|
62
316
|
}
|
|
63
317
|
});
|
|
318
|
+
createEffect(() => {
|
|
319
|
+
phase();
|
|
320
|
+
feedback();
|
|
321
|
+
dims();
|
|
322
|
+
setTimeout(updateScrollIndicators, 40);
|
|
323
|
+
setTimeout(updateScrollIndicators, 200);
|
|
324
|
+
});
|
|
325
|
+
createEffect(() => {
|
|
326
|
+
note();
|
|
327
|
+
setTimeout(updateScrollIndicators, 40);
|
|
328
|
+
});
|
|
329
|
+
createEffect(() => {
|
|
330
|
+
if (phase() !== "feedback" && phase() !== "select")
|
|
331
|
+
return;
|
|
332
|
+
const id = setInterval(updateScrollIndicators, 200);
|
|
333
|
+
onCleanup(() => clearInterval(id));
|
|
334
|
+
});
|
|
64
335
|
const toggleOption = (idx) => {
|
|
65
336
|
const opt = options()[idx];
|
|
66
337
|
if (!opt)
|
|
@@ -234,15 +505,78 @@ function QuizDialog(props) {
|
|
|
234
505
|
note: note().trim() || undefined
|
|
235
506
|
});
|
|
236
507
|
};
|
|
508
|
+
const isPlainKey = (evt, want) => {
|
|
509
|
+
try {
|
|
510
|
+
const n = String(evt.name || evt.sequence || "").toLowerCase();
|
|
511
|
+
if (n !== want.toLowerCase())
|
|
512
|
+
return false;
|
|
513
|
+
if (evt.ctrl || evt.meta || evt.option || evt.alt)
|
|
514
|
+
return false;
|
|
515
|
+
return true;
|
|
516
|
+
} catch {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
};
|
|
237
520
|
useKeyboard((evt) => {
|
|
238
521
|
const key = evt.name || evt.sequence || evt.raw || "";
|
|
239
522
|
const seq = evt.sequence || "";
|
|
523
|
+
const lower = String(key || "").toLowerCase();
|
|
240
524
|
if (phase() === "classifying") {
|
|
241
525
|
prevent(evt);
|
|
242
526
|
return;
|
|
243
527
|
}
|
|
244
528
|
if (phase() === "feedback") {
|
|
245
|
-
if (
|
|
529
|
+
if (isPlainKey(evt, "d") || seq === "\x04") {
|
|
530
|
+
prevent(evt);
|
|
531
|
+
try {
|
|
532
|
+
scrollRef?.scrollBy(scrollAmount());
|
|
533
|
+
setTimeout(updateScrollIndicators, 30);
|
|
534
|
+
setTimeout(updateScrollIndicators, 120);
|
|
535
|
+
} catch {}
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
if (isPlainKey(evt, "u") || seq === "\x15") {
|
|
539
|
+
prevent(evt);
|
|
540
|
+
try {
|
|
541
|
+
scrollRef?.scrollBy(-scrollAmount());
|
|
542
|
+
setTimeout(updateScrollIndicators, 30);
|
|
543
|
+
setTimeout(updateScrollIndicators, 120);
|
|
544
|
+
} catch {}
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
if (isPlainKey(evt, "j") || seq === "\x1B[B") {
|
|
548
|
+
prevent(evt);
|
|
549
|
+
try {
|
|
550
|
+
scrollRef?.scrollBy(1);
|
|
551
|
+
setTimeout(updateScrollIndicators, 30);
|
|
552
|
+
} catch {}
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
if (isPlainKey(evt, "k") || seq === "\x1B[A") {
|
|
556
|
+
prevent(evt);
|
|
557
|
+
try {
|
|
558
|
+
scrollRef?.scrollBy(-1);
|
|
559
|
+
setTimeout(updateScrollIndicators, 30);
|
|
560
|
+
} catch {}
|
|
561
|
+
return;
|
|
562
|
+
}
|
|
563
|
+
if (key === "pageup" || seq === "\x1B[5~") {
|
|
564
|
+
prevent(evt);
|
|
565
|
+
try {
|
|
566
|
+
scrollRef?.scrollBy(-scrollAmount());
|
|
567
|
+
setTimeout(updateScrollIndicators, 30);
|
|
568
|
+
} catch {}
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
if (key === "pagedown" || seq === "\x1B[6~") {
|
|
572
|
+
prevent(evt);
|
|
573
|
+
try {
|
|
574
|
+
scrollRef?.scrollBy(scrollAmount());
|
|
575
|
+
setTimeout(updateScrollIndicators, 30);
|
|
576
|
+
} catch {}
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
if (lower === "enter" || seq === "\r" || lower === "escape" || lower === "esc") {
|
|
246
580
|
prevent(evt);
|
|
247
581
|
confirmFeedback();
|
|
248
582
|
}
|
|
@@ -266,6 +600,40 @@ function QuizDialog(props) {
|
|
|
266
600
|
}
|
|
267
601
|
return;
|
|
268
602
|
}
|
|
603
|
+
if (phase() === "select" && (isPlainKey(evt, "d") || seq === "\x04")) {
|
|
604
|
+
prevent(evt);
|
|
605
|
+
try {
|
|
606
|
+
scrollRef?.scrollBy(scrollAmount());
|
|
607
|
+
setTimeout(updateScrollIndicators, 30);
|
|
608
|
+
setTimeout(updateScrollIndicators, 120);
|
|
609
|
+
} catch {}
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
612
|
+
if (phase() === "select" && (isPlainKey(evt, "u") || seq === "\x15")) {
|
|
613
|
+
prevent(evt);
|
|
614
|
+
try {
|
|
615
|
+
scrollRef?.scrollBy(-scrollAmount());
|
|
616
|
+
setTimeout(updateScrollIndicators, 30);
|
|
617
|
+
setTimeout(updateScrollIndicators, 120);
|
|
618
|
+
} catch {}
|
|
619
|
+
return;
|
|
620
|
+
}
|
|
621
|
+
if (phase() === "select" && (lower === "pageup" || seq === "\x1B[5~")) {
|
|
622
|
+
prevent(evt);
|
|
623
|
+
try {
|
|
624
|
+
scrollRef?.scrollBy(-scrollAmount());
|
|
625
|
+
setTimeout(updateScrollIndicators, 30);
|
|
626
|
+
} catch {}
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
if (phase() === "select" && (lower === "pagedown" || seq === "\x1B[6~")) {
|
|
630
|
+
prevent(evt);
|
|
631
|
+
try {
|
|
632
|
+
scrollRef?.scrollBy(scrollAmount());
|
|
633
|
+
setTimeout(updateScrollIndicators, 30);
|
|
634
|
+
} catch {}
|
|
635
|
+
return;
|
|
636
|
+
}
|
|
269
637
|
const maxIdx = () => {
|
|
270
638
|
if (isMulti())
|
|
271
639
|
return submitIdx();
|
|
@@ -348,10 +716,10 @@ function QuizDialog(props) {
|
|
|
348
716
|
}
|
|
349
717
|
});
|
|
350
718
|
return (() => {
|
|
351
|
-
var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("text"), _el$4 = _$createElement("text"), _el$6 = _$createElement("scrollbox"), _el$7 = _$createElement("box"), _el$8 = _$createElement("
|
|
719
|
+
var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("text"), _el$4 = _$createElement("text"), _el$6 = _$createElement("scrollbox"), _el$7 = _$createElement("box"), _el$8 = _$createElement("markdown"), _el$59 = _$createElement("box"), _el$60 = _$createElement("text");
|
|
352
720
|
_$insertNode(_el$, _el$2);
|
|
353
721
|
_$insertNode(_el$, _el$6);
|
|
354
|
-
_$insertNode(_el$, _el$
|
|
722
|
+
_$insertNode(_el$, _el$59);
|
|
355
723
|
_$setProp(_el$, "flexDirection", "column");
|
|
356
724
|
_$setProp(_el$, "border", true);
|
|
357
725
|
_$setProp(_el$, "padding", 1);
|
|
@@ -372,6 +740,7 @@ function QuizDialog(props) {
|
|
|
372
740
|
_$insertNode(_el$4, _$createTextNode(`learn`));
|
|
373
741
|
_$setProp(_el$4, "dim", true);
|
|
374
742
|
_$insertNode(_el$6, _el$7);
|
|
743
|
+
_$use((el) => scrollRef = el, _el$6);
|
|
375
744
|
_$setProp(_el$6, "flexGrow", 1);
|
|
376
745
|
_$insertNode(_el$7, _el$8);
|
|
377
746
|
_$setProp(_el$7, "flexDirection", "column");
|
|
@@ -379,18 +748,25 @@ function QuizDialog(props) {
|
|
|
379
748
|
_$setProp(_el$7, "paddingLeft", 1);
|
|
380
749
|
_$setProp(_el$7, "paddingRight", 1);
|
|
381
750
|
_$setProp(_el$7, "paddingTop", 1);
|
|
382
|
-
_$setProp(_el$8, "bold", true);
|
|
383
|
-
_$setProp(_el$8, "wrapMode", "wrap");
|
|
384
|
-
_$insert(_el$8, () => props.request.question);
|
|
385
751
|
_$insert(_el$7, _$createComponent(Show, {
|
|
386
752
|
get when() {
|
|
387
753
|
return props.request.details;
|
|
388
754
|
},
|
|
389
755
|
get children() {
|
|
390
|
-
var _el$9 = _$createElement("
|
|
391
|
-
_$
|
|
392
|
-
|
|
393
|
-
|
|
756
|
+
var _el$9 = _$createElement("markdown");
|
|
757
|
+
_$effect((_p$) => {
|
|
758
|
+
var _v$ = syntax(), _v$2 = decodeQuizText(props.request.details), _v$3 = theme().textMuted, _v$4 = theme().backgroundPanel;
|
|
759
|
+
_v$ !== _p$.e && (_p$.e = _$setProp(_el$9, "syntaxStyle", _v$, _p$.e));
|
|
760
|
+
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$9, "content", _v$2, _p$.t));
|
|
761
|
+
_v$3 !== _p$.a && (_p$.a = _$setProp(_el$9, "fg", _v$3, _p$.a));
|
|
762
|
+
_v$4 !== _p$.o && (_p$.o = _$setProp(_el$9, "bg", _v$4, _p$.o));
|
|
763
|
+
return _p$;
|
|
764
|
+
}, {
|
|
765
|
+
e: undefined,
|
|
766
|
+
t: undefined,
|
|
767
|
+
a: undefined,
|
|
768
|
+
o: undefined
|
|
769
|
+
});
|
|
394
770
|
return _el$9;
|
|
395
771
|
}
|
|
396
772
|
}), null);
|
|
@@ -399,7 +775,7 @@ function QuizDialog(props) {
|
|
|
399
775
|
return phase() === "select";
|
|
400
776
|
},
|
|
401
777
|
get children() {
|
|
402
|
-
var _el$0 = _$createElement("box"), _el$11 = _$createElement("box"), _el$12 = _$createElement("box"), _el$13 = _$createElement("text"), _el$14 = _$createElement("box"), _el$15 = _$createElement("text"), _el$16 = _$createElement("box"), _el$17 = _$createElement("text"), _el$19 = _$createElement("box"), _el$20 = _$createElement("box"), _el$21 = _$createElement("text"), _el$25 = _$createElement("box"), _el$27 = _$createElement("box"), _el$28 = _$createElement("text");
|
|
778
|
+
var _el$0 = _$createElement("box"), _el$11 = _$createElement("box"), _el$12 = _$createElement("box"), _el$13 = _$createElement("text"), _el$14 = _$createElement("box"), _el$15 = _$createElement("text"), _el$16 = _$createElement("box"), _el$17 = _$createElement("text"), _el$19 = _$createElement("box"), _el$20 = _$createElement("box"), _el$21 = _$createElement("text"), _el$25 = _$createElement("box"), _el$27 = _$createElement("box"), _el$28 = _$createElement("text"), _el$29 = _$createElement("text");
|
|
403
779
|
_$insertNode(_el$0, _el$11);
|
|
404
780
|
_$insertNode(_el$0, _el$19);
|
|
405
781
|
_$insertNode(_el$0, _el$27);
|
|
@@ -416,39 +792,39 @@ function QuizDialog(props) {
|
|
|
416
792
|
const isFocused = () => focused() === "options" && optionIndex() === idx;
|
|
417
793
|
const isSelected = () => selected().has(`opt:${idx}`);
|
|
418
794
|
return (() => {
|
|
419
|
-
var _el$
|
|
795
|
+
var _el$61 = _$createElement("box"), _el$62 = _$createElement("box"), _el$63 = _$createElement("text"), _el$64 = _$createElement("box"), _el$65 = _$createElement("text"), _el$66 = _$createElement("box"), _el$67 = _$createElement("text"), _el$68 = _$createTextNode(`. `);
|
|
796
|
+
_$insertNode(_el$61, _el$62);
|
|
797
|
+
_$insertNode(_el$61, _el$64);
|
|
798
|
+
_$insertNode(_el$61, _el$66);
|
|
799
|
+
_$setProp(_el$61, "flexDirection", "row");
|
|
800
|
+
_$setProp(_el$61, "alignItems", "flexStart");
|
|
801
|
+
_$setProp(_el$61, "gap", 1);
|
|
802
|
+
_$setProp(_el$61, "paddingLeft", 1);
|
|
803
|
+
_$setProp(_el$61, "paddingRight", 1);
|
|
804
|
+
_$insertNode(_el$62, _el$63);
|
|
805
|
+
_$setProp(_el$62, "width", 2);
|
|
806
|
+
_$setProp(_el$62, "alignItems", "center");
|
|
807
|
+
_$insert(_el$63, () => isFocused() ? "\u25B8" : " ");
|
|
420
808
|
_$insertNode(_el$64, _el$65);
|
|
421
|
-
_$
|
|
422
|
-
_$
|
|
423
|
-
_$
|
|
424
|
-
_$setProp(_el$64, "alignItems", "flexStart");
|
|
425
|
-
_$setProp(_el$64, "gap", 1);
|
|
426
|
-
_$setProp(_el$64, "paddingLeft", 1);
|
|
427
|
-
_$setProp(_el$64, "paddingRight", 1);
|
|
428
|
-
_$insertNode(_el$65, _el$66);
|
|
429
|
-
_$setProp(_el$65, "width", 2);
|
|
430
|
-
_$setProp(_el$65, "alignItems", "center");
|
|
431
|
-
_$insert(_el$66, () => isFocused() ? "\u25B8" : " ");
|
|
432
|
-
_$insertNode(_el$67, _el$68);
|
|
433
|
-
_$setProp(_el$67, "width", 2);
|
|
434
|
-
_$setProp(_el$67, "alignItems", "center");
|
|
435
|
-
_$insert(_el$68, (() => {
|
|
809
|
+
_$setProp(_el$64, "width", 2);
|
|
810
|
+
_$setProp(_el$64, "alignItems", "center");
|
|
811
|
+
_$insert(_el$65, (() => {
|
|
436
812
|
var _c$4 = _$memo(() => !!isMulti());
|
|
437
813
|
return () => _c$4() ? isSelected() ? "\u2611" : "\u2610" : isSelected() ? "\u2B22" : "\u25CB";
|
|
438
814
|
})());
|
|
439
|
-
_$insertNode(_el$
|
|
440
|
-
_$setProp(_el$
|
|
441
|
-
_$insertNode(_el$
|
|
442
|
-
_$setProp(_el$
|
|
443
|
-
_$insert(_el$
|
|
444
|
-
_$insert(_el$
|
|
815
|
+
_$insertNode(_el$66, _el$67);
|
|
816
|
+
_$setProp(_el$66, "flexGrow", 1);
|
|
817
|
+
_$insertNode(_el$67, _el$68);
|
|
818
|
+
_$setProp(_el$67, "wrapMode", "wrap");
|
|
819
|
+
_$insert(_el$67, idx + 1, _el$68);
|
|
820
|
+
_$insert(_el$67, () => opt.label, null);
|
|
445
821
|
_$effect((_p$) => {
|
|
446
|
-
var _v$
|
|
447
|
-
_v$
|
|
448
|
-
_v$
|
|
449
|
-
_v$
|
|
450
|
-
_v$
|
|
451
|
-
_v$
|
|
822
|
+
var _v$50 = isFocused() ? theme().backgroundElement : undefined, _v$51 = isFocused() ? theme().accent : theme().textMuted, _v$52 = isMulti() ? isSelected() ? theme().success : theme().textMuted : isSelected() ? theme().accent : theme().textMuted, _v$53 = isSelected() ? theme().text : theme().textMuted, _v$54 = isFocused();
|
|
823
|
+
_v$50 !== _p$.e && (_p$.e = _$setProp(_el$61, "backgroundColor", _v$50, _p$.e));
|
|
824
|
+
_v$51 !== _p$.t && (_p$.t = _$setProp(_el$63, "fg", _v$51, _p$.t));
|
|
825
|
+
_v$52 !== _p$.a && (_p$.a = _$setProp(_el$65, "fg", _v$52, _p$.a));
|
|
826
|
+
_v$53 !== _p$.o && (_p$.o = _$setProp(_el$67, "fg", _v$53, _p$.o));
|
|
827
|
+
_v$54 !== _p$.i && (_p$.i = _$setProp(_el$67, "bold", _v$54, _p$.i));
|
|
452
828
|
return _p$;
|
|
453
829
|
}, {
|
|
454
830
|
e: undefined,
|
|
@@ -457,7 +833,7 @@ function QuizDialog(props) {
|
|
|
457
833
|
o: undefined,
|
|
458
834
|
i: undefined
|
|
459
835
|
});
|
|
460
|
-
return _el$
|
|
836
|
+
return _el$61;
|
|
461
837
|
})();
|
|
462
838
|
}
|
|
463
839
|
}), _el$11);
|
|
@@ -525,11 +901,11 @@ function QuizDialog(props) {
|
|
|
525
901
|
},
|
|
526
902
|
get fallback() {
|
|
527
903
|
return (() => {
|
|
528
|
-
var _el$
|
|
529
|
-
_$setProp(_el$
|
|
530
|
-
_$insert(_el$
|
|
531
|
-
_$effect((_$p) => _$setProp(_el$
|
|
532
|
-
return _el$
|
|
904
|
+
var _el$69 = _$createElement("text");
|
|
905
|
+
_$setProp(_el$69, "wrapMode", "wrap");
|
|
906
|
+
_$insert(_el$69, () => note() || "Tab to edit \xB7 share what you were thinking");
|
|
907
|
+
_$effect((_$p) => _$setProp(_el$69, "fg", note() ? theme().text : theme().textMuted, _$p));
|
|
908
|
+
return _el$69;
|
|
533
909
|
})();
|
|
534
910
|
},
|
|
535
911
|
get children() {
|
|
@@ -548,64 +924,42 @@ function QuizDialog(props) {
|
|
|
548
924
|
}
|
|
549
925
|
}));
|
|
550
926
|
_$insertNode(_el$27, _el$28);
|
|
927
|
+
_$insertNode(_el$27, _el$29);
|
|
551
928
|
_$setProp(_el$27, "flexDirection", "row");
|
|
552
929
|
_$setProp(_el$27, "justifyContent", "space-between");
|
|
553
930
|
_$setProp(_el$27, "paddingTop", 1);
|
|
554
|
-
_$insert(_el$28, () =>
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
get children() {
|
|
560
|
-
var _el$29 = _$createElement("text"), _el$30 = _$createTextNode(` `);
|
|
561
|
-
_$insertNode(_el$29, _el$30);
|
|
562
|
-
_$insert(_el$29, (() => {
|
|
563
|
-
var _c$2 = _$memo(() => selected().size > 0);
|
|
564
|
-
return () => _c$2() ? `${selected().size} selected` : note().trim() ? "note \u2192 classify" : "0 selected";
|
|
565
|
-
})(), _el$30);
|
|
566
|
-
_$insert(_el$29, () => dontKnow() ? "\xB7 I don't know" : "", null);
|
|
567
|
-
_$effect((_$p) => _$setProp(_el$29, "fg", selected().size > 0 || dontKnow() ? theme().success : note().trim() ? theme().warning : theme().warning, _$p));
|
|
568
|
-
return _el$29;
|
|
569
|
-
}
|
|
570
|
-
}), null);
|
|
571
|
-
_$insert(_el$27, _$createComponent(Show, {
|
|
572
|
-
get when() {
|
|
573
|
-
return _$memo(() => !!(!isMulti() && note().trim() && !selected().size))() && !dontKnow();
|
|
574
|
-
},
|
|
575
|
-
get children() {
|
|
576
|
-
var _el$31 = _$createElement("text");
|
|
577
|
-
_$insertNode(_el$31, _$createTextNode(`note \u2192 classify on Enter`));
|
|
578
|
-
_$effect((_$p) => _$setProp(_el$31, "fg", theme().warning, _$p));
|
|
579
|
-
return _el$31;
|
|
580
|
-
}
|
|
581
|
-
}), null);
|
|
931
|
+
_$insert(_el$28, (() => {
|
|
932
|
+
var _c$2 = _$memo(() => !!isMulti());
|
|
933
|
+
return () => _c$2() ? `${selected().size} selected${dontKnow() ? " \xB7 I don't know" : ""}` : _$memo(() => !!(note().trim() && !selected().size && !dontKnow()))() ? "note \u2192 classify" : dontKnow() ? "I don't know" : "";
|
|
934
|
+
})());
|
|
935
|
+
_$insert(_el$29, () => focused() === "note" ? "Tab/Esc back" : "");
|
|
582
936
|
_$insert(_el$0, _$createComponent(Show, {
|
|
583
937
|
get when() {
|
|
584
938
|
return isMulti();
|
|
585
939
|
},
|
|
586
940
|
get children() {
|
|
587
|
-
var _el$
|
|
941
|
+
var _el$30 = _$createElement("box"), _el$31 = _$createElement("box"), _el$32 = _$createElement("text"), _el$33 = _$createElement("text"), _el$34 = _$createTextNode(`\u21B3 Submit`);
|
|
942
|
+
_$insertNode(_el$30, _el$31);
|
|
943
|
+
_$setProp(_el$30, "justifyContent", "center");
|
|
944
|
+
_$setProp(_el$30, "paddingTop", 1);
|
|
945
|
+
_$insertNode(_el$31, _el$32);
|
|
946
|
+
_$insertNode(_el$31, _el$33);
|
|
947
|
+
_$setProp(_el$31, "flexDirection", "row");
|
|
948
|
+
_$setProp(_el$31, "alignItems", "center");
|
|
949
|
+
_$setProp(_el$31, "gap", 1);
|
|
950
|
+
_$setProp(_el$31, "border", true);
|
|
951
|
+
_$setProp(_el$31, "paddingLeft", 2);
|
|
952
|
+
_$setProp(_el$31, "paddingRight", 2);
|
|
953
|
+
_$insert(_el$32, () => focused() === "options" && optionIndex() === submitIdx() ? "\u25B8" : " ");
|
|
588
954
|
_$insertNode(_el$33, _el$34);
|
|
589
|
-
_$setProp(_el$33, "
|
|
590
|
-
_$
|
|
591
|
-
_$insertNode(_el$34, _el$35);
|
|
592
|
-
_$insertNode(_el$34, _el$36);
|
|
593
|
-
_$setProp(_el$34, "flexDirection", "row");
|
|
594
|
-
_$setProp(_el$34, "alignItems", "center");
|
|
595
|
-
_$setProp(_el$34, "gap", 1);
|
|
596
|
-
_$setProp(_el$34, "border", true);
|
|
597
|
-
_$setProp(_el$34, "paddingLeft", 2);
|
|
598
|
-
_$setProp(_el$34, "paddingRight", 2);
|
|
599
|
-
_$insert(_el$35, () => focused() === "options" && optionIndex() === submitIdx() ? "\u25B8" : " ");
|
|
600
|
-
_$insertNode(_el$36, _el$37);
|
|
601
|
-
_$setProp(_el$36, "bold", true);
|
|
602
|
-
_$insert(_el$36, () => note().trim() && !selected().size && !dontKnow() ? " note" : "", null);
|
|
955
|
+
_$setProp(_el$33, "bold", true);
|
|
956
|
+
_$insert(_el$33, () => note().trim() && !selected().size && !dontKnow() ? " note" : "", null);
|
|
603
957
|
_$effect((_p$) => {
|
|
604
|
-
var _v$ = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : selected().size > 0 || dontKnow() || note().trim() ? theme().success : theme().borderSubtle, _v$
|
|
605
|
-
_v$ !== _p$.e && (_p$.e = _$setProp(_el$
|
|
606
|
-
_v$
|
|
607
|
-
_v$
|
|
608
|
-
_v$
|
|
958
|
+
var _v$5 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : selected().size > 0 || dontKnow() || note().trim() ? theme().success : theme().borderSubtle, _v$6 = focused() === "options" && optionIndex() === submitIdx() ? theme().backgroundElement : selected().size > 0 || dontKnow() || note().trim() ? theme().success : theme().background, _v$7 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : selected().size > 0 || dontKnow() || note().trim() ? theme().background : theme().textMuted, _v$8 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : selected().size > 0 || dontKnow() || note().trim() ? theme().background : theme().textMuted;
|
|
959
|
+
_v$5 !== _p$.e && (_p$.e = _$setProp(_el$31, "borderColor", _v$5, _p$.e));
|
|
960
|
+
_v$6 !== _p$.t && (_p$.t = _$setProp(_el$31, "backgroundColor", _v$6, _p$.t));
|
|
961
|
+
_v$7 !== _p$.a && (_p$.a = _$setProp(_el$32, "fg", _v$7, _p$.a));
|
|
962
|
+
_v$8 !== _p$.o && (_p$.o = _$setProp(_el$33, "fg", _v$8, _p$.o));
|
|
609
963
|
return _p$;
|
|
610
964
|
}, {
|
|
611
965
|
e: undefined,
|
|
@@ -613,7 +967,7 @@ function QuizDialog(props) {
|
|
|
613
967
|
a: undefined,
|
|
614
968
|
o: undefined
|
|
615
969
|
});
|
|
616
|
-
return _el$
|
|
970
|
+
return _el$30;
|
|
617
971
|
}
|
|
618
972
|
}), null);
|
|
619
973
|
_$insert(_el$0, _$createComponent(Show, {
|
|
@@ -621,46 +975,47 @@ function QuizDialog(props) {
|
|
|
621
975
|
return _$memo(() => !!(!isMulti() && note().trim() && !selected().size))() && !dontKnow();
|
|
622
976
|
},
|
|
623
977
|
get children() {
|
|
624
|
-
var _el$
|
|
625
|
-
_$insertNode(_el$
|
|
626
|
-
_$setProp(_el$
|
|
627
|
-
_$setProp(_el$
|
|
628
|
-
_$insertNode(_el$
|
|
629
|
-
_$setProp(_el$
|
|
630
|
-
_$setProp(_el$
|
|
631
|
-
_$setProp(_el$
|
|
632
|
-
_$setProp(_el$
|
|
633
|
-
_$setProp(_el$
|
|
634
|
-
_$setProp(_el$
|
|
635
|
-
_$insertNode(_el$
|
|
636
|
-
_$setProp(_el$
|
|
978
|
+
var _el$35 = _$createElement("box"), _el$36 = _$createElement("box"), _el$37 = _$createElement("text");
|
|
979
|
+
_$insertNode(_el$35, _el$36);
|
|
980
|
+
_$setProp(_el$35, "justifyContent", "center");
|
|
981
|
+
_$setProp(_el$35, "paddingTop", 1);
|
|
982
|
+
_$insertNode(_el$36, _el$37);
|
|
983
|
+
_$setProp(_el$36, "flexDirection", "row");
|
|
984
|
+
_$setProp(_el$36, "alignItems", "center");
|
|
985
|
+
_$setProp(_el$36, "gap", 1);
|
|
986
|
+
_$setProp(_el$36, "border", true);
|
|
987
|
+
_$setProp(_el$36, "paddingLeft", 2);
|
|
988
|
+
_$setProp(_el$36, "paddingRight", 2);
|
|
989
|
+
_$insertNode(_el$37, _$createTextNode(`\u21B3 Submit note \u2192 classify`));
|
|
990
|
+
_$setProp(_el$37, "bold", true);
|
|
637
991
|
_$effect((_p$) => {
|
|
638
|
-
var _v$
|
|
639
|
-
_v$
|
|
640
|
-
_v$
|
|
641
|
-
_v$
|
|
992
|
+
var _v$9 = focused() === "options" && optionIndex() === dontKnowIdx() + 1 ? theme().accent : theme().success, _v$0 = focused() === "options" && optionIndex() === dontKnowIdx() + 1 ? theme().backgroundElement : theme().success, _v$1 = focused() === "options" && optionIndex() === dontKnowIdx() + 1 ? theme().accent : theme().background;
|
|
993
|
+
_v$9 !== _p$.e && (_p$.e = _$setProp(_el$36, "borderColor", _v$9, _p$.e));
|
|
994
|
+
_v$0 !== _p$.t && (_p$.t = _$setProp(_el$36, "backgroundColor", _v$0, _p$.t));
|
|
995
|
+
_v$1 !== _p$.a && (_p$.a = _$setProp(_el$37, "fg", _v$1, _p$.a));
|
|
642
996
|
return _p$;
|
|
643
997
|
}, {
|
|
644
998
|
e: undefined,
|
|
645
999
|
t: undefined,
|
|
646
1000
|
a: undefined
|
|
647
1001
|
});
|
|
648
|
-
return _el$
|
|
1002
|
+
return _el$35;
|
|
649
1003
|
}
|
|
650
1004
|
}), null);
|
|
651
1005
|
_$effect((_p$) => {
|
|
652
|
-
var _v$
|
|
653
|
-
_v$
|
|
654
|
-
_v$
|
|
655
|
-
_v$
|
|
656
|
-
_v$
|
|
657
|
-
_v$
|
|
658
|
-
_v$
|
|
659
|
-
_v$
|
|
660
|
-
_v$
|
|
661
|
-
_v$
|
|
662
|
-
_v$
|
|
663
|
-
_v$
|
|
1006
|
+
var _v$10 = theme().borderSubtle, _v$11 = theme().background, _v$12 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().backgroundElement : undefined, _v$13 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().accent : theme().textMuted, _v$14 = dontKnow() ? theme().warning : theme().textMuted, _v$15 = dontKnow() ? theme().warning : theme().textMuted, _v$16 = focused() === "note" ? theme().accent : theme().textMuted, _v$17 = focused() === "note", _v$18 = focused() === "note" ? theme().accent : theme().borderSubtle, _v$19 = theme().backgroundElement, _v$20 = theme().textMuted, _v$21 = theme().textMuted;
|
|
1007
|
+
_v$10 !== _p$.e && (_p$.e = _$setProp(_el$0, "borderColor", _v$10, _p$.e));
|
|
1008
|
+
_v$11 !== _p$.t && (_p$.t = _$setProp(_el$0, "backgroundColor", _v$11, _p$.t));
|
|
1009
|
+
_v$12 !== _p$.a && (_p$.a = _$setProp(_el$11, "backgroundColor", _v$12, _p$.a));
|
|
1010
|
+
_v$13 !== _p$.o && (_p$.o = _$setProp(_el$13, "fg", _v$13, _p$.o));
|
|
1011
|
+
_v$14 !== _p$.i && (_p$.i = _$setProp(_el$15, "fg", _v$14, _p$.i));
|
|
1012
|
+
_v$15 !== _p$.n && (_p$.n = _$setProp(_el$17, "fg", _v$15, _p$.n));
|
|
1013
|
+
_v$16 !== _p$.s && (_p$.s = _$setProp(_el$21, "fg", _v$16, _p$.s));
|
|
1014
|
+
_v$17 !== _p$.h && (_p$.h = _$setProp(_el$21, "bold", _v$17, _p$.h));
|
|
1015
|
+
_v$18 !== _p$.r && (_p$.r = _$setProp(_el$25, "borderColor", _v$18, _p$.r));
|
|
1016
|
+
_v$19 !== _p$.d && (_p$.d = _$setProp(_el$25, "backgroundColor", _v$19, _p$.d));
|
|
1017
|
+
_v$20 !== _p$.l && (_p$.l = _$setProp(_el$28, "fg", _v$20, _p$.l));
|
|
1018
|
+
_v$21 !== _p$.u && (_p$.u = _$setProp(_el$29, "fg", _v$21, _p$.u));
|
|
664
1019
|
return _p$;
|
|
665
1020
|
}, {
|
|
666
1021
|
e: undefined,
|
|
@@ -673,7 +1028,8 @@ function QuizDialog(props) {
|
|
|
673
1028
|
h: undefined,
|
|
674
1029
|
r: undefined,
|
|
675
1030
|
d: undefined,
|
|
676
|
-
l: undefined
|
|
1031
|
+
l: undefined,
|
|
1032
|
+
u: undefined
|
|
677
1033
|
});
|
|
678
1034
|
return _el$0;
|
|
679
1035
|
}
|
|
@@ -683,29 +1039,29 @@ function QuizDialog(props) {
|
|
|
683
1039
|
return phase() === "classifying";
|
|
684
1040
|
},
|
|
685
1041
|
get children() {
|
|
686
|
-
var _el$
|
|
1042
|
+
var _el$39 = _$createElement("box"), _el$40 = _$createElement("text"), _el$42 = _$createElement("text"), _el$43 = _$createTextNode(`"`), _el$44 = _$createTextNode(`"`), _el$45 = _$createElement("text");
|
|
1043
|
+
_$insertNode(_el$39, _el$40);
|
|
1044
|
+
_$insertNode(_el$39, _el$42);
|
|
1045
|
+
_$insertNode(_el$39, _el$45);
|
|
1046
|
+
_$setProp(_el$39, "flexDirection", "column");
|
|
1047
|
+
_$setProp(_el$39, "gap", 1);
|
|
1048
|
+
_$setProp(_el$39, "padding", 1);
|
|
1049
|
+
_$setProp(_el$39, "border", true);
|
|
1050
|
+
_$setProp(_el$39, "alignItems", "center");
|
|
1051
|
+
_$insertNode(_el$40, _$createTextNode(`\u25D0 Classifying your note...`));
|
|
1052
|
+
_$setProp(_el$40, "bold", true);
|
|
687
1053
|
_$insertNode(_el$42, _el$43);
|
|
688
|
-
_$insertNode(_el$42, _el$
|
|
689
|
-
_$
|
|
690
|
-
_$
|
|
691
|
-
_$
|
|
692
|
-
_$setProp(_el$42, "padding", 1);
|
|
693
|
-
_$setProp(_el$42, "border", true);
|
|
694
|
-
_$setProp(_el$42, "alignItems", "center");
|
|
695
|
-
_$insertNode(_el$43, _$createTextNode(`\u25D0 Classifying your note...`));
|
|
696
|
-
_$setProp(_el$43, "bold", true);
|
|
697
|
-
_$insertNode(_el$45, _el$46);
|
|
698
|
-
_$insertNode(_el$45, _el$47);
|
|
699
|
-
_$setProp(_el$45, "wrapMode", "wrap");
|
|
700
|
-
_$insert(_el$45, note, _el$47);
|
|
701
|
-
_$insertNode(_el$48, _$createTextNode(`Mapping to options \u2014 please wait`));
|
|
1054
|
+
_$insertNode(_el$42, _el$44);
|
|
1055
|
+
_$setProp(_el$42, "wrapMode", "wrap");
|
|
1056
|
+
_$insert(_el$42, note, _el$44);
|
|
1057
|
+
_$insertNode(_el$45, _$createTextNode(`Mapping to options \u2014 please wait`));
|
|
702
1058
|
_$effect((_p$) => {
|
|
703
|
-
var _v$
|
|
704
|
-
_v$
|
|
705
|
-
_v$
|
|
706
|
-
_v$
|
|
707
|
-
_v$
|
|
708
|
-
_v$
|
|
1059
|
+
var _v$22 = theme().accent, _v$23 = theme().background, _v$24 = theme().accent, _v$25 = theme().textMuted, _v$26 = theme().textMuted;
|
|
1060
|
+
_v$22 !== _p$.e && (_p$.e = _$setProp(_el$39, "borderColor", _v$22, _p$.e));
|
|
1061
|
+
_v$23 !== _p$.t && (_p$.t = _$setProp(_el$39, "backgroundColor", _v$23, _p$.t));
|
|
1062
|
+
_v$24 !== _p$.a && (_p$.a = _$setProp(_el$40, "fg", _v$24, _p$.a));
|
|
1063
|
+
_v$25 !== _p$.o && (_p$.o = _$setProp(_el$42, "fg", _v$25, _p$.o));
|
|
1064
|
+
_v$26 !== _p$.i && (_p$.i = _$setProp(_el$45, "fg", _v$26, _p$.i));
|
|
709
1065
|
return _p$;
|
|
710
1066
|
}, {
|
|
711
1067
|
e: undefined,
|
|
@@ -714,7 +1070,7 @@ function QuizDialog(props) {
|
|
|
714
1070
|
o: undefined,
|
|
715
1071
|
i: undefined
|
|
716
1072
|
});
|
|
717
|
-
return _el$
|
|
1073
|
+
return _el$39;
|
|
718
1074
|
}
|
|
719
1075
|
}), null);
|
|
720
1076
|
_$insert(_el$6, _$createComponent(Show, {
|
|
@@ -722,15 +1078,15 @@ function QuizDialog(props) {
|
|
|
722
1078
|
return phase() === "feedback";
|
|
723
1079
|
},
|
|
724
1080
|
get children() {
|
|
725
|
-
var _el$
|
|
726
|
-
_$insertNode(_el$
|
|
727
|
-
_$insertNode(_el$
|
|
728
|
-
_$insertNode(_el$
|
|
729
|
-
_$setProp(_el$
|
|
730
|
-
_$setProp(_el$
|
|
731
|
-
_$setProp(_el$
|
|
732
|
-
_$setProp(_el$
|
|
733
|
-
_$insert(_el$
|
|
1081
|
+
var _el$47 = _$createElement("box"), _el$48 = _$createElement("box"), _el$49 = _$createElement("text"), _el$53 = _$createElement("text"), _el$54 = _$createTextNode(`Correct: `), _el$57 = _$createElement("box"), _el$58 = _$createElement("markdown");
|
|
1082
|
+
_$insertNode(_el$47, _el$48);
|
|
1083
|
+
_$insertNode(_el$47, _el$53);
|
|
1084
|
+
_$insertNode(_el$47, _el$57);
|
|
1085
|
+
_$setProp(_el$47, "flexDirection", "column");
|
|
1086
|
+
_$setProp(_el$47, "gap", 1);
|
|
1087
|
+
_$setProp(_el$47, "padding", 1);
|
|
1088
|
+
_$setProp(_el$47, "border", true);
|
|
1089
|
+
_$insert(_el$47, _$createComponent(For, {
|
|
734
1090
|
get each() {
|
|
735
1091
|
return options();
|
|
736
1092
|
},
|
|
@@ -759,85 +1115,86 @@ function QuizDialog(props) {
|
|
|
759
1115
|
bg = theme().warning;
|
|
760
1116
|
}
|
|
761
1117
|
return (() => {
|
|
762
|
-
var _el$
|
|
1118
|
+
var _el$70 = _$createElement("box"), _el$71 = _$createElement("box"), _el$72 = _$createElement("text"), _el$73 = _$createElement("box"), _el$74 = _$createElement("text"), _el$75 = _$createTextNode(`. `);
|
|
1119
|
+
_$insertNode(_el$70, _el$71);
|
|
1120
|
+
_$insertNode(_el$70, _el$73);
|
|
1121
|
+
_$setProp(_el$70, "flexDirection", "row");
|
|
1122
|
+
_$setProp(_el$70, "alignItems", "flexStart");
|
|
1123
|
+
_$setProp(_el$70, "gap", 1);
|
|
1124
|
+
_$setProp(_el$70, "paddingLeft", 1);
|
|
1125
|
+
_$setProp(_el$70, "backgroundColor", bg);
|
|
1126
|
+
_$insertNode(_el$71, _el$72);
|
|
1127
|
+
_$setProp(_el$71, "width", 2);
|
|
1128
|
+
_$setProp(_el$71, "alignItems", "center");
|
|
1129
|
+
_$setProp(_el$72, "fg", fg);
|
|
1130
|
+
_$setProp(_el$72, "bold", true);
|
|
1131
|
+
_$insert(_el$72, icon);
|
|
763
1132
|
_$insertNode(_el$73, _el$74);
|
|
764
|
-
_$
|
|
765
|
-
_$setProp(_el$73, "flexDirection", "row");
|
|
766
|
-
_$setProp(_el$73, "alignItems", "flexStart");
|
|
767
|
-
_$setProp(_el$73, "gap", 1);
|
|
768
|
-
_$setProp(_el$73, "paddingLeft", 1);
|
|
769
|
-
_$setProp(_el$73, "backgroundColor", bg);
|
|
1133
|
+
_$setProp(_el$73, "flexGrow", 1);
|
|
770
1134
|
_$insertNode(_el$74, _el$75);
|
|
771
|
-
_$setProp(_el$74, "
|
|
772
|
-
_$setProp(_el$74, "
|
|
773
|
-
_$
|
|
774
|
-
_$
|
|
775
|
-
|
|
776
|
-
_$insertNode(_el$76, _el$77);
|
|
777
|
-
_$setProp(_el$76, "flexGrow", 1);
|
|
778
|
-
_$insertNode(_el$77, _el$78);
|
|
779
|
-
_$setProp(_el$77, "fg", fg);
|
|
780
|
-
_$setProp(_el$77, "wrapMode", "wrap");
|
|
781
|
-
_$insert(_el$77, idx, _el$78);
|
|
782
|
-
_$insert(_el$77, () => opt.label, null);
|
|
783
|
-
return _el$73;
|
|
1135
|
+
_$setProp(_el$74, "fg", fg);
|
|
1136
|
+
_$setProp(_el$74, "wrapMode", "wrap");
|
|
1137
|
+
_$insert(_el$74, idx, _el$75);
|
|
1138
|
+
_$insert(_el$74, () => opt.label, null);
|
|
1139
|
+
return _el$70;
|
|
784
1140
|
})();
|
|
785
1141
|
}
|
|
786
|
-
}), _el$
|
|
787
|
-
_$insertNode(_el$
|
|
788
|
-
_$setProp(_el$
|
|
789
|
-
_$insert(_el$
|
|
790
|
-
_$insert(_el$
|
|
1142
|
+
}), _el$48);
|
|
1143
|
+
_$insertNode(_el$48, _el$49);
|
|
1144
|
+
_$setProp(_el$48, "height", 1);
|
|
1145
|
+
_$insert(_el$49, () => "\u2500".repeat(Math.max(20, popupWidth() - 12)));
|
|
1146
|
+
_$insert(_el$47, _$createComponent(Show, {
|
|
791
1147
|
get when() {
|
|
792
1148
|
return dontKnow();
|
|
793
1149
|
},
|
|
794
1150
|
get children() {
|
|
795
|
-
var _el$
|
|
796
|
-
_$insertNode(_el$
|
|
797
|
-
_$effect((_$p) => _$setProp(_el$
|
|
798
|
-
return _el$
|
|
1151
|
+
var _el$50 = _$createElement("text");
|
|
1152
|
+
_$insertNode(_el$50, _$createTextNode(`\u25CF You said: I don't know \u2014 genuine gap`));
|
|
1153
|
+
_$effect((_$p) => _$setProp(_el$50, "fg", theme().warning, _$p));
|
|
1154
|
+
return _el$50;
|
|
799
1155
|
}
|
|
800
|
-
}), _el$
|
|
801
|
-
_$insert(_el$
|
|
1156
|
+
}), _el$53);
|
|
1157
|
+
_$insert(_el$47, _$createComponent(Show, {
|
|
802
1158
|
get when() {
|
|
803
1159
|
return !dontKnow();
|
|
804
1160
|
},
|
|
805
1161
|
get children() {
|
|
806
|
-
var _el$
|
|
807
|
-
_$setProp(_el$
|
|
808
|
-
_$insert(_el$
|
|
809
|
-
_$effect((_$p) => _$setProp(_el$
|
|
810
|
-
return _el$
|
|
1162
|
+
var _el$52 = _$createElement("text");
|
|
1163
|
+
_$setProp(_el$52, "bold", true);
|
|
1164
|
+
_$insert(_el$52, () => feedback()?.correct ? "\u2713 Correct! Well located." : "\u2717 Incorrect \u2014 nice try, let's fix the edge.");
|
|
1165
|
+
_$effect((_$p) => _$setProp(_el$52, "fg", feedback()?.correct ? theme().success : theme().error, _$p));
|
|
1166
|
+
return _el$52;
|
|
811
1167
|
}
|
|
812
|
-
}), _el$
|
|
813
|
-
_$insertNode(_el$
|
|
814
|
-
_$insert(_el$
|
|
815
|
-
_$insert(_el$
|
|
1168
|
+
}), _el$53);
|
|
1169
|
+
_$insertNode(_el$53, _el$54);
|
|
1170
|
+
_$insert(_el$53, () => props.request.correctIndices.map((i) => `${i}. ${options()[i - 1]?.label}`).join(", "), null);
|
|
1171
|
+
_$insert(_el$47, _$createComponent(Show, {
|
|
816
1172
|
get when() {
|
|
817
1173
|
return note();
|
|
818
1174
|
},
|
|
819
1175
|
get children() {
|
|
820
|
-
var _el$
|
|
821
|
-
_$insertNode(_el$
|
|
822
|
-
_$insert(_el$
|
|
823
|
-
_$effect((_$p) => _$setProp(_el$
|
|
824
|
-
return _el$
|
|
1176
|
+
var _el$55 = _$createElement("text"), _el$56 = _$createTextNode(`Your note: `);
|
|
1177
|
+
_$insertNode(_el$55, _el$56);
|
|
1178
|
+
_$insert(_el$55, note, null);
|
|
1179
|
+
_$effect((_$p) => _$setProp(_el$55, "fg", theme().textMuted, _$p));
|
|
1180
|
+
return _el$55;
|
|
825
1181
|
}
|
|
826
|
-
}), _el$
|
|
827
|
-
_$insertNode(_el$
|
|
828
|
-
_$setProp(_el$
|
|
829
|
-
_$setProp(_el$
|
|
830
|
-
_$setProp(_el$61, "wrapMode", "wrap");
|
|
831
|
-
_$insert(_el$61, () => props.request.explanation);
|
|
1182
|
+
}), _el$57);
|
|
1183
|
+
_$insertNode(_el$57, _el$58);
|
|
1184
|
+
_$setProp(_el$57, "border", true);
|
|
1185
|
+
_$setProp(_el$57, "padding", 1);
|
|
832
1186
|
_$effect((_p$) => {
|
|
833
|
-
var _v$
|
|
834
|
-
_v$
|
|
835
|
-
_v$
|
|
836
|
-
_v$
|
|
837
|
-
_v$
|
|
838
|
-
_v$
|
|
839
|
-
_v$
|
|
840
|
-
_v$
|
|
1187
|
+
var _v$27 = feedback()?.correct ? theme().success : theme().error, _v$28 = theme().background, _v$29 = theme().borderSubtle, _v$30 = theme().textMuted, _v$31 = theme().borderSubtle, _v$32 = theme().backgroundPanel, _v$33 = syntax(), _v$34 = decodeQuizText(props.request.explanation), _v$35 = theme().text, _v$36 = theme().backgroundPanel;
|
|
1188
|
+
_v$27 !== _p$.e && (_p$.e = _$setProp(_el$47, "borderColor", _v$27, _p$.e));
|
|
1189
|
+
_v$28 !== _p$.t && (_p$.t = _$setProp(_el$47, "backgroundColor", _v$28, _p$.t));
|
|
1190
|
+
_v$29 !== _p$.a && (_p$.a = _$setProp(_el$49, "fg", _v$29, _p$.a));
|
|
1191
|
+
_v$30 !== _p$.o && (_p$.o = _$setProp(_el$53, "fg", _v$30, _p$.o));
|
|
1192
|
+
_v$31 !== _p$.i && (_p$.i = _$setProp(_el$57, "borderColor", _v$31, _p$.i));
|
|
1193
|
+
_v$32 !== _p$.n && (_p$.n = _$setProp(_el$57, "backgroundColor", _v$32, _p$.n));
|
|
1194
|
+
_v$33 !== _p$.s && (_p$.s = _$setProp(_el$58, "syntaxStyle", _v$33, _p$.s));
|
|
1195
|
+
_v$34 !== _p$.h && (_p$.h = _$setProp(_el$58, "content", _v$34, _p$.h));
|
|
1196
|
+
_v$35 !== _p$.r && (_p$.r = _$setProp(_el$58, "fg", _v$35, _p$.r));
|
|
1197
|
+
_v$36 !== _p$.d && (_p$.d = _$setProp(_el$58, "bg", _v$36, _p$.d));
|
|
841
1198
|
return _p$;
|
|
842
1199
|
}, {
|
|
843
1200
|
e: undefined,
|
|
@@ -846,29 +1203,43 @@ function QuizDialog(props) {
|
|
|
846
1203
|
o: undefined,
|
|
847
1204
|
i: undefined,
|
|
848
1205
|
n: undefined,
|
|
849
|
-
s: undefined
|
|
1206
|
+
s: undefined,
|
|
1207
|
+
h: undefined,
|
|
1208
|
+
r: undefined,
|
|
1209
|
+
d: undefined
|
|
850
1210
|
});
|
|
851
|
-
return _el$
|
|
1211
|
+
return _el$47;
|
|
852
1212
|
}
|
|
853
1213
|
}), null);
|
|
854
|
-
_$insertNode(_el$
|
|
855
|
-
_$setProp(_el$
|
|
856
|
-
_$setProp(_el$
|
|
857
|
-
_$
|
|
1214
|
+
_$insertNode(_el$59, _el$60);
|
|
1215
|
+
_$setProp(_el$59, "height", 1);
|
|
1216
|
+
_$setProp(_el$59, "justifyContent", "center");
|
|
1217
|
+
_$setProp(_el$60, "wrapMode", "wrap");
|
|
1218
|
+
_$insert(_el$60, (() => {
|
|
858
1219
|
var _c$3 = _$memo(() => phase() === "feedback");
|
|
859
|
-
return () => _c$3() ? "\u21B5 Enter / Esc to continue \u2192 next probe" : phase() === "classifying" ? "Classifying your note..." : "
|
|
1220
|
+
return () => _c$3() ? _$memo(() => !!(canScrollUp() && canScrollDown()))() ? "\u25B2 more above \xB7 \u25BC more below \u2014 d/u to scroll \xB7 Enter to continue" : _$memo(() => !!canScrollDown())() ? "\u25BC more below \u2014 d to scroll \xB7 Enter to continue" : canScrollUp() ? "\u25B2 more above \u2014 u to scroll \xB7 Enter to continue" : "\u21B5 Enter / Esc to continue \u2192 next probe" : _$memo(() => phase() === "classifying")() ? "Classifying your note..." : _$memo(() => focused() === "note")() ? "Enter submit note \u2192 classify \xB7 Tab/Esc back" : canScrollUp() || canScrollDown() ? "j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel \xB7 d/u scroll" : "j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel";
|
|
860
1221
|
})());
|
|
861
1222
|
_$effect((_p$) => {
|
|
862
|
-
var _v$
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
_v$
|
|
869
|
-
_v$
|
|
870
|
-
_v$
|
|
871
|
-
_v$
|
|
1223
|
+
var _v$37 = popupWidth(), _v$38 = popupHeight(), _v$39 = phase() === "feedback" ? feedback()?.correct ? theme().success : theme().error : theme().accent, _v$40 = theme().backgroundPanel, _v$41 = phase() === "feedback" ? feedback()?.correct ? theme().success : theme().error : theme().accent, _v$42 = theme().background, _v$43 = theme().background, _v$44 = {
|
|
1224
|
+
visible: true,
|
|
1225
|
+
trackOptions: {
|
|
1226
|
+
backgroundColor: theme().background,
|
|
1227
|
+
foregroundColor: theme().borderActive
|
|
1228
|
+
}
|
|
1229
|
+
}, _v$45 = syntax(), _v$46 = decodeQuizText(props.request.question), _v$47 = theme().text, _v$48 = theme().backgroundPanel, _v$49 = theme().textMuted;
|
|
1230
|
+
_v$37 !== _p$.e && (_p$.e = _$setProp(_el$, "width", _v$37, _p$.e));
|
|
1231
|
+
_v$38 !== _p$.t && (_p$.t = _$setProp(_el$, "height", _v$38, _p$.t));
|
|
1232
|
+
_v$39 !== _p$.a && (_p$.a = _$setProp(_el$, "borderColor", _v$39, _p$.a));
|
|
1233
|
+
_v$40 !== _p$.o && (_p$.o = _$setProp(_el$, "backgroundColor", _v$40, _p$.o));
|
|
1234
|
+
_v$41 !== _p$.i && (_p$.i = _$setProp(_el$2, "backgroundColor", _v$41, _p$.i));
|
|
1235
|
+
_v$42 !== _p$.n && (_p$.n = _$setProp(_el$3, "fg", _v$42, _p$.n));
|
|
1236
|
+
_v$43 !== _p$.s && (_p$.s = _$setProp(_el$4, "fg", _v$43, _p$.s));
|
|
1237
|
+
_v$44 !== _p$.h && (_p$.h = _$setProp(_el$6, "verticalScrollbarOptions", _v$44, _p$.h));
|
|
1238
|
+
_v$45 !== _p$.r && (_p$.r = _$setProp(_el$8, "syntaxStyle", _v$45, _p$.r));
|
|
1239
|
+
_v$46 !== _p$.d && (_p$.d = _$setProp(_el$8, "content", _v$46, _p$.d));
|
|
1240
|
+
_v$47 !== _p$.l && (_p$.l = _$setProp(_el$8, "fg", _v$47, _p$.l));
|
|
1241
|
+
_v$48 !== _p$.u && (_p$.u = _$setProp(_el$8, "bg", _v$48, _p$.u));
|
|
1242
|
+
_v$49 !== _p$.c && (_p$.c = _$setProp(_el$60, "fg", _v$49, _p$.c));
|
|
872
1243
|
return _p$;
|
|
873
1244
|
}, {
|
|
874
1245
|
e: undefined,
|
|
@@ -879,13 +1250,18 @@ function QuizDialog(props) {
|
|
|
879
1250
|
n: undefined,
|
|
880
1251
|
s: undefined,
|
|
881
1252
|
h: undefined,
|
|
882
|
-
r: undefined
|
|
1253
|
+
r: undefined,
|
|
1254
|
+
d: undefined,
|
|
1255
|
+
l: undefined,
|
|
1256
|
+
u: undefined,
|
|
1257
|
+
c: undefined
|
|
883
1258
|
});
|
|
884
1259
|
return _el$;
|
|
885
1260
|
})();
|
|
886
1261
|
}
|
|
887
1262
|
function QuizBatchDialog(props) {
|
|
888
1263
|
const theme = () => props.api.theme.current;
|
|
1264
|
+
const syntax = () => syntaxStyle(theme());
|
|
889
1265
|
const dims = useTerminalDimensions();
|
|
890
1266
|
const popupWidth = () => Math.max(68, Math.min(dims().width - 4, 96));
|
|
891
1267
|
const popupHeight = () => Math.max(4, Math.min(24, dims().height - 2));
|
|
@@ -908,6 +1284,40 @@ function QuizBatchDialog(props) {
|
|
|
908
1284
|
const dontKnowIdx = () => cur().options.length;
|
|
909
1285
|
const submitIdx = () => isMulti() ? cur().options.length + 1 : -1;
|
|
910
1286
|
let noteEl;
|
|
1287
|
+
let scrollRefBatch;
|
|
1288
|
+
const [canScrollUpBatch, setCanScrollUpBatch] = createSignal(false);
|
|
1289
|
+
const [canScrollDownBatch, setCanScrollDownBatch] = createSignal(false);
|
|
1290
|
+
const updateScrollBatch = () => {
|
|
1291
|
+
try {
|
|
1292
|
+
if (!scrollRefBatch) {
|
|
1293
|
+
setCanScrollUpBatch(false);
|
|
1294
|
+
setCanScrollDownBatch(false);
|
|
1295
|
+
return;
|
|
1296
|
+
}
|
|
1297
|
+
const st = typeof scrollRefBatch.scrollTop === "number" ? scrollRefBatch.scrollTop : 0;
|
|
1298
|
+
const h = typeof scrollRefBatch.height === "number" ? scrollRefBatch.height : scrollRefBatch.viewportHeight ?? popupHeight();
|
|
1299
|
+
const sh = typeof scrollRefBatch.scrollHeight === "number" ? scrollRefBatch.scrollHeight : 0;
|
|
1300
|
+
let effectiveSh = sh;
|
|
1301
|
+
if (!effectiveSh && typeof scrollRefBatch.getChildren === "function") {
|
|
1302
|
+
try {
|
|
1303
|
+
const kids = scrollRefBatch.getChildren();
|
|
1304
|
+
if (kids?.length)
|
|
1305
|
+
effectiveSh = Math.max(...kids.map((c) => (c.y || 0) + (c.height || 0)), h);
|
|
1306
|
+
} catch {}
|
|
1307
|
+
}
|
|
1308
|
+
if (!effectiveSh || effectiveSh <= h + 1) {
|
|
1309
|
+
setCanScrollUpBatch(false);
|
|
1310
|
+
setCanScrollDownBatch(false);
|
|
1311
|
+
return;
|
|
1312
|
+
}
|
|
1313
|
+
setCanScrollUpBatch(st > 0);
|
|
1314
|
+
setCanScrollDownBatch(st + h < effectiveSh - 1);
|
|
1315
|
+
} catch {
|
|
1316
|
+
setCanScrollUpBatch(false);
|
|
1317
|
+
setCanScrollDownBatch(false);
|
|
1318
|
+
}
|
|
1319
|
+
};
|
|
1320
|
+
const scrollAmountBatch = () => Math.max(1, Math.floor((scrollRefBatch?.height ?? popupHeight()) / 3));
|
|
911
1321
|
createEffect(() => {
|
|
912
1322
|
if (focused() === "note" && noteEl)
|
|
913
1323
|
try {
|
|
@@ -916,6 +1326,24 @@ function QuizBatchDialog(props) {
|
|
|
916
1326
|
tlog("note focus failed", String(e));
|
|
917
1327
|
}
|
|
918
1328
|
});
|
|
1329
|
+
createEffect(() => {
|
|
1330
|
+
phase();
|
|
1331
|
+
feedback();
|
|
1332
|
+
dims();
|
|
1333
|
+
idx();
|
|
1334
|
+
setTimeout(updateScrollBatch, 40);
|
|
1335
|
+
setTimeout(updateScrollBatch, 200);
|
|
1336
|
+
});
|
|
1337
|
+
createEffect(() => {
|
|
1338
|
+
note();
|
|
1339
|
+
setTimeout(updateScrollBatch, 40);
|
|
1340
|
+
});
|
|
1341
|
+
createEffect(() => {
|
|
1342
|
+
if (phase() !== "feedback" && phase() !== "select")
|
|
1343
|
+
return;
|
|
1344
|
+
const id = setInterval(updateScrollBatch, 200);
|
|
1345
|
+
onCleanup(() => clearInterval(id));
|
|
1346
|
+
});
|
|
919
1347
|
const toggle = (i) => {
|
|
920
1348
|
try {
|
|
921
1349
|
const o = cur().options[i];
|
|
@@ -1092,16 +1520,63 @@ function QuizBatchDialog(props) {
|
|
|
1092
1520
|
tlog("submitSelect failed", String(e));
|
|
1093
1521
|
}
|
|
1094
1522
|
};
|
|
1523
|
+
const isPlainKeyBatch = (evt, want) => {
|
|
1524
|
+
try {
|
|
1525
|
+
const n = String(evt.name || evt.sequence || "").toLowerCase();
|
|
1526
|
+
if (n !== want.toLowerCase())
|
|
1527
|
+
return false;
|
|
1528
|
+
if (evt.ctrl || evt.meta || evt.option || evt.alt)
|
|
1529
|
+
return false;
|
|
1530
|
+
return true;
|
|
1531
|
+
} catch {
|
|
1532
|
+
return false;
|
|
1533
|
+
}
|
|
1534
|
+
};
|
|
1095
1535
|
useKeyboard((evt) => {
|
|
1096
1536
|
try {
|
|
1097
1537
|
const k = evt.name || evt.sequence || evt.raw || "";
|
|
1098
1538
|
const seq = evt.sequence || "";
|
|
1539
|
+
const lower = String(k || "").toLowerCase();
|
|
1099
1540
|
if (phase() === "classifying") {
|
|
1100
1541
|
prevent(evt);
|
|
1101
1542
|
return;
|
|
1102
1543
|
}
|
|
1103
1544
|
if (phase() === "feedback") {
|
|
1104
|
-
if (
|
|
1545
|
+
if (isPlainKeyBatch(evt, "d") || seq === "\x04") {
|
|
1546
|
+
prevent(evt);
|
|
1547
|
+
try {
|
|
1548
|
+
scrollRefBatch?.scrollBy(scrollAmountBatch());
|
|
1549
|
+
setTimeout(updateScrollBatch, 30);
|
|
1550
|
+
setTimeout(updateScrollBatch, 120);
|
|
1551
|
+
} catch {}
|
|
1552
|
+
return;
|
|
1553
|
+
}
|
|
1554
|
+
if (isPlainKeyBatch(evt, "u") || seq === "\x15") {
|
|
1555
|
+
prevent(evt);
|
|
1556
|
+
try {
|
|
1557
|
+
scrollRefBatch?.scrollBy(-scrollAmountBatch());
|
|
1558
|
+
setTimeout(updateScrollBatch, 30);
|
|
1559
|
+
setTimeout(updateScrollBatch, 120);
|
|
1560
|
+
} catch {}
|
|
1561
|
+
return;
|
|
1562
|
+
}
|
|
1563
|
+
if (lower === "pageup" || seq === "\x1B[5~") {
|
|
1564
|
+
prevent(evt);
|
|
1565
|
+
try {
|
|
1566
|
+
scrollRefBatch?.scrollBy(-scrollAmountBatch());
|
|
1567
|
+
setTimeout(updateScrollBatch, 30);
|
|
1568
|
+
} catch {}
|
|
1569
|
+
return;
|
|
1570
|
+
}
|
|
1571
|
+
if (lower === "pagedown" || seq === "\x1B[6~") {
|
|
1572
|
+
prevent(evt);
|
|
1573
|
+
try {
|
|
1574
|
+
scrollRefBatch?.scrollBy(scrollAmountBatch());
|
|
1575
|
+
setTimeout(updateScrollBatch, 30);
|
|
1576
|
+
} catch {}
|
|
1577
|
+
return;
|
|
1578
|
+
}
|
|
1579
|
+
if (lower === "enter" || seq === "\r" || lower === "escape" || lower === "esc") {
|
|
1105
1580
|
prevent(evt);
|
|
1106
1581
|
goNext();
|
|
1107
1582
|
}
|
|
@@ -1120,6 +1595,24 @@ function QuizBatchDialog(props) {
|
|
|
1120
1595
|
}
|
|
1121
1596
|
return;
|
|
1122
1597
|
}
|
|
1598
|
+
if (phase() === "select" && (isPlainKeyBatch(evt, "d") || seq === "\x04")) {
|
|
1599
|
+
prevent(evt);
|
|
1600
|
+
try {
|
|
1601
|
+
scrollRefBatch?.scrollBy(scrollAmountBatch());
|
|
1602
|
+
setTimeout(updateScrollBatch, 30);
|
|
1603
|
+
setTimeout(updateScrollBatch, 120);
|
|
1604
|
+
} catch {}
|
|
1605
|
+
return;
|
|
1606
|
+
}
|
|
1607
|
+
if (phase() === "select" && (isPlainKeyBatch(evt, "u") || seq === "\x15")) {
|
|
1608
|
+
prevent(evt);
|
|
1609
|
+
try {
|
|
1610
|
+
scrollRefBatch?.scrollBy(-scrollAmountBatch());
|
|
1611
|
+
setTimeout(updateScrollBatch, 30);
|
|
1612
|
+
setTimeout(updateScrollBatch, 120);
|
|
1613
|
+
} catch {}
|
|
1614
|
+
return;
|
|
1615
|
+
}
|
|
1123
1616
|
if (k === "up" || k === "k" || seq === "\x1B[A") {
|
|
1124
1617
|
prevent(evt);
|
|
1125
1618
|
setOptionIndex((i) => Math.max(0, i - 1));
|
|
@@ -1200,65 +1693,73 @@ function QuizBatchDialog(props) {
|
|
|
1200
1693
|
}
|
|
1201
1694
|
});
|
|
1202
1695
|
return (() => {
|
|
1203
|
-
var _el$
|
|
1204
|
-
_$insertNode(_el$
|
|
1205
|
-
_$insertNode(_el$
|
|
1206
|
-
_$insertNode(_el$
|
|
1207
|
-
_$setProp(_el$
|
|
1208
|
-
_$setProp(_el$
|
|
1209
|
-
_$setProp(_el$
|
|
1210
|
-
_$setProp(_el$
|
|
1211
|
-
_$insertNode(_el$
|
|
1212
|
-
_$insertNode(_el$
|
|
1213
|
-
_$setProp(_el$
|
|
1214
|
-
_$setProp(_el$
|
|
1215
|
-
_$setProp(_el$
|
|
1216
|
-
_$setProp(_el$
|
|
1217
|
-
_$setProp(_el$
|
|
1218
|
-
_$insertNode(_el$
|
|
1219
|
-
_$insertNode(_el$
|
|
1220
|
-
_$insertNode(_el$
|
|
1221
|
-
_$setProp(_el$
|
|
1222
|
-
_$insert(_el$
|
|
1223
|
-
_$insert(_el$
|
|
1224
|
-
_$insert(_el$
|
|
1696
|
+
var _el$76 = _$createElement("box"), _el$77 = _$createElement("box"), _el$78 = _$createElement("text"), _el$79 = _$createTextNode(` decks.quiz batch `), _el$80 = _$createTextNode(`/`), _el$81 = _$createTextNode(` `), _el$82 = _$createElement("text"), _el$84 = _$createElement("scrollbox"), _el$85 = _$createElement("markdown"), _el$126 = _$createElement("box"), _el$127 = _$createElement("text");
|
|
1697
|
+
_$insertNode(_el$76, _el$77);
|
|
1698
|
+
_$insertNode(_el$76, _el$84);
|
|
1699
|
+
_$insertNode(_el$76, _el$126);
|
|
1700
|
+
_$setProp(_el$76, "flexDirection", "column");
|
|
1701
|
+
_$setProp(_el$76, "border", true);
|
|
1702
|
+
_$setProp(_el$76, "padding", 1);
|
|
1703
|
+
_$setProp(_el$76, "gap", 1);
|
|
1704
|
+
_$insertNode(_el$77, _el$78);
|
|
1705
|
+
_$insertNode(_el$77, _el$82);
|
|
1706
|
+
_$setProp(_el$77, "flexDirection", "row");
|
|
1707
|
+
_$setProp(_el$77, "justifyContent", "space-between");
|
|
1708
|
+
_$setProp(_el$77, "paddingLeft", 1);
|
|
1709
|
+
_$setProp(_el$77, "paddingRight", 1);
|
|
1710
|
+
_$setProp(_el$77, "height", 1);
|
|
1711
|
+
_$insertNode(_el$78, _el$79);
|
|
1712
|
+
_$insertNode(_el$78, _el$80);
|
|
1713
|
+
_$insertNode(_el$78, _el$81);
|
|
1714
|
+
_$setProp(_el$78, "bold", true);
|
|
1715
|
+
_$insert(_el$78, () => idx() + 1, _el$80);
|
|
1716
|
+
_$insert(_el$78, () => props.request.quizzes.length, _el$81);
|
|
1717
|
+
_$insert(_el$78, (() => {
|
|
1225
1718
|
var _c$5 = _$memo(() => phase() === "feedback");
|
|
1226
1719
|
return () => _c$5() ? feedback()?.correct ? "\u2713" : "\u2717" : "";
|
|
1227
1720
|
})(), null);
|
|
1228
|
-
_$insertNode(_el$
|
|
1229
|
-
_$setProp(_el$
|
|
1230
|
-
_$insertNode(_el$
|
|
1231
|
-
_$
|
|
1232
|
-
_$setProp(_el$
|
|
1233
|
-
_$
|
|
1234
|
-
_$insert(_el$88, () => cur().question);
|
|
1235
|
-
_$insert(_el$87, _$createComponent(Show, {
|
|
1721
|
+
_$insertNode(_el$82, _$createTextNode(`learn`));
|
|
1722
|
+
_$setProp(_el$82, "dim", true);
|
|
1723
|
+
_$insertNode(_el$84, _el$85);
|
|
1724
|
+
_$use((el) => scrollRefBatch = el, _el$84);
|
|
1725
|
+
_$setProp(_el$84, "flexGrow", 1);
|
|
1726
|
+
_$insert(_el$84, _$createComponent(Show, {
|
|
1236
1727
|
get when() {
|
|
1237
1728
|
return cur().details;
|
|
1238
1729
|
},
|
|
1239
1730
|
get children() {
|
|
1240
|
-
var _el$
|
|
1241
|
-
_$
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1731
|
+
var _el$86 = _$createElement("markdown");
|
|
1732
|
+
_$effect((_p$) => {
|
|
1733
|
+
var _v$55 = syntax(), _v$56 = decodeQuizText(cur().details), _v$57 = theme().textMuted, _v$58 = theme().backgroundPanel;
|
|
1734
|
+
_v$55 !== _p$.e && (_p$.e = _$setProp(_el$86, "syntaxStyle", _v$55, _p$.e));
|
|
1735
|
+
_v$56 !== _p$.t && (_p$.t = _$setProp(_el$86, "content", _v$56, _p$.t));
|
|
1736
|
+
_v$57 !== _p$.a && (_p$.a = _$setProp(_el$86, "fg", _v$57, _p$.a));
|
|
1737
|
+
_v$58 !== _p$.o && (_p$.o = _$setProp(_el$86, "bg", _v$58, _p$.o));
|
|
1738
|
+
return _p$;
|
|
1739
|
+
}, {
|
|
1740
|
+
e: undefined,
|
|
1741
|
+
t: undefined,
|
|
1742
|
+
a: undefined,
|
|
1743
|
+
o: undefined
|
|
1744
|
+
});
|
|
1745
|
+
return _el$86;
|
|
1245
1746
|
}
|
|
1246
1747
|
}), null);
|
|
1247
|
-
_$insert(_el$
|
|
1748
|
+
_$insert(_el$84, _$createComponent(Show, {
|
|
1248
1749
|
get when() {
|
|
1249
1750
|
return phase() === "select";
|
|
1250
1751
|
},
|
|
1251
1752
|
get children() {
|
|
1252
|
-
var _el$
|
|
1253
|
-
_$insertNode(_el$
|
|
1254
|
-
_$insertNode(_el$
|
|
1255
|
-
_$insertNode(_el$
|
|
1256
|
-
_$insertNode(_el$
|
|
1257
|
-
_$setProp(_el$
|
|
1258
|
-
_$setProp(_el$
|
|
1259
|
-
_$setProp(_el$
|
|
1260
|
-
_$setProp(_el$
|
|
1261
|
-
_$insert(_el$
|
|
1753
|
+
var _el$87 = _$createElement("box"), _el$88 = _$createElement("box"), _el$89 = _$createElement("text"), _el$90 = _$createElement("box"), _el$91 = _$createElement("box"), _el$92 = _$createElement("text"), _el$93 = _$createElement("box"), _el$94 = _$createElement("text"), _el$95 = _$createElement("box"), _el$96 = _$createElement("text"), _el$98 = _$createElement("box"), _el$99 = _$createElement("text"), _el$101 = _$createElement("box"), _el$103 = _$createElement("box"), _el$104 = _$createElement("text"), _el$105 = _$createElement("text"), _el$106 = _$createTextNode(`/`);
|
|
1754
|
+
_$insertNode(_el$87, _el$88);
|
|
1755
|
+
_$insertNode(_el$87, _el$90);
|
|
1756
|
+
_$insertNode(_el$87, _el$98);
|
|
1757
|
+
_$insertNode(_el$87, _el$103);
|
|
1758
|
+
_$setProp(_el$87, "flexDirection", "column");
|
|
1759
|
+
_$setProp(_el$87, "gap", 0);
|
|
1760
|
+
_$setProp(_el$87, "padding", 1);
|
|
1761
|
+
_$setProp(_el$87, "border", true);
|
|
1762
|
+
_$insert(_el$87, _$createComponent(For, {
|
|
1262
1763
|
get each() {
|
|
1263
1764
|
return cur().options;
|
|
1264
1765
|
},
|
|
@@ -1267,36 +1768,36 @@ function QuizBatchDialog(props) {
|
|
|
1267
1768
|
const foc = () => focused() === "options" && optionIndex() === id;
|
|
1268
1769
|
const sel = () => selected().has(`opt:${id}`);
|
|
1269
1770
|
return (() => {
|
|
1270
|
-
var _el$
|
|
1771
|
+
var _el$128 = _$createElement("box"), _el$129 = _$createElement("box"), _el$130 = _$createElement("text"), _el$131 = _$createElement("box"), _el$132 = _$createElement("text"), _el$133 = _$createElement("box"), _el$134 = _$createElement("text"), _el$135 = _$createTextNode(`. `);
|
|
1772
|
+
_$insertNode(_el$128, _el$129);
|
|
1773
|
+
_$insertNode(_el$128, _el$131);
|
|
1774
|
+
_$insertNode(_el$128, _el$133);
|
|
1775
|
+
_$setProp(_el$128, "flexDirection", "row");
|
|
1776
|
+
_$setProp(_el$128, "alignItems", "flexStart");
|
|
1777
|
+
_$setProp(_el$128, "gap", 1);
|
|
1778
|
+
_$setProp(_el$128, "paddingLeft", 1);
|
|
1779
|
+
_$insertNode(_el$129, _el$130);
|
|
1780
|
+
_$setProp(_el$129, "width", 2);
|
|
1781
|
+
_$insert(_el$130, () => foc() ? "\u25B8" : " ");
|
|
1271
1782
|
_$insertNode(_el$131, _el$132);
|
|
1272
|
-
_$
|
|
1273
|
-
_$
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
_$setProp(_el$131, "gap", 1);
|
|
1277
|
-
_$setProp(_el$131, "paddingLeft", 1);
|
|
1278
|
-
_$insertNode(_el$132, _el$133);
|
|
1279
|
-
_$setProp(_el$132, "width", 2);
|
|
1280
|
-
_$insert(_el$133, () => foc() ? "\u25B8" : " ");
|
|
1281
|
-
_$insertNode(_el$134, _el$135);
|
|
1282
|
-
_$setProp(_el$134, "width", 2);
|
|
1283
|
-
_$insert(_el$135, (() => {
|
|
1284
|
-
var _c$7 = _$memo(() => !!isMulti());
|
|
1285
|
-
return () => _c$7() ? sel() ? "\u2611" : "\u2610" : sel() ? "\u2B22" : "\u25CB";
|
|
1783
|
+
_$setProp(_el$131, "width", 2);
|
|
1784
|
+
_$insert(_el$132, (() => {
|
|
1785
|
+
var _c$8 = _$memo(() => !!isMulti());
|
|
1786
|
+
return () => _c$8() ? sel() ? "\u2611" : "\u2610" : sel() ? "\u2B22" : "\u25CB";
|
|
1286
1787
|
})());
|
|
1287
|
-
_$insertNode(_el$
|
|
1288
|
-
_$setProp(_el$
|
|
1289
|
-
_$insertNode(_el$
|
|
1290
|
-
_$setProp(_el$
|
|
1291
|
-
_$insert(_el$
|
|
1292
|
-
_$insert(_el$
|
|
1788
|
+
_$insertNode(_el$133, _el$134);
|
|
1789
|
+
_$setProp(_el$133, "flexGrow", 1);
|
|
1790
|
+
_$insertNode(_el$134, _el$135);
|
|
1791
|
+
_$setProp(_el$134, "wrapMode", "wrap");
|
|
1792
|
+
_$insert(_el$134, id + 1, _el$135);
|
|
1793
|
+
_$insert(_el$134, () => opt.label, null);
|
|
1293
1794
|
_$effect((_p$) => {
|
|
1294
|
-
var _v$
|
|
1295
|
-
_v$
|
|
1296
|
-
_v$
|
|
1297
|
-
_v$
|
|
1298
|
-
_v$
|
|
1299
|
-
_v$
|
|
1795
|
+
var _v$102 = foc() ? theme().backgroundElement : undefined, _v$103 = foc() ? theme().accent : theme().textMuted, _v$104 = isMulti() ? sel() ? theme().success : theme().textMuted : sel() ? theme().accent : theme().textMuted, _v$105 = sel() ? theme().text : theme().textMuted, _v$106 = foc();
|
|
1796
|
+
_v$102 !== _p$.e && (_p$.e = _$setProp(_el$128, "backgroundColor", _v$102, _p$.e));
|
|
1797
|
+
_v$103 !== _p$.t && (_p$.t = _$setProp(_el$130, "fg", _v$103, _p$.t));
|
|
1798
|
+
_v$104 !== _p$.a && (_p$.a = _$setProp(_el$132, "fg", _v$104, _p$.a));
|
|
1799
|
+
_v$105 !== _p$.o && (_p$.o = _$setProp(_el$134, "fg", _v$105, _p$.o));
|
|
1800
|
+
_v$106 !== _p$.i && (_p$.i = _$setProp(_el$134, "bold", _v$106, _p$.i));
|
|
1300
1801
|
return _p$;
|
|
1301
1802
|
}, {
|
|
1302
1803
|
e: undefined,
|
|
@@ -1305,120 +1806,123 @@ function QuizBatchDialog(props) {
|
|
|
1305
1806
|
o: undefined,
|
|
1306
1807
|
i: undefined
|
|
1307
1808
|
});
|
|
1308
|
-
return _el$
|
|
1809
|
+
return _el$128;
|
|
1309
1810
|
})();
|
|
1310
1811
|
}
|
|
1311
|
-
}), _el$
|
|
1812
|
+
}), _el$88);
|
|
1813
|
+
_$insertNode(_el$88, _el$89);
|
|
1814
|
+
_$setProp(_el$88, "height", 1);
|
|
1815
|
+
_$insert(_el$89, () => "\u2500".repeat(Math.max(20, popupWidth() - 8)));
|
|
1816
|
+
_$insertNode(_el$90, _el$91);
|
|
1817
|
+
_$insertNode(_el$90, _el$93);
|
|
1818
|
+
_$insertNode(_el$90, _el$95);
|
|
1819
|
+
_$setProp(_el$90, "flexDirection", "row");
|
|
1820
|
+
_$setProp(_el$90, "gap", 1);
|
|
1821
|
+
_$setProp(_el$90, "paddingLeft", 1);
|
|
1312
1822
|
_$insertNode(_el$91, _el$92);
|
|
1313
|
-
_$setProp(_el$91, "
|
|
1314
|
-
_$insert(_el$92, () => "
|
|
1823
|
+
_$setProp(_el$91, "width", 2);
|
|
1824
|
+
_$insert(_el$92, () => focused() === "options" && optionIndex() === dontKnowIdx() ? "\u25B8" : " ");
|
|
1315
1825
|
_$insertNode(_el$93, _el$94);
|
|
1316
|
-
_$
|
|
1317
|
-
_$
|
|
1318
|
-
_$
|
|
1319
|
-
_$setProp(_el$
|
|
1320
|
-
_$
|
|
1321
|
-
_$
|
|
1322
|
-
_$setProp(_el$94, "width", 2);
|
|
1323
|
-
_$insert(_el$95, () => focused() === "options" && optionIndex() === dontKnowIdx() ? "\u25B8" : " ");
|
|
1324
|
-
_$insertNode(_el$96, _el$97);
|
|
1325
|
-
_$setProp(_el$96, "width", 2);
|
|
1326
|
-
_$insert(_el$97, () => dontKnow() ? "\u2611" : "\u2610");
|
|
1826
|
+
_$setProp(_el$93, "width", 2);
|
|
1827
|
+
_$insert(_el$94, () => dontKnow() ? "\u2611" : "\u2610");
|
|
1828
|
+
_$insertNode(_el$95, _el$96);
|
|
1829
|
+
_$setProp(_el$95, "flexGrow", 1);
|
|
1830
|
+
_$insertNode(_el$96, _$createTextNode(`I don't know`));
|
|
1831
|
+
_$setProp(_el$96, "italic", true);
|
|
1327
1832
|
_$insertNode(_el$98, _el$99);
|
|
1328
|
-
_$
|
|
1329
|
-
_$
|
|
1330
|
-
_$setProp(_el$
|
|
1331
|
-
_$insertNode(_el$
|
|
1332
|
-
_$
|
|
1333
|
-
_$setProp(_el$101, "
|
|
1334
|
-
_$setProp(_el$101, "
|
|
1335
|
-
_$
|
|
1336
|
-
_$setProp(_el$104, "border", true);
|
|
1337
|
-
_$setProp(_el$104, "paddingLeft", 1);
|
|
1338
|
-
_$setProp(_el$104, "paddingRight", 1);
|
|
1339
|
-
_$insert(_el$104, _$createComponent(Show, {
|
|
1833
|
+
_$insertNode(_el$98, _el$101);
|
|
1834
|
+
_$setProp(_el$98, "flexDirection", "column");
|
|
1835
|
+
_$setProp(_el$98, "paddingTop", 1);
|
|
1836
|
+
_$insertNode(_el$99, _$createTextNode(`\u270E Note`));
|
|
1837
|
+
_$setProp(_el$101, "border", true);
|
|
1838
|
+
_$setProp(_el$101, "paddingLeft", 1);
|
|
1839
|
+
_$setProp(_el$101, "paddingRight", 1);
|
|
1840
|
+
_$insert(_el$101, _$createComponent(Show, {
|
|
1340
1841
|
get when() {
|
|
1341
1842
|
return focused() === "note";
|
|
1342
1843
|
},
|
|
1343
1844
|
get fallback() {
|
|
1344
1845
|
return (() => {
|
|
1345
|
-
var _el$
|
|
1346
|
-
_$insert(_el$
|
|
1347
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1348
|
-
return _el$
|
|
1846
|
+
var _el$136 = _$createElement("text");
|
|
1847
|
+
_$insert(_el$136, () => note() || "Tab to edit \xB7 share what you were thinking");
|
|
1848
|
+
_$effect((_$p) => _$setProp(_el$136, "fg", theme().textMuted, _$p));
|
|
1849
|
+
return _el$136;
|
|
1349
1850
|
})();
|
|
1350
1851
|
},
|
|
1351
1852
|
get children() {
|
|
1352
|
-
var _el$
|
|
1353
|
-
_$use((el) => noteEl = el, _el$
|
|
1354
|
-
_$setProp(_el$
|
|
1355
|
-
_$setProp(_el$
|
|
1853
|
+
var _el$102 = _$createElement("input");
|
|
1854
|
+
_$use((el) => noteEl = el, _el$102);
|
|
1855
|
+
_$setProp(_el$102, "onInput", (v) => setNote(typeof v === "string" ? v : v?.target?.value ?? ""));
|
|
1856
|
+
_$setProp(_el$102, "onSubmit", () => {
|
|
1356
1857
|
if (!selected().size && !dontKnow() && note().trim())
|
|
1357
1858
|
submitSelect();
|
|
1358
1859
|
else
|
|
1359
1860
|
setFocused("options");
|
|
1360
1861
|
});
|
|
1361
|
-
_$setProp(_el$
|
|
1362
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1363
|
-
return _el$
|
|
1862
|
+
_$setProp(_el$102, "placeholder", "note (Enter to submit note \u2192 classify)");
|
|
1863
|
+
_$effect((_$p) => _$setProp(_el$102, "value", note(), _$p));
|
|
1864
|
+
return _el$102;
|
|
1364
1865
|
}
|
|
1365
1866
|
}));
|
|
1366
|
-
_$insertNode(_el$
|
|
1367
|
-
_$insertNode(_el$
|
|
1368
|
-
_$setProp(_el$
|
|
1369
|
-
_$setProp(_el$
|
|
1370
|
-
_$setProp(_el$
|
|
1371
|
-
_$insert(_el$
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
_$
|
|
1867
|
+
_$insertNode(_el$103, _el$104);
|
|
1868
|
+
_$insertNode(_el$103, _el$105);
|
|
1869
|
+
_$setProp(_el$103, "flexDirection", "row");
|
|
1870
|
+
_$setProp(_el$103, "justifyContent", "space-between");
|
|
1871
|
+
_$setProp(_el$103, "paddingTop", 1);
|
|
1872
|
+
_$insert(_el$104, (() => {
|
|
1873
|
+
var _c$6 = _$memo(() => !!isMulti());
|
|
1874
|
+
return () => _c$6() ? `${selected().size} selected` : note().trim() && !selected().size ? "note \u2192 classify" : "";
|
|
1875
|
+
})());
|
|
1876
|
+
_$insertNode(_el$105, _el$106);
|
|
1877
|
+
_$insert(_el$105, () => idx() + 1, _el$106);
|
|
1878
|
+
_$insert(_el$105, () => props.request.quizzes.length, null);
|
|
1879
|
+
_$insert(_el$87, _$createComponent(Show, {
|
|
1376
1880
|
get when() {
|
|
1377
1881
|
return isMulti();
|
|
1378
1882
|
},
|
|
1379
1883
|
get children() {
|
|
1380
|
-
var _el$
|
|
1381
|
-
_$insertNode(_el$
|
|
1382
|
-
_$setProp(_el$
|
|
1383
|
-
_$setProp(_el$
|
|
1384
|
-
_$insertNode(_el$
|
|
1385
|
-
_$insertNode(_el$
|
|
1386
|
-
_$setProp(_el$
|
|
1387
|
-
_$setProp(_el$
|
|
1388
|
-
_$setProp(_el$
|
|
1389
|
-
_$setProp(_el$
|
|
1390
|
-
_$setProp(_el$
|
|
1391
|
-
_$insert(_el$
|
|
1392
|
-
_$insertNode(_el$
|
|
1393
|
-
_$setProp(_el$
|
|
1884
|
+
var _el$107 = _$createElement("box"), _el$108 = _$createElement("box"), _el$109 = _$createElement("text"), _el$110 = _$createElement("text");
|
|
1885
|
+
_$insertNode(_el$107, _el$108);
|
|
1886
|
+
_$setProp(_el$107, "justifyContent", "center");
|
|
1887
|
+
_$setProp(_el$107, "paddingTop", 1);
|
|
1888
|
+
_$insertNode(_el$108, _el$109);
|
|
1889
|
+
_$insertNode(_el$108, _el$110);
|
|
1890
|
+
_$setProp(_el$108, "flexDirection", "row");
|
|
1891
|
+
_$setProp(_el$108, "gap", 1);
|
|
1892
|
+
_$setProp(_el$108, "border", true);
|
|
1893
|
+
_$setProp(_el$108, "paddingLeft", 2);
|
|
1894
|
+
_$setProp(_el$108, "paddingRight", 2);
|
|
1895
|
+
_$insert(_el$109, () => focused() === "options" && optionIndex() === submitIdx() ? "\u25B8" : " ");
|
|
1896
|
+
_$insertNode(_el$110, _$createTextNode(`\u21B3 Submit`));
|
|
1897
|
+
_$setProp(_el$110, "bold", true);
|
|
1394
1898
|
_$effect((_p$) => {
|
|
1395
|
-
var _v$
|
|
1396
|
-
_v$
|
|
1397
|
-
_v$
|
|
1398
|
-
_v$
|
|
1899
|
+
var _v$59 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : theme().borderSubtle, _v$60 = focused() === "options" && optionIndex() === submitIdx() ? theme().backgroundElement : theme().background, _v$61 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : theme().textMuted;
|
|
1900
|
+
_v$59 !== _p$.e && (_p$.e = _$setProp(_el$108, "borderColor", _v$59, _p$.e));
|
|
1901
|
+
_v$60 !== _p$.t && (_p$.t = _$setProp(_el$108, "backgroundColor", _v$60, _p$.t));
|
|
1902
|
+
_v$61 !== _p$.a && (_p$.a = _$setProp(_el$109, "fg", _v$61, _p$.a));
|
|
1399
1903
|
return _p$;
|
|
1400
1904
|
}, {
|
|
1401
1905
|
e: undefined,
|
|
1402
1906
|
t: undefined,
|
|
1403
1907
|
a: undefined
|
|
1404
1908
|
});
|
|
1405
|
-
return _el$
|
|
1909
|
+
return _el$107;
|
|
1406
1910
|
}
|
|
1407
1911
|
}), null);
|
|
1408
1912
|
_$effect((_p$) => {
|
|
1409
|
-
var _v$
|
|
1410
|
-
_v$
|
|
1411
|
-
_v$
|
|
1412
|
-
_v$
|
|
1413
|
-
_v$
|
|
1414
|
-
_v$
|
|
1415
|
-
_v$
|
|
1416
|
-
_v$
|
|
1417
|
-
_v$
|
|
1418
|
-
_v$
|
|
1419
|
-
_v$
|
|
1420
|
-
_v$
|
|
1421
|
-
_v$
|
|
1913
|
+
var _v$62 = theme().borderSubtle, _v$63 = theme().background, _v$64 = theme().borderSubtle, _v$65 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().backgroundElement : undefined, _v$66 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().accent : theme().textMuted, _v$67 = dontKnow() ? theme().warning : theme().textMuted, _v$68 = dontKnow() ? theme().warning : theme().textMuted, _v$69 = focused() === "note" ? theme().accent : theme().textMuted, _v$70 = focused() === "note" ? theme().accent : theme().borderSubtle, _v$71 = theme().backgroundElement, _v$72 = theme().textMuted, _v$73 = theme().textMuted;
|
|
1914
|
+
_v$62 !== _p$.e && (_p$.e = _$setProp(_el$87, "borderColor", _v$62, _p$.e));
|
|
1915
|
+
_v$63 !== _p$.t && (_p$.t = _$setProp(_el$87, "backgroundColor", _v$63, _p$.t));
|
|
1916
|
+
_v$64 !== _p$.a && (_p$.a = _$setProp(_el$89, "fg", _v$64, _p$.a));
|
|
1917
|
+
_v$65 !== _p$.o && (_p$.o = _$setProp(_el$90, "backgroundColor", _v$65, _p$.o));
|
|
1918
|
+
_v$66 !== _p$.i && (_p$.i = _$setProp(_el$92, "fg", _v$66, _p$.i));
|
|
1919
|
+
_v$67 !== _p$.n && (_p$.n = _$setProp(_el$94, "fg", _v$67, _p$.n));
|
|
1920
|
+
_v$68 !== _p$.s && (_p$.s = _$setProp(_el$96, "fg", _v$68, _p$.s));
|
|
1921
|
+
_v$69 !== _p$.h && (_p$.h = _$setProp(_el$99, "fg", _v$69, _p$.h));
|
|
1922
|
+
_v$70 !== _p$.r && (_p$.r = _$setProp(_el$101, "borderColor", _v$70, _p$.r));
|
|
1923
|
+
_v$71 !== _p$.d && (_p$.d = _$setProp(_el$101, "backgroundColor", _v$71, _p$.d));
|
|
1924
|
+
_v$72 !== _p$.l && (_p$.l = _$setProp(_el$104, "fg", _v$72, _p$.l));
|
|
1925
|
+
_v$73 !== _p$.u && (_p$.u = _$setProp(_el$105, "fg", _v$73, _p$.u));
|
|
1422
1926
|
return _p$;
|
|
1423
1927
|
}, {
|
|
1424
1928
|
e: undefined,
|
|
@@ -1434,37 +1938,37 @@ function QuizBatchDialog(props) {
|
|
|
1434
1938
|
l: undefined,
|
|
1435
1939
|
u: undefined
|
|
1436
1940
|
});
|
|
1437
|
-
return _el$
|
|
1941
|
+
return _el$87;
|
|
1438
1942
|
}
|
|
1439
1943
|
}), null);
|
|
1440
|
-
_$insert(_el$
|
|
1944
|
+
_$insert(_el$84, _$createComponent(Show, {
|
|
1441
1945
|
get when() {
|
|
1442
1946
|
return phase() === "classifying";
|
|
1443
1947
|
},
|
|
1444
1948
|
get children() {
|
|
1445
|
-
var _el$
|
|
1949
|
+
var _el$112 = _$createElement("box"), _el$113 = _$createElement("text"), _el$115 = _$createElement("text"), _el$116 = _$createTextNode(`"`), _el$117 = _$createTextNode(`"`), _el$118 = _$createElement("text");
|
|
1950
|
+
_$insertNode(_el$112, _el$113);
|
|
1951
|
+
_$insertNode(_el$112, _el$115);
|
|
1952
|
+
_$insertNode(_el$112, _el$118);
|
|
1953
|
+
_$setProp(_el$112, "flexDirection", "column");
|
|
1954
|
+
_$setProp(_el$112, "gap", 1);
|
|
1955
|
+
_$setProp(_el$112, "padding", 1);
|
|
1956
|
+
_$setProp(_el$112, "border", true);
|
|
1957
|
+
_$setProp(_el$112, "alignItems", "center");
|
|
1958
|
+
_$insertNode(_el$113, _$createTextNode(`\u25D0 Classifying your note...`));
|
|
1959
|
+
_$setProp(_el$113, "bold", true);
|
|
1446
1960
|
_$insertNode(_el$115, _el$116);
|
|
1447
|
-
_$insertNode(_el$115, _el$
|
|
1448
|
-
_$
|
|
1449
|
-
_$
|
|
1450
|
-
_$
|
|
1451
|
-
_$setProp(_el$115, "padding", 1);
|
|
1452
|
-
_$setProp(_el$115, "border", true);
|
|
1453
|
-
_$setProp(_el$115, "alignItems", "center");
|
|
1454
|
-
_$insertNode(_el$116, _$createTextNode(`\u25D0 Classifying your note...`));
|
|
1455
|
-
_$setProp(_el$116, "bold", true);
|
|
1456
|
-
_$insertNode(_el$118, _el$119);
|
|
1457
|
-
_$insertNode(_el$118, _el$120);
|
|
1458
|
-
_$setProp(_el$118, "wrapMode", "wrap");
|
|
1459
|
-
_$insert(_el$118, note, _el$120);
|
|
1460
|
-
_$insertNode(_el$121, _$createTextNode(`Mapping to options \u2014 please wait`));
|
|
1961
|
+
_$insertNode(_el$115, _el$117);
|
|
1962
|
+
_$setProp(_el$115, "wrapMode", "wrap");
|
|
1963
|
+
_$insert(_el$115, note, _el$117);
|
|
1964
|
+
_$insertNode(_el$118, _$createTextNode(`Mapping to options \u2014 please wait`));
|
|
1461
1965
|
_$effect((_p$) => {
|
|
1462
|
-
var _v$
|
|
1463
|
-
_v$
|
|
1464
|
-
_v$
|
|
1465
|
-
_v$
|
|
1466
|
-
_v$
|
|
1467
|
-
_v$
|
|
1966
|
+
var _v$74 = theme().accent, _v$75 = theme().background, _v$76 = theme().accent, _v$77 = theme().textMuted, _v$78 = theme().textMuted;
|
|
1967
|
+
_v$74 !== _p$.e && (_p$.e = _$setProp(_el$112, "borderColor", _v$74, _p$.e));
|
|
1968
|
+
_v$75 !== _p$.t && (_p$.t = _$setProp(_el$112, "backgroundColor", _v$75, _p$.t));
|
|
1969
|
+
_v$76 !== _p$.a && (_p$.a = _$setProp(_el$113, "fg", _v$76, _p$.a));
|
|
1970
|
+
_v$77 !== _p$.o && (_p$.o = _$setProp(_el$115, "fg", _v$77, _p$.o));
|
|
1971
|
+
_v$78 !== _p$.i && (_p$.i = _$setProp(_el$118, "fg", _v$78, _p$.i));
|
|
1468
1972
|
return _p$;
|
|
1469
1973
|
}, {
|
|
1470
1974
|
e: undefined,
|
|
@@ -1473,23 +1977,23 @@ function QuizBatchDialog(props) {
|
|
|
1473
1977
|
o: undefined,
|
|
1474
1978
|
i: undefined
|
|
1475
1979
|
});
|
|
1476
|
-
return _el$
|
|
1980
|
+
return _el$112;
|
|
1477
1981
|
}
|
|
1478
1982
|
}), null);
|
|
1479
|
-
_$insert(_el$
|
|
1983
|
+
_$insert(_el$84, _$createComponent(Show, {
|
|
1480
1984
|
get when() {
|
|
1481
1985
|
return phase() === "feedback";
|
|
1482
1986
|
},
|
|
1483
1987
|
get children() {
|
|
1484
|
-
var _el$
|
|
1485
|
-
_$insertNode(_el$
|
|
1486
|
-
_$insertNode(_el$
|
|
1487
|
-
_$insertNode(_el$
|
|
1488
|
-
_$setProp(_el$
|
|
1489
|
-
_$setProp(_el$
|
|
1490
|
-
_$setProp(_el$
|
|
1491
|
-
_$setProp(_el$
|
|
1492
|
-
_$insert(_el$
|
|
1988
|
+
var _el$120 = _$createElement("box"), _el$121 = _$createElement("text"), _el$122 = _$createElement("text"), _el$123 = _$createTextNode(`Correct: `), _el$124 = _$createElement("box"), _el$125 = _$createElement("markdown");
|
|
1989
|
+
_$insertNode(_el$120, _el$121);
|
|
1990
|
+
_$insertNode(_el$120, _el$122);
|
|
1991
|
+
_$insertNode(_el$120, _el$124);
|
|
1992
|
+
_$setProp(_el$120, "flexDirection", "column");
|
|
1993
|
+
_$setProp(_el$120, "gap", 1);
|
|
1994
|
+
_$setProp(_el$120, "padding", 1);
|
|
1995
|
+
_$setProp(_el$120, "border", true);
|
|
1996
|
+
_$insert(_el$120, _$createComponent(For, {
|
|
1493
1997
|
get each() {
|
|
1494
1998
|
return cur().options;
|
|
1495
1999
|
},
|
|
@@ -1518,47 +2022,48 @@ function QuizBatchDialog(props) {
|
|
|
1518
2022
|
bg = theme().warning;
|
|
1519
2023
|
}
|
|
1520
2024
|
return (() => {
|
|
1521
|
-
var _el$
|
|
2025
|
+
var _el$137 = _$createElement("box"), _el$138 = _$createElement("box"), _el$139 = _$createElement("text"), _el$140 = _$createElement("box"), _el$141 = _$createElement("text"), _el$142 = _$createTextNode(`. `);
|
|
2026
|
+
_$insertNode(_el$137, _el$138);
|
|
2027
|
+
_$insertNode(_el$137, _el$140);
|
|
2028
|
+
_$setProp(_el$137, "flexDirection", "row");
|
|
2029
|
+
_$setProp(_el$137, "gap", 1);
|
|
2030
|
+
_$setProp(_el$137, "paddingLeft", 1);
|
|
2031
|
+
_$setProp(_el$137, "backgroundColor", bg);
|
|
2032
|
+
_$insertNode(_el$138, _el$139);
|
|
2033
|
+
_$setProp(_el$138, "width", 2);
|
|
2034
|
+
_$setProp(_el$139, "fg", fg);
|
|
2035
|
+
_$setProp(_el$139, "bold", true);
|
|
2036
|
+
_$insert(_el$139, ic);
|
|
1522
2037
|
_$insertNode(_el$140, _el$141);
|
|
1523
|
-
_$
|
|
1524
|
-
_$setProp(_el$140, "flexDirection", "row");
|
|
1525
|
-
_$setProp(_el$140, "gap", 1);
|
|
1526
|
-
_$setProp(_el$140, "paddingLeft", 1);
|
|
1527
|
-
_$setProp(_el$140, "backgroundColor", bg);
|
|
2038
|
+
_$setProp(_el$140, "flexGrow", 1);
|
|
1528
2039
|
_$insertNode(_el$141, _el$142);
|
|
1529
|
-
_$setProp(_el$141, "
|
|
1530
|
-
_$setProp(_el$
|
|
1531
|
-
_$
|
|
1532
|
-
_$insert(_el$
|
|
1533
|
-
|
|
1534
|
-
_$setProp(_el$143, "flexGrow", 1);
|
|
1535
|
-
_$insertNode(_el$144, _el$145);
|
|
1536
|
-
_$setProp(_el$144, "fg", fg);
|
|
1537
|
-
_$setProp(_el$144, "wrapMode", "wrap");
|
|
1538
|
-
_$insert(_el$144, id, _el$145);
|
|
1539
|
-
_$insert(_el$144, () => opt.label, null);
|
|
1540
|
-
return _el$140;
|
|
2040
|
+
_$setProp(_el$141, "fg", fg);
|
|
2041
|
+
_$setProp(_el$141, "wrapMode", "wrap");
|
|
2042
|
+
_$insert(_el$141, id, _el$142);
|
|
2043
|
+
_$insert(_el$141, () => opt.label, null);
|
|
2044
|
+
return _el$137;
|
|
1541
2045
|
})();
|
|
1542
2046
|
}
|
|
1543
|
-
}), _el$
|
|
1544
|
-
_$setProp(_el$
|
|
1545
|
-
_$insert(_el$
|
|
1546
|
-
_$insertNode(_el$
|
|
1547
|
-
_$insert(_el$
|
|
1548
|
-
_$insertNode(_el$
|
|
1549
|
-
_$setProp(_el$
|
|
1550
|
-
_$setProp(_el$
|
|
1551
|
-
_$setProp(_el$128, "wrapMode", "wrap");
|
|
1552
|
-
_$insert(_el$128, () => cur().explanation);
|
|
2047
|
+
}), _el$121);
|
|
2048
|
+
_$setProp(_el$121, "bold", true);
|
|
2049
|
+
_$insert(_el$121, () => feedback()?.correct ? "\u2713 Correct" : "\u2717 Incorrect");
|
|
2050
|
+
_$insertNode(_el$122, _el$123);
|
|
2051
|
+
_$insert(_el$122, () => cur().correctIndices.map((i) => `${i}. ${cur().options[i - 1]?.label}`).join(", "), null);
|
|
2052
|
+
_$insertNode(_el$124, _el$125);
|
|
2053
|
+
_$setProp(_el$124, "border", true);
|
|
2054
|
+
_$setProp(_el$124, "padding", 1);
|
|
1553
2055
|
_$effect((_p$) => {
|
|
1554
|
-
var _v$
|
|
1555
|
-
_v$
|
|
1556
|
-
_v$
|
|
1557
|
-
_v$
|
|
1558
|
-
_v$
|
|
1559
|
-
_v$
|
|
1560
|
-
_v$
|
|
1561
|
-
_v$
|
|
2056
|
+
var _v$79 = feedback()?.correct ? theme().success : theme().error, _v$80 = theme().background, _v$81 = feedback()?.correct ? theme().success : theme().error, _v$82 = theme().textMuted, _v$83 = theme().borderSubtle, _v$84 = theme().backgroundPanel, _v$85 = syntax(), _v$86 = decodeQuizText(cur().explanation), _v$87 = theme().text, _v$88 = theme().backgroundPanel;
|
|
2057
|
+
_v$79 !== _p$.e && (_p$.e = _$setProp(_el$120, "borderColor", _v$79, _p$.e));
|
|
2058
|
+
_v$80 !== _p$.t && (_p$.t = _$setProp(_el$120, "backgroundColor", _v$80, _p$.t));
|
|
2059
|
+
_v$81 !== _p$.a && (_p$.a = _$setProp(_el$121, "fg", _v$81, _p$.a));
|
|
2060
|
+
_v$82 !== _p$.o && (_p$.o = _$setProp(_el$122, "fg", _v$82, _p$.o));
|
|
2061
|
+
_v$83 !== _p$.i && (_p$.i = _$setProp(_el$124, "borderColor", _v$83, _p$.i));
|
|
2062
|
+
_v$84 !== _p$.n && (_p$.n = _$setProp(_el$124, "backgroundColor", _v$84, _p$.n));
|
|
2063
|
+
_v$85 !== _p$.s && (_p$.s = _$setProp(_el$125, "syntaxStyle", _v$85, _p$.s));
|
|
2064
|
+
_v$86 !== _p$.h && (_p$.h = _$setProp(_el$125, "content", _v$86, _p$.h));
|
|
2065
|
+
_v$87 !== _p$.r && (_p$.r = _$setProp(_el$125, "fg", _v$87, _p$.r));
|
|
2066
|
+
_v$88 !== _p$.d && (_p$.d = _$setProp(_el$125, "bg", _v$88, _p$.d));
|
|
1562
2067
|
return _p$;
|
|
1563
2068
|
}, {
|
|
1564
2069
|
e: undefined,
|
|
@@ -1567,29 +2072,43 @@ function QuizBatchDialog(props) {
|
|
|
1567
2072
|
o: undefined,
|
|
1568
2073
|
i: undefined,
|
|
1569
2074
|
n: undefined,
|
|
1570
|
-
s: undefined
|
|
2075
|
+
s: undefined,
|
|
2076
|
+
h: undefined,
|
|
2077
|
+
r: undefined,
|
|
2078
|
+
d: undefined
|
|
1571
2079
|
});
|
|
1572
|
-
return _el$
|
|
2080
|
+
return _el$120;
|
|
1573
2081
|
}
|
|
1574
2082
|
}), null);
|
|
1575
|
-
_$insertNode(_el$
|
|
1576
|
-
_$setProp(_el$
|
|
1577
|
-
_$setProp(_el$
|
|
1578
|
-
_$
|
|
1579
|
-
|
|
1580
|
-
|
|
2083
|
+
_$insertNode(_el$126, _el$127);
|
|
2084
|
+
_$setProp(_el$126, "height", 1);
|
|
2085
|
+
_$setProp(_el$126, "justifyContent", "center");
|
|
2086
|
+
_$setProp(_el$127, "wrapMode", "wrap");
|
|
2087
|
+
_$insert(_el$127, (() => {
|
|
2088
|
+
var _c$7 = _$memo(() => phase() === "feedback");
|
|
2089
|
+
return () => _c$7() ? _$memo(() => !!(canScrollUpBatch() && canScrollDownBatch()))() ? `\u25B2 more above \xB7 \u25BC more below \u2014 d/u to scroll \xB7 Enter \u2192 next (${idx() + 1}/${props.request.quizzes.length})` : _$memo(() => !!canScrollDownBatch())() ? `\u25BC more below \u2014 d to scroll \xB7 Enter \u2192 next (${idx() + 1}/${props.request.quizzes.length})` : _$memo(() => !!canScrollUpBatch())() ? `\u25B2 more above \u2014 u to scroll \xB7 Enter \u2192 next (${idx() + 1}/${props.request.quizzes.length})` : `Enter \u2192 next (${idx() + 1}/${props.request.quizzes.length})` : _$memo(() => phase() === "classifying")() ? "Classifying your note..." : _$memo(() => focused() === "note")() ? "Enter submit note \u2192 classify \xB7 Tab/Esc back" : canScrollUpBatch() || canScrollDownBatch() ? "j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel \xB7 d/u scroll" : "j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel";
|
|
1581
2090
|
})());
|
|
1582
2091
|
_$effect((_p$) => {
|
|
1583
|
-
var _v$
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
_v$
|
|
1590
|
-
_v$
|
|
1591
|
-
_v$
|
|
1592
|
-
_v$
|
|
2092
|
+
var _v$89 = popupWidth(), _v$90 = popupHeight(), _v$91 = phase() === "feedback" ? feedback()?.correct ? theme().success : theme().error : theme().accent, _v$92 = theme().backgroundPanel, _v$93 = theme().accent, _v$94 = theme().background, _v$95 = theme().background, _v$96 = {
|
|
2093
|
+
visible: true,
|
|
2094
|
+
trackOptions: {
|
|
2095
|
+
backgroundColor: theme().background,
|
|
2096
|
+
foregroundColor: theme().borderActive
|
|
2097
|
+
}
|
|
2098
|
+
}, _v$97 = syntax(), _v$98 = decodeQuizText(cur().question), _v$99 = theme().text, _v$100 = theme().backgroundPanel, _v$101 = theme().textMuted;
|
|
2099
|
+
_v$89 !== _p$.e && (_p$.e = _$setProp(_el$76, "width", _v$89, _p$.e));
|
|
2100
|
+
_v$90 !== _p$.t && (_p$.t = _$setProp(_el$76, "height", _v$90, _p$.t));
|
|
2101
|
+
_v$91 !== _p$.a && (_p$.a = _$setProp(_el$76, "borderColor", _v$91, _p$.a));
|
|
2102
|
+
_v$92 !== _p$.o && (_p$.o = _$setProp(_el$76, "backgroundColor", _v$92, _p$.o));
|
|
2103
|
+
_v$93 !== _p$.i && (_p$.i = _$setProp(_el$77, "backgroundColor", _v$93, _p$.i));
|
|
2104
|
+
_v$94 !== _p$.n && (_p$.n = _$setProp(_el$78, "fg", _v$94, _p$.n));
|
|
2105
|
+
_v$95 !== _p$.s && (_p$.s = _$setProp(_el$82, "fg", _v$95, _p$.s));
|
|
2106
|
+
_v$96 !== _p$.h && (_p$.h = _$setProp(_el$84, "verticalScrollbarOptions", _v$96, _p$.h));
|
|
2107
|
+
_v$97 !== _p$.r && (_p$.r = _$setProp(_el$85, "syntaxStyle", _v$97, _p$.r));
|
|
2108
|
+
_v$98 !== _p$.d && (_p$.d = _$setProp(_el$85, "content", _v$98, _p$.d));
|
|
2109
|
+
_v$99 !== _p$.l && (_p$.l = _$setProp(_el$85, "fg", _v$99, _p$.l));
|
|
2110
|
+
_v$100 !== _p$.u && (_p$.u = _$setProp(_el$85, "bg", _v$100, _p$.u));
|
|
2111
|
+
_v$101 !== _p$.c && (_p$.c = _$setProp(_el$127, "fg", _v$101, _p$.c));
|
|
1593
2112
|
return _p$;
|
|
1594
2113
|
}, {
|
|
1595
2114
|
e: undefined,
|
|
@@ -1600,9 +2119,13 @@ function QuizBatchDialog(props) {
|
|
|
1600
2119
|
n: undefined,
|
|
1601
2120
|
s: undefined,
|
|
1602
2121
|
h: undefined,
|
|
1603
|
-
r: undefined
|
|
2122
|
+
r: undefined,
|
|
2123
|
+
d: undefined,
|
|
2124
|
+
l: undefined,
|
|
2125
|
+
u: undefined,
|
|
2126
|
+
c: undefined
|
|
1604
2127
|
});
|
|
1605
|
-
return _el$
|
|
2128
|
+
return _el$76;
|
|
1606
2129
|
})();
|
|
1607
2130
|
}
|
|
1608
2131
|
var tui = async (api) => {
|