hyperbook 0.113.0 → 0.113.2

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.
Files changed (56) hide show
  1. package/README.md +18 -3
  2. package/dist/asset-manifest.json +9 -9
  3. package/dist/assets/directive-bitflow/{EditorElement-zyz99U6n.js → EditorElement-CE3Yr86b.js} +155 -155
  4. package/dist/assets/directive-bitflow/{ReportElements-BnX14NtV.js → ReportElements-eYGRtw6N.js} +1 -1
  5. package/dist/assets/directive-bitflow/{bitLoaders-DIGwTcpd.js → bitLoaders-CxvZkGrY.js} +1138 -1073
  6. package/dist/assets/directive-bitflow/editor.js +3 -3
  7. package/dist/assets/directive-bitflow/flow.js +3 -3
  8. package/dist/assets/directive-bitflow/{index-IQHOi2fr.js → index-88c3K20U.js} +31 -31
  9. package/dist/assets/directive-bitflow/{index-Bqf-kixT.js → index-B61LKxr1.js} +45 -45
  10. package/dist/assets/directive-bitflow/{index-CFcRAa3F.js → index-BG0PL-Z6.js} +30 -30
  11. package/dist/assets/directive-bitflow/{index-B3jMTk1o.js → index-BNdpL6Ss.js} +78 -78
  12. package/dist/assets/directive-bitflow/{index-Fq7njn6_.js → index-BO-d4HVC.js} +48 -48
  13. package/dist/assets/directive-bitflow/{index-Bf_NXJjq.js → index-BZhNY0lo.js} +12 -12
  14. package/dist/assets/directive-bitflow/{index-COndsSPW.js → index-BadyFTU5.js} +8 -8
  15. package/dist/assets/directive-bitflow/{index-CvCZVgKv.js → index-BlT1EcFH.js} +34 -34
  16. package/dist/assets/directive-bitflow/{index-CW9iev-_.js → index-BuQ-K_tR.js} +7 -7
  17. package/dist/assets/directive-bitflow/{index-DjWNEPDL.js → index-Bw0pL0hW.js} +28 -28
  18. package/dist/assets/directive-bitflow/{index-BQ5h4nDN.js → index-BwBVUdJ9.js} +94 -94
  19. package/dist/assets/directive-bitflow/{index-CjscG0z6.js → index-BydYlLy4.js} +73 -73
  20. package/dist/assets/directive-bitflow/{index-BpG316Ls.js → index-C7RJxxAx.js} +63 -63
  21. package/dist/assets/directive-bitflow/{index-eN2S_MLj.js → index-CERSJ9uS.js} +70 -70
  22. package/dist/assets/directive-bitflow/{index-DtsDy2By.js → index-CLHtOGrW.js} +11 -11
  23. package/dist/assets/directive-bitflow/{index-Bf_FQRbK.js → index-CWe2GjBK.js} +14 -14
  24. package/dist/assets/directive-bitflow/{index-CzdZQibq.js → index-CfKpkSVC.js} +72 -72
  25. package/dist/assets/directive-bitflow/{index-Fr7yl4Vn.js → index-CjKhq7gY.js} +23 -23
  26. package/dist/assets/directive-bitflow/{index-DoKlIgCD.js → index-Cm4w1Zyc.js} +38 -38
  27. package/dist/assets/directive-bitflow/{index-D5yZNeIg.js → index-D0U3nepG.js} +52 -52
  28. package/dist/assets/directive-bitflow/{index-C5czXkRd.js → index-D4PdXMcj.js} +33 -33
  29. package/dist/assets/directive-bitflow/{index-BLcJNyog.js → index-D9LOuqr2.js} +99 -99
  30. package/dist/assets/directive-bitflow/{index-BIJ7VfD2.js → index-DIb3CXwC.js} +42 -42
  31. package/dist/assets/directive-bitflow/{index-CZyaFdD2.js → index-DQP0cUsP.js} +70 -70
  32. package/dist/assets/directive-bitflow/{index-ChgzyMHe.js → index-DUOrQfVe.js} +27 -27
  33. package/dist/assets/directive-bitflow/{index-kRpwcprB.js → index-DW3cUBvZ.js} +1 -1
  34. package/dist/assets/directive-bitflow/{index-C_ZTSeqv.js → index-DYWo0PUv.js} +24 -24
  35. package/dist/assets/directive-bitflow/{index-xapm2BQE.js → index-D_QhyFcx.js} +101 -91
  36. package/dist/assets/directive-bitflow/{index-BdBBCZSy.js → index-Dn5hHVuT.js} +226 -193
  37. package/dist/assets/directive-bitflow/{index-D7m-hJZ9.js → index-DruC5d43.js} +69 -69
  38. package/dist/assets/directive-bitflow/{index-e_8twLaN.js → index-EKIgFddO.js} +105 -105
  39. package/dist/assets/directive-bitflow/{index-8jTO-NJA.js → index-HXNGIC7K.js} +70 -70
  40. package/dist/assets/directive-bitflow/{index-DnVYIuen.js → index-ISbOe239.js} +42 -42
  41. package/dist/assets/directive-bitflow/{index-cnRM_JDB.js → index-IsMJtrUT.js} +31 -31
  42. package/dist/assets/directive-bitflow/{index-B7Z6Q-PQ.js → index-TUXuIR22.js} +6 -6
  43. package/dist/assets/directive-bitflow/{index-CK1UMcfT.js → index-WbE9UOFa.js} +24 -24
  44. package/dist/assets/directive-bitflow/{index-YPMWh-1B.js → index-d5ebPDeY.js} +13 -13
  45. package/dist/assets/directive-bitflow/{index-NyNuXp4C.js → index-ledofrbo.js} +33 -33
  46. package/dist/assets/directive-bitflow/{index-BseSaQlX.js → index-oNmOArKu.js} +1 -1
  47. package/dist/assets/directive-bitflow/{index-ivI25bnR.js → index-rp4UTV85.js} +84 -84
  48. package/dist/assets/directive-bitflow/{index-XxGfBwJe.js → index-xTX3CXJW.js} +23 -23
  49. package/dist/assets/directive-bitflow/index.js +6 -6
  50. package/dist/assets/directive-bitflow/katex-DSLAjWZH-CHGN3Pr6.js +11314 -0
  51. package/dist/assets/directive-bitflow/katex-Dv-tcU2S-Dv-tcU2S.js +4 -0
  52. package/dist/assets/directive-bitflow/report.js +1 -1
  53. package/dist/assets/directive-bitflow/{shareableReport-ArQU1XjG.js → shareableReport-vjEU4OvA.js} +2 -2
  54. package/dist/index.js +6351 -3340
  55. package/dist/schemas/hyperbook.schema.json +4 -4
  56. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
- import { L as S, ak as Z, a2 as f, P as q, j as t, a5 as V, ac as F, ad as K, a9 as T, a4 as E, b as N, aa as _, s as G } from "./dom-uYx_3K1r.js";
2
- import { v as $, y as U, A as C, _ as y, e as B, M as A, E as Y, L as J, R as Q } from "./bitLoaders-DIGwTcpd.js";
3
- const X = ["value", "output", "line"], ee = V(X), te = S({
1
+ import { L as S, ak as Z, a2 as f, P as F, j as t, a5 as q, ac as U, ad as R, a9 as T, a4 as $, b as N, aa as V, s as B } from "./dom-uYx_3K1r.js";
2
+ import { e as E, C as G, g as C, i as y, P as _, F as A, B as Y, U as J, H as Q } from "./bitLoaders-CxvZkGrY.js";
3
+ const X = ["value", "output", "line"], ee = q(X), te = S({
4
4
  /** Stable across edits, so an answer keeps pointing at the same column. */
5
5
  id: f().min(1),
6
6
  /** The heading. A variable name for a `value` column. */
@@ -14,7 +14,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
14
14
  * The line the checkpoint sits at, 1-based, or omitted. Only a signpost —
15
15
  * it marks the row in the listing so the learner can see where they are.
16
16
  */
17
- line: q().int().positive().optional(),
17
+ line: F().int().positive().optional(),
18
18
  /** Column id → the value expected there. An empty string means "blank". */
19
19
  expected: Z(f(), f()).default({})
20
20
  }), O = (e) => e.replace(/\n$/, "").split(`
@@ -30,8 +30,8 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
30
30
  /** Shown as text, always. */
31
31
  code: f().default(""),
32
32
  showLineNumbers: T().default(!0),
33
- columns: E(te).default([]),
34
- checkpoints: E(ne).default([]),
33
+ columns: $(te).default([]),
34
+ checkpoints: $(ne).default([]),
35
35
  /**
36
36
  * Whether capital letters decide a mark. Off by default: `True` and `true`
37
37
  * are the same prediction about what the program does, and which spelling
@@ -44,7 +44,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
44
44
  * and that is the thing worth knowing.
45
45
  */
46
46
  partialCredit: T().default(!0),
47
- evaluation: F.default(K)
47
+ evaluation: U.default(R)
48
48
  }).check((e) => {
49
49
  const { columns: i, checkpoints: s, code: o } = e.value, n = i.map((d) => d.id);
50
50
  new Set(n).size !== n.length && e.issues.push({
@@ -115,7 +115,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
115
115
  }), ke = S({
116
116
  /** Checkpoint id → column id → what the learner wrote. */
117
117
  cells: Z(f(), Z(f(), f())).default({})
118
- }), M = (e, i, s) => e?.cells?.[i]?.[s] ?? "", le = (e) => ({
118
+ }), W = (e, i, s) => e?.cells?.[i]?.[s] ?? "", le = (e) => ({
119
119
  cells: Object.fromEntries(
120
120
  e.checkpoints.map((i) => [i.id, i.expected])
121
121
  )
@@ -127,11 +127,11 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
127
127
  ...e?.cells,
128
128
  [i]: { ...e?.cells?.[i], [s]: o }
129
129
  }
130
- }), se = /^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/, P = (e) => se.test(e) ? Number(e) : void 0, R = (e, i) => {
130
+ }), se = /^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/, P = (e) => se.test(e) ? Number(e) : void 0, D = (e, i) => {
131
131
  const s = e.trim().replace(/\s+/g, " ").replace(/\s*([,;:[\]{}()])\s*/g, "$1").trim();
132
132
  return i ? s : s.toLowerCase();
133
133
  }, re = (e, i, s) => {
134
- const o = R(e, s), n = R(i, s), r = P(o), h = P(r === void 0 ? n : n.replace(/^([+-]?\d+),(\d+)$/, "$1.$2"));
134
+ const o = D(e, s), n = D(i, s), r = P(o), h = P(r === void 0 ? n : n.replace(/^([+-]?\d+),(\d+)$/, "$1.$2"));
135
135
  if (r !== void 0 && h !== void 0) return r === h;
136
136
  if (!s) {
137
137
  const u = (d) => d === "true" || d === "wahr" ? "true" : d === "false" || d === "falsch" ? "false" : d;
@@ -145,7 +145,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
145
145
  for (const n of e.columns) {
146
146
  const r = re(
147
147
  o.expected[n.id] ?? "",
148
- M(i, o.id, n.id),
148
+ W(i, o.id, n.id),
149
149
  e.caseSensitive
150
150
  );
151
151
  s[o.id][n.id] = r ? "correct" : "wrong";
@@ -220,7 +220,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
220
220
  correct: "richtig",
221
221
  wrong: "falsch"
222
222
  }
223
- }, he = ".bitflow-trace-code{margin:0;display:flex;flex-direction:column;gap:var(--bitflow-space-xxsmall)}.bitflow-trace-lines{margin:0;padding:var(--bitflow-space-xsmall);list-style:none;background:var(--bitflow-color-surface);border:1px solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard);overflow-x:auto}.bitflow-trace-line{display:flex;align-items:baseline;gap:var(--bitflow-space-xsmall)}.bitflow-trace-line code{font-family:var(--bitflow-font-family-mono);font-size:var(--bitflow-font-size-small);white-space:pre}.bitflow-trace-number{flex:none;width:1.75rem;font-family:var(--bitflow-font-family-mono);font-size:var(--bitflow-font-size-small);font-variant-numeric:tabular-nums;color:var(--bitflow-color-text-muted);text-align:right;-webkit-user-select:none;user-select:none}.bitflow-trace-mark{flex:none;padding:0 var(--bitflow-space-xsmall);font-size:var(--bitflow-font-size-small);color:var(--bitflow-color-info);background:var(--bitflow-color-info-surface);border-radius:var(--bitflow-radius-full)}.bitflow-trace-scroll{overflow-x:auto}.bitflow-trace-table{border-collapse:collapse;width:auto;min-width:100%}.bitflow-trace-table caption{text-align:left;padding-bottom:var(--bitflow-space-xxsmall)}.bitflow-trace-table th,.bitflow-trace-table td{padding:var(--bitflow-space-xxsmall);border:1px solid var(--bitflow-color-border);text-align:left;vertical-align:middle}.bitflow-trace-table thead th{background:var(--bitflow-color-neutral-100);font-weight:var(--bitflow-font-weight-medium);white-space:nowrap}.bitflow-trace-table tbody th{font-weight:var(--bitflow-font-weight-standard);background:var(--bitflow-color-neutral-100)}.bitflow-trace-note{display:block;font-size:var(--bitflow-font-size-small);font-weight:var(--bitflow-font-weight-standard);color:var(--bitflow-color-text-muted)}.bitflow-trace-cell{padding:var(--bitflow-space-xxsmall)}.bitflow-trace-input,.bitflow-trace-select{min-height:2.25rem;min-width:var(--bitflow-trace-cell-width, 7rem)}.bitflow-trace-input{font-family:var(--bitflow-font-family-mono)}.bitflow-trace-cell-correct .bitflow-input,.bitflow-trace-cell-correct .bitflow-select{border-color:var(--bitflow-color-correct);background:var(--bitflow-color-correct-surface)}.bitflow-trace-cell-wrong .bitflow-input,.bitflow-trace-cell-wrong .bitflow-select{border-color:var(--bitflow-color-wrong);background:var(--bitflow-color-wrong-surface)}.bitflow-trace-editor-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--bitflow-space-xsmall)}.bitflow-trace-editor-row>.bitflow-input,.bitflow-trace-editor-row>.bitflow-select{flex:1 1 var(--bitflow-trace-editor-min, 7rem);min-width:0}", me = {
223
+ }, he = ".bitflow-trace-code{margin:0;display:flex;flex-direction:column;gap:var(--bitflow-space-xxsmall)}.bitflow-trace-lines{margin:0;padding:var(--bitflow-space-xsmall);list-style:none;background:var(--bitflow-color-surface);border:1px solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard);overflow-x:auto}.bitflow-trace-line{display:flex;align-items:baseline;gap:var(--bitflow-space-xsmall)}.bitflow-trace-line code{font-family:var(--bitflow-font-family-mono);font-size:var(--bitflow-font-size-small);white-space:pre}.bitflow-trace-number{flex:none;width:1.75rem;font-family:var(--bitflow-font-family-mono);font-size:var(--bitflow-font-size-small);font-variant-numeric:tabular-nums;color:var(--bitflow-color-text-muted);text-align:right;-webkit-user-select:none;user-select:none}.bitflow-trace-mark{flex:none;padding:0 var(--bitflow-space-xsmall);font-size:var(--bitflow-font-size-small);color:var(--bitflow-color-info);background:var(--bitflow-color-info-surface);border-radius:var(--bitflow-radius-full)}.bitflow-trace-scroll{overflow-x:auto}.bitflow-trace-table{border-collapse:collapse;width:auto;min-width:100%}.bitflow-trace-table caption{text-align:left;padding-bottom:var(--bitflow-space-xxsmall)}.bitflow-trace-table th,.bitflow-trace-table td{padding:var(--bitflow-space-xxsmall);border:1px solid var(--bitflow-color-border);text-align:left;vertical-align:middle}.bitflow-trace-table thead th{background:var(--bitflow-color-neutral-100);font-weight:var(--bitflow-font-weight-medium);white-space:nowrap;vertical-align:top;padding:var(--bitflow-space-xsmall)}.bitflow-trace-table tbody th{font-weight:var(--bitflow-font-weight-standard);background:var(--bitflow-color-neutral-100);min-width:var(--bitflow-trace-moment-width, 10rem);padding-inline:var(--bitflow-space-xsmall)}.bitflow-trace-note{display:block;font-size:var(--bitflow-font-size-small);font-weight:var(--bitflow-font-weight-standard);color:var(--bitflow-color-text-muted)}.bitflow-trace-cell{padding:var(--bitflow-space-xxsmall)}.bitflow-trace-input,.bitflow-trace-select{min-height:2.25rem;min-width:var(--bitflow-trace-cell-width, 7rem)}.bitflow-trace-input{font-family:var(--bitflow-font-family-mono)}.bitflow-trace-cell-correct .bitflow-input,.bitflow-trace-cell-correct .bitflow-select{border-color:var(--bitflow-color-correct);background:var(--bitflow-color-correct-surface)}.bitflow-trace-cell-wrong .bitflow-input,.bitflow-trace-cell-wrong .bitflow-select{border-color:var(--bitflow-color-wrong);background:var(--bitflow-color-wrong-surface)}.bitflow-trace-editor-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--bitflow-space-xsmall)}.bitflow-trace-editor-row>.bitflow-input,.bitflow-trace-editor-row>.bitflow-select{flex:1 1 var(--bitflow-trace-editor-min, 7rem);min-width:0}", me = {
224
224
  en: {
225
225
  instructionLabel: "Instruction",
226
226
  instructionHint: "Shown above the program. Markdown is allowed.",
@@ -327,7 +327,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
327
327
  (r.get(u + 1) ?? []).map((d) => /* @__PURE__ */ t.jsx("span", { className: "bitflow-trace-mark", children: d }, d))
328
328
  ] }, u)) })
329
329
  ] });
330
- }, W = ({
330
+ }, I = ({
331
331
  data: e,
332
332
  answer: i,
333
333
  states: s,
@@ -354,7 +354,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
354
354
  m.line !== void 0 && /* @__PURE__ */ t.jsx("span", { className: "bitflow-trace-note", children: u("atLine", { line: m.line }) })
355
355
  ] }),
356
356
  e.columns.map((v, a) => {
357
- const l = s?.[m.id]?.[v.id], c = M(i, m.id, v.id), w = u("cellLabel", {
357
+ const l = s?.[m.id]?.[v.id], c = W(i, m.id, v.id), w = u("cellLabel", {
358
358
  column: p(v, a),
359
359
  step: j
360
360
  }), x = (k) => h(oe(i, m.id, v.id, k));
@@ -416,7 +416,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
416
416
  /* @__PURE__ */ t.jsx("p", { className: "bitflow-text-muted", children: h(o ? "howToReadonly" : "howTo") }),
417
417
  /* @__PURE__ */ t.jsx(be, { data: e, locale: n, showNumbers: pe(e) }),
418
418
  /* @__PURE__ */ t.jsx(
419
- W,
419
+ I,
420
420
  {
421
421
  data: e,
422
422
  answer: i,
@@ -427,7 +427,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
427
427
  }
428
428
  )
429
429
  ] });
430
- }, D = (e, i) => {
430
+ }, K = (e, i) => {
431
431
  for (let s = i.length + 1; ; s++) {
432
432
  const o = `${e}-${s}`;
433
433
  if (!i.includes(o)) return o;
@@ -466,7 +466,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
466
466
  });
467
467
  return /* @__PURE__ */ t.jsxs("div", { className: "bitflow-stack", children: [
468
468
  /* @__PURE__ */ t.jsx(
469
- $,
469
+ E,
470
470
  {
471
471
  label: n("instructionLabel"),
472
472
  hint: n("instructionHint"),
@@ -476,7 +476,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
476
476
  }
477
477
  ),
478
478
  /* @__PURE__ */ t.jsx(
479
- U,
479
+ G,
480
480
  {
481
481
  label: n("languageLabel"),
482
482
  hint: n("languageHint"),
@@ -485,7 +485,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
485
485
  }
486
486
  ),
487
487
  /* @__PURE__ */ t.jsx(
488
- $,
488
+ E,
489
489
  {
490
490
  label: n("codeLabel"),
491
491
  hint: n("codeHint"),
@@ -583,7 +583,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
583
583
  columns: [
584
584
  ...e.columns,
585
585
  {
586
- id: D("column", e.columns.map((a) => a.id)),
586
+ id: K("column", e.columns.map((a) => a.id)),
587
587
  name: "",
588
588
  kind: "value"
589
589
  }
@@ -688,7 +688,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
688
688
  checkpoints: [
689
689
  ...e.checkpoints,
690
690
  {
691
- id: D(
691
+ id: K(
692
692
  "checkpoint",
693
693
  e.checkpoints.map((a) => a.id)
694
694
  ),
@@ -705,7 +705,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
705
705
  /* @__PURE__ */ t.jsx("span", { className: "bitflow-hint", children: n("answerKeyHint") }),
706
706
  e.columns.length === 0 || e.checkpoints.length === 0 ? /* @__PURE__ */ t.jsx("p", { className: "bitflow-text-muted", children: n("answerKeyEmpty") }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
707
707
  /* @__PURE__ */ t.jsx(
708
- W,
708
+ I,
709
709
  {
710
710
  data: e,
711
711
  answer: le(e),
@@ -725,7 +725,7 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
725
725
  ))
726
726
  ] })
727
727
  ] }),
728
- /* @__PURE__ */ t.jsxs(B, { summary: n("advanced"), children: [
728
+ /* @__PURE__ */ t.jsxs(_, { summary: n("advanced"), children: [
729
729
  /* @__PURE__ */ t.jsx(
730
730
  A,
731
731
  {
@@ -765,9 +765,9 @@ const X = ["value", "output", "line"], ee = V(X), te = S({
765
765
  ] });
766
766
  }, ge = (e) => (e ?? []).filter(
767
767
  (i) => /^checkpoints\.\d+\.expected\./.test(i.path)
768
- ), I = "task-code-trace";
769
- _({
770
- type: I,
768
+ ), M = "task-code-trace";
769
+ V({
770
+ type: M,
771
771
  kind: "task",
772
772
  schema: ae,
773
773
  evaluate: ue,
@@ -786,11 +786,11 @@ _({
786
786
  checkpoints: [],
787
787
  caseSensitive: !1,
788
788
  partialCredit: !0,
789
- evaluation: K()
789
+ evaluation: R()
790
790
  })
791
791
  });
792
- Q(I);
793
- G("bitflow-styles-task-code-trace", he);
792
+ Q(M);
793
+ B("bitflow-styles-task-code-trace", he);
794
794
  export {
795
795
  ke as AnswerSchema,
796
796
  X as COLUMN_KINDS,
@@ -800,18 +800,18 @@ export {
800
800
  te as ColumnSchema,
801
801
  ae as DataSchema,
802
802
  we as Form,
803
- I as TYPE,
803
+ M as TYPE,
804
804
  fe as Task,
805
- W as TraceTable,
805
+ I as TraceTable,
806
806
  de as allCorrect,
807
807
  re as cellCorrect,
808
808
  z as cellStates,
809
- M as cellValue,
809
+ W as cellValue,
810
810
  ue as evaluate,
811
811
  me as formMessages,
812
812
  O as linesOf,
813
813
  L as messages,
814
- R as normalise,
814
+ D as normalise,
815
815
  ce as scoreOf,
816
816
  oe as withCell
817
817
  };
@@ -1,5 +1,5 @@
1
1
  import { L as c, a2 as l, j as t, b as i, s as m, aa as p } from "./dom-uYx_3K1r.js";
2
- import { y as k, v as x, L as h, R as b } from "./bitLoaders-DIGwTcpd.js";
2
+ import { C as k, e as x, U as h, H as b } from "./bitLoaders-CxvZkGrY.js";
3
3
  const w = "", s = {
4
4
  en: {
5
5
  name: "Explanation",