@bojackduy/opencode-learn 1.0.0 → 1.1.1

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/tui.js CHANGED
@@ -1,8 +1,8 @@
1
1
  // @bun
2
2
  // plugins/learn-tui.tsx
3
+ import { use as _$use } from "@opentui/solid";
3
4
  import { createComponent as _$createComponent } from "@opentui/solid";
4
5
  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";
@@ -259,8 +259,14 @@ function QuizDialog(props) {
259
259
  const theme = () => props.api.theme.current;
260
260
  const syntax = () => syntaxStyle(theme());
261
261
  const dims = useTerminalDimensions();
262
- const popupWidth = () => Math.max(68, Math.min(dims().width - 4, 92));
263
- const popupHeight = () => Math.max(4, Math.min(24, dims().height - 2));
262
+ const popupWidth = () => {
263
+ const w = dims().width;
264
+ return Math.max(62, Math.min(w - 8, Math.floor(w * 0.8), 92));
265
+ };
266
+ const popupHeight = () => {
267
+ const h = dims().height;
268
+ return Math.max(14, Math.min(h - 6, Math.floor(h * 0.62), 26));
269
+ };
264
270
  const options = () => props.request.options;
265
271
  const correctSet = new Set(props.request.correctIndices);
266
272
  const isMulti = () => !!props.request.multiSelect;
@@ -583,17 +589,17 @@ function QuizDialog(props) {
583
589
  return;
584
590
  }
585
591
  if (focused() === "note") {
586
- if (key === "tab" || seq === "\t") {
592
+ if (lower === "tab" || seq === "\t") {
587
593
  prevent(evt);
588
594
  setFocused("options");
589
595
  return;
590
596
  }
591
- if (key === "escape" || key === "esc") {
597
+ if (lower === "escape" || lower === "esc") {
592
598
  prevent(evt);
593
599
  setFocused("options");
594
600
  return;
595
601
  }
596
- if (key === "enter" && (evt.ctrl || evt.meta)) {
602
+ if (lower === "enter" && (evt.ctrl || evt.meta)) {
597
603
  prevent(evt);
598
604
  setFocused("options");
599
605
  return;
@@ -641,27 +647,27 @@ function QuizDialog(props) {
641
647
  return dontKnowIdx() + 1;
642
648
  return dontKnowIdx();
643
649
  };
644
- if (key === "up" || key === "k" || seq === "\x1B[A") {
650
+ if (lower === "up" || isPlainKey(evt, "k") || seq === "\x1B[A") {
645
651
  prevent(evt);
646
652
  setOptionIndex((i) => Math.max(0, i - 1));
647
653
  return;
648
654
  }
649
- if (key === "down" || key === "j" || seq === "\x1B[B") {
655
+ if (lower === "down" || isPlainKey(evt, "j") || seq === "\x1B[B") {
650
656
  prevent(evt);
651
657
  setOptionIndex((i) => Math.min(maxIdx(), i + 1));
652
658
  return;
653
659
  }
654
- if (key === "tab" || seq === "\t") {
660
+ if (lower === "tab" || seq === "\t") {
655
661
  prevent(evt);
656
662
  setFocused("note");
657
663
  return;
658
664
  }
659
- if (key === "escape" || key === "esc") {
665
+ if (lower === "escape" || lower === "esc") {
660
666
  prevent(evt);
661
667
  props.onCancel();
662
668
  return;
663
669
  }
664
- if (key === "space" || seq === " ") {
670
+ if (lower === "space" || seq === " ") {
665
671
  prevent(evt);
666
672
  const idx = optionIndex();
667
673
  if (idx === dontKnowIdx())
@@ -686,7 +692,7 @@ function QuizDialog(props) {
686
692
  }
687
693
  return;
688
694
  }
689
- if (key === "enter" || seq === "\r") {
695
+ if (lower === "enter" || seq === "\r") {
690
696
  prevent(evt);
691
697
  const idx = optionIndex();
692
698
  if (idx === dontKnowIdx())
@@ -709,17 +715,17 @@ function QuizDialog(props) {
709
715
  }
710
716
  return;
711
717
  }
712
- if (seq === "ctrl+j" || key === "enter" && evt.ctrl) {
718
+ if (seq === "ctrl+j" || lower === "enter" && evt.ctrl) {
713
719
  prevent(evt);
714
720
  submitSelect();
715
721
  return;
716
722
  }
717
723
  });
718
724
  return (() => {
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");
725
+ var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("text"), _el$4 = _$createElement("text"), _el$8 = _$createElement("scrollbox"), _el$9 = _$createElement("box"), _el$0 = _$createElement("markdown"), _el$61 = _$createElement("box"), _el$62 = _$createElement("text");
720
726
  _$insertNode(_el$, _el$2);
721
- _$insertNode(_el$, _el$6);
722
- _$insertNode(_el$, _el$59);
727
+ _$insertNode(_el$, _el$8);
728
+ _$insertNode(_el$, _el$61);
723
729
  _$setProp(_el$, "flexDirection", "column");
724
730
  _$setProp(_el$, "border", true);
725
731
  _$setProp(_el$, "padding", 1);
@@ -739,27 +745,55 @@ function QuizDialog(props) {
739
745
  })());
740
746
  _$insertNode(_el$4, _$createTextNode(`learn`));
741
747
  _$setProp(_el$4, "dim", true);
742
- _$insertNode(_el$6, _el$7);
743
- _$use((el) => scrollRef = el, _el$6);
744
- _$setProp(_el$6, "flexGrow", 1);
745
- _$insertNode(_el$7, _el$8);
746
- _$setProp(_el$7, "flexDirection", "column");
747
- _$setProp(_el$7, "gap", 1);
748
- _$setProp(_el$7, "paddingLeft", 1);
749
- _$setProp(_el$7, "paddingRight", 1);
750
- _$setProp(_el$7, "paddingTop", 1);
751
- _$insert(_el$7, _$createComponent(Show, {
748
+ _$insert(_el$, _$createComponent(Show, {
749
+ get when() {
750
+ return _$memo(() => phase() === "feedback")() && (canScrollUp() || canScrollDown());
751
+ },
752
+ get children() {
753
+ var _el$6 = _$createElement("box"), _el$7 = _$createElement("text");
754
+ _$insertNode(_el$6, _el$7);
755
+ _$setProp(_el$6, "justifyContent", "center");
756
+ _$setProp(_el$6, "height", 1);
757
+ _$setProp(_el$6, "paddingLeft", 1);
758
+ _$setProp(_el$6, "paddingRight", 1);
759
+ _$setProp(_el$7, "bold", true);
760
+ _$insert(_el$7, (() => {
761
+ var _c$2 = _$memo(() => !!(canScrollUp() && canScrollDown()));
762
+ return () => _c$2() ? "\u25B2 more above \xB7 \u25BC more below \u2014 d / u to scroll" : canScrollDown() ? "\u25BC more below \u2014 press d to see explanation" : "\u25B2 more above \u2014 press u to scroll up";
763
+ })());
764
+ _$effect((_p$) => {
765
+ var _v$ = canScrollDown() ? theme().warning : theme().accent, _v$2 = theme().background;
766
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$6, "backgroundColor", _v$, _p$.e));
767
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$7, "fg", _v$2, _p$.t));
768
+ return _p$;
769
+ }, {
770
+ e: undefined,
771
+ t: undefined
772
+ });
773
+ return _el$6;
774
+ }
775
+ }), _el$8);
776
+ _$insertNode(_el$8, _el$9);
777
+ _$use((el) => scrollRef = el, _el$8);
778
+ _$setProp(_el$8, "flexGrow", 1);
779
+ _$insertNode(_el$9, _el$0);
780
+ _$setProp(_el$9, "flexDirection", "column");
781
+ _$setProp(_el$9, "gap", 1);
782
+ _$setProp(_el$9, "paddingLeft", 1);
783
+ _$setProp(_el$9, "paddingRight", 1);
784
+ _$setProp(_el$9, "paddingTop", 1);
785
+ _$insert(_el$9, _$createComponent(Show, {
752
786
  get when() {
753
787
  return props.request.details;
754
788
  },
755
789
  get children() {
756
- var _el$9 = _$createElement("markdown");
790
+ var _el$1 = _$createElement("markdown");
757
791
  _$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));
792
+ var _v$3 = syntax(), _v$4 = decodeQuizText(props.request.details), _v$5 = theme().textMuted, _v$6 = theme().backgroundPanel;
793
+ _v$3 !== _p$.e && (_p$.e = _$setProp(_el$1, "syntaxStyle", _v$3, _p$.e));
794
+ _v$4 !== _p$.t && (_p$.t = _$setProp(_el$1, "content", _v$4, _p$.t));
795
+ _v$5 !== _p$.a && (_p$.a = _$setProp(_el$1, "fg", _v$5, _p$.a));
796
+ _v$6 !== _p$.o && (_p$.o = _$setProp(_el$1, "bg", _v$6, _p$.o));
763
797
  return _p$;
764
798
  }, {
765
799
  e: undefined,
@@ -767,23 +801,23 @@ function QuizDialog(props) {
767
801
  a: undefined,
768
802
  o: undefined
769
803
  });
770
- return _el$9;
804
+ return _el$1;
771
805
  }
772
806
  }), null);
773
- _$insert(_el$6, _$createComponent(Show, {
807
+ _$insert(_el$8, _$createComponent(Show, {
774
808
  get when() {
775
809
  return phase() === "select";
776
810
  },
777
811
  get children() {
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");
779
- _$insertNode(_el$0, _el$11);
780
- _$insertNode(_el$0, _el$19);
781
- _$insertNode(_el$0, _el$27);
782
- _$setProp(_el$0, "flexDirection", "column");
783
- _$setProp(_el$0, "gap", 0);
784
- _$setProp(_el$0, "padding", 1);
785
- _$setProp(_el$0, "border", true);
786
- _$insert(_el$0, _$createComponent(For, {
812
+ var _el$10 = _$createElement("box"), _el$13 = _$createElement("box"), _el$14 = _$createElement("box"), _el$15 = _$createElement("text"), _el$16 = _$createElement("box"), _el$17 = _$createElement("text"), _el$18 = _$createElement("box"), _el$19 = _$createElement("text"), _el$21 = _$createElement("box"), _el$22 = _$createElement("box"), _el$23 = _$createElement("text"), _el$27 = _$createElement("box"), _el$29 = _$createElement("box"), _el$30 = _$createElement("text"), _el$31 = _$createElement("text");
813
+ _$insertNode(_el$10, _el$13);
814
+ _$insertNode(_el$10, _el$21);
815
+ _$insertNode(_el$10, _el$29);
816
+ _$setProp(_el$10, "flexDirection", "column");
817
+ _$setProp(_el$10, "gap", 0);
818
+ _$setProp(_el$10, "padding", 1);
819
+ _$setProp(_el$10, "border", true);
820
+ _$insert(_el$10, _$createComponent(For, {
787
821
  get each() {
788
822
  return options();
789
823
  },
@@ -792,39 +826,39 @@ function QuizDialog(props) {
792
826
  const isFocused = () => focused() === "options" && optionIndex() === idx;
793
827
  const isSelected = () => selected().has(`opt:${idx}`);
794
828
  return (() => {
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" : " ");
829
+ var _el$63 = _$createElement("box"), _el$64 = _$createElement("box"), _el$65 = _$createElement("text"), _el$66 = _$createElement("box"), _el$67 = _$createElement("text"), _el$68 = _$createElement("box"), _el$69 = _$createElement("text"), _el$70 = _$createTextNode(`. `);
830
+ _$insertNode(_el$63, _el$64);
831
+ _$insertNode(_el$63, _el$66);
832
+ _$insertNode(_el$63, _el$68);
833
+ _$setProp(_el$63, "flexDirection", "row");
834
+ _$setProp(_el$63, "alignItems", "flexStart");
835
+ _$setProp(_el$63, "gap", 1);
836
+ _$setProp(_el$63, "paddingLeft", 1);
837
+ _$setProp(_el$63, "paddingRight", 1);
808
838
  _$insertNode(_el$64, _el$65);
809
839
  _$setProp(_el$64, "width", 2);
810
840
  _$setProp(_el$64, "alignItems", "center");
811
- _$insert(_el$65, (() => {
812
- var _c$4 = _$memo(() => !!isMulti());
813
- return () => _c$4() ? isSelected() ? "\u2611" : "\u2610" : isSelected() ? "\u2B22" : "\u25CB";
814
- })());
841
+ _$insert(_el$65, () => isFocused() ? "\u25B8" : " ");
815
842
  _$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);
843
+ _$setProp(_el$66, "width", 2);
844
+ _$setProp(_el$66, "alignItems", "center");
845
+ _$insert(_el$67, (() => {
846
+ var _c$5 = _$memo(() => !!isMulti());
847
+ return () => _c$5() ? isSelected() ? "\u2611" : "\u2610" : isSelected() ? "\u2B22" : "\u25CB";
848
+ })());
849
+ _$insertNode(_el$68, _el$69);
850
+ _$setProp(_el$68, "flexGrow", 1);
851
+ _$insertNode(_el$69, _el$70);
852
+ _$setProp(_el$69, "wrapMode", "wrap");
853
+ _$insert(_el$69, idx + 1, _el$70);
854
+ _$insert(_el$69, () => opt.label, null);
821
855
  _$effect((_p$) => {
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));
856
+ var _v$52 = isFocused() ? theme().backgroundElement : undefined, _v$53 = isFocused() ? theme().accent : theme().textMuted, _v$54 = isMulti() ? isSelected() ? theme().success : theme().textMuted : isSelected() ? theme().accent : theme().textMuted, _v$55 = isSelected() ? theme().text : theme().textMuted, _v$56 = isFocused();
857
+ _v$52 !== _p$.e && (_p$.e = _$setProp(_el$63, "backgroundColor", _v$52, _p$.e));
858
+ _v$53 !== _p$.t && (_p$.t = _$setProp(_el$65, "fg", _v$53, _p$.t));
859
+ _v$54 !== _p$.a && (_p$.a = _$setProp(_el$67, "fg", _v$54, _p$.a));
860
+ _v$55 !== _p$.o && (_p$.o = _$setProp(_el$69, "fg", _v$55, _p$.o));
861
+ _v$56 !== _p$.i && (_p$.i = _$setProp(_el$69, "bold", _v$56, _p$.i));
828
862
  return _p$;
829
863
  }, {
830
864
  e: undefined,
@@ -833,133 +867,133 @@ function QuizDialog(props) {
833
867
  o: undefined,
834
868
  i: undefined
835
869
  });
836
- return _el$61;
870
+ return _el$63;
837
871
  })();
838
872
  }
839
- }), _el$11);
840
- _$insert(_el$0, _$createComponent(Show, {
873
+ }), _el$13);
874
+ _$insert(_el$10, _$createComponent(Show, {
841
875
  get when() {
842
876
  return options().length > 0;
843
877
  },
844
878
  get children() {
845
- var _el$1 = _$createElement("box"), _el$10 = _$createElement("text");
846
- _$insertNode(_el$1, _el$10);
847
- _$setProp(_el$1, "height", 1);
848
- _$insert(_el$10, () => "\u2500".repeat(Math.max(20, popupWidth() - 8)));
849
- _$effect((_$p) => _$setProp(_el$10, "fg", theme().borderSubtle, _$p));
850
- return _el$1;
879
+ var _el$11 = _$createElement("box"), _el$12 = _$createElement("text");
880
+ _$insertNode(_el$11, _el$12);
881
+ _$setProp(_el$11, "height", 1);
882
+ _$insert(_el$12, () => "\u2500".repeat(Math.max(20, popupWidth() - 8)));
883
+ _$effect((_$p) => _$setProp(_el$12, "fg", theme().borderSubtle, _$p));
884
+ return _el$11;
851
885
  }
852
- }), _el$11);
853
- _$insertNode(_el$11, _el$12);
854
- _$insertNode(_el$11, _el$14);
855
- _$insertNode(_el$11, _el$16);
856
- _$setProp(_el$11, "flexDirection", "row");
857
- _$setProp(_el$11, "alignItems", "flexStart");
858
- _$setProp(_el$11, "gap", 1);
859
- _$setProp(_el$11, "paddingLeft", 1);
860
- _$setProp(_el$11, "paddingRight", 1);
861
- _$insertNode(_el$12, _el$13);
862
- _$setProp(_el$12, "width", 2);
863
- _$setProp(_el$12, "alignItems", "center");
864
- _$insert(_el$13, () => focused() === "options" && optionIndex() === dontKnowIdx() ? "\u25B8" : " ");
886
+ }), _el$13);
887
+ _$insertNode(_el$13, _el$14);
888
+ _$insertNode(_el$13, _el$16);
889
+ _$insertNode(_el$13, _el$18);
890
+ _$setProp(_el$13, "flexDirection", "row");
891
+ _$setProp(_el$13, "alignItems", "flexStart");
892
+ _$setProp(_el$13, "gap", 1);
893
+ _$setProp(_el$13, "paddingLeft", 1);
894
+ _$setProp(_el$13, "paddingRight", 1);
865
895
  _$insertNode(_el$14, _el$15);
866
896
  _$setProp(_el$14, "width", 2);
867
897
  _$setProp(_el$14, "alignItems", "center");
868
- _$insert(_el$15, () => dontKnow() ? "\u2611" : "\u2610");
898
+ _$insert(_el$15, () => focused() === "options" && optionIndex() === dontKnowIdx() ? "\u25B8" : " ");
869
899
  _$insertNode(_el$16, _el$17);
870
- _$setProp(_el$16, "flexGrow", 1);
871
- _$insertNode(_el$17, _$createTextNode(`I don't know \u2014 genuine gap, not a guess`));
872
- _$setProp(_el$17, "italic", true);
873
- _$setProp(_el$17, "wrapMode", "wrap");
874
- _$insertNode(_el$19, _el$20);
875
- _$insertNode(_el$19, _el$25);
876
- _$setProp(_el$19, "flexDirection", "column");
877
- _$setProp(_el$19, "gap", 0);
878
- _$setProp(_el$19, "paddingTop", 1);
879
- _$insertNode(_el$20, _el$21);
880
- _$setProp(_el$20, "flexDirection", "row");
881
- _$setProp(_el$20, "alignItems", "center");
882
- _$setProp(_el$20, "gap", 1);
883
- _$insertNode(_el$21, _$createTextNode(`\u270E Note (optional)`));
884
- _$insert(_el$20, _$createComponent(Show, {
900
+ _$setProp(_el$16, "width", 2);
901
+ _$setProp(_el$16, "alignItems", "center");
902
+ _$insert(_el$17, () => dontKnow() ? "\u2611" : "\u2610");
903
+ _$insertNode(_el$18, _el$19);
904
+ _$setProp(_el$18, "flexGrow", 1);
905
+ _$insertNode(_el$19, _$createTextNode(`I don't know \u2014 genuine gap, not a guess`));
906
+ _$setProp(_el$19, "italic", true);
907
+ _$setProp(_el$19, "wrapMode", "wrap");
908
+ _$insertNode(_el$21, _el$22);
909
+ _$insertNode(_el$21, _el$27);
910
+ _$setProp(_el$21, "flexDirection", "column");
911
+ _$setProp(_el$21, "gap", 0);
912
+ _$setProp(_el$21, "paddingTop", 1);
913
+ _$insertNode(_el$22, _el$23);
914
+ _$setProp(_el$22, "flexDirection", "row");
915
+ _$setProp(_el$22, "alignItems", "center");
916
+ _$setProp(_el$22, "gap", 1);
917
+ _$insertNode(_el$23, _$createTextNode(`\u270E Note (optional)`));
918
+ _$insert(_el$22, _$createComponent(Show, {
885
919
  get when() {
886
920
  return focused() === "note";
887
921
  },
888
922
  get children() {
889
- var _el$23 = _$createElement("text");
890
- _$insertNode(_el$23, _$createTextNode(`\u25CF editing`));
891
- _$effect((_$p) => _$setProp(_el$23, "fg", theme().accent, _$p));
892
- return _el$23;
923
+ var _el$25 = _$createElement("text");
924
+ _$insertNode(_el$25, _$createTextNode(`\u25CF editing`));
925
+ _$effect((_$p) => _$setProp(_el$25, "fg", theme().accent, _$p));
926
+ return _el$25;
893
927
  }
894
928
  }), null);
895
- _$setProp(_el$25, "border", true);
896
- _$setProp(_el$25, "paddingLeft", 1);
897
- _$setProp(_el$25, "paddingRight", 1);
898
- _$insert(_el$25, _$createComponent(Show, {
929
+ _$setProp(_el$27, "border", true);
930
+ _$setProp(_el$27, "paddingLeft", 1);
931
+ _$setProp(_el$27, "paddingRight", 1);
932
+ _$insert(_el$27, _$createComponent(Show, {
899
933
  get when() {
900
934
  return focused() === "note";
901
935
  },
902
936
  get fallback() {
903
937
  return (() => {
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;
938
+ var _el$71 = _$createElement("text");
939
+ _$setProp(_el$71, "wrapMode", "wrap");
940
+ _$insert(_el$71, () => note() || "Tab to edit \xB7 share what you were thinking");
941
+ _$effect((_$p) => _$setProp(_el$71, "fg", note() ? theme().text : theme().textMuted, _$p));
942
+ return _el$71;
909
943
  })();
910
944
  },
911
945
  get children() {
912
- var _el$26 = _$createElement("input");
913
- _$use((el) => noteInputEl = el, _el$26);
914
- _$setProp(_el$26, "onInput", (value) => setNote(typeof value === "string" ? value : value?.target?.value ?? value?.value ?? String(value ?? "")));
915
- _$setProp(_el$26, "onSubmit", () => {
946
+ var _el$28 = _$createElement("input");
947
+ _$use((el) => noteInputEl = el, _el$28);
948
+ _$setProp(_el$28, "onInput", (value) => setNote(typeof value === "string" ? value : value?.target?.value ?? value?.value ?? String(value ?? "")));
949
+ _$setProp(_el$28, "onSubmit", () => {
916
950
  if (!selected().size && !dontKnow() && note().trim())
917
951
  submitSelect();
918
952
  else
919
953
  setFocused("options");
920
954
  });
921
- _$setProp(_el$26, "placeholder", "what was on your mind? (Enter to submit note \u2192 classify)");
922
- _$effect((_$p) => _$setProp(_el$26, "value", note(), _$p));
923
- return _el$26;
955
+ _$setProp(_el$28, "placeholder", "what was on your mind? (Enter to submit note \u2192 classify)");
956
+ _$effect((_$p) => _$setProp(_el$28, "value", note(), _$p));
957
+ return _el$28;
924
958
  }
925
959
  }));
926
- _$insertNode(_el$27, _el$28);
927
- _$insertNode(_el$27, _el$29);
928
- _$setProp(_el$27, "flexDirection", "row");
929
- _$setProp(_el$27, "justifyContent", "space-between");
930
- _$setProp(_el$27, "paddingTop", 1);
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" : "";
960
+ _$insertNode(_el$29, _el$30);
961
+ _$insertNode(_el$29, _el$31);
962
+ _$setProp(_el$29, "flexDirection", "row");
963
+ _$setProp(_el$29, "justifyContent", "space-between");
964
+ _$setProp(_el$29, "paddingTop", 1);
965
+ _$insert(_el$30, (() => {
966
+ var _c$3 = _$memo(() => !!isMulti());
967
+ return () => _c$3() ? `${selected().size} selected${dontKnow() ? " \xB7 I don't know" : ""}` : _$memo(() => !!(note().trim() && !selected().size && !dontKnow()))() ? "note \u2192 classify" : dontKnow() ? "I don't know" : "";
934
968
  })());
935
- _$insert(_el$29, () => focused() === "note" ? "Tab/Esc back" : "");
936
- _$insert(_el$0, _$createComponent(Show, {
969
+ _$insert(_el$31, () => focused() === "note" ? "Tab/Esc back" : "");
970
+ _$insert(_el$10, _$createComponent(Show, {
937
971
  get when() {
938
972
  return isMulti();
939
973
  },
940
974
  get children() {
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" : " ");
975
+ var _el$32 = _$createElement("box"), _el$33 = _$createElement("box"), _el$34 = _$createElement("text"), _el$35 = _$createElement("text"), _el$36 = _$createTextNode(`\u21B3 Submit`);
976
+ _$insertNode(_el$32, _el$33);
977
+ _$setProp(_el$32, "justifyContent", "center");
978
+ _$setProp(_el$32, "paddingTop", 1);
954
979
  _$insertNode(_el$33, _el$34);
955
- _$setProp(_el$33, "bold", true);
956
- _$insert(_el$33, () => note().trim() && !selected().size && !dontKnow() ? " note" : "", null);
980
+ _$insertNode(_el$33, _el$35);
981
+ _$setProp(_el$33, "flexDirection", "row");
982
+ _$setProp(_el$33, "alignItems", "center");
983
+ _$setProp(_el$33, "gap", 1);
984
+ _$setProp(_el$33, "border", true);
985
+ _$setProp(_el$33, "paddingLeft", 2);
986
+ _$setProp(_el$33, "paddingRight", 2);
987
+ _$insert(_el$34, () => focused() === "options" && optionIndex() === submitIdx() ? "\u25B8" : " ");
988
+ _$insertNode(_el$35, _el$36);
989
+ _$setProp(_el$35, "bold", true);
990
+ _$insert(_el$35, () => note().trim() && !selected().size && !dontKnow() ? " note" : "", null);
957
991
  _$effect((_p$) => {
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));
992
+ var _v$7 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : selected().size > 0 || dontKnow() || note().trim() ? theme().success : theme().borderSubtle, _v$8 = focused() === "options" && optionIndex() === submitIdx() ? theme().backgroundElement : selected().size > 0 || dontKnow() || note().trim() ? theme().success : theme().background, _v$9 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : selected().size > 0 || dontKnow() || note().trim() ? theme().background : theme().textMuted, _v$0 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : selected().size > 0 || dontKnow() || note().trim() ? theme().background : theme().textMuted;
993
+ _v$7 !== _p$.e && (_p$.e = _$setProp(_el$33, "borderColor", _v$7, _p$.e));
994
+ _v$8 !== _p$.t && (_p$.t = _$setProp(_el$33, "backgroundColor", _v$8, _p$.t));
995
+ _v$9 !== _p$.a && (_p$.a = _$setProp(_el$34, "fg", _v$9, _p$.a));
996
+ _v$0 !== _p$.o && (_p$.o = _$setProp(_el$35, "fg", _v$0, _p$.o));
963
997
  return _p$;
964
998
  }, {
965
999
  e: undefined,
@@ -967,55 +1001,55 @@ function QuizDialog(props) {
967
1001
  a: undefined,
968
1002
  o: undefined
969
1003
  });
970
- return _el$30;
1004
+ return _el$32;
971
1005
  }
972
1006
  }), null);
973
- _$insert(_el$0, _$createComponent(Show, {
1007
+ _$insert(_el$10, _$createComponent(Show, {
974
1008
  get when() {
975
1009
  return _$memo(() => !!(!isMulti() && note().trim() && !selected().size))() && !dontKnow();
976
1010
  },
977
1011
  get children() {
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);
1012
+ var _el$37 = _$createElement("box"), _el$38 = _$createElement("box"), _el$39 = _$createElement("text");
1013
+ _$insertNode(_el$37, _el$38);
1014
+ _$setProp(_el$37, "justifyContent", "center");
1015
+ _$setProp(_el$37, "paddingTop", 1);
1016
+ _$insertNode(_el$38, _el$39);
1017
+ _$setProp(_el$38, "flexDirection", "row");
1018
+ _$setProp(_el$38, "alignItems", "center");
1019
+ _$setProp(_el$38, "gap", 1);
1020
+ _$setProp(_el$38, "border", true);
1021
+ _$setProp(_el$38, "paddingLeft", 2);
1022
+ _$setProp(_el$38, "paddingRight", 2);
1023
+ _$insertNode(_el$39, _$createTextNode(`\u21B3 Submit note \u2192 classify`));
1024
+ _$setProp(_el$39, "bold", true);
991
1025
  _$effect((_p$) => {
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));
1026
+ var _v$1 = focused() === "options" && optionIndex() === dontKnowIdx() + 1 ? theme().accent : theme().success, _v$10 = focused() === "options" && optionIndex() === dontKnowIdx() + 1 ? theme().backgroundElement : theme().success, _v$11 = focused() === "options" && optionIndex() === dontKnowIdx() + 1 ? theme().accent : theme().background;
1027
+ _v$1 !== _p$.e && (_p$.e = _$setProp(_el$38, "borderColor", _v$1, _p$.e));
1028
+ _v$10 !== _p$.t && (_p$.t = _$setProp(_el$38, "backgroundColor", _v$10, _p$.t));
1029
+ _v$11 !== _p$.a && (_p$.a = _$setProp(_el$39, "fg", _v$11, _p$.a));
996
1030
  return _p$;
997
1031
  }, {
998
1032
  e: undefined,
999
1033
  t: undefined,
1000
1034
  a: undefined
1001
1035
  });
1002
- return _el$35;
1036
+ return _el$37;
1003
1037
  }
1004
1038
  }), null);
1005
1039
  _$effect((_p$) => {
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));
1040
+ var _v$12 = theme().borderSubtle, _v$13 = theme().background, _v$14 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().backgroundElement : undefined, _v$15 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().accent : theme().textMuted, _v$16 = dontKnow() ? theme().warning : theme().textMuted, _v$17 = dontKnow() ? theme().warning : theme().textMuted, _v$18 = focused() === "note" ? theme().accent : theme().textMuted, _v$19 = focused() === "note", _v$20 = focused() === "note" ? theme().accent : theme().borderSubtle, _v$21 = theme().backgroundElement, _v$22 = theme().textMuted, _v$23 = theme().textMuted;
1041
+ _v$12 !== _p$.e && (_p$.e = _$setProp(_el$10, "borderColor", _v$12, _p$.e));
1042
+ _v$13 !== _p$.t && (_p$.t = _$setProp(_el$10, "backgroundColor", _v$13, _p$.t));
1043
+ _v$14 !== _p$.a && (_p$.a = _$setProp(_el$13, "backgroundColor", _v$14, _p$.a));
1044
+ _v$15 !== _p$.o && (_p$.o = _$setProp(_el$15, "fg", _v$15, _p$.o));
1045
+ _v$16 !== _p$.i && (_p$.i = _$setProp(_el$17, "fg", _v$16, _p$.i));
1046
+ _v$17 !== _p$.n && (_p$.n = _$setProp(_el$19, "fg", _v$17, _p$.n));
1047
+ _v$18 !== _p$.s && (_p$.s = _$setProp(_el$23, "fg", _v$18, _p$.s));
1048
+ _v$19 !== _p$.h && (_p$.h = _$setProp(_el$23, "bold", _v$19, _p$.h));
1049
+ _v$20 !== _p$.r && (_p$.r = _$setProp(_el$27, "borderColor", _v$20, _p$.r));
1050
+ _v$21 !== _p$.d && (_p$.d = _$setProp(_el$27, "backgroundColor", _v$21, _p$.d));
1051
+ _v$22 !== _p$.l && (_p$.l = _$setProp(_el$30, "fg", _v$22, _p$.l));
1052
+ _v$23 !== _p$.u && (_p$.u = _$setProp(_el$31, "fg", _v$23, _p$.u));
1019
1053
  return _p$;
1020
1054
  }, {
1021
1055
  e: undefined,
@@ -1031,37 +1065,37 @@ function QuizDialog(props) {
1031
1065
  l: undefined,
1032
1066
  u: undefined
1033
1067
  });
1034
- return _el$0;
1068
+ return _el$10;
1035
1069
  }
1036
1070
  }), null);
1037
- _$insert(_el$6, _$createComponent(Show, {
1071
+ _$insert(_el$8, _$createComponent(Show, {
1038
1072
  get when() {
1039
1073
  return phase() === "classifying";
1040
1074
  },
1041
1075
  get children() {
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);
1053
- _$insertNode(_el$42, _el$43);
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`));
1076
+ var _el$41 = _$createElement("box"), _el$42 = _$createElement("text"), _el$44 = _$createElement("text"), _el$45 = _$createTextNode(`"`), _el$46 = _$createTextNode(`"`), _el$47 = _$createElement("text");
1077
+ _$insertNode(_el$41, _el$42);
1078
+ _$insertNode(_el$41, _el$44);
1079
+ _$insertNode(_el$41, _el$47);
1080
+ _$setProp(_el$41, "flexDirection", "column");
1081
+ _$setProp(_el$41, "gap", 1);
1082
+ _$setProp(_el$41, "padding", 1);
1083
+ _$setProp(_el$41, "border", true);
1084
+ _$setProp(_el$41, "alignItems", "center");
1085
+ _$insertNode(_el$42, _$createTextNode(`\u25D0 Classifying your note...`));
1086
+ _$setProp(_el$42, "bold", true);
1087
+ _$insertNode(_el$44, _el$45);
1088
+ _$insertNode(_el$44, _el$46);
1089
+ _$setProp(_el$44, "wrapMode", "wrap");
1090
+ _$insert(_el$44, note, _el$46);
1091
+ _$insertNode(_el$47, _$createTextNode(`Mapping to options \u2014 please wait`));
1058
1092
  _$effect((_p$) => {
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));
1093
+ var _v$24 = theme().accent, _v$25 = theme().background, _v$26 = theme().accent, _v$27 = theme().textMuted, _v$28 = theme().textMuted;
1094
+ _v$24 !== _p$.e && (_p$.e = _$setProp(_el$41, "borderColor", _v$24, _p$.e));
1095
+ _v$25 !== _p$.t && (_p$.t = _$setProp(_el$41, "backgroundColor", _v$25, _p$.t));
1096
+ _v$26 !== _p$.a && (_p$.a = _$setProp(_el$42, "fg", _v$26, _p$.a));
1097
+ _v$27 !== _p$.o && (_p$.o = _$setProp(_el$44, "fg", _v$27, _p$.o));
1098
+ _v$28 !== _p$.i && (_p$.i = _$setProp(_el$47, "fg", _v$28, _p$.i));
1065
1099
  return _p$;
1066
1100
  }, {
1067
1101
  e: undefined,
@@ -1070,23 +1104,23 @@ function QuizDialog(props) {
1070
1104
  o: undefined,
1071
1105
  i: undefined
1072
1106
  });
1073
- return _el$39;
1107
+ return _el$41;
1074
1108
  }
1075
1109
  }), null);
1076
- _$insert(_el$6, _$createComponent(Show, {
1110
+ _$insert(_el$8, _$createComponent(Show, {
1077
1111
  get when() {
1078
1112
  return phase() === "feedback";
1079
1113
  },
1080
1114
  get children() {
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, {
1115
+ var _el$49 = _$createElement("box"), _el$50 = _$createElement("box"), _el$51 = _$createElement("text"), _el$55 = _$createElement("text"), _el$56 = _$createTextNode(`Correct: `), _el$59 = _$createElement("box"), _el$60 = _$createElement("markdown");
1116
+ _$insertNode(_el$49, _el$50);
1117
+ _$insertNode(_el$49, _el$55);
1118
+ _$insertNode(_el$49, _el$59);
1119
+ _$setProp(_el$49, "flexDirection", "column");
1120
+ _$setProp(_el$49, "gap", 1);
1121
+ _$setProp(_el$49, "padding", 1);
1122
+ _$setProp(_el$49, "border", true);
1123
+ _$insert(_el$49, _$createComponent(For, {
1090
1124
  get each() {
1091
1125
  return options();
1092
1126
  },
@@ -1115,86 +1149,86 @@ function QuizDialog(props) {
1115
1149
  bg = theme().warning;
1116
1150
  }
1117
1151
  return (() => {
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);
1152
+ var _el$72 = _$createElement("box"), _el$73 = _$createElement("box"), _el$74 = _$createElement("text"), _el$75 = _$createElement("box"), _el$76 = _$createElement("text"), _el$77 = _$createTextNode(`. `);
1153
+ _$insertNode(_el$72, _el$73);
1154
+ _$insertNode(_el$72, _el$75);
1155
+ _$setProp(_el$72, "flexDirection", "row");
1156
+ _$setProp(_el$72, "alignItems", "flexStart");
1157
+ _$setProp(_el$72, "gap", 1);
1158
+ _$setProp(_el$72, "paddingLeft", 1);
1159
+ _$setProp(_el$72, "backgroundColor", bg);
1132
1160
  _$insertNode(_el$73, _el$74);
1133
- _$setProp(_el$73, "flexGrow", 1);
1134
- _$insertNode(_el$74, _el$75);
1161
+ _$setProp(_el$73, "width", 2);
1162
+ _$setProp(_el$73, "alignItems", "center");
1135
1163
  _$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;
1164
+ _$setProp(_el$74, "bold", true);
1165
+ _$insert(_el$74, icon);
1166
+ _$insertNode(_el$75, _el$76);
1167
+ _$setProp(_el$75, "flexGrow", 1);
1168
+ _$insertNode(_el$76, _el$77);
1169
+ _$setProp(_el$76, "fg", fg);
1170
+ _$setProp(_el$76, "wrapMode", "wrap");
1171
+ _$insert(_el$76, idx, _el$77);
1172
+ _$insert(_el$76, () => opt.label, null);
1173
+ return _el$72;
1140
1174
  })();
1141
1175
  }
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, {
1176
+ }), _el$50);
1177
+ _$insertNode(_el$50, _el$51);
1178
+ _$setProp(_el$50, "height", 1);
1179
+ _$insert(_el$51, () => "\u2500".repeat(Math.max(20, popupWidth() - 12)));
1180
+ _$insert(_el$49, _$createComponent(Show, {
1147
1181
  get when() {
1148
1182
  return dontKnow();
1149
1183
  },
1150
1184
  get children() {
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;
1185
+ var _el$52 = _$createElement("text");
1186
+ _$insertNode(_el$52, _$createTextNode(`\u25CF You said: I don't know \u2014 genuine gap`));
1187
+ _$effect((_$p) => _$setProp(_el$52, "fg", theme().warning, _$p));
1188
+ return _el$52;
1155
1189
  }
1156
- }), _el$53);
1157
- _$insert(_el$47, _$createComponent(Show, {
1190
+ }), _el$55);
1191
+ _$insert(_el$49, _$createComponent(Show, {
1158
1192
  get when() {
1159
1193
  return !dontKnow();
1160
1194
  },
1161
1195
  get children() {
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;
1196
+ var _el$54 = _$createElement("text");
1197
+ _$setProp(_el$54, "bold", true);
1198
+ _$insert(_el$54, () => feedback()?.correct ? "\u2713 Correct! Well located." : "\u2717 Incorrect \u2014 nice try, let's fix the edge.");
1199
+ _$effect((_$p) => _$setProp(_el$54, "fg", feedback()?.correct ? theme().success : theme().error, _$p));
1200
+ return _el$54;
1167
1201
  }
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, {
1202
+ }), _el$55);
1203
+ _$insertNode(_el$55, _el$56);
1204
+ _$insert(_el$55, () => props.request.correctIndices.map((i) => `${i}. ${options()[i - 1]?.label}`).join(", "), null);
1205
+ _$insert(_el$49, _$createComponent(Show, {
1172
1206
  get when() {
1173
1207
  return note();
1174
1208
  },
1175
1209
  get children() {
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;
1210
+ var _el$57 = _$createElement("text"), _el$58 = _$createTextNode(`Your note: `);
1211
+ _$insertNode(_el$57, _el$58);
1212
+ _$insert(_el$57, note, null);
1213
+ _$effect((_$p) => _$setProp(_el$57, "fg", theme().textMuted, _$p));
1214
+ return _el$57;
1181
1215
  }
1182
- }), _el$57);
1183
- _$insertNode(_el$57, _el$58);
1184
- _$setProp(_el$57, "border", true);
1185
- _$setProp(_el$57, "padding", 1);
1216
+ }), _el$59);
1217
+ _$insertNode(_el$59, _el$60);
1218
+ _$setProp(_el$59, "border", true);
1219
+ _$setProp(_el$59, "padding", 1);
1186
1220
  _$effect((_p$) => {
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));
1221
+ var _v$29 = feedback()?.correct ? theme().success : theme().error, _v$30 = theme().background, _v$31 = theme().borderSubtle, _v$32 = theme().textMuted, _v$33 = theme().borderSubtle, _v$34 = theme().backgroundPanel, _v$35 = syntax(), _v$36 = decodeQuizText(props.request.explanation), _v$37 = theme().text, _v$38 = theme().backgroundPanel;
1222
+ _v$29 !== _p$.e && (_p$.e = _$setProp(_el$49, "borderColor", _v$29, _p$.e));
1223
+ _v$30 !== _p$.t && (_p$.t = _$setProp(_el$49, "backgroundColor", _v$30, _p$.t));
1224
+ _v$31 !== _p$.a && (_p$.a = _$setProp(_el$51, "fg", _v$31, _p$.a));
1225
+ _v$32 !== _p$.o && (_p$.o = _$setProp(_el$55, "fg", _v$32, _p$.o));
1226
+ _v$33 !== _p$.i && (_p$.i = _$setProp(_el$59, "borderColor", _v$33, _p$.i));
1227
+ _v$34 !== _p$.n && (_p$.n = _$setProp(_el$59, "backgroundColor", _v$34, _p$.n));
1228
+ _v$35 !== _p$.s && (_p$.s = _$setProp(_el$60, "syntaxStyle", _v$35, _p$.s));
1229
+ _v$36 !== _p$.h && (_p$.h = _$setProp(_el$60, "content", _v$36, _p$.h));
1230
+ _v$37 !== _p$.r && (_p$.r = _$setProp(_el$60, "fg", _v$37, _p$.r));
1231
+ _v$38 !== _p$.d && (_p$.d = _$setProp(_el$60, "bg", _v$38, _p$.d));
1198
1232
  return _p$;
1199
1233
  }, {
1200
1234
  e: undefined,
@@ -1208,38 +1242,98 @@ function QuizDialog(props) {
1208
1242
  r: undefined,
1209
1243
  d: undefined
1210
1244
  });
1211
- return _el$47;
1245
+ return _el$49;
1212
1246
  }
1213
1247
  }), null);
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, (() => {
1219
- var _c$3 = _$memo(() => phase() === "feedback");
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";
1248
+ _$insertNode(_el$61, _el$62);
1249
+ _$setProp(_el$61, "height", 1);
1250
+ _$setProp(_el$61, "justifyContent", "center");
1251
+ _$setProp(_el$62, "wrapMode", "wrap");
1252
+ _$insert(_el$62, (() => {
1253
+ var _c$4 = _$memo(() => phase() === "feedback");
1254
+ return () => _c$4() ? _$memo(() => !!(canScrollUp() && canScrollDown()))() ? [(() => {
1255
+ var _el$78 = _$createElement("span");
1256
+ _$insertNode(_el$78, _$createTextNode(`\u25B2 more above \xB7 \u25BC more below`));
1257
+ _$effect((_$p) => _$setProp(_el$78, "style", {
1258
+ fg: theme.warning,
1259
+ bold: true
1260
+ }, _$p));
1261
+ return _el$78;
1262
+ })(), (() => {
1263
+ var _el$80 = _$createElement("span");
1264
+ _$insertNode(_el$80, _$createTextNode(` \u2014 d/u to scroll \xB7 Enter to continue`));
1265
+ _$effect((_$p) => _$setProp(_el$80, "style", {
1266
+ fg: theme().textMuted
1267
+ }, _$p));
1268
+ return _el$80;
1269
+ })()] : _$memo(() => !!canScrollDown())() ? [(() => {
1270
+ var _el$82 = _$createElement("span");
1271
+ _$insertNode(_el$82, _$createTextNode(`\u25BC more below`));
1272
+ _$effect((_$p) => _$setProp(_el$82, "style", {
1273
+ fg: theme.warning,
1274
+ bold: true
1275
+ }, _$p));
1276
+ return _el$82;
1277
+ })(), (() => {
1278
+ var _el$84 = _$createElement("span");
1279
+ _$insertNode(_el$84, _$createTextNode(` \u2014 d to scroll \xB7 Enter to continue`));
1280
+ _$effect((_$p) => _$setProp(_el$84, "style", {
1281
+ fg: theme().textMuted
1282
+ }, _$p));
1283
+ return _el$84;
1284
+ })()] : _$memo(() => !!canScrollUp())() ? [(() => {
1285
+ var _el$86 = _$createElement("span");
1286
+ _$insertNode(_el$86, _$createTextNode(`\u25B2 more above`));
1287
+ _$effect((_$p) => _$setProp(_el$86, "style", {
1288
+ fg: theme.accent,
1289
+ bold: true
1290
+ }, _$p));
1291
+ return _el$86;
1292
+ })(), (() => {
1293
+ var _el$88 = _$createElement("span");
1294
+ _$insertNode(_el$88, _$createTextNode(` \u2014 u to scroll \xB7 Enter to continue`));
1295
+ _$effect((_$p) => _$setProp(_el$88, "style", {
1296
+ fg: theme().textMuted
1297
+ }, _$p));
1298
+ return _el$88;
1299
+ })()] : "\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" : _$memo(() => !!(canScrollUp() || canScrollDown()))() ? [(() => {
1300
+ var _el$90 = _$createElement("span");
1301
+ _$insertNode(_el$90, _$createTextNode(`j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel`));
1302
+ _$effect((_$p) => _$setProp(_el$90, "style", {
1303
+ fg: theme().textMuted
1304
+ }, _$p));
1305
+ return _el$90;
1306
+ })(), (() => {
1307
+ var _el$92 = _$createElement("span");
1308
+ _$insertNode(_el$92, _$createTextNode(` \xB7 d/u scroll`));
1309
+ _$effect((_$p) => _$setProp(_el$92, "style", {
1310
+ fg: theme.warning,
1311
+ bold: true
1312
+ }, _$p));
1313
+ return _el$92;
1314
+ })()] : "j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel";
1221
1315
  })());
1222
1316
  _$effect((_p$) => {
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 = {
1317
+ var _v$39 = popupWidth(), _v$40 = popupHeight(), _v$41 = phase() === "feedback" ? feedback()?.correct ? theme().success : theme().error : theme().accent, _v$42 = theme().backgroundPanel, _v$43 = phase() === "feedback" ? feedback()?.correct ? theme().success : theme().error : theme().accent, _v$44 = theme().background, _v$45 = theme().background, _v$46 = {
1224
1318
  visible: true,
1225
1319
  trackOptions: {
1226
1320
  backgroundColor: theme().background,
1227
1321
  foregroundColor: theme().borderActive
1228
1322
  }
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));
1323
+ }, _v$47 = syntax(), _v$48 = decodeQuizText(props.request.question), _v$49 = theme().text, _v$50 = theme().backgroundPanel, _v$51 = theme().textMuted;
1324
+ _v$39 !== _p$.e && (_p$.e = _$setProp(_el$, "width", _v$39, _p$.e));
1325
+ _v$40 !== _p$.t && (_p$.t = _$setProp(_el$, "height", _v$40, _p$.t));
1326
+ _v$41 !== _p$.a && (_p$.a = _$setProp(_el$, "borderColor", _v$41, _p$.a));
1327
+ _v$42 !== _p$.o && (_p$.o = _$setProp(_el$, "backgroundColor", _v$42, _p$.o));
1328
+ _v$43 !== _p$.i && (_p$.i = _$setProp(_el$2, "backgroundColor", _v$43, _p$.i));
1329
+ _v$44 !== _p$.n && (_p$.n = _$setProp(_el$3, "fg", _v$44, _p$.n));
1330
+ _v$45 !== _p$.s && (_p$.s = _$setProp(_el$4, "fg", _v$45, _p$.s));
1331
+ _v$46 !== _p$.h && (_p$.h = _$setProp(_el$8, "verticalScrollbarOptions", _v$46, _p$.h));
1332
+ _v$47 !== _p$.r && (_p$.r = _$setProp(_el$0, "syntaxStyle", _v$47, _p$.r));
1333
+ _v$48 !== _p$.d && (_p$.d = _$setProp(_el$0, "content", _v$48, _p$.d));
1334
+ _v$49 !== _p$.l && (_p$.l = _$setProp(_el$0, "fg", _v$49, _p$.l));
1335
+ _v$50 !== _p$.u && (_p$.u = _$setProp(_el$0, "bg", _v$50, _p$.u));
1336
+ _v$51 !== _p$.c && (_p$.c = _$setProp(_el$62, "fg", _v$51, _p$.c));
1243
1337
  return _p$;
1244
1338
  }, {
1245
1339
  e: undefined,
@@ -1263,8 +1357,14 @@ function QuizBatchDialog(props) {
1263
1357
  const theme = () => props.api.theme.current;
1264
1358
  const syntax = () => syntaxStyle(theme());
1265
1359
  const dims = useTerminalDimensions();
1266
- const popupWidth = () => Math.max(68, Math.min(dims().width - 4, 96));
1267
- const popupHeight = () => Math.max(4, Math.min(24, dims().height - 2));
1360
+ const popupWidth = () => {
1361
+ const w = dims().width;
1362
+ return Math.max(64, Math.min(w - 8, Math.floor(w * 0.82), 96));
1363
+ };
1364
+ const popupHeight = () => {
1365
+ const h = dims().height;
1366
+ return Math.max(14, Math.min(h - 6, Math.floor(h * 0.64), 28));
1367
+ };
1268
1368
  const [idx, setIdx] = createSignal(0);
1269
1369
  if (!props.request.quizzes || props.request.quizzes.length === 0) {
1270
1370
  tlog("QuizBatchDialog empty quizzes, cancelling", props.request.id);
@@ -1583,12 +1683,12 @@ function QuizBatchDialog(props) {
1583
1683
  return;
1584
1684
  }
1585
1685
  if (focused() === "note") {
1586
- if (k === "tab" || seq === "\t") {
1686
+ if (lower === "tab" || seq === "\t") {
1587
1687
  prevent(evt);
1588
1688
  setFocused("options");
1589
1689
  return;
1590
1690
  }
1591
- if (k === "escape") {
1691
+ if (lower === "escape" || lower === "esc") {
1592
1692
  prevent(evt);
1593
1693
  setFocused("options");
1594
1694
  return;
@@ -1613,27 +1713,27 @@ function QuizBatchDialog(props) {
1613
1713
  } catch {}
1614
1714
  return;
1615
1715
  }
1616
- if (k === "up" || k === "k" || seq === "\x1B[A") {
1716
+ if (lower === "up" || isPlainKeyBatch(evt, "k") || seq === "\x1B[A") {
1617
1717
  prevent(evt);
1618
1718
  setOptionIndex((i) => Math.max(0, i - 1));
1619
1719
  return;
1620
1720
  }
1621
- if (k === "down" || k === "j" || seq === "\x1B[B") {
1721
+ if (lower === "down" || isPlainKeyBatch(evt, "j") || seq === "\x1B[B") {
1622
1722
  prevent(evt);
1623
1723
  setOptionIndex((i) => Math.min(isMulti() ? submitIdx() : dontKnowIdx(), i + 1));
1624
1724
  return;
1625
1725
  }
1626
- if (k === "tab" || seq === "\t") {
1726
+ if (lower === "tab" || seq === "\t") {
1627
1727
  prevent(evt);
1628
1728
  setFocused("note");
1629
1729
  return;
1630
1730
  }
1631
- if (k === "escape" || k === "esc") {
1731
+ if (lower === "escape" || lower === "esc") {
1632
1732
  prevent(evt);
1633
1733
  props.onCancel();
1634
1734
  return;
1635
1735
  }
1636
- if (k === "space" || seq === " ") {
1736
+ if (lower === "space" || seq === " ") {
1637
1737
  prevent(evt);
1638
1738
  const i = optionIndex();
1639
1739
  if (i === dontKnowIdx()) {
@@ -1659,7 +1759,7 @@ function QuizBatchDialog(props) {
1659
1759
  }
1660
1760
  return;
1661
1761
  }
1662
- if (k === "enter" || seq === "\r") {
1762
+ if (lower === "enter" || seq === "\r") {
1663
1763
  prevent(evt);
1664
1764
  const i = optionIndex();
1665
1765
  if (i === dontKnowIdx()) {
@@ -1683,7 +1783,7 @@ function QuizBatchDialog(props) {
1683
1783
  }
1684
1784
  return;
1685
1785
  }
1686
- if (seq === "ctrl+j" || k === "enter" && evt.ctrl) {
1786
+ if (seq === "ctrl+j" || lower === "enter" && evt.ctrl) {
1687
1787
  prevent(evt);
1688
1788
  submitSelect();
1689
1789
  return;
@@ -1693,48 +1793,76 @@ function QuizBatchDialog(props) {
1693
1793
  }
1694
1794
  });
1695
1795
  return (() => {
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, (() => {
1718
- var _c$5 = _$memo(() => phase() === "feedback");
1719
- return () => _c$5() ? feedback()?.correct ? "\u2713" : "\u2717" : "";
1796
+ var _el$94 = _$createElement("box"), _el$95 = _$createElement("box"), _el$96 = _$createElement("text"), _el$97 = _$createTextNode(` decks.quiz batch `), _el$98 = _$createTextNode(`/`), _el$99 = _$createTextNode(` `), _el$100 = _$createElement("text"), _el$104 = _$createElement("scrollbox"), _el$105 = _$createElement("markdown"), _el$146 = _$createElement("box"), _el$147 = _$createElement("text");
1797
+ _$insertNode(_el$94, _el$95);
1798
+ _$insertNode(_el$94, _el$104);
1799
+ _$insertNode(_el$94, _el$146);
1800
+ _$setProp(_el$94, "flexDirection", "column");
1801
+ _$setProp(_el$94, "border", true);
1802
+ _$setProp(_el$94, "padding", 1);
1803
+ _$setProp(_el$94, "gap", 1);
1804
+ _$insertNode(_el$95, _el$96);
1805
+ _$insertNode(_el$95, _el$100);
1806
+ _$setProp(_el$95, "flexDirection", "row");
1807
+ _$setProp(_el$95, "justifyContent", "space-between");
1808
+ _$setProp(_el$95, "paddingLeft", 1);
1809
+ _$setProp(_el$95, "paddingRight", 1);
1810
+ _$setProp(_el$95, "height", 1);
1811
+ _$insertNode(_el$96, _el$97);
1812
+ _$insertNode(_el$96, _el$98);
1813
+ _$insertNode(_el$96, _el$99);
1814
+ _$setProp(_el$96, "bold", true);
1815
+ _$insert(_el$96, () => idx() + 1, _el$98);
1816
+ _$insert(_el$96, () => props.request.quizzes.length, _el$99);
1817
+ _$insert(_el$96, (() => {
1818
+ var _c$6 = _$memo(() => phase() === "feedback");
1819
+ return () => _c$6() ? feedback()?.correct ? "\u2713" : "\u2717" : "";
1720
1820
  })(), null);
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, {
1821
+ _$insertNode(_el$100, _$createTextNode(`learn`));
1822
+ _$setProp(_el$100, "dim", true);
1823
+ _$insert(_el$94, _$createComponent(Show, {
1824
+ get when() {
1825
+ return _$memo(() => phase() === "feedback")() && (canScrollUpBatch() || canScrollDownBatch());
1826
+ },
1827
+ get children() {
1828
+ var _el$102 = _$createElement("box"), _el$103 = _$createElement("text");
1829
+ _$insertNode(_el$102, _el$103);
1830
+ _$setProp(_el$102, "justifyContent", "center");
1831
+ _$setProp(_el$102, "height", 1);
1832
+ _$setProp(_el$102, "paddingLeft", 1);
1833
+ _$setProp(_el$102, "paddingRight", 1);
1834
+ _$setProp(_el$103, "bold", true);
1835
+ _$insert(_el$103, (() => {
1836
+ var _c$7 = _$memo(() => !!(canScrollUpBatch() && canScrollDownBatch()));
1837
+ return () => _c$7() ? "\u25B2 more above \xB7 \u25BC more below \u2014 d / u to scroll" : canScrollDownBatch() ? "\u25BC more below \u2014 press d to see explanation" : "\u25B2 more above \u2014 press u to scroll up";
1838
+ })());
1839
+ _$effect((_p$) => {
1840
+ var _v$57 = canScrollDownBatch() ? theme().warning : theme().accent, _v$58 = theme().background;
1841
+ _v$57 !== _p$.e && (_p$.e = _$setProp(_el$102, "backgroundColor", _v$57, _p$.e));
1842
+ _v$58 !== _p$.t && (_p$.t = _$setProp(_el$103, "fg", _v$58, _p$.t));
1843
+ return _p$;
1844
+ }, {
1845
+ e: undefined,
1846
+ t: undefined
1847
+ });
1848
+ return _el$102;
1849
+ }
1850
+ }), _el$104);
1851
+ _$insertNode(_el$104, _el$105);
1852
+ _$use((el) => scrollRefBatch = el, _el$104);
1853
+ _$setProp(_el$104, "flexGrow", 1);
1854
+ _$insert(_el$104, _$createComponent(Show, {
1727
1855
  get when() {
1728
1856
  return cur().details;
1729
1857
  },
1730
1858
  get children() {
1731
- var _el$86 = _$createElement("markdown");
1859
+ var _el$106 = _$createElement("markdown");
1732
1860
  _$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));
1861
+ var _v$59 = syntax(), _v$60 = decodeQuizText(cur().details), _v$61 = theme().textMuted, _v$62 = theme().backgroundPanel;
1862
+ _v$59 !== _p$.e && (_p$.e = _$setProp(_el$106, "syntaxStyle", _v$59, _p$.e));
1863
+ _v$60 !== _p$.t && (_p$.t = _$setProp(_el$106, "content", _v$60, _p$.t));
1864
+ _v$61 !== _p$.a && (_p$.a = _$setProp(_el$106, "fg", _v$61, _p$.a));
1865
+ _v$62 !== _p$.o && (_p$.o = _$setProp(_el$106, "bg", _v$62, _p$.o));
1738
1866
  return _p$;
1739
1867
  }, {
1740
1868
  e: undefined,
@@ -1742,24 +1870,24 @@ function QuizBatchDialog(props) {
1742
1870
  a: undefined,
1743
1871
  o: undefined
1744
1872
  });
1745
- return _el$86;
1873
+ return _el$106;
1746
1874
  }
1747
1875
  }), null);
1748
- _$insert(_el$84, _$createComponent(Show, {
1876
+ _$insert(_el$104, _$createComponent(Show, {
1749
1877
  get when() {
1750
1878
  return phase() === "select";
1751
1879
  },
1752
1880
  get children() {
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, {
1881
+ var _el$107 = _$createElement("box"), _el$108 = _$createElement("box"), _el$109 = _$createElement("text"), _el$110 = _$createElement("box"), _el$111 = _$createElement("box"), _el$112 = _$createElement("text"), _el$113 = _$createElement("box"), _el$114 = _$createElement("text"), _el$115 = _$createElement("box"), _el$116 = _$createElement("text"), _el$118 = _$createElement("box"), _el$119 = _$createElement("text"), _el$121 = _$createElement("box"), _el$123 = _$createElement("box"), _el$124 = _$createElement("text"), _el$125 = _$createElement("text"), _el$126 = _$createTextNode(`/`);
1882
+ _$insertNode(_el$107, _el$108);
1883
+ _$insertNode(_el$107, _el$110);
1884
+ _$insertNode(_el$107, _el$118);
1885
+ _$insertNode(_el$107, _el$123);
1886
+ _$setProp(_el$107, "flexDirection", "column");
1887
+ _$setProp(_el$107, "gap", 0);
1888
+ _$setProp(_el$107, "padding", 1);
1889
+ _$setProp(_el$107, "border", true);
1890
+ _$insert(_el$107, _$createComponent(For, {
1763
1891
  get each() {
1764
1892
  return cur().options;
1765
1893
  },
@@ -1768,36 +1896,36 @@ function QuizBatchDialog(props) {
1768
1896
  const foc = () => focused() === "options" && optionIndex() === id;
1769
1897
  const sel = () => selected().has(`opt:${id}`);
1770
1898
  return (() => {
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" : " ");
1782
- _$insertNode(_el$131, _el$132);
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";
1899
+ var _el$148 = _$createElement("box"), _el$149 = _$createElement("box"), _el$150 = _$createElement("text"), _el$151 = _$createElement("box"), _el$152 = _$createElement("text"), _el$153 = _$createElement("box"), _el$154 = _$createElement("text"), _el$155 = _$createTextNode(`. `);
1900
+ _$insertNode(_el$148, _el$149);
1901
+ _$insertNode(_el$148, _el$151);
1902
+ _$insertNode(_el$148, _el$153);
1903
+ _$setProp(_el$148, "flexDirection", "row");
1904
+ _$setProp(_el$148, "alignItems", "flexStart");
1905
+ _$setProp(_el$148, "gap", 1);
1906
+ _$setProp(_el$148, "paddingLeft", 1);
1907
+ _$insertNode(_el$149, _el$150);
1908
+ _$setProp(_el$149, "width", 2);
1909
+ _$insert(_el$150, () => foc() ? "\u25B8" : " ");
1910
+ _$insertNode(_el$151, _el$152);
1911
+ _$setProp(_el$151, "width", 2);
1912
+ _$insert(_el$152, (() => {
1913
+ var _c$0 = _$memo(() => !!isMulti());
1914
+ return () => _c$0() ? sel() ? "\u2611" : "\u2610" : sel() ? "\u2B22" : "\u25CB";
1787
1915
  })());
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);
1916
+ _$insertNode(_el$153, _el$154);
1917
+ _$setProp(_el$153, "flexGrow", 1);
1918
+ _$insertNode(_el$154, _el$155);
1919
+ _$setProp(_el$154, "wrapMode", "wrap");
1920
+ _$insert(_el$154, id + 1, _el$155);
1921
+ _$insert(_el$154, () => opt.label, null);
1794
1922
  _$effect((_p$) => {
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));
1923
+ var _v$106 = foc() ? theme().backgroundElement : undefined, _v$107 = foc() ? theme().accent : theme().textMuted, _v$108 = isMulti() ? sel() ? theme().success : theme().textMuted : sel() ? theme().accent : theme().textMuted, _v$109 = sel() ? theme().text : theme().textMuted, _v$110 = foc();
1924
+ _v$106 !== _p$.e && (_p$.e = _$setProp(_el$148, "backgroundColor", _v$106, _p$.e));
1925
+ _v$107 !== _p$.t && (_p$.t = _$setProp(_el$150, "fg", _v$107, _p$.t));
1926
+ _v$108 !== _p$.a && (_p$.a = _$setProp(_el$152, "fg", _v$108, _p$.a));
1927
+ _v$109 !== _p$.o && (_p$.o = _$setProp(_el$154, "fg", _v$109, _p$.o));
1928
+ _v$110 !== _p$.i && (_p$.i = _$setProp(_el$154, "bold", _v$110, _p$.i));
1801
1929
  return _p$;
1802
1930
  }, {
1803
1931
  e: undefined,
@@ -1806,123 +1934,123 @@ function QuizBatchDialog(props) {
1806
1934
  o: undefined,
1807
1935
  i: undefined
1808
1936
  });
1809
- return _el$128;
1937
+ return _el$148;
1810
1938
  })();
1811
1939
  }
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);
1822
- _$insertNode(_el$91, _el$92);
1823
- _$setProp(_el$91, "width", 2);
1824
- _$insert(_el$92, () => focused() === "options" && optionIndex() === dontKnowIdx() ? "\u25B8" : " ");
1825
- _$insertNode(_el$93, _el$94);
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);
1832
- _$insertNode(_el$98, _el$99);
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, {
1940
+ }), _el$108);
1941
+ _$insertNode(_el$108, _el$109);
1942
+ _$setProp(_el$108, "height", 1);
1943
+ _$insert(_el$109, () => "\u2500".repeat(Math.max(20, popupWidth() - 8)));
1944
+ _$insertNode(_el$110, _el$111);
1945
+ _$insertNode(_el$110, _el$113);
1946
+ _$insertNode(_el$110, _el$115);
1947
+ _$setProp(_el$110, "flexDirection", "row");
1948
+ _$setProp(_el$110, "gap", 1);
1949
+ _$setProp(_el$110, "paddingLeft", 1);
1950
+ _$insertNode(_el$111, _el$112);
1951
+ _$setProp(_el$111, "width", 2);
1952
+ _$insert(_el$112, () => focused() === "options" && optionIndex() === dontKnowIdx() ? "\u25B8" : " ");
1953
+ _$insertNode(_el$113, _el$114);
1954
+ _$setProp(_el$113, "width", 2);
1955
+ _$insert(_el$114, () => dontKnow() ? "\u2611" : "\u2610");
1956
+ _$insertNode(_el$115, _el$116);
1957
+ _$setProp(_el$115, "flexGrow", 1);
1958
+ _$insertNode(_el$116, _$createTextNode(`I don't know`));
1959
+ _$setProp(_el$116, "italic", true);
1960
+ _$insertNode(_el$118, _el$119);
1961
+ _$insertNode(_el$118, _el$121);
1962
+ _$setProp(_el$118, "flexDirection", "column");
1963
+ _$setProp(_el$118, "paddingTop", 1);
1964
+ _$insertNode(_el$119, _$createTextNode(`\u270E Note`));
1965
+ _$setProp(_el$121, "border", true);
1966
+ _$setProp(_el$121, "paddingLeft", 1);
1967
+ _$setProp(_el$121, "paddingRight", 1);
1968
+ _$insert(_el$121, _$createComponent(Show, {
1841
1969
  get when() {
1842
1970
  return focused() === "note";
1843
1971
  },
1844
1972
  get fallback() {
1845
1973
  return (() => {
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;
1974
+ var _el$156 = _$createElement("text");
1975
+ _$insert(_el$156, () => note() || "Tab to edit \xB7 share what you were thinking");
1976
+ _$effect((_$p) => _$setProp(_el$156, "fg", theme().textMuted, _$p));
1977
+ return _el$156;
1850
1978
  })();
1851
1979
  },
1852
1980
  get children() {
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", () => {
1981
+ var _el$122 = _$createElement("input");
1982
+ _$use((el) => noteEl = el, _el$122);
1983
+ _$setProp(_el$122, "onInput", (v) => setNote(typeof v === "string" ? v : v?.target?.value ?? ""));
1984
+ _$setProp(_el$122, "onSubmit", () => {
1857
1985
  if (!selected().size && !dontKnow() && note().trim())
1858
1986
  submitSelect();
1859
1987
  else
1860
1988
  setFocused("options");
1861
1989
  });
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;
1990
+ _$setProp(_el$122, "placeholder", "note (Enter to submit note \u2192 classify)");
1991
+ _$effect((_$p) => _$setProp(_el$122, "value", note(), _$p));
1992
+ return _el$122;
1865
1993
  }
1866
1994
  }));
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" : "";
1995
+ _$insertNode(_el$123, _el$124);
1996
+ _$insertNode(_el$123, _el$125);
1997
+ _$setProp(_el$123, "flexDirection", "row");
1998
+ _$setProp(_el$123, "justifyContent", "space-between");
1999
+ _$setProp(_el$123, "paddingTop", 1);
2000
+ _$insert(_el$124, (() => {
2001
+ var _c$8 = _$memo(() => !!isMulti());
2002
+ return () => _c$8() ? `${selected().size} selected` : note().trim() && !selected().size ? "note \u2192 classify" : "";
1875
2003
  })());
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, {
2004
+ _$insertNode(_el$125, _el$126);
2005
+ _$insert(_el$125, () => idx() + 1, _el$126);
2006
+ _$insert(_el$125, () => props.request.quizzes.length, null);
2007
+ _$insert(_el$107, _$createComponent(Show, {
1880
2008
  get when() {
1881
2009
  return isMulti();
1882
2010
  },
1883
2011
  get children() {
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);
2012
+ var _el$127 = _$createElement("box"), _el$128 = _$createElement("box"), _el$129 = _$createElement("text"), _el$130 = _$createElement("text");
2013
+ _$insertNode(_el$127, _el$128);
2014
+ _$setProp(_el$127, "justifyContent", "center");
2015
+ _$setProp(_el$127, "paddingTop", 1);
2016
+ _$insertNode(_el$128, _el$129);
2017
+ _$insertNode(_el$128, _el$130);
2018
+ _$setProp(_el$128, "flexDirection", "row");
2019
+ _$setProp(_el$128, "gap", 1);
2020
+ _$setProp(_el$128, "border", true);
2021
+ _$setProp(_el$128, "paddingLeft", 2);
2022
+ _$setProp(_el$128, "paddingRight", 2);
2023
+ _$insert(_el$129, () => focused() === "options" && optionIndex() === submitIdx() ? "\u25B8" : " ");
2024
+ _$insertNode(_el$130, _$createTextNode(`\u21B3 Submit`));
2025
+ _$setProp(_el$130, "bold", true);
1898
2026
  _$effect((_p$) => {
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));
2027
+ var _v$63 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : theme().borderSubtle, _v$64 = focused() === "options" && optionIndex() === submitIdx() ? theme().backgroundElement : theme().background, _v$65 = focused() === "options" && optionIndex() === submitIdx() ? theme().accent : theme().textMuted;
2028
+ _v$63 !== _p$.e && (_p$.e = _$setProp(_el$128, "borderColor", _v$63, _p$.e));
2029
+ _v$64 !== _p$.t && (_p$.t = _$setProp(_el$128, "backgroundColor", _v$64, _p$.t));
2030
+ _v$65 !== _p$.a && (_p$.a = _$setProp(_el$129, "fg", _v$65, _p$.a));
1903
2031
  return _p$;
1904
2032
  }, {
1905
2033
  e: undefined,
1906
2034
  t: undefined,
1907
2035
  a: undefined
1908
2036
  });
1909
- return _el$107;
2037
+ return _el$127;
1910
2038
  }
1911
2039
  }), null);
1912
2040
  _$effect((_p$) => {
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));
2041
+ var _v$66 = theme().borderSubtle, _v$67 = theme().background, _v$68 = theme().borderSubtle, _v$69 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().backgroundElement : undefined, _v$70 = focused() === "options" && optionIndex() === dontKnowIdx() ? theme().accent : theme().textMuted, _v$71 = dontKnow() ? theme().warning : theme().textMuted, _v$72 = dontKnow() ? theme().warning : theme().textMuted, _v$73 = focused() === "note" ? theme().accent : theme().textMuted, _v$74 = focused() === "note" ? theme().accent : theme().borderSubtle, _v$75 = theme().backgroundElement, _v$76 = theme().textMuted, _v$77 = theme().textMuted;
2042
+ _v$66 !== _p$.e && (_p$.e = _$setProp(_el$107, "borderColor", _v$66, _p$.e));
2043
+ _v$67 !== _p$.t && (_p$.t = _$setProp(_el$107, "backgroundColor", _v$67, _p$.t));
2044
+ _v$68 !== _p$.a && (_p$.a = _$setProp(_el$109, "fg", _v$68, _p$.a));
2045
+ _v$69 !== _p$.o && (_p$.o = _$setProp(_el$110, "backgroundColor", _v$69, _p$.o));
2046
+ _v$70 !== _p$.i && (_p$.i = _$setProp(_el$112, "fg", _v$70, _p$.i));
2047
+ _v$71 !== _p$.n && (_p$.n = _$setProp(_el$114, "fg", _v$71, _p$.n));
2048
+ _v$72 !== _p$.s && (_p$.s = _$setProp(_el$116, "fg", _v$72, _p$.s));
2049
+ _v$73 !== _p$.h && (_p$.h = _$setProp(_el$119, "fg", _v$73, _p$.h));
2050
+ _v$74 !== _p$.r && (_p$.r = _$setProp(_el$121, "borderColor", _v$74, _p$.r));
2051
+ _v$75 !== _p$.d && (_p$.d = _$setProp(_el$121, "backgroundColor", _v$75, _p$.d));
2052
+ _v$76 !== _p$.l && (_p$.l = _$setProp(_el$124, "fg", _v$76, _p$.l));
2053
+ _v$77 !== _p$.u && (_p$.u = _$setProp(_el$125, "fg", _v$77, _p$.u));
1926
2054
  return _p$;
1927
2055
  }, {
1928
2056
  e: undefined,
@@ -1938,37 +2066,37 @@ function QuizBatchDialog(props) {
1938
2066
  l: undefined,
1939
2067
  u: undefined
1940
2068
  });
1941
- return _el$87;
2069
+ return _el$107;
1942
2070
  }
1943
2071
  }), null);
1944
- _$insert(_el$84, _$createComponent(Show, {
2072
+ _$insert(_el$104, _$createComponent(Show, {
1945
2073
  get when() {
1946
2074
  return phase() === "classifying";
1947
2075
  },
1948
2076
  get children() {
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);
1960
- _$insertNode(_el$115, _el$116);
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`));
2077
+ var _el$132 = _$createElement("box"), _el$133 = _$createElement("text"), _el$135 = _$createElement("text"), _el$136 = _$createTextNode(`"`), _el$137 = _$createTextNode(`"`), _el$138 = _$createElement("text");
2078
+ _$insertNode(_el$132, _el$133);
2079
+ _$insertNode(_el$132, _el$135);
2080
+ _$insertNode(_el$132, _el$138);
2081
+ _$setProp(_el$132, "flexDirection", "column");
2082
+ _$setProp(_el$132, "gap", 1);
2083
+ _$setProp(_el$132, "padding", 1);
2084
+ _$setProp(_el$132, "border", true);
2085
+ _$setProp(_el$132, "alignItems", "center");
2086
+ _$insertNode(_el$133, _$createTextNode(`\u25D0 Classifying your note...`));
2087
+ _$setProp(_el$133, "bold", true);
2088
+ _$insertNode(_el$135, _el$136);
2089
+ _$insertNode(_el$135, _el$137);
2090
+ _$setProp(_el$135, "wrapMode", "wrap");
2091
+ _$insert(_el$135, note, _el$137);
2092
+ _$insertNode(_el$138, _$createTextNode(`Mapping to options \u2014 please wait`));
1965
2093
  _$effect((_p$) => {
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));
2094
+ var _v$78 = theme().accent, _v$79 = theme().background, _v$80 = theme().accent, _v$81 = theme().textMuted, _v$82 = theme().textMuted;
2095
+ _v$78 !== _p$.e && (_p$.e = _$setProp(_el$132, "borderColor", _v$78, _p$.e));
2096
+ _v$79 !== _p$.t && (_p$.t = _$setProp(_el$132, "backgroundColor", _v$79, _p$.t));
2097
+ _v$80 !== _p$.a && (_p$.a = _$setProp(_el$133, "fg", _v$80, _p$.a));
2098
+ _v$81 !== _p$.o && (_p$.o = _$setProp(_el$135, "fg", _v$81, _p$.o));
2099
+ _v$82 !== _p$.i && (_p$.i = _$setProp(_el$138, "fg", _v$82, _p$.i));
1972
2100
  return _p$;
1973
2101
  }, {
1974
2102
  e: undefined,
@@ -1977,23 +2105,23 @@ function QuizBatchDialog(props) {
1977
2105
  o: undefined,
1978
2106
  i: undefined
1979
2107
  });
1980
- return _el$112;
2108
+ return _el$132;
1981
2109
  }
1982
2110
  }), null);
1983
- _$insert(_el$84, _$createComponent(Show, {
2111
+ _$insert(_el$104, _$createComponent(Show, {
1984
2112
  get when() {
1985
2113
  return phase() === "feedback";
1986
2114
  },
1987
2115
  get children() {
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, {
2116
+ var _el$140 = _$createElement("box"), _el$141 = _$createElement("text"), _el$142 = _$createElement("text"), _el$143 = _$createTextNode(`Correct: `), _el$144 = _$createElement("box"), _el$145 = _$createElement("markdown");
2117
+ _$insertNode(_el$140, _el$141);
2118
+ _$insertNode(_el$140, _el$142);
2119
+ _$insertNode(_el$140, _el$144);
2120
+ _$setProp(_el$140, "flexDirection", "column");
2121
+ _$setProp(_el$140, "gap", 1);
2122
+ _$setProp(_el$140, "padding", 1);
2123
+ _$setProp(_el$140, "border", true);
2124
+ _$insert(_el$140, _$createComponent(For, {
1997
2125
  get each() {
1998
2126
  return cur().options;
1999
2127
  },
@@ -2022,48 +2150,48 @@ function QuizBatchDialog(props) {
2022
2150
  bg = theme().warning;
2023
2151
  }
2024
2152
  return (() => {
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);
2037
- _$insertNode(_el$140, _el$141);
2038
- _$setProp(_el$140, "flexGrow", 1);
2039
- _$insertNode(_el$141, _el$142);
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;
2153
+ var _el$157 = _$createElement("box"), _el$158 = _$createElement("box"), _el$159 = _$createElement("text"), _el$160 = _$createElement("box"), _el$161 = _$createElement("text"), _el$162 = _$createTextNode(`. `);
2154
+ _$insertNode(_el$157, _el$158);
2155
+ _$insertNode(_el$157, _el$160);
2156
+ _$setProp(_el$157, "flexDirection", "row");
2157
+ _$setProp(_el$157, "gap", 1);
2158
+ _$setProp(_el$157, "paddingLeft", 1);
2159
+ _$setProp(_el$157, "backgroundColor", bg);
2160
+ _$insertNode(_el$158, _el$159);
2161
+ _$setProp(_el$158, "width", 2);
2162
+ _$setProp(_el$159, "fg", fg);
2163
+ _$setProp(_el$159, "bold", true);
2164
+ _$insert(_el$159, ic);
2165
+ _$insertNode(_el$160, _el$161);
2166
+ _$setProp(_el$160, "flexGrow", 1);
2167
+ _$insertNode(_el$161, _el$162);
2168
+ _$setProp(_el$161, "fg", fg);
2169
+ _$setProp(_el$161, "wrapMode", "wrap");
2170
+ _$insert(_el$161, id, _el$162);
2171
+ _$insert(_el$161, () => opt.label, null);
2172
+ return _el$157;
2045
2173
  })();
2046
2174
  }
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);
2175
+ }), _el$141);
2176
+ _$setProp(_el$141, "bold", true);
2177
+ _$insert(_el$141, () => feedback()?.correct ? "\u2713 Correct" : "\u2717 Incorrect");
2178
+ _$insertNode(_el$142, _el$143);
2179
+ _$insert(_el$142, () => cur().correctIndices.map((i) => `${i}. ${cur().options[i - 1]?.label}`).join(", "), null);
2180
+ _$insertNode(_el$144, _el$145);
2181
+ _$setProp(_el$144, "border", true);
2182
+ _$setProp(_el$144, "padding", 1);
2055
2183
  _$effect((_p$) => {
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));
2184
+ var _v$83 = feedback()?.correct ? theme().success : theme().error, _v$84 = theme().background, _v$85 = feedback()?.correct ? theme().success : theme().error, _v$86 = theme().textMuted, _v$87 = theme().borderSubtle, _v$88 = theme().backgroundPanel, _v$89 = syntax(), _v$90 = decodeQuizText(cur().explanation), _v$91 = theme().text, _v$92 = theme().backgroundPanel;
2185
+ _v$83 !== _p$.e && (_p$.e = _$setProp(_el$140, "borderColor", _v$83, _p$.e));
2186
+ _v$84 !== _p$.t && (_p$.t = _$setProp(_el$140, "backgroundColor", _v$84, _p$.t));
2187
+ _v$85 !== _p$.a && (_p$.a = _$setProp(_el$141, "fg", _v$85, _p$.a));
2188
+ _v$86 !== _p$.o && (_p$.o = _$setProp(_el$142, "fg", _v$86, _p$.o));
2189
+ _v$87 !== _p$.i && (_p$.i = _$setProp(_el$144, "borderColor", _v$87, _p$.i));
2190
+ _v$88 !== _p$.n && (_p$.n = _$setProp(_el$144, "backgroundColor", _v$88, _p$.n));
2191
+ _v$89 !== _p$.s && (_p$.s = _$setProp(_el$145, "syntaxStyle", _v$89, _p$.s));
2192
+ _v$90 !== _p$.h && (_p$.h = _$setProp(_el$145, "content", _v$90, _p$.h));
2193
+ _v$91 !== _p$.r && (_p$.r = _$setProp(_el$145, "fg", _v$91, _p$.r));
2194
+ _v$92 !== _p$.d && (_p$.d = _$setProp(_el$145, "bg", _v$92, _p$.d));
2067
2195
  return _p$;
2068
2196
  }, {
2069
2197
  e: undefined,
@@ -2077,38 +2205,110 @@ function QuizBatchDialog(props) {
2077
2205
  r: undefined,
2078
2206
  d: undefined
2079
2207
  });
2080
- return _el$120;
2208
+ return _el$140;
2081
2209
  }
2082
2210
  }), null);
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";
2211
+ _$insertNode(_el$146, _el$147);
2212
+ _$setProp(_el$146, "height", 1);
2213
+ _$setProp(_el$146, "justifyContent", "center");
2214
+ _$setProp(_el$147, "wrapMode", "wrap");
2215
+ _$insert(_el$147, (() => {
2216
+ var _c$9 = _$memo(() => phase() === "feedback");
2217
+ return () => _c$9() ? _$memo(() => !!(canScrollUpBatch() && canScrollDownBatch()))() ? [(() => {
2218
+ var _el$163 = _$createElement("span");
2219
+ _$insertNode(_el$163, _$createTextNode(`\u25B2 more above \xB7 \u25BC more below`));
2220
+ _$effect((_$p) => _$setProp(_el$163, "style", {
2221
+ fg: theme.warning,
2222
+ bold: true
2223
+ }, _$p));
2224
+ return _el$163;
2225
+ })(), (() => {
2226
+ var _el$165 = _$createElement("span"), _el$166 = _$createTextNode(` \u2014 d/u to scroll \xB7 Enter \u2192 next (`), _el$167 = _$createTextNode(`/`), _el$168 = _$createTextNode(`)`);
2227
+ _$insertNode(_el$165, _el$166);
2228
+ _$insertNode(_el$165, _el$167);
2229
+ _$insertNode(_el$165, _el$168);
2230
+ _$insert(_el$165, () => idx() + 1, _el$167);
2231
+ _$insert(_el$165, () => props.request.quizzes.length, _el$168);
2232
+ _$effect((_$p) => _$setProp(_el$165, "style", {
2233
+ fg: theme().textMuted
2234
+ }, _$p));
2235
+ return _el$165;
2236
+ })()] : _$memo(() => !!canScrollDownBatch())() ? [(() => {
2237
+ var _el$169 = _$createElement("span");
2238
+ _$insertNode(_el$169, _$createTextNode(`\u25BC more below`));
2239
+ _$effect((_$p) => _$setProp(_el$169, "style", {
2240
+ fg: theme.warning,
2241
+ bold: true
2242
+ }, _$p));
2243
+ return _el$169;
2244
+ })(), (() => {
2245
+ var _el$171 = _$createElement("span"), _el$172 = _$createTextNode(` \u2014 d to scroll \xB7 Enter \u2192 next (`), _el$173 = _$createTextNode(`/`), _el$174 = _$createTextNode(`)`);
2246
+ _$insertNode(_el$171, _el$172);
2247
+ _$insertNode(_el$171, _el$173);
2248
+ _$insertNode(_el$171, _el$174);
2249
+ _$insert(_el$171, () => idx() + 1, _el$173);
2250
+ _$insert(_el$171, () => props.request.quizzes.length, _el$174);
2251
+ _$effect((_$p) => _$setProp(_el$171, "style", {
2252
+ fg: theme().textMuted
2253
+ }, _$p));
2254
+ return _el$171;
2255
+ })()] : _$memo(() => !!canScrollUpBatch())() ? [(() => {
2256
+ var _el$175 = _$createElement("span");
2257
+ _$insertNode(_el$175, _$createTextNode(`\u25B2 more above`));
2258
+ _$effect((_$p) => _$setProp(_el$175, "style", {
2259
+ fg: theme.accent,
2260
+ bold: true
2261
+ }, _$p));
2262
+ return _el$175;
2263
+ })(), (() => {
2264
+ var _el$177 = _$createElement("span"), _el$178 = _$createTextNode(` \u2014 u to scroll \xB7 Enter \u2192 next (`), _el$179 = _$createTextNode(`/`), _el$180 = _$createTextNode(`)`);
2265
+ _$insertNode(_el$177, _el$178);
2266
+ _$insertNode(_el$177, _el$179);
2267
+ _$insertNode(_el$177, _el$180);
2268
+ _$insert(_el$177, () => idx() + 1, _el$179);
2269
+ _$insert(_el$177, () => props.request.quizzes.length, _el$180);
2270
+ _$effect((_$p) => _$setProp(_el$177, "style", {
2271
+ fg: theme().textMuted
2272
+ }, _$p));
2273
+ return _el$177;
2274
+ })()] : `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" : _$memo(() => !!(canScrollUpBatch() || canScrollDownBatch()))() ? [(() => {
2275
+ var _el$181 = _$createElement("span");
2276
+ _$insertNode(_el$181, _$createTextNode(`j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel`));
2277
+ _$effect((_$p) => _$setProp(_el$181, "style", {
2278
+ fg: theme().textMuted
2279
+ }, _$p));
2280
+ return _el$181;
2281
+ })(), (() => {
2282
+ var _el$183 = _$createElement("span");
2283
+ _$insertNode(_el$183, _$createTextNode(` \xB7 d/u scroll`));
2284
+ _$effect((_$p) => _$setProp(_el$183, "style", {
2285
+ fg: theme.warning,
2286
+ bold: true
2287
+ }, _$p));
2288
+ return _el$183;
2289
+ })()] : "j/k or \u2191\u2193 move \xB7 Space toggle \xB7 Tab note \xB7 Enter submit \xB7 Esc cancel";
2090
2290
  })());
2091
2291
  _$effect((_p$) => {
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 = {
2292
+ var _v$93 = popupWidth(), _v$94 = popupHeight(), _v$95 = phase() === "feedback" ? feedback()?.correct ? theme().success : theme().error : theme().accent, _v$96 = theme().backgroundPanel, _v$97 = theme().accent, _v$98 = theme().background, _v$99 = theme().background, _v$100 = {
2093
2293
  visible: true,
2094
2294
  trackOptions: {
2095
2295
  backgroundColor: theme().background,
2096
2296
  foregroundColor: theme().borderActive
2097
2297
  }
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));
2298
+ }, _v$101 = syntax(), _v$102 = decodeQuizText(cur().question), _v$103 = theme().text, _v$104 = theme().backgroundPanel, _v$105 = theme().textMuted;
2299
+ _v$93 !== _p$.e && (_p$.e = _$setProp(_el$94, "width", _v$93, _p$.e));
2300
+ _v$94 !== _p$.t && (_p$.t = _$setProp(_el$94, "height", _v$94, _p$.t));
2301
+ _v$95 !== _p$.a && (_p$.a = _$setProp(_el$94, "borderColor", _v$95, _p$.a));
2302
+ _v$96 !== _p$.o && (_p$.o = _$setProp(_el$94, "backgroundColor", _v$96, _p$.o));
2303
+ _v$97 !== _p$.i && (_p$.i = _$setProp(_el$95, "backgroundColor", _v$97, _p$.i));
2304
+ _v$98 !== _p$.n && (_p$.n = _$setProp(_el$96, "fg", _v$98, _p$.n));
2305
+ _v$99 !== _p$.s && (_p$.s = _$setProp(_el$100, "fg", _v$99, _p$.s));
2306
+ _v$100 !== _p$.h && (_p$.h = _$setProp(_el$104, "verticalScrollbarOptions", _v$100, _p$.h));
2307
+ _v$101 !== _p$.r && (_p$.r = _$setProp(_el$105, "syntaxStyle", _v$101, _p$.r));
2308
+ _v$102 !== _p$.d && (_p$.d = _$setProp(_el$105, "content", _v$102, _p$.d));
2309
+ _v$103 !== _p$.l && (_p$.l = _$setProp(_el$105, "fg", _v$103, _p$.l));
2310
+ _v$104 !== _p$.u && (_p$.u = _$setProp(_el$105, "bg", _v$104, _p$.u));
2311
+ _v$105 !== _p$.c && (_p$.c = _$setProp(_el$147, "fg", _v$105, _p$.c));
2112
2312
  return _p$;
2113
2313
  }, {
2114
2314
  e: undefined,
@@ -2125,7 +2325,7 @@ function QuizBatchDialog(props) {
2125
2325
  u: undefined,
2126
2326
  c: undefined
2127
2327
  });
2128
- return _el$76;
2328
+ return _el$94;
2129
2329
  })();
2130
2330
  }
2131
2331
  var tui = async (api) => {