@khanacademy/perseus-score 9.0.11 → 9.0.12
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/index.js +48 -48
- package/dist/index.js.map +1 -1
- package/dist/util/answer-types.d.ts +5 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -5,18 +5,18 @@ import { ErrorCodes as s, Errors as c, GrapherUtil as l, PerseusError as u, Regi
|
|
|
5
5
|
import b from "underscore";
|
|
6
6
|
import x from "tiny-invariant";
|
|
7
7
|
//#region \0rolldown/runtime.js
|
|
8
|
-
var S = "@khanacademy/perseus-score", C = "9.0.
|
|
8
|
+
var S = "@khanacademy/perseus-score", C = "9.0.12";
|
|
9
9
|
e(S, C);
|
|
10
10
|
//#endregion
|
|
11
11
|
//#region packages/perseus-score/src/util/answer-types.ts
|
|
12
|
-
var w = 2 ** -42, T = {
|
|
12
|
+
var w = 2 ** -42, T = /^([+-]?\s*\d+\s*(?:\/\s*(?:[+-]\s*)?\d+\s*)?)(?:\*\s*)?(\\?pi|p|\u03c0|\\?tau|t|\u03c4|pau)$/i, E = /^([+-]?)\s*(\d+)\s+([+-]?\d+)\s*\/\s*([+-]?\d+)\s*(?:\*\s*)?(\\?pi|p|\u03c0|\\?tau|t|\u03c4|pau)$/i, D = /^([+-]?\s*\d+)\s*(?:\*\s*)?(\\?pi|p|\u03c0|\\?tau|t|\u03c4|pau)\s*(?:\/\s*((?:[+-]\s*)?\d+))?$/i, O = /^([+-]?)\s*(?:\*\s*)?(\\?pi|p|\u03c0|\\?tau|t|\u03c4|pau)\s*(?:\/\s*([+-]?\d+))?$/i, k = /^(\S+)\s*(?:\*\s*)?(\\?pi|p|\u03c0|\\?tau|t|\u03c4|pau)$/i, A = {
|
|
13
13
|
predicate: {
|
|
14
14
|
defaultForms: "integer, proper, improper, mixed, decimal",
|
|
15
15
|
createValidatorFunctional: function(e, t) {
|
|
16
16
|
let r = {
|
|
17
17
|
simplify: "required",
|
|
18
18
|
ratio: !1,
|
|
19
|
-
forms:
|
|
19
|
+
forms: A.predicate.defaultForms,
|
|
20
20
|
...t
|
|
21
21
|
}, i;
|
|
22
22
|
i = Array.isArray(r.forms) ? r.forms : r.forms.split(/\s*,\s*/), r.inexact === void 0 && (r.maxError = 0);
|
|
@@ -53,22 +53,22 @@ var w = 2 ** -42, T = {
|
|
|
53
53
|
value: parseFloat(t[1] + "1"),
|
|
54
54
|
exact: !0
|
|
55
55
|
}];
|
|
56
|
-
else if (t = e.match(
|
|
57
|
-
else if (t = e.match(
|
|
56
|
+
else if (t = e.match(T)) r = fractionTransformer(t[1]);
|
|
57
|
+
else if (t = e.match(E)) {
|
|
58
58
|
let e = parseFloat(t[1] + "1"), i = parseFloat(t[2]), a = parseFloat(t[3]), o = parseFloat(t[4]), s = a < o && n.getGCD(a, o) === 1;
|
|
59
59
|
r = [{
|
|
60
60
|
value: e * (i + a / o),
|
|
61
61
|
exact: s
|
|
62
62
|
}];
|
|
63
|
-
} else if (t = e.match(
|
|
64
|
-
else if (t = e.match(
|
|
63
|
+
} else if (t = e.match(D)) r = fractionTransformer(t[1] + "/" + t[3]);
|
|
64
|
+
else if (t = e.match(O)) r = fractionTransformer(t[1] + "1/" + t[3]);
|
|
65
65
|
else if (e === "0") r = [{
|
|
66
66
|
value: 0,
|
|
67
67
|
exact: !0
|
|
68
68
|
}];
|
|
69
|
-
else if (t = e.match(
|
|
69
|
+
else if (t = e.match(k)) r = o.decimal(t[1]);
|
|
70
70
|
else {
|
|
71
|
-
r = b.reduce(
|
|
71
|
+
r = b.reduce(A.predicate.defaultForms.split(/\s*,\s*/), function(t, n) {
|
|
72
72
|
return t.concat(o[n](e));
|
|
73
73
|
}, []);
|
|
74
74
|
let t = !1, n = parseFloat(e);
|
|
@@ -176,7 +176,7 @@ var w = 2 ** -42, T = {
|
|
|
176
176
|
},
|
|
177
177
|
number: { createValidatorFunctional: function(e, t) {
|
|
178
178
|
let n = parseFloat(e);
|
|
179
|
-
return
|
|
179
|
+
return A.predicate.createValidatorFunctional((e, t) => Math.abs(e - n) < t, { ...t });
|
|
180
180
|
} },
|
|
181
181
|
expression: {
|
|
182
182
|
parseSolution: function(e, n) {
|
|
@@ -197,7 +197,7 @@ var w = 2 ** -42, T = {
|
|
|
197
197
|
if (!r) return i.empty = !0, i;
|
|
198
198
|
let a = t.parse(r, n);
|
|
199
199
|
if (!a.parsed) return i.empty = !0, i;
|
|
200
|
-
typeof e == "string" && (e =
|
|
200
|
+
typeof e == "string" && (e = A.expression.parseSolution(e, n));
|
|
201
201
|
let o = t.compare(a.expr, e, n);
|
|
202
202
|
if (o.equal) i.correct = !0;
|
|
203
203
|
else if (o.message) i.message = o.message;
|
|
@@ -311,7 +311,7 @@ function scoreExpression(e, n, r) {
|
|
|
311
311
|
/* c8 ignore next */
|
|
312
312
|
throw new u("Unable to parse solution answer for expression", c.InvalidInput, { metadata: { rubric: JSON.stringify(n) } });
|
|
313
313
|
let a = getVarError(o, r.expr.getVars(), n.extraKeys ?? []);
|
|
314
|
-
return a == null ?
|
|
314
|
+
return a == null ? A.expression.createValidatorFunctional(r.expr, {
|
|
315
315
|
...i,
|
|
316
316
|
simplify: e.simplify,
|
|
317
317
|
form: e.form
|
|
@@ -430,13 +430,13 @@ function scoreIframe(e) {
|
|
|
430
430
|
}
|
|
431
431
|
//#endregion
|
|
432
432
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-absolute-value.ts
|
|
433
|
-
var { getAbsoluteValueCoefficients:
|
|
433
|
+
var { getAbsoluteValueCoefficients: j } = i;
|
|
434
434
|
function scoreAbsoluteValue(e, t) {
|
|
435
435
|
if (!e.coords || !t.coords) return {
|
|
436
436
|
type: "invalid",
|
|
437
437
|
message: null
|
|
438
438
|
};
|
|
439
|
-
let n =
|
|
439
|
+
let n = j(e.coords), r = j(t.coords);
|
|
440
440
|
return {
|
|
441
441
|
type: "points",
|
|
442
442
|
earned: +!!f(n, r),
|
|
@@ -446,22 +446,22 @@ function scoreAbsoluteValue(e, t) {
|
|
|
446
446
|
}
|
|
447
447
|
//#endregion
|
|
448
448
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-angle.ts
|
|
449
|
-
var { collinear:
|
|
449
|
+
var { collinear: M, clockwise: N } = a, { getClockwiseAngle: P } = r;
|
|
450
450
|
function scoreAngle(e, t) {
|
|
451
451
|
let n = e.coords, r = t.coords, i = t.allowReflexAngles;
|
|
452
452
|
if (!n) return {
|
|
453
453
|
type: "invalid",
|
|
454
454
|
message: null
|
|
455
455
|
};
|
|
456
|
-
let a =
|
|
456
|
+
let a = N([
|
|
457
457
|
n[0],
|
|
458
458
|
n[2],
|
|
459
459
|
n[1]
|
|
460
460
|
]) && !i ? n.slice().reverse() : n, o;
|
|
461
461
|
if (t.match === "congruent") {
|
|
462
|
-
let e =
|
|
462
|
+
let e = P(a, i), t = r ? P(r, i) : null;
|
|
463
463
|
o = t !== null && p(e, t);
|
|
464
|
-
} else o = r != null && f(a[1], r[1]) &&
|
|
464
|
+
} else o = r != null && f(a[1], r[1]) && M(r[1], r[0], a[0]) && M(r[1], r[2], a[2]);
|
|
465
465
|
return {
|
|
466
466
|
type: "points",
|
|
467
467
|
earned: +!!o,
|
|
@@ -484,13 +484,13 @@ function scoreCircle(e, t) {
|
|
|
484
484
|
}
|
|
485
485
|
//#endregion
|
|
486
486
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-exponential.ts
|
|
487
|
-
var { getExponentialCoefficients:
|
|
487
|
+
var { getExponentialCoefficients: F } = i;
|
|
488
488
|
function scoreExponential(e, t) {
|
|
489
489
|
if (!e.coords || e.asymptote == null || !t.coords || t.asymptote == null) return {
|
|
490
490
|
type: "invalid",
|
|
491
491
|
message: null
|
|
492
492
|
};
|
|
493
|
-
let n =
|
|
493
|
+
let n = F(e.coords, e.asymptote), r = F(t.coords, t.asymptote);
|
|
494
494
|
return {
|
|
495
495
|
type: "points",
|
|
496
496
|
earned: n != null && r != null && f([
|
|
@@ -508,7 +508,7 @@ function scoreExponential(e, t) {
|
|
|
508
508
|
}
|
|
509
509
|
//#endregion
|
|
510
510
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-linear.ts
|
|
511
|
-
var { collinear:
|
|
511
|
+
var { collinear: I } = a;
|
|
512
512
|
function scoreLinear(e, t) {
|
|
513
513
|
if (!e.coords || !t.coords) return {
|
|
514
514
|
type: "invalid",
|
|
@@ -517,14 +517,14 @@ function scoreLinear(e, t) {
|
|
|
517
517
|
let n = e.coords, r = t.coords;
|
|
518
518
|
return {
|
|
519
519
|
type: "points",
|
|
520
|
-
earned:
|
|
520
|
+
earned: I(r[0], r[1], n[0]) && I(r[0], r[1], n[1]) ? 1 : 0,
|
|
521
521
|
total: 1,
|
|
522
522
|
message: null
|
|
523
523
|
};
|
|
524
524
|
}
|
|
525
525
|
//#endregion
|
|
526
526
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-linear-system.ts
|
|
527
|
-
var { collinear:
|
|
527
|
+
var { collinear: L } = a;
|
|
528
528
|
function scoreLinearSystem(e, t) {
|
|
529
529
|
if (!e.coords || !t.coords) return {
|
|
530
530
|
type: "invalid",
|
|
@@ -533,20 +533,20 @@ function scoreLinearSystem(e, t) {
|
|
|
533
533
|
let n = e.coords, r = t.coords;
|
|
534
534
|
return {
|
|
535
535
|
type: "points",
|
|
536
|
-
earned:
|
|
536
|
+
earned: L(r[0][0], r[0][1], n[0][0]) && L(r[0][0], r[0][1], n[0][1]) && L(r[1][0], r[1][1], n[1][0]) && L(r[1][0], r[1][1], n[1][1]) || L(r[0][0], r[0][1], n[1][0]) && L(r[0][0], r[0][1], n[1][1]) && L(r[1][0], r[1][1], n[0][0]) && L(r[1][0], r[1][1], n[0][1]) ? 1 : 0,
|
|
537
537
|
total: 1,
|
|
538
538
|
message: null
|
|
539
539
|
};
|
|
540
540
|
}
|
|
541
541
|
//#endregion
|
|
542
542
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-logarithm.ts
|
|
543
|
-
var { getLogarithmCoefficients:
|
|
543
|
+
var { getLogarithmCoefficients: R } = i;
|
|
544
544
|
function scoreLogarithm(e, t) {
|
|
545
545
|
if (!e.coords || e.asymptote == null || !t.coords || t.asymptote == null) return {
|
|
546
546
|
type: "invalid",
|
|
547
547
|
message: null
|
|
548
548
|
};
|
|
549
|
-
let n =
|
|
549
|
+
let n = R(e.coords, e.asymptote), r = R(t.coords, t.asymptote);
|
|
550
550
|
return {
|
|
551
551
|
type: "points",
|
|
552
552
|
earned: n != null && r != null && f([
|
|
@@ -580,14 +580,14 @@ function scorePoint(e, t) {
|
|
|
580
580
|
}
|
|
581
581
|
//#endregion
|
|
582
582
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-polygon.ts
|
|
583
|
-
var { similar:
|
|
583
|
+
var { similar: z } = a;
|
|
584
584
|
function scorePolygon(e, t) {
|
|
585
585
|
if (!e.coords || !t.coords) return {
|
|
586
586
|
type: "invalid",
|
|
587
587
|
message: null
|
|
588
588
|
};
|
|
589
589
|
let n = e.coords.slice(), r = t.coords.slice(), i;
|
|
590
|
-
return t.match === "similar" ? i =
|
|
590
|
+
return t.match === "similar" ? i = z(n, r, Infinity) : t.match === "congruent" ? i = z(n, r, o.DEFAULT_TOLERANCE) : t.match === "approx" ? i = z(n, r, .1) : (n.sort(), r.sort(), i = f(n, r)), {
|
|
591
591
|
type: "points",
|
|
592
592
|
earned: +!!i,
|
|
593
593
|
total: 1,
|
|
@@ -596,13 +596,13 @@ function scorePolygon(e, t) {
|
|
|
596
596
|
}
|
|
597
597
|
//#endregion
|
|
598
598
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-quadratic.ts
|
|
599
|
-
var { getQuadraticCoefficients:
|
|
599
|
+
var { getQuadraticCoefficients: B } = i;
|
|
600
600
|
function scoreQuadratic(e, t) {
|
|
601
601
|
if (!e.coords || !t.coords) return {
|
|
602
602
|
type: "invalid",
|
|
603
603
|
message: null
|
|
604
604
|
};
|
|
605
|
-
let n =
|
|
605
|
+
let n = B(e.coords), r = B(t.coords);
|
|
606
606
|
return {
|
|
607
607
|
type: "points",
|
|
608
608
|
earned: +!!f(n, r),
|
|
@@ -612,7 +612,7 @@ function scoreQuadratic(e, t) {
|
|
|
612
612
|
}
|
|
613
613
|
//#endregion
|
|
614
614
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-ray.ts
|
|
615
|
-
var { collinear:
|
|
615
|
+
var { collinear: V } = a;
|
|
616
616
|
function scoreRay(e, t) {
|
|
617
617
|
if (!e.coords || !t.coords) return {
|
|
618
618
|
type: "invalid",
|
|
@@ -621,7 +621,7 @@ function scoreRay(e, t) {
|
|
|
621
621
|
let n = e.coords, r = t.coords;
|
|
622
622
|
return {
|
|
623
623
|
type: "points",
|
|
624
|
-
earned: f(n[0], r[0]) &&
|
|
624
|
+
earned: f(n[0], r[0]) && V(r[0], r[1], n[1]) ? 1 : 0,
|
|
625
625
|
total: 1,
|
|
626
626
|
message: null
|
|
627
627
|
};
|
|
@@ -643,13 +643,13 @@ function scoreSegment(e, t) {
|
|
|
643
643
|
}
|
|
644
644
|
//#endregion
|
|
645
645
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-sinusoid.ts
|
|
646
|
-
var { getSinusoidCoefficients:
|
|
646
|
+
var { getSinusoidCoefficients: H } = i, { canonicalSineCoefficients: U } = a;
|
|
647
647
|
function scoreSinusoid(e, t) {
|
|
648
648
|
if (!e.coords || !t.coords) return {
|
|
649
649
|
type: "invalid",
|
|
650
650
|
message: null
|
|
651
651
|
};
|
|
652
|
-
let n =
|
|
652
|
+
let n = H(e.coords), r = H(t.coords), i = U(n), a = U(r);
|
|
653
653
|
return {
|
|
654
654
|
type: "points",
|
|
655
655
|
earned: +!!f(i, a),
|
|
@@ -659,13 +659,13 @@ function scoreSinusoid(e, t) {
|
|
|
659
659
|
}
|
|
660
660
|
//#endregion
|
|
661
661
|
//#region packages/perseus-score/src/widgets/interactive-graph/sub-scorers/score-tangent.ts
|
|
662
|
-
var { getTangentCoefficients:
|
|
662
|
+
var { getTangentCoefficients: W } = i, { canonicalTangentCoefficients: G } = a;
|
|
663
663
|
function scoreTangent(e, t) {
|
|
664
664
|
if (!e.coords || !t.coords) return {
|
|
665
665
|
type: "invalid",
|
|
666
666
|
message: null
|
|
667
667
|
};
|
|
668
|
-
let n =
|
|
668
|
+
let n = W(e.coords), r = W(t.coords), i = G(n), a = G(r);
|
|
669
669
|
return {
|
|
670
670
|
type: "points",
|
|
671
671
|
earned: +!!f(i, a),
|
|
@@ -759,7 +759,7 @@ function scoreMatrix(e, t) {
|
|
|
759
759
|
type: "invalid",
|
|
760
760
|
message: null
|
|
761
761
|
};
|
|
762
|
-
let n = t.answers, r = e.answers, i = v(n), a = v(r), o = i[0] !== a[0] || i[1] !== a[1], s =
|
|
762
|
+
let n = t.answers, r = e.answers, i = v(n), a = v(r), o = i[0] !== a[0] || i[1] !== a[1], s = A.number.createValidatorFunctional, c = null, l = !1;
|
|
763
763
|
return b(a[0]).times((e) => {
|
|
764
764
|
b(a[1]).times((t) => {
|
|
765
765
|
if (!o) {
|
|
@@ -870,7 +870,7 @@ function parseTex(e) {
|
|
|
870
870
|
}
|
|
871
871
|
//#endregion
|
|
872
872
|
//#region packages/perseus-score/src/widgets/numeric-input/score-numeric-input.ts
|
|
873
|
-
var
|
|
873
|
+
var K = [
|
|
874
874
|
{
|
|
875
875
|
title: "Integers",
|
|
876
876
|
value: "integer",
|
|
@@ -912,9 +912,9 @@ function scoreNumericInput(e, t, n) {
|
|
|
912
912
|
type: "invalid",
|
|
913
913
|
message: null
|
|
914
914
|
};
|
|
915
|
-
let r =
|
|
915
|
+
let r = K.map((e) => e.value).filter((e) => e !== "pi"), createValidator = (e) => {
|
|
916
916
|
let t = `${e.value}`, i = [...e.answerForms ?? []];
|
|
917
|
-
return (!e.strict || i.length === 0) && i.push(...r),
|
|
917
|
+
return (!e.strict || i.length === 0) && i.push(...r), A.number.createValidatorFunctional(t, {
|
|
918
918
|
message: e.message,
|
|
919
919
|
simplify: e.status === "correct" ? e.simplify : "optional",
|
|
920
920
|
inexact: !0,
|
|
@@ -1076,7 +1076,7 @@ function scoreTable(e, t) {
|
|
|
1076
1076
|
total: 1,
|
|
1077
1077
|
message: null
|
|
1078
1078
|
};
|
|
1079
|
-
let a =
|
|
1079
|
+
let a = A.number.createValidatorFunctional, o = null;
|
|
1080
1080
|
return {
|
|
1081
1081
|
type: "points",
|
|
1082
1082
|
earned: +!!i.every(function(e) {
|
|
@@ -1092,7 +1092,7 @@ function scoreTable(e, t) {
|
|
|
1092
1092
|
}
|
|
1093
1093
|
//#endregion
|
|
1094
1094
|
//#region packages/perseus-score/src/widgets/input-number/score-input-number.ts
|
|
1095
|
-
var
|
|
1095
|
+
var q = scoreNumericInput, J = {
|
|
1096
1096
|
type: "points",
|
|
1097
1097
|
earned: 0,
|
|
1098
1098
|
total: 0,
|
|
@@ -1118,7 +1118,7 @@ function combineScores(e, t) {
|
|
|
1118
1118
|
} });
|
|
1119
1119
|
}
|
|
1120
1120
|
function flattenScores(e) {
|
|
1121
|
-
return Object.values(e).reduce(combineScores,
|
|
1121
|
+
return Object.values(e).reduce(combineScores, J);
|
|
1122
1122
|
}
|
|
1123
1123
|
//#endregion
|
|
1124
1124
|
//#region packages/perseus-score/src/widgets/free-response/score-free-response.ts
|
|
@@ -1222,16 +1222,16 @@ function scoreMockWidget(e, t) {
|
|
|
1222
1222
|
}
|
|
1223
1223
|
//#endregion
|
|
1224
1224
|
//#region packages/perseus-score/src/widgets/widget-registry.ts
|
|
1225
|
-
var
|
|
1225
|
+
var Y = new d("Score widget registry");
|
|
1226
1226
|
function registerWidget(e, t, n) {
|
|
1227
1227
|
let r = {
|
|
1228
1228
|
scorer: t,
|
|
1229
1229
|
validator: n
|
|
1230
1230
|
};
|
|
1231
|
-
|
|
1231
|
+
Y.set(e, r);
|
|
1232
1232
|
}
|
|
1233
|
-
var getWidgetValidator = (e) =>
|
|
1234
|
-
registerWidget("categorizer", scoreCategorizer, validateCategorizer), registerWidget("cs-program", scoreCSProgram), registerWidget("dropdown", scoreDropdown, validateDropdown), registerWidget("expression", scoreExpression, validateExpression), registerWidget("free-response", scoreFreeResponse, validateFreeResponse), registerWidget("grapher", scoreGrapher), registerWidget("group", scoreGroup, validateGroup), registerWidget("iframe", scoreIframe), registerWidget("input-number",
|
|
1233
|
+
var getWidgetValidator = (e) => Y.get(e)?.validator ?? null, getWidgetScorer = (e) => Y.get(e)?.scorer ?? null;
|
|
1234
|
+
registerWidget("categorizer", scoreCategorizer, validateCategorizer), registerWidget("cs-program", scoreCSProgram), registerWidget("dropdown", scoreDropdown, validateDropdown), registerWidget("expression", scoreExpression, validateExpression), registerWidget("free-response", scoreFreeResponse, validateFreeResponse), registerWidget("grapher", scoreGrapher), registerWidget("group", scoreGroup, validateGroup), registerWidget("iframe", scoreIframe), registerWidget("input-number", q), registerWidget("interactive-graph", scoreInteractiveGraph), registerWidget("label-image", scoreLabelImage, validateLabelImage), registerWidget("matcher", scoreMatcher), registerWidget("matrix", scoreMatrix, validateMatrix), registerWidget("mock-widget", scoreMockWidget, scoreMockWidget), registerWidget("number-line", scoreNumberLine), registerWidget("numeric-input", scoreNumericInput), registerWidget("orderer", scoreOrderer, validateOrderer), registerWidget("plotter", scorePlotter, validatePlotter), registerWidget("radio", scoreRadio, validateRadio), registerWidget("sorter", scoreSorter, validateSorter), registerWidget("table", scoreTable, validateTable);
|
|
1235
1235
|
//#endregion
|
|
1236
1236
|
//#region packages/perseus-score/src/util/is-widget-scoreable.ts
|
|
1237
1237
|
function isWidgetScoreable(e) {
|
|
@@ -1292,6 +1292,6 @@ function hasEmptyDINERWidgets(e, t) {
|
|
|
1292
1292
|
return !1;
|
|
1293
1293
|
}
|
|
1294
1294
|
//#endregion
|
|
1295
|
-
export {
|
|
1295
|
+
export { A as KhanAnswerTypes, emptyWidgetsFunctional, flattenScores, getWidgetScorer, getWidgetValidator, hasEmptyDINERWidgets, isWidgetScoreable, C as libVersion, registerWidget, scoreCSProgram, scoreCategorizer, scoreDropdown, scoreExpression, scoreGrapher, scoreIframe, q as scoreInputNumber, scoreInteractiveGraph, scoreLabelImage, scoreLabelImageMarker, scoreMatcher, scoreMatrix, scoreNumberLine, scoreNumericInput, scoreOrderer, scorePerseusItem, scorePlotter, scoreRadio, scoreSorter, scoreTable, scoreWidgetsFunctional, validateCategorizer, validateDropdown, validateExpression, validateMatrix, validateOrderer, validatePlotter, validateRadio, validateSorter, validateTable, validateUserInput };
|
|
1296
1296
|
|
|
1297
1297
|
//# sourceMappingURL=index.js.map
|