@pie-element/multiple-choice 13.2.2-next.5 → 13.3.0

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 (114) hide show
  1. package/CHANGELOG.json +1972 -0
  2. package/CHANGELOG.md +2738 -0
  3. package/LICENSE.md +5 -0
  4. package/PRINT.md +35 -0
  5. package/README.md +56 -0
  6. package/choice.png +0 -0
  7. package/configure/CHANGELOG.json +1387 -0
  8. package/configure/CHANGELOG.md +2080 -0
  9. package/configure/lib/defaults.js +203 -0
  10. package/configure/lib/defaults.js.map +1 -0
  11. package/configure/lib/index.js +202 -0
  12. package/configure/lib/index.js.map +1 -0
  13. package/configure/lib/main.js +484 -0
  14. package/configure/lib/main.js.map +1 -0
  15. package/configure/lib/utils.js +18 -0
  16. package/configure/lib/utils.js.map +1 -0
  17. package/configure/package.json +22 -0
  18. package/controller/CHANGELOG.json +527 -0
  19. package/controller/CHANGELOG.md +1405 -0
  20. package/controller/lib/defaults.js +33 -0
  21. package/controller/lib/defaults.js.map +1 -0
  22. package/controller/lib/index.js +288 -0
  23. package/controller/lib/index.js.map +1 -0
  24. package/controller/lib/utils.js +15 -0
  25. package/controller/lib/utils.js.map +1 -0
  26. package/controller/package.json +15 -0
  27. package/docs/config-schema.json +2993 -0
  28. package/docs/config-schema.json.md +2217 -0
  29. package/docs/demo/config.js +8 -0
  30. package/docs/demo/generate.js +61 -0
  31. package/docs/demo/index.html +1 -0
  32. package/docs/demo/session.js +7 -0
  33. package/docs/pie-schema.json +1332 -0
  34. package/docs/pie-schema.json.md +1015 -0
  35. package/lib/choice-input.js +383 -0
  36. package/lib/choice-input.js.map +1 -0
  37. package/lib/choice.js +192 -0
  38. package/lib/choice.js.map +1 -0
  39. package/lib/feedback-tick.js +134 -0
  40. package/lib/feedback-tick.js.map +1 -0
  41. package/lib/index.js +402 -0
  42. package/lib/index.js.map +1 -0
  43. package/lib/main.js +63 -0
  44. package/lib/main.js.map +1 -0
  45. package/lib/multiple-choice.js +397 -0
  46. package/lib/multiple-choice.js.map +1 -0
  47. package/lib/print.js +94 -0
  48. package/lib/print.js.map +1 -0
  49. package/lib/session-updater.js +37 -0
  50. package/lib/session-updater.js.map +1 -0
  51. package/module/configure.js +1 -0
  52. package/module/controller.js +3045 -0
  53. package/module/demo.js +86 -0
  54. package/module/element.js +1 -0
  55. package/module/index.html +21 -0
  56. package/module/manifest.json +14 -0
  57. package/module/print-demo.js +124 -0
  58. package/module/print.html +18 -0
  59. package/module/print.js +1 -0
  60. package/package.json +29 -89
  61. package/configure.js +0 -2
  62. package/controller.js +0 -1
  63. package/dist/author/defaults.d.ts +0 -205
  64. package/dist/author/defaults.js +0 -151
  65. package/dist/author/index.d.ts +0 -26
  66. package/dist/author/index.js +0 -119
  67. package/dist/author/main.d.ts +0 -34
  68. package/dist/author/main.js +0 -287
  69. package/dist/author/utils.d.ts +0 -9
  70. package/dist/author/utils.js +0 -7
  71. package/dist/browser/Radio-DZ5Wx5Zu.js +0 -9579
  72. package/dist/browser/Radio-DZ5Wx5Zu.js.map +0 -1
  73. package/dist/browser/author/index.js +0 -45648
  74. package/dist/browser/author/index.js.map +0 -1
  75. package/dist/browser/controller/index.js +0 -199
  76. package/dist/browser/controller/index.js.map +0 -1
  77. package/dist/browser/delivery/index.js +0 -251
  78. package/dist/browser/delivery/index.js.map +0 -1
  79. package/dist/browser/dist-BcIm7NXG.js +0 -111
  80. package/dist/browser/dist-BcIm7NXG.js.map +0 -1
  81. package/dist/browser/main-BE0cajBs.js +0 -2440
  82. package/dist/browser/main-BE0cajBs.js.map +0 -1
  83. package/dist/browser/multiple-choice.css +0 -2
  84. package/dist/browser/print/index.js +0 -43
  85. package/dist/browser/print/index.js.map +0 -1
  86. package/dist/controller/defaults.d.ts +0 -35
  87. package/dist/controller/defaults.js +0 -29
  88. package/dist/controller/index.d.ts +0 -65
  89. package/dist/controller/index.js +0 -124
  90. package/dist/controller/utils.d.ts +0 -10
  91. package/dist/controller/utils.js +0 -8
  92. package/dist/delivery/choice-input.d.ts +0 -44
  93. package/dist/delivery/choice-input.js +0 -272
  94. package/dist/delivery/choice.d.ts +0 -20
  95. package/dist/delivery/choice.js +0 -105
  96. package/dist/delivery/feedback-tick.d.ts +0 -20
  97. package/dist/delivery/feedback-tick.js +0 -104
  98. package/dist/delivery/index.d.ts +0 -37
  99. package/dist/delivery/index.js +0 -214
  100. package/dist/delivery/main.d.ts +0 -31
  101. package/dist/delivery/main.js +0 -51
  102. package/dist/delivery/multiple-choice.d.ts +0 -61
  103. package/dist/delivery/multiple-choice.js +0 -244
  104. package/dist/delivery/session-updater.d.ts +0 -10
  105. package/dist/delivery/session-updater.js +0 -9
  106. package/dist/index.d.ts +0 -1
  107. package/dist/index.iife.d.ts +0 -8
  108. package/dist/index.iife.js +0 -148
  109. package/dist/index.js +0 -2
  110. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -16
  111. package/dist/print/index.d.ts +0 -15
  112. package/dist/print/index.js +0 -43
  113. package/dist/runtime-support.d.ts +0 -12
  114. package/dist/runtime-support.js +0 -12
@@ -1,244 +0,0 @@
1
- import e from "../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
2
- import t from "./choice.js";
3
- import n from "react";
4
- import r from "prop-types";
5
- import * as i from "@pie-lib/render-ui";
6
- import { Collapsible as a, PreviewPrompt as o, color as s, transformDataHeadings as c } from "@pie-lib/render-ui";
7
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
8
- import d from "@pie-lib/correct-answer-toggle";
9
- import { styled as f } from "@mui/material/styles";
10
- import p from "@mui/material/Box";
11
- import m from "@pie-lib/translator";
12
- //#region src/delivery/multiple-choice.tsx
13
- function h(e) {
14
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
15
- }
16
- function g(e, t) {
17
- return !e || h(e) ? e : h(e.default) ? e.default : t && h(e[t]) ? e[t] : t && h(e[t]?.default) ? e[t].default : e;
18
- }
19
- var _ = g(o, "PreviewPrompt") || g(x.PreviewPrompt, "PreviewPrompt"), v = g(a, "Collapsible") || g(x.Collapsible, "Collapsible"), y = i, b = y.default, x = b && typeof b == "object" ? b : y, { translator: S } = m, C = f(p)({
20
- color: s.text(),
21
- backgroundColor: s.background(),
22
- "& *": { "-webkit-font-smoothing": "antialiased" },
23
- position: "relative",
24
- "& legend": { border: "none !important" }
25
- }), w = f("h2")(({ theme: e }) => ({
26
- display: "block",
27
- fontSize: "inherit",
28
- margin: "0",
29
- fontWeight: "normal",
30
- paddingBottom: e.spacing(2)
31
- })), T = f(p)(({ theme: e }) => ({ marginBottom: e.spacing(2) })), E = f(p)({
32
- display: "flex",
33
- flexDirection: "row",
34
- flexWrap: "wrap"
35
- }), D = f(p)({ display: "grid" }), O = f("fieldset")({
36
- border: "0px",
37
- padding: "0.01em 0 0 0",
38
- margin: "0px",
39
- minWidth: "0px"
40
- }), k = f("h3")({
41
- position: "absolute",
42
- left: "-10000px",
43
- top: "auto",
44
- width: "1px",
45
- height: "1px",
46
- overflow: "hidden"
47
- }), A = f("div")(({ theme: e }) => ({
48
- fontSize: e.typography.fontSize - 2,
49
- color: e.palette.error.main,
50
- paddingTop: e.spacing(1)
51
- })), j = class extends n.Component {
52
- static propTypes = {
53
- className: r.string,
54
- mode: r.oneOf([
55
- "gather",
56
- "view",
57
- "evaluate"
58
- ]),
59
- choiceMode: r.oneOf(["radio", "checkbox"]),
60
- keyMode: r.oneOf([
61
- "numbers",
62
- "letters",
63
- "none"
64
- ]),
65
- choices: r.array,
66
- partLabel: r.string,
67
- prompt: r.string,
68
- teacherInstructions: r.string,
69
- session: r.object,
70
- disabled: r.bool,
71
- onChoiceChanged: r.func,
72
- responseCorrect: r.bool,
73
- correctResponse: r.array,
74
- choicesLayout: r.oneOf([
75
- "vertical",
76
- "grid",
77
- "horizontal"
78
- ]),
79
- gridColumns: r.string,
80
- alwaysShowCorrect: r.bool,
81
- animationsDisabled: r.bool,
82
- language: r.string,
83
- selectedAnswerBackgroundColor: r.string,
84
- selectedAnswerStrokeColor: r.string,
85
- selectedAnswerStrokeWidth: r.string,
86
- hoverAnswerBackgroundColor: r.string,
87
- hoverAnswerStrokeColor: r.string,
88
- hoverAnswerStrokeWidth: r.string,
89
- onShowCorrectToggle: r.func,
90
- isSelectionButtonBelow: r.bool,
91
- minSelections: r.number,
92
- maxSelections: r.number,
93
- autoplayAudioEnabled: r.bool,
94
- customAudioButton: {
95
- playImage: r.string,
96
- pauseImage: r.string
97
- },
98
- options: r.object,
99
- baseHeadingLevel: r.number,
100
- includeSrHeading: r.bool
101
- };
102
- constructor(e) {
103
- super(e), this.state = {
104
- showCorrect: this.props.options && this.props.alwaysShowCorrect || !1,
105
- maxSelectionsErrorState: !1
106
- }, this.onToggle = this.onToggle.bind(this), this.groupName = `mc-group-${Math.random().toString(36).slice(2, 10)}`;
107
- }
108
- isSelected(e) {
109
- let t = this.props.session && this.props.session.value;
110
- return t && t.indexOf && t.indexOf(e) >= 0;
111
- }
112
- handleChange = (e) => {
113
- let { value: t, checked: n } = e.target, { maxSelections: r, onChoiceChanged: i, session: a } = this.props;
114
- a.value && a.value.length >= r && (this.setState({ maxSelectionsErrorState: n }), n) || i({
115
- value: t,
116
- selected: n,
117
- selector: "Mouse"
118
- });
119
- };
120
- onToggle = () => {
121
- this.props.mode === "evaluate" && this.setState({ showCorrect: !this.state.showCorrect }, () => {
122
- this.props.onShowCorrectToggle && this.props.onShowCorrectToggle();
123
- });
124
- };
125
- UNSAFE_componentWillReceiveProps(e) {
126
- !e.correctResponse && this.state.showCorrect !== !1 && this.setState({ showCorrect: !1 }, () => {
127
- this.props.onShowCorrectToggle && this.props.onShowCorrectToggle();
128
- }), e.options && e.alwaysShowCorrect && this.state.showCorrect !== !0 && this.setState({ showCorrect: !0 }, () => {
129
- this.props.onShowCorrectToggle && this.props.onShowCorrectToggle();
130
- });
131
- }
132
- indexToSymbol(e) {
133
- return this.props.keyMode === "numbers" ? `${e + 1}` : this.props.keyMode === "letters" ? String.fromCharCode(97 + e).toUpperCase() : "";
134
- }
135
- getCorrectness = (e = {}) => {
136
- let t = e.correct, n = this.isSelected(e.value);
137
- if (this.state.showCorrect) return t ? "correct" : void 0;
138
- if (t) return n ? "correct" : "incorrect";
139
- if (n) return "incorrect";
140
- };
141
- getChecked(e) {
142
- return this.props.options && this.props.alwaysShowCorrect || this.state.showCorrect && this.props.mode === "evaluate" ? e.correct || !1 : this.isSelected(e.value);
143
- }
144
- renderHeading() {
145
- let { mode: e, choiceMode: t, includeSrHeading: n, baseHeadingLevel: r, partLabel: i } = this.props;
146
- if (!(!i && n !== !1) || e !== "gather") return null;
147
- let a = r ? Math.min(6, r) : 2;
148
- return /* @__PURE__ */ l(k.withComponent(`h${a}`), { children: t === "radio" ? "Multiple Choice Question" : "Multiple Select Question" });
149
- }
150
- render() {
151
- let { mode: n, disabled: r, className: i, choices: a = [], choiceMode: o, gridColumns: s, partLabel: f, prompt: m, responseCorrect: h, teacherInstructions: g, alwaysShowCorrect: y, animationsDisabled: b, language: x, isSelectionButtonBelow: k, minSelections: j, maxSelections: M, autoplayAudioEnabled: N, session: P, customAudioButton: F, options: I, baseHeadingLevel: L } = this.props, { showCorrect: R, maxSelectionsErrorState: z } = this.state, B = n === "evaluate", V = B && !h, H = s > 1 ? { gridTemplateColumns: `repeat(${s}, 1fr)` } : void 0, U = P.value && P.value.length || 0, W = (() => {
152
- if (!L) return;
153
- let e = 1;
154
- return f && (e += 1), Math.min(6, L + e);
155
- })(), G = (e) => e && W ? c(e, W) : e, K = /* @__PURE__ */ l(_, {
156
- tagName: "div",
157
- className: "prompt",
158
- defaultClassName: "teacher-instructions",
159
- prompt: g
160
- }), q = () => j && M ? j === M ? S.t("translation:multipleChoice:minmaxSelections_equal", {
161
- lng: x,
162
- minSelections: j
163
- }) : S.t("translation:multipleChoice:minmaxSelections_range", {
164
- lng: x,
165
- minSelections: j,
166
- maxSelections: M
167
- }) : j ? S.t("translation:multipleChoice:minSelections", {
168
- lng: x,
169
- minSelections: j
170
- }) : "", J = this.props.choicesLayout === "grid" ? D : this.props.choicesLayout === "horizontal" ? E : p;
171
- return /* @__PURE__ */ u(C, {
172
- id: "main-container",
173
- className: e(i, "multiple-choice"),
174
- children: [
175
- f && /* @__PURE__ */ l(w, {
176
- as: L ? `h${Math.min(6, L + 1)}` : "h2",
177
- children: f
178
- }),
179
- this.renderHeading(),
180
- g && /* @__PURE__ */ l(T, { children: b ? K : /* @__PURE__ */ l(v, {
181
- labels: {
182
- hidden: "Show Teacher Instructions",
183
- visible: "Hide Teacher Instructions"
184
- },
185
- children: K
186
- }) }),
187
- /* @__PURE__ */ u(O, {
188
- role: o === "radio" ? "radiogroup" : "group",
189
- children: [
190
- /* @__PURE__ */ l(_, {
191
- className: "prompt",
192
- defaultClassName: "prompt",
193
- prompt: G(m),
194
- tagName: "legend",
195
- autoplayAudioEnabled: N,
196
- customAudioButton: F
197
- }),
198
- !(I && y) && /* @__PURE__ */ l(d, {
199
- show: V,
200
- toggled: R,
201
- onToggle: this.onToggle.bind(this),
202
- language: x
203
- }),
204
- /* @__PURE__ */ l(J, {
205
- style: H,
206
- children: a.map((e, n) => /* @__PURE__ */ l(t, {
207
- choicesLayout: this.props.choicesLayout,
208
- selectedAnswerBackgroundColor: this.props.selectedAnswerBackgroundColor,
209
- selectedAnswerStrokeColor: this.props.selectedAnswerStrokeColor,
210
- selectedAnswerStrokeWidth: this.props.selectedAnswerStrokeWidth,
211
- hoverAnswerBackgroundColor: this.props.hoverAnswerBackgroundColor,
212
- hoverAnswerStrokeColor: this.props.hoverAnswerStrokeColor,
213
- hoverAnswerStrokeWidth: this.props.hoverAnswerStrokeWidth,
214
- gridColumns: s,
215
- choice: e,
216
- index: n,
217
- choicesLength: a.length,
218
- showCorrect: R,
219
- isEvaluateMode: B,
220
- choiceMode: o,
221
- disabled: r,
222
- tagName: this.groupName,
223
- onChoiceChanged: this.handleChange,
224
- hideTick: e.hideTick,
225
- checked: this.getChecked(e),
226
- correctness: B ? this.getCorrectness(e) : void 0,
227
- displayKey: this.indexToSymbol(n),
228
- isSelectionButtonBelow: k
229
- }, `choice-${n}`))
230
- })
231
- ]
232
- }),
233
- o === "checkbox" && U < j && /* @__PURE__ */ l(A, { children: q() }),
234
- o === "checkbox" && z && /* @__PURE__ */ l(A, { children: S.t(`translation:multipleChoice:maxSelections_${M === 1 ? "one" : "other"}`, {
235
- lng: x,
236
- maxSelections: M
237
- }) })
238
- ]
239
- });
240
- }
241
- };
242
- j.defaultProps = { session: { value: [] } };
243
- //#endregion
244
- export { j as default };
@@ -1,10 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/multiple-choice/src/session-updater.js
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- export declare function updateSessionValue(session: any, choiceMode: any, data: any): void;
10
- export declare function updateSessionMetadata(session: any, metadata: any): void;
@@ -1,9 +0,0 @@
1
- //#region src/delivery/session-updater.ts
2
- function e(e, t, n) {
3
- e.value = e.value || [], t === "checkbox" && (n.selected ? e.value = Array.from(new Set([...e.value, n.value])) : e.value = e.value.filter((e) => e !== n.value)), t === "radio" && (n.selected ? e.value = [n.value] : e.value = []), e.selector = n.selector;
4
- }
5
- function t(e, t) {
6
- e.audioStartTime = e.audioStartTime || t.audioStartTime, e.audioEndTime = e.audioEndTime || t.audioEndTime, !e.waitTime && e.audioStartTime && e.audioEndTime && (e.waitTime = e.audioEndTime - e.audioStartTime);
7
- }
8
- //#endregion
9
- export { t as updateSessionMetadata, e as updateSessionValue };
package/dist/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export { default } from './delivery/index.js';
@@ -1,8 +0,0 @@
1
- /**
2
- * IIFE entry point for multiple-choice element
3
- * This file is only used for IIFE builds and includes auto-registration
4
- *
5
- * @sync-generated - Auto-generated during sync from pie-elements
6
- */
7
- import Element from './index.js';
8
- export default Element;