@pie-element/placement-ordering 14.1.1 → 14.1.2-next.1

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 (108) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/author/choice-editor.d.ts +39 -0
  4. package/dist/author/choice-editor.js +156 -0
  5. package/dist/author/choice-tile.d.ts +40 -0
  6. package/dist/author/choice-tile.js +132 -0
  7. package/dist/author/defaults.d.ts +213 -0
  8. package/dist/author/defaults.js +159 -0
  9. package/dist/author/design.d.ts +21 -0
  10. package/dist/author/design.js +273 -0
  11. package/dist/author/help.d.ts +11 -0
  12. package/dist/author/index.d.ts +45 -0
  13. package/dist/author/index.js +85 -0
  14. package/dist/author/utils.d.ts +15 -0
  15. package/dist/author/utils.js +62 -0
  16. package/dist/browser/author/index.js +40697 -0
  17. package/dist/browser/author/index.js.map +1 -0
  18. package/dist/browser/browser-Dbw2uHQ7.js +372 -0
  19. package/dist/browser/browser-Dbw2uHQ7.js.map +1 -0
  20. package/dist/browser/controller/index.js +242 -0
  21. package/dist/browser/controller/index.js.map +1 -0
  22. package/dist/browser/delivery/index.js +1035 -0
  23. package/dist/browser/delivery/index.js.map +1 -0
  24. package/dist/browser/dist-D9ARZhQk.js +1426 -0
  25. package/dist/browser/dist-D9ARZhQk.js.map +1 -0
  26. package/dist/browser/drag-provider-DSf9QLEN.js +10548 -0
  27. package/dist/browser/drag-provider-DSf9QLEN.js.map +1 -0
  28. package/dist/browser/placement-ordering.css +2 -0
  29. package/dist/controller/defaults.d.ts +31 -0
  30. package/dist/controller/defaults.js +25 -0
  31. package/dist/controller/index.d.ts +29 -0
  32. package/dist/controller/index.js +123 -0
  33. package/dist/controller/scoring.d.ts +27 -0
  34. package/dist/controller/scoring.js +30 -0
  35. package/dist/delivery/index.d.ts +26 -0
  36. package/dist/delivery/index.js +70 -0
  37. package/dist/delivery/main.d.ts +19 -0
  38. package/dist/delivery/main.js +22 -0
  39. package/dist/delivery/ordering.d.ts +18 -0
  40. package/dist/delivery/ordering.js +93 -0
  41. package/dist/delivery/placement-ordering.d.ts +28 -0
  42. package/dist/delivery/placement-ordering.js +213 -0
  43. package/dist/delivery/tile.d.ts +28 -0
  44. package/dist/delivery/tile.js +165 -0
  45. package/dist/delivery/tiler.d.ts +42 -0
  46. package/dist/delivery/tiler.js +89 -0
  47. package/dist/delivery/utils.d.ts +9 -0
  48. package/dist/delivery/utils.js +8 -0
  49. package/dist/index.d.ts +1 -0
  50. package/dist/index.iife.d.ts +8 -0
  51. package/dist/index.iife.js +152 -0
  52. package/dist/index.js +2 -0
  53. package/dist/runtime-support.d.ts +12 -0
  54. package/dist/runtime-support.js +12 -0
  55. package/package.json +90 -22
  56. package/CHANGELOG.json +0 -1312
  57. package/CHANGELOG.md +0 -2432
  58. package/LICENSE.md +0 -5
  59. package/README.md +0 -57
  60. package/configure/CHANGELOG.json +0 -952
  61. package/configure/CHANGELOG.md +0 -2127
  62. package/configure/lib/choice-editor.js +0 -252
  63. package/configure/lib/choice-editor.js.map +0 -1
  64. package/configure/lib/choice-tile.js +0 -205
  65. package/configure/lib/choice-tile.js.map +0 -1
  66. package/configure/lib/defaults.js +0 -211
  67. package/configure/lib/defaults.js.map +0 -1
  68. package/configure/lib/design.js +0 -427
  69. package/configure/lib/design.js.map +0 -1
  70. package/configure/lib/help.js +0 -14
  71. package/configure/lib/help.js.map +0 -1
  72. package/configure/lib/index.js +0 -155
  73. package/configure/lib/index.js.map +0 -1
  74. package/configure/lib/utils.js +0 -108
  75. package/configure/lib/utils.js.map +0 -1
  76. package/configure/package.json +0 -26
  77. package/controller/CHANGELOG.json +0 -517
  78. package/controller/CHANGELOG.md +0 -1518
  79. package/controller/lib/defaults.js +0 -29
  80. package/controller/lib/defaults.js.map +0 -1
  81. package/controller/lib/index.js +0 -285
  82. package/controller/lib/index.js.map +0 -1
  83. package/controller/lib/scoring.js +0 -109
  84. package/controller/lib/scoring.js.map +0 -1
  85. package/controller/package.json +0 -15
  86. package/docs/config-schema.json +0 -2964
  87. package/docs/config-schema.json.md +0 -2190
  88. package/docs/demo/config.js +0 -8
  89. package/docs/demo/generate.js +0 -50
  90. package/docs/demo/index.html +0 -1
  91. package/docs/demo/session.js +0 -7
  92. package/docs/pie-schema.json +0 -1613
  93. package/docs/pie-schema.json.md +0 -973
  94. package/icon.png +0 -0
  95. package/lib/index.js +0 -122
  96. package/lib/index.js.map +0 -1
  97. package/lib/main.js +0 -32
  98. package/lib/main.js.map +0 -1
  99. package/lib/ordering.js +0 -165
  100. package/lib/ordering.js.map +0 -1
  101. package/lib/placement-ordering.js +0 -419
  102. package/lib/placement-ordering.js.map +0 -1
  103. package/lib/tile.js +0 -259
  104. package/lib/tile.js.map +0 -1
  105. package/lib/tiler.js +0 -165
  106. package/lib/tiler.js.map +0 -1
  107. package/lib/utils.js +0 -18
  108. package/lib/utils.js.map +0 -1
@@ -0,0 +1,1035 @@
1
+ import { C as e, _ as t, b as n, g as r, k as i, l as a, r as o, t as s, u as c, v as l } from "../browser-Dbw2uHQ7.js";
2
+ import { Mt as u, Nt as d, T as f, c as p, ct as m, dt as h, ft as g, l as _, lt as v, mt as y, n as b, s as x, st as S, t as C, u as ee, ut as te, v as w, yt as T } from "../drag-provider-DSf9QLEN.js";
3
+ import { t as E } from "../dist-D9ARZhQk.js";
4
+ import D, { createElement as O, useRef as ne } from "react";
5
+ import { createRoot as re } from "react-dom/client";
6
+ import ie from "react-dom";
7
+ import { jsx as k, jsxs as A } from "react/jsx-runtime";
8
+ //#region ../../shared/player-events/dist/index.js
9
+ var j = /* @__PURE__ */ i(s(), 1);
10
+ (class e extends CustomEvent {
11
+ static {
12
+ this.TYPE = "model-set";
13
+ }
14
+ constructor(t, n, r) {
15
+ super(e.TYPE, {
16
+ bubbles: !0,
17
+ composed: !0,
18
+ detail: {
19
+ complete: n,
20
+ component: t,
21
+ hasModel: r
22
+ }
23
+ }), this.component = t, this.complete = n;
24
+ }
25
+ });
26
+ var ae = class e extends CustomEvent {
27
+ static {
28
+ this.TYPE = "session-changed";
29
+ }
30
+ constructor(t, n) {
31
+ super(e.TYPE, {
32
+ bubbles: !0,
33
+ composed: !0,
34
+ detail: {
35
+ complete: n,
36
+ component: t
37
+ }
38
+ }), this.component = t, this.complete = n;
39
+ }
40
+ }, M = /* @__PURE__ */ i(u(), 1), oe = ({ bgFill: e, fgFill: t }) => /* @__PURE__ */ A("svg", {
41
+ preserveAspectRatio: "xMinYMin meet",
42
+ version: "1.1",
43
+ viewBox: "-283 359 34 35",
44
+ style: { enableBackground: "new -283 359 34 35" },
45
+ children: [
46
+ /* @__PURE__ */ k("circle", {
47
+ cx: "-266",
48
+ cy: "375.9",
49
+ r: "14",
50
+ fill: e
51
+ }),
52
+ /* @__PURE__ */ k("path", {
53
+ d: "M-280.5,375.9c0-8,6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5s-6.5,14.5-14.5,14.5S-280.5,383.9-280.5,375.9z\n M-279.5,375.9c0,7.4,6.1,13.5,13.5,13.5c7.4,0,13.5-6.1,13.5-13.5s-6.1-13.5-13.5-13.5C-273.4,362.4-279.5,368.5-279.5,375.9z",
54
+ fill: e
55
+ }),
56
+ /* @__PURE__ */ k("polygon", {
57
+ points: "-265.4,383.1 -258.6,377.2 -261.2,374.2 -264.3,376.9 -268.9,368.7 -272.4,370.6",
58
+ fill: t
59
+ })
60
+ ]
61
+ });
62
+ oe.propTypes = {
63
+ bgFill: M.default.string.isRequired,
64
+ fgFill: M.default.string.isRequired
65
+ };
66
+ var se = ({ bgFill: e, fgFill: t, borderFill: n }) => /* @__PURE__ */ A("svg", {
67
+ preserveAspectRatio: "xMinYMin meet",
68
+ version: "1.1",
69
+ viewBox: "-129.5 127 34 35",
70
+ style: { enableBackground: "new -129.5 127 34 35" },
71
+ children: [
72
+ /* @__PURE__ */ k("path", {
73
+ style: {
74
+ fill: "#D0CAC5",
75
+ stroke: "#E6E3E0",
76
+ strokeWidth: .75,
77
+ strokeMiterlimit: 10
78
+ },
79
+ d: "M-112.9,160.4c-8.5,0-15.5-6.9-15.5-15.5c0-8.5,6.9-15.5,15.5-15.5s15.5,6.9,15.5,15.5\n C-97.4,153.5-104.3,160.4-112.9,160.4z"
80
+ }),
81
+ /* @__PURE__ */ k("path", {
82
+ style: {
83
+ fill: "#B3ABA4",
84
+ stroke: "#CDC7C2",
85
+ strokeWidth: .5,
86
+ strokeMiterlimit: 10
87
+ },
88
+ d: "M-113.2,159c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-105.2,159-113.2,159z"
89
+ }),
90
+ /* @__PURE__ */ k("circle", {
91
+ cx: "-114.2",
92
+ cy: "143.5",
93
+ r: "14",
94
+ fill: e
95
+ }),
96
+ /* @__PURE__ */ k("path", {
97
+ d: "M-114.2,158c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-106.2,158-114.2,158z\n M-114.2,130c-7.4,0-13.5,6.1-13.5,13.5s6.1,13.5,13.5,13.5s13.5-6.1,13.5-13.5S-106.8,130-114.2,130z",
98
+ fill: n
99
+ }),
100
+ /* @__PURE__ */ k("polygon", {
101
+ points: "-114.8,150.7 -121.6,144.8 -119,141.8 -115.9,144.5 -111.3,136.3 -107.8,138.2",
102
+ fill: t
103
+ })
104
+ ]
105
+ });
106
+ se.propTypes = {
107
+ bgFill: M.default.string.isRequired,
108
+ fgFill: M.default.string.isRequired,
109
+ borderFill: M.default.string.isRequired
110
+ };
111
+ var ce = y("div")(({ size: e }) => ({
112
+ width: e || "25px",
113
+ height: e || "25px"
114
+ })), N = ({ open: e, size: t }) => /* @__PURE__ */ k(ce, {
115
+ size: t,
116
+ children: e ? /* @__PURE__ */ k(oe, {
117
+ bgFill: "#bce2ff",
118
+ fgFill: "#1a9cff"
119
+ }) : /* @__PURE__ */ k(se, {
120
+ bgFill: "white",
121
+ fgFill: "#1a9cff",
122
+ borderFill: "#bce2ff"
123
+ })
124
+ });
125
+ N.propTypes = {
126
+ open: M.default.bool,
127
+ size: M.default.string
128
+ }, N.defaultProps = { open: !1 };
129
+ //#endregion
130
+ //#region ../../lib-react/correct-answer-toggle/dist/expander.js
131
+ var le = "height ease-in 300ms, opacity ease-in 300ms", ue = y("div")(() => ({
132
+ position: "relative",
133
+ height: 0,
134
+ overflow: "hidden",
135
+ display: "flex",
136
+ visibility: "hidden",
137
+ width: 0,
138
+ "&.enter": {
139
+ transition: le,
140
+ opacity: 1,
141
+ height: "auto",
142
+ width: "auto",
143
+ visibility: "visible",
144
+ minHeight: "25px"
145
+ },
146
+ "&.enter-done": {
147
+ height: "auto",
148
+ visibility: "visible",
149
+ width: "auto",
150
+ minHeight: "25px"
151
+ },
152
+ "&.exit": {
153
+ transition: le,
154
+ opacity: 0,
155
+ height: 0,
156
+ visibility: "visible",
157
+ width: 0
158
+ },
159
+ "&.exit-done": {
160
+ opacity: 0,
161
+ visibility: "hidden",
162
+ height: 0,
163
+ width: 0
164
+ }
165
+ })), de = (e) => {
166
+ let { show: t, children: n, className: r } = e, i = ne(null);
167
+ return /* @__PURE__ */ k(m, {
168
+ nodeRef: i,
169
+ in: t,
170
+ appear: !0,
171
+ mountOnEnter: !1,
172
+ timeout: 300,
173
+ classNames: {
174
+ enter: "enter",
175
+ enterDone: "enter-done",
176
+ exit: "exit",
177
+ exitDone: "exit-done"
178
+ },
179
+ children: /* @__PURE__ */ k(ue, {
180
+ ref: i,
181
+ className: r,
182
+ children: n
183
+ })
184
+ });
185
+ };
186
+ de.propTypes = {
187
+ show: M.default.bool.isRequired,
188
+ className: M.default.string,
189
+ children: M.default.oneOfType([M.default.arrayOf(M.default.node), M.default.node]).isRequired
190
+ };
191
+ //#endregion
192
+ //#region ../../lib-react/correct-answer-toggle/dist/index.js
193
+ function P(e) {
194
+ return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
195
+ }
196
+ function F(e, t) {
197
+ return !e || P(e) ? e : P(e.default) ? e.default : t && P(e[t]) ? e[t] : t && P(e[t]?.default) ? e[t].default : e;
198
+ }
199
+ var fe = F(_, "Readable") || F(pe.Readable, "Readable"), I = b, L = I.default, pe = L && typeof L == "object" ? L : I, { translator: R } = E, me = {
200
+ WebkitTouchCallout: "none",
201
+ WebkitUserSelect: "none",
202
+ KhtmlUserSelect: "none",
203
+ MozUserSelect: "none",
204
+ msUserSelect: "none",
205
+ userSelect: "none"
206
+ }, he = y("div")(() => ({
207
+ width: "100%",
208
+ cursor: "pointer"
209
+ })), ge = y("div")(() => ({
210
+ margin: "0 auto",
211
+ textAlign: "center",
212
+ display: "flex"
213
+ })), _e = y("div")(() => ({
214
+ width: "fit-content",
215
+ minWidth: "140px",
216
+ alignSelf: "center",
217
+ verticalAlign: "middle",
218
+ color: `var(--correct-answer-toggle-label-color, ${v.text()})`,
219
+ fontWeight: "normal",
220
+ ...me
221
+ })), z = y("div")(() => ({
222
+ position: "absolute",
223
+ width: "25px",
224
+ "&.enter": { opacity: "0" },
225
+ "&.enter-active": {
226
+ opacity: "1",
227
+ transition: "opacity 0.3s ease-in"
228
+ },
229
+ "&.exit": { opacity: "1" },
230
+ "&.exit-active": {
231
+ opacity: "0",
232
+ transition: "opacity 0.3s ease-in"
233
+ }
234
+ })), ve = y("div")(() => ({
235
+ width: "25px",
236
+ marginRight: "5px",
237
+ display: "flex",
238
+ alignItems: "center"
239
+ })), ye = class e extends D.Component {
240
+ static propTypes = {
241
+ onToggle: M.default.func,
242
+ toggled: M.default.bool,
243
+ show: M.default.bool,
244
+ hideMessage: M.default.string,
245
+ showMessage: M.default.string,
246
+ className: M.default.string,
247
+ language: M.default.string
248
+ };
249
+ static defaultProps = {
250
+ showMessage: "Show correct answer",
251
+ hideMessage: "Hide correct answer",
252
+ show: !1,
253
+ toggled: !1
254
+ };
255
+ constructor(t) {
256
+ super(t), this.state = { show: t.show }, this.openIconRef = D.createRef(), this.closedIconRef = D.createRef(), e.defaultProps = {
257
+ ...e.defaultProps,
258
+ showMessage: R.t("common:showCorrectAnswer", { lng: t.language }),
259
+ hideMessage: R.t("common:hideCorrectAnswer", { lng: t.language })
260
+ };
261
+ }
262
+ onClick() {
263
+ this.props.onToggle(!this.props.toggled);
264
+ }
265
+ onTouch(e) {
266
+ e.preventDefault(), this.props.onToggle(!this.props.toggled);
267
+ }
268
+ UNSAFE_componentWillReceiveProps(t) {
269
+ this.setState({ show: t.show }), t.language !== this.props?.language && (e.defaultProps = {
270
+ ...e.defaultProps,
271
+ showMessage: R.t("common:showCorrectAnswer", { lng: t.language }),
272
+ hideMessage: R.t("common:hideCorrectAnswer", { lng: t.language })
273
+ });
274
+ }
275
+ render() {
276
+ let { className: e, toggled: t, hideMessage: n, showMessage: r } = this.props;
277
+ return /* @__PURE__ */ k(he, {
278
+ className: e,
279
+ children: /* @__PURE__ */ k(de, {
280
+ show: this.state.show,
281
+ children: /* @__PURE__ */ A(ge, {
282
+ onClick: this.onClick.bind(this),
283
+ onTouchEnd: this.onTouch.bind(this),
284
+ children: [/* @__PURE__ */ A(ve, { children: [/* @__PURE__ */ k(m, {
285
+ nodeRef: this.openIconRef,
286
+ timeout: 400,
287
+ in: t,
288
+ exit: !t,
289
+ classNames: {
290
+ enter: "enter",
291
+ enterActive: "enter-active",
292
+ exit: "exit",
293
+ exitActive: "exit-active"
294
+ },
295
+ children: /* @__PURE__ */ k(z, {
296
+ ref: this.openIconRef,
297
+ children: /* @__PURE__ */ k(N, { open: t }, "correct-open")
298
+ })
299
+ }), /* @__PURE__ */ k(m, {
300
+ nodeRef: this.closedIconRef,
301
+ timeout: 5e3,
302
+ in: !t,
303
+ exit: t,
304
+ classNames: {
305
+ enter: "enter",
306
+ enterActive: "enter-active",
307
+ exit: "exit",
308
+ exitActive: "exit-active"
309
+ },
310
+ children: /* @__PURE__ */ k(z, {
311
+ ref: this.closedIconRef,
312
+ children: /* @__PURE__ */ k(N, { open: t }, "correct-closed")
313
+ })
314
+ })] }), /* @__PURE__ */ k(fe, {
315
+ false: !0,
316
+ children: /* @__PURE__ */ k(_e, {
317
+ "aria-hidden": !this.state.show,
318
+ children: t ? n : r
319
+ })
320
+ })]
321
+ })
322
+ })
323
+ });
324
+ }
325
+ };
326
+ //#endregion
327
+ //#region ../../lib-react/drag/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js
328
+ function B(e) {
329
+ var t, n, r = "";
330
+ if (typeof e == "string" || typeof e == "number") r += e;
331
+ else if (typeof e == "object") if (Array.isArray(e)) {
332
+ var i = e.length;
333
+ for (t = 0; t < i; t++) e[t] && (n = B(e[t])) && (r && (r += " "), r += n);
334
+ } else for (n in e) e[n] && (r && (r += " "), r += n);
335
+ return r;
336
+ }
337
+ function V() {
338
+ for (var e, t, n = 0, r = "", i = arguments.length; n < i; n++) (e = arguments[n]) && (t = B(e)) && (r && (r += " "), r += t);
339
+ return r;
340
+ }
341
+ //#endregion
342
+ //#region ../../lib-react/drag/dist/placeholder.js
343
+ var be = y("div")(({ theme: e }) => ({
344
+ "&.placeholder": {
345
+ WebkitTouchCallout: "none",
346
+ WebkitUserSelect: "none",
347
+ KhtmlUserSelect: "none",
348
+ MozUserSelect: "none",
349
+ MsUserSelect: "none",
350
+ userSelect: "none",
351
+ width: "100%",
352
+ height: "100%",
353
+ background: v.white(),
354
+ transition: "background-color 200ms linear, border-color 200ms linear",
355
+ boxSizing: "border-box",
356
+ display: "grid",
357
+ gridRowGap: e.spacing(1),
358
+ gridColumnGap: e.spacing(1),
359
+ padding: e.spacing(1),
360
+ border: `2px dashed ${v.black()}`
361
+ },
362
+ "&.disabled": {
363
+ boxShadow: "none",
364
+ background: e.palette.background.paper
365
+ },
366
+ "&.over": {
367
+ border: `1px solid ${T[500]}`,
368
+ backgroundColor: `${T[300]}`
369
+ },
370
+ "&.board": {
371
+ padding: e.spacing(1),
372
+ display: "flex",
373
+ flexWrap: "wrap",
374
+ alignItems: "center",
375
+ minHeight: "100px",
376
+ justifyContent: "center",
377
+ overflow: "hidden",
378
+ touchAction: "none",
379
+ backgroundColor: v.backgroundDark()
380
+ },
381
+ "&.categorizeBoard": {
382
+ padding: e.spacing(.5),
383
+ display: "flex",
384
+ flexWrap: "wrap",
385
+ alignItems: "center",
386
+ minHeight: "100px",
387
+ justifyContent: "center",
388
+ overflow: "hidden",
389
+ touchAction: "none",
390
+ backgroundColor: v.backgroundDark()
391
+ },
392
+ "&.verticalPool": {
393
+ display: "flex",
394
+ flexFlow: "column wrap"
395
+ }
396
+ })), H = (e) => {
397
+ let { children: t, className: n, isOver: r, type: i, grid: a, disabled: o, choiceBoard: s, isCategorize: c, isVerticalPool: l, minHeight: u, extraStyles: d } = e, f = V("placeholder", o && "disabled", r && "over", i, n), p = {};
398
+ if (a && a.columns && (p.gridTemplateColumns = `repeat(${a.columns}, 1fr)`), a && a.rows) {
399
+ let e = a.rowsRepeatValue || "1fr";
400
+ p.gridTemplateRows = `repeat(${a.rows}, ${e})`;
401
+ }
402
+ i === "choice" && (p.border = `1px solid ${v.borderLight()}`, p.background = v.backgroundDark());
403
+ let m = c ? "categorizeBoard" : "board";
404
+ return /* @__PURE__ */ k(be, {
405
+ style: {
406
+ ...p,
407
+ minHeight: u,
408
+ ...d
409
+ },
410
+ className: V(s ? m : f, l && "verticalPool"),
411
+ children: t
412
+ });
413
+ };
414
+ H.propTypes = {
415
+ choiceBoard: M.default.bool,
416
+ grid: M.default.shape({
417
+ columns: M.default.number,
418
+ rows: M.default.number,
419
+ rowsRepeatValue: M.default.string
420
+ }),
421
+ children: M.default.oneOfType([M.default.arrayOf(M.default.node), M.default.node]).isRequired,
422
+ className: M.default.string,
423
+ isOver: M.default.bool,
424
+ index: M.default.number,
425
+ type: M.default.string,
426
+ disabled: M.default.bool,
427
+ isCategorize: M.default.bool,
428
+ isVerticalPool: M.default.bool,
429
+ minHeight: M.default.number
430
+ };
431
+ //#endregion
432
+ //#region src/delivery/tile.tsx
433
+ var xe = (0, j.default)("pie-elements:placement-ordering:tile"), Se = y("div")(({ theme: e }) => ({
434
+ width: "100%",
435
+ fontSize: e.typography.fontSize + 4,
436
+ textAlign: "center",
437
+ color: `rgba(${e.palette.common.black}, 0.6)`
438
+ })), U = ({ type: e, index: t, isOver: n, disabled: r }) => /* @__PURE__ */ k(H, {
439
+ type: e,
440
+ isOver: n,
441
+ disabled: r,
442
+ children: e === "target" && t !== void 0 && /* @__PURE__ */ k(Se, { children: t })
443
+ });
444
+ U.propTypes = {
445
+ type: M.default.string,
446
+ index: M.default.number,
447
+ isOver: M.default.bool,
448
+ disabled: M.default.bool
449
+ };
450
+ var Ce = y("div")(({ theme: e, isDragging: t, isOver: n, disabled: r, outcome: i, label: a, type: o }) => ({
451
+ cursor: r ? "not-allowed" : "grab",
452
+ width: "100%",
453
+ height: "100%",
454
+ padding: "10px",
455
+ boxSizing: "border-box",
456
+ overflow: "hidden",
457
+ border: o === "choice" || o === "target" ? `1px solid ${e.palette.grey[400]}` : "1px solid transparent",
458
+ backgroundColor: o === "choice" || o === "target" ? v.background() : "transparent",
459
+ transition: o === "choice" || o === "target" ? "background-color 150ms ease, border-color 150ms ease, opacity 150ms ease" : "none",
460
+ pointerEvents: "none",
461
+ userSelect: "none",
462
+ ...(o === "choice" || o === "target") && { "&:hover": {
463
+ backgroundColor: r ? v.background() : v.secondary(),
464
+ borderColor: r ? e.palette.grey[400] : e.palette.primary.main,
465
+ transform: r ? "none" : "scale(1.02)"
466
+ } },
467
+ ...(o === "choice" || o === "target") && n && !r && {
468
+ opacity: .4,
469
+ backgroundColor: v.primaryLight(),
470
+ borderColor: e.palette.primary.main,
471
+ borderStyle: "dashed",
472
+ transform: "scale(1.05)"
473
+ },
474
+ ...(o === "choice" || o === "target") && t && !r && {
475
+ opacity: .6,
476
+ backgroundColor: v.secondaryLight(),
477
+ transform: "scale(1.05) rotate(2deg)",
478
+ boxShadow: "0 8px 16px rgba(0,0,0,0.2)",
479
+ cursor: "grabbing"
480
+ },
481
+ ...(o === "choice" || o === "target") && r && {
482
+ cursor: "not-allowed",
483
+ "&:hover": {
484
+ backgroundColor: v.background(),
485
+ transform: "none"
486
+ }
487
+ },
488
+ ...(o === "choice" || o === "target") && i === "incorrect" && { border: `1px solid ${v.incorrect()}` },
489
+ ...(o === "choice" || o === "target") && i === "correct" && { border: `1px solid ${v.correct()}` },
490
+ ...!a && {
491
+ border: "none",
492
+ "&:hover": { backgroundColor: "unset" }
493
+ }
494
+ })), we = (e) => {
495
+ let { type: t, isDragging: n, empty: r, isOver: i, label: a, disabled: o, outcome: s, guideIndex: c } = e;
496
+ return r ? /* @__PURE__ */ k(U, {
497
+ type: t,
498
+ index: c,
499
+ isOver: i,
500
+ disabled: o
501
+ }) : /* @__PURE__ */ k(Ce, {
502
+ type: t,
503
+ isDragging: n,
504
+ isOver: i,
505
+ disabled: o,
506
+ outcome: s,
507
+ label: a,
508
+ dangerouslySetInnerHTML: { __html: a }
509
+ });
510
+ }, W = (e) => {
511
+ let { label: t, type: n, id: r, empty: i, disabled: a, outcome: o, index: s, guideIndex: c, instanceId: l, draggable: u, tileIndex: d } = e, f = `tile-${n}-${r ?? "empty"}-${d}-${l}`, p = `drop-${n}-${r ?? "empty"}-${d}-${l}`, { attributes: m, listeners: _, setNodeRef: v, transform: y, isDragging: b } = h({
512
+ id: f,
513
+ data: {
514
+ id: r,
515
+ type: n,
516
+ instanceId: l,
517
+ value: t,
518
+ index: s
519
+ },
520
+ disabled: !u || a
521
+ }), { setNodeRef: x, isOver: S } = g({
522
+ id: p,
523
+ data: {
524
+ id: r,
525
+ type: n,
526
+ instanceId: l,
527
+ value: t,
528
+ index: s
529
+ },
530
+ disabled: b
531
+ }), C = D.useRef(null);
532
+ return D.useEffect(() => {
533
+ let e = C.current, t = (e) => {
534
+ e.preventDefault();
535
+ };
536
+ return e && e.addEventListener("touchstart", t, { passive: !1 }), () => {
537
+ e && e.removeEventListener("touchstart", t);
538
+ };
539
+ }, []), xe("[render], props: ", e), /* @__PURE__ */ k("div", {
540
+ ref: (e) => {
541
+ C.current = e, v(e), x(e);
542
+ },
543
+ style: {
544
+ transform: y ? `translate3d(${y.x}px, ${y.y}px, 0)` : void 0,
545
+ boxSizing: "border-box",
546
+ overflow: "visible",
547
+ padding: 0,
548
+ margin: 0,
549
+ textAlign: "center",
550
+ pointerEvents: "auto",
551
+ cursor: a ? "not-allowed" : b ? "grabbing" : "grab",
552
+ zIndex: b ? 1e3 : "auto",
553
+ willChange: b ? "transform" : "auto"
554
+ },
555
+ ...u && !a ? {
556
+ ..._,
557
+ ...m
558
+ } : {},
559
+ children: /* @__PURE__ */ k(we, {
560
+ label: t,
561
+ id: r,
562
+ empty: i,
563
+ index: s,
564
+ guideIndex: c,
565
+ isOver: S,
566
+ isDragging: b,
567
+ disabled: a,
568
+ outcome: o,
569
+ type: n
570
+ })
571
+ });
572
+ };
573
+ W.propTypes = {
574
+ id: M.default.any,
575
+ label: M.default.string,
576
+ isOver: M.default.bool,
577
+ type: M.default.string,
578
+ empty: M.default.bool,
579
+ disabled: M.default.bool,
580
+ outcome: M.default.string,
581
+ index: M.default.number,
582
+ guideIndex: M.default.number,
583
+ instanceId: M.default.any,
584
+ draggable: M.default.bool,
585
+ tileIndex: M.default.number
586
+ };
587
+ //#endregion
588
+ //#region src/delivery/tiler.tsx
589
+ var G = {
590
+ choiceLabel: M.default.string,
591
+ targetLabel: M.default.string,
592
+ disabled: M.default.bool,
593
+ tiles: M.default.array.isRequired,
594
+ tileSize: M.default.string,
595
+ addGuide: M.default.bool
596
+ }, Te = {
597
+ tileSize: "1fr",
598
+ disabled: !1,
599
+ addGuide: !1
600
+ }, Ee = (e) => {
601
+ let t = (t, n) => (t.instanceId = e.instanceId, t.disabled = e.disabled, t.guideIndex = e.addGuide ? t.index + 1 : void 0, t.tileIndex = n, e.includeTargets || t.type === "choice" ? /* @__PURE__ */ O(W, {
602
+ ...t,
603
+ key: n
604
+ }) : /* @__PURE__ */ O(W, {
605
+ ...t,
606
+ label: "",
607
+ key: n
608
+ }));
609
+ return t.propTypes = { ...G }, t;
610
+ }, De = y("div")(({ theme: e, includeTargets: t }) => ({
611
+ display: "grid",
612
+ paddingBottom: e.spacing(2),
613
+ ...t && { gridGap: "10px" }
614
+ })), Oe = y("div")({ textAlign: "center" }), ke = y("div")({
615
+ textAlign: "center",
616
+ gridRow: "3/4"
617
+ }), Ae = y("div")(({ includeTargets: e }) => ({
618
+ gridAutoFlow: "column",
619
+ display: "grid",
620
+ ...e && { gridGap: "10px" }
621
+ })), je = y("div")({
622
+ gridColumn: "1/2",
623
+ textAlign: "center"
624
+ }), Me = y("div")({
625
+ gridColumn: "2/3",
626
+ textAlign: "center"
627
+ }), Ne = class extends D.Component {
628
+ static propTypes = { ...G };
629
+ static defaultProps = { ...Te };
630
+ render() {
631
+ let { includeTargets: e, choiceLabelEnabled: t, choiceLabel: n, targetLabel: r, tiles: i, tileSize: a } = this.props, o = e ? `auto ${a} auto ${a}` : `auto ${a} auto`, s = e ? i.length / 2 : i.length, c = {
632
+ gridTemplateColumns: e ? `repeat(${s}, ${a})` : `auto repeat(${Math.floor(s / 2) - 1}, ${a} 10px) ${a} auto`,
633
+ gridTemplateRows: o
634
+ }, l = { gridColumn: `1/${s + 1}` };
635
+ return /* @__PURE__ */ A(De, {
636
+ includeTargets: e,
637
+ style: c,
638
+ children: [
639
+ /* @__PURE__ */ k(Oe, {
640
+ style: l,
641
+ dangerouslySetInnerHTML: { __html: t ? n : "" }
642
+ }),
643
+ e && /* @__PURE__ */ k(ke, {
644
+ style: l,
645
+ dangerouslySetInnerHTML: { __html: r }
646
+ }),
647
+ i.map(Ee(this.props))
648
+ ]
649
+ });
650
+ }
651
+ }, Pe = class extends D.Component {
652
+ static propTypes = { ...G };
653
+ static defaultProps = { ...Te };
654
+ render() {
655
+ let { includeTargets: e, choiceLabelEnabled: t, choiceLabel: n, targetLabel: r, tiles: i, tileSize: a } = this.props, o = e ? 2 : 1, s = e ? i.length / 2 : i.length;
656
+ return /* @__PURE__ */ A(Ae, {
657
+ includeTargets: e,
658
+ style: {
659
+ gridTemplateColumns: `repeat(${o}, ${a})`,
660
+ gridTemplateRows: e ? `auto repeat(${s}, ${a})` : `auto auto repeat(${Math.floor(s / 2) - 1}, ${a} 10px) ${a} auto`
661
+ },
662
+ children: [
663
+ /* @__PURE__ */ k(je, { dangerouslySetInnerHTML: { __html: t ? n : "" } }),
664
+ e && /* @__PURE__ */ k(Me, { dangerouslySetInnerHTML: { __html: r } }),
665
+ i.map(Ee(this.props))
666
+ ]
667
+ });
668
+ }
669
+ }, K = (0, j.default)("pie-elements:placement-ordering:ordering"), Fe = (e, t, n) => {
670
+ let r = e.find((e, n) => n === t), i = e.filter((e, n) => n !== t);
671
+ return [
672
+ ...i.slice(0, n),
673
+ r,
674
+ ...i.slice(n)
675
+ ];
676
+ }, Ie = (e, n, r) => {
677
+ if (K("[swap]", e, n, r), !e || e.length <= 1 || n === void 0 || r === void 0) throw Error(`swap requires a non-empty array, fromIndex, toIndex: ${e}, ${n} ${r}`);
678
+ let i = t(e), a = e[r];
679
+ return i[r] = i[n], i[n] = a, i;
680
+ };
681
+ function Le(e, n) {
682
+ let r = t(e.response);
683
+ if (r[n.index] === n.id) r[n.index] = void 0;
684
+ else throw Error(`Tried to remove from index: ${n.index}, but the id doesn't match: array: ${r}, target: ${n.id}`);
685
+ return r;
686
+ }
687
+ function Re(e, n, r) {
688
+ let { response: i, opts: a } = e, o = t(i);
689
+ if (a.includeTargets) return n.type === "choice" && r.type === "target" ? (o[r.index] = n.id, o) : n.type === "target" && r.type === "choice" ? (o[n.index] = void 0, o) : n.type === "target" && r.type === "target" ? Ie(i, n.index, r.index) : (K("do nothing to the response"), i);
690
+ {
691
+ let t = e.response.findIndex((e) => e !== void 0 && e === n.id), i = e.response.findIndex((e) => e !== void 0 && e === r.id);
692
+ return K("fromIndex: ", t, "toIndex:", i), Fe(e.response, t, i);
693
+ }
694
+ }
695
+ function q(e, t, n, r) {
696
+ if (r.includeTargets) {
697
+ let i = [];
698
+ for (let r = 0; r < t.length; r++) {
699
+ let a = t[r], o = e.find((e) => a != null && e.id === a), s = n[r], c = Object.assign({
700
+ type: "target",
701
+ index: r,
702
+ empty: o === void 0
703
+ }, o, s, { draggable: o !== void 0 });
704
+ i.push(c);
705
+ }
706
+ return e.map((e) => t.indexOf(e.id) !== -1 && !r.allowSameChoiceInTargets ? {
707
+ type: "choice",
708
+ empty: !0,
709
+ droppable: !0,
710
+ draggable: !1
711
+ } : Object.assign({}, e, {
712
+ type: "choice",
713
+ droppable: !1,
714
+ draggable: !0
715
+ })).concat(i);
716
+ } else return t.reduce((t, r, i) => {
717
+ let a = Object.assign({
718
+ type: "empty",
719
+ draggable: !1,
720
+ droppable: !0
721
+ }, e.find((e) => e.id === r), n[i]), o = Object.assign({
722
+ type: "choice",
723
+ draggable: !0,
724
+ droppable: !0
725
+ }, e.find((e) => e.id === r), n[i]);
726
+ return i === 0 && t.push(a), t.push(o, a), t;
727
+ }, []);
728
+ }
729
+ function ze(e, t, r, i) {
730
+ return i = n({ includeTargets: !0 }, i), r ||= [], t = !t || a(t) ? i.includeTargets ? Array(e.length) : c(e, (e) => e.id) : t, {
731
+ choices: e,
732
+ response: t,
733
+ opts: i,
734
+ outcomes: r,
735
+ tiles: q(e, t, r, i)
736
+ };
737
+ }
738
+ function Be(e, t) {
739
+ switch (e.type) {
740
+ case "move": {
741
+ let { from: n, to: r } = e, i = Re(t, n, r), a = q(t.choices, i, t.outcomes, t.opts);
742
+ return Object.assign({}, t, {
743
+ response: i,
744
+ tiles: a
745
+ });
746
+ }
747
+ case "remove": {
748
+ let { target: n } = e, r = Le(t, n), i = q(t.choices, r, t.outcomes, t.opts);
749
+ return Object.assign({}, t, {
750
+ response: r,
751
+ tiles: i
752
+ });
753
+ }
754
+ }
755
+ return t;
756
+ }
757
+ //#endregion
758
+ //#region src/delivery/utils.ts
759
+ var Ve = (e, t) => {
760
+ if (!Array.isArray(e) || !Array.isArray(t) || e.length !== t.length) return !1;
761
+ let n = (e) => e.map((e) => JSON.stringify(e)).sort(), r = n(e), i = n(t), a = r.every((e, t) => e === i[t]), o = e.every((e, n) => JSON.stringify(e) === JSON.stringify(t[n]));
762
+ return a && !o;
763
+ };
764
+ //#endregion
765
+ //#region src/delivery/placement-ordering.tsx
766
+ function J(e) {
767
+ return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
768
+ }
769
+ function Y(e, t) {
770
+ return !e || J(e) ? e : J(e.default) ? e.default : t && J(e[t]) ? e[t] : t && J(e[t]?.default) ? e[t].default : e;
771
+ }
772
+ var He = Y(w, "UiLayout") || Y(Q.UiLayout, "UiLayout"), X = Y(ee, "PreviewPrompt") || Y(Q.PreviewPrompt, "PreviewPrompt"), Ue = Y(S, "Feedback") || Y(Q.Feedback, "Feedback"), We = Y(f, "Collapsible") || Y(Q.Collapsible, "Collapsible"), Ge = b, Z = Ge.default, Q = Z && typeof Z == "object" ? Z : Ge, { translator: Ke } = E, qe = (0, j.default)("pie-elements:placement-ordering"), Je = y("div")({
773
+ color: v.text(),
774
+ backgroundColor: v.background(),
775
+ display: "flex",
776
+ flexDirection: "column",
777
+ alignItems: "center",
778
+ boxSizing: "border-box"
779
+ }), Ye = y("div")(({ theme: e }) => ({ paddingBottom: e.spacing(1) })), Xe = y("div")(({ theme: e }) => ({ paddingBottom: e.spacing(2) })), Ze = y(ye)(({ theme: e }) => ({ paddingBottom: e.spacing(1) })), $ = y(We)(({ theme: e }) => ({
780
+ marginBottom: e.spacing(2),
781
+ alignSelf: "flex-start"
782
+ })), Qe = (e) => {
783
+ let { tiler: t, ordering: n, onDropChoice: r, onRemoveChoice: i, ...a } = e;
784
+ return /* @__PURE__ */ k(t, {
785
+ ...a,
786
+ tiles: n.tiles,
787
+ onDropChoice: (e, t) => r(e, t, n),
788
+ onRemoveChoice: (e) => i(e, n)
789
+ });
790
+ };
791
+ Qe.propTypes = {
792
+ tiler: M.default.func,
793
+ ordering: M.default.any,
794
+ onDropChoice: M.default.func,
795
+ onRemoveChoice: M.default.func
796
+ };
797
+ var $e = class extends D.Component {
798
+ static propTypes = {
799
+ onSessionChange: M.default.func.isRequired,
800
+ model: M.default.object.isRequired,
801
+ session: M.default.oneOfType([M.default.array.isRequired, M.default.object.isRequired])
802
+ };
803
+ constructor(e) {
804
+ super(e), this.instanceId = r();
805
+ let { value: t, needsReset: n } = this.validateSession(e);
806
+ this.state = { showingCorrect: !1 };
807
+ let { model: i } = e || {}, { env: a } = i || {}, { mode: o } = a || {};
808
+ n && o === "gather" && this.props.onSessionChange({
809
+ ...e.session,
810
+ value: t
811
+ });
812
+ }
813
+ toggleCorrect = (e) => this.setState({ showingCorrect: e });
814
+ componentDidUpdate() {
815
+ d(ie.findDOMNode(this));
816
+ }
817
+ validateSession = ({ model: e, session: t }, n = !1) => {
818
+ let { config: r, choices: i } = e || {}, { includeTargets: a } = r || {}, s = i.map((e) => e.id), { value: c } = t || {}, u;
819
+ if (a) c && c.length !== s.length && (u = !0, c = c.length < s.length ? c.concat(Array(s.length - c.length)) : c.filter((e) => s.includes(e)));
820
+ else {
821
+ if (!c || !c.length || n) c = s;
822
+ else {
823
+ let e = l(s, c), t = l(c, s);
824
+ (e.length || t.length) && (c = s);
825
+ }
826
+ u = !o(t.value, c);
827
+ }
828
+ return u && console.warn("This session is not valid anymore. It will be reset."), {
829
+ value: c,
830
+ needsReset: u
831
+ };
832
+ };
833
+ UNSAFE_componentWillReceiveProps(e) {
834
+ let { model: t = {} } = e || {}, { model: n = {} } = this.props || {}, { correctResponse: r, config: i, choices: a = [], env: o } = t, { includeTargets: s } = i || {}, c = {}, l = n.language && n.language !== t.language, u = n.note && n.note === Ke.t("common:commonCorrectAnswerWithAlternates", { lng: n.language });
835
+ l && u && (n.note = Ke.t("common:commonCorrectAnswerWithAlternates", { lng: t.language })), r || (c.showingCorrect = !1);
836
+ let d = Ve(a, n.choices), { value: f, needsReset: p } = this.validateSession(e, d), m = {
837
+ ...e.session,
838
+ value: f
839
+ }, h = n.config?.includeTargets !== s;
840
+ s && h && (p = !0, delete m.value), this.setState(c, () => {
841
+ let { mode: e } = o || {};
842
+ p && e === "gather" && this.props.onSessionChange(m);
843
+ });
844
+ }
845
+ onDropChoice = (e, t, n) => {
846
+ let { onSessionChange: r, session: i } = this.props, a = n.tiles.find((e) => e.id === t.id && e.type === t.type && e.index === t.index), o = e;
847
+ qe("[onDropChoice] ", a, o);
848
+ let s = Be({
849
+ type: "move",
850
+ from: a,
851
+ to: o
852
+ }, n);
853
+ r(Object.assign({}, i, { value: s.response }));
854
+ };
855
+ onRemoveChoice = (e, t) => {
856
+ let { onSessionChange: n, session: r } = this.props;
857
+ qe("[onRemoveChoice]", e);
858
+ let i = Be({
859
+ type: "remove",
860
+ target: e
861
+ }, t);
862
+ n(Object.assign({}, r, { value: i.response }));
863
+ };
864
+ createOrdering = () => {
865
+ let { model: e, session: t } = this.props, { showingCorrect: n } = this.state, { includeTargets: r } = e.config || {
866
+ orientation: "vertical",
867
+ includeTargets: !0
868
+ };
869
+ return n ? ze(e.choices, e.correctResponse, e.correctResponse.map((e) => ({
870
+ id: e,
871
+ outcome: "correct"
872
+ })), {
873
+ includeTargets: r,
874
+ allowSameChoiceInTargets: e.config.allowSameChoiceInTargets
875
+ }) : ze(e.choices, t.value, e.outcomes, {
876
+ includeTargets: r,
877
+ allowSameChoiceInTargets: e.config.allowSameChoiceInTargets
878
+ });
879
+ };
880
+ onDragEnd = (e) => {
881
+ let { over: t, active: n } = e, r = this.createOrdering();
882
+ if (t && n) {
883
+ let e = n.data.current, i = t.data.current;
884
+ if (e && i && i.type === "target") {
885
+ this.onDropChoice(i, e, r);
886
+ return;
887
+ }
888
+ e && i && this.onDropChoice(i, e, r);
889
+ } else if (!t && n) {
890
+ let e = n.data.current;
891
+ e && e.type === "target" && this.onRemoveChoice(e, r);
892
+ }
893
+ };
894
+ render() {
895
+ let { model: e } = this.props, { correctResponse: t, correctness: n, extraCSSRules: r, prompt: i, rationale: a, feedback: o, config: s, note: c, showNote: l, env: u, disabled: d, teacherInstructions: f, language: m } = e, h = t && t.length > 0, { showingCorrect: g } = this.state, _ = s || {
896
+ orientation: "vertical",
897
+ includeTargets: !0
898
+ }, { orientation: y, includeTargets: b } = _, S = y === "vertical", ee = this.createOrdering(), { mode: w, role: T } = u || {}, E = S ? Pe : Ne, D = (g || w === "view" && T === "instructor") && l && c, O = a && (p(a) || x(a)), ne = f && (p(f) || x(f)), re = {
899
+ color: v.text(),
900
+ backgroundColor: v.background(),
901
+ display: "flex",
902
+ flexDirection: "column",
903
+ alignItems: "center",
904
+ boxSizing: "border-box"
905
+ };
906
+ return /* @__PURE__ */ k(C, {
907
+ onDragStart: () => {},
908
+ onDragEnd: this.onDragEnd,
909
+ collisionDetection: te,
910
+ children: /* @__PURE__ */ k(Je, { children: /* @__PURE__ */ A(He, {
911
+ extraCSSRules: r,
912
+ style: re,
913
+ children: [
914
+ ne && /* @__PURE__ */ k($, {
915
+ labels: {
916
+ hidden: "Show Teacher Instructions",
917
+ visible: "Hide Teacher Instructions"
918
+ },
919
+ className: "collapsible",
920
+ children: /* @__PURE__ */ k(X, { prompt: f })
921
+ }),
922
+ /* @__PURE__ */ k(Ye, { children: /* @__PURE__ */ k(X, { prompt: i }) }),
923
+ /* @__PURE__ */ k(Ze, {
924
+ show: h,
925
+ toggled: g,
926
+ onToggle: this.toggleCorrect,
927
+ language: m
928
+ }),
929
+ /* @__PURE__ */ k(Qe, {
930
+ instanceId: this.instanceId,
931
+ choiceLabel: _.choiceLabel,
932
+ targetLabel: _.targetLabel,
933
+ ordering: ee,
934
+ tiler: E,
935
+ disabled: d,
936
+ addGuide: _.showOrdering,
937
+ tileSize: _.tileSize,
938
+ includeTargets: b,
939
+ choiceLabelEnabled: e.config && e.config.choiceLabelEnabled
940
+ }),
941
+ D && /* @__PURE__ */ k(Xe, { dangerouslySetInnerHTML: { __html: c } }),
942
+ O && /* @__PURE__ */ k($, {
943
+ labels: {
944
+ hidden: "Show Rationale",
945
+ visible: "Hide Rationale"
946
+ },
947
+ className: "collapsible",
948
+ children: /* @__PURE__ */ k(X, { prompt: a })
949
+ }),
950
+ !g && /* @__PURE__ */ k(Ue, {
951
+ correctness: n,
952
+ feedback: o
953
+ })
954
+ ]
955
+ }) })
956
+ });
957
+ }
958
+ }, et = class extends D.Component {
959
+ static propTypes = {
960
+ model: M.default.object.isRequired,
961
+ session: M.default.oneOfType([M.default.array.isRequired, M.default.object.isRequired]),
962
+ onSessionChange: M.default.func.isRequired
963
+ };
964
+ render() {
965
+ let { model: e, session: t, onSessionChange: n } = this.props;
966
+ return /* @__PURE__ */ k($e, {
967
+ model: e,
968
+ session: t,
969
+ onSessionChange: n
970
+ });
971
+ }
972
+ }, tt = (0, j.default)("pie-elements:placement-ordering"), nt = ({ model: t, session: n }) => {
973
+ let { config: r } = t, i = (n && e(n.value) || []).length === t.choices.length;
974
+ return r.includeTargets || i;
975
+ }, rt = class extends HTMLElement {
976
+ constructor() {
977
+ super(), this._root = null, this._mathObserver = null, this._mathRenderPending = !1;
978
+ }
979
+ _scheduleMathRender = () => {
980
+ this._mathRenderPending || (this._mathRenderPending = !0, requestAnimationFrame(() => {
981
+ this._mathObserver && this._mathObserver.disconnect(), d(this), this._mathRenderPending = !1, setTimeout(() => {
982
+ this._mathObserver && this._mathObserver.observe(this, {
983
+ childList: !0,
984
+ subtree: !0
985
+ });
986
+ }, 50);
987
+ }));
988
+ };
989
+ _initMathObserver() {
990
+ this._mathObserver || (this._mathObserver = new MutationObserver(this._scheduleMathRender), this._mathObserver.observe(this, {
991
+ childList: !0,
992
+ subtree: !0
993
+ }));
994
+ }
995
+ _disconnectMathObserver() {
996
+ this._mathObserver &&= (this._mathObserver.disconnect(), null);
997
+ }
998
+ isComplete = (t) => t && e(t).length === this._model.completeLength;
999
+ sessionChange = (e) => {
1000
+ this._session.value = e.value, this.render(), this.dispatchEvent(new ae(this.tagName.toLowerCase(), this._session && this.isComplete(this._session.value)));
1001
+ };
1002
+ set model(e) {
1003
+ this._model = e, this.render(), this.dispatchEvent(new CustomEvent("model-set", {
1004
+ bubbles: !0,
1005
+ detail: { complete: !1 }
1006
+ }));
1007
+ }
1008
+ set session(e) {
1009
+ this._session = e, this.render();
1010
+ }
1011
+ get session() {
1012
+ return this._session;
1013
+ }
1014
+ render() {
1015
+ if (this._model && this._session) {
1016
+ tt("[render] session: ", this._session.value), tt("[render] model: ", this._model), this._initMathObserver();
1017
+ let e = D.createElement(et, {
1018
+ model: this._model,
1019
+ session: this._session,
1020
+ onSessionChange: this.sessionChange
1021
+ });
1022
+ this._root ||= re(this), this._root.render(e);
1023
+ }
1024
+ }
1025
+ connectedCallback() {
1026
+ this._initMathObserver();
1027
+ }
1028
+ disconnectedCallback() {
1029
+ this._disconnectMathObserver(), this._root && this._root.unmount();
1030
+ }
1031
+ };
1032
+ //#endregion
1033
+ export { rt as default, nt as isValidSession };
1034
+
1035
+ //# sourceMappingURL=index.js.map