hyperbook 0.113.2 → 0.113.4

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 (54) hide show
  1. package/dist/asset-manifest.json +9 -9
  2. package/dist/assets/directive-bitflow/{EditorElement-CE3Yr86b.js → EditorElement-BNwEKIvk.js} +143 -143
  3. package/dist/assets/directive-bitflow/{ReportElements-eYGRtw6N.js → ReportElements-CAvHx5xm.js} +2 -2
  4. package/dist/assets/directive-bitflow/{bitLoaders-CxvZkGrY.js → bitLoaders-7qanePQL.js} +41 -41
  5. package/dist/assets/directive-bitflow/{dom-uYx_3K1r.js → dom-B6NPWBb1.js} +1558 -1551
  6. package/dist/assets/directive-bitflow/editor.js +3 -3
  7. package/dist/assets/directive-bitflow/flow.js +4 -4
  8. package/dist/assets/directive-bitflow/{index-oNmOArKu.js → index-4JaKZ7WT.js} +2 -2
  9. package/dist/assets/directive-bitflow/{index-EKIgFddO.js → index-6CQr_atd.js} +19 -19
  10. package/dist/assets/directive-bitflow/{index-BadyFTU5.js → index-B9iG-a48.js} +2 -2
  11. package/dist/assets/directive-bitflow/{index-D4PdXMcj.js → index-BFYoOtcY.js} +5 -5
  12. package/dist/assets/directive-bitflow/{index-d5ebPDeY.js → index-BI6aFdIS.js} +10 -10
  13. package/dist/assets/directive-bitflow/{index-DruC5d43.js → index-Bf078mfo.js} +2 -2
  14. package/dist/assets/directive-bitflow/{index-CWe2GjBK.js → index-BinE5Wvd.js} +7 -7
  15. package/dist/assets/directive-bitflow/{index-BG0PL-Z6.js → index-BoX5-jkC.js} +7 -7
  16. package/dist/assets/directive-bitflow/{index-ledofrbo.js → index-BqRsXShM.js} +4 -4
  17. package/dist/assets/directive-bitflow/{index-CjKhq7gY.js → index-BxihQ8Oo.js} +13 -13
  18. package/dist/assets/directive-bitflow/{index-BNdpL6Ss.js → index-C5YguHZU.js} +28 -28
  19. package/dist/assets/directive-bitflow/{index-xTX3CXJW.js → index-C8zwSmE6.js} +7 -7
  20. package/dist/assets/directive-bitflow/{index-D9LOuqr2.js → index-C9JSBTNc.js} +21 -21
  21. package/dist/assets/directive-bitflow/{index-BydYlLy4.js → index-CCMI6UK4.js} +8 -8
  22. package/dist/assets/directive-bitflow/{index-WbE9UOFa.js → index-CGDt8H6s.js} +5 -5
  23. package/dist/assets/directive-bitflow/{index-D_QhyFcx.js → index-Ca1v0pjV.js} +5 -5
  24. package/dist/assets/directive-bitflow/{index-88c3K20U.js → index-CaYn3Gmh.js} +12 -12
  25. package/dist/assets/directive-bitflow/{index-C7RJxxAx.js → index-CbQue0If.js} +30 -30
  26. package/dist/assets/directive-bitflow/{index-CfKpkSVC.js → index-CjH3h0OO.js} +28 -28
  27. package/dist/assets/directive-bitflow/{index-TUXuIR22.js → index-CkO3QfOS.js} +4 -4
  28. package/dist/assets/directive-bitflow/{index-DIb3CXwC.js → index-Cz4i5rfe.js} +6 -6
  29. package/dist/assets/directive-bitflow/{index-HXNGIC7K.js → index-D0NtgeiX.js} +17 -17
  30. package/dist/assets/directive-bitflow/{index-CLHtOGrW.js → index-D1C_1SPY.js} +4 -4
  31. package/dist/assets/directive-bitflow/{index-Dn5hHVuT.js → index-D45u7EVR.js} +13 -13
  32. package/dist/assets/directive-bitflow/{index-IsMJtrUT.js → index-D9Ox4YpM.js} +10 -10
  33. package/dist/assets/directive-bitflow/{index-B61LKxr1.js → index-DJ1w2Xcm.js} +15 -15
  34. package/dist/assets/directive-bitflow/{index-BwBVUdJ9.js → index-DUqW2fmV.js} +2 -2
  35. package/dist/assets/directive-bitflow/{index-DUOrQfVe.js → index-Deedj9EF.js} +6 -6
  36. package/dist/assets/directive-bitflow/{index-DQP0cUsP.js → index-Dg6nnY_v.js} +14 -14
  37. package/dist/assets/directive-bitflow/{index-DW3cUBvZ.js → index-DgxEzomz.js} +2 -2
  38. package/dist/assets/directive-bitflow/{index-D0U3nepG.js → index-Dl0-ZAT5.js} +20 -20
  39. package/dist/assets/directive-bitflow/{index-ISbOe239.js → index-Do6dmZyj.js} +2 -2
  40. package/dist/assets/directive-bitflow/{index-Bw0pL0hW.js → index-DqnGC-DU.js} +6 -6
  41. package/dist/assets/directive-bitflow/{index-rp4UTV85.js → index-DwXXeSwk.js} +19 -19
  42. package/dist/assets/directive-bitflow/{index-BZhNY0lo.js → index-b6qwcTj9.js} +9 -9
  43. package/dist/assets/directive-bitflow/{index-BO-d4HVC.js → index-d105UFQI.js} +21 -21
  44. package/dist/assets/directive-bitflow/{index-BuQ-K_tR.js → index-jijMWQB6.js} +2 -2
  45. package/dist/assets/directive-bitflow/{index-DYWo0PUv.js → index-kxO5_U9Y.js} +2 -2
  46. package/dist/assets/directive-bitflow/{index-Cm4w1Zyc.js → index-p5AOgOal.js} +21 -21
  47. package/dist/assets/directive-bitflow/{index-BlT1EcFH.js → index-q2APknM6.js} +15 -15
  48. package/dist/assets/directive-bitflow/{index-CERSJ9uS.js → index-zVkWgm5I.js} +11 -11
  49. package/dist/assets/directive-bitflow/index.js +6 -6
  50. package/dist/assets/directive-bitflow/report.js +1 -1
  51. package/dist/assets/directive-bitflow/{shareableReport-vjEU4OvA.js → shareableReport-mdyEMdsJ.js} +6 -6
  52. package/dist/assets/directive-multievent/multievent.js +9 -17
  53. package/dist/index.js +1 -1
  54. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
- import { L as D, a4 as ee, ac as ue, ad as te, a5 as fe, a9 as B, a2 as M, a as y, j as i, P as ne, b as P, aa as pe, s as me } from "./dom-uYx_3K1r.js";
2
- import { e as Z, C as he, g as W, P as be, M as ge, F as V, B as we, q as ve, y as xe, U as ye, H as ke } from "./bitLoaders-CxvZkGrY.js";
1
+ import { P as D, a4 as ee, ac as ue, ad as te, a5 as fe, a9 as B, a2 as M, a as y, j as i, Y as ne, b as P, aa as pe, s as me } from "./dom-B6NPWBb1.js";
2
+ import { e as Z, C as he, g as Y, P as be, M as ge, F as V, B as we, q as ve, y as xe, U as ye, H as ke } from "./bitLoaders-7qanePQL.js";
3
3
  const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflow-space-small)}.bitflow-parsons-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:var(--bitflow-space-small)}.bitflow-parsons-list{display:flex;flex-direction:column;gap:var(--bitflow-space-xxsmall);padding:0;margin:var(--bitflow-space-xxsmall) 0 0;list-style:none}.bitflow-parsons-columns>*>.bitflow-text-muted{display:flex;align-items:center;justify-content:center;min-height:6rem;margin-top:var(--bitflow-space-xxsmall);padding:var(--bitflow-space-small);text-align:center;border:var(--bitflow-border-width) dashed var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard)}.bitflow-parsons-line{display:flex;gap:var(--bitflow-space-xsmall);align-items:center;margin-inline-start:var(--bitflow-parsons-indent, 0rem);width:calc(100% - var(--bitflow-parsons-indent, 0rem));padding:var(--bitflow-space-xxsmall) var(--bitflow-space-xsmall);font:inherit;color:var(--bitflow-color-text);text-align:left;cursor:grab;background:var(--bitflow-color-surface);border:var(--bitflow-border-width) solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard);touch-action:manipulation}.bitflow-parsons-line:disabled{cursor:default}.bitflow-parsons-grip{flex:none;align-self:stretch;display:flex;align-items:center;justify-content:center;width:2rem;margin-block:calc(-1 * var(--bitflow-space-xxsmall));margin-inline-start:calc(-1 * var(--bitflow-space-xsmall));touch-action:none;cursor:grab}.bitflow-parsons-grip:before{content:"";width:12px;height:18px;background:radial-gradient(circle,var(--bitflow-color-neutral-400) 1.5px,transparent 2px) 0 0 / 6px 6px}.bitflow-parsons-line code{flex:1;min-width:0;font-family:var(--bitflow-font-family-mono);font-size:var(--bitflow-font-size-small);white-space:pre-wrap;overflow-wrap:anywhere;padding-inline-start:2ch;text-indent:-2ch}.bitflow-parsons-number{flex:none;width:1.5rem;font-size:var(--bitflow-font-size-small);font-variant-numeric:tabular-nums;color:var(--bitflow-color-text-muted);text-align:right}.bitflow-parsons-line.bitflow-parsons-line-correct{background:color-mix(in srgb,var(--bitflow-color-correct) 12%,var(--bitflow-color-surface));border-color:var(--bitflow-color-correct)}.bitflow-parsons-line.bitflow-parsons-line-wrong{background:color-mix(in srgb,var(--bitflow-color-wrong) 12%,var(--bitflow-color-surface));border-color:var(--bitflow-color-wrong)}.bitflow-parsons-line.bitflow-parsons-line-stray{background:var(--bitflow-color-neutral-100);border-style:dashed;border-color:var(--bitflow-color-wrong)}.bitflow-parsons-line.bitflow-parsons-line-gap{background:var(--bitflow-color-neutral-100);border-style:dashed;border-color:var(--bitflow-color-primary)}.bitflow-parsons-lifted{position:fixed;top:0;left:0;z-index:10;cursor:grabbing;pointer-events:none;box-shadow:var(--bitflow-shadow-medium)}.bitflow-parsons-lifted.bitflow-parsons-lifted-out{opacity:.55;border-style:dashed}.bitflow-parsons-read{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-parsons-read-line{display:flex;align-items:baseline;gap:var(--bitflow-space-xsmall)}.bitflow-parsons-read-line code{font-family:var(--bitflow-font-family-mono);font-size:var(--bitflow-font-size-small);white-space:pre}.bitflow-parsons-read-level{flex:none;min-width:var(--bitflow-parsons-level-width, 4.5rem);font-size:var(--bitflow-font-size-small);font-variant-numeric:tabular-nums;color:var(--bitflow-color-text-muted);-webkit-user-select:none;user-select:none}.bitflow-parsons-structogram .bitflow-parsons-line code{font-family:var(--bitflow-font-family);font-size:var(--bitflow-font-size-standard)}.bitflow-parsons-structogram .bitflow-parsons-program{gap:0}.bitflow-parsons-structogram .bitflow-parsons-program .bitflow-parsons-line{margin-inline-start:0;width:100%;border-radius:0;margin-top:calc(-1 * var(--bitflow-border-width));padding-inline-start:calc(var(--bitflow-parsons-indent, 0rem) + var(--bitflow-space-xsmall));background-image:repeating-linear-gradient(to right,var(--bitflow-color-neutral-200) 0 calc(1.5rem - 2px),var(--bitflow-color-neutral-700) calc(1.5rem - 2px) 1.5rem);background-size:var(--bitflow-parsons-indent, 0rem) 100%;background-repeat:no-repeat}.bitflow-parsons-structogram .bitflow-parsons-program li:first-child .bitflow-parsons-line{margin-top:0;border-start-start-radius:var(--bitflow-radius-standard);border-start-end-radius:var(--bitflow-radius-standard)}.bitflow-parsons-structogram .bitflow-parsons-program li:last-child .bitflow-parsons-line{border-end-start-radius:var(--bitflow-radius-standard);border-end-end-radius:var(--bitflow-radius-standard)}.bitflow-parsons-row{display:flex;align-items:stretch;gap:var(--bitflow-space-xxsmall)}.bitflow-parsons-row>.bitflow-parsons-line{flex:1;min-width:0}.bitflow-parsons-actions{display:none;flex:none;grid-template-rows:1fr 1fr;grid-auto-flow:column;gap:2px}@media(pointer:coarse){.bitflow-parsons-actions{display:grid}}.bitflow-parsons-action{min-width:2rem;min-height:1.5rem;padding:0;font:inherit;font-size:var(--bitflow-font-size-small);color:var(--bitflow-color-text);background:var(--bitflow-color-surface);border:1px solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-small);cursor:pointer}.bitflow-parsons-action:disabled{opacity:.4;cursor:default}.bitflow-parsons-structogram .bitflow-parsons-program .bitflow-parsons-line-branch{position:relative;padding-bottom:1.25em;background-image:linear-gradient(to top right,transparent calc(50% - 1px),var(--bitflow-color-neutral-700) 50%,transparent calc(50% + 1px)),linear-gradient(to top left,transparent calc(50% - 1px),var(--bitflow-color-neutral-700) 50%,transparent calc(50% + 1px)),repeating-linear-gradient(to right,var(--bitflow-color-neutral-200) 0 calc(1.5rem - 2px),var(--bitflow-color-neutral-700) calc(1.5rem - 2px) 1.5rem);background-size:calc((100% - var(--bitflow-parsons-indent, 0rem)) / 2) 100%,calc((100% - var(--bitflow-parsons-indent, 0rem)) / 2) 100%,var(--bitflow-parsons-indent, 0rem) 100%;background-position:var(--bitflow-parsons-indent, 0rem) 0,100% 0,0 0;background-repeat:no-repeat}.bitflow-parsons-structogram .bitflow-parsons-line-branch code{text-align:center}.bitflow-parsons-cases{position:absolute;inset-inline:calc(var(--bitflow-parsons-indent, 0rem) + var(--bitflow-space-xsmall)) var(--bitflow-space-xsmall);bottom:2px;display:flex;justify-content:space-between;font-size:var(--bitflow-font-size-small);color:var(--bitflow-color-text-muted);pointer-events:none}.bitflow-parsons-structogram .bitflow-parsons-program .bitflow-parsons-line-else code{font-style:italic;color:var(--bitflow-color-text-muted)}.bitflow-parsons-structogram .bitflow-parsons-program .bitflow-parsons-line-else{border-top-style:double;border-top-width:4px}', ae = (e) => e.lines.filter((n) => !n.distractor), ze = (e, n) => {
4
4
  const l = ae(e), r = (a) => e.lines.find((c) => c.id === a)?.distractor === !0;
5
5
  return n.map((a, c) => {
@@ -365,7 +365,7 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
365
365
  onPointerDown: (u) => F(u, t.id, !0),
366
366
  onClick: () => oe(t),
367
367
  children: [
368
- !a && /* @__PURE__ */ i.jsx(X, {}),
368
+ !a && /* @__PURE__ */ i.jsx(W, {}),
369
369
  /* @__PURE__ */ i.jsx("code", { children: t.text })
370
370
  ]
371
371
  }
@@ -414,7 +414,7 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
414
414
  onClick: () => O(o),
415
415
  children: [
416
416
  !x && /* @__PURE__ */ i.jsxs(i.Fragment, { children: [
417
- !a && /* @__PURE__ */ i.jsx(X, {}),
417
+ !a && /* @__PURE__ */ i.jsx(W, {}),
418
418
  /* @__PURE__ */ i.jsx(
419
419
  "span",
420
420
  {
@@ -498,7 +498,7 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
498
498
  transform: `translate(${b.x - b.grabX}px, ${b.y - b.grabY}px)`
499
499
  },
500
500
  children: [
501
- /* @__PURE__ */ i.jsx(X, {}),
501
+ /* @__PURE__ */ i.jsx(W, {}),
502
502
  /* @__PURE__ */ i.jsx("code", { children: z(b.lineId) })
503
503
  ]
504
504
  }
@@ -507,14 +507,14 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
507
507
  ]
508
508
  }
509
509
  );
510
- }, X = () => /* @__PURE__ */ i.jsx("span", { className: "bitflow-parsons-grip", "aria-hidden": "true" }), Te = (e) => e === "touch" || e === "pen", Pe = (e) => e instanceof Element && e.closest(".bitflow-parsons-grip") !== null, De = /^\s*(wenn|falls|if)\b/i, Ee = /^\s*(sonst|else)\b/i, Re = (e, n, l) => {
510
+ }, W = () => /* @__PURE__ */ i.jsx("span", { className: "bitflow-parsons-grip", "aria-hidden": "true" }), Te = (e) => e === "touch" || e === "pen", Pe = (e) => e instanceof Element && e.closest(".bitflow-parsons-grip") !== null, De = /^\s*(wenn|falls|if)\b/i, Ee = /^\s*(sonst|else)\b/i, Re = (e, n, l) => {
511
511
  const r = l(e[n].lineId)?.text ?? "";
512
512
  if (Ee.test(r)) return "else";
513
513
  const a = e[n + 1];
514
514
  if (!(!a || a.indent <= e[n].indent))
515
515
  return De.test(r) ? "branch" : "loop";
516
516
  }, Ae = (e, n) => {
517
- const l = Xe(We(n)), r = [...e];
517
+ const l = We(Ye(n)), r = [...e];
518
518
  for (let a = r.length - 1; a > 0; a--) {
519
519
  const c = Math.floor(l() * (a + 1));
520
520
  [r[a], r[c]] = [r[c], r[a]];
@@ -526,16 +526,16 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
526
526
  if (!l(a, e)) return a;
527
527
  }
528
528
  return [...e].reverse();
529
- }, We = (e) => {
529
+ }, Ye = (e) => {
530
530
  let n = 2166136261;
531
531
  for (let l = 0; l < e.length; l++)
532
532
  n ^= e.charCodeAt(l), n = Math.imul(n, 16777619);
533
533
  return n >>> 0;
534
- }, Xe = (e) => () => {
534
+ }, We = (e) => () => {
535
535
  e |= 0, e = e + 1831565813 | 0;
536
536
  let n = Math.imul(e ^ e >>> 15, 1 | e);
537
537
  return n = n + Math.imul(n ^ n >>> 7, 61 | n) ^ n, ((n ^ n >>> 14) >>> 0) / 4294967296;
538
- }, Ye = " ", Y = (e) => e.filter((n) => !n.distractor), K = (e) => e.filter((n) => n.distractor), T = (e) => e.map((n) => Ye.repeat(n.indent) + n.text).join(`
538
+ }, Xe = " ", X = (e) => e.filter((n) => !n.distractor), K = (e) => e.filter((n) => n.distractor), T = (e) => e.map((n) => Xe.repeat(n.indent) + n.text).join(`
539
539
  `), Be = (e) => {
540
540
  const n = e.split(`
541
541
  `).filter((l) => l.trim() !== "").map((l) => l.length - l.trimStart().length).filter((l) => l > 0);
@@ -602,20 +602,20 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
602
602
  errors: r
603
603
  }) => {
604
604
  const a = (d, p) => P(Ne, d, n, p), c = (d) => l({ ...e, ...d }), [s, m] = y.useState(() => ({
605
- program: T(Y(e.lines)),
605
+ program: T(X(e.lines)),
606
606
  distractors: T(K(e.lines))
607
607
  }));
608
608
  y.useEffect(() => {
609
609
  const d = _(s.program, s.distractors, e.lines);
610
610
  $e(d, e.lines) || m({
611
- program: T(Y(e.lines)),
611
+ program: T(X(e.lines)),
612
612
  distractors: T(K(e.lines))
613
613
  });
614
614
  }, [e.lines]);
615
615
  const h = (d) => {
616
616
  const p = { ...s, ...d };
617
617
  m(p), c({ lines: _(p.program, p.distractors, e.lines) });
618
- }, g = Y(e.lines);
618
+ }, g = X(e.lines);
619
619
  return /* @__PURE__ */ i.jsxs("div", { className: "bitflow-stack", children: [
620
620
  /* @__PURE__ */ i.jsx(
621
621
  Z,
@@ -644,7 +644,7 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
644
644
  rows: 10,
645
645
  value: s.program,
646
646
  placeholder: a("programPlaceholder"),
647
- error: W(r, "lines"),
647
+ error: Y(r, "lines"),
648
648
  onChange: (d) => h({ program: d })
649
649
  }
650
650
  ),
@@ -689,7 +689,7 @@ const je = '.bitflow-parsons{display:flex;flex-direction:column;gap:var(--bitflo
689
689
  onChange: (d) => c({ indentationMatters: d })
690
690
  }
691
691
  ),
692
- W(r, "indentationMatters") && /* @__PURE__ */ i.jsx("span", { className: "bitflow-field-error", role: "alert", children: W(r, "indentationMatters") }),
692
+ Y(r, "indentationMatters") && /* @__PURE__ */ i.jsx("span", { className: "bitflow-field-error", role: "alert", children: Y(r, "indentationMatters") }),
693
693
  /* @__PURE__ */ i.jsx(
694
694
  V,
695
695
  {
@@ -1,5 +1,5 @@
1
- import { L as I, a4 as $, ac as re, ad as J, a9 as U, am as se, a2 as E, a as P, j as a, a5 as Q, P as B, b as A, aa as de, s as ce } from "./dom-uYx_3K1r.js";
2
- import { y as he, j as me, $ as Y, e as ue, h as q, g as z, P as F, C as L, M as V, F as O, r as K, B as pe, U as be, H as ge } from "./bitLoaders-CxvZkGrY.js";
1
+ import { P as I, a4 as $, ac as re, ad as J, a9 as U, am as se, a2 as E, a as P, j as a, a5 as Q, Y as B, b as A, aa as de, s as ce } from "./dom-B6NPWBb1.js";
2
+ import { y as he, j as me, $ as X, e as ue, h as q, g as z, P as F, C as L, M as V, F as O, r as K, B as pe, U as be, H as ge } from "./bitLoaders-7qanePQL.js";
3
3
  const fe = '.bitflow-dragdrop{display:flex;flex-direction:column;gap:var(--bitflow-space-small)}.bitflow-dragdrop-area{position:relative;width:100%;overflow:hidden;border-radius:var(--bitflow-radius-standard);container-type:inline-size}.bitflow-dragdrop-background{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.bitflow-dragdrop-noimage{background:var(--bitflow-color-neutral-100)}.bitflow-dragdrop-element{display:flex;align-items:center;justify-content:center;padding:var(--bitflow-space-xxsmall);font:inherit;font-size:clamp(11px,3.5cqw,var(--bitflow-font-size-small));line-height:var(--bitflow-line-height-tight);overflow-wrap:anywhere;color:var(--bitflow-color-text);text-align:center;cursor:grab;background:var(--bitflow-color-surface);border:var(--bitflow-border-width) solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard)}.bitflow-dragdrop-element{position:absolute;opacity:var(--bitflow-dragdrop-opacity, 1);touch-action:none}.bitflow-dragdrop-element.bitflow-dragdrop-element-placed{z-index:2}.bitflow-dragdrop-element.bitflow-dragdrop-element-dragging{z-index:3;cursor:grabbing;box-shadow:var(--bitflow-shadow-medium);transition:none}.bitflow-dragdrop-element:disabled{cursor:default}@media(pointer:coarse){.bitflow-dragdrop-element:before{content:"";position:absolute;inset:-10px}}.bitflow-dragdrop-element>img{max-width:100%;max-height:100%}.bitflow-dragdrop-element.bitflow-dragdrop-element-correct{background:color-mix(in srgb,var(--bitflow-color-correct) 18%,var(--bitflow-color-surface));border-color:var(--bitflow-color-correct)}.bitflow-dragdrop-element.bitflow-dragdrop-element-wrong{background:color-mix(in srgb,var(--bitflow-color-wrong) 18%,var(--bitflow-color-surface));border-color:var(--bitflow-color-wrong)}.bitflow-dragdrop-element.bitflow-dragdrop-element-adrift{border-style:dashed;border-color:var(--bitflow-color-neutral-400)}.bitflow-dragdrop-points{position:absolute;top:-8px;right:-8px;min-width:20px;padding:0 4px;font-size:var(--bitflow-font-size-small);font-weight:var(--bitflow-font-weight-bold);line-height:18px;color:var(--bitflow-color-surface);text-align:center;border-radius:10px}.bitflow-dragdrop-points-correct{background:var(--bitflow-color-correct)}.bitflow-dragdrop-points-wrong{background:var(--bitflow-color-wrong)}.bitflow-boxeditor-box.bitflow-dragdrop-handle-zone{border-style:dashed}.bitflow-boxeditor-box.bitflow-dragdrop-handle-element{background:color-mix(in srgb,var(--bitflow-color-surface) 85%,transparent);border-style:solid}.bitflow-rule.bitflow-rule-selected{border-color:var(--bitflow-color-primary);box-shadow:0 0 0 2px var(--bitflow-color-primary)}', ee = (e, i) => {
4
4
  const s = Math.min(e.x + e.width, i.x + i.width) - Math.max(e.x, i.x), r = Math.min(e.y + e.height, i.y + i.height) - Math.max(e.y, i.y);
5
5
  return s > 0 && r > 0 ? s * r : 0;
@@ -48,7 +48,7 @@ const fe = '.bitflow-dragdrop{display:flex;flex-direction:column;gap:var(--bitfl
48
48
  allowRetry: e.evaluation.enableRetry,
49
49
  detail: { placements: s }
50
50
  };
51
- }, G = {
51
+ }, Y = {
52
52
  en: {
53
53
  "placement-adrift": "not on any target",
54
54
  pointGained: "one point",
@@ -250,7 +250,7 @@ const fe = '.bitflow-dragdrop{display:flex;flex-direction:column;gap:var(--bitfl
250
250
  readonly: t,
251
251
  onChange: c
252
252
  }) => {
253
- const p = (l, o) => A(G, l, r, o), x = P.useRef(null), [, y] = P.useReducer((l) => l + 1, 0), [Z, u] = P.useState(""), v = P.useRef(null), f = (l) => e.elements.find((o) => o.id === l), j = (l) => l.label || l.id, D = (l) => s?.[l]?.state, T = P.useCallback((l, o) => {
253
+ const p = (l, o) => A(Y, l, r, o), x = P.useRef(null), [, y] = P.useReducer((l) => l + 1, 0), [Z, u] = P.useState(""), v = P.useRef(null), f = (l) => e.elements.find((o) => o.id === l), j = (l) => l.label || l.id, D = (l) => s?.[l]?.state, T = P.useCallback((l, o) => {
254
254
  const h = v.current?.getBoundingClientRect();
255
255
  return !h || h.width === 0 || h.height === 0 ? null : {
256
256
  x: (l - h.left) / h.width,
@@ -325,7 +325,7 @@ const fe = '.bitflow-dragdrop{display:flex;flex-direction:column;gap:var(--bitfl
325
325
  width: `${l.width * 100}%`,
326
326
  height: `${l.height * 100}%`,
327
327
  "--bitflow-dragdrop-opacity": String(o / 100)
328
- }), oe = (l) => l.kind === "image" && l.src ? /* @__PURE__ */ a.jsx("img", { src: l.src, alt: j(l), draggable: !1 }) : /* @__PURE__ */ a.jsx("span", { children: j(l) }), X = (l, o, h) => {
328
+ }), oe = (l) => l.kind === "image" && l.src ? /* @__PURE__ */ a.jsx("img", { src: l.src, alt: j(l), draggable: !1 }) : /* @__PURE__ */ a.jsx("span", { children: j(l) }), G = (l, o, h) => {
329
329
  const b = x.current, g = b?.elementId === l.id && b.index === o && b.moved, k = g ? { x: b.x, y: b.y } : h ?? { x: l.x, y: l.y }, w = o === null ? void 0 : D(o), S = s !== void 0 && o !== null && w === void 0, C = ["bitflow-dragdrop-element"];
330
330
  return w && C.push(`bitflow-dragdrop-element-${w}`), S && C.push("bitflow-dragdrop-element-adrift"), g && C.push("bitflow-dragdrop-element-dragging"), h && C.push("bitflow-dragdrop-element-placed"), /* @__PURE__ */ a.jsxs(
331
331
  "button",
@@ -394,10 +394,10 @@ const fe = '.bitflow-dragdrop{display:flex;flex-direction:column;gap:var(--bitfl
394
394
  ) : /* @__PURE__ */ a.jsx("div", { className: "bitflow-dragdrop-background bitflow-dragdrop-noimage" }),
395
395
  e.elements.filter(
396
396
  (l) => l.multiple || !i.some((o) => o.elementId === l.id)
397
- ).map((l) => X(l, null)),
397
+ ).map((l) => G(l, null)),
398
398
  i.map((l, o) => {
399
399
  const h = f(l.elementId);
400
- return h ? X(h, o, l) : null;
400
+ return h ? G(h, o, l) : null;
401
401
  })
402
402
  ]
403
403
  }
@@ -628,7 +628,7 @@ const fe = '.bitflow-dragdrop{display:flex;flex-direction:column;gap:var(--bitfl
628
628
  onChange: s,
629
629
  errors: r
630
630
  }) => {
631
- const t = (n) => A(le, n, i), c = (n) => s({ ...e, ...n }), [p, x] = P.useState(), y = Y(e.dropZones.map((n) => n.id)), Z = Y(e.elements.map((n) => n.id)), u = (n) => {
631
+ const t = (n) => A(le, n, i), c = (n) => s({ ...e, ...n }), [p, x] = P.useState(), y = X(e.dropZones.map((n) => n.id)), Z = X(e.elements.map((n) => n.id)), u = (n) => {
632
632
  x(n), n && (n.type === "zone" ? y : Z).open(n.id);
633
633
  }, v = (n, m) => c({
634
634
  elements: e.elements.map(
@@ -1020,8 +1020,8 @@ de({
1020
1020
  Task: Ae,
1021
1021
  Form: Be,
1022
1022
  info: (e) => ({
1023
- name: A(G, "name", e),
1024
- description: A(G, "description", e)
1023
+ name: A(Y, "name", e),
1024
+ description: A(Y, "description", e)
1025
1025
  }),
1026
1026
  defaultData: () => ({
1027
1027
  instruction: "",
@@ -1053,6 +1053,6 @@ export {
1053
1053
  we as inside,
1054
1054
  ke as judge,
1055
1055
  ze as maxScore,
1056
- G as messages,
1056
+ Y as messages,
1057
1057
  ve as zoneUnder
1058
1058
  };
@@ -1,9 +1,9 @@
1
- import { d as e } from "./EditorElement-CE3Yr86b.js";
2
- import { B as m } from "./EditorElement-CE3Yr86b.js";
3
- import { d as o } from "./shareableReport-vjEU4OvA.js";
4
- import { B as f, c as p } from "./shareableReport-vjEU4OvA.js";
5
- import { d as t } from "./ReportElements-eYGRtw6N.js";
6
- import { K as E, b as B, a as b, l as w, c as x } from "./bitLoaders-CxvZkGrY.js";
1
+ import { d as e } from "./EditorElement-BNwEKIvk.js";
2
+ import { B as m } from "./EditorElement-BNwEKIvk.js";
3
+ import { d as o } from "./shareableReport-mdyEMdsJ.js";
4
+ import { B as f, c as p } from "./shareableReport-mdyEMdsJ.js";
5
+ import { d as t } from "./ReportElements-CAvHx5xm.js";
6
+ import { K as E, b as B, a as b, l as w, c as x } from "./bitLoaders-7qanePQL.js";
7
7
  o();
8
8
  e();
9
9
  t();
@@ -1,4 +1,4 @@
1
- import { d as e } from "./ReportElements-eYGRtw6N.js";
1
+ import { d as e } from "./ReportElements-CAvHx5xm.js";
2
2
  e();
3
3
  export {
4
4
  e as defineReportElements
@@ -1,6 +1,6 @@
1
- import { s as R, c as k, a, f as B, j as g, h as i, i as u, t as S, k as F, d as T, e as v } from "./dom-uYx_3K1r.js";
2
- import { O as I, d as O, c as _, a as C } from "./bitLoaders-CxvZkGrY.js";
3
- import { N as b } from "./index-EKIgFddO.js";
1
+ import { s as R, c as B, a, f as S, j as g, h as i, i as u, t as k, l as F, d as T, e as v } from "./dom-B6NPWBb1.js";
2
+ import { O as I, d as O, c as _, a as C } from "./bitLoaders-7qanePQL.js";
3
+ import { N as b } from "./index-6CQr_atd.js";
4
4
  R("bitflow-styles-flow", I);
5
5
  const H = ({
6
6
  container: e,
@@ -13,13 +13,13 @@ const H = ({
13
13
  }) => {
14
14
  const [d, j] = a.useState(), [m, w] = a.useState(!1), h = a.useRef(null);
15
15
  return a.useEffect(() => {
16
- B(e, h);
16
+ S(e, h);
17
17
  }, [e]), a.useEffect(() => {
18
18
  let s = !1;
19
19
  const x = async () => {
20
20
  const l = r ?? (o ? await y(o) : void 0);
21
21
  if (s || l === void 0) return;
22
- const t = S(l);
22
+ const t = k(l);
23
23
  if (!t.ok) {
24
24
  i(e, t.error);
25
25
  return;
@@ -61,7 +61,7 @@ const H = ({
61
61
  onError: (s) => i(e, s)
62
62
  }
63
63
  ) : /* @__PURE__ */ g.jsx("div", { className: "bitflow-root bitflow-loading", "aria-busy": m, children: m ? "…" : null });
64
- }, A = k(H, {
64
+ }, A = B(H, {
65
65
  // Objects arrive as properties; the string forms are for `data-`style HTML
66
66
  // authoring and for `src`, which is a URL either way.
67
67
  props: {
@@ -608,7 +608,7 @@ var multievent = {
608
608
  /\{v\{(.*?)\}\}/gms,
609
609
  "<table align='center' class='MulEvHaManTab' style='border-collapse:collapse;' border='0' cellspacing='0' cellpadding='6'><tr><td valign='middle' align='center' style='min-width:10em;font-family:sans-serif;' class='MulEvHaManTd'><span class='MulEvHaManAusg'>$1</span></td></tr><tr><td align='center' ><span class='MulEvHaManFehl' style='text-decoration:line-through;color:#e00;font-size:smaller;font-family:sans-serif;'> </span><br /></td></tr><tr><td align='center'><input maxlength='2' onkeydown='this.value=\"\"' onkeyup='multievent.MulEvHaMan(this.id);multievent.Auswertung(\"" +
610
610
  clNr +
611
- "\")' class='MulEvHaManInp' data-MulEvHaMan='$1' data-Nummer='0' data-BuchstSind='' data-Fehler='1' data-BegriffeSind='' style='text-align:center;font-size:1em;width:1.5em;font-family:sans-serif;padding:2px;border:1px solid #999;border-radius:3px;background-color:#eee;'/></td></tr></table>",
611
+ "\")' class='MulEvHaManInp' data-MulEvHaMan='$1' data-Nummer='0' data-BuchstSind='' data-Fehler='1' data-BegriffeSind='' style='text-align:center;font-size:1em;width:2.4em;font-family:sans-serif;padding:2px;border:1px solid #999;border-radius:3px;background-color:#eee;'/></td></tr></table>",
612
612
  );
613
613
  IN = IN.replace(
614
614
  /\{w\{(.*?)\}\}/gms,
@@ -926,26 +926,18 @@ var multievent = {
926
926
  }
927
927
  var IB = 0;
928
928
  for (var k = 0; k < iW.length; k++) {
929
- var s = Inp[j].style;
930
929
  if (IB < iW[k].length) {
931
930
  IB = iW[k].length;
932
931
  }
933
- if (IB <= 1) {
934
- s.width = "1.2em";
935
- }
936
- if (IB == 2) {
937
- s.width = "2.4em";
938
- }
939
- if (IB == 3) {
940
- s.width = "3.6em";
941
- }
942
- if (IB == 4) {
943
- s.width = "4.8em";
944
- }
945
- if (IB > 4) {
946
- s.width = IB * 1.2 + "em";
947
- }
948
932
  }
933
+ if (InpStil == "zahl") {
934
+ // Numbers can be entered in other notations (3,5 vs 3.50),
935
+ // so leave some room beyond the length of the solution.
936
+ IB++;
937
+ }
938
+ // At least three characters wide, otherwise short answers get
939
+ // fields that are too small to tap and type into (e.g. on iPads).
940
+ Inp[j].style.width = Math.max(IB, 3) * 1.2 + "em";
949
941
  }
950
942
  }
951
943
 
package/dist/index.js CHANGED
@@ -202071,7 +202071,7 @@ module.exports = /*#__PURE__*/JSON.parse('["blockflow","onlineide","sqlide","exc
202071
202071
  /***/ ((module) => {
202072
202072
 
202073
202073
  "use strict";
202074
- module.exports = /*#__PURE__*/JSON.parse('{"name":"hyperbook","version":"0.113.2","author":"Mike Barkmin","homepage":"https://github.com/openpatch/hyperbook#readme","license":"MIT","bin":{"hyperbook":"./dist/index.js"},"files":["dist"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/openpatch/hyperbook.git","directory":"packages/hyperbook"},"bugs":{"url":"https://github.com/openpatch/hyperbook/issues"},"engines":{"node":">=18"},"scripts":{"version":"pnpm build","lint":"tsc --noEmit","test":"vitest","dev":"ncc build ./index.ts -w -o dist/","build":"rimraf dist && ncc build ./index.ts -o ./dist/ --no-cache --no-source-map-register --external favicons --external sharp && node postbuild.mjs"},"dependencies":{"favicons":"^7.3.1"},"devDependencies":{"@hyperbook/fs":"workspace:*","@hyperbook/markdown":"workspace:*","@hyperbook/types":"workspace:*","@pnpm/exportable-manifest":"1000.4.2","@types/archiver":"8.0.0","@types/async-retry":"1.4.9","@types/cross-spawn":"6.0.6","@types/lunr":"^2.3.7","@types/node":"26.2.0","@types/prompts":"2.4.9","@types/ws":"^8.18.1","@vercel/ncc":"0.44.1","archiver":"8.0.0","async-retry":"1.3.3","chalk":"6.0.0","chokidar":"5.0.0","commander":"15.0.0","cpy":"13.2.2","create-hyperbook":"workspace:*","cross-spawn":"7.0.6","domutils":"^4.0.2","unzipper":"^0.12.5","got":"15.1.0","htmlparser2":"^12.0.0","lunr":"^2.3.9","lunr-languages":"^1.21.0","mime":"^4.1.0","prompts":"2.4.2","rimraf":"6.1.3","tar":"7.5.22","update-check":"1.5.4","vfile":"^6.0.3","vitest":"^4.1.10","ws":"^8.21.3"}}');
202074
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"hyperbook","version":"0.113.4","author":"Mike Barkmin","homepage":"https://github.com/openpatch/hyperbook#readme","license":"MIT","bin":{"hyperbook":"./dist/index.js"},"files":["dist"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/openpatch/hyperbook.git","directory":"packages/hyperbook"},"bugs":{"url":"https://github.com/openpatch/hyperbook/issues"},"engines":{"node":">=18"},"scripts":{"version":"pnpm build","lint":"tsc --noEmit","test":"vitest","dev":"ncc build ./index.ts -w -o dist/","build":"rimraf dist && ncc build ./index.ts -o ./dist/ --no-cache --no-source-map-register --external favicons --external sharp && node postbuild.mjs"},"dependencies":{"favicons":"^7.3.1"},"devDependencies":{"@hyperbook/fs":"workspace:*","@hyperbook/markdown":"workspace:*","@hyperbook/types":"workspace:*","@pnpm/exportable-manifest":"1000.4.2","@types/archiver":"8.0.0","@types/async-retry":"1.4.9","@types/cross-spawn":"6.0.6","@types/lunr":"^2.3.7","@types/node":"26.2.0","@types/prompts":"2.4.9","@types/ws":"^8.18.1","@vercel/ncc":"0.44.1","archiver":"8.0.0","async-retry":"1.3.3","chalk":"6.0.0","chokidar":"5.0.0","commander":"15.0.0","cpy":"13.2.2","create-hyperbook":"workspace:*","cross-spawn":"7.0.6","domutils":"^4.0.2","unzipper":"^0.12.5","got":"15.1.0","htmlparser2":"^12.0.0","lunr":"^2.3.9","lunr-languages":"^1.21.0","mime":"^4.1.0","prompts":"2.4.2","rimraf":"6.1.3","tar":"7.5.22","update-check":"1.5.4","vfile":"^6.0.3","vitest":"^4.1.10","ws":"^8.21.3"}}');
202075
202075
 
202076
202076
  /***/ })
202077
202077
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hyperbook",
3
- "version": "0.113.2",
3
+ "version": "0.113.4",
4
4
  "author": "Mike Barkmin",
5
5
  "homepage": "https://github.com/openpatch/hyperbook#readme",
6
6
  "license": "MIT",
@@ -59,9 +59,9 @@
59
59
  "vitest": "^4.1.10",
60
60
  "ws": "^8.21.3",
61
61
  "@hyperbook/fs": "0.30.0",
62
- "@hyperbook/markdown": "0.86.1",
63
- "create-hyperbook": "0.4.5",
64
- "@hyperbook/types": "0.28.0"
62
+ "@hyperbook/markdown": "0.86.3",
63
+ "@hyperbook/types": "0.28.0",
64
+ "create-hyperbook": "0.4.5"
65
65
  },
66
66
  "scripts": {
67
67
  "version": "pnpm build",