@pie-element/placement-ordering 14.1.2-next.5 → 14.1.2-next.7
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/author/choice-editor.js +2 -2
- package/dist/author/choice-tile.js +3 -2
- package/dist/author/design.js +1 -1
- package/dist/author/index.d.ts +1 -0
- package/dist/author/index.js +5 -2
- package/dist/browser/author/index.js +22660 -25834
- package/dist/browser/author/index.js.map +1 -1
- package/dist/browser/{browser-DHPggtaA.js → browser-Bd36Xf5z.js} +2 -2
- package/dist/browser/browser-Bd36Xf5z.js.map +1 -0
- package/dist/browser/controller/index.js +3 -3
- package/dist/browser/controller/index.js.map +1 -1
- package/dist/browser/delivery/index.js +436 -307
- package/dist/browser/delivery/index.js.map +1 -1
- package/dist/browser/{dist-D9ARZhQk.js → dist-DiGNNRzu.js} +2 -2
- package/dist/browser/{dist-D9ARZhQk.js.map → dist-DiGNNRzu.js.map} +1 -1
- package/dist/browser/{drag-provider-C1slTlsc.js → drag-provider-BdfhGCEU.js} +2474 -2529
- package/dist/browser/drag-provider-BdfhGCEU.js.map +1 -0
- package/dist/controller/scoring.js +1 -1
- package/dist/delivery/index.js +2 -2
- package/dist/delivery/keyboard-coordinates.d.ts +35 -0
- package/dist/delivery/keyboard-coordinates.js +48 -0
- package/dist/delivery/main.js +1 -1
- package/dist/delivery/ordering.js +1 -1
- package/dist/delivery/placement-ordering.d.ts +11 -0
- package/dist/delivery/placement-ordering.js +147 -79
- package/dist/delivery/tile.d.ts +3 -0
- package/dist/delivery/tile.js +66 -57
- package/dist/delivery/tiler.d.ts +6 -0
- package/dist/delivery/tiler.js +6 -3
- package/dist/index.iife.js +35 -35
- package/package.json +17 -9
- package/dist/browser/browser-DHPggtaA.js.map +0 -1
- package/dist/browser/drag-provider-C1slTlsc.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../shared/player-events/dist/index.js","../../../../../lib-react/icons/dist/correct-response-icon.js","../../../../../lib-react/correct-answer-toggle/dist/expander.js","../../../../../lib-react/correct-answer-toggle/dist/index.js","../../../../../lib-react/drag/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js","../../../../../lib-react/drag/dist/placeholder.js","../../../src/delivery/tile.tsx","../../../src/delivery/tiler.tsx","../../../src/delivery/ordering.ts","../../../src/delivery/utils.ts","../../../src/delivery/placement-ordering.tsx","../../../src/delivery/main.tsx","../../../src/delivery/index.ts"],"sourcesContent":["//#region src/index.ts\nvar e = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model-set\";\n\t}\n\tconstructor(t, n, r) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t,\n\t\t\t\thasModel: r\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n}, t = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"session-changed\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n};\n//#endregion\nexport { e as ModelSetEvent, t as SessionChangedEvent };\n","import \"react\";\nimport e from \"prop-types\";\nimport { jsx as t, jsxs as n } from \"react/jsx-runtime\";\nimport { styled as r } from \"@mui/material/styles\";\n//#region src/correct-response-icon.tsx\nvar i = ({ bgFill: e, fgFill: r }) => /* @__PURE__ */ n(\"svg\", {\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-283 359 34 35\",\n\tstyle: { enableBackground: \"new -283 359 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-266\",\n\t\t\tcy: \"375.9\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"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\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-265.4,383.1 -258.6,377.2 -261.2,374.2 -264.3,376.9 -268.9,368.7 -272.4,370.6\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\ni.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired\n};\nvar a = ({ bgFill: e, fgFill: r, borderFill: i }) => /* @__PURE__ */ n(\"svg\", {\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-129.5 127 34 35\",\n\tstyle: { enableBackground: \"new -129.5 127 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#D0CAC5\",\n\t\t\t\tstroke: \"#E6E3E0\",\n\t\t\t\tstrokeWidth: .75,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"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\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#B3ABA4\",\n\t\t\t\tstroke: \"#CDC7C2\",\n\t\t\t\tstrokeWidth: .5,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"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\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-114.2\",\n\t\t\tcy: \"143.5\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"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\",\n\t\t\tfill: i\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-114.8,150.7 -121.6,144.8 -119,141.8 -115.9,144.5 -111.3,136.3 -107.8,138.2\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\na.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired,\n\tborderFill: e.string.isRequired\n};\nvar o = r(\"div\")(({ size: e }) => ({\n\twidth: e || \"25px\",\n\theight: e || \"25px\"\n})), s = ({ open: e, size: n }) => /* @__PURE__ */ t(o, {\n\tsize: n,\n\tchildren: e ? /* @__PURE__ */ t(i, {\n\t\tbgFill: \"#bce2ff\",\n\t\tfgFill: \"#1a9cff\"\n\t}) : /* @__PURE__ */ t(a, {\n\t\tbgFill: \"white\",\n\t\tfgFill: \"#1a9cff\",\n\t\tborderFill: \"#bce2ff\"\n\t})\n});\ns.propTypes = {\n\topen: e.bool,\n\tsize: e.string\n}, s.defaultProps = { open: !1 };\n//#endregion\nexport { s as default };\n","import { styled as e } from \"@mui/material/styles\";\nimport { CSSTransition as t } from \"react-transition-group\";\nimport { jsx as n } from \"react/jsx-runtime\";\nimport { useRef as r } from \"react\";\nimport i from \"prop-types\";\n//#region src/expander.tsx\nvar a = \"height ease-in 300ms, opacity ease-in 300ms\", o = e(\"div\")(() => ({\n\tposition: \"relative\",\n\theight: 0,\n\toverflow: \"hidden\",\n\tdisplay: \"flex\",\n\tvisibility: \"hidden\",\n\twidth: 0,\n\t\"&.enter\": {\n\t\ttransition: a,\n\t\topacity: 1,\n\t\theight: \"auto\",\n\t\twidth: \"auto\",\n\t\tvisibility: \"visible\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.enter-done\": {\n\t\theight: \"auto\",\n\t\tvisibility: \"visible\",\n\t\twidth: \"auto\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.exit\": {\n\t\ttransition: a,\n\t\topacity: 0,\n\t\theight: 0,\n\t\tvisibility: \"visible\",\n\t\twidth: 0\n\t},\n\t\"&.exit-done\": {\n\t\topacity: 0,\n\t\tvisibility: \"hidden\",\n\t\theight: 0,\n\t\twidth: 0\n\t}\n})), s = (e) => {\n\tlet { show: i, children: a, className: s } = e, c = r(null);\n\treturn /* @__PURE__ */ n(t, {\n\t\tnodeRef: c,\n\t\tin: i,\n\t\tappear: !0,\n\t\tmountOnEnter: !1,\n\t\ttimeout: 300,\n\t\tclassNames: {\n\t\t\tenter: \"enter\",\n\t\t\tenterDone: \"enter-done\",\n\t\t\texit: \"exit\",\n\t\t\texitDone: \"exit-done\"\n\t\t},\n\t\tchildren: /* @__PURE__ */ n(o, {\n\t\t\tref: c,\n\t\t\tclassName: s,\n\t\t\tchildren: a\n\t\t})\n\t});\n};\ns.propTypes = {\n\tshow: i.bool.isRequired,\n\tclassName: i.string,\n\tchildren: i.oneOfType([i.arrayOf(i.node), i.node]).isRequired\n};\n//#endregion\nexport { s as default };\n","import e from \"./expander.js\";\nimport { styled as t } from \"@mui/material/styles\";\nimport { CSSTransition as n } from \"react-transition-group\";\nimport { CorrectResponse as r } from \"@pie-lib/icons\";\nimport * as i from \"@pie-lib/render-ui\";\nimport { Readable as a, color as o } from \"@pie-lib/render-ui\";\nimport { jsx as s, jsxs as c } from \"react/jsx-runtime\";\nimport l from \"react\";\nimport u from \"prop-types\";\nimport d from \"@pie-lib/translator\";\n//#region src/index.tsx\nfunction f(e) {\n\treturn typeof e == \"function\" || typeof e == \"object\" && !!e && typeof e.$$typeof == \"symbol\";\n}\nfunction p(e, t) {\n\treturn !e || f(e) ? e : f(e.default) ? e.default : t && f(e[t]) ? e[t] : t && f(e[t]?.default) ? e[t].default : e;\n}\nvar m = p(a, \"Readable\") || p(_.Readable, \"Readable\"), h = i, g = h.default, _ = g && typeof g == \"object\" ? g : h, { translator: v } = d, y = {\n\tWebkitTouchCallout: \"none\",\n\tWebkitUserSelect: \"none\",\n\tKhtmlUserSelect: \"none\",\n\tMozUserSelect: \"none\",\n\tmsUserSelect: \"none\",\n\tuserSelect: \"none\"\n}, b = t(\"div\")(() => ({\n\twidth: \"100%\",\n\tcursor: \"pointer\"\n})), x = t(\"div\")(() => ({\n\tmargin: \"0 auto\",\n\ttextAlign: \"center\",\n\tdisplay: \"flex\"\n})), S = t(\"div\")(() => ({\n\twidth: \"fit-content\",\n\tminWidth: \"140px\",\n\talignSelf: \"center\",\n\tverticalAlign: \"middle\",\n\tcolor: `var(--correct-answer-toggle-label-color, ${o.text()})`,\n\tfontWeight: \"normal\",\n\t...y\n})), C = t(\"div\")(() => ({\n\tposition: \"absolute\",\n\twidth: \"25px\",\n\t\"&.enter\": { opacity: \"0\" },\n\t\"&.enter-active\": {\n\t\topacity: \"1\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t},\n\t\"&.exit\": { opacity: \"1\" },\n\t\"&.exit-active\": {\n\t\topacity: \"0\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t}\n})), w = t(\"div\")(() => ({\n\twidth: \"25px\",\n\tmarginRight: \"5px\",\n\tdisplay: \"flex\",\n\talignItems: \"center\"\n})), T = class t extends l.Component {\n\tstatic propTypes = {\n\t\tonToggle: u.func,\n\t\ttoggled: u.bool,\n\t\tshow: u.bool,\n\t\thideMessage: u.string,\n\t\tshowMessage: u.string,\n\t\tclassName: u.string,\n\t\tlanguage: u.string\n\t};\n\tstatic defaultProps = {\n\t\tshowMessage: \"Show correct answer\",\n\t\thideMessage: \"Hide correct answer\",\n\t\tshow: !1,\n\t\ttoggled: !1\n\t};\n\tconstructor(e) {\n\t\tsuper(e), this.state = { show: e.show }, this.openIconRef = l.createRef(), this.closedIconRef = l.createRef(), t.defaultProps = {\n\t\t\t...t.defaultProps,\n\t\t\tshowMessage: v.t(\"common:showCorrectAnswer\", { lng: e.language }),\n\t\t\thideMessage: v.t(\"common:hideCorrectAnswer\", { lng: e.language })\n\t\t};\n\t}\n\tonClick() {\n\t\tthis.props.onToggle(!this.props.toggled);\n\t}\n\tonTouch(e) {\n\t\te.preventDefault(), this.props.onToggle(!this.props.toggled);\n\t}\n\tUNSAFE_componentWillReceiveProps(e) {\n\t\tthis.setState({ show: e.show }), e.language !== this.props?.language && (t.defaultProps = {\n\t\t\t...t.defaultProps,\n\t\t\tshowMessage: v.t(\"common:showCorrectAnswer\", { lng: e.language }),\n\t\t\thideMessage: v.t(\"common:hideCorrectAnswer\", { lng: e.language })\n\t\t});\n\t}\n\trender() {\n\t\tlet { className: t, toggled: i, hideMessage: a, showMessage: o } = this.props;\n\t\treturn /* @__PURE__ */ s(b, {\n\t\t\tclassName: t,\n\t\t\tchildren: /* @__PURE__ */ s(e, {\n\t\t\t\tshow: this.state.show,\n\t\t\t\tchildren: /* @__PURE__ */ c(x, {\n\t\t\t\t\tonClick: this.onClick.bind(this),\n\t\t\t\t\tonTouchEnd: this.onTouch.bind(this),\n\t\t\t\t\tchildren: [/* @__PURE__ */ c(w, { children: [/* @__PURE__ */ s(n, {\n\t\t\t\t\t\tnodeRef: this.openIconRef,\n\t\t\t\t\t\ttimeout: 400,\n\t\t\t\t\t\tin: i,\n\t\t\t\t\t\texit: !i,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(C, {\n\t\t\t\t\t\t\tref: this.openIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(r, { open: i }, \"correct-open\")\n\t\t\t\t\t\t})\n\t\t\t\t\t}), /* @__PURE__ */ s(n, {\n\t\t\t\t\t\tnodeRef: this.closedIconRef,\n\t\t\t\t\t\ttimeout: 5e3,\n\t\t\t\t\t\tin: !i,\n\t\t\t\t\t\texit: i,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(C, {\n\t\t\t\t\t\t\tref: this.closedIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(r, { open: i }, \"correct-closed\")\n\t\t\t\t\t\t})\n\t\t\t\t\t})] }), /* @__PURE__ */ s(m, {\n\t\t\t\t\t\tfalse: !0,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(S, {\n\t\t\t\t\t\t\t\"aria-hidden\": !this.state.show,\n\t\t\t\t\t\t\tchildren: i ? a : o\n\t\t\t\t\t\t})\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t}\n};\n//#endregion\nexport { T as CorrectAnswerToggle, T as default };\n","//#region ../../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs\nfunction e(t) {\n\tvar n, r, i = \"\";\n\tif (typeof t == \"string\" || typeof t == \"number\") i += t;\n\telse if (typeof t == \"object\") if (Array.isArray(t)) {\n\t\tvar a = t.length;\n\t\tfor (n = 0; n < a; n++) t[n] && (r = e(t[n])) && (i && (i += \" \"), i += r);\n\t} else for (r in t) t[r] && (i && (i += \" \"), i += r);\n\treturn i;\n}\nfunction t() {\n\tfor (var t, n, r = 0, i = \"\", a = arguments.length; r < a; r++) (t = arguments[r]) && (n = e(t)) && (i && (i += \" \"), i += n);\n\treturn i;\n}\n//#endregion\nexport { t as default };\n","import e from \"./node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js\";\nimport \"react\";\nimport { styled as t } from \"@mui/material/styles\";\nimport n from \"prop-types\";\nimport { color as r } from \"@pie-lib/render-ui\";\nimport { grey as i } from \"@mui/material/colors\";\nimport { jsx as a } from \"react/jsx-runtime\";\n//#region src/placeholder.tsx\nvar o = t(\"div\")(({ theme: e }) => ({\n\t\"&.placeholder\": {\n\t\tWebkitTouchCallout: \"none\",\n\t\tWebkitUserSelect: \"none\",\n\t\tKhtmlUserSelect: \"none\",\n\t\tMozUserSelect: \"none\",\n\t\tMsUserSelect: \"none\",\n\t\tuserSelect: \"none\",\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tbackground: r.white(),\n\t\ttransition: \"background-color 200ms linear, border-color 200ms linear\",\n\t\tboxSizing: \"border-box\",\n\t\tdisplay: \"grid\",\n\t\tgridRowGap: e.spacing(1),\n\t\tgridColumnGap: e.spacing(1),\n\t\tpadding: e.spacing(1),\n\t\tborder: `2px dashed ${r.black()}`\n\t},\n\t\"&.disabled\": {\n\t\tboxShadow: \"none\",\n\t\tbackground: e.palette.background.paper\n\t},\n\t\"&.over\": {\n\t\tborder: `1px solid ${i[500]}`,\n\t\tbackgroundColor: `${i[300]}`\n\t},\n\t\"&.board\": {\n\t\tpadding: e.spacing(1),\n\t\tdisplay: \"flex\",\n\t\tflexWrap: \"wrap\",\n\t\talignItems: \"center\",\n\t\tminHeight: \"100px\",\n\t\tjustifyContent: \"center\",\n\t\toverflow: \"hidden\",\n\t\ttouchAction: \"none\",\n\t\tbackgroundColor: r.backgroundDark()\n\t},\n\t\"&.categorizeBoard\": {\n\t\tpadding: e.spacing(.5),\n\t\tdisplay: \"flex\",\n\t\tflexWrap: \"wrap\",\n\t\talignItems: \"center\",\n\t\tminHeight: \"100px\",\n\t\tjustifyContent: \"center\",\n\t\toverflow: \"hidden\",\n\t\ttouchAction: \"none\",\n\t\tbackgroundColor: r.backgroundDark()\n\t},\n\t\"&.verticalPool\": {\n\t\tdisplay: \"flex\",\n\t\tflexFlow: \"column wrap\"\n\t}\n})), s = (t) => {\n\tlet { children: n, className: i, isOver: s, type: c, grid: l, disabled: u, choiceBoard: d, isCategorize: f, isVerticalPool: p, minHeight: m, extraStyles: h } = t, g = e(\"placeholder\", u && \"disabled\", s && \"over\", c, i), _ = {};\n\tif (l && l.columns && (_.gridTemplateColumns = `repeat(${l.columns}, 1fr)`), l && l.rows) {\n\t\tlet e = l.rowsRepeatValue || \"1fr\";\n\t\t_.gridTemplateRows = `repeat(${l.rows}, ${e})`;\n\t}\n\tc === \"choice\" && (_.border = `1px solid ${r.borderLight()}`, _.background = r.backgroundDark());\n\tlet v = f ? \"categorizeBoard\" : \"board\";\n\treturn /* @__PURE__ */ a(o, {\n\t\tstyle: {\n\t\t\t..._,\n\t\t\tminHeight: m,\n\t\t\t...h\n\t\t},\n\t\tclassName: e(d ? v : g, p && \"verticalPool\"),\n\t\tchildren: n\n\t});\n};\ns.propTypes = {\n\tchoiceBoard: n.bool,\n\tgrid: n.shape({\n\t\tcolumns: n.number,\n\t\trows: n.number,\n\t\trowsRepeatValue: n.string\n\t}),\n\tchildren: n.oneOfType([n.arrayOf(n.node), n.node]).isRequired,\n\tclassName: n.string,\n\tisOver: n.bool,\n\tindex: n.number,\n\ttype: n.string,\n\tdisabled: n.bool,\n\tisCategorize: n.bool,\n\tisVerticalPool: n.bool,\n\tminHeight: n.number\n};\n//#endregion\nexport { s as default };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/tile.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { styled } from '@mui/material/styles';\n\nimport { PlaceHolder } from '@pie-lib/drag';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:placement-ordering:tile');\n\nconst StyledNumberContainer: any = styled('div')(({ theme }) => ({\n width: '100%',\n fontSize: theme.typography.fontSize + 4,\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n}));\n\nconst Holder = ({ type, index, isOver, disabled }) => (\n <PlaceHolder type={type} isOver={isOver} disabled={disabled}>\n {type === 'target' && index !== undefined && <StyledNumberContainer>{index}</StyledNumberContainer>}\n </PlaceHolder>\n);\n\nHolder.propTypes = {\n type: PropTypes.string,\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nconst StyledTileContent: any = styled('div')(({ theme, isDragging, isOver, disabled, outcome, label, type }) => ({\n cursor: disabled ? 'not-allowed' : 'grab',\n width: '100%',\n height: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n border: (type === 'choice' || type === 'target') ? `1px solid ${theme.palette.grey[400]}` : '1px solid transparent',\n backgroundColor: (type === 'choice' || type === 'target') ? color.background() : 'transparent',\n transition: (type === 'choice' || type === 'target') ? 'background-color 150ms ease, border-color 150ms ease, opacity 150ms ease' : 'none',\n pointerEvents: 'none',\n userSelect: 'none',\n\n ...((type === 'choice' || type === 'target') && {\n '&:hover': {\n backgroundColor: disabled ? color.background() : color.secondary(),\n borderColor: disabled ? theme.palette.grey[400] : theme.palette.primary.main,\n transform: disabled ? 'none' : 'scale(1.02)',\n },\n }),\n\n // Apply conditional styles based on props (only if not empty spacing tile)\n ...((type === 'choice' || type === 'target') && isOver && !disabled && {\n opacity: 0.4,\n backgroundColor: color.primaryLight(),\n borderColor: theme.palette.primary.main,\n borderStyle: 'dashed',\n transform: 'scale(1.05)',\n }),\n\n ...((type === 'choice' || type === 'target') && isDragging && !disabled && {\n opacity: 0.6,\n backgroundColor: color.secondaryLight(),\n transform: 'scale(1.05) rotate(2deg)',\n boxShadow: '0 8px 16px rgba(0,0,0,0.2)',\n cursor: 'grabbing',\n }),\n\n ...((type === 'choice' || type === 'target') && disabled && {\n cursor: 'not-allowed',\n '&:hover': {\n backgroundColor: color.background(),\n transform: 'none',\n },\n }),\n\n ...((type === 'choice' || type === 'target') && outcome === 'incorrect' && {\n border: `1px solid ${color.incorrect()}`,\n }),\n\n ...((type === 'choice' || type === 'target') && outcome === 'correct' && {\n border: `1px solid ${color.correct()}`,\n }),\n\n ...(!label && {\n border: 'none',\n '&:hover': {\n backgroundColor: 'unset',\n },\n }),\n}));\n\nconst TileContent = (props) => {\n const { type, isDragging, empty, isOver, label, disabled, outcome, guideIndex } = props;\n\n if (empty) {\n return <Holder type={type} index={guideIndex} isOver={isOver} disabled={disabled} />;\n } else {\n return (\n <StyledTileContent\n type={type}\n isDragging={isDragging}\n isOver={isOver}\n disabled={disabled}\n outcome={outcome}\n label={label}\n dangerouslySetInnerHTML={{ __html: label }}\n />\n );\n }\n};\n\nexport const Tile = (props) => {\n const {\n label,\n type,\n id,\n empty,\n disabled,\n outcome,\n index,\n guideIndex,\n instanceId,\n draggable,\n tileIndex,\n } = props;\n\n // Use type + tileIndex in the IDs to guarantee uniqueness in all modes.\n // In includeTargets mode, a choice (id:'c1', type:'choice') and a target (id:'c1', type:'target')\n // can coexist — the type differentiates them.\n // tileIndex (array position from tiler) ensures empty placeholders are also unique.\n const dragId = `tile-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;\n const dropId = `drop-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n isDragging,\n } = useDraggable({\n id: dragId,\n data: {\n id,\n type,\n instanceId,\n value: label,\n index\n },\n disabled: !draggable || disabled,\n });\n\n const {\n setNodeRef: setDropRef,\n isOver: dropIsOver,\n } = useDroppable({\n id: dropId,\n data: {\n id,\n type,\n instanceId,\n value: label,\n index\n },\n // Disable droppable on the tile currently being dragged so closestCenter\n // cannot pick it as the drop target (prevents self-collision and wrong matches).\n disabled: isDragging,\n });\n\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n const currentRef = ref.current;\n\n const handleTouchStart = (e) => {\n e.preventDefault(); // Prevent the default touch event behavior\n };\n\n if (currentRef) {\n currentRef.addEventListener('touchstart', handleTouchStart, { passive: false });\n }\n\n return () => {\n if (currentRef) {\n currentRef.removeEventListener('touchstart', handleTouchStart);\n }\n };\n }, []);\n\n const setRefs = (element) => {\n ref.current = element;\n setDragRef(element);\n setDropRef(element);\n };\n\n log('[render], props: ', props);\n\n const style = {\n transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,\n boxSizing: 'border-box',\n overflow: 'visible',\n padding: 0,\n margin: 0,\n textAlign: 'center',\n pointerEvents: 'auto',\n cursor: disabled ? 'not-allowed' : (isDragging ? 'grabbing' : 'grab'),\n zIndex: isDragging ? 1000 : 'auto',\n willChange: isDragging ? 'transform' : 'auto',\n };\n\n return (\n <div\n ref={setRefs}\n style={style}\n {...(draggable && !disabled ? { ...listeners, ...attributes } : {})}\n >\n <TileContent\n label={label}\n id={id}\n empty={empty}\n index={index}\n guideIndex={guideIndex}\n isOver={dropIsOver}\n isDragging={isDragging}\n disabled={disabled}\n outcome={outcome}\n type={type}\n />\n </div>\n );\n};\n\nTile.propTypes = {\n id: PropTypes.any,\n label: PropTypes.string,\n isOver: PropTypes.bool,\n type: PropTypes.string,\n empty: PropTypes.bool,\n disabled: PropTypes.bool,\n outcome: PropTypes.string,\n index: PropTypes.number,\n guideIndex: PropTypes.number,\n instanceId: PropTypes.any,\n draggable: PropTypes.bool,\n tileIndex: PropTypes.number,\n};\n\nexport default Tile;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/tiler.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { styled } from '@mui/material/styles';\n\nimport Tile from './tile.js';\n\nconst types = {\n choiceLabel: PropTypes.string,\n targetLabel: PropTypes.string,\n disabled: PropTypes.bool,\n tiles: PropTypes.array.isRequired,\n tileSize: PropTypes.string,\n addGuide: PropTypes.bool,\n};\n\nconst defaults = {\n tileSize: '1fr',\n disabled: false,\n addGuide: false,\n};\n\nconst buildTiles = (props) => {\n const T = (tile, index) => {\n tile.instanceId = props.instanceId;\n tile.disabled = props.disabled;\n tile.guideIndex = props.addGuide ? tile.index + 1 : undefined;\n // unique key for dnd-kit IDs\n tile.tileIndex = index;\n\n if (props.includeTargets) {\n return <Tile {...tile} key={index} />;\n } else {\n return tile.type === 'choice' ? <Tile {...tile} key={index} /> : <Tile {...tile} label=\"\" key={index} />;\n }\n };\n\n T.propTypes = { ...types };\n return T;\n};\n\nconst StyledHTilerContainer: any = styled('div')(({ theme, includeTargets }) => ({\n display: 'grid',\n paddingBottom: theme.spacing(2),\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledChoiceLabel: any = styled('div')({\n textAlign: 'center',\n});\n\nconst StyledTargetLabel: any = styled('div')({\n textAlign: 'center',\n gridRow: '3/4',\n});\n\nconst StyledVTilerContainer: any = styled('div')(({ includeTargets }) => ({\n gridAutoFlow: 'column',\n display: 'grid',\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledVChoiceLabel: any = styled('div')({\n gridColumn: '1/2',\n textAlign: 'center',\n});\n\nconst StyledVTargetLabel: any = styled('div')({\n gridColumn: '2/3',\n textAlign: 'center',\n});\n\nexport class HorizontalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const rows = includeTargets ? `auto ${tileSize} auto ${tileSize}` : `auto ${tileSize} auto`;\n const columns = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: includeTargets\n ? `repeat(${columns}, ${tileSize})`\n : `auto repeat(${Math.floor(columns / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n gridTemplateRows: rows,\n };\n\n const labelStyle = {\n gridColumn: `1/${columns + 1}`,\n };\n\n return (\n <StyledHTilerContainer includeTargets={includeTargets} style={style}>\n <StyledChoiceLabel\n style={labelStyle}\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n {includeTargets && (\n <StyledTargetLabel style={labelStyle} dangerouslySetInnerHTML={{ __html: targetLabel }} />\n )}\n {tiles.map(buildTiles(this.props))}\n </StyledHTilerContainer>\n );\n }\n}\n\nexport class VerticalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const columns = includeTargets ? 2 : 1;\n const rows = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: `repeat(${columns}, ${tileSize})`,\n gridTemplateRows: includeTargets\n ? `auto repeat(${rows}, ${tileSize})`\n : `auto auto repeat(${Math.floor(rows / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n };\n\n return (\n <StyledVTilerContainer includeTargets={includeTargets} style={style}>\n <StyledVChoiceLabel\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n\n {includeTargets && <StyledVTargetLabel dangerouslySetInnerHTML={{ __html: targetLabel }} />}\n {tiles.map(buildTiles(this.props))}\n </StyledVTilerContainer>\n );\n }\n}\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/ordering.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport { assign, cloneDeep, isEmpty, map } from '@pie-element/shared-lodash';\nimport debug from 'debug';\n\nconst log = debug('pie-elements:placement-ordering:ordering');\n\nexport const push = (arr, fromIndex, toIndex) => {\n const movedItem = arr.find((item, index) => index === fromIndex);\n const remainingItems = arr.filter((item, index) => index !== fromIndex);\n\n return [...remainingItems.slice(0, toIndex), movedItem, ...remainingItems.slice(toIndex)];\n};\n\nexport const swap = (arr, fromIndex, toIndex) => {\n log('[swap]', arr, fromIndex, toIndex);\n if (!arr || arr.length <= 1 || fromIndex === undefined || toIndex === undefined) {\n throw new Error(`swap requires a non-empty array, fromIndex, toIndex: ${arr}, ${fromIndex} ${toIndex}`);\n }\n const update = cloneDeep(arr);\n const tmp = arr[toIndex];\n update[toIndex] = update[fromIndex];\n update[fromIndex] = tmp;\n return update;\n};\n\nfunction removeResponse(state, targetTile) {\n const update = cloneDeep(state.response);\n\n if (update[targetTile.index] === targetTile.id) {\n update[targetTile.index] = undefined;\n } else {\n throw new Error(\n `Tried to remove from index: ${targetTile.index}, but the id doesn't match: array: ${update}, target: ${targetTile.id}`,\n );\n }\n return update;\n}\n\nfunction updateResponse(state, from, to) {\n const { response, opts } = state;\n const update = cloneDeep(response);\n if (opts.includeTargets) {\n if (from.type === 'choice' && to.type === 'target') {\n update[to.index] = from.id;\n return update;\n } else if (from.type === 'target' && to.type === 'choice') {\n update[from.index] = undefined;\n return update;\n } else if (from.type === 'target' && to.type === 'target') {\n return swap(response, from.index, to.index);\n } else {\n log('do nothing to the response');\n return response;\n }\n } else {\n const fromIndex = state.response.findIndex((r) => r !== undefined && r === from.id);\n const toIndex = state.response.findIndex((r) => r !== undefined && r === to.id);\n log('fromIndex: ', fromIndex, 'toIndex:', toIndex);\n return push(state.response, fromIndex, toIndex);\n }\n}\n\nfunction buildTiles(choices, response, outcomes, opts) {\n if (opts.includeTargets) {\n const targets = [];\n for (let i = 0; i < response.length; i++) {\n const r = response[i];\n\n const choice = choices.find((c) => r !== undefined && r !== null && c.id === r);\n //TODO: index needs to match too!!\n const outcome = outcomes[i];\n\n const out = Object.assign({ type: 'target', index: i, empty: choice === undefined }, choice, outcome, {\n draggable: choice !== undefined,\n });\n\n targets.push(out);\n }\n\n const processedChoices = choices.map((m) => {\n if (response.indexOf(m.id) !== -1 && !opts.allowSameChoiceInTargets) {\n return {\n type: 'choice',\n empty: true,\n droppable: true,\n draggable: false,\n };\n } else {\n return Object.assign({}, m, {\n type: 'choice',\n droppable: false,\n draggable: true,\n });\n }\n });\n\n return processedChoices.concat(targets);\n } else {\n return response.reduce((acc, id, index) => {\n const emptyTile = Object.assign(\n { type: 'empty', draggable: false, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n const choiceTile = Object.assign(\n { type: 'choice', draggable: true, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n\n if (index === 0) {\n acc.push(emptyTile);\n }\n\n acc.push(choiceTile, emptyTile);\n\n return acc;\n }, []);\n }\n}\n\nexport function buildState(choices, response, outcomes, opts) {\n opts = assign({ includeTargets: true }, opts);\n\n outcomes = outcomes || [];\n response =\n !response || isEmpty(response)\n ? opts.includeTargets\n ? new Array(choices.length)\n : map(choices, (c) => c.id)\n : response;\n return {\n choices,\n response,\n opts,\n outcomes,\n tiles: buildTiles(choices, response, outcomes, opts),\n };\n}\n\nexport function reducer(action, state) {\n switch (action.type) {\n case 'move': {\n const { from, to } = action;\n const response = updateResponse(state, from, to);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n case 'remove': {\n const { target } = action;\n const response = removeResponse(state, target);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n }\n return state;\n}\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/utils.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nexport const haveSameValuesButDifferentOrder = (arr1, arr2) => {\n if (!Array.isArray(arr1) || !Array.isArray(arr2)) return false;\n if (arr1.length !== arr2.length) return false;\n\n const toSortedJson = (arr) =>\n arr\n .map((item) => JSON.stringify(item))\n .sort();\n\n const sortedArr1 = toSortedJson(arr1);\n const sortedArr2 = toSortedJson(arr2);\n\n const hasSameValues = sortedArr1.every((val, i) => val === sortedArr2[i]);\n const hasSameOrder = arr1.every((item, i) =>\n JSON.stringify(item) === JSON.stringify(arr2[i])\n );\n\n return hasSameValues && !hasSameOrder;\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/placement-ordering.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { difference, isEqual, uniqueId } from '@pie-element/shared-lodash';\nimport { styled } from '@mui/material/styles';\nimport { closestCenter } from '@dnd-kit/core';\n\nimport { Collapsible as CollapsibleImport, color, Feedback as FeedbackImport, hasMedia, hasText, PreviewPrompt as PreviewPromptImport, UiLayout as UiLayoutImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst UiLayout = unwrapReactInteropSymbol(UiLayoutImport, 'UiLayout') || unwrapReactInteropSymbol(renderUi.UiLayout, 'UiLayout');\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Feedback = unwrapReactInteropSymbol(FeedbackImport, 'Feedback') || unwrapReactInteropSymbol(renderUi.Feedback, 'Feedback');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport Translator from '@pie-lib/translator';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { DragProvider } from '@pie-lib/drag';\n\nimport { HorizontalTiler, VerticalTiler } from './tiler.js';\nimport { buildState, reducer } from './ordering.js';\nimport { haveSameValuesButDifferentOrder } from './utils.js';\n\nconst { translator } = Translator;\n\nconst log = debug('pie-elements:placement-ordering');\n\nconst PlacementOrderingContainer: any = styled('div')({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n});\n\nconst StyledPrompt: any = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledNote: any = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledToggle: any = styled(CorrectAnswerToggle)(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledCollapsible: any = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n alignSelf: 'flex-start',\n}));\n\nconst OrderingTiler = (props) => {\n const { tiler: Comp, ordering, onDropChoice, onRemoveChoice, ...compProps } = props;\n\n return (\n <Comp\n {...compProps}\n tiles={ordering.tiles}\n onDropChoice={(t, s) => onDropChoice(t, s, ordering)}\n onRemoveChoice={(t) => onRemoveChoice(t, ordering)}\n />\n );\n};\n\nOrderingTiler.propTypes = {\n tiler: PropTypes.func,\n ordering: PropTypes.any,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n};\n\nexport class PlacementOrdering extends React.Component {\n static propTypes = {\n onSessionChange: PropTypes.func.isRequired,\n model: PropTypes.object.isRequired,\n session: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired]),\n };\n\n constructor(props) {\n super(props);\n\n this.instanceId = uniqueId();\n\n const { value, needsReset } = this.validateSession(props);\n\n this.state = {\n showingCorrect: false,\n };\n\n const { model } = props || {};\n const { env } = model || {};\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange({\n ...props.session,\n value,\n });\n }\n }\n\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n validateSession: any = ({ model, session }, areChoicesShuffled = false) => {\n const { config, choices } = model || {};\n const { includeTargets } = config || {};\n const choicesIds = choices.map((c) => c.id);\n\n let { value } = session || {};\n let needsReset;\n\n if (!includeTargets) {\n // Use all choice IDs if choices were shuffled or session is missing/invalid\n const sessionMissing = !value || !value.length;\n if (sessionMissing || areChoicesShuffled) {\n // if there's no value on session in No Targets Mode, we need to set an initial session\n value = choicesIds;\n } else {\n // in No Targets Mode, all choice ids need to be used\n const missingChoiceIds = difference(choicesIds, value);\n // this is the case that handles extra choice ids in session\n const extraChoiceIds = difference(value, choicesIds);\n\n if (missingChoiceIds.length || extraChoiceIds.length) {\n value = choicesIds;\n }\n }\n\n needsReset = !isEqual(session.value, value);\n } else {\n // in Targets Area selected, it's important to check the length of session\n const sessionIsMismatched = value && value.length !== choicesIds.length;\n if (sessionIsMismatched) {\n needsReset = true;\n\n // if choices were added, add value in session\n if (value.length < choicesIds.length) {\n value = value.concat(new Array(choicesIds.length - value.length));\n } else {\n // if choices were removed, make sure to remove from session as well\n value = value.filter((cId) => choicesIds.includes(cId));\n }\n }\n }\n\n if (needsReset) {\n // eslint-disable-next-line no-console\n console.warn('This session is not valid anymore. It will be reset.');\n }\n\n return { value, needsReset };\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model: nextModel = {} } = nextProps || {};\n const { model: currentModel = {} } = this.props || {};\n const { correctResponse, config, choices: nextChoices = [], env } = nextModel;\n const { includeTargets } = config || {};\n\n const newState = {};\n\n const isLanguageChanged = currentModel.language && currentModel.language !== nextModel.language;\n const isDefaultNote =\n currentModel.note &&\n currentModel.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: currentModel.language });\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (isLanguageChanged && isDefaultNote) {\n currentModel.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\n if (!correctResponse) {\n newState.showingCorrect = false;\n }\n\n //PD-4924\n // show student choices same order as in model when teacher changes student choices order\n // for cases when student view and instructor view are on same page\n const areChoicesShuffled = haveSameValuesButDifferentOrder(nextChoices, currentModel.choices);\n\n const validatedSession = this.validateSession(nextProps, areChoicesShuffled);\n let { value, needsReset } = validatedSession;\n\n const newSession = {\n ...nextProps.session,\n value,\n };\n const includeTargetsChanged = currentModel.config?.includeTargets !== includeTargets;\n\n if (includeTargets && includeTargetsChanged) {\n needsReset = true;\n\n delete newSession.value;\n }\n\n this.setState(newState, () => {\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange(newSession);\n }\n });\n }\n\n onDropChoice: any = (target, source, ordering) => {\n const { onSessionChange, session } = this.props;\n const from = ordering.tiles.find((t) => t.id === source.id && t.type === source.type && t.index === source.index);\n const to = target;\n log('[onDropChoice] ', from, to);\n const update = reducer({ type: 'move', from, to }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n\n onSessionChange(sessionUpdate);\n };\n\n onRemoveChoice: any = (target, ordering) => {\n const { onSessionChange, session } = this.props;\n log('[onRemoveChoice]', target);\n const update = reducer({ type: 'remove', target }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n onSessionChange(sessionUpdate);\n };\n\n createOrdering: any = () => {\n const { model, session } = this.props;\n const { showingCorrect } = this.state;\n const config = model.config || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { includeTargets } = config;\n\n return showingCorrect\n ? buildState(\n model.choices,\n model.correctResponse,\n model.correctResponse.map((id) => ({ id, outcome: 'correct' })),\n {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n },\n )\n : buildState(model.choices, session.value, model.outcomes, {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n });\n };\n\n onDragEnd: any = (event) => {\n const { over, active } = event;\n const ordering = this.createOrdering();\n\n if (over && active) {\n const draggedItem = active.data.current;\n const droppedOnItem = over.data.current;\n\n if (draggedItem && droppedOnItem && droppedOnItem.type === 'target') {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n return;\n }\n\n if (draggedItem && droppedOnItem) {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n }\n } else if (!over && active) {\n const draggedItem = active.data.current;\n if (draggedItem && draggedItem.type === 'target') {\n this.onRemoveChoice(draggedItem, ordering);\n }\n }\n };\n\n render() {\n const { model } = this.props;\n const {\n correctResponse,\n correctness,\n extraCSSRules,\n prompt,\n rationale,\n feedback,\n config: configs,\n note,\n showNote,\n env,\n disabled,\n teacherInstructions,\n language,\n } = model;\n const showToggle = correctResponse && correctResponse.length > 0;\n const { showingCorrect } = this.state;\n const config = configs || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { orientation, includeTargets } = config;\n const vertical = orientation === 'vertical';\n const ordering = this.createOrdering();\n const { mode, role } = env || {};\n\n const Tiler = vertical ? VerticalTiler : HorizontalTiler;\n const displayNote = (showingCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const containerStyle = {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n };\n\n return (\n <DragProvider onDragStart={() => { }} onDragEnd={this.onDragEnd} collisionDetection={closestCenter}>\n <PlacementOrderingContainer>\n <UiLayout extraCSSRules={extraCSSRules} style={containerStyle}>\n {showTeacherInstructions && (\n <StyledCollapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className=\"collapsible\"\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n <StyledPrompt>\n <PreviewPrompt prompt={prompt} />\n </StyledPrompt>\n\n <StyledToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n\n <OrderingTiler\n instanceId={this.instanceId}\n choiceLabel={config.choiceLabel}\n targetLabel={config.targetLabel}\n ordering={ordering}\n tiler={Tiler}\n disabled={disabled}\n addGuide={config.showOrdering}\n tileSize={config.tileSize}\n includeTargets={includeTargets}\n choiceLabelEnabled={model.config && model.config.choiceLabelEnabled}\n />\n\n {displayNote && <StyledNote dangerouslySetInnerHTML={{ __html: note }} />}\n\n {showRationale && (\n <StyledCollapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className=\"collapsible\"\n >\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {!showingCorrect && <Feedback correctness={correctness} feedback={feedback} />}\n </UiLayout>\n </PlacementOrderingContainer>\n </DragProvider>\n );\n }\n}\n\nexport default PlacementOrdering;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/main.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport PlacementOrdering from './placement-ordering.js';\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n session: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired]),\n onSessionChange: PropTypes.func.isRequired,\n };\n\n render() {\n const { model, session, onSessionChange } = this.props;\n\n return (\n <PlacementOrdering model={model} session={session} onSessionChange={onSessionChange} />\n );\n }\n}\n\nexport default Main;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/index.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { compact } from '@pie-element/shared-lodash';\nimport debug from 'debug';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport { SessionChangedEvent } from '@pie-element/shared-player-events';\nimport Main from './main.js';\n\nconst log = debug('pie-elements:placement-ordering');\n\nexport const isValidSession = ({ model, session }) => {\n const { config } = model;\n\n const compactSessionValues = (session && compact(session.value)) || [];\n const completeSession = compactSessionValues.length === model.choices.length;\n\n // if it includes targets, it doesn't have to contain all the choices selected (eg: only 2 targets were filled)\n // but if it does not include targets, it's a must to have all choices selected\n return config.includeTargets || completeSession;\n};\n\nexport default class Ordering extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n this._mathObserver = null;\n this._mathRenderPending = false;\n }\n\n _scheduleMathRender: any = () => {\n if (this._mathRenderPending) return;\n this._mathRenderPending = true;\n\n requestAnimationFrame(() => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n }\n renderMath(this);\n this._mathRenderPending = false;\n setTimeout(() => {\n if (this._mathObserver) {\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n }, 50);\n });\n };\n\n _initMathObserver() {\n if (this._mathObserver) return;\n this._mathObserver = new MutationObserver(this._scheduleMathRender);\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n\n _disconnectMathObserver() {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserver = null;\n }\n }\n\n isComplete = (value) => value && compact(value).length === this._model.completeLength;\n\n sessionChange: any = (session) => {\n this._session.value = session.value;\n this.render();\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), this._session && this.isComplete(this._session.value)),\n );\n };\n\n set model(newModel) {\n this._model = newModel;\n\n this.render();\n this.dispatchEvent(\n new CustomEvent('model-set', {\n bubbles: true,\n detail: {\n complete: false,\n },\n }),\n );\n }\n\n set session(newSession) {\n this._session = newSession;\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n render() {\n if (this._model && this._session) {\n log('[render] session: ', this._session.value);\n log('[render] model: ', this._model);\n\n this._initMathObserver();\n\n const element = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChange,\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(element);\n }\n }\n\n connectedCallback() {\n this._initMathObserver();\n }\n\n disconnectedCallback() {\n this._disconnectMathObserver();\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"x_google_ignoreList":[4],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../shared/player-events/dist/index.js","../../../../../../node_modules/.bun/@dnd-kit+modifiers@9.0.0+e39cb113295c5721/node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js","../../../../../lib-react/icons/dist/correct-response-icon.js","../../../../../lib-react/correct-answer-toggle/dist/expander.js","../../../../../lib-react/correct-answer-toggle/dist/index.js","../../../../../lib-react/drag/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js","../../../../../lib-react/drag/dist/placeholder.js","../../../src/delivery/tile.tsx","../../../src/delivery/tiler.tsx","../../../src/delivery/ordering.ts","../../../src/delivery/utils.ts","../../../src/delivery/keyboard-coordinates.ts","../../../src/delivery/placement-ordering.tsx","../../../src/delivery/main.tsx","../../../src/delivery/index.ts"],"sourcesContent":["//#region src/index.ts\nvar e = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model-set\";\n\t}\n\tconstructor(t, n, r) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t,\n\t\t\t\thasModel: r\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n}, t = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"session-changed\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n};\n//#endregion\nexport { e as ModelSetEvent, t as SessionChangedEvent };\n","import { getEventCoordinates } from '@dnd-kit/utilities';\n\nfunction createSnapModifier(gridSize) {\n return _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: Math.ceil(transform.x / gridSize) * gridSize,\n y: Math.ceil(transform.y / gridSize) * gridSize\n };\n };\n}\n\nconst restrictToHorizontalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n y: 0\n };\n};\n\nfunction restrictToBoundingRect(transform, rect, boundingRect) {\n const value = { ...transform\n };\n\n if (rect.top + transform.y <= boundingRect.top) {\n value.y = boundingRect.top - rect.top;\n } else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n value.y = boundingRect.top + boundingRect.height - rect.bottom;\n }\n\n if (rect.left + transform.x <= boundingRect.left) {\n value.x = boundingRect.left - rect.left;\n } else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {\n value.x = boundingRect.left + boundingRect.width - rect.right;\n }\n\n return value;\n}\n\nconst restrictToParentElement = _ref => {\n let {\n containerNodeRect,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (!draggingNodeRect || !containerNodeRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);\n};\n\nconst restrictToFirstScrollableAncestor = _ref => {\n let {\n draggingNodeRect,\n transform,\n scrollableAncestorRects\n } = _ref;\n const firstScrollableAncestorRect = scrollableAncestorRects[0];\n\n if (!draggingNodeRect || !firstScrollableAncestorRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);\n};\n\nconst restrictToVerticalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: 0\n };\n};\n\nconst restrictToWindowEdges = _ref => {\n let {\n transform,\n draggingNodeRect,\n windowRect\n } = _ref;\n\n if (!draggingNodeRect || !windowRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, windowRect);\n};\n\nconst snapCenterToCursor = _ref => {\n let {\n activatorEvent,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (draggingNodeRect && activatorEvent) {\n const activatorCoordinates = getEventCoordinates(activatorEvent);\n\n if (!activatorCoordinates) {\n return transform;\n }\n\n const offsetX = activatorCoordinates.x - draggingNodeRect.left;\n const offsetY = activatorCoordinates.y - draggingNodeRect.top;\n return { ...transform,\n x: transform.x + offsetX - draggingNodeRect.width / 2,\n y: transform.y + offsetY - draggingNodeRect.height / 2\n };\n }\n\n return transform;\n};\n\nexport { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };\n//# sourceMappingURL=modifiers.esm.js.map\n","import \"react\";\nimport e from \"prop-types\";\nimport { jsx as t, jsxs as n } from \"react/jsx-runtime\";\nimport { styled as r } from \"@mui/material/styles\";\n//#region src/correct-response-icon.tsx\nvar i = ({ bgFill: e, fgFill: r }) => /* @__PURE__ */ n(\"svg\", {\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-283 359 34 35\",\n\tstyle: { enableBackground: \"new -283 359 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-266\",\n\t\t\tcy: \"375.9\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"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\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-265.4,383.1 -258.6,377.2 -261.2,374.2 -264.3,376.9 -268.9,368.7 -272.4,370.6\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\ni.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired\n};\nvar a = ({ bgFill: e, fgFill: r, borderFill: i }) => /* @__PURE__ */ n(\"svg\", {\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-129.5 127 34 35\",\n\tstyle: { enableBackground: \"new -129.5 127 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#D0CAC5\",\n\t\t\t\tstroke: \"#E6E3E0\",\n\t\t\t\tstrokeWidth: .75,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"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\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#B3ABA4\",\n\t\t\t\tstroke: \"#CDC7C2\",\n\t\t\t\tstrokeWidth: .5,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"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\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-114.2\",\n\t\t\tcy: \"143.5\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"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\",\n\t\t\tfill: i\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-114.8,150.7 -121.6,144.8 -119,141.8 -115.9,144.5 -111.3,136.3 -107.8,138.2\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\na.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired,\n\tborderFill: e.string.isRequired\n};\nvar o = r(\"div\")(({ size: e }) => ({\n\twidth: e || \"25px\",\n\theight: e || \"25px\"\n})), s = ({ open: e, size: n }) => /* @__PURE__ */ t(o, {\n\tsize: n,\n\tchildren: e ? /* @__PURE__ */ t(i, {\n\t\tbgFill: \"#bce2ff\",\n\t\tfgFill: \"#1a9cff\"\n\t}) : /* @__PURE__ */ t(a, {\n\t\tbgFill: \"white\",\n\t\tfgFill: \"#1a9cff\",\n\t\tborderFill: \"#bce2ff\"\n\t})\n});\ns.propTypes = {\n\topen: e.bool,\n\tsize: e.string\n}, s.defaultProps = { open: !1 };\n//#endregion\nexport { s as default };\n","import { styled as e } from \"@mui/material/styles\";\nimport { CSSTransition as t } from \"react-transition-group\";\nimport { jsx as n } from \"react/jsx-runtime\";\nimport { useRef as r } from \"react\";\nimport i from \"prop-types\";\n//#region src/expander.tsx\nvar a = \"height ease-in 300ms, opacity ease-in 300ms\", o = e(\"div\")(() => ({\n\tposition: \"relative\",\n\theight: 0,\n\toverflow: \"hidden\",\n\tdisplay: \"flex\",\n\tvisibility: \"hidden\",\n\twidth: 0,\n\t\"&.enter\": {\n\t\ttransition: a,\n\t\topacity: 1,\n\t\theight: \"auto\",\n\t\twidth: \"auto\",\n\t\tvisibility: \"visible\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.enter-done\": {\n\t\theight: \"auto\",\n\t\tvisibility: \"visible\",\n\t\twidth: \"auto\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.exit\": {\n\t\ttransition: a,\n\t\topacity: 0,\n\t\theight: 0,\n\t\tvisibility: \"visible\",\n\t\twidth: 0\n\t},\n\t\"&.exit-done\": {\n\t\topacity: 0,\n\t\tvisibility: \"hidden\",\n\t\theight: 0,\n\t\twidth: 0\n\t}\n})), s = (e) => {\n\tlet { show: i, children: a, className: s } = e, c = r(null);\n\treturn /* @__PURE__ */ n(t, {\n\t\tnodeRef: c,\n\t\tin: i,\n\t\tappear: !0,\n\t\tmountOnEnter: !1,\n\t\ttimeout: 300,\n\t\tclassNames: {\n\t\t\tenter: \"enter\",\n\t\t\tenterDone: \"enter-done\",\n\t\t\texit: \"exit\",\n\t\t\texitDone: \"exit-done\"\n\t\t},\n\t\tchildren: /* @__PURE__ */ n(o, {\n\t\t\tref: c,\n\t\t\tclassName: s,\n\t\t\tchildren: a\n\t\t})\n\t});\n};\ns.propTypes = {\n\tshow: i.bool.isRequired,\n\tclassName: i.string,\n\tchildren: i.oneOfType([i.arrayOf(i.node), i.node]).isRequired\n};\n//#endregion\nexport { s as default };\n","import e from \"./expander.js\";\nimport { styled as t } from \"@mui/material/styles\";\nimport { CSSTransition as n } from \"react-transition-group\";\nimport { CorrectResponse as r } from \"@pie-lib/icons\";\nimport * as i from \"@pie-lib/render-ui\";\nimport { Readable as a, color as o } from \"@pie-lib/render-ui\";\nimport { jsx as s, jsxs as c } from \"react/jsx-runtime\";\nimport l from \"react\";\nimport u from \"prop-types\";\nimport d from \"@pie-lib/translator\";\n//#region src/index.tsx\nfunction f(e) {\n\treturn typeof e == \"function\" || typeof e == \"object\" && !!e && typeof e.$$typeof == \"symbol\";\n}\nfunction p(e, t) {\n\treturn !e || f(e) ? e : f(e.default) ? e.default : t && f(e[t]) ? e[t] : t && f(e[t]?.default) ? e[t].default : e;\n}\nvar m = p(a, \"Readable\") || p(_.Readable, \"Readable\"), h = i, g = h.default, _ = g && typeof g == \"object\" ? g : h, { translator: v } = d, y = {\n\tWebkitTouchCallout: \"none\",\n\tWebkitUserSelect: \"none\",\n\tKhtmlUserSelect: \"none\",\n\tMozUserSelect: \"none\",\n\tmsUserSelect: \"none\",\n\tuserSelect: \"none\"\n}, b = t(\"div\")(() => ({\n\twidth: \"100%\",\n\tcursor: \"pointer\"\n})), x = t(\"div\")(() => ({\n\tmargin: \"0 auto\",\n\ttextAlign: \"center\",\n\tdisplay: \"flex\"\n})), S = t(\"div\")(() => ({\n\twidth: \"fit-content\",\n\tminWidth: \"140px\",\n\talignSelf: \"center\",\n\tverticalAlign: \"middle\",\n\tcolor: `var(--correct-answer-toggle-label-color, ${o.text()})`,\n\tfontWeight: \"normal\",\n\t...y\n})), C = t(\"div\")(() => ({\n\tposition: \"absolute\",\n\twidth: \"25px\",\n\t\"&.enter\": { opacity: \"0\" },\n\t\"&.enter-active\": {\n\t\topacity: \"1\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t},\n\t\"&.exit\": { opacity: \"1\" },\n\t\"&.exit-active\": {\n\t\topacity: \"0\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t}\n})), w = t(\"div\")(() => ({\n\twidth: \"25px\",\n\tmarginRight: \"5px\",\n\tdisplay: \"flex\",\n\talignItems: \"center\"\n})), T = class t extends l.Component {\n\tstatic propTypes = {\n\t\tonToggle: u.func,\n\t\ttoggled: u.bool,\n\t\tshow: u.bool,\n\t\thideMessage: u.string,\n\t\tshowMessage: u.string,\n\t\tclassName: u.string,\n\t\tlanguage: u.string\n\t};\n\tstatic defaultProps = {\n\t\tshowMessage: \"Show correct answer\",\n\t\thideMessage: \"Hide correct answer\",\n\t\tshow: !1,\n\t\ttoggled: !1\n\t};\n\tconstructor(e) {\n\t\tsuper(e), this.state = { show: e.show }, this.openIconRef = l.createRef(), this.closedIconRef = l.createRef(), t.defaultProps = {\n\t\t\t...t.defaultProps,\n\t\t\tshowMessage: v.t(\"common:showCorrectAnswer\", { lng: e.language }),\n\t\t\thideMessage: v.t(\"common:hideCorrectAnswer\", { lng: e.language })\n\t\t};\n\t}\n\tonClick() {\n\t\tthis.props.onToggle(!this.props.toggled);\n\t}\n\tonTouch(e) {\n\t\te.preventDefault(), this.props.onToggle(!this.props.toggled);\n\t}\n\tUNSAFE_componentWillReceiveProps(e) {\n\t\tthis.setState({ show: e.show }), e.language !== this.props?.language && (t.defaultProps = {\n\t\t\t...t.defaultProps,\n\t\t\tshowMessage: v.t(\"common:showCorrectAnswer\", { lng: e.language }),\n\t\t\thideMessage: v.t(\"common:hideCorrectAnswer\", { lng: e.language })\n\t\t});\n\t}\n\trender() {\n\t\tlet { className: t, toggled: i, hideMessage: a, showMessage: o } = this.props;\n\t\treturn /* @__PURE__ */ s(b, {\n\t\t\tclassName: t,\n\t\t\tchildren: /* @__PURE__ */ s(e, {\n\t\t\t\tshow: this.state.show,\n\t\t\t\tchildren: /* @__PURE__ */ c(x, {\n\t\t\t\t\tonClick: this.onClick.bind(this),\n\t\t\t\t\tonTouchEnd: this.onTouch.bind(this),\n\t\t\t\t\tchildren: [/* @__PURE__ */ c(w, { children: [/* @__PURE__ */ s(n, {\n\t\t\t\t\t\tnodeRef: this.openIconRef,\n\t\t\t\t\t\ttimeout: 400,\n\t\t\t\t\t\tin: i,\n\t\t\t\t\t\texit: !i,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(C, {\n\t\t\t\t\t\t\tref: this.openIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(r, { open: i }, \"correct-open\")\n\t\t\t\t\t\t})\n\t\t\t\t\t}), /* @__PURE__ */ s(n, {\n\t\t\t\t\t\tnodeRef: this.closedIconRef,\n\t\t\t\t\t\ttimeout: 5e3,\n\t\t\t\t\t\tin: !i,\n\t\t\t\t\t\texit: i,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(C, {\n\t\t\t\t\t\t\tref: this.closedIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(r, { open: i }, \"correct-closed\")\n\t\t\t\t\t\t})\n\t\t\t\t\t})] }), /* @__PURE__ */ s(m, {\n\t\t\t\t\t\tfalse: !0,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ s(S, {\n\t\t\t\t\t\t\t\"aria-hidden\": !this.state.show,\n\t\t\t\t\t\t\tchildren: i ? a : o\n\t\t\t\t\t\t})\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t}\n};\n//#endregion\nexport { T as CorrectAnswerToggle, T as default };\n","//#region ../../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs\nfunction e(t) {\n\tvar n, r, i = \"\";\n\tif (typeof t == \"string\" || typeof t == \"number\") i += t;\n\telse if (typeof t == \"object\") if (Array.isArray(t)) {\n\t\tvar a = t.length;\n\t\tfor (n = 0; n < a; n++) t[n] && (r = e(t[n])) && (i && (i += \" \"), i += r);\n\t} else for (r in t) t[r] && (i && (i += \" \"), i += r);\n\treturn i;\n}\nfunction t() {\n\tfor (var t, n, r = 0, i = \"\", a = arguments.length; r < a; r++) (t = arguments[r]) && (n = e(t)) && (i && (i += \" \"), i += n);\n\treturn i;\n}\n//#endregion\nexport { t as clsx, t as default };\n","import { clsx as e } from \"./node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js\";\nimport \"react\";\nimport { styled as t } from \"@mui/material/styles\";\nimport n from \"prop-types\";\nimport { color as r } from \"@pie-lib/render-ui\";\nimport { grey as i } from \"@mui/material/colors\";\nimport { jsx as a } from \"react/jsx-runtime\";\n//#region src/placeholder.tsx\nvar o = t(\"div\")(({ theme: e }) => ({\n\t\"&.placeholder\": {\n\t\tWebkitTouchCallout: \"none\",\n\t\tWebkitUserSelect: \"none\",\n\t\tKhtmlUserSelect: \"none\",\n\t\tMozUserSelect: \"none\",\n\t\tMsUserSelect: \"none\",\n\t\tuserSelect: \"none\",\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t\tbackground: r.white(),\n\t\ttransition: \"background-color 200ms linear, border-color 200ms linear\",\n\t\tboxSizing: \"border-box\",\n\t\tdisplay: \"grid\",\n\t\tgridRowGap: e.spacing(1),\n\t\tgridColumnGap: e.spacing(1),\n\t\tpadding: e.spacing(1),\n\t\tborder: `2px dashed ${r.black()}`\n\t},\n\t\"&.placeholderDisabled\": {\n\t\tboxShadow: \"none\",\n\t\tbackground: e.palette.background.paper\n\t},\n\t\"&.over\": {\n\t\tborder: `1px solid ${i[500]}`,\n\t\tbackgroundColor: `${i[300]}`\n\t},\n\t\"&.board\": {\n\t\tpadding: e.spacing(1),\n\t\tdisplay: \"flex\",\n\t\tflexWrap: \"wrap\",\n\t\talignItems: \"center\",\n\t\tminHeight: \"100px\",\n\t\tjustifyContent: \"center\",\n\t\toverflow: \"hidden\",\n\t\ttouchAction: \"none\",\n\t\tbackgroundColor: r.backgroundDark()\n\t},\n\t\"&.categorizeBoard\": {\n\t\tpadding: e.spacing(.5),\n\t\tdisplay: \"flex\",\n\t\tflexWrap: \"wrap\",\n\t\talignItems: \"center\",\n\t\tminHeight: \"100px\",\n\t\tjustifyContent: \"center\",\n\t\toverflow: \"hidden\",\n\t\ttouchAction: \"none\",\n\t\tbackgroundColor: r.backgroundDark()\n\t},\n\t\"&.verticalPool\": {\n\t\tdisplay: \"flex\",\n\t\tflexFlow: \"column wrap\"\n\t}\n})), s = (t) => {\n\tlet { children: n, className: i, isOver: s, type: c, grid: l, disabled: u, choiceBoard: d, isCategorize: f, isVerticalPool: p, minHeight: m, extraStyles: h } = t, g = e(\"placeholder\", u && \"placeholderDisabled\", s && \"over\", c, i), _ = {};\n\tif (l && l.columns && (_.gridTemplateColumns = `repeat(${l.columns}, 1fr)`), l && l.rows) {\n\t\tlet e = l.rowsRepeatValue || \"1fr\";\n\t\t_.gridTemplateRows = `repeat(${l.rows}, ${e})`;\n\t}\n\tc === \"choice\" && (_.border = `1px solid ${r.borderLight()}`, _.background = r.backgroundDark());\n\tlet v = f ? \"categorizeBoard\" : \"board\";\n\treturn /* @__PURE__ */ a(o, {\n\t\tstyle: {\n\t\t\t..._,\n\t\t\tminHeight: m,\n\t\t\t...h\n\t\t},\n\t\tclassName: e(d ? v : g, p && \"verticalPool\"),\n\t\tchildren: n\n\t});\n};\ns.propTypes = {\n\tchoiceBoard: n.bool,\n\tgrid: n.shape({\n\t\tcolumns: n.number,\n\t\trows: n.number,\n\t\trowsRepeatValue: n.string\n\t}),\n\tchildren: n.oneOfType([n.arrayOf(n.node), n.node]).isRequired,\n\tclassName: n.string,\n\tisOver: n.bool,\n\tindex: n.number,\n\ttype: n.string,\n\tdisabled: n.bool,\n\tisCategorize: n.bool,\n\tisVerticalPool: n.bool,\n\tminHeight: n.number\n};\n//#endregion\nexport { s as PlaceHolder, s as default };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/tile.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport { styled } from '@mui/material/styles';\n\nimport { PlaceHolder } from '@pie-lib/drag';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:placement-ordering:tile');\n\nconst StyledNumberContainer: any = styled('div')(({ theme }) => ({\n width: '100%',\n fontSize: theme.typography.fontSize + 4,\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n}));\n\nconst Holder = ({ type, index, isOver, disabled }) => (\n <PlaceHolder type={type} isOver={isOver} disabled={disabled}>\n {type === 'target' && index !== undefined && <StyledNumberContainer>{index}</StyledNumberContainer>}\n </PlaceHolder>\n);\n\nHolder.propTypes = {\n type: PropTypes.string,\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nconst StyledTileContent: any = styled('div')(\n ({ theme, isDragging, isSelected, isOver, disabled, outcome, label, type }) => ({\n cursor: disabled ? 'not-allowed' : 'grab',\n width: '100%',\n height: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n border: type === 'choice' || type === 'target' ? `1px solid ${color.border()}` : '1px solid transparent',\n backgroundColor: type === 'choice' || type === 'target' ? color.background() : 'transparent',\n transition:\n type === 'choice' || type === 'target'\n ? 'background-color 150ms ease, border-color 150ms ease, opacity 150ms ease'\n : 'none',\n pointerEvents: 'none',\n userSelect: 'none',\n\n ...((type === 'choice' || type === 'target') && {\n '&:hover': {\n backgroundColor: disabled ? color.background() : color.secondary(),\n // The disabled branch says \"disabled\", so it takes the disabled token rather\n // than the neutral stroke the resting state uses.\n borderColor: disabled ? color.disabled() : theme.palette.primary.main,\n transform: disabled ? 'none' : 'scale(1.02)',\n },\n }),\n\n // Apply conditional styles based on props (only if not empty spacing tile)\n ...((type === 'choice' || type === 'target') &&\n isOver &&\n !disabled && {\n opacity: 0.4,\n backgroundColor: color.primaryLight(),\n borderColor: theme.palette.primary.main,\n borderStyle: 'dashed',\n transform: 'scale(1.05)',\n }),\n\n ...((type === 'choice' || type === 'target') &&\n (isDragging || isSelected) &&\n !disabled && {\n opacity: 0.6,\n backgroundColor: color.secondaryLight(),\n transform: 'scale(1.05) rotate(2deg)',\n boxShadow: '0 8px 16px rgba(0,0,0,0.2)',\n cursor: 'grabbing',\n }),\n\n ...((type === 'choice' || type === 'target') &&\n disabled && {\n cursor: 'not-allowed',\n '&:hover': {\n backgroundColor: color.background(),\n transform: 'none',\n },\n }),\n\n ...((type === 'choice' || type === 'target') &&\n outcome === 'incorrect' && {\n border: `1px solid ${color.incorrect()}`,\n }),\n\n ...((type === 'choice' || type === 'target') &&\n outcome === 'correct' && {\n border: `1px solid ${color.correct()}`,\n }),\n\n ...(!label && {\n border: 'none',\n '&:hover': {\n backgroundColor: 'unset',\n },\n }),\n }),\n);\n\nconst TileContent = (props) => {\n const { type, isDragging, isSelected, empty, isOver, label, disabled, outcome, guideIndex } = props;\n\n if (empty) {\n return <Holder type={type} index={guideIndex} isOver={isOver} disabled={disabled} />;\n } else {\n return (\n <StyledTileContent\n type={type}\n isDragging={isDragging}\n isSelected={isSelected}\n isOver={isOver}\n disabled={disabled}\n outcome={outcome}\n label={label}\n dangerouslySetInnerHTML={{ __html: label }}\n />\n );\n }\n};\n\nexport const Tile = (props) => {\n const {\n label,\n type,\n id,\n empty,\n disabled,\n outcome,\n index,\n guideIndex,\n instanceId,\n draggable,\n tileIndex,\n selectedChoice,\n onChoiceClick,\n onPlacementClick,\n } = props;\n\n // Use type + tileIndex in the IDs to guarantee uniqueness in all modes.\n // In includeTargets mode, a choice (id:'c1', type:'choice') and a target (id:'c1', type:'target')\n // can coexist — the type differentiates them.\n // tileIndex (array position from tiler) ensures empty placeholders are also unique.\n const dragId = `tile-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;\n const dropId = `drop-${type}-${id != null ? id : 'empty'}-${tileIndex}-${instanceId}`;\n\n // Built once and reused for dnd-kit's own drag/drop data and for the click handlers\n // below, so a click carries exactly the same shape a real drag would.\n const tileData = { id, type, instanceId, value: label, index };\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n isDragging,\n } = useDraggable({\n id: dragId,\n data: tileData,\n disabled: !draggable || disabled,\n });\n\n const { setNodeRef: setDropRef, isOver: dropIsOver } = useDroppable({\n id: dropId,\n data: tileData,\n // Disable droppable on the tile currently being dragged so closestCenter\n // cannot pick it as the drop target (prevents self-collision and wrong matches).\n disabled: isDragging,\n });\n\n const isSelected =\n !!selectedChoice &&\n selectedChoice.type === tileData.type &&\n selectedChoice.id === tileData.id &&\n selectedChoice.index === tileData.index;\n\n // dnd-kit's own isOver (dropIsOver) only reflects real collision detection during an\n // active drag, so it stays false while a placement area is merely a candidate for a\n // pending click-based placement. Track hovering locally and fold it into the same\n // isOver signal the styling below already uses, so hovering a response area while\n // something is selected gets the exact same treatment as hovering it during a real\n // drag — one code path, no duplicated CSS.\n const [isHovered, setIsHovered] = React.useState(false);\n const hasSelection = !!selectedChoice && !disabled;\n const showsHoverEffect = dropIsOver || (type === 'target' && hasSelection && isHovered);\n\n // Click-to-select/click-to-place (both choices and targets are handled by this same\n // component, differentiated by `type`):\n // - Choice tile: selects/switches/deselects it, UNLESS a placed answer (a \"target\")\n // is currently selected, in which case clicking any choice-row tile returns it to\n // the choices column/row (choice -> choice has no placement meaning in the\n // reducer, so there's no ambiguity there).\n // - Target tile: clicking the already-selected placed answer again deselects it;\n // clicking it while something else is selected places that selection here\n // (empty or occupied); clicking a filled target with nothing selected selects\n // that placed answer for moving, the same way Tab+Space/Enter does. An empty\n // target with nothing selected is a no-op.\n const handleClick = () => {\n if (disabled) return;\n\n if (type === 'choice') {\n if (selectedChoice?.type === 'target') {\n onPlacementClick?.(tileData);\n } else if (draggable) {\n onChoiceClick?.(tileData);\n }\n } else if (type === 'target') {\n if (isSelected) {\n onChoiceClick?.(tileData);\n } else if (selectedChoice) {\n onPlacementClick?.(tileData);\n } else if (draggable) {\n onChoiceClick?.(tileData);\n }\n }\n };\n\n // dnd-kit's own draggable attributes (spread below) already make a draggable tile a\n // native Tab stop with its own Space/Enter activation. An empty tile is never\n // draggable, so without this it wouldn't be reachable by Tab at all — needed for\n // \"select a choice, then Tab to a placement area and press Space/Enter\" to work.\n // Gated to non-draggable tiles specifically so it never overrides dnd-kit's own\n // keydown handling (see the conditional spread order below).\n const isNativeTabStop = !(draggable && !disabled) && !disabled;\n\n const handleKeyDown = (e) => {\n if (e.code === 'Space' || e.code === 'Enter') {\n e.preventDefault();\n handleClick();\n }\n };\n\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n const currentRef = ref.current;\n\n const handleTouchStart = (e) => {\n e.preventDefault(); // Prevent the default touch event behavior\n };\n\n if (currentRef) {\n currentRef.addEventListener('touchstart', handleTouchStart, { passive: false });\n }\n\n return () => {\n if (currentRef) {\n currentRef.removeEventListener('touchstart', handleTouchStart);\n }\n };\n }, []);\n\n const setRefs = (element) => {\n ref.current = element;\n setDragRef(element);\n setDropRef(element);\n };\n\n log('[render], props: ', props);\n\n const style = {\n transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,\n boxSizing: 'border-box',\n overflow: 'visible',\n padding: 0,\n margin: 0,\n textAlign: 'center',\n pointerEvents: 'auto',\n cursor: disabled ? 'not-allowed' : type === 'target' && hasSelection ? 'pointer' : isDragging ? 'grabbing' : 'grab',\n zIndex: isDragging ? 1000 : 'auto',\n willChange: isDragging ? 'transform' : 'auto',\n };\n\n return (\n <div\n ref={setRefs}\n style={style}\n role={isNativeTabStop ? 'button' : undefined}\n tabIndex={isNativeTabStop ? 0 : undefined}\n onKeyDown={isNativeTabStop ? handleKeyDown : undefined}\n onClick={handleClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...(draggable && !disabled ? { ...listeners, ...attributes } : {})}\n >\n <TileContent\n label={label}\n id={id}\n empty={empty}\n index={index}\n guideIndex={guideIndex}\n isOver={showsHoverEffect}\n isDragging={isDragging}\n isSelected={isSelected}\n disabled={disabled}\n outcome={outcome}\n type={type}\n />\n </div>\n );\n};\n\nTile.propTypes = {\n id: PropTypes.any,\n label: PropTypes.string,\n isOver: PropTypes.bool,\n type: PropTypes.string,\n empty: PropTypes.bool,\n disabled: PropTypes.bool,\n outcome: PropTypes.string,\n index: PropTypes.number,\n guideIndex: PropTypes.number,\n instanceId: PropTypes.any,\n draggable: PropTypes.bool,\n tileIndex: PropTypes.number,\n selectedChoice: PropTypes.object,\n onChoiceClick: PropTypes.func,\n onPlacementClick: PropTypes.func,\n};\n\nexport default Tile;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/tiler.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { styled } from '@mui/material/styles';\n\nimport Tile from './tile.js';\n\nconst types = {\n choiceLabel: PropTypes.string,\n targetLabel: PropTypes.string,\n disabled: PropTypes.bool,\n tiles: PropTypes.array.isRequired,\n tileSize: PropTypes.string,\n addGuide: PropTypes.bool,\n selectedChoice: PropTypes.object,\n onChoiceClick: PropTypes.func,\n onPlacementClick: PropTypes.func,\n};\n\nconst defaults = {\n tileSize: '1fr',\n disabled: false,\n addGuide: false,\n};\n\nconst buildTiles = (props) => {\n const T = (tile, index) => {\n tile.instanceId = props.instanceId;\n tile.disabled = props.disabled;\n tile.guideIndex = props.addGuide ? tile.index + 1 : undefined;\n // unique key for dnd-kit IDs\n tile.tileIndex = index;\n tile.selectedChoice = props.selectedChoice;\n tile.onChoiceClick = props.onChoiceClick;\n tile.onPlacementClick = props.onPlacementClick;\n\n if (props.includeTargets) {\n return <Tile {...tile} key={index} />;\n } else {\n return tile.type === 'choice' ? <Tile {...tile} key={index} /> : <Tile {...tile} label=\"\" key={index} />;\n }\n };\n\n T.propTypes = { ...types };\n return T;\n};\n\nconst StyledHTilerContainer: any = styled('div')(({ theme, includeTargets }) => ({\n display: 'grid',\n paddingBottom: theme.spacing(2),\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledChoiceLabel: any = styled('div')({\n textAlign: 'center',\n});\n\nconst StyledTargetLabel: any = styled('div')({\n textAlign: 'center',\n gridRow: '3/4',\n});\n\nconst StyledVTilerContainer: any = styled('div')(({ includeTargets }) => ({\n gridAutoFlow: 'column',\n display: 'grid',\n ...(includeTargets && {\n gridGap: '10px',\n }),\n}));\n\nconst StyledVChoiceLabel: any = styled('div')({\n gridColumn: '1/2',\n textAlign: 'center',\n});\n\nconst StyledVTargetLabel: any = styled('div')({\n gridColumn: '2/3',\n textAlign: 'center',\n});\n\nexport class HorizontalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const rows = includeTargets ? `auto ${tileSize} auto ${tileSize}` : `auto ${tileSize} auto`;\n const columns = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: includeTargets\n ? `repeat(${columns}, ${tileSize})`\n : `auto repeat(${Math.floor(columns / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n gridTemplateRows: rows,\n };\n\n const labelStyle = {\n gridColumn: `1/${columns + 1}`,\n };\n\n return (\n <StyledHTilerContainer includeTargets={includeTargets} style={style}>\n <StyledChoiceLabel\n style={labelStyle}\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n {includeTargets && (\n <StyledTargetLabel style={labelStyle} dangerouslySetInnerHTML={{ __html: targetLabel }} />\n )}\n {tiles.map(buildTiles(this.props))}\n </StyledHTilerContainer>\n );\n }\n}\n\nexport class VerticalTiler extends React.Component {\n static propTypes = { ...types };\n static defaultProps = { ...defaults };\n render() {\n const { includeTargets, choiceLabelEnabled, choiceLabel, targetLabel, tiles, tileSize } = this.props;\n\n const columns = includeTargets ? 2 : 1;\n const rows = includeTargets ? tiles.length / 2 : tiles.length;\n\n const style = {\n gridTemplateColumns: `repeat(${columns}, ${tileSize})`,\n gridTemplateRows: includeTargets\n ? `auto repeat(${rows}, ${tileSize})`\n : `auto auto repeat(${Math.floor(rows / 2) - 1}, ${tileSize} 10px) ${tileSize} auto`,\n };\n\n return (\n <StyledVTilerContainer includeTargets={includeTargets} style={style}>\n <StyledVChoiceLabel\n dangerouslySetInnerHTML={{ __html: choiceLabelEnabled ? choiceLabel : '' }}\n />\n\n {includeTargets && <StyledVTargetLabel dangerouslySetInnerHTML={{ __html: targetLabel }} />}\n {tiles.map(buildTiles(this.props))}\n </StyledVTilerContainer>\n );\n }\n}\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/ordering.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport { assign, cloneDeep, isEmpty, map } from '@pie-element/shared-lodash';\nimport debug from 'debug';\n\nconst log = debug('pie-elements:placement-ordering:ordering');\n\nexport const push = (arr, fromIndex, toIndex) => {\n const movedItem = arr.find((item, index) => index === fromIndex);\n const remainingItems = arr.filter((item, index) => index !== fromIndex);\n\n return [...remainingItems.slice(0, toIndex), movedItem, ...remainingItems.slice(toIndex)];\n};\n\nexport const swap = (arr, fromIndex, toIndex) => {\n log('[swap]', arr, fromIndex, toIndex);\n if (!arr || arr.length <= 1 || fromIndex === undefined || toIndex === undefined) {\n throw new Error(`swap requires a non-empty array, fromIndex, toIndex: ${arr}, ${fromIndex} ${toIndex}`);\n }\n const update = cloneDeep(arr);\n const tmp = arr[toIndex];\n update[toIndex] = update[fromIndex];\n update[fromIndex] = tmp;\n return update;\n};\n\nfunction removeResponse(state, targetTile) {\n const update = cloneDeep(state.response);\n\n if (update[targetTile.index] === targetTile.id) {\n update[targetTile.index] = undefined;\n } else {\n throw new Error(\n `Tried to remove from index: ${targetTile.index}, but the id doesn't match: array: ${update}, target: ${targetTile.id}`,\n );\n }\n return update;\n}\n\nfunction updateResponse(state, from, to) {\n const { response, opts } = state;\n const update = cloneDeep(response);\n if (opts.includeTargets) {\n if (from.type === 'choice' && to.type === 'target') {\n update[to.index] = from.id;\n return update;\n } else if (from.type === 'target' && to.type === 'choice') {\n update[from.index] = undefined;\n return update;\n } else if (from.type === 'target' && to.type === 'target') {\n return swap(response, from.index, to.index);\n } else {\n log('do nothing to the response');\n return response;\n }\n } else {\n const fromIndex = state.response.findIndex((r) => r !== undefined && r === from.id);\n const toIndex = state.response.findIndex((r) => r !== undefined && r === to.id);\n log('fromIndex: ', fromIndex, 'toIndex:', toIndex);\n return push(state.response, fromIndex, toIndex);\n }\n}\n\nfunction buildTiles(choices, response, outcomes, opts) {\n if (opts.includeTargets) {\n const targets = [];\n for (let i = 0; i < response.length; i++) {\n const r = response[i];\n\n const choice = choices.find((c) => r !== undefined && r !== null && c.id === r);\n //TODO: index needs to match too!!\n const outcome = outcomes[i];\n\n const out = Object.assign({ type: 'target', index: i, empty: choice === undefined }, choice, outcome, {\n draggable: choice !== undefined,\n });\n\n targets.push(out);\n }\n\n const processedChoices = choices.map((m) => {\n if (response.indexOf(m.id) !== -1 && !opts.allowSameChoiceInTargets) {\n return {\n type: 'choice',\n empty: true,\n droppable: true,\n draggable: false,\n };\n } else {\n return Object.assign({}, m, {\n type: 'choice',\n droppable: false,\n draggable: true,\n });\n }\n });\n\n return processedChoices.concat(targets);\n } else {\n return response.reduce((acc, id, index) => {\n const emptyTile = Object.assign(\n { type: 'empty', draggable: false, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n const choiceTile = Object.assign(\n { type: 'choice', draggable: true, droppable: true },\n choices.find((m) => m.id === id),\n outcomes[index],\n );\n\n if (index === 0) {\n acc.push(emptyTile);\n }\n\n acc.push(choiceTile, emptyTile);\n\n return acc;\n }, []);\n }\n}\n\nexport function buildState(choices, response, outcomes, opts) {\n opts = assign({ includeTargets: true }, opts);\n\n outcomes = outcomes || [];\n response =\n !response || isEmpty(response)\n ? opts.includeTargets\n ? new Array(choices.length)\n : map(choices, (c) => c.id)\n : response;\n return {\n choices,\n response,\n opts,\n outcomes,\n tiles: buildTiles(choices, response, outcomes, opts),\n };\n}\n\nexport function reducer(action, state) {\n switch (action.type) {\n case 'move': {\n const { from, to } = action;\n const response = updateResponse(state, from, to);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n case 'remove': {\n const { target } = action;\n const response = removeResponse(state, target);\n const tiles = buildTiles(state.choices, response, state.outcomes, state.opts);\n return Object.assign({}, state, { response, tiles });\n }\n }\n return state;\n}\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/utils.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nexport const haveSameValuesButDifferentOrder = (arr1, arr2) => {\n if (!Array.isArray(arr1) || !Array.isArray(arr2)) return false;\n if (arr1.length !== arr2.length) return false;\n\n const toSortedJson = (arr) =>\n arr\n .map((item) => JSON.stringify(item))\n .sort();\n\n const sortedArr1 = toSortedJson(arr1);\n const sortedArr2 = toSortedJson(arr2);\n\n const hasSameValues = sortedArr1.every((val, i) => val === sortedArr2[i]);\n const hasSameOrder = arr1.every((item, i) =>\n JSON.stringify(item) === JSON.stringify(arr2[i])\n );\n\n return hasSameValues && !hasSameOrder;\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/keyboard-coordinates.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport { defaultKeyboardCoordinateGetter, KeyboardCode } from '@dnd-kit/core';\n\n/**\n * Custom keyboard coordinate getter for placement-ordering's Tab-based placement mode\n * (enabled only when the item is configured with `placementArea` / `includeTargets`).\n *\n * Tab/Shift+Tab cycle the dragged choice directly onto the next/previous enabled\n * droppable (a placement/target tile, or an empty gap left behind in the choices row),\n * in real on-screen position order, placing the dragged item's own top-left corner at\n * the target's center-left point.\n *\n * Arrow keys are delegated to dnd-kit's own `defaultKeyboardCoordinateGetter` so the\n * pre-existing free-form arrow-key dragging behavior is left completely unchanged.\n *\n * The tile currently being dragged already disables its own droppable\n * (see `useDroppable({ disabled: isDragging })` in tile.jsx), so it's naturally\n * excluded from the candidate list here without any extra bookkeeping.\n *\n * When picking up a choice from the choices row, the other not-yet-placed choice\n * tiles are also registered droppables (tile.jsx disables a droppable only while it's\n * the one being dragged), but dropping a choice onto another choice is a no-op in the\n * reducer (ordering.js's updateResponse has no `choice -> choice` case) — so they're\n * excluded from the Tab/Shift+Tab cycle, leaving only the real placement targets.\n */\nexport const closestDroppableKeyboardCoordinates = (event, { active, context, currentCoordinates }) => {\n const { code } = event;\n const isTab = code === 'Tab';\n const isArrow =\n code === KeyboardCode.Down || code === KeyboardCode.Up || code === KeyboardCode.Left || code === KeyboardCode.Right;\n\n if (!isTab && !isArrow) {\n return undefined;\n }\n\n if (isArrow) {\n return defaultKeyboardCoordinateGetter(event, { context, currentCoordinates });\n }\n\n event.preventDefault();\n\n const { droppableRects, droppableContainers, collisionRect } = context;\n\n if (!droppableRects || droppableRects.size === 0) {\n return currentCoordinates;\n }\n\n // `currentCoordinates` is the top-left of the dragged item's collision rect (not its\n // center), so derive the dragged item's center in the same frame before comparing it\n // against droppable centers below.\n const draggedHalfSize = {\n x: (collisionRect?.width || 0) / 2,\n y: (collisionRect?.height || 0) / 2,\n };\n const currentCenter = {\n x: currentCoordinates.x + draggedHalfSize.x,\n y: currentCoordinates.y + draggedHalfSize.y,\n };\n\n // Only exclude other choice tiles while dragging a choice; dragging a placed target\n // back onto a choice-row gap is still a valid \"return to pool\" destination.\n const activeType = active?.data?.current?.type;\n const excludeChoiceDroppables = activeType === 'choice';\n\n const targets = [];\n\n for (const [id, container] of droppableContainers) {\n if (container?.disabled) continue;\n\n if (excludeChoiceDroppables && container?.data?.current?.type === 'choice') continue;\n\n const rect = droppableRects.get(id);\n\n if (!rect) continue;\n\n const center = {\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n };\n // Land the dragged item's own top-left corner at the target's center-left point,\n // rather than at the target's own top-left corner.\n const dropPosition = {\n x: rect.left,\n y: rect.top + rect.height / 2,\n };\n\n targets.push({ id, dropPosition, center });\n }\n\n if (targets.length === 0) {\n return currentCoordinates;\n }\n\n const reverse = event.shiftKey;\n\n // Sort targets by real on-screen position (top to bottom, then left to right), so\n // this works the same whether the tiler is laid out vertically or horizontally.\n targets.sort((a, b) => {\n if (Math.abs(a.center.y - b.center.y) > 10) return a.center.y - b.center.y;\n return a.center.x - b.center.x;\n });\n\n // Find the current target (closest to current coordinates)\n let currentIndex = 0;\n let minDist = Infinity;\n\n for (let i = 0; i < targets.length; i++) {\n const dist = distance(currentCenter, targets[i].center);\n\n if (dist < minDist) {\n minDist = dist;\n currentIndex = i;\n }\n }\n\n const nextIndex = reverse\n ? (currentIndex - 1 + targets.length) % targets.length\n : (currentIndex + 1) % targets.length;\n\n return targets[nextIndex].dropPosition;\n};\n\nconst distance = (a, b) => Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/placement-ordering.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { difference, isEqual, uniqueId } from '@pie-element/shared-lodash';\nimport { styled } from '@mui/material/styles';\nimport { rectIntersection } from '@dnd-kit/core';\nimport { restrictToParentElement } from '@dnd-kit/modifiers';\n\nimport { Collapsible as CollapsibleImport, color, Feedback as FeedbackImport, hasMedia, hasText, PreviewPrompt as PreviewPromptImport, UiLayout as UiLayoutImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst UiLayout = unwrapReactInteropSymbol(UiLayoutImport, 'UiLayout') || unwrapReactInteropSymbol(renderUi.UiLayout, 'UiLayout');\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Feedback = unwrapReactInteropSymbol(FeedbackImport, 'Feedback') || unwrapReactInteropSymbol(renderUi.Feedback, 'Feedback');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport Translator from '@pie-lib/translator';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { DragProvider } from '@pie-lib/drag';\n\nimport { HorizontalTiler, VerticalTiler } from './tiler.js';\nimport { buildState, reducer } from './ordering.js';\nimport { haveSameValuesButDifferentOrder } from './utils.js';\nimport { closestDroppableKeyboardCoordinates } from './keyboard-coordinates.js';\n\n// A click that lands right after a real drag gesture ends must be ignored by the\n// click-to-select/click-to-place handlers below, or it would immediately reopen or\n// re-trigger a selection for a drag that just completed.\nconst CLICK_AFTER_DRAG_GUARD_MS = 250;\n\nconst getKeyboardDragOptions = (includeTargets) =>\n includeTargets\n ? {\n keyboardCoordinateGetter: closestDroppableKeyboardCoordinates,\n keyboardCodes: {\n start: ['Space', 'Enter'],\n cancel: ['Escape'],\n end: ['Space', 'Enter'],\n },\n accessibility: {\n screenReaderInstructions: {\n draggable:\n 'Press Space or Enter to pick up this answer choice. Once picked up, use Tab or Shift+Tab to cycle through response areas, or use arrow keys to move it freely. Press Space or Enter to drop, or Escape to cancel.',\n },\n },\n }\n : {};\n\nconst { translator } = Translator;\n\nconst log = debug('pie-elements:placement-ordering');\n\nconst PlacementOrderingContainer: any = styled('div')({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n});\n\n// The interactive region - the choices and answers columns for a vertical item, or the choices and\n// answers rows for a horizontal one - scrolls horizontally when it does not fit the available width.\nconst InteractiveRegion: any = styled('div')({\n // the ancestors centre their children, which shrink-wraps this box to its content. without a\n // definite width it grows with the tiler and the overflow escapes outwards instead of scrolling.\n alignSelf: 'stretch',\n maxWidth: '100%',\n overflowX: 'auto',\n // tiles are dragged by transform, which counts towards scrollable overflow, so leaving this axis\n // scrollable would pop a vertical scrollbar mid-drag\n overflowY: 'hidden',\n});\n\n// keeps the tiler at its natural width, and centred while it still fits\nconst InteractiveRegionContent: any = styled('div')({\n display: 'flex',\n justifyContent: 'center',\n minWidth: 'min-content',\n});\n\nconst StyledPrompt: any = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledNote: any = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledToggle: any = styled(CorrectAnswerToggle)(({ theme }) => ({\n paddingBottom: theme.spacing(1),\n}));\n\nconst StyledCollapsible: any = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n alignSelf: 'flex-start',\n}));\n\nconst OrderingTiler = (props) => {\n const { tiler: Comp, ordering, onDropChoice, onRemoveChoice, ...compProps } = props;\n\n return (\n <Comp\n {...compProps}\n tiles={ordering.tiles}\n onDropChoice={(t, s) => onDropChoice(t, s, ordering)}\n onRemoveChoice={(t) => onRemoveChoice(t, ordering)}\n />\n );\n};\n\nOrderingTiler.propTypes = {\n tiler: PropTypes.func,\n ordering: PropTypes.any,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n};\n\nexport class PlacementOrdering extends React.Component {\n static propTypes = {\n onSessionChange: PropTypes.func.isRequired,\n model: PropTypes.object.isRequired,\n session: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired]),\n };\n\n constructor(props) {\n super(props);\n\n this.instanceId = uniqueId();\n\n const { value, needsReset } = this.validateSession(props);\n\n this.state = {\n showingCorrect: false,\n selectedChoice: null,\n };\n this.lastDragEndAt = 0;\n\n const { model } = props || {};\n const { env } = model || {};\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange({\n ...props.session,\n value,\n });\n }\n }\n\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n validateSession: any = ({ model, session }, areChoicesShuffled = false) => {\n const { config, choices } = model || {};\n const { includeTargets } = config || {};\n const choicesIds = choices.map((c) => c.id);\n\n let { value } = session || {};\n let needsReset;\n\n if (!includeTargets) {\n // Use all choice IDs if choices were shuffled or session is missing/invalid\n const sessionMissing = !value || !value.length;\n if (sessionMissing || areChoicesShuffled) {\n // if there's no value on session in No Targets Mode, we need to set an initial session\n value = choicesIds;\n } else {\n // in No Targets Mode, all choice ids need to be used\n const missingChoiceIds = difference(choicesIds, value);\n // this is the case that handles extra choice ids in session\n const extraChoiceIds = difference(value, choicesIds);\n\n if (missingChoiceIds.length || extraChoiceIds.length) {\n value = choicesIds;\n }\n }\n\n needsReset = !isEqual(session.value, value);\n } else {\n // in Targets Area selected, it's important to check the length of session\n const sessionIsMismatched = value && value.length !== choicesIds.length;\n if (sessionIsMismatched) {\n needsReset = true;\n\n // if choices were added, add value in session\n if (value.length < choicesIds.length) {\n value = value.concat(new Array(choicesIds.length - value.length));\n } else {\n // if choices were removed, make sure to remove from session as well\n value = value.filter((cId) => choicesIds.includes(cId));\n }\n }\n }\n\n if (needsReset) {\n // eslint-disable-next-line no-console\n console.warn('This session is not valid anymore. It will be reset.');\n }\n\n return { value, needsReset };\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model: nextModel = {} } = nextProps || {};\n const { model: currentModel = {} } = this.props || {};\n const { correctResponse, config, choices: nextChoices = [], env } = nextModel;\n const { includeTargets } = config || {};\n\n const newState = {};\n\n const isLanguageChanged = currentModel.language && currentModel.language !== nextModel.language;\n const isDefaultNote =\n currentModel.note &&\n currentModel.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: currentModel.language });\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (isLanguageChanged && isDefaultNote) {\n currentModel.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\n if (!correctResponse) {\n newState.showingCorrect = false;\n }\n\n //PD-4924\n // show student choices same order as in model when teacher changes student choices order\n // for cases when student view and instructor view are on same page\n const areChoicesShuffled = haveSameValuesButDifferentOrder(nextChoices, currentModel.choices);\n\n const validatedSession = this.validateSession(nextProps, areChoicesShuffled);\n let { value, needsReset } = validatedSession;\n\n const newSession = {\n ...nextProps.session,\n value,\n };\n const includeTargetsChanged = currentModel.config?.includeTargets !== includeTargets;\n\n if (includeTargets && includeTargetsChanged) {\n needsReset = true;\n\n delete newSession.value;\n }\n\n this.setState(newState, () => {\n const { mode } = env || {};\n\n if (needsReset && mode === 'gather') {\n this.props.onSessionChange(newSession);\n }\n });\n }\n\n onDropChoice: any = (target, source, ordering) => {\n const { onSessionChange, session } = this.props;\n const from = ordering.tiles.find((t) => t.id === source.id && t.type === source.type && t.index === source.index);\n const to = target;\n log('[onDropChoice] ', from, to);\n const update = reducer({ type: 'move', from, to }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n\n onSessionChange(sessionUpdate);\n };\n\n onRemoveChoice: any = (target, ordering) => {\n const { onSessionChange, session } = this.props;\n log('[onRemoveChoice]', target);\n const update = reducer({ type: 'remove', target }, ordering);\n const sessionUpdate = Object.assign({}, session, {\n value: update.response,\n });\n onSessionChange(sessionUpdate);\n };\n\n createOrdering: any = () => {\n const { model, session } = this.props;\n const { showingCorrect } = this.state;\n const config = model.config || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { includeTargets } = config;\n\n return showingCorrect\n ? buildState(\n model.choices,\n model.correctResponse,\n model.correctResponse.map((id) => ({ id, outcome: 'correct' })),\n {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n },\n )\n : buildState(model.choices, session.value, model.outcomes, {\n includeTargets,\n allowSameChoiceInTargets: model.config.allowSameChoiceInTargets,\n });\n };\n\n onDragEnd: any = (event) => {\n const { over, active } = event;\n const ordering = this.createOrdering();\n\n // A real drag (pointer or keyboard) just ended — whatever mirrored selection it\n // set on start is now resolved, and any click landing immediately after this must\n // not be misread as a fresh selection/placement\n this.cancelSelection();\n this.lastDragEndAt = Date.now();\n\n if (over && active) {\n const draggedItem = active.data.current;\n const droppedOnItem = over.data.current;\n\n if (draggedItem && droppedOnItem && droppedOnItem.type === 'target') {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n return;\n }\n\n if (draggedItem && droppedOnItem) {\n this.onDropChoice(droppedOnItem, draggedItem, ordering);\n }\n } else if (!over && active) {\n const draggedItem = active.data.current;\n if (draggedItem && draggedItem.type === 'target') {\n this.onRemoveChoice(draggedItem, ordering);\n }\n }\n };\n\n onDragStart: any = (event) => {\n const { active } = event;\n\n if (active?.data?.current) {\n // A real drag (pointer or keyboard) is itself a selection — mirror it into the\n // same selectedChoice state that click-to-select uses, so the two interaction\n // models can be freely intermixed\n this.selectChoice(active.data.current);\n }\n };\n\n onDragCancel: any = () => {\n this.cancelSelection();\n this.lastDragEndAt = Date.now();\n };\n\n isSameChoice = (a, b) => !!a && !!b && a.type === b.type && a.id === b.id && a.index === b.index;\n\n selectChoice: any = (data) => {\n this.setState({ selectedChoice: data });\n };\n\n // Click-to-select semantics: selecting the currently-selected choice again clears\n // the selection instead of re-selecting it.\n toggleChoiceSelection: any = (data) => {\n this.setState((state) => ({\n selectedChoice: this.isSameChoice(state.selectedChoice, data) ? null : data,\n }));\n };\n\n cancelSelection: any = () => {\n this.setState({ selectedChoice: null });\n };\n\n // If a real dnd-kit drag (started via keyboard Space/Enter) is still live when a\n // click completes the placement below, it needs to be cleanly ended — otherwise\n // dnd-kit would still think a drag is in progress. Escape is already configured as\n // this sensor's cancel key (see getKeyboardDragOptions), and dispatching it as a real\n // DOM KeyboardEvent is how dnd-kit's own document-level listener is reached from\n // outside its sensor. onDragCancel only resets local UI state, not the session, so\n // this is safe to call unconditionally, including when no drag is actually live\n // (dnd-kit simply has no listener attached in that case, and the dispatch is a\n // no-op).\n endAnyLiveKeyboardDrag: any = () => {\n document.dispatchEvent(new KeyboardEvent('keydown', { code: 'Escape', bubbles: true, cancelable: true }));\n };\n\n placeSelectedChoice: any = (targetTileData) => {\n const { selectedChoice } = this.state;\n\n if (!selectedChoice) {\n return;\n }\n\n const ordering = this.createOrdering();\n\n this.onDropChoice(targetTileData, selectedChoice, ordering);\n this.cancelSelection();\n this.endAnyLiveKeyboardDrag();\n this.lastDragEndAt = Date.now();\n };\n\n isClickSoonAfterDragEnd = () => Date.now() - this.lastDragEndAt < CLICK_AFTER_DRAG_GUARD_MS;\n\n onChoiceClick: any = (data) => {\n if (this.isClickSoonAfterDragEnd()) {\n return;\n }\n\n this.toggleChoiceSelection(data);\n };\n\n onPlacementClick: any = (targetTileData) => {\n if (this.isClickSoonAfterDragEnd()) {\n return;\n }\n\n this.placeSelectedChoice(targetTileData);\n };\n\n render() {\n const { model } = this.props;\n const {\n correctResponse,\n correctness,\n extraCSSRules,\n prompt,\n rationale,\n feedback,\n config: configs,\n note,\n showNote,\n env,\n disabled,\n teacherInstructions,\n language,\n } = model;\n const showToggle = correctResponse && correctResponse.length > 0;\n const { showingCorrect } = this.state;\n const config = configs || {\n orientation: 'vertical',\n includeTargets: true,\n };\n const { orientation, includeTargets } = config;\n const vertical = orientation === 'vertical';\n const ordering = this.createOrdering();\n const { mode, role } = env || {};\n\n const Tiler = vertical ? VerticalTiler : HorizontalTiler;\n const displayNote = (showingCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const containerStyle = {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n boxSizing: 'border-box',\n width: '100%',\n };\n\n const clickPlacementProps = includeTargets\n ? {\n selectedChoice: this.state.selectedChoice,\n onChoiceClick: this.onChoiceClick,\n onPlacementClick: this.onPlacementClick,\n }\n : {};\n\n return (\n <DragProvider\n onDragStart={this.onDragStart}\n onDragEnd={this.onDragEnd}\n onDragCancel={this.onDragCancel}\n collisionDetection={rectIntersection}\n modifiers={[restrictToParentElement]}\n {...getKeyboardDragOptions(includeTargets)}\n >\n <PlacementOrderingContainer>\n <UiLayout extraCSSRules={extraCSSRules} style={containerStyle}>\n {showTeacherInstructions && (\n <StyledCollapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className=\"collapsible\"\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n <StyledPrompt>\n <PreviewPrompt prompt={prompt} />\n </StyledPrompt>\n\n <StyledToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n\n <InteractiveRegion>\n <InteractiveRegionContent>\n <OrderingTiler\n instanceId={this.instanceId}\n choiceLabel={config.choiceLabel}\n targetLabel={config.targetLabel}\n ordering={ordering}\n tiler={Tiler}\n disabled={disabled}\n addGuide={config.showOrdering}\n tileSize={config.tileSize}\n includeTargets={includeTargets}\n choiceLabelEnabled={model.config && model.config.choiceLabelEnabled}\n {...clickPlacementProps}\n />\n </InteractiveRegionContent>\n </InteractiveRegion>\n\n {displayNote && <StyledNote dangerouslySetInnerHTML={{ __html: note }} />}\n\n {showRationale && (\n <StyledCollapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className=\"collapsible\"\n >\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {!showingCorrect && <Feedback correctness={correctness} feedback={feedback} />}\n </UiLayout>\n </PlacementOrderingContainer>\n </DragProvider>\n );\n }\n}\n\nexport default PlacementOrdering;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/main.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport PlacementOrdering from './placement-ordering.js';\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n session: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired]),\n onSessionChange: PropTypes.func.isRequired,\n };\n\n render() {\n const { model, session, onSessionChange } = this.props;\n\n return (\n <PlacementOrdering model={model} session={session} onSessionChange={onSessionChange} />\n );\n }\n}\n\nexport default Main;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/placement-ordering/src/index.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { compact } from '@pie-element/shared-lodash';\nimport debug from 'debug';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport { SessionChangedEvent } from '@pie-element/shared-player-events';\nimport Main from './main.js';\n\nconst log = debug('pie-elements:placement-ordering');\n\nexport const isValidSession = ({ model, session }) => {\n const { config } = model;\n\n const compactSessionValues = (session && compact(session.value)) || [];\n const completeSession = compactSessionValues.length === model.choices.length;\n\n // if it includes targets, it doesn't have to contain all the choices selected (eg: only 2 targets were filled)\n // but if it does not include targets, it's a must to have all choices selected\n return config.includeTargets || completeSession;\n};\n\nexport default class Ordering extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n this._mathObserver = null;\n this._mathRenderPending = false;\n }\n\n _scheduleMathRender: any = () => {\n if (this._mathRenderPending) return;\n this._mathRenderPending = true;\n\n requestAnimationFrame(() => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n }\n renderMath(this);\n this._mathRenderPending = false;\n setTimeout(() => {\n if (this._mathObserver) {\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n }, 50);\n });\n };\n\n _initMathObserver() {\n if (this._mathObserver) return;\n this._mathObserver = new MutationObserver(this._scheduleMathRender);\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n\n _disconnectMathObserver() {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserver = null;\n }\n }\n\n isComplete = (value) => value && compact(value).length === this._model.completeLength;\n\n sessionChange: any = (session) => {\n this._session.value = session.value;\n this.render();\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), this._session && this.isComplete(this._session.value)),\n );\n };\n\n set model(newModel) {\n this._model = newModel;\n\n this.render();\n this.dispatchEvent(\n new CustomEvent('model-set', {\n bubbles: true,\n detail: {\n complete: false,\n },\n }),\n );\n }\n\n set session(newSession) {\n this._session = newSession;\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n render() {\n if (this._model && this._session) {\n log('[render] session: ', this._session.value);\n log('[render] model: ', this._model);\n\n this._initMathObserver();\n\n const element = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChange,\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(element);\n }\n }\n\n connectedCallback() {\n this._initMathObserver();\n this.render();\n }\n\n disconnectedCallback() {\n this._disconnectMathObserver();\n if (this._root) {\n this._root.unmount();\n this._root = null;\n }\n }\n}\n"],"x_google_ignoreList":[1,5],"mappings":"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"}
|
|
@@ -789,7 +789,7 @@ var M = {}, N = (e) => !n(e) && typeof e != "boolean" && typeof e != "number", P
|
|
|
789
789
|
init(e = {}) {
|
|
790
790
|
e.interpolation ||= { escapeValue: !0 };
|
|
791
791
|
let { escape: t, escapeValue: n, useRawValueToEscape: r, prefix: i, prefixEscaped: a, suffix: o, suffixEscaped: s, formatSeparator: c, unescapeSuffix: l, unescapePrefix: u, nestingPrefix: d, nestingPrefixEscaped: f, nestingSuffix: p, nestingSuffixEscaped: m, nestingOptionsSeparator: g, maxReplaces: v, alwaysFormat: y } = e.interpolation;
|
|
792
|
-
this.escape = t === void 0 ? _ : t, this.escapeValue = n === void 0
|
|
792
|
+
this.escape = t === void 0 ? _ : t, this.escapeValue = n === void 0 || n, this.useRawValueToEscape = r !== void 0 && r, this.prefix = i ? h(i) : a || "{{", this.suffix = o ? h(o) : s || "}}", this.formatSeparator = c || ",", this.unescapePrefix = l ? "" : u || "-", this.unescapeSuffix = this.unescapePrefix ? "" : l || "", this.nestingPrefix = d ? h(d) : f || h("$t("), this.nestingSuffix = p ? h(p) : m || h(")"), this.nestingOptionsSeparator = g || ",", this.maxReplaces = v || 1e3, this.alwaysFormat = y !== void 0 && y, this.resetRegExp();
|
|
793
793
|
}
|
|
794
794
|
reset() {
|
|
795
795
|
this.options && this.init(this.options);
|
|
@@ -1423,4 +1423,4 @@ var re = {
|
|
|
1423
1423
|
//#endregion
|
|
1424
1424
|
export { re as t };
|
|
1425
1425
|
|
|
1426
|
-
//# sourceMappingURL=dist-
|
|
1426
|
+
//# sourceMappingURL=dist-DiGNNRzu.js.map
|