hyperbook 0.113.1 → 0.113.3

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 (55) hide show
  1. package/dist/asset-manifest.json +9 -9
  2. package/dist/assets/directive-bitflow/{EditorElement-zyz99U6n.js → EditorElement-BNwEKIvk.js} +258 -258
  3. package/dist/assets/directive-bitflow/{ReportElements-BnX14NtV.js → ReportElements-CAvHx5xm.js} +2 -2
  4. package/dist/assets/directive-bitflow/{bitLoaders-DIGwTcpd.js → bitLoaders-7qanePQL.js} +1138 -1073
  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-BseSaQlX.js → index-4JaKZ7WT.js} +2 -2
  9. package/dist/assets/directive-bitflow/{index-e_8twLaN.js → index-6CQr_atd.js} +120 -120
  10. package/dist/assets/directive-bitflow/{index-COndsSPW.js → index-B9iG-a48.js} +9 -9
  11. package/dist/assets/directive-bitflow/{index-C5czXkRd.js → index-BFYoOtcY.js} +36 -36
  12. package/dist/assets/directive-bitflow/{index-YPMWh-1B.js → index-BI6aFdIS.js} +21 -21
  13. package/dist/assets/directive-bitflow/{index-D7m-hJZ9.js → index-Bf078mfo.js} +69 -69
  14. package/dist/assets/directive-bitflow/{index-Bf_FQRbK.js → index-BinE5Wvd.js} +19 -19
  15. package/dist/assets/directive-bitflow/{index-CFcRAa3F.js → index-BoX5-jkC.js} +31 -31
  16. package/dist/assets/directive-bitflow/{index-NyNuXp4C.js → index-BqRsXShM.js} +34 -34
  17. package/dist/assets/directive-bitflow/{index-Fr7yl4Vn.js → index-BxihQ8Oo.js} +21 -21
  18. package/dist/assets/directive-bitflow/{index-B3jMTk1o.js → index-C5YguHZU.js} +101 -101
  19. package/dist/assets/directive-bitflow/{index-XxGfBwJe.js → index-C8zwSmE6.js} +27 -27
  20. package/dist/assets/directive-bitflow/{index-BLcJNyog.js → index-C9JSBTNc.js} +91 -91
  21. package/dist/assets/directive-bitflow/{index-CjscG0z6.js → index-CCMI6UK4.js} +75 -75
  22. package/dist/assets/directive-bitflow/{index-CK1UMcfT.js → index-CGDt8H6s.js} +24 -24
  23. package/dist/assets/directive-bitflow/{index-xapm2BQE.js → index-Ca1v0pjV.js} +102 -92
  24. package/dist/assets/directive-bitflow/{index-IQHOi2fr.js → index-CaYn3Gmh.js} +31 -31
  25. package/dist/assets/directive-bitflow/{index-BpG316Ls.js → index-CbQue0If.js} +67 -67
  26. package/dist/assets/directive-bitflow/{index-CzdZQibq.js → index-CjH3h0OO.js} +79 -79
  27. package/dist/assets/directive-bitflow/{index-B7Z6Q-PQ.js → index-CkO3QfOS.js} +8 -8
  28. package/dist/assets/directive-bitflow/{index-BIJ7VfD2.js → index-Cz4i5rfe.js} +39 -39
  29. package/dist/assets/directive-bitflow/{index-8jTO-NJA.js → index-D0NtgeiX.js} +85 -85
  30. package/dist/assets/directive-bitflow/{index-DtsDy2By.js → index-D1C_1SPY.js} +14 -14
  31. package/dist/assets/directive-bitflow/{index-BdBBCZSy.js → index-D45u7EVR.js} +227 -194
  32. package/dist/assets/directive-bitflow/{index-cnRM_JDB.js → index-D9Ox4YpM.js} +33 -33
  33. package/dist/assets/directive-bitflow/{index-Bqf-kixT.js → index-DJ1w2Xcm.js} +46 -46
  34. package/dist/assets/directive-bitflow/{index-BQ5h4nDN.js → index-DUqW2fmV.js} +94 -94
  35. package/dist/assets/directive-bitflow/{index-ChgzyMHe.js → index-Deedj9EF.js} +25 -25
  36. package/dist/assets/directive-bitflow/{index-CZyaFdD2.js → index-Dg6nnY_v.js} +68 -68
  37. package/dist/assets/directive-bitflow/{index-kRpwcprB.js → index-DgxEzomz.js} +2 -2
  38. package/dist/assets/directive-bitflow/{index-D5yZNeIg.js → index-Dl0-ZAT5.js} +52 -52
  39. package/dist/assets/directive-bitflow/{index-DnVYIuen.js → index-Do6dmZyj.js} +42 -42
  40. package/dist/assets/directive-bitflow/{index-DjWNEPDL.js → index-DqnGC-DU.js} +31 -31
  41. package/dist/assets/directive-bitflow/{index-ivI25bnR.js → index-DwXXeSwk.js} +73 -73
  42. package/dist/assets/directive-bitflow/{index-Bf_NXJjq.js → index-b6qwcTj9.js} +15 -15
  43. package/dist/assets/directive-bitflow/{index-Fq7njn6_.js → index-d105UFQI.js} +58 -58
  44. package/dist/assets/directive-bitflow/{index-CW9iev-_.js → index-jijMWQB6.js} +8 -8
  45. package/dist/assets/directive-bitflow/{index-C_ZTSeqv.js → index-kxO5_U9Y.js} +24 -24
  46. package/dist/assets/directive-bitflow/{index-DoKlIgCD.js → index-p5AOgOal.js} +35 -35
  47. package/dist/assets/directive-bitflow/{index-CvCZVgKv.js → index-q2APknM6.js} +46 -46
  48. package/dist/assets/directive-bitflow/{index-eN2S_MLj.js → index-zVkWgm5I.js} +70 -70
  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-mdyEMdsJ.js} +6 -6
  54. package/dist/index.js +1 -1
  55. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
- import { L as E, a4 as R, ac as me, ad as re, a9 as G, a2 as C, P as Y, j as s, a5 as X, a as W, b as A, aa as ve, s as xe } from "./dom-uYx_3K1r.js";
2
- import { S as ee, v as je, P as O, M as Z, A as y, e as K, y as ye, t as te, E as Te, s as Ce, L as Ne, R as ke } from "./bitLoaders-DIGwTcpd.js";
3
- const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs(e - t) <= oe * Math.max(1, Math.abs(e), Math.abs(t)), M = (e, t, a) => e.edges.find(
1
+ import { P as $, a4 as R, ac as me, ad as re, a9 as G, a2 as N, Y as K, j as s, a5 as X, a as W, b as A, aa as ve, s as xe } from "./dom-B6NPWBb1.js";
2
+ import { $ as ee, e as je, M as O, F as Y, g as y, P as Z, C as ye, r as te, B as Te, y as Ne, U as Ce, H as ke } from "./bitLoaders-7qanePQL.js";
3
+ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (e, t) => Math.abs(e - t) <= oe * Math.max(1, Math.abs(e), Math.abs(t)), z = (e, t, a) => e.edges.find(
4
4
  (r) => r.source === t && r.target === a || !e.directed && r.source === a && r.target === t
5
5
  ), q = (e, t) => {
6
6
  const a = [];
@@ -22,9 +22,9 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
22
22
  if (n === void 0) return a;
23
23
  r.add(n);
24
24
  for (const l of q(e, n)) {
25
- const d = M(e, n, l);
25
+ const d = z(e, n, l);
26
26
  if (!d) continue;
27
- const b = o + N(e, d);
27
+ const b = o + C(e, d);
28
28
  b < (a.get(l) ?? 1 / 0) && a.set(l, b);
29
29
  }
30
30
  }
@@ -51,38 +51,38 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
51
51
  }
52
52
  return a;
53
53
  }, ut = (e, t) => t.length < 2 || new Set(t).size !== t.length ? !1 : t.every(
54
- (a, r) => r === 0 || M(e, t[r - 1], a) !== void 0
54
+ (a, r) => r === 0 || z(e, t[r - 1], a) !== void 0
55
55
  ), Oe = (e, t) => {
56
56
  for (let a = 1; a < t.length; a++)
57
- if (!M(e, t[a - 1], t[a])) return a;
57
+ if (!z(e, t[a - 1], t[a])) return a;
58
58
  }, Le = (e, t) => {
59
59
  let a = 0;
60
60
  for (let r = 1; r < t.length; r++) {
61
- const n = M(e, t[r - 1], t[r]);
61
+ const n = z(e, t[r - 1], t[r]);
62
62
  if (!n) return;
63
- a += N(e, n);
63
+ a += C(e, n);
64
64
  }
65
65
  return a;
66
66
  }, Ie = (e, t) => {
67
67
  const a = [];
68
68
  for (let r = 1; r < t.length; r++) {
69
- const n = M(e, t[r - 1], t[r]);
69
+ const n = z(e, t[r - 1], t[r]);
70
70
  n && a.push(n.id);
71
71
  }
72
72
  return a;
73
- }, z = (e, t) => {
73
+ }, H = (e, t) => {
74
74
  let a = t;
75
75
  for (; e.get(a) !== a; ) a = e.get(a);
76
76
  return a;
77
77
  }, Pe = (e) => {
78
78
  const t = new Map(e.nodes.map((o) => [o.id, o.id])), a = [...e.edges].sort((o, l) => {
79
- const d = N(e, o) - N(e, l);
79
+ const d = C(e, o) - C(e, l);
80
80
  return d !== 0 ? d : o.id < l.id ? -1 : 1;
81
81
  });
82
82
  let r = 0, n = 0;
83
83
  for (const o of a) {
84
- const l = z(t, o.source), d = z(t, o.target);
85
- l !== d && (t.set(l, d), r += N(e, o), n += 1);
84
+ const l = H(t, o.source), d = H(t, o.target);
85
+ l !== d && (t.set(l, d), r += C(e, o), n += 1);
86
86
  }
87
87
  return n === e.nodes.length - 1 ? r : void 0;
88
88
  }, We = (e, t) => {
@@ -90,23 +90,23 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
90
90
  if (a.length !== e.nodes.length - 1) return "wrongSize";
91
91
  const r = new Map(e.nodes.map((n) => [n.id, n.id]));
92
92
  for (const n of a) {
93
- const o = z(r, n.source), l = z(r, n.target);
93
+ const o = H(r, n.source), l = H(r, n.target);
94
94
  if (o === l) return "cycle";
95
95
  r.set(o, l);
96
96
  }
97
- return new Set(e.nodes.map((n) => z(r, n.id))).size === 1 ? "tree" : "disconnected";
98
- }, Ae = (e, t) => e.edges.filter((a) => t.includes(a.id)).reduce((a, r) => a + N(e, r), 0), De = (e, t) => {
97
+ return new Set(e.nodes.map((n) => H(r, n.id))).size === 1 ? "tree" : "disconnected";
98
+ }, Ae = (e, t) => e.edges.filter((a) => t.includes(a.id)).reduce((a, r) => a + C(e, r), 0), De = (e, t) => {
99
99
  const a = new Set(t);
100
100
  return e.edges.reduce((r, n) => {
101
101
  const o = a.has(n.source), l = a.has(n.target);
102
- return e.directed ? r + (o && !l ? N(e, n) : 0) : r + (o !== l ? N(e, n) : 0);
102
+ return e.directed ? r + (o && !l ? C(e, n) : 0) : r + (o !== l ? C(e, n) : 0);
103
103
  }, 0);
104
- }, ze = (e, t, a) => {
104
+ }, He = (e, t, a) => {
105
105
  if (t === a) return;
106
106
  const r = /* @__PURE__ */ new Map(), n = (l) => (r.has(l) || r.set(l, /* @__PURE__ */ new Map()), r.get(l));
107
107
  e.nodes.forEach((l) => n(l.id));
108
108
  for (const l of e.edges) {
109
- const d = N(e, l), b = n(l.source);
109
+ const d = C(e, l), b = n(l.source);
110
110
  b.set(l.target, (b.get(l.target) ?? 0) + d);
111
111
  const f = n(l.target);
112
112
  e.directed ? f.set(l.source, f.get(l.source) ?? 0) : f.set(l.source, (f.get(l.source) ?? 0) + d);
@@ -132,40 +132,40 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
132
132
  o += g;
133
133
  }
134
134
  return o;
135
- }, ft = (e, t, a) => se(e, t).has(a), He = E({
135
+ }, ft = (e, t, a) => se(e, t).has(a), Me = $({
136
136
  /** Stable across edits, so an answer keeps pointing at the same place. */
137
- id: C().min(1),
138
- label: C().default(""),
137
+ id: N().min(1),
138
+ label: N().default(""),
139
139
  /**
140
140
  * Where it sits, as a fraction of the diagram in each direction. Never
141
141
  * pixels: the diagram is drawn at whatever size it is given.
142
142
  */
143
- x: Y().min(0).max(1).default(0.5),
144
- y: Y().min(0).max(1).default(0.5)
145
- }), Me = E({
146
- id: C().min(1),
147
- source: C().min(1),
148
- target: C().min(1),
143
+ x: K().min(0).max(1).default(0.5),
144
+ y: K().min(0).max(1).default(0.5)
145
+ }), ze = $({
146
+ id: N().min(1),
147
+ source: N().min(1),
148
+ target: N().min(1),
149
149
  /** Ignored entirely unless the graph is weighted, where it is the cost. */
150
- weight: Y().positive().default(1)
150
+ weight: K().positive().default(1)
151
151
  }), ie = [
152
152
  "path",
153
153
  "shortestPath",
154
154
  "traversal",
155
155
  "spanningTree",
156
156
  "cut"
157
- ], Re = X(ie), Ee = X(["bfs", "dfs"]), $e = X(["label", "authored"]), le = (e) => e === "path" || e === "shortestPath" || e === "cut", de = (e) => e !== "spanningTree", ce = (e) => e === "path" || e === "shortestPath" || e === "traversal", $ = (e) => e === "spanningTree" ? "edges" : "nodes", Be = E({
158
- instruction: C().default(""),
157
+ ], Re = X(ie), $e = X(["bfs", "dfs"]), Ee = X(["label", "authored"]), le = (e) => e === "path" || e === "shortestPath" || e === "cut", de = (e) => e !== "spanningTree", ce = (e) => e === "path" || e === "shortestPath" || e === "traversal", E = (e) => e === "spanningTree" ? "edges" : "nodes", Be = $({
158
+ instruction: N().default(""),
159
159
  directed: G().default(!1),
160
160
  /** Off, every edge costs one, and the weights are neither shown nor used. */
161
161
  weighted: G().default(!1),
162
- nodes: R(He).max(30).default([]),
163
- edges: R(Me).max(90).default([]),
162
+ nodes: R(Me).max(30).default([]),
163
+ edges: R(ze).max(90).default([]),
164
164
  goal: Re.default("shortestPath"),
165
- sourceId: C().default(""),
166
- targetId: C().default(""),
167
- traversal: Ee.default("bfs"),
168
- neighbourOrder: $e.default("label"),
165
+ sourceId: N().default(""),
166
+ targetId: N().default(""),
167
+ traversal: $e.default("bfs"),
168
+ neighbourOrder: Ee.default("label"),
169
169
  /**
170
170
  * Only a traversal can be partly right in a way worth a mark: the order is
171
171
  * right up to the point it goes wrong. A route that does not arrive and a
@@ -253,15 +253,15 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
253
253
  path: ["directed"],
254
254
  message: "A spanning tree needs an undirected graph."
255
255
  }));
256
- }), bt = E({
256
+ }), bt = $({
257
257
  /**
258
258
  * The places chosen, in order where the order matters: a route, a traversal,
259
259
  * or the near side of a cut.
260
260
  */
261
- nodeIds: R(C()).default([]),
261
+ nodeIds: R(N()).default([]),
262
262
  /** The connections chosen. A spanning tree is the only goal that uses these. */
263
- edgeIds: R(C()).default([])
264
- }), he = (e, t) => $(e) === "edges" ? t?.edgeIds ?? [] : t?.nodeIds ?? [], Ve = (e, t) => $(e) === "edges" ? { nodeIds: [], edgeIds: t } : { nodeIds: t, edgeIds: [] }, Fe = (e, t) => e.nodes.find((a) => a.id === t), pt = (e, t) => e.edges.find((a) => a.id === t), x = (e, t) => Fe(e, t)?.label || t, wt = [
263
+ edgeIds: R(N()).default([])
264
+ }), he = (e, t) => E(e) === "edges" ? t?.edgeIds ?? [] : t?.nodeIds ?? [], Ve = (e, t) => E(e) === "edges" ? { nodeIds: [], edgeIds: t } : { nodeIds: t, edgeIds: [] }, Fe = (e, t) => e.nodes.find((a) => a.id === t), pt = (e, t) => e.edges.find((a) => a.id === t), x = (e, t) => Fe(e, t)?.label || t, wt = [
265
265
  "correct",
266
266
  "empty",
267
267
  "notFromSource",
@@ -289,8 +289,8 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
289
289
  if (Oe(e, t) !== void 0) return v("broken");
290
290
  if (e.goal === "path") return v("correct");
291
291
  const a = Le(e, t), r = se(e, e.sourceId).get(e.targetId);
292
- return r === void 0 ? v("notToTarget") : Q(a, r) ? v("correct") : v("notShortest");
293
- }, Ze = (e, t) => {
292
+ return r === void 0 ? v("notToTarget") : U(a, r) ? v("correct") : v("notShortest");
293
+ }, Ye = (e, t) => {
294
294
  const a = Se(e, e.sourceId);
295
295
  let r = 0;
296
296
  for (; r < t.length && r < a.length && t[r] === a[r]; )
@@ -301,32 +301,32 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
301
301
  return v("correct", { correctPrefix: r, outOf: n });
302
302
  const o = r === t.length ? "missesPlaces" : "wrongOrder";
303
303
  return v(o, { correctPrefix: r, outOf: n });
304
- }, Ke = (e, t) => {
304
+ }, Ze = (e, t) => {
305
305
  if (t.length === 0) return v("empty");
306
306
  const a = We(e, t);
307
307
  if (a === "cycle") return v("treeCycle");
308
308
  if (a === "disconnected") return v("treeDisconnected");
309
309
  if (a === "wrongSize") return v("treeWrongSize");
310
310
  const r = Pe(e);
311
- return r === void 0 ? v("treeDisconnected") : Q(Ae(e, t), r) ? v("correct") : v("notCheapestTree");
312
- }, Ye = (e, t) => {
311
+ return r === void 0 ? v("treeDisconnected") : U(Ae(e, t), r) ? v("correct") : v("notCheapestTree");
312
+ }, Ke = (e, t) => {
313
313
  if (t.length === 0) return v("empty");
314
314
  const a = new Set(t);
315
315
  if (!a.has(e.sourceId) || a.has(e.targetId))
316
316
  return v("notSeparating");
317
- const r = ze(e, e.sourceId, e.targetId);
318
- return r === void 0 ? v("notSeparating") : Q(De(e, t), r) ? v("correct") : v("notCheapestCut");
317
+ const r = He(e, e.sourceId, e.targetId);
318
+ return r === void 0 ? v("notSeparating") : U(De(e, t), r) ? v("correct") : v("notCheapestCut");
319
319
  }, qe = (e, t) => {
320
320
  const a = he(e.goal, t).filter(
321
321
  (r) => e.goal === "spanningTree" ? e.edges.some((n) => n.id === r) : e.nodes.some((n) => n.id === r)
322
322
  );
323
323
  switch (e.goal) {
324
324
  case "traversal":
325
- return Ze(e, a);
325
+ return Ye(e, a);
326
326
  case "spanningTree":
327
- return Ke(e, a);
327
+ return Ze(e, a);
328
328
  case "cut":
329
- return Ye(e, a);
329
+ return Ke(e, a);
330
330
  default:
331
331
  return Ge(e, a);
332
332
  }
@@ -346,7 +346,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
346
346
  ...a.correctPrefix === void 0 ? {} : { correctPrefix: a.correctPrefix }
347
347
  }
348
348
  };
349
- }, H = {
349
+ }, M = {
350
350
  en: {
351
351
  name: "Graph path",
352
352
  description: "A graph, and a route, traversal order, spanning tree or cut to pick out of it.",
@@ -453,7 +453,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
453
453
  reasonNotSeparating: "Die nahe Seite muss {source} enthalten und {target} auf der anderen Seite lassen.",
454
454
  reasonNotCheapestCut: "Das trennt sie, aber es gibt einen günstigeren Schnitt."
455
455
  }
456
- }, Qe = '.bitflow-graph{display:flex;flex-direction:column;gap:var(--bitflow-space-small)}.bitflow-graph-diagram{width:100%;aspect-ratio:5 / 3;background:var(--bitflow-color-surface);border:1px solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard);touch-action:none}.bitflow-graph-edge line{stroke:var(--bitflow-color-neutral-400);stroke-width:calc(3 * var(--bitflow-graph-scale, 1))}.bitflow-graph-edge marker path,.bitflow-graph-diagram marker path{fill:var(--bitflow-color-neutral-400)}.bitflow-graph-edge-hit{stroke:transparent;stroke-width:calc(26 * var(--bitflow-graph-scale, 1));cursor:pointer}.bitflow-graph-edge-chosen line{stroke:var(--bitflow-color-primary);stroke-width:calc(7 * var(--bitflow-graph-scale, 1))}.bitflow-graph-weight{fill:var(--bitflow-color-text-muted);font-family:var(--bitflow-font-family);font-size:calc(26px * var(--bitflow-graph-scale, 1))}.bitflow-graph-node circle{fill:var(--bitflow-color-surface);stroke:var(--bitflow-color-neutral-700);stroke-width:calc(3 * var(--bitflow-graph-scale, 1))}.bitflow-graph-node text{fill:var(--bitflow-color-text);font-family:var(--bitflow-font-family);font-size:calc(30px * var(--bitflow-graph-scale, 1));font-weight:var(--bitflow-font-weight-medium);-webkit-user-select:none;user-select:none}.bitflow-graph-node{cursor:pointer}.bitflow-graph-node-movable{cursor:grab}.bitflow-graph-node-source circle{stroke:var(--bitflow-color-info);stroke-width:calc(6 * var(--bitflow-graph-scale, 1))}.bitflow-graph-node-target circle{stroke:var(--bitflow-color-manual);stroke-width:calc(6 * var(--bitflow-graph-scale, 1));stroke-dasharray:10 6}.bitflow-graph-node-chosen circle{fill:var(--bitflow-color-primary-light)}.bitflow-graph-node-right circle{fill:var(--bitflow-color-correct-surface);stroke:var(--bitflow-color-correct)}.bitflow-graph-step{fill:var(--bitflow-color-primary-dark);font-family:var(--bitflow-font-family);font-size:calc(26px * var(--bitflow-graph-scale, 1));font-weight:var(--bitflow-font-weight-bold)}.bitflow-graph-written summary{cursor:pointer;color:var(--bitflow-color-text-muted);font-size:var(--bitflow-font-size-small)}.bitflow-graph-written ul{margin:var(--bitflow-space-xxsmall) 0 0;padding-left:var(--bitflow-space-medium)}.bitflow-graph-chosen{display:flex;flex-wrap:wrap;gap:var(--bitflow-space-xxsmall);margin:0;padding:0;list-style:none;counter-reset:bitflow-graph-step}.bitflow-graph-chip{counter-increment:bitflow-graph-step;padding:var(--bitflow-space-xxsmall) var(--bitflow-space-xsmall);border-radius:var(--bitflow-radius-full);background:var(--bitflow-color-primary-light);color:var(--bitflow-color-primary-dark);font-size:var(--bitflow-font-size-small)}.bitflow-graph-chip:before{content:counter(bitflow-graph-step) ". ";font-weight:var(--bitflow-font-weight-bold)}', Ue = {
456
+ }, Ue = '.bitflow-graph{display:flex;flex-direction:column;gap:var(--bitflow-space-small)}.bitflow-graph-diagram{width:100%;aspect-ratio:5 / 3;background:var(--bitflow-color-surface);border:1px solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard);touch-action:none}.bitflow-graph-edge line{stroke:var(--bitflow-color-neutral-400);stroke-width:calc(3 * var(--bitflow-graph-scale, 1))}.bitflow-graph-edge marker path,.bitflow-graph-diagram marker path{fill:var(--bitflow-color-neutral-400)}.bitflow-graph-edge-hit{stroke:transparent;stroke-width:calc(26 * var(--bitflow-graph-scale, 1));cursor:pointer}.bitflow-graph-edge-chosen line{stroke:var(--bitflow-color-primary);stroke-width:calc(7 * var(--bitflow-graph-scale, 1))}.bitflow-graph-weight{fill:var(--bitflow-color-text-muted);font-family:var(--bitflow-font-family);font-size:calc(26px * var(--bitflow-graph-scale, 1))}.bitflow-graph-node circle{fill:var(--bitflow-color-surface);stroke:var(--bitflow-color-neutral-700);stroke-width:calc(3 * var(--bitflow-graph-scale, 1))}.bitflow-graph-node text{fill:var(--bitflow-color-text);font-family:var(--bitflow-font-family);font-size:calc(30px * var(--bitflow-graph-scale, 1));font-weight:var(--bitflow-font-weight-medium);-webkit-user-select:none;user-select:none}.bitflow-graph-node{cursor:pointer}.bitflow-graph-node-movable{cursor:grab}.bitflow-graph-node-source circle{stroke:var(--bitflow-color-info);stroke-width:calc(6 * var(--bitflow-graph-scale, 1))}.bitflow-graph-node-target circle{stroke:var(--bitflow-color-manual);stroke-width:calc(6 * var(--bitflow-graph-scale, 1));stroke-dasharray:10 6}.bitflow-graph-node-chosen circle{fill:var(--bitflow-color-primary-light)}.bitflow-graph-node-right circle{fill:var(--bitflow-color-correct-surface);stroke:var(--bitflow-color-correct)}.bitflow-graph-step{fill:var(--bitflow-color-primary-dark);font-family:var(--bitflow-font-family);font-size:calc(26px * var(--bitflow-graph-scale, 1));font-weight:var(--bitflow-font-weight-bold)}.bitflow-graph-written summary{cursor:pointer;color:var(--bitflow-color-text-muted);font-size:var(--bitflow-font-size-small)}.bitflow-graph-written ul{margin:var(--bitflow-space-xxsmall) 0 0;padding-left:var(--bitflow-space-medium)}.bitflow-graph-chosen{display:flex;flex-wrap:wrap;gap:var(--bitflow-space-xxsmall);margin:0;padding:0;list-style:none;counter-reset:bitflow-graph-step}.bitflow-graph-chip{counter-increment:bitflow-graph-step;padding:var(--bitflow-space-xxsmall) var(--bitflow-space-xsmall);border-radius:var(--bitflow-radius-full);background:var(--bitflow-color-primary-light);color:var(--bitflow-color-primary-dark);font-size:var(--bitflow-font-size-small)}.bitflow-graph-chip:before{content:counter(bitflow-graph-step) ". ";font-weight:var(--bitflow-font-weight-bold)}', Qe = {
457
457
  en: {
458
458
  instructionLabel: "Instruction",
459
459
  instructionHint: "Shown above the diagram. Markdown is allowed.",
@@ -582,9 +582,9 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
582
582
  onChange: o,
583
583
  onMoveNode: l
584
584
  }) => {
585
- const d = (c, u) => A(H, c, a, u), b = `bitflow-graph-arrow-${W.useId().replace(/[^\w-]/g, "")}`, f = W.useRef(null), g = tt(f), h = _e * g, w = W.useRef(
585
+ const d = (c, u) => A(M, c, a, u), b = `bitflow-graph-arrow-${W.useId().replace(/[^\w-]/g, "")}`, f = W.useRef(null), g = tt(f), h = _e * g, w = W.useRef(
586
586
  void 0
587
- ), [i, p] = W.useState(""), m = ce(e.goal), k = $(e.goal), D = !r && o !== void 0, B = new Set(t), be = new Set(
587
+ ), [i, p] = W.useState(""), m = ce(e.goal), k = E(e.goal), D = !r && o !== void 0, B = new Set(t), be = new Set(
588
588
  k === "edges" ? t : m ? Ie(e, t) : []
589
589
  ), V = (c, u) => p(d(c, u)), F = (c) => {
590
590
  if (!D) return;
@@ -597,7 +597,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
597
597
  place: pe(c),
598
598
  count: u.length
599
599
  });
600
- }, pe = (c) => k === "edges" ? ue(e, c, d) : x(e, c), U = (c) => {
600
+ }, pe = (c) => k === "edges" ? ue(e, c, d) : x(e, c), Q = (c) => {
601
601
  const u = f.current?.getBoundingClientRect();
602
602
  if (!(!u || u.width === 0 || u.height === 0))
603
603
  return {
@@ -605,10 +605,10 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
605
605
  y: (c.clientY - u.top) / u.height
606
606
  };
607
607
  }, _ = (c) => Math.min(1, Math.max(0, c)), we = (c) => {
608
- const u = w.current, j = U(c);
608
+ const u = w.current, j = Q(c);
609
609
  !u || !j || !l || l(u.id, _(j.x + u.dx), _(j.y + u.dy));
610
610
  };
611
- Ce(
611
+ Ne(
612
612
  (c) => we(c),
613
613
  () => {
614
614
  w.current = void 0;
@@ -700,7 +700,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
700
700
  ].filter(Boolean).join(" "),
701
701
  onPointerDown: (S) => {
702
702
  if (!l) return;
703
- const L = U(S);
703
+ const L = Q(S);
704
704
  w.current = {
705
705
  id: c.id,
706
706
  dx: L ? c.x - L.x : 0,
@@ -793,8 +793,8 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
793
793
  choose: o,
794
794
  announce: l
795
795
  }) => {
796
- const d = (h, w) => A(H, h, a, w), b = ce(e.goal), f = $(e.goal), g = new Set(t);
797
- return b ? /* @__PURE__ */ s.jsxs("div", { className: "bitflow-stack-small", children: [
796
+ const d = (h, w) => A(M, h, a, w), b = ce(e.goal), f = E(e.goal), g = new Set(t);
797
+ return b ? /* @__PURE__ */ s.jsxs("div", { className: "bitflow-stack-small bitflow-stack", children: [
798
798
  /* @__PURE__ */ s.jsxs("div", { className: "bitflow-field", children: [
799
799
  /* @__PURE__ */ s.jsx("span", { className: "bitflow-label", children: e.goal === "traversal" ? d("chosenOrder") : d("chosenRoute") }),
800
800
  t.length === 0 ? /* @__PURE__ */ s.jsx("p", { className: "bitflow-text-muted", children: d("nothingChosen") }) : /* @__PURE__ */ s.jsx("ol", { className: "bitflow-graph-chosen", children: t.map((h, w) => (
@@ -887,12 +887,12 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
887
887
  locale: n,
888
888
  onAnswerChange: o
889
889
  }) => {
890
- const l = (f, g) => A(H, f, n, g), d = {
890
+ const l = (f, g) => A(M, f, n, g), d = {
891
891
  source: x(e, e.sourceId),
892
892
  target: x(e, e.targetId)
893
893
  }, b = a?.detail?.reason;
894
894
  return /* @__PURE__ */ s.jsxs("div", { className: "bitflow-stack", children: [
895
- /* @__PURE__ */ s.jsx(Ne, { markdown: e.instruction }),
895
+ /* @__PURE__ */ s.jsx(Ce, { markdown: e.instruction }),
896
896
  /* @__PURE__ */ s.jsx("p", { className: "bitflow-text-muted", children: r ? l("howToReadonly") : l(ot(e), d) }),
897
897
  e.goal === "traversal" && /* @__PURE__ */ s.jsx("p", { className: "bitflow-text-muted", children: l(e.neighbourOrder === "label" ? "tieLabel" : "tieAuthored") }),
898
898
  /* @__PURE__ */ s.jsx(
@@ -955,7 +955,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
955
955
  onChange: a,
956
956
  errors: r
957
957
  }) => {
958
- const n = (i, p) => A(Ue, i, t, p), o = (i) => a({ ...e, ...i }), l = ee(e.nodes.map((i) => i.id)), d = ee(e.edges.map((i) => i.id)), b = (i, p) => o({
958
+ const n = (i, p) => A(Qe, i, t, p), o = (i) => a({ ...e, ...i }), l = ee(e.nodes.map((i) => i.id)), d = ee(e.edges.map((i) => i.id)), b = (i, p) => o({
959
959
  nodes: e.nodes.map(
960
960
  (m) => m.id === i ? { ...m, ...p } : m
961
961
  )
@@ -1013,7 +1013,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
1013
1013
  }
1014
1014
  ),
1015
1015
  /* @__PURE__ */ s.jsx(
1016
- Z,
1016
+ Y,
1017
1017
  {
1018
1018
  label: n("directedLabel"),
1019
1019
  hint: n("directedHint"),
@@ -1023,7 +1023,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
1023
1023
  ),
1024
1024
  y(r, "directed") && /* @__PURE__ */ s.jsx("span", { className: "bitflow-field-error", role: "alert", children: y(r, "directed") }),
1025
1025
  /* @__PURE__ */ s.jsx(
1026
- Z,
1026
+ Y,
1027
1027
  {
1028
1028
  label: n("weightedLabel"),
1029
1029
  hint: n("weightedHint"),
@@ -1050,7 +1050,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
1050
1050
  y(r, "nodes") && /* @__PURE__ */ s.jsx("span", { className: "bitflow-field-error", role: "alert", children: y(r, "nodes") }),
1051
1051
  e.nodes.length === 0 && /* @__PURE__ */ s.jsx("p", { className: "bitflow-text-muted", children: n("noPlaces") }),
1052
1052
  e.nodes.map((i, p) => /* @__PURE__ */ s.jsxs(
1053
- K,
1053
+ Z,
1054
1054
  {
1055
1055
  ...l.props(i.id),
1056
1056
  summary: i.label || n("unnamedPlace"),
@@ -1120,7 +1120,7 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
1120
1120
  y(r, "edges") && /* @__PURE__ */ s.jsx("span", { className: "bitflow-field-error", role: "alert", children: y(r, "edges") }),
1121
1121
  e.edges.length === 0 && /* @__PURE__ */ s.jsx("p", { className: "bitflow-text-muted", children: n("noConnections") }),
1122
1122
  e.edges.map((i, p) => /* @__PURE__ */ s.jsxs(
1123
- K,
1123
+ Z,
1124
1124
  {
1125
1125
  ...d.props(i.id),
1126
1126
  summary: `${x(e, i.source)} → ${x(e, i.target)}`,
@@ -1246,9 +1246,9 @@ const N = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, Q = (e, t) => Math.abs
1246
1246
  }
1247
1247
  )
1248
1248
  ] }),
1249
- /* @__PURE__ */ s.jsxs(K, { summary: n("advanced"), children: [
1249
+ /* @__PURE__ */ s.jsxs(Z, { summary: n("advanced"), children: [
1250
1250
  e.goal === "traversal" && /* @__PURE__ */ s.jsx(
1251
- Z,
1251
+ Y,
1252
1252
  {
1253
1253
  label: n("partialCreditLabel"),
1254
1254
  hint: n("partialCreditHint"),
@@ -1275,8 +1275,8 @@ ve({
1275
1275
  Task: st,
1276
1276
  Form: ct,
1277
1277
  info: (e) => ({
1278
- name: A(H, "name", e),
1279
- description: A(H, "description", e)
1278
+ name: A(M, "name", e),
1279
+ description: A(M, "description", e)
1280
1280
  }),
1281
1281
  defaultData: () => ({
1282
1282
  instruction: "",
@@ -1294,49 +1294,49 @@ ve({
1294
1294
  })
1295
1295
  });
1296
1296
  ke(fe);
1297
- xe("bitflow-styles-task-graph-path", Qe);
1297
+ xe("bitflow-styles-task-graph-path", Ue);
1298
1298
  export {
1299
1299
  bt as AnswerSchema,
1300
1300
  Be as DataSchema,
1301
1301
  oe as EPSILON,
1302
- Me as EdgeSchema,
1302
+ ze as EdgeSchema,
1303
1303
  ct as Form,
1304
1304
  ie as GOALS,
1305
1305
  Re as GoalSchema,
1306
1306
  ge as GraphView,
1307
- $e as NeighbourOrderSchema,
1308
- He as NodeSchema,
1307
+ Ee as NeighbourOrderSchema,
1308
+ Me as NodeSchema,
1309
1309
  wt as REASONS,
1310
1310
  fe as TYPE,
1311
1311
  st as Task,
1312
- Ee as TraversalSchema,
1312
+ $e as TraversalSchema,
1313
1313
  P as VIEW_HEIGHT,
1314
1314
  I as VIEW_WIDTH,
1315
1315
  he as answerOf,
1316
1316
  Oe as breakIn,
1317
- N as costOf,
1317
+ C as costOf,
1318
1318
  De as cutCost,
1319
1319
  se as distancesFrom,
1320
- M as edgeBetween,
1320
+ z as edgeBetween,
1321
1321
  pt as edgeById,
1322
1322
  ue as edgeName,
1323
1323
  Xe as evaluate,
1324
- Ue as formMessages,
1324
+ Qe as formMessages,
1325
1325
  ut as isRoute,
1326
1326
  ce as isSequence,
1327
1327
  qe as judge,
1328
- H as messages,
1329
- ze as minimumCutCost,
1328
+ M as messages,
1329
+ He as minimumCutCost,
1330
1330
  x as nameOf,
1331
1331
  de as needsSource,
1332
1332
  le as needsTarget,
1333
1333
  q as neighboursOf,
1334
1334
  Fe as nodeById,
1335
- $ as picks,
1335
+ E as picks,
1336
1336
  ft as reaches,
1337
1337
  Le as routeCost,
1338
1338
  Ie as routeEdges,
1339
- Q as sameCost,
1339
+ U as sameCost,
1340
1340
  Pe as spanningTreeCost,
1341
1341
  Se as traversalOrder,
1342
1342
  Ae as treeCost,
@@ -1,5 +1,5 @@
1
- import { L as w, a2 as l, a9 as k, j as i, a as c, b as u, s as y, aa as L } from "./dom-uYx_3K1r.js";
2
- import { y as h, v as j, M as x, t as q, L as S, R as z } from "./bitLoaders-DIGwTcpd.js";
1
+ import { P as w, a2 as l, a9 as k, j as i, a as c, b as u, s as y, aa as j } from "./dom-B6NPWBb1.js";
2
+ import { C as h, e as L, F as x, r as q, U as S, H as z } from "./bitLoaders-7qanePQL.js";
3
3
  const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small);font-size:var(--bitflow-font-size-small);color:var(--bitflow-color-text-muted)}.bitflow-handoff-sent{color:var(--bitflow-color-correct)}.bitflow-handoff-failed,.bitflow-handoff-misconfigured{color:var(--bitflow-color-wrong)}.bitflow-handoff-link{color:var(--bitflow-color-primary-dark);text-underline-offset:.2em}", g = {
4
4
  en: {
5
5
  name: "Finish and hand back",
@@ -89,7 +89,7 @@ const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small)
89
89
  misconfigured: "Bu değerlendirme bir yere gönderecek şekilde ayarlanmamış. Hazırlayan kişiye söyle — çalışman sekmeyi kapatana kadar burada duruyor.",
90
90
  unframed: "Bu sayfa gönderilebilecek bir sayfanın içinde değil, bu yüzden çalışman hiçbir yere gitmedi. Hazırlayan kişiye söyle — çalışman sekmeyi kapatana kadar burada duruyor."
91
91
  }
92
- }, M = w({
92
+ }, U = w({
93
93
  title: l().default(""),
94
94
  markdown: l().default(""),
95
95
  /**
@@ -134,7 +134,7 @@ const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small)
134
134
  } catch {
135
135
  return !1;
136
136
  }
137
- }, U = {
137
+ }, H = {
138
138
  en: {
139
139
  titleLabel: "Title",
140
140
  markdownLabel: "Closing message",
@@ -165,7 +165,7 @@ const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small)
165
165
  continueLabelLabel: "Beschriftung des Links",
166
166
  continueLabelHint: "Leer lassen für „Weiter“."
167
167
  }
168
- }, H = () => typeof window < "u" && window.parent !== window.self, C = ({
168
+ }, M = () => typeof window < "u" && window.parent !== window.self, C = ({
169
169
  data: e,
170
170
  locale: r,
171
171
  readonly: t,
@@ -177,7 +177,7 @@ const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small)
177
177
  n("misconfigured");
178
178
  return;
179
179
  }
180
- if (!H()) {
180
+ if (!M()) {
181
181
  n("unframed");
182
182
  return;
183
183
  }
@@ -216,12 +216,12 @@ const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small)
216
216
  ] }),
217
217
  f(e.continueUrl) && /* @__PURE__ */ i.jsx("p", { children: /* @__PURE__ */ i.jsx("a", { className: "bitflow-handoff-link", href: e.continueUrl.trim(), children: e.continueLabel || s("continueFallback") }) })
218
218
  ] });
219
- }, E = ({
219
+ }, F = ({
220
220
  data: e,
221
221
  locale: r,
222
222
  onChange: t
223
223
  }) => {
224
- const a = (n) => u(U, n, r), s = e.postMessage && e.messageOrigin.trim() !== "" && !m(e.messageOrigin) ? a("originInvalid") : void 0, o = e.continueUrl.trim() !== "" && !f(e.continueUrl) ? a("continueUrlInvalid") : void 0;
224
+ const a = (n) => u(H, n, r), s = e.postMessage && e.messageOrigin.trim() !== "" && !m(e.messageOrigin) ? a("originInvalid") : void 0, o = e.continueUrl.trim() !== "" && !f(e.continueUrl) ? a("continueUrlInvalid") : void 0;
225
225
  return /* @__PURE__ */ i.jsxs("div", { className: "bitflow-stack", children: [
226
226
  /* @__PURE__ */ i.jsx(
227
227
  h,
@@ -232,7 +232,7 @@ const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small)
232
232
  }
233
233
  ),
234
234
  /* @__PURE__ */ i.jsx(
235
- j,
235
+ L,
236
236
  {
237
237
  label: a("markdownLabel"),
238
238
  hint: a("markdownHint"),
@@ -291,12 +291,12 @@ const T = ".bitflow-handoff-state{margin:0;min-height:var(--bitflow-space-small)
291
291
  };
292
292
  y("bitflow-styles-end-handoff", T);
293
293
  const b = "end-handoff";
294
- L({
294
+ j({
295
295
  type: b,
296
296
  kind: "end",
297
- schema: M,
297
+ schema: U,
298
298
  Task: C,
299
- Form: E,
299
+ Form: F,
300
300
  info: (e) => ({
301
301
  name: u(g, "name", e),
302
302
  description: u(g, "description", e)
@@ -314,8 +314,8 @@ L({
314
314
  });
315
315
  z(b);
316
316
  export {
317
- M as DataSchema,
318
- E as Form,
317
+ U as DataSchema,
318
+ F as Form,
319
319
  A as MESSAGE_TYPE,
320
320
  b as TYPE,
321
321
  C as Task,