@pie-element/image-cloze-association 10.2.0-next.19 → 10.2.0-next.21

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.
@@ -1,54 +1,54 @@
1
1
  import e from "./defaults.js";
2
2
  import { getAllUniqueCorrectness as t, getCompleteResponseDetails as n } from "./utils.js";
3
3
  import { cloneDeep as r, isEmpty as i, shuffle as a } from "@pie-element/shared-lodash";
4
- import { camelizeKeys as o } from "humps";
4
+ import o from "humps";
5
5
  import s from "debug";
6
6
  import { partialScoring as c } from "@pie-element/shared-controller-utils";
7
7
  //#region src/controller/index.ts
8
- var l = s("pie-elements:image-cloze-association:controller"), u = (t) => ({
8
+ var { camelizeKeys: l } = o, u = s("pie-elements:image-cloze-association:controller"), d = (t) => ({
9
9
  ...e,
10
10
  ...t
11
- }), d = (e, t, r) => {
12
- let i = u(e), s = o(i);
11
+ }), f = (e, t, r) => {
12
+ let i = d(e), o = l(i);
13
13
  return new Promise((e) => {
14
- let o = r.mode === "evaluate", { responseAreasToBeFilled: c, possibleResponses: l, hasUnplacedChoices: u } = n(s.validation, s.possibleResponses), d = {
14
+ let s = r.mode === "evaluate", { responseAreasToBeFilled: c, possibleResponses: l, hasUnplacedChoices: u } = n(o.validation, o.possibleResponses), d = {
15
15
  disabled: r.mode !== "gather",
16
16
  mode: r.mode,
17
- ...s,
18
- responseCorrect: o ? _(s, t) === 1 : void 0,
19
- validation: o ? s.validation : void 0,
17
+ ...o,
18
+ responseCorrect: s ? v(o, t) === 1 : void 0,
19
+ validation: s ? o.validation : void 0,
20
20
  responseAreasToBeFilled: c,
21
21
  completeResponses: l,
22
22
  hasUnplacedChoices: u
23
23
  };
24
- i.shuffle && (d.possibleResponses = a(i.possible_responses)), r.role === "instructor" && (r.mode === "view" || r.mode === "evaluate") ? (d.teacherInstructions = s.teacherInstructionsEnabled ? s.teacherInstructions : null, d.rationale = s.rationale ? s.rationale : null) : (d.teacherInstructions = null, d.rationale = null), e(d);
24
+ i.shuffle && (d.possibleResponses = a(i.possible_responses)), r.role === "instructor" && (r.mode === "view" || r.mode === "evaluate") ? (d.teacherInstructions = o.teacherInstructionsEnabled ? o.teacherInstructions : null, d.rationale = o.rationale ? o.rationale : null) : (d.teacherInstructions = null, d.rationale = null), e(d);
25
25
  });
26
- }, f = (e, t) => {
26
+ }, p = (e, t) => {
27
27
  let n = r(e), a = !0, o = 0;
28
28
  return !t || i(t) ? !1 : (n.forEach((e) => o += (e.images || []).length), t.answers && o === t.answers.length ? t.answers.forEach((e) => {
29
29
  let t = (n[e.containerIndex]?.images || []).indexOf(e.value);
30
30
  t >= 0 ? n[e.containerIndex].images.splice(t, 1) : a = !1;
31
31
  }) : a = !1, a);
32
- }, p = (e) => r(e.filter((e) => e.images && e.images.length)), m = (e, t) => {
33
- let { validation: { altResponses: n } } = e, { validation: { validResponse: { value: r } } } = e, i = f(r, t);
32
+ }, m = (e) => r(e.filter((e) => e.images && e.images.length)), h = (e, t) => {
33
+ let { validation: { altResponses: n } } = e, { validation: { validResponse: { value: r } } } = e, i = p(r, t);
34
34
  return !i && n && n.length && n.forEach((e) => {
35
- f(e.value, t) && (i = !0);
35
+ p(e.value, t) && (i = !0);
36
36
  }), i;
37
- }, h = (e, t, n) => {
37
+ }, g = (e, t, n) => {
38
38
  let r = t.filter((t) => t.containerIndex === e), i = r.filter((e) => !e.isCorrect), a = (n.value[e].images || []).length;
39
39
  if (r.length > a) {
40
40
  let e = r.length - a;
41
41
  return i.slice(-e);
42
42
  }
43
43
  return [];
44
- }, g = (e, n) => {
44
+ }, _ = (e, n) => {
45
45
  let { validation: { validResponse: r }, maxResponsePerZone: a } = e, o = 0, s = 0, c = 0;
46
46
  if (!n || i(n)) return 0;
47
47
  if (r.value.forEach((e) => c += (e.images || []).length), n.answers && n.answers.length) {
48
48
  let e = t(n.answers, r.value);
49
49
  o = e.filter((e) => e.isCorrect).length, s = e.filter((e) => !e.isCorrect).length, n.answers.forEach((t) => {
50
50
  if (a > 1) {
51
- let n = h(t.containerIndex, e, r);
51
+ let n = g(t.containerIndex, e, r);
52
52
  n.length && n.forEach((e) => {
53
53
  e.id === t.id && --o;
54
54
  });
@@ -56,12 +56,12 @@ var l = s("pie-elements:image-cloze-association:controller"), u = (t) => ({
56
56
  }), (!a || a <= 1) && (o -= s);
57
57
  } else o = 0;
58
58
  o = o < 0 ? 0 : o;
59
- let l = p(r.value), u = a > 1 ? c : (l || []).length, d = (o / u).toFixed(2);
59
+ let l = m(r.value), u = a > 1 ? c : (l || []).length, d = (o / u).toFixed(2);
60
60
  return parseFloat(d);
61
- }, _ = (e, t, n = {}) => {
62
- let r = c.enabled(e, n), i = m(e, t);
63
- return r ? g(e, t) : +!!i;
64
- }, v = (e, t, n) => {
61
+ }, v = (e, t, n = {}) => {
62
+ let r = c.enabled(e, n), i = h(e, t);
63
+ return r ? _(e, t) : +!!i;
64
+ }, y = (e, t, n) => {
65
65
  let r = [], { answers: i } = t || {}, a = e.validation?.validResponse?.value || [], o = a.length;
66
66
  if (r.push(`${o} placement container(s) defined in this question.`), i && i.length > 0) {
67
67
  r.push(`Student placed ${i.length} image(s) into placement containers.`);
@@ -81,23 +81,23 @@ var l = s("pie-elements:image-cloze-association:controller"), u = (t) => ({
81
81
  s.length > 0 && r.push(`${s.length} alternate response combination(s) are accepted for this question.`);
82
82
  let l = c.enabled(e, n) ? "partial scoring" : "all-or-nothing scoring";
83
83
  r.push(`Score calculated using ${l}.`);
84
- let u = _(e, t, n);
84
+ let u = v(e, t, n);
85
85
  return r.push(`Final score: ${u}.`), r;
86
- }, y = (e, t, n = {}) => new Promise((r) => {
87
- if (l("outcome..."), !t || i(t)) r({
86
+ }, b = (e, t, n = {}) => new Promise((r) => {
87
+ if (u("outcome..."), !t || i(t)) r({
88
88
  score: 0,
89
89
  empty: !0,
90
90
  traceLog: ["Student did not place any images into placement containers. Score is 0."]
91
91
  });
92
92
  else {
93
- let i = o(e), a = v(i, t, n);
93
+ let i = l(e), a = y(i, t, n);
94
94
  r({
95
- score: _(i, t, n),
95
+ score: v(i, t, n),
96
96
  empty: !1,
97
97
  traceLog: a
98
98
  });
99
99
  }
100
- }), b = (e, t) => new Promise((n) => {
100
+ }), x = (e, t) => new Promise((n) => {
101
101
  if (t.mode !== "evaluate" && t.role === "instructor") {
102
102
  let { validation: { valid_response: { value: t } } } = e, r = [];
103
103
  t && t.forEach((e, t) => {
@@ -112,11 +112,11 @@ var l = s("pie-elements:image-cloze-association:controller"), u = (t) => ({
112
112
  id: "1"
113
113
  });
114
114
  } else n(null);
115
- }), x = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), S = (e = {}, t = {}) => {
115
+ }), S = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), C = (e = {}, t = {}) => {
116
116
  let n = {};
117
117
  return ["teacherInstructions"].forEach((r) => {
118
- t[r]?.required && !x(e[r]) && (n[r] = "This field is required.");
118
+ t[r]?.required && !S(e[r]) && (n[r] = "This field is required.");
119
119
  }), n;
120
120
  };
121
121
  //#endregion
122
- export { b as createCorrectResponseSession, v as getLogTrace, g as getPartialScore, f as isResponseCorrect, d as model, u as normalize, y as outcome, S as validate };
122
+ export { x as createCorrectResponseSession, y as getLogTrace, _ as getPartialScore, p as isResponseCorrect, f as model, d as normalize, b as outcome, C as validate };
@@ -1,30 +1,30 @@
1
- import { camelizeKeys as e } from "humps";
1
+ import e from "humps";
2
2
  //#region src/delivery/utils-correctness.ts
3
- var t = (e, t) => (e || []).map((e) => ({
3
+ var { camelizeKeys: t } = e, n = (e, t) => (e || []).map((e) => ({
4
4
  ...e,
5
5
  isCorrect: (t[e.containerIndex] && t[e.containerIndex].images || []).includes(e.value)
6
- })), n = (e, t) => (t[e.containerIndex].images || []).filter((t) => t === e.value), r = (e, t) => {
7
- let r = e;
6
+ })), r = (e, t) => (t[e.containerIndex].images || []).filter((t) => t === e.value), i = (e, t) => {
7
+ let n = e;
8
8
  return e.forEach((i) => {
9
9
  let a = e.filter((e) => e.value === i.value && e.containerIndex === i.containerIndex);
10
10
  a.length > 1 && (a.shift(), a.forEach((e, i) => {
11
- r = (r || []).map((r) => {
12
- if (r.id === e.id) {
13
- let e = n(r, t);
11
+ n = (n || []).map((n) => {
12
+ if (n.id === e.id) {
13
+ let e = r(n, t);
14
14
  return {
15
- ...r,
15
+ ...n,
16
16
  isCorrect: e.length > i + 1
17
17
  };
18
18
  }
19
- return r;
19
+ return n;
20
20
  });
21
21
  }));
22
- }), r;
23
- }, i = (t, n) => {
24
- let { validResponse: { value: r } = {} } = e(n);
25
- return (r || []).reduce((e, n, r) => {
26
- let i = !!t.find((e) => e.containerIndex === r);
27
- return n.images = n.images || [], i ? e : [...e, {
22
+ }), n;
23
+ }, a = (e, n) => {
24
+ let { validResponse: { value: r } = {} } = t(n);
25
+ return (r || []).reduce((t, n, r) => {
26
+ let i = !!e.find((e) => e.containerIndex === r);
27
+ return n.images = n.images || [], i ? t : [...t, {
28
28
  id: `unanswered-${r}`,
29
29
  value: n.images[0] || "",
30
30
  containerIndex: r,
@@ -32,12 +32,12 @@ var t = (e, t) => (e || []).map((e) => ({
32
32
  hidden: !0
33
33
  }];
34
34
  }, []);
35
- }, a = (n, i) => {
36
- let { validResponse: { value: a }, altResponses: o } = e(i), s = r(t(n, a), a);
37
- return s.filter((e) => e.isCorrect).length < s.length && o && o.length ? (o || []).map((e) => {
38
- let i = e.value;
39
- return r(t(n, i), i);
35
+ }, o = (e, r) => {
36
+ let { validResponse: { value: a }, altResponses: o } = t(r), s = i(n(e, a), a);
37
+ return s.filter((e) => e.isCorrect).length < s.length && o && o.length ? (o || []).map((t) => {
38
+ let r = t.value;
39
+ return i(n(e, r), r);
40
40
  }).sort((e, t) => t.filter((e) => e.isCorrect).length - e.filter((e) => e.isCorrect).length)[0] : s;
41
41
  };
42
42
  //#endregion
43
- export { a as getAnswersCorrectness, i as getUnansweredAnswers };
43
+ export { o as getAnswersCorrectness, a as getUnansweredAnswers };