@pie-element/match 10.0.1-next.0 → 10.0.2-esm.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/element.js ADDED
@@ -0,0 +1,472 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom';
3
+ import PropTypes from 'prop-types';
4
+ import CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';
5
+ import { color, hasText, hasMedia, UiLayout, Collapsible, PreviewPrompt, Feedback } from '@pie-lib/render-ui';
6
+ import cx from 'classnames';
7
+ import Radio from '@material-ui/core/Radio';
8
+ import Checkbox from '@material-ui/core/Checkbox';
9
+ import Typography from '@material-ui/core/Typography';
10
+ import { withStyles } from '@material-ui/core/styles';
11
+ import { SessionChangedEvent } from '@pie-framework/pie-player-events';
12
+ import { renderMath } from '@pie-lib/math-rendering';
13
+
14
+ function _extends() {
15
+ _extends = Object.assign || function (target) {
16
+ for (var i = 1; i < arguments.length; i++) {
17
+ var source = arguments[i];
18
+
19
+ for (var key in source) {
20
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
21
+ target[key] = source[key];
22
+ }
23
+ }
24
+ }
25
+
26
+ return target;
27
+ };
28
+
29
+ return _extends.apply(this, arguments);
30
+ }
31
+
32
+ class AnswerGrid extends React.Component {
33
+ constructor(...args) {
34
+ super(...args);
35
+
36
+ this.onRowValueChange = (rowId, answerIndex) => event => {
37
+ const {
38
+ onAnswerChange,
39
+ choiceMode,
40
+ answers
41
+ } = this.props;
42
+
43
+ const newAnswers = _extends({}, answers);
44
+
45
+ if (choiceMode === 'radio') {
46
+ for (let i = 0; i < newAnswers[rowId].length; i++) {
47
+ newAnswers[rowId][i] = false;
48
+ }
49
+ }
50
+
51
+ newAnswers[rowId][answerIndex] = event.target.checked;
52
+ onAnswerChange(newAnswers);
53
+ };
54
+
55
+ this.answerIsCorrect = (rowId, rowValue, rowValueIndex) => {
56
+ const {
57
+ correctAnswers
58
+ } = this.props;
59
+ return correctAnswers[rowId][rowValueIndex] === rowValue && rowValue === true;
60
+ };
61
+
62
+ this.answerIsIncorrect = (rowId, rowValue, rowValueIndex) => {
63
+ const {
64
+ correctAnswers
65
+ } = this.props;
66
+ return correctAnswers[rowId][rowValueIndex] === true && rowValue === false || correctAnswers[rowId][rowValueIndex] === false && rowValue === true;
67
+ };
68
+ }
69
+
70
+ render() {
71
+ const {
72
+ classes,
73
+ showCorrect,
74
+ headers,
75
+ rows,
76
+ choiceMode,
77
+ answers,
78
+ disabled,
79
+ view
80
+ } = this.props;
81
+ const Tag = choiceMode === 'radio' ? Radio : Checkbox;
82
+ const evaluate = disabled && !view;
83
+
84
+ if (!rows || rows.length === 0) {
85
+ return /*#__PURE__*/React.createElement("div", {
86
+ className: classes.controlsContainer
87
+ }, /*#__PURE__*/React.createElement(Typography, {
88
+ className: classes.empty,
89
+ component: "div"
90
+ }, "There are currently no questions to show."));
91
+ }
92
+
93
+ return /*#__PURE__*/React.createElement("div", {
94
+ className: classes.controlsContainer
95
+ }, /*#__PURE__*/React.createElement("table", {
96
+ className: classes.table
97
+ }, /*#__PURE__*/React.createElement("colgroup", null, (headers || []).map((header, idx) => /*#__PURE__*/React.createElement("col", {
98
+ key: `col-${idx}`
99
+ }))), /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, (headers || []).map((header, idx) => /*#__PURE__*/React.createElement("th", {
100
+ className: classes.rowHeader,
101
+ key: `th-${idx}`,
102
+ "data-colno": `${idx}`,
103
+ scope: "row"
104
+ }, /*#__PURE__*/React.createElement("div", {
105
+ className: cx(classes.rowItem, {
106
+ [classes.questionText]: idx === 0
107
+ }),
108
+ dangerouslySetInnerHTML: {
109
+ __html: header
110
+ }
111
+ }))))), (rows || []).map((row, idx) => /*#__PURE__*/React.createElement("tbody", {
112
+ key: `row-${idx}`,
113
+ role: "group"
114
+ }, /*#__PURE__*/React.createElement("tr", {
115
+ className: classes.separator
116
+ }, /*#__PURE__*/React.createElement("td", {
117
+ key: `td-title-${idx}`,
118
+ "data-colno": '0'
119
+ }, /*#__PURE__*/React.createElement("div", {
120
+ className: cx(classes.rowItem, classes.questionText),
121
+ dangerouslySetInnerHTML: {
122
+ __html: row.title
123
+ }
124
+ })), (answers[row.id] || []).map((rowItem, answerIndex) => /*#__PURE__*/React.createElement("td", {
125
+ key: `td-${idx}-${answerIndex}`,
126
+ className: classes.column,
127
+ "data-colno": `${answerIndex + 1}`
128
+ }, /*#__PURE__*/React.createElement("div", {
129
+ className: classes.rowItem
130
+ }, /*#__PURE__*/React.createElement(Tag, {
131
+ className: cx(classes.tag, {
132
+ [classes.correct]: showCorrect && rowItem === true || evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex),
133
+ [classes.checked]: rowItem === true && !evaluate,
134
+ [classes.tagDisabled]: disabled,
135
+ [classes.incorrect]: evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex)
136
+ }),
137
+ disabled: disabled,
138
+ onChange: this.onRowValueChange(row.id, answerIndex),
139
+ checked: rowItem === true
140
+ })))))))));
141
+ }
142
+
143
+ }
144
+ AnswerGrid.propTypes = {
145
+ classes: PropTypes.object.isRequired,
146
+ correctAnswers: PropTypes.object,
147
+ view: PropTypes.bool.isRequired,
148
+ showCorrect: PropTypes.bool.isRequired,
149
+ disabled: PropTypes.bool.isRequired,
150
+ onAnswerChange: PropTypes.func.isRequired,
151
+ choiceMode: PropTypes.string.isRequired,
152
+ rows: PropTypes.array.isRequired,
153
+ headers: PropTypes.array.isRequired,
154
+ answers: PropTypes.object.isRequired
155
+ };
156
+
157
+ const styles$1 = theme => ({
158
+ controlsContainer: {
159
+ marginLeft: 'auto',
160
+ marginRight: 'auto',
161
+ marginTop: theme.spacing.unit,
162
+ marginBottom: theme.spacing.unit
163
+ },
164
+ column: {
165
+ padding: '5px 0'
166
+ },
167
+ correct: {
168
+ color: `${color.correct()} !important`
169
+ },
170
+ incorrect: {
171
+ color: `${color.incorrect()} !important`
172
+ },
173
+ empty: {
174
+ margin: theme.spacing.unit * 2
175
+ },
176
+ rowContainer: {
177
+ display: 'flex',
178
+ alignItems: 'center'
179
+ },
180
+ rowHeader: {
181
+ padding: 0
182
+ },
183
+ rowItem: {
184
+ padding: theme.spacing.unit * 1.5,
185
+ textAlign: 'center'
186
+ },
187
+ separator: {
188
+ border: 0,
189
+ borderTop: `2.5px solid ${color.primaryLight()}`,
190
+ width: '100%'
191
+ },
192
+ tag: {
193
+ padding: '6px',
194
+ color: color.text(),
195
+ '&:hover': {
196
+ color: color.primaryLight()
197
+ },
198
+ '& input': {
199
+ width: '100% !important'
200
+ }
201
+ },
202
+ checked: {
203
+ color: `${color.primary()} !important`
204
+ },
205
+ tagDisabled: {
206
+ color: color.disabled(),
207
+ cursor: 'not-allowed !important',
208
+ pointerEvents: 'initial !important',
209
+ opacity: 0.7,
210
+ '&:hover': {
211
+ color: color.disabled()
212
+ }
213
+ },
214
+ table: {
215
+ color: color.text(),
216
+ backgroundColor: color.background(),
217
+ borderCollapse: 'collapse',
218
+ borderSpacing: 0,
219
+ marginBottom: 0
220
+ },
221
+ questionText: {
222
+ textAlign: 'left'
223
+ }
224
+ });
225
+
226
+ var AnswerGrid$1 = withStyles(styles$1)(AnswerGrid);
227
+
228
+ class Main extends React.Component {
229
+ constructor(props) {
230
+ super(props);
231
+
232
+ this.generateAnswers = model => {
233
+ var _model$rows;
234
+
235
+ const answers = {};
236
+ (_model$rows = model.rows) == null ? void 0 : _model$rows.forEach(row => {
237
+ answers[row.id] = new Array(model.layout - 1).fill(false);
238
+ });
239
+ return answers;
240
+ };
241
+
242
+ this.isAnswerRegenerationRequired = nextProps => {
243
+ const {
244
+ model: {
245
+ choiceMode,
246
+ layout,
247
+ rows
248
+ } = {}
249
+ } = this.props;
250
+ const {
251
+ session: {
252
+ answers
253
+ } = {}
254
+ } = nextProps;
255
+ let isRequired = false;
256
+
257
+ if (choiceMode !== nextProps.model.choiceMode) {
258
+ isRequired = true;
259
+ }
260
+
261
+ if (layout !== nextProps.model.layout) {
262
+ isRequired = true;
263
+ }
264
+
265
+ if (rows.length !== nextProps.model.rows.length || answers && nextProps.model.rows.length !== Object.keys(answers).length) {
266
+ isRequired = true;
267
+ }
268
+
269
+ return isRequired || !answers;
270
+ };
271
+
272
+ this.callOnSessionChange = () => {
273
+ const {
274
+ onSessionChange
275
+ } = this.props;
276
+
277
+ if (onSessionChange) {
278
+ onSessionChange(this.state.session);
279
+ }
280
+ };
281
+
282
+ this.toggleShowCorrect = show => {
283
+ this.setState({
284
+ showCorrect: show
285
+ });
286
+ };
287
+
288
+ this.onAnswerChange = newAnswers => {
289
+ this.setState(state => ({
290
+ session: _extends({}, state.session, {
291
+ answers: newAnswers
292
+ })
293
+ }), this.callOnSessionChange);
294
+ };
295
+
296
+ this.state = {
297
+ session: _extends({}, props.session, {
298
+ answers: props.session && props.session.answers || this.generateAnswers(props.model)
299
+ }),
300
+ showCorrect: false
301
+ };
302
+ this.callOnSessionChange();
303
+ }
304
+
305
+ UNSAFE_componentWillReceiveProps(nextProps) {
306
+ const regenAnswers = this.isAnswerRegenerationRequired(nextProps);
307
+ this.setState(state => ({
308
+ session: _extends({}, nextProps.session, {
309
+ // regenerate answers if layout or choiceMode change
310
+ answers: regenAnswers ? this.generateAnswers(nextProps.model) : nextProps.session.answers
311
+ }),
312
+ showCorrect: this.props.model.disabled && !nextProps.model.disabled && state.showCorrect ? false : state.showCorrect
313
+ }), () => {
314
+ if (regenAnswers) this.callOnSessionChange();
315
+ });
316
+ }
317
+
318
+ render() {
319
+ const {
320
+ model,
321
+ classes
322
+ } = this.props;
323
+ const {
324
+ showCorrect,
325
+ session
326
+ } = this.state;
327
+ const {
328
+ correctness = {},
329
+ extraCSSRules,
330
+ language
331
+ } = model;
332
+ const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';
333
+ const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));
334
+ const showTeacherInstructions = model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));
335
+ return /*#__PURE__*/React.createElement(UiLayout, {
336
+ extraCSSRules: extraCSSRules,
337
+ className: classes.mainContainer
338
+ }, showTeacherInstructions && /*#__PURE__*/React.createElement(Collapsible, {
339
+ labels: {
340
+ hidden: 'Show Teacher Instructions',
341
+ visible: 'Hide Teacher Instructions'
342
+ },
343
+ className: classes.collapsible
344
+ }, /*#__PURE__*/React.createElement(PreviewPrompt, {
345
+ prompt: model.teacherInstructions
346
+ })), model.prompt && /*#__PURE__*/React.createElement("div", {
347
+ className: classes.prompt
348
+ }, /*#__PURE__*/React.createElement(PreviewPrompt, {
349
+ prompt: model.prompt
350
+ })), /*#__PURE__*/React.createElement(CorrectAnswerToggle, {
351
+ language: language,
352
+ show: showCorrectAnswerToggle,
353
+ toggled: showCorrect,
354
+ onToggle: this.toggleShowCorrect
355
+ }), /*#__PURE__*/React.createElement(AnswerGrid$1, {
356
+ showCorrect: showCorrect,
357
+ correctAnswers: model.correctResponse,
358
+ disabled: model.disabled,
359
+ view: model.view,
360
+ onAnswerChange: this.onAnswerChange,
361
+ choiceMode: model.choiceMode,
362
+ answers: showCorrect ? model.correctResponse || {} : session.answers,
363
+ headers: model.headers,
364
+ rows: model.rows
365
+ }), showRationale && /*#__PURE__*/React.createElement(Collapsible, {
366
+ labels: {
367
+ hidden: 'Show Rationale',
368
+ visible: 'Hide Rationale'
369
+ },
370
+ className: classes.collapsible
371
+ }, /*#__PURE__*/React.createElement(PreviewPrompt, {
372
+ prompt: model.rationale
373
+ })), model.feedback && /*#__PURE__*/React.createElement(Feedback, {
374
+ correctness: correctness.correctness,
375
+ feedback: model.feedback
376
+ }));
377
+ }
378
+
379
+ }
380
+ Main.propTypes = {
381
+ classes: PropTypes.object,
382
+ session: PropTypes.object.isRequired,
383
+ onSessionChange: PropTypes.func,
384
+ model: PropTypes.object.isRequired
385
+ };
386
+
387
+ const styles = theme => ({
388
+ mainContainer: {
389
+ color: color.text(),
390
+ backgroundColor: color.background()
391
+ },
392
+ main: {
393
+ width: '100%'
394
+ },
395
+ prompt: {
396
+ verticalAlign: 'middle'
397
+ },
398
+ collapsible: {
399
+ marginBottom: theme.spacing.unit * 2
400
+ }
401
+ });
402
+
403
+ var Main$1 = withStyles(styles)(Main);
404
+
405
+ const isComplete = (session, model) => {
406
+ var _model$rows;
407
+
408
+ const ids = (model == null ? void 0 : (_model$rows = model.rows) == null ? void 0 : _model$rows.map(r => r.id)) || [];
409
+ return ids.reduce((acc, id) => {
410
+ if (!acc) {
411
+ return false;
412
+ }
413
+
414
+ const arr = session.answers && session.answers[id];
415
+ const hasChoice = Array.isArray(arr) && arr.includes(true);
416
+ return hasChoice && acc;
417
+ }, true);
418
+ };
419
+ class Match extends HTMLElement {
420
+ constructor() {
421
+ super();
422
+ }
423
+
424
+ set model(m) {
425
+ // config object props should be part of the model props
426
+ // model.config should be no longer used
427
+ this._model = _extends({}, m, (m == null ? void 0 : m.config) || {});
428
+
429
+ this._render();
430
+ }
431
+
432
+ set session(s) {
433
+ this._session = s;
434
+
435
+ this._render();
436
+ }
437
+
438
+ get session() {
439
+ return this._session;
440
+ }
441
+
442
+ sessionChanged(s) {
443
+ this._session.answers = s.answers;
444
+ const complete = isComplete(this._session, this._model);
445
+ this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));
446
+
447
+ this._render();
448
+ }
449
+
450
+ connectedCallback() {
451
+ this._render();
452
+ }
453
+
454
+ _render() {
455
+ if (!this._model || !this._session) {
456
+ return;
457
+ }
458
+
459
+ const el = /*#__PURE__*/React.createElement(Main$1, {
460
+ model: this._model,
461
+ session: this._session,
462
+ onSessionChange: this.sessionChanged.bind(this)
463
+ });
464
+ ReactDOM.render(el, this, () => {
465
+ renderMath(this);
466
+ });
467
+ }
468
+
469
+ }
470
+
471
+ export { Main$1 as Component, Match as default, isComplete };
472
+ //# sourceMappingURL=element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.js","sources":["../src/answer-grid.jsx","../src/main.jsx","../src/index.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Radio from '@material-ui/core/Radio';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/render-ui';\n\nexport class AnswerGrid extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctAnswers: PropTypes.object,\n view: PropTypes.bool.isRequired,\n showCorrect: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onAnswerChange: PropTypes.func.isRequired,\n choiceMode: PropTypes.string.isRequired,\n rows: PropTypes.array.isRequired,\n headers: PropTypes.array.isRequired,\n answers: PropTypes.object.isRequired,\n };\n\n onRowValueChange = (rowId, answerIndex) => (event) => {\n const { onAnswerChange, choiceMode, answers } = this.props;\n const newAnswers = { ...answers };\n\n if (choiceMode === 'radio') {\n for (let i = 0; i < newAnswers[rowId].length; i++) {\n newAnswers[rowId][i] = false;\n }\n }\n\n newAnswers[rowId][answerIndex] = event.target.checked;\n\n onAnswerChange(newAnswers);\n };\n\n answerIsCorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return correctAnswers[rowId][rowValueIndex] === rowValue && rowValue === true;\n };\n\n // needs a separate method because what isn't correct isn't necessarily incorrect\n answerIsIncorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return (\n (correctAnswers[rowId][rowValueIndex] === true && rowValue === false) ||\n (correctAnswers[rowId][rowValueIndex] === false && rowValue === true)\n );\n };\n\n render() {\n const { classes, showCorrect, headers, rows, choiceMode, answers, disabled, view } = this.props;\n const Tag = choiceMode === 'radio' ? Radio : Checkbox;\n const evaluate = disabled && !view;\n\n if (!rows || rows.length === 0) {\n return (\n <div className={classes.controlsContainer}>\n <Typography className={classes.empty} component=\"div\">\n There are currently no questions to show.\n </Typography>\n </div>\n );\n }\n\n return (\n <div className={classes.controlsContainer}>\n <table className={classes.table}>\n <colgroup>\n {(headers || []).map((header, idx) => (\n <col key={`col-${idx}`} />\n ))}\n </colgroup>\n\n <thead>\n <tr>\n {(headers || []).map((header, idx) => (\n <th className={classes.rowHeader} key={`th-${idx}`} data-colno={`${idx}`} scope=\"row\">\n <div\n className={cx(classes.rowItem, { [classes.questionText]: idx === 0 })}\n dangerouslySetInnerHTML={{ __html: header }}\n />\n </th>\n ))}\n </tr>\n </thead>\n\n {(rows || []).map((row, idx) => (\n <tbody key={`row-${idx}`} role=\"group\">\n <tr className={classes.separator}>\n <td key={`td-title-${idx}`} data-colno={'0'}>\n <div\n className={cx(classes.rowItem, classes.questionText)}\n dangerouslySetInnerHTML={{ __html: row.title }}\n />\n </td>\n\n {(answers[row.id] || []).map((rowItem, answerIndex) => (\n <td key={`td-${idx}-${answerIndex}`} className={classes.column} data-colno={`${answerIndex + 1}`}>\n <div className={classes.rowItem}>\n <Tag\n className={cx(classes.tag, {\n [classes.correct]:\n (showCorrect && rowItem === true) ||\n (evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex)),\n [classes.checked]: rowItem === true && !evaluate,\n [classes.tagDisabled]: disabled,\n [classes.incorrect]: evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex),\n })}\n disabled={disabled}\n onChange={this.onRowValueChange(row.id, answerIndex)}\n checked={rowItem === true}\n />\n </div>\n </td>\n ))}\n </tr>\n </tbody>\n ))}\n </table>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n controlsContainer: {\n marginLeft: 'auto',\n marginRight: 'auto',\n marginTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n },\n column: {\n padding: '5px 0',\n },\n correct: {\n color: `${color.correct()} !important`,\n },\n incorrect: {\n color: `${color.incorrect()} !important`,\n },\n empty: {\n margin: theme.spacing.unit * 2,\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n rowHeader: {\n padding: 0,\n },\n rowItem: {\n padding: theme.spacing.unit * 1.5,\n textAlign: 'center',\n },\n separator: {\n border: 0,\n borderTop: `2.5px solid ${color.primaryLight()}`,\n width: '100%',\n },\n tag: {\n padding: '6px',\n color: color.text(),\n '&:hover': {\n color: color.primaryLight(),\n },\n '& input': {\n width: '100% !important',\n },\n },\n checked: {\n color: `${color.primary()} !important`,\n },\n tagDisabled: {\n color: color.disabled(),\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n opacity: 0.7,\n '&:hover': {\n color: color.disabled(),\n },\n },\n table: {\n color: color.text(),\n backgroundColor: color.background(),\n borderCollapse: 'collapse',\n borderSpacing: 0,\n marginBottom: 0,\n },\n questionText: {\n textAlign: 'left',\n },\n});\n\nexport default withStyles(styles)(AnswerGrid);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, Collapsible, Feedback, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/render-ui';\nimport AnswerGrid from './answer-grid';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n };\n\n this.callOnSessionChange();\n }\n\n generateAnswers = (model) => {\n const answers = {};\n\n model.rows?.forEach((row) => {\n answers[row.id] = new Array(model.layout - 1).fill(false);\n });\n\n return answers;\n };\n\n isAnswerRegenerationRequired = (nextProps) => {\n const { model: { choiceMode, layout, rows } = {} } = this.props;\n const { session: { answers } = {} } = nextProps;\n let isRequired = false;\n\n if (choiceMode !== nextProps.model.choiceMode) {\n isRequired = true;\n }\n\n if (layout !== nextProps.model.layout) {\n isRequired = true;\n }\n\n if (\n rows.length !== nextProps.model.rows.length ||\n (answers && nextProps.model.rows.length !== Object.keys(answers).length)\n ) {\n isRequired = true;\n }\n\n return isRequired || !answers;\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const regenAnswers = this.isAnswerRegenerationRequired(nextProps);\n\n this.setState(\n (state) => ({\n session: {\n ...nextProps.session,\n // regenerate answers if layout or choiceMode change\n answers: regenAnswers ? this.generateAnswers(nextProps.model) : nextProps.session.answers,\n },\n showCorrect:\n this.props.model.disabled && !nextProps.model.disabled && state.showCorrect ? false : state.showCorrect,\n }),\n () => {\n if (regenAnswers) this.callOnSessionChange();\n },\n );\n }\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n onAnswerChange = (newAnswers) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: newAnswers,\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n render() {\n const { model, classes } = this.props;\n const { showCorrect, session } = this.state;\n const { correctness = {}, extraCSSRules, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions && (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n )}\n\n {model.prompt && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n )}\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerGrid\n showCorrect={showCorrect}\n correctAnswers={model.correctResponse}\n disabled={model.disabled}\n view={model.view}\n onAnswerChange={this.onAnswerChange}\n choiceMode={model.choiceMode}\n answers={showCorrect ? model.correctResponse || {} : session.answers}\n headers={model.headers}\n rows={model.rows}\n />\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }} className={classes.collapsible}>\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n )}\n\n {model.feedback && <Feedback correctness={correctness.correctness} feedback={model.feedback} />}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n main: {\n width: '100%',\n },\n prompt: {\n verticalAlign: 'middle',\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(Main);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Main from './main';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nexport { Main as Component };\n\nexport const isComplete = (session, model) => {\n const ids = model?.rows?.map((r) => r.id) || [];\n\n return ids.reduce((acc, id) => {\n if (!acc) {\n return false;\n }\n\n const arr = session.answers && session.answers[id];\n const hasChoice = Array.isArray(arr) && arr.includes(true);\n\n return hasChoice && acc;\n }, true);\n};\n\nexport default class Match extends HTMLElement {\n constructor() {\n super();\n }\n\n set model(m) {\n // config object props should be part of the model props\n // model.config should be no longer used\n this._model = { ...m, ...(m?.config || {}) };\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.answers = s.answers;\n const complete = isComplete(this._session, this._model);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n\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 ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n}\n"],"names":["AnswerGrid","React","Component","onRowValueChange","rowId","answerIndex","event","onAnswerChange","choiceMode","answers","props","newAnswers","i","length","target","checked","answerIsCorrect","rowValue","rowValueIndex","correctAnswers","answerIsIncorrect","render","classes","showCorrect","headers","rows","disabled","view","Tag","Radio","Checkbox","evaluate","controlsContainer","empty","table","map","header","idx","rowHeader","cx","rowItem","questionText","__html","row","separator","title","id","column","tag","correct","tagDisabled","incorrect","propTypes","PropTypes","object","isRequired","bool","func","string","array","styles","theme","marginLeft","marginRight","marginTop","spacing","unit","marginBottom","padding","color","margin","rowContainer","display","alignItems","textAlign","border","borderTop","primaryLight","width","text","primary","cursor","pointerEvents","opacity","backgroundColor","background","borderCollapse","borderSpacing","withStyles","Main","constructor","generateAnswers","model","forEach","Array","layout","fill","isAnswerRegenerationRequired","nextProps","session","Object","keys","callOnSessionChange","onSessionChange","state","toggleShowCorrect","show","setState","UNSAFE_componentWillReceiveProps","regenAnswers","correctness","extraCSSRules","language","showCorrectAnswerToggle","showRationale","rationale","hasText","hasMedia","showTeacherInstructions","teacherInstructions","mainContainer","hidden","visible","collapsible","prompt","correctResponse","feedback","main","verticalAlign","isComplete","ids","r","reduce","acc","arr","hasChoice","isArray","includes","Match","HTMLElement","m","_model","config","_render","s","_session","sessionChanged","complete","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","connectedCallback","el","createElement","bind","ReactDOM","renderMath"],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "10.0.1-next.0+17e3b6c8d",
7
+ "version": "10.0.2-esm.0",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -13,10 +13,10 @@
13
13
  "dependencies": {
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/pie-player-events": "^0.1.0",
16
- "@pie-lib/correct-answer-toggle": "^2.21.0",
17
- "@pie-lib/math-rendering": "^3.18.0",
18
- "@pie-lib/render-ui": "^4.31.0",
19
- "@pie-lib/test-utils": "^0.18.0",
16
+ "@pie-lib/correct-answer-toggle": "^2.22.1",
17
+ "@pie-lib/math-rendering": "^3.19.0",
18
+ "@pie-lib/render-ui": "^4.32.1",
19
+ "@pie-lib/test-utils": "^0.19.1",
20
20
  "classnames": "^2.2.5",
21
21
  "debug": "^4.1.1",
22
22
  "lodash": "^4.17.10",
@@ -26,6 +26,23 @@
26
26
  },
27
27
  "author": "",
28
28
  "license": "ISC",
29
- "gitHead": "17e3b6c8d7cd3ad6a2698703e595dc03d51b9df9",
30
- "module": "src/index.js"
29
+ "gitHead": "007ac5f6be719f57eccb8af3c08e7014c2797f1e",
30
+ "module": "src/index.js",
31
+ "exports": {
32
+ ".": {
33
+ "import": "./esm/element.js",
34
+ "require": "./lib/index.js",
35
+ "default": "./esm/element.js"
36
+ },
37
+ "./configure": {
38
+ "import": "./esm/configure.js",
39
+ "require": "./configure/lib/index.js",
40
+ "default": "./esm/configure.js"
41
+ },
42
+ "./controller": {
43
+ "import": "./esm/controller.js",
44
+ "require": "./controller/lib/index.js",
45
+ "default": "./esm/controller.js"
46
+ }
47
+ }
31
48
  }