@pie-element/likert 4.1.1 → 4.1.2-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/author/choiceGenerator.d.ts +13 -0
  4. package/dist/author/choiceGenerator.js +255 -0
  5. package/dist/author/defaults.d.ts +102 -0
  6. package/dist/author/defaults.js +60 -0
  7. package/dist/author/index.d.ts +31 -0
  8. package/dist/author/index.js +73 -0
  9. package/dist/author/likertEntities.d.ts +25 -0
  10. package/dist/author/likertEntities.js +18 -0
  11. package/dist/author/main.d.ts +27 -0
  12. package/dist/author/main.js +298 -0
  13. package/dist/browser/Radio-CAjl01LA.js +9447 -0
  14. package/dist/browser/Radio-CAjl01LA.js.map +1 -0
  15. package/dist/browser/author/index.js +39374 -0
  16. package/dist/browser/author/index.js.map +1 -0
  17. package/dist/browser/controller/index.js +51 -0
  18. package/dist/browser/controller/index.js.map +1 -0
  19. package/dist/browser/delivery/index.js +219 -0
  20. package/dist/browser/delivery/index.js.map +1 -0
  21. package/dist/browser/likert.css +2 -0
  22. package/dist/controller/defaults.d.ts +19 -0
  23. package/dist/controller/defaults.js +13 -0
  24. package/dist/controller/index.d.ts +19 -0
  25. package/dist/controller/index.js +41 -0
  26. package/dist/delivery/choice-input.d.ts +27 -0
  27. package/dist/delivery/choice-input.js +59 -0
  28. package/dist/delivery/index.d.ts +19 -0
  29. package/dist/delivery/index.js +44 -0
  30. package/dist/delivery/likert.d.ts +26 -0
  31. package/dist/delivery/likert.js +70 -0
  32. package/dist/delivery/likertEntities.d.ts +12 -0
  33. package/dist/delivery/likertEntities.js +7 -0
  34. package/dist/delivery/main.d.ts +23 -0
  35. package/dist/delivery/main.js +37 -0
  36. package/dist/delivery/session-updater.d.ts +9 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.iife.d.ts +8 -0
  39. package/dist/index.iife.js +145 -0
  40. package/dist/index.js +2 -0
  41. package/dist/runtime-support.d.ts +12 -0
  42. package/dist/runtime-support.js +12 -0
  43. package/package.json +83 -21
  44. package/CHANGELOG.json +0 -1
  45. package/CHANGELOG.md +0 -1455
  46. package/LICENSE.md +0 -5
  47. package/configure/CHANGELOG.json +0 -1
  48. package/configure/CHANGELOG.md +0 -1373
  49. package/configure/lib/choiceGenerator.js +0 -219
  50. package/configure/lib/choiceGenerator.js.map +0 -1
  51. package/configure/lib/defaults.js +0 -100
  52. package/configure/lib/defaults.js.map +0 -1
  53. package/configure/lib/index.js +0 -106
  54. package/configure/lib/index.js.map +0 -1
  55. package/configure/lib/likertEntities.js +0 -24
  56. package/configure/lib/likertEntities.js.map +0 -1
  57. package/configure/lib/main.js +0 -388
  58. package/configure/lib/main.js.map +0 -1
  59. package/configure/package.json +0 -27
  60. package/controller/CHANGELOG.json +0 -1
  61. package/controller/CHANGELOG.md +0 -90
  62. package/controller/lib/defaults.js +0 -17
  63. package/controller/lib/defaults.js.map +0 -1
  64. package/controller/lib/index.js +0 -81
  65. package/controller/lib/index.js.map +0 -1
  66. package/controller/package.json +0 -17
  67. package/docs/config-schema.json +0 -2011
  68. package/docs/config-schema.json.md +0 -1487
  69. package/docs/demo/config.js +0 -8
  70. package/docs/demo/generate.js +0 -22
  71. package/docs/demo/index.html +0 -1
  72. package/docs/demo/session.js +0 -6
  73. package/docs/pie-schema.json +0 -966
  74. package/docs/pie-schema.json.md +0 -711
  75. package/lib/choice-input.js +0 -90
  76. package/lib/choice-input.js.map +0 -1
  77. package/lib/index.js +0 -64
  78. package/lib/index.js.map +0 -1
  79. package/lib/likert.js +0 -97
  80. package/lib/likert.js.map +0 -1
  81. package/lib/likertEntities.js +0 -11
  82. package/lib/likertEntities.js.map +0 -1
  83. package/lib/main.js +0 -42
  84. package/lib/main.js.map +0 -1
  85. package/lib/session-updater.js +0 -15
  86. package/lib/session-updater.js.map +0 -1
  87. package/readme.md +0 -55
@@ -0,0 +1,51 @@
1
+ //#region src/controller/defaults.ts
2
+ var e = {
3
+ choices: [],
4
+ likertOrientation: "horizontal",
5
+ likertScale: "likert3",
6
+ likertType: "agreement",
7
+ prompt: "",
8
+ promptEnabled: !0,
9
+ teacherInstructions: "",
10
+ teacherInstructionsEnabled: !0
11
+ }, t = (e) => ({
12
+ label: e.label,
13
+ value: e.value
14
+ });
15
+ function n(t = {}) {
16
+ return new Promise((n) => n({
17
+ ...e,
18
+ ...t
19
+ }));
20
+ }
21
+ var r = (t) => ({
22
+ ...e,
23
+ ...t
24
+ });
25
+ async function i(e, n, i) {
26
+ let a = r(e), o = a.choices.map(t), s = {
27
+ ...a,
28
+ choices: o,
29
+ disabled: i.mode !== "gather",
30
+ mode: i.mode
31
+ }, { role: c, mode: l } = i || {};
32
+ return c === "instructor" && (l === "view" || l === "evaluate") ? s.teacherInstructions = a.teacherInstructionsEnabled ? a.teacherInstructions : null : s.teacherInstructions = null, s;
33
+ }
34
+ function a() {
35
+ return new Promise((e) => {
36
+ e({
37
+ score: 0,
38
+ empty: !1
39
+ });
40
+ });
41
+ }
42
+ var o = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), s = (e = {}, t = {}) => {
43
+ let n = {};
44
+ return ["teacherInstructions", "prompt"].forEach((r) => {
45
+ t[r]?.required && !o(e[r]) && (n[r] = "This field is required.");
46
+ }), n;
47
+ };
48
+ //#endregion
49
+ export { n as createDefaultModel, i as model, r as normalize, a as outcome, s as validate };
50
+
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/controller/defaults.ts","../../../src/controller/index.ts"],"sourcesContent":["// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/likert/controller/src/defaults.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 default {\n choices: [],\n likertOrientation: 'horizontal',\n likertScale: 'likert3',\n likertType: 'agreement',\n prompt: '',\n promptEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/likert/controller/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 defaults from './defaults.js';\n\nconst prepareChoice = (choice) => {\n return {\n label: choice.label,\n value: choice.value,\n };\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => resolve({ ...defaults, ...model }));\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n\n let choices = normalizedQuestion.choices.map(prepareChoice);\n\n const out = {\n ...normalizedQuestion,\n choices,\n disabled: env.mode !== 'gather',\n mode: env.mode,\n };\n\n const { role, mode } = env || {};\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n return out;\n}\n\nexport function outcome() {\n return new Promise((resolve) => {\n resolve({ score: 0, empty: false });\n });\n}\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n return errors;\n};\n"],"mappings":";AAUA,IAAA,IAAe;CACb,SAAS,CAAC;CACV,mBAAmB;CACnB,aAAa;CACb,YAAY;CACZ,QAAQ;CACR,eAAe;CACf,qBAAqB;CACrB,4BAA4B;AAC9B,GCPM,KAAiB,OACd;CACL,OAAO,EAAO;CACd,OAAO,EAAO;AAChB;AAGF,SAAgB,EAAmB,IAAQ,CAAC,GAAG;CAC7C,OAAO,IAAI,SAAS,MAAY,EAAQ;EAAE,GAAG;EAAU,GAAG;CAAM,CAAC,CAAC;AACpE;AAEA,IAAa,KAAa,OAAc;CAAE,GAAG;CAAU,GAAG;AAAS;AAQnE,eAAsB,EAAM,GAAU,GAAS,GAAK;CAClD,IAAM,IAAqB,EAAU,CAAQ,GAEzC,IAAU,EAAmB,QAAQ,IAAI,CAAa,GAEpD,IAAM;EACV,GAAG;EACH;EACA,UAAU,EAAI,SAAS;EACvB,MAAM,EAAI;CACZ,GAEM,EAAE,SAAM,YAAS,KAAO,CAAC;CAU/B,OARI,MAAS,iBAAiB,MAAS,UAAU,MAAS,cACxD,EAAI,sBAAsB,EAAmB,6BACzC,EAAmB,sBACnB,OAEJ,EAAI,sBAAsB,MAGrB;AACT;AAEA,SAAgB,IAAU;CACxB,OAAO,IAAI,SAAS,MAAY;EAC9B,EAAQ;GAAE,OAAO;GAAG,OAAO;EAAM,CAAC;CACpC,CAAC;AACH;AAMA,IAAM,KAAc,OAAU,KAAQ,IAAI,QAAQ,sCAAsC,EAAE,GAE7E,KAAY,IAAQ,CAAC,GAAG,IAAS,CAAC,MAAM;CACnD,IAAM,IAAS,CAAC;CAQhB,OANA,CAAC,uBAAuB,QAAQ,EAAE,SAAS,MAAU;EACnD,AAAI,EAAO,IAAQ,YAAY,CAAC,EAAW,EAAM,EAAM,MACrD,EAAO,KAAS;CAEpB,CAAC,GAEM;AACT"}
@@ -0,0 +1,219 @@
1
+ import { E as e, Et as t, T as n, d as r, i, kt as a, o, st as s, t as c, wt as l, y as u } from "../Radio-CAjl01LA.js";
2
+ import d from "react";
3
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
4
+ import { createRoot as m } from "react-dom/client";
5
+ //#region src/delivery/likertEntities.ts
6
+ var h = /* @__PURE__ */ a(t(), 1), g = {
7
+ horizontal: "horizontal",
8
+ vertical: "vertical"
9
+ }, _ = s(c)({
10
+ color: `var(--choice-input-color, ${l.text()})`,
11
+ "&.Mui-checked": { color: `var(--choice-input-selected-color, ${l.primary()})` },
12
+ "&.Mui-disabled": { color: `var(--choice-input-disabled-color, ${l.defaults.DISABLED})` }
13
+ }), v = s("p")({
14
+ color: l.text(),
15
+ textAlign: "center",
16
+ cursor: "pointer"
17
+ }), y = s("div")({
18
+ display: "flex",
19
+ alignItems: "center",
20
+ flex: 1,
21
+ padding: "0 5px",
22
+ "& label": {}
23
+ }), b = s(i)({ margin: 0 }), x = class extends d.Component {
24
+ static propTypes = {
25
+ checked: h.default.bool.isRequired,
26
+ disabled: h.default.bool.isRequired,
27
+ label: h.default.string.isRequired,
28
+ likertOrientation: h.default.string.isRequired,
29
+ onChange: h.default.func.isRequired,
30
+ value: h.default.number.isRequired
31
+ };
32
+ static defaultProps = { checked: !1 };
33
+ onToggleChoice = () => {
34
+ this.props.onChange({
35
+ value: this.props.value,
36
+ selected: !this.props.checked
37
+ });
38
+ };
39
+ render() {
40
+ let { disabled: e, label: t, checked: n, likertOrientation: r } = this.props;
41
+ return /* @__PURE__ */ p(y, {
42
+ style: { flexDirection: r === g.vertical ? "row" : "column" },
43
+ children: [/* @__PURE__ */ f(b, {
44
+ disabled: e,
45
+ control: /* @__PURE__ */ f(_, {
46
+ checked: n,
47
+ onChange: this.onToggleChoice,
48
+ disabled: e
49
+ })
50
+ }), /* @__PURE__ */ f(v, {
51
+ onClick: this.onToggleChoice,
52
+ dangerouslySetInnerHTML: { __html: t }
53
+ })]
54
+ });
55
+ }
56
+ };
57
+ //#endregion
58
+ //#region src/delivery/likert.tsx
59
+ function S(e) {
60
+ return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
61
+ }
62
+ function C(e, t) {
63
+ return !e || S(e) ? e : S(e.default) ? e.default : t && S(e[t]) ? e[t] : t && S(e[t]?.default) ? e[t].default : e;
64
+ }
65
+ var w = C(r, "PreviewPrompt") || C(O.PreviewPrompt, "PreviewPrompt"), T = C(n, "Collapsible") || C(O.Collapsible, "Collapsible"), E = o, D = E.default, O = D && typeof D == "object" ? D : E, k = s("div")({
66
+ color: l.text(),
67
+ backgroundColor: l.background(),
68
+ "& *": { "-webkit-font-smoothing": "antialiased" }
69
+ }), A = s(T)(({ theme: e }) => ({ marginBottom: e.spacing(2) })), j = s("div")(({ theme: e }) => ({
70
+ verticalAlign: "middle",
71
+ color: "var(--pie-primary-text, var(--pie-text, #000000))",
72
+ paddingBottom: e.spacing(2)
73
+ })), M = s("div")({ display: "flex" }), N = class extends d.Component {
74
+ static propTypes = {
75
+ className: h.default.string,
76
+ choices: h.default.array,
77
+ prompt: h.default.string,
78
+ teacherInstructions: h.default.string,
79
+ session: h.default.object,
80
+ disabled: h.default.bool.isRequired,
81
+ onSessionChange: h.default.func.isRequired,
82
+ likertOrientation: h.default.string.isRequired
83
+ };
84
+ UNSAFE_componentWillReceiveProps() {}
85
+ isSelected(e) {
86
+ return this.props.session && this.props.session.value === e;
87
+ }
88
+ render() {
89
+ let { disabled: e, choices: t = [], prompt: n, onSessionChange: r, teacherInstructions: i, className: a, likertOrientation: o } = this.props, s = o === g.vertical ? "column" : "row";
90
+ return /* @__PURE__ */ p(k, {
91
+ className: a,
92
+ children: [
93
+ i && /* @__PURE__ */ f(A, {
94
+ labels: {
95
+ hidden: "Show Teacher Instructions",
96
+ visible: "Hide Teacher Instructions"
97
+ },
98
+ children: /* @__PURE__ */ f(w, { prompt: i })
99
+ }),
100
+ n && /* @__PURE__ */ f(j, { children: /* @__PURE__ */ f(w, { prompt: n }) }),
101
+ /* @__PURE__ */ f(M, {
102
+ style: { flexDirection: s },
103
+ children: t.map((t, n) => /* @__PURE__ */ f(x, {
104
+ label: t.label,
105
+ value: t.value,
106
+ index: n,
107
+ disabled: e,
108
+ onChange: r,
109
+ likertOrientation: o,
110
+ checked: this.isSelected(t.value)
111
+ }, `choice-${n}`))
112
+ })
113
+ ]
114
+ });
115
+ }
116
+ };
117
+ N.defaultProps = { session: { value: [] } };
118
+ //#endregion
119
+ //#region src/delivery/main.tsx
120
+ function P(e) {
121
+ return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
122
+ }
123
+ function F(e, t) {
124
+ return !e || P(e) ? e : P(e.default) ? e.default : t && P(e[t]) ? e[t] : t && P(e[t]?.default) ? e[t].default : e;
125
+ }
126
+ var I = F(u, "PreviewLayout") || F(z.PreviewLayout, "PreviewLayout"), L = o, R = L.default, z = R && typeof R == "object" ? R : L, B = class extends d.Component {
127
+ static propTypes = {
128
+ model: h.default.object,
129
+ session: h.default.object,
130
+ onSessionChange: h.default.func
131
+ };
132
+ static defaultProps = {
133
+ model: {},
134
+ session: {}
135
+ };
136
+ render() {
137
+ let { model: e, onSessionChange: t, session: n } = this.props, { extraCSSRules: r } = e;
138
+ return /* @__PURE__ */ f(I, {
139
+ extraCSSRules: r,
140
+ children: /* @__PURE__ */ f(N, {
141
+ ...e,
142
+ session: n,
143
+ onSessionChange: t
144
+ })
145
+ });
146
+ }
147
+ };
148
+ (class e extends CustomEvent {
149
+ static {
150
+ this.TYPE = "model-set";
151
+ }
152
+ constructor(t, n, r) {
153
+ super(e.TYPE, {
154
+ bubbles: !0,
155
+ composed: !0,
156
+ detail: {
157
+ complete: n,
158
+ component: t,
159
+ hasModel: r
160
+ }
161
+ }), this.component = t, this.complete = n;
162
+ }
163
+ });
164
+ //#endregion
165
+ //#region ../../shared/player-events/dist/index.js
166
+ var V = class e extends CustomEvent {
167
+ static {
168
+ this.TYPE = "session-changed";
169
+ }
170
+ constructor(t, n) {
171
+ super(e.TYPE, {
172
+ bubbles: !0,
173
+ composed: !0,
174
+ detail: {
175
+ complete: n,
176
+ component: t
177
+ }
178
+ }), this.component = t, this.complete = n;
179
+ }
180
+ }, H = (e) => !!(e && e.value && e.value.length), U = class extends HTMLElement {
181
+ constructor() {
182
+ super(), this._root = null;
183
+ }
184
+ set model(e) {
185
+ this._model = e, this._render();
186
+ }
187
+ set session(e) {
188
+ this._session = e, this._render();
189
+ }
190
+ get session() {
191
+ return this._session;
192
+ }
193
+ sessionChanged(e) {
194
+ this._session.value = e.value;
195
+ let t = H(this._session, this._model);
196
+ this.dispatchEvent(new V(this.tagName.toLowerCase(), t)), this._render();
197
+ }
198
+ connectedCallback() {
199
+ this._render();
200
+ }
201
+ _render() {
202
+ if (!this._model || !this._session) return;
203
+ let t = d.createElement(B, {
204
+ model: this._model,
205
+ session: this._session,
206
+ onSessionChange: this.sessionChanged.bind(this)
207
+ });
208
+ this._root ||= m(this), this._root.render(t), queueMicrotask(() => {
209
+ e(this);
210
+ });
211
+ }
212
+ disconnectedCallback() {
213
+ this._root && this._root.unmount();
214
+ }
215
+ };
216
+ //#endregion
217
+ export { U as default, H as isComplete };
218
+
219
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/delivery/likertEntities.ts","../../../src/delivery/choice-input.tsx","../../../src/delivery/likert.tsx","../../../src/delivery/main.tsx","../../../../../shared/player-events/dist/index.js","../../../src/delivery/index.ts"],"sourcesContent":["// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/likert/src/likertEntities.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 LIKERT_ORIENTATION = {\n horizontal: 'horizontal',\n vertical: 'vertical',\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/likert/src/choice-input.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 FormControlLabel from '@mui/material/FormControlLabel';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\n\nimport { color } from '@pie-lib/render-ui';\nimport Radio from '@mui/material/Radio';\nimport { LIKERT_ORIENTATION } from './likertEntities.js';\n\nexport const RadioStyled: any = styled(Radio)({\n color: `var(--choice-input-color, ${color.text()})`,\n '&.Mui-checked': {\n color: `var(--choice-input-selected-color, ${color.primary()})`,\n },\n '&.Mui-disabled': {\n color: `var(--choice-input-disabled-color, ${color.defaults.DISABLED})`,\n },\n});\n\nconst LabelRoot: any = styled('p')({\n color: color.text(),\n textAlign: 'center',\n cursor: 'pointer',\n});\n\nconst CheckboxHolderRoot: any = styled('div')({\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n padding: '0 5px',\n '& label': {},\n});\n\nconst StyledFormControlLabel: any = styled(FormControlLabel)({\n margin: 0,\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n checked: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n likertOrientation: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.number.isRequired,\n };\n\n static defaultProps = {\n checked: false,\n };\n\n onToggleChoice: any = () => {\n this.props.onChange({\n value: this.props.value,\n selected: !this.props.checked,\n });\n };\n\n render() {\n const { disabled, label, checked, likertOrientation } = this.props;\n const flexDirection = likertOrientation === LIKERT_ORIENTATION.vertical ? 'row' : 'column';\n\n return (\n <CheckboxHolderRoot style={{ flexDirection }}>\n <StyledFormControlLabel\n disabled={disabled}\n control={<RadioStyled checked={checked} onChange={this.onToggleChoice} disabled={disabled} />}\n />\n <LabelRoot onClick={this.onToggleChoice} dangerouslySetInnerHTML={{ __html: label }} />\n </CheckboxHolderRoot>\n );\n }\n}\n\nexport default ChoiceInput;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/likert/src/likert.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 ChoiceInput from './choice-input.js';\nimport { styled } from '@mui/material/styles';\nimport { color, Collapsible as CollapsibleImport, PreviewPrompt as PreviewPromptImport } 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 PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\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 { LIKERT_ORIENTATION } from './likertEntities.js';\n\nconst Main: any = styled('div')({\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n});\n\nconst StyledCollapsible: any = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst Prompt: any = styled('div')(({ theme }) => ({\n verticalAlign: 'middle',\n color: 'var(--pie-primary-text, var(--pie-text, #000000))',\n paddingBottom: theme.spacing(2),\n}));\n\nconst ChoicesWrapper: any = styled('div')({\n display: 'flex',\n});\n\nexport class Likert extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n choices: PropTypes.array,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n likertOrientation: PropTypes.string.isRequired,\n };\n\n UNSAFE_componentWillReceiveProps() {}\n\n isSelected(value) {\n return this.props.session && this.props.session.value === value;\n }\n\n render() {\n const {\n disabled,\n choices = [],\n prompt,\n onSessionChange,\n teacherInstructions,\n className,\n likertOrientation,\n } = this.props;\n\n const flexDirection = likertOrientation === LIKERT_ORIENTATION.vertical ? 'column' : 'row';\n\n return (\n <Main className={className}>\n {teacherInstructions && (\n <StyledCollapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n {prompt && (\n <Prompt>\n <PreviewPrompt prompt={prompt} />\n </Prompt>\n )}\n\n <ChoicesWrapper style={{ flexDirection }}>\n {choices.map((choice, index) => (\n <ChoiceInput\n key={`choice-${index}`}\n label={choice.label}\n value={choice.value}\n index={index}\n disabled={disabled}\n onChange={onSessionChange}\n likertOrientation={likertOrientation}\n checked={this.isSelected(choice.value)}\n />\n ))}\n </ChoicesWrapper>\n </Main>\n );\n }\n}\n\nLikert.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default Likert;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/likert/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';\nimport { PreviewLayout as PreviewLayoutImport } 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 PreviewLayout = unwrapReactInteropSymbol(PreviewLayoutImport, 'PreviewLayout') || unwrapReactInteropSymbol(renderUi.PreviewLayout, 'PreviewLayout');\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 Likert from './likert.js';\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSessionChange: PropTypes.func,\n };\n\n static defaultProps = {\n model: {},\n session: {},\n };\n\n render() {\n const { model, onSessionChange, session } = this.props;\n const { extraCSSRules } = model;\n\n return (\n <PreviewLayout extraCSSRules={extraCSSRules}>\n <Likert {...model} session={session} onSessionChange={onSessionChange} />\n </PreviewLayout>\n );\n }\n}\n\nexport default Main;\n","//#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","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/likert/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 Main from './main.js';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { SessionChangedEvent } from '@pie-element/shared-player-events';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\n\nexport const isComplete = (session) => !!(session && session.value && session.value.length);\n\nexport default class Likert extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n }\n\n set model(m) {\n this._model = m;\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n sessionChanged(s) {\n this._session.value = s.value;\n const complete = isComplete(this._session, this._model);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged.bind(this),\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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"}