hyperbook 0.113.2 → 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.
- package/dist/asset-manifest.json +9 -9
- package/dist/assets/directive-bitflow/{EditorElement-CE3Yr86b.js → EditorElement-BNwEKIvk.js} +143 -143
- package/dist/assets/directive-bitflow/{ReportElements-eYGRtw6N.js → ReportElements-CAvHx5xm.js} +2 -2
- package/dist/assets/directive-bitflow/{bitLoaders-CxvZkGrY.js → bitLoaders-7qanePQL.js} +41 -41
- package/dist/assets/directive-bitflow/{dom-uYx_3K1r.js → dom-B6NPWBb1.js} +1558 -1551
- package/dist/assets/directive-bitflow/editor.js +3 -3
- package/dist/assets/directive-bitflow/flow.js +4 -4
- package/dist/assets/directive-bitflow/{index-oNmOArKu.js → index-4JaKZ7WT.js} +2 -2
- package/dist/assets/directive-bitflow/{index-EKIgFddO.js → index-6CQr_atd.js} +19 -19
- package/dist/assets/directive-bitflow/{index-BadyFTU5.js → index-B9iG-a48.js} +2 -2
- package/dist/assets/directive-bitflow/{index-D4PdXMcj.js → index-BFYoOtcY.js} +5 -5
- package/dist/assets/directive-bitflow/{index-d5ebPDeY.js → index-BI6aFdIS.js} +10 -10
- package/dist/assets/directive-bitflow/{index-DruC5d43.js → index-Bf078mfo.js} +2 -2
- package/dist/assets/directive-bitflow/{index-CWe2GjBK.js → index-BinE5Wvd.js} +7 -7
- package/dist/assets/directive-bitflow/{index-BG0PL-Z6.js → index-BoX5-jkC.js} +7 -7
- package/dist/assets/directive-bitflow/{index-ledofrbo.js → index-BqRsXShM.js} +4 -4
- package/dist/assets/directive-bitflow/{index-CjKhq7gY.js → index-BxihQ8Oo.js} +13 -13
- package/dist/assets/directive-bitflow/{index-BNdpL6Ss.js → index-C5YguHZU.js} +28 -28
- package/dist/assets/directive-bitflow/{index-xTX3CXJW.js → index-C8zwSmE6.js} +7 -7
- package/dist/assets/directive-bitflow/{index-D9LOuqr2.js → index-C9JSBTNc.js} +21 -21
- package/dist/assets/directive-bitflow/{index-BydYlLy4.js → index-CCMI6UK4.js} +8 -8
- package/dist/assets/directive-bitflow/{index-WbE9UOFa.js → index-CGDt8H6s.js} +5 -5
- package/dist/assets/directive-bitflow/{index-D_QhyFcx.js → index-Ca1v0pjV.js} +5 -5
- package/dist/assets/directive-bitflow/{index-88c3K20U.js → index-CaYn3Gmh.js} +12 -12
- package/dist/assets/directive-bitflow/{index-C7RJxxAx.js → index-CbQue0If.js} +30 -30
- package/dist/assets/directive-bitflow/{index-CfKpkSVC.js → index-CjH3h0OO.js} +28 -28
- package/dist/assets/directive-bitflow/{index-TUXuIR22.js → index-CkO3QfOS.js} +4 -4
- package/dist/assets/directive-bitflow/{index-DIb3CXwC.js → index-Cz4i5rfe.js} +6 -6
- package/dist/assets/directive-bitflow/{index-HXNGIC7K.js → index-D0NtgeiX.js} +17 -17
- package/dist/assets/directive-bitflow/{index-CLHtOGrW.js → index-D1C_1SPY.js} +4 -4
- package/dist/assets/directive-bitflow/{index-Dn5hHVuT.js → index-D45u7EVR.js} +13 -13
- package/dist/assets/directive-bitflow/{index-IsMJtrUT.js → index-D9Ox4YpM.js} +10 -10
- package/dist/assets/directive-bitflow/{index-B61LKxr1.js → index-DJ1w2Xcm.js} +15 -15
- package/dist/assets/directive-bitflow/{index-BwBVUdJ9.js → index-DUqW2fmV.js} +2 -2
- package/dist/assets/directive-bitflow/{index-DUOrQfVe.js → index-Deedj9EF.js} +6 -6
- package/dist/assets/directive-bitflow/{index-DQP0cUsP.js → index-Dg6nnY_v.js} +14 -14
- package/dist/assets/directive-bitflow/{index-DW3cUBvZ.js → index-DgxEzomz.js} +2 -2
- package/dist/assets/directive-bitflow/{index-D0U3nepG.js → index-Dl0-ZAT5.js} +20 -20
- package/dist/assets/directive-bitflow/{index-ISbOe239.js → index-Do6dmZyj.js} +2 -2
- package/dist/assets/directive-bitflow/{index-Bw0pL0hW.js → index-DqnGC-DU.js} +6 -6
- package/dist/assets/directive-bitflow/{index-rp4UTV85.js → index-DwXXeSwk.js} +19 -19
- package/dist/assets/directive-bitflow/{index-BZhNY0lo.js → index-b6qwcTj9.js} +9 -9
- package/dist/assets/directive-bitflow/{index-BO-d4HVC.js → index-d105UFQI.js} +21 -21
- package/dist/assets/directive-bitflow/{index-BuQ-K_tR.js → index-jijMWQB6.js} +2 -2
- package/dist/assets/directive-bitflow/{index-DYWo0PUv.js → index-kxO5_U9Y.js} +2 -2
- package/dist/assets/directive-bitflow/{index-Cm4w1Zyc.js → index-p5AOgOal.js} +21 -21
- package/dist/assets/directive-bitflow/{index-BlT1EcFH.js → index-q2APknM6.js} +15 -15
- package/dist/assets/directive-bitflow/{index-CERSJ9uS.js → index-zVkWgm5I.js} +11 -11
- package/dist/assets/directive-bitflow/index.js +6 -6
- package/dist/assets/directive-bitflow/report.js +1 -1
- package/dist/assets/directive-bitflow/{shareableReport-vjEU4OvA.js → shareableReport-mdyEMdsJ.js} +6 -6
- package/dist/index.js +1 -1
- package/package.json +4 -4
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { e as ye, M as Q, r as ke, i as xe, g as O, C as Z, P as Ne, F as je, B as Ke, U as Se, H as
|
|
3
|
-
const
|
|
1
|
+
import { P as R, a4 as E, a9 as re, ac as ge, ad as oe, a2 as x, a as N, j as c, a5 as D, b as F, aa as we, s as ve } from "./dom-B6NPWBb1.js";
|
|
2
|
+
import { e as ye, M as Q, r as ke, i as xe, g as O, C as Z, P as Ne, F as je, B as Ke, U as Se, H as Te } from "./bitLoaders-7qanePQL.js";
|
|
3
|
+
const Le = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Le.test(e.trim()), $ = (e) => {
|
|
4
4
|
const t = e.mode === "search" ? [e.searchKey] : e.mode === "insert" ? e.insertKeys : [], o = [...e.tree.nodes.map((n) => n.label), ...t].filter(
|
|
5
5
|
(n) => n.trim() !== ""
|
|
6
6
|
);
|
|
7
7
|
return o.length > 0 && o.every(se);
|
|
8
|
-
},
|
|
8
|
+
}, T = (e, t, o) => o ? Number(e) - Number(t) : e.localeCompare(t, void 0, { numeric: !0 }), Ce = (e, t) => {
|
|
9
9
|
for (let o = 0; o < e.length; o++)
|
|
10
10
|
for (let n = o + 1; n < e.length; n++)
|
|
11
|
-
if (
|
|
12
|
-
}, X = (e) => e.split(/[,\s]+/).map((t) => t.trim()).filter((t) => t !== ""),
|
|
11
|
+
if (T(e[o], e[n], t) === 0) return e[n];
|
|
12
|
+
}, X = (e) => e.split(/[,\s]+/).map((t) => t.trim()).filter((t) => t !== ""), Pe = (e) => {
|
|
13
13
|
const t = /* @__PURE__ */ new Set();
|
|
14
14
|
for (const o of e)
|
|
15
15
|
for (const n of [o.left, o.right])
|
|
@@ -17,7 +17,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
17
17
|
if (t.has(n)) return n;
|
|
18
18
|
t.add(n);
|
|
19
19
|
}
|
|
20
|
-
},
|
|
20
|
+
}, Fe = (e, t) => {
|
|
21
21
|
if (e.length === 0) return t === void 0;
|
|
22
22
|
if (t === void 0) return !1;
|
|
23
23
|
const o = new Map(e.map((s) => [s.id, s])), n = /* @__PURE__ */ new Set(), r = [t];
|
|
@@ -33,7 +33,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
33
33
|
const n = new Map(e.map((s) => [s.id, s])), r = (s, a, d) => {
|
|
34
34
|
if (s === void 0) return !0;
|
|
35
35
|
const i = n.get(s);
|
|
36
|
-
return !i || a !== void 0 &&
|
|
36
|
+
return !i || a !== void 0 && T(i.label, a, o) <= 0 || d !== void 0 && T(i.label, d, o) >= 0 ? !1 : r(i.left, a, i.label) && r(i.right, i.label, d);
|
|
37
37
|
};
|
|
38
38
|
return r(t, void 0, void 0);
|
|
39
39
|
}, Me = (e, t, o) => {
|
|
@@ -61,7 +61,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
61
61
|
s.push(a);
|
|
62
62
|
const d = r.get(a);
|
|
63
63
|
if (!d) break;
|
|
64
|
-
const i =
|
|
64
|
+
const i = T(o, d.label, n);
|
|
65
65
|
if (i === 0) return { path: s, found: !0 };
|
|
66
66
|
a = i < 0 ? d.left : d.right;
|
|
67
67
|
}
|
|
@@ -83,7 +83,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
83
83
|
const n = new Map(e.nodes.map((s) => [s.id, s]));
|
|
84
84
|
let r = e.root;
|
|
85
85
|
for (; ; ) {
|
|
86
|
-
const s = n.get(r), a =
|
|
86
|
+
const s = n.get(r), a = T(t, s.label, o) < 0 ? "left" : "right", d = a === "left" ? s.left : s.right;
|
|
87
87
|
if (d === void 0) return { key: t, parent: r, side: a };
|
|
88
88
|
r = d;
|
|
89
89
|
}
|
|
@@ -97,7 +97,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
97
97
|
}, ze = (e, t) => {
|
|
98
98
|
const o = [];
|
|
99
99
|
for (const r of e)
|
|
100
|
-
r.trim() !== "" && (o.some((s) =>
|
|
100
|
+
r.trim() !== "" && (o.some((s) => T(s, r, t) === 0) || o.push(r));
|
|
101
101
|
const n = { nodes: [], root: void 0 };
|
|
102
102
|
return q(n, ne(n, o, t));
|
|
103
103
|
}, Ee = (e) => {
|
|
@@ -154,7 +154,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
154
154
|
return { error: "parseTrailing", vars: { token: i.kind === "key" ? i.value : i.kind } };
|
|
155
155
|
}
|
|
156
156
|
return { tree: { nodes: r, root: d } };
|
|
157
|
-
},
|
|
157
|
+
}, P = (e) => {
|
|
158
158
|
const t = new Map(e.nodes.map((n) => [n.id, n])), o = (n) => {
|
|
159
159
|
if (n === void 0) return "";
|
|
160
160
|
const r = t.get(n), s = r.left !== void 0, a = r.right !== void 0;
|
|
@@ -384,7 +384,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
384
384
|
}));
|
|
385
385
|
}
|
|
386
386
|
});
|
|
387
|
-
const u = !d && !i ?
|
|
387
|
+
const u = !d && !i ? Pe(t.nodes) : void 0;
|
|
388
388
|
u && e.issues.push({
|
|
389
389
|
code: "custom",
|
|
390
390
|
input: t.nodes,
|
|
@@ -416,7 +416,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
416
416
|
message: "The root has to be the one place with no parent."
|
|
417
417
|
}));
|
|
418
418
|
}
|
|
419
|
-
if (b && !
|
|
419
|
+
if (b && !Fe(t.nodes, t.root) && (e.issues.push({
|
|
420
420
|
code: "custom",
|
|
421
421
|
input: t.nodes,
|
|
422
422
|
path: ["tree", "nodes"],
|
|
@@ -462,7 +462,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
462
462
|
});
|
|
463
463
|
else {
|
|
464
464
|
const m = r.find(
|
|
465
|
-
(w) => t.nodes.some((v) =>
|
|
465
|
+
(w) => t.nodes.some((v) => T(v.label, w, p) === 0)
|
|
466
466
|
);
|
|
467
467
|
m !== void 0 && e.issues.push({
|
|
468
468
|
code: "custom",
|
|
@@ -571,10 +571,10 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
571
571
|
onChange: a,
|
|
572
572
|
diagramOnly: d
|
|
573
573
|
}) => {
|
|
574
|
-
const i = (l, g) =>
|
|
574
|
+
const i = (l, g) => F(A, l, o, g), u = N.useRef(null), b = rt(u), [p, f] = N.useState(""), m = !n && a !== void 0, w = e.mode === "insert", v = t?.sequence ?? [], h = t?.placements ?? [], k = r !== void 0 || s !== void 0, M = w ? q(e.tree, h) : e.tree, j = $e(M.nodes, M.root, w), W = Xe * (j.depth + 1), H = (l) => ({
|
|
575
575
|
x: l.x * _,
|
|
576
576
|
y: l.y * W
|
|
577
|
-
}), I = new Map(j.nodes.map((l) => [l.id, H(l)])), U = j.nodes.length + j.slots.length, K = Math.min(te * b, 0.42 * _ / Math.max(U, 1)), B = (l) => M.nodes.find((g) => g.id === l)?.label || l, S = w ? e.insertKeys[h.length] : void 0,
|
|
577
|
+
}), I = new Map(j.nodes.map((l) => [l.id, H(l)])), U = j.nodes.length + j.slots.length, K = Math.min(te * b, 0.42 * _ / Math.max(U, 1)), B = (l) => M.nodes.find((g) => g.id === l)?.label || l, S = w ? e.insertKeys[h.length] : void 0, L = (l) => a?.({
|
|
578
578
|
sequence: v,
|
|
579
579
|
placements: h,
|
|
580
580
|
...t?.notFound !== void 0 ? { notFound: t.notFound } : {},
|
|
@@ -585,16 +585,16 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
585
585
|
f(i("alreadyChosen", { key: B(l) }));
|
|
586
586
|
return;
|
|
587
587
|
}
|
|
588
|
-
|
|
588
|
+
L({ sequence: [...v, l] }), f(i("added", { key: B(l), step: v.length + 1 }));
|
|
589
589
|
}
|
|
590
590
|
}, G = (l) => l.side === "root" ? i("slotRoot") : i(l.side === "left" ? "slotLeft" : "slotRight", {
|
|
591
591
|
key: B(l.parentId)
|
|
592
592
|
}), Y = (l) => {
|
|
593
|
-
!m || S === void 0 || (
|
|
593
|
+
!m || S === void 0 || (L({
|
|
594
594
|
placements: [...h, { key: S, parent: l.parentId, side: l.side }]
|
|
595
595
|
}), f(i("placed", { key: S, where: G(l) })));
|
|
596
596
|
}, ue = () => {
|
|
597
|
-
m && (w ?
|
|
597
|
+
m && (w ? L({ placements: h.slice(0, -1) }) : t?.notFound ? L({ notFound: !1 }) : L({ sequence: v.slice(0, -1) }), f(i("undone")));
|
|
598
598
|
}, fe = () => {
|
|
599
599
|
m && (a?.({ sequence: [], placements: [] }), f(i("cleared")));
|
|
600
600
|
}, be = (l) => v.indexOf(l) + 1, J = (l) => r === void 0 ? void 0 : l <= r ? "correct" : "wrong", pe = (l) => {
|
|
@@ -749,7 +749,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
749
749
|
className: "bitflow-button bitflow-button-secondary",
|
|
750
750
|
"aria-pressed": t?.notFound === !0,
|
|
751
751
|
onClick: () => {
|
|
752
|
-
|
|
752
|
+
L({ notFound: !t?.notFound }), f(i(t?.notFound ? "notFoundOff" : "notFoundOn"));
|
|
753
753
|
},
|
|
754
754
|
children: i("notFound")
|
|
755
755
|
}
|
|
@@ -807,7 +807,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
807
807
|
locale: r,
|
|
808
808
|
onAnswerChange: s
|
|
809
809
|
}) => {
|
|
810
|
-
const a = (u, b) =>
|
|
810
|
+
const a = (u, b) => F(A, u, r, b), d = o?.detail, i = n ? a("howToReadonly") : e.mode === "search" ? a("howToSearch", { key: e.searchKey }) : e.mode === "insert" ? a("howToInsert") : a("howToTraversal", { order: a(ce[e.traversal]) });
|
|
811
811
|
return /* @__PURE__ */ c.jsxs("div", { className: "bitflow-stack", children: [
|
|
812
812
|
/* @__PURE__ */ c.jsx(Se, { markdown: e.instruction }),
|
|
813
813
|
/* @__PURE__ */ c.jsx("p", { className: "bitflow-hint", children: i }),
|
|
@@ -831,10 +831,10 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
831
831
|
onChange: o,
|
|
832
832
|
errors: n
|
|
833
833
|
}) => {
|
|
834
|
-
const r = (h, k) =>
|
|
834
|
+
const r = (h, k) => F(Ze, h, t, k), s = (h) => o({ ...e, ...h }), [a, d] = N.useState(() => P(e.tree)), [i, u] = N.useState(void 0), [b, p] = N.useState(""), [f, m] = N.useState(() => e.insertKeys.join(", "));
|
|
835
835
|
N.useEffect(() => {
|
|
836
836
|
const h = ee(a);
|
|
837
|
-
"tree" in h &&
|
|
837
|
+
"tree" in h && P(h.tree) === P(e.tree) || (d(P(e.tree)), u(void 0));
|
|
838
838
|
}, [e.tree]);
|
|
839
839
|
const w = (h) => {
|
|
840
840
|
d(h);
|
|
@@ -846,7 +846,7 @@ const Te = /^[+-]?(?:\d+\.?\d*|\.\d+)$/, se = (e) => Te.test(e.trim()), $ = (e)
|
|
|
846
846
|
u(void 0), s({ tree: k.tree });
|
|
847
847
|
}, v = () => {
|
|
848
848
|
const h = X(b), k = ze(h, h.length > 0 && h.every(se));
|
|
849
|
-
d(
|
|
849
|
+
d(P(k)), u(void 0), s({ tree: k });
|
|
850
850
|
};
|
|
851
851
|
return /* @__PURE__ */ c.jsxs("div", { className: "bitflow-stack", children: [
|
|
852
852
|
/* @__PURE__ */ c.jsx(
|
|
@@ -984,8 +984,8 @@ we({
|
|
|
984
984
|
Task: ot,
|
|
985
985
|
Form: st,
|
|
986
986
|
info: (e) => ({
|
|
987
|
-
name:
|
|
988
|
-
description:
|
|
987
|
+
name: F(A, "name", e),
|
|
988
|
+
description: F(A, "description", e)
|
|
989
989
|
}),
|
|
990
990
|
defaultData: () => ({
|
|
991
991
|
instruction: "",
|
|
@@ -998,7 +998,7 @@ we({
|
|
|
998
998
|
evaluation: oe()
|
|
999
999
|
})
|
|
1000
1000
|
});
|
|
1001
|
-
|
|
1001
|
+
Te(he);
|
|
1002
1002
|
ve("bitflow-styles-task-binary-tree", Qe);
|
|
1003
1003
|
export {
|
|
1004
1004
|
lt as AnswerSchema,
|
|
@@ -1016,7 +1016,7 @@ export {
|
|
|
1016
1016
|
qe as TreeSchema,
|
|
1017
1017
|
de as TreeView,
|
|
1018
1018
|
ze as buildBstFromKeys,
|
|
1019
|
-
|
|
1019
|
+
T as compareKeys,
|
|
1020
1020
|
_e as evaluate,
|
|
1021
1021
|
ne as expectedPlacements,
|
|
1022
1022
|
Ze as formMessages,
|
|
@@ -1030,6 +1030,6 @@ export {
|
|
|
1030
1030
|
ee as parseTreeText,
|
|
1031
1031
|
Ie as searchPath,
|
|
1032
1032
|
Me as traversalOrder,
|
|
1033
|
-
|
|
1033
|
+
P as treeToText,
|
|
1034
1034
|
q as treeWithPlacements
|
|
1035
1035
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { $ as re, e as ne, g as z, P as
|
|
3
|
-
const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitflow-space-small)}.bitflow-matching-columns{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--bitflow-space-large)}.bitflow-matching-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.bitflow-matching-line{stroke:var(--bitflow-color-primary);stroke-width:2;stroke-linecap:round}.bitflow-matching-line-correct{stroke:var(--bitflow-color-correct)}.bitflow-matching-line-wrong{stroke:var(--bitflow-color-wrong)}.bitflow-matching-column{display:flex;flex-direction:column;gap:var(--bitflow-space-xxsmall);padding:0;margin:var(--bitflow-space-xxsmall) 0 0;list-style:none}.bitflow-matching-card{display:flex;gap:var(--bitflow-space-xsmall);align-items:center;width:100%;padding:var(--bitflow-space-xsmall);font:inherit;color:var(--bitflow-color-text);text-align:left;cursor:pointer;background:var(--bitflow-color-surface);border:var(--bitflow-border-width) solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard)}.bitflow-matching-card:disabled{cursor:default}.bitflow-matching-image{max-height:4rem}.bitflow-matching-index{flex:none;width:1.5rem;height:1.5rem;font-size:var(--bitflow-font-size-small);font-variant-numeric:tabular-nums;line-height:1.5rem;color:var(--bitflow-color-on-primary);text-align:center;background:var(--bitflow-color-primary);border-radius:50%}.bitflow-matching-card.bitflow-matching-card-held{background:var(--bitflow-color-neutral-100);border-color:var(--bitflow-color-primary);box-shadow:0 0 0 2px var(--bitflow-color-primary)}.bitflow-matching-card.bitflow-matching-card-matched{background:var(--bitflow-color-neutral-100);border-style:dashed}.bitflow-matching-card.bitflow-matching-card-correct{background:color-mix(in srgb,var(--bitflow-color-correct) 12%,var(--bitflow-color-surface));border-style:solid;border-color:var(--bitflow-color-correct)}.bitflow-matching-card.bitflow-matching-card-wrong{background:color-mix(in srgb,var(--bitflow-color-wrong) 12%,var(--bitflow-color-surface));border-style:solid;border-color:var(--bitflow-color-wrong)}.bitflow-matching-status{position:sticky;bottom:0;z-index:1;margin:0;padding:var(--bitflow-space-xsmall) var(--bitflow-space-small);color:var(--bitflow-color-text);background:var(--bitflow-color-surface);border-top:var(--bitflow-border-width) solid var(--bitflow-color-primary);box-shadow:var(--bitflow-shadow-medium)}",
|
|
1
|
+
import { P as C, a4 as F, a as x, j as r, ac as J, ad as Z, a2 as P, am as ee, a5 as te, b as L, aa as ae, s as ie } from "./dom-B6NPWBb1.js";
|
|
2
|
+
import { $ as re, e as ne, g as z, P as G, B as le, U as se, M as oe, h as ce, C as de, H as he } from "./bitLoaders-7qanePQL.js";
|
|
3
|
+
const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitflow-space-small)}.bitflow-matching-columns{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--bitflow-space-large)}.bitflow-matching-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.bitflow-matching-line{stroke:var(--bitflow-color-primary);stroke-width:2;stroke-linecap:round}.bitflow-matching-line-correct{stroke:var(--bitflow-color-correct)}.bitflow-matching-line-wrong{stroke:var(--bitflow-color-wrong)}.bitflow-matching-column{display:flex;flex-direction:column;gap:var(--bitflow-space-xxsmall);padding:0;margin:var(--bitflow-space-xxsmall) 0 0;list-style:none}.bitflow-matching-card{display:flex;gap:var(--bitflow-space-xsmall);align-items:center;width:100%;padding:var(--bitflow-space-xsmall);font:inherit;color:var(--bitflow-color-text);text-align:left;cursor:pointer;background:var(--bitflow-color-surface);border:var(--bitflow-border-width) solid var(--bitflow-color-border);border-radius:var(--bitflow-radius-standard)}.bitflow-matching-card:disabled{cursor:default}.bitflow-matching-image{max-height:4rem}.bitflow-matching-index{flex:none;width:1.5rem;height:1.5rem;font-size:var(--bitflow-font-size-small);font-variant-numeric:tabular-nums;line-height:1.5rem;color:var(--bitflow-color-on-primary);text-align:center;background:var(--bitflow-color-primary);border-radius:50%}.bitflow-matching-card.bitflow-matching-card-held{background:var(--bitflow-color-neutral-100);border-color:var(--bitflow-color-primary);box-shadow:0 0 0 2px var(--bitflow-color-primary)}.bitflow-matching-card.bitflow-matching-card-matched{background:var(--bitflow-color-neutral-100);border-style:dashed}.bitflow-matching-card.bitflow-matching-card-correct{background:color-mix(in srgb,var(--bitflow-color-correct) 12%,var(--bitflow-color-surface));border-style:solid;border-color:var(--bitflow-color-correct)}.bitflow-matching-card.bitflow-matching-card-wrong{background:color-mix(in srgb,var(--bitflow-color-wrong) 12%,var(--bitflow-color-surface));border-style:solid;border-color:var(--bitflow-color-wrong)}.bitflow-matching-status{position:sticky;bottom:0;z-index:1;margin:0;padding:var(--bitflow-space-xsmall) var(--bitflow-space-small);color:var(--bitflow-color-text);background:var(--bitflow-color-surface);border-top:var(--bitflow-border-width) solid var(--bitflow-color-primary);box-shadow:var(--bitflow-shadow-medium)}", U = (t) => t.leftId === t.rightId, me = ({
|
|
4
4
|
data: t,
|
|
5
5
|
answer: l
|
|
6
6
|
}) => {
|
|
7
7
|
if (t.evaluation.mode === "skip")
|
|
8
8
|
return { state: "unknown", allowRetry: !1 };
|
|
9
|
-
const h = l?.matches ?? [], s = h.filter(
|
|
9
|
+
const h = l?.matches ?? [], s = h.filter(U), n = t.pairs.length;
|
|
10
10
|
return {
|
|
11
11
|
state: n > 0 && s.length === n ? "correct" : "wrong",
|
|
12
12
|
score: { earned: s.length, possible: n },
|
|
@@ -14,7 +14,7 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
14
14
|
detail: {
|
|
15
15
|
// Which pairings held, so each can be marked where it sits rather than
|
|
16
16
|
// the learner being given a number to reverse-engineer.
|
|
17
|
-
matches: h.map((o) => ({ ...o, correct:
|
|
17
|
+
matches: h.map((o) => ({ ...o, correct: U(o) }))
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
}, R = {
|
|
@@ -58,23 +58,23 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
58
58
|
matchRight: "richtig",
|
|
59
59
|
matchWrong: "nicht richtig"
|
|
60
60
|
}
|
|
61
|
-
},
|
|
61
|
+
}, Y = C({
|
|
62
62
|
kind: te(["text", "image"]).default("text"),
|
|
63
63
|
/**
|
|
64
64
|
* The words on the card, or — for a picture — what the picture shows. One
|
|
65
65
|
* field either way, so an image can never be shipped undescribed.
|
|
66
66
|
*/
|
|
67
|
-
label:
|
|
67
|
+
label: P().default(""),
|
|
68
68
|
image: ee.optional()
|
|
69
69
|
}), fe = C({
|
|
70
70
|
/** Stable across edits, so an answer keeps pointing at the same pair. */
|
|
71
|
-
id:
|
|
72
|
-
left:
|
|
73
|
-
right:
|
|
71
|
+
id: P().min(1),
|
|
72
|
+
left: Y,
|
|
73
|
+
right: Y
|
|
74
74
|
}), ge = C({
|
|
75
|
-
instruction:
|
|
75
|
+
instruction: P().default(""),
|
|
76
76
|
/** Written as pairs; the learner is given the two columns shuffled. */
|
|
77
|
-
pairs:
|
|
77
|
+
pairs: F(fe).default([]),
|
|
78
78
|
evaluation: J.default(Z)
|
|
79
79
|
}).check((t) => {
|
|
80
80
|
const l = t.value.pairs.map((h) => h.id);
|
|
@@ -106,11 +106,11 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
106
106
|
});
|
|
107
107
|
}), be = C({
|
|
108
108
|
/** The pair the left card came from. */
|
|
109
|
-
leftId:
|
|
109
|
+
leftId: P().min(1),
|
|
110
110
|
/** The pair the right card came from — the same one, when it is right. */
|
|
111
|
-
rightId:
|
|
111
|
+
rightId: P().min(1)
|
|
112
112
|
}), ze = C({
|
|
113
|
-
matches:
|
|
113
|
+
matches: F(be).default([])
|
|
114
114
|
}), we = ({
|
|
115
115
|
pairs: t,
|
|
116
116
|
leftOrder: l,
|
|
@@ -121,13 +121,13 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
121
121
|
readonly: k,
|
|
122
122
|
onChange: g
|
|
123
123
|
}) => {
|
|
124
|
-
const u = (e, a) =>
|
|
124
|
+
const u = (e, a) => L(R, e, o, a), [i, d] = x.useState(null), [w, c] = x.useState(""), b = x.useRef(null), T = x.useRef(/* @__PURE__ */ new Map()), [Q, H] = x.useState([]), p = (e) => t.find((a) => a.id === e), v = (e) => e.label, E = n !== void 0, M = i ? v(p(i).left) : null, $ = (e) => s.find((a) => a.leftId === e), A = (e) => s.find((a) => a.rightId === e), K = (e) => e && n?.find(
|
|
125
125
|
(a) => a.leftId === e.leftId && a.rightId === e.rightId
|
|
126
126
|
)?.correct;
|
|
127
127
|
x.useEffect(() => {
|
|
128
128
|
if (i === null) return;
|
|
129
129
|
const e = (a) => {
|
|
130
|
-
a.key === "Escape" && (d(null), c(
|
|
130
|
+
a.key === "Escape" && (d(null), c(L(R, "putDown", o)));
|
|
131
131
|
};
|
|
132
132
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
133
133
|
}, [i, o]);
|
|
@@ -308,7 +308,7 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
308
308
|
unnamedPair: "Leeres Paar",
|
|
309
309
|
pairSummary: "{left} → {right}"
|
|
310
310
|
}
|
|
311
|
-
},
|
|
311
|
+
}, q = (t, l) => {
|
|
312
312
|
const h = xe(ve(l)), s = [...t];
|
|
313
313
|
for (let n = s.length - 1; n > 0; n--) {
|
|
314
314
|
const o = Math.floor(h() * (n + 1));
|
|
@@ -334,11 +334,11 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
334
334
|
onAnswerChange: k
|
|
335
335
|
}) => {
|
|
336
336
|
const g = t.pairs.map((c) => c.id), u = o?.attemptId ?? "bitflow", i = x.useMemo(
|
|
337
|
-
() =>
|
|
337
|
+
() => q(g, `${u}:left`),
|
|
338
338
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
339
339
|
[g.join(), u]
|
|
340
340
|
), d = x.useMemo(
|
|
341
|
-
() =>
|
|
341
|
+
() => q(g, `${u}:right`),
|
|
342
342
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
343
343
|
[g.join(), u]
|
|
344
344
|
), w = (l?.matches ?? []).filter(
|
|
@@ -371,7 +371,7 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
371
371
|
onChange: h,
|
|
372
372
|
errors: s
|
|
373
373
|
}) => {
|
|
374
|
-
const n = (i, d) =>
|
|
374
|
+
const n = (i, d) => L(pe, i, l, d), o = (i) => h({ ...t, ...i }), k = re(t.pairs.map((i) => i.id)), g = (i, d, w) => o({
|
|
375
375
|
pairs: t.pairs.map(
|
|
376
376
|
(c) => c.id === i ? { ...c, [d]: { ...c[d], ...w } } : c
|
|
377
377
|
)
|
|
@@ -436,7 +436,7 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
436
436
|
z(s, "pairs") && /* @__PURE__ */ r.jsx("span", { className: "bitflow-field-error", role: "alert", children: z(s, "pairs") }),
|
|
437
437
|
t.pairs.length === 0 && /* @__PURE__ */ r.jsx("p", { className: "bitflow-text-muted", children: n("noPairs") }),
|
|
438
438
|
t.pairs.map((i, d) => /* @__PURE__ */ r.jsx("div", { className: "bitflow-rule", children: /* @__PURE__ */ r.jsxs(
|
|
439
|
-
|
|
439
|
+
G,
|
|
440
440
|
{
|
|
441
441
|
...k.props(i.id),
|
|
442
442
|
summary: i.left.label || i.right.label ? n("pairSummary", {
|
|
@@ -479,7 +479,7 @@ const ue = ".bitflow-matching{display:flex;flex-direction:column;gap:var(--bitfl
|
|
|
479
479
|
}
|
|
480
480
|
)
|
|
481
481
|
] }),
|
|
482
|
-
/* @__PURE__ */ r.jsx(
|
|
482
|
+
/* @__PURE__ */ r.jsx(G, { summary: n("advanced"), children: /* @__PURE__ */ r.jsx(
|
|
483
483
|
le,
|
|
484
484
|
{
|
|
485
485
|
evaluation: t.evaluation,
|
|
@@ -497,8 +497,8 @@ ae({
|
|
|
497
497
|
Task: ke,
|
|
498
498
|
Form: je,
|
|
499
499
|
info: (t) => ({
|
|
500
|
-
name:
|
|
501
|
-
description:
|
|
500
|
+
name: L(R, "name", t),
|
|
501
|
+
description: L(R, "description", t)
|
|
502
502
|
}),
|
|
503
503
|
defaultData: () => ({
|
|
504
504
|
instruction: "",
|
|
@@ -515,12 +515,12 @@ export {
|
|
|
515
515
|
je as Form,
|
|
516
516
|
be as MatchSchema,
|
|
517
517
|
fe as PairSchema,
|
|
518
|
-
|
|
518
|
+
Y as SideSchema,
|
|
519
519
|
_ as TYPE,
|
|
520
520
|
ke as Task,
|
|
521
521
|
me as evaluate,
|
|
522
522
|
pe as formMessages,
|
|
523
|
-
|
|
523
|
+
U as isRight,
|
|
524
524
|
R as messages,
|
|
525
|
-
|
|
525
|
+
q as seededShuffle
|
|
526
526
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { C as m, e as j, F as x, U as A, H } from "./bitLoaders-
|
|
1
|
+
import { P as v, a9 as g, a2 as r, j as n, a as k, b as o, s as y, aa as L } from "./dom-B6NPWBb1.js";
|
|
2
|
+
import { C as m, e as j, F as x, U as A, H } from "./bitLoaders-7qanePQL.js";
|
|
3
3
|
const F = ".bitflow-download-state{margin:0;min-height:var(--bitflow-space-small);font-size:var(--bitflow-font-size-small);color:var(--bitflow-color-text-muted)}", h = {
|
|
4
4
|
en: {
|
|
5
5
|
name: "Finish and save",
|
|
@@ -208,9 +208,9 @@ const F = ".bitflow-download-state{margin:0;min-height:var(--bitflow-space-small
|
|
|
208
208
|
)
|
|
209
209
|
] });
|
|
210
210
|
};
|
|
211
|
-
|
|
211
|
+
y("bitflow-styles-end-download", F);
|
|
212
212
|
const w = "end-download";
|
|
213
|
-
|
|
213
|
+
L({
|
|
214
214
|
type: w,
|
|
215
215
|
kind: "end",
|
|
216
216
|
schema: N,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { $ as
|
|
1
|
+
import { P as H, ak as V, a4 as M, a2 as w, Y as q, j as t, ac as G, ad as D, a9 as N, a as z, b as v, aa as Y, s as K } from "./dom-B6NPWBb1.js";
|
|
2
|
+
import { $ as Q, e as Z, C as A, g as E, i as R, P as F, r as $, F as y, B as X, U as _, H as ee } from "./bitLoaders-7qanePQL.js";
|
|
3
3
|
const W = H({
|
|
4
4
|
/** The call, as it would be written: `fak(3)`, `sum(list, 2)`. */
|
|
5
5
|
call: w().default(""),
|
|
@@ -378,7 +378,7 @@ const W = H({
|
|
|
378
378
|
if (!e.includes(o)) return o;
|
|
379
379
|
}
|
|
380
380
|
}, ue = ({ data: e, locale: n, onChange: o, errors: r }) => {
|
|
381
|
-
const a = (l, c) => v(re, l, n, c), s = (l) => o({ ...e, ...l }), i =
|
|
381
|
+
const a = (l, c) => v(re, l, n, c), s = (l) => o({ ...e, ...l }), i = Q(e.checkpoints.map((l) => l.id)), d = (l, c) => s({
|
|
382
382
|
checkpoints: e.checkpoints.map(
|
|
383
383
|
(m) => m.id === l ? { ...m, ...c } : m
|
|
384
384
|
)
|
|
@@ -560,7 +560,7 @@ const W = H({
|
|
|
560
560
|
}
|
|
561
561
|
),
|
|
562
562
|
/* @__PURE__ */ t.jsx(
|
|
563
|
-
|
|
563
|
+
X,
|
|
564
564
|
{
|
|
565
565
|
evaluation: e.evaluation,
|
|
566
566
|
locale: n,
|
|
@@ -570,7 +570,7 @@ const W = H({
|
|
|
570
570
|
] })
|
|
571
571
|
] });
|
|
572
572
|
}, U = "task-call-stack";
|
|
573
|
-
|
|
573
|
+
Y({
|
|
574
574
|
type: U,
|
|
575
575
|
kind: "task",
|
|
576
576
|
schema: te,
|
|
@@ -594,7 +594,7 @@ K({
|
|
|
594
594
|
})
|
|
595
595
|
});
|
|
596
596
|
ee(U);
|
|
597
|
-
|
|
597
|
+
K("bitflow-styles-task-call-stack", ie);
|
|
598
598
|
export {
|
|
599
599
|
we as AnswerSchema,
|
|
600
600
|
ae as CheckpointSchema,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { $ as ee, e as je, M as O, F as
|
|
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
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) => {
|
|
@@ -140,14 +140,14 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (e, t) => Math.abs
|
|
|
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:
|
|
144
|
-
y:
|
|
143
|
+
x: K().min(0).max(1).default(0.5),
|
|
144
|
+
y: K().min(0).max(1).default(0.5)
|
|
145
145
|
}), ze = $({
|
|
146
146
|
id: N().min(1),
|
|
147
147
|
source: N().min(1),
|
|
148
148
|
target: N().min(1),
|
|
149
149
|
/** Ignored entirely unless the graph is weighted, where it is the cost. */
|
|
150
|
-
weight:
|
|
150
|
+
weight: K().positive().default(1)
|
|
151
151
|
}), ie = [
|
|
152
152
|
"path",
|
|
153
153
|
"shortestPath",
|
|
@@ -290,7 +290,7 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (e, t) => Math.abs
|
|
|
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
292
|
return r === void 0 ? v("notToTarget") : U(a, r) ? v("correct") : v("notShortest");
|
|
293
|
-
},
|
|
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,7 +301,7 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (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
|
-
},
|
|
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");
|
|
@@ -309,7 +309,7 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (e, t) => Math.abs
|
|
|
309
309
|
if (a === "wrongSize") return v("treeWrongSize");
|
|
310
310
|
const r = Pe(e);
|
|
311
311
|
return r === void 0 ? v("treeDisconnected") : U(Ae(e, t), r) ? v("correct") : v("notCheapestTree");
|
|
312
|
-
},
|
|
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))
|
|
@@ -322,11 +322,11 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (e, t) => Math.abs
|
|
|
322
322
|
);
|
|
323
323
|
switch (e.goal) {
|
|
324
324
|
case "traversal":
|
|
325
|
-
return
|
|
325
|
+
return Ye(e, a);
|
|
326
326
|
case "spanningTree":
|
|
327
|
-
return
|
|
327
|
+
return Ze(e, a);
|
|
328
328
|
case "cut":
|
|
329
|
-
return
|
|
329
|
+
return Ke(e, a);
|
|
330
330
|
default:
|
|
331
331
|
return Ge(e, a);
|
|
332
332
|
}
|
|
@@ -1013,7 +1013,7 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (e, t) => Math.abs
|
|
|
1013
1013
|
}
|
|
1014
1014
|
),
|
|
1015
1015
|
/* @__PURE__ */ s.jsx(
|
|
1016
|
-
|
|
1016
|
+
Y,
|
|
1017
1017
|
{
|
|
1018
1018
|
label: n("directedLabel"),
|
|
1019
1019
|
hint: n("directedHint"),
|
|
@@ -1023,7 +1023,7 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (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
|
-
|
|
1026
|
+
Y,
|
|
1027
1027
|
{
|
|
1028
1028
|
label: n("weightedLabel"),
|
|
1029
1029
|
hint: n("weightedHint"),
|
|
@@ -1050,7 +1050,7 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (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
|
-
|
|
1053
|
+
Z,
|
|
1054
1054
|
{
|
|
1055
1055
|
...l.props(i.id),
|
|
1056
1056
|
summary: i.label || n("unnamedPlace"),
|
|
@@ -1120,7 +1120,7 @@ const C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (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
|
-
|
|
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 C = (e, t) => e.weighted ? t.weight : 1, oe = 1e-9, U = (e, t) => Math.abs
|
|
|
1246
1246
|
}
|
|
1247
1247
|
)
|
|
1248
1248
|
] }),
|
|
1249
|
-
/* @__PURE__ */ s.jsxs(
|
|
1249
|
+
/* @__PURE__ */ s.jsxs(Z, { summary: n("advanced"), children: [
|
|
1250
1250
|
e.goal === "traversal" && /* @__PURE__ */ s.jsx(
|
|
1251
|
-
|
|
1251
|
+
Y,
|
|
1252
1252
|
{
|
|
1253
1253
|
label: n("partialCreditLabel"),
|
|
1254
1254
|
hint: n("partialCreditHint"),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { C as h, e as
|
|
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",
|
|
@@ -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
|
-
|
|
235
|
+
L,
|
|
236
236
|
{
|
|
237
237
|
label: a("markdownLabel"),
|
|
238
238
|
hint: a("markdownHint"),
|
|
@@ -291,7 +291,7 @@ 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
|
-
|
|
294
|
+
j({
|
|
295
295
|
type: b,
|
|
296
296
|
kind: "end",
|
|
297
297
|
schema: U,
|