@pie-element/multiple-choice 9.7.2-next.20 → 9.7.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/lib/index.js +21 -6
- package/lib/index.js.map +1 -1
- package/lib/multiple-choice.js +29 -14
- package/lib/multiple-choice.js.map +1 -1
- package/module/element.js +86 -94
- package/module/print.js +35 -23
- package/package.json +2 -3
package/lib/index.js
CHANGED
|
@@ -33,8 +33,6 @@ var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
|
33
33
|
|
|
34
34
|
var _debug = _interopRequireDefault(require("debug"));
|
|
35
35
|
|
|
36
|
-
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
37
|
-
|
|
38
36
|
var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
|
|
39
37
|
|
|
40
38
|
var _sessionUpdater = require("./session-updater");
|
|
@@ -52,8 +50,7 @@ var isComplete = function isComplete(session, model) {
|
|
|
52
50
|
|
|
53
51
|
var _ref = model || {},
|
|
54
52
|
choiceMode = _ref.choiceMode,
|
|
55
|
-
|
|
56
|
-
minSelections = _ref$minSelections === void 0 ? 1 : _ref$minSelections,
|
|
53
|
+
minSelections = _ref.minSelections,
|
|
57
54
|
maxSelections = _ref.maxSelections;
|
|
58
55
|
|
|
59
56
|
var selections = session.value.length || 0;
|
|
@@ -111,10 +108,28 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
111
108
|
trailing: true
|
|
112
109
|
});
|
|
113
110
|
_this._dispatchResponseChanged = (0, _debounce["default"])(function () {
|
|
114
|
-
|
|
111
|
+
console.log('>> dispatch event');
|
|
112
|
+
var event = new CustomEvent('session-changed', {
|
|
113
|
+
bubbles: true,
|
|
114
|
+
composed: true,
|
|
115
|
+
detail: {
|
|
116
|
+
complete: isComplete(_this._session, _this._model),
|
|
117
|
+
component: _this.tagName.toLowerCase()
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
_this.dispatchEvent(event);
|
|
115
122
|
});
|
|
116
123
|
_this._dispatchModelSet = (0, _debounce["default"])(function () {
|
|
117
|
-
_this.dispatchEvent(new
|
|
124
|
+
_this.dispatchEvent(new CustomEvent('model-set', {
|
|
125
|
+
bubbles: true,
|
|
126
|
+
composed: true,
|
|
127
|
+
detail: {
|
|
128
|
+
complete: isComplete(_this._session, _this._model),
|
|
129
|
+
component: _this.tagName.toLowerCase(),
|
|
130
|
+
hasModel: _this._model !== undefined
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
118
133
|
}, 50, {
|
|
119
134
|
leading: false,
|
|
120
135
|
trailing: true
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["log","isComplete","session","model","value","choiceMode","minSelections","maxSelections","selections","length","MultipleChoice","_model","_session","_rerender","element","React","createElement","Main","onChoiceChanged","_onChange","bind","onShowCorrectToggle","setAttribute","setLangAttribute","ReactDOM","render","leading","trailing","_dispatchResponseChanged","
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","isComplete","session","model","value","choiceMode","minSelections","maxSelections","selections","length","MultipleChoice","_model","_session","_rerender","element","React","createElement","Main","onChoiceChanged","_onChange","bind","onShowCorrectToggle","setAttribute","setLangAttribute","ReactDOM","render","leading","trailing","_dispatchResponseChanged","console","event","CustomEvent","bubbles","composed","detail","complete","component","tagName","toLowerCase","dispatchEvent","_dispatchModelSet","hasModel","undefined","language","lang","slice","s","data","HTMLElement"],"mappings":"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","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport debug from 'debug';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\nimport { updateSessionValue } from './session-updater';\n\nconst log = debug('pie-ui:multiple-choice');\n\nexport const isComplete = (session, model) => {\n if (!session || !session.value) {\n return false;\n }\n\n const { choiceMode, minSelections, maxSelections } = model || {};\n const selections = session.value.length || 0;\n\n if (choiceMode === 'radio') {\n return !!selections;\n }\n\n if (selections < minSelections || selections > maxSelections) {\n return false;\n }\n\n return true;\n};\n\nexport default class MultipleChoice extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n var element = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onChoiceChanged: this._onChange.bind(this),\n onShowCorrectToggle: this.onShowCorrectToggle.bind(this),\n });\n\n //TODO: aria-label is set in the _rerender because we need to change it when the model.choiceMode is updated. Consider revisiting the placement of the aria-label setting in the _rerender\n this.setAttribute(\n 'aria-label',\n this._model.choiceMode === 'radio' ? 'Multiple Choice Question' : 'Multiple Correct Answer Question',\n );\n this.setAttribute('role', 'region');\n this.setLangAttribute();\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n\n this._dispatchResponseChanged = debounce(() => {\n console.log('>> dispatch event');\n var event = new CustomEvent('session-changed', {\n bubbles: true,\n composed: true,\n detail: {\n complete: isComplete(this._session, this._model),\n component: this.tagName.toLowerCase(),\n },\n });\n\n this.dispatchEvent(event);\n });\n\n this._dispatchModelSet = debounce(\n () => {\n this.dispatchEvent(\n new CustomEvent('model-set', {\n bubbles: true,\n composed: true,\n detail: {\n complete: isComplete(this._session, this._model),\n component: this.tagName.toLowerCase(),\n hasModel: this._model !== undefined,\n },\n }),\n );\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n\n onShowCorrectToggle() {\n renderMath(this);\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n this._dispatchModelSet();\n }\n\n get session() {\n return this._session;\n }\n\n set session(s) {\n this._session = s;\n this._rerender();\n //TODO: remove this session-changed should only be emit on user change\n this._dispatchResponseChanged();\n }\n\n _onChange(data) {\n updateSessionValue(this._session, this._model.choiceMode, data);\n this._dispatchResponseChanged();\n this._rerender();\n }\n\n connectedCallback() {\n this._rerender();\n }\n}\n"],"file":"index.js"}
|
package/lib/multiple-choice.js
CHANGED
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.MultipleChoice = void 0;
|
|
9
9
|
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -108,20 +110,29 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
108
110
|
value = _event$target.value,
|
|
109
111
|
checked = _event$target.checked;
|
|
110
112
|
var _this$props = _this.props,
|
|
113
|
+
choiceMode = _this$props.choiceMode,
|
|
111
114
|
maxSelections = _this$props.maxSelections,
|
|
112
|
-
onChoiceChanged = _this$props.onChoiceChanged
|
|
113
|
-
session = _this$props.session;
|
|
115
|
+
onChoiceChanged = _this$props.onChoiceChanged;
|
|
114
116
|
|
|
115
|
-
if (
|
|
116
|
-
// show/hide max selections error when user select/deselect an answer
|
|
117
|
+
if (choiceMode === 'radio') {
|
|
117
118
|
_this.setState({
|
|
118
|
-
|
|
119
|
+
selectedValue: value
|
|
119
120
|
});
|
|
121
|
+
} else {
|
|
122
|
+
var selectedValues = _this.state.selectedValues;
|
|
120
123
|
|
|
121
|
-
if (checked) {
|
|
122
|
-
// prevent selecting more answers
|
|
124
|
+
if (checked && selectedValues.length >= maxSelections) {
|
|
123
125
|
return;
|
|
124
126
|
}
|
|
127
|
+
|
|
128
|
+
_this.setState(function (prevState) {
|
|
129
|
+
var selectedValues = checked ? [].concat((0, _toConsumableArray2["default"])(prevState.selectedValues), [value]) : prevState.selectedValues.filter(function (currentValue) {
|
|
130
|
+
return currentValue !== value;
|
|
131
|
+
});
|
|
132
|
+
return {
|
|
133
|
+
selectedValues: selectedValues
|
|
134
|
+
};
|
|
135
|
+
});
|
|
125
136
|
}
|
|
126
137
|
|
|
127
138
|
onChoiceChanged({
|
|
@@ -169,8 +180,9 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
169
180
|
}
|
|
170
181
|
});
|
|
171
182
|
_this.state = {
|
|
172
|
-
|
|
173
|
-
|
|
183
|
+
selectedValue: null,
|
|
184
|
+
selectedValues: [],
|
|
185
|
+
showCorrect: _this.props.alwaysShowCorrect || false
|
|
174
186
|
};
|
|
175
187
|
_this.onToggle = _this.onToggle.bind((0, _assertThisInitialized2["default"])(_this));
|
|
176
188
|
return _this;
|
|
@@ -182,6 +194,7 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
182
194
|
var sessionValue = this.props.session && this.props.session.value;
|
|
183
195
|
return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;
|
|
184
196
|
} // handleChange was added for accessibility. Please see comments and videos from PD-2441.
|
|
197
|
+
// TODO: Should only be removed if a better solution is found.
|
|
185
198
|
|
|
186
199
|
}, {
|
|
187
200
|
key: "UNSAFE_componentWillReceiveProps",
|
|
@@ -228,7 +241,11 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
228
241
|
return choice.correct || false;
|
|
229
242
|
}
|
|
230
243
|
|
|
231
|
-
|
|
244
|
+
if (this.isSelected(choice.value)) {
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return this.props.choiceMode === 'radio' ? this.state.selectedValue === choice.value : this.state.selectedValues.includes(choice.value);
|
|
232
249
|
} // renderHeading function was added for accessibility.
|
|
233
250
|
|
|
234
251
|
}, {
|
|
@@ -275,9 +292,7 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
275
292
|
minSelections = _this$props3.minSelections,
|
|
276
293
|
maxSelections = _this$props3.maxSelections,
|
|
277
294
|
session = _this$props3.session;
|
|
278
|
-
var
|
|
279
|
-
showCorrect = _this$state.showCorrect,
|
|
280
|
-
maxSelectionsErrorState = _this$state.maxSelectionsErrorState;
|
|
295
|
+
var showCorrect = this.state.showCorrect;
|
|
281
296
|
var isEvaluateMode = mode === 'evaluate';
|
|
282
297
|
var showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;
|
|
283
298
|
var columnsStyle = gridColumns > 1 ? {
|
|
@@ -343,7 +358,7 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
343
358
|
}, translator.t("translation:multipleChoice:minSelections_".concat(minSelections === 1 ? 'one' : 'other'), {
|
|
344
359
|
lng: language,
|
|
345
360
|
minSelections: minSelections
|
|
346
|
-
})), choiceMode === 'checkbox' &&
|
|
361
|
+
})), choiceMode === 'checkbox' && selections >= maxSelections && /*#__PURE__*/_react["default"].createElement("div", {
|
|
347
362
|
className: classes.errorText
|
|
348
363
|
}, translator.t("translation:multipleChoice:maxSelections_".concat(maxSelections === 1 ? 'one' : 'other'), {
|
|
349
364
|
lng: language,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["translator","Translator","styles","theme","main","color","text","backgroundColor","background","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","border","padding","minWidth","srOnly","position","left","top","width","height","overflow","errorText","typography","palette","error","paddingTop","MultipleChoice","props","event","target","value","checked","maxSelections","onChoiceChanged","session","length","setState","maxSelectionsErrorState","selected","mode","showCorrect","state","onShowCorrectToggle","choice","isCorrect","correct","isChecked","isSelected","undefined","alwaysShowCorrect","onToggle","bind","sessionValue","indexOf","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","choiceMode","classes","disabled","className","choices","gridColumns","prompt","responseCorrect","animationsDisabled","language","isSelectionButtonBelow","minSelections","isEvaluateMode","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","selections","teacherInstructionsDiv","renderHeading","hidden","visible","choicesLayout","map","selectedAnswerBackgroundColor","handleChange","hideTick","getChecked","getCorrectness","indexToSymbol","t","lng","React","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","number","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst { translator } = Translator;\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n partLabel: {\n display: 'block',\n fontSize: 'inherit',\n margin: '0',\n fontWeight: 'normal',\n paddingBottom: theme.spacing.unit * 2,\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n mode: PropTypes.oneOf(['gather', 'view', 'evaluate']),\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n keyMode: PropTypes.oneOf(['numbers', 'letters', 'none']),\n choices: PropTypes.array,\n partLabel: PropTypes.string,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool,\n onChoiceChanged: PropTypes.func,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n language: PropTypes.string,\n selectedAnswerBackgroundColor: PropTypes.string,\n onShowCorrectToggle: PropTypes.func,\n isSelectionButtonBelow: PropTypes.bool,\n minSelections: PropTypes.number,\n maxSelections: PropTypes.number,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: this.props.alwaysShowCorrect || false,\n maxSelectionsErrorState: false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;\n }\n\n // handleChange was added for accessibility. Please see comments and videos from PD-2441.\n handleChange = (event) => {\n const { value, checked } = event.target;\n const { maxSelections, onChoiceChanged, session } = this.props;\n\n if (session.value && session.value.length >= maxSelections) {\n // show/hide max selections error when user select/deselect an answer\n this.setState({ maxSelectionsErrorState: checked });\n\n if (checked) {\n // prevent selecting more answers\n return;\n }\n }\n\n onChoiceChanged({ value, selected: checked });\n };\n\n onToggle = () => {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse && this.state.showCorrect !== false) {\n this.setState({ showCorrect: false }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n\n if (nextProps.alwaysShowCorrect && this.state.showCorrect !== true) {\n this.setState({ showCorrect: true }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n }\n\n indexToSymbol(index) {\n if (this.props.keyMode === 'numbers') {\n return `${index + 1}`;\n }\n\n if (this.props.keyMode === 'letters') {\n return String.fromCharCode(97 + index).toUpperCase();\n }\n\n return '';\n }\n\n getCorrectness = (choice = {}) => {\n const isCorrect = choice.correct;\n const isChecked = this.isSelected(choice.value);\n\n if (this.state.showCorrect) {\n return isCorrect ? 'correct' : undefined;\n }\n\n if (isCorrect) {\n if (isChecked) {\n // A correct answer is selected: marked with a green checkmark\n return 'correct';\n } else {\n // A correct answer is NOT selected: marked with an orange X\n return 'incorrect';\n }\n } else {\n if (isChecked) {\n // An incorrect answer is selected: marked with an orange X\n return 'incorrect';\n } else {\n // An incorrect answer is NOT selected: not marked\n return undefined;\n }\n }\n };\n\n getChecked(choice) {\n if (this.state.showCorrect) {\n return choice.correct || false;\n }\n\n return this.isSelected(choice.value);\n }\n\n // renderHeading function was added for accessibility.\n renderHeading() {\n const { mode, choiceMode, classes } = this.props;\n\n if (mode !== 'gather') {\n return null;\n }\n\n return choiceMode === 'radio' ? (\n <h2 className={classes.srOnly}>Multiple Choice Question</h2>\n ) : (\n <h2 className={classes.srOnly}>Multiple Select Question</h2>\n );\n }\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language,\n isSelectionButtonBelow,\n minSelections,\n maxSelections,\n session,\n } = this.props;\n const { showCorrect, maxSelectionsErrorState } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n const selections = (session.value && session.value.length) || 0;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n return (\n <div className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h3 className={classes.partLabel}>{partLabel}</h3>}\n\n {this.renderHeading()}\n\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n <fieldset className={classes.fieldset}>\n <PreviewPrompt className=\"prompt\" defaultClassName=\"prompt\" prompt={prompt} tagName={'legend'} />\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n <div\n className={classNames({\n [classes.gridLayout]: this.props.choicesLayout === 'grid',\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n })}\n style={columnsStyle}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n choicesLayout={this.props.choicesLayout}\n selectedAnswerBackgroundColor={this.props.selectedAnswerBackgroundColor}\n gridColumns={gridColumns}\n key={`choice-${index}`}\n choice={choice}\n index={index}\n choicesLength={choices.length}\n showCorrect={showCorrect}\n isEvaluateMode={isEvaluateMode}\n choiceMode={choiceMode}\n disabled={disabled}\n onChoiceChanged={this.handleChange}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n isSelectionButtonBelow={isSelectionButtonBelow}\n />\n ))}\n </div>\n </fieldset>\n\n {choiceMode === 'checkbox' && selections < minSelections && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:minSelections_${minSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n minSelections,\n })}\n </div>\n )}\n {choiceMode === 'checkbox' && maxSelectionsErrorState && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n maxSelections,\n })}\n </div>\n )}\n </div>\n );\n }\n}\n\nMultipleChoice.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default withStyles(styles)(MultipleChoice);\n"],"file":"multiple-choice.js"}
|
|
1
|
+
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["translator","Translator","styles","theme","main","color","text","backgroundColor","background","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","border","padding","minWidth","srOnly","position","left","top","width","height","overflow","errorText","typography","palette","error","paddingTop","MultipleChoice","props","event","target","value","checked","choiceMode","maxSelections","onChoiceChanged","setState","selectedValue","selectedValues","state","length","prevState","filter","currentValue","selected","mode","showCorrect","onShowCorrectToggle","choice","isCorrect","correct","isChecked","isSelected","undefined","alwaysShowCorrect","onToggle","bind","sessionValue","session","indexOf","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","includes","classes","disabled","className","choices","gridColumns","prompt","responseCorrect","animationsDisabled","language","isSelectionButtonBelow","minSelections","isEvaluateMode","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","selections","teacherInstructionsDiv","renderHeading","hidden","visible","choicesLayout","map","selectedAnswerBackgroundColor","handleChange","hideTick","getChecked","getCorrectness","indexToSymbol","t","lng","React","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","number","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst { translator } = Translator;\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n partLabel: {\n display: 'block',\n fontSize: 'inherit',\n margin: '0',\n fontWeight: 'normal',\n paddingBottom: theme.spacing.unit * 2,\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n mode: PropTypes.oneOf(['gather', 'view', 'evaluate']),\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n keyMode: PropTypes.oneOf(['numbers', 'letters', 'none']),\n choices: PropTypes.array,\n partLabel: PropTypes.string,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool,\n onChoiceChanged: PropTypes.func,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n language: PropTypes.string,\n selectedAnswerBackgroundColor: PropTypes.string,\n onShowCorrectToggle: PropTypes.func,\n isSelectionButtonBelow: PropTypes.bool,\n minSelections: PropTypes.number,\n maxSelections: PropTypes.number,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n selectedValue: null,\n selectedValues: [],\n showCorrect: this.props.alwaysShowCorrect || false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;\n }\n\n // handleChange was added for accessibility. Please see comments and videos from PD-2441.\n // TODO: Should only be removed if a better solution is found.\n handleChange = (event) => {\n const { value, checked } = event.target;\n const { choiceMode, maxSelections, onChoiceChanged } = this.props;\n\n if (choiceMode === 'radio') {\n this.setState({ selectedValue: value });\n } else {\n const { selectedValues } = this.state;\n\n if (checked && selectedValues.length >= maxSelections) {\n return;\n }\n\n this.setState((prevState) => {\n const selectedValues = checked\n ? [...prevState.selectedValues, value]\n : prevState.selectedValues.filter((currentValue) => currentValue !== value);\n\n return { selectedValues };\n });\n }\n\n onChoiceChanged({ value, selected: checked });\n };\n\n onToggle = () => {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse && this.state.showCorrect !== false) {\n this.setState({ showCorrect: false }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n\n if (nextProps.alwaysShowCorrect && this.state.showCorrect !== true) {\n this.setState({ showCorrect: true }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n }\n\n indexToSymbol(index) {\n if (this.props.keyMode === 'numbers') {\n return `${index + 1}`;\n }\n\n if (this.props.keyMode === 'letters') {\n return String.fromCharCode(97 + index).toUpperCase();\n }\n\n return '';\n }\n\n getCorrectness = (choice = {}) => {\n const isCorrect = choice.correct;\n const isChecked = this.isSelected(choice.value);\n\n if (this.state.showCorrect) {\n return isCorrect ? 'correct' : undefined;\n }\n\n if (isCorrect) {\n if (isChecked) {\n // A correct answer is selected: marked with a green checkmark\n return 'correct';\n } else {\n // A correct answer is NOT selected: marked with an orange X\n return 'incorrect';\n }\n } else {\n if (isChecked) {\n // An incorrect answer is selected: marked with an orange X\n return 'incorrect';\n } else {\n // An incorrect answer is NOT selected: not marked\n return undefined;\n }\n }\n };\n\n getChecked(choice) {\n if (this.state.showCorrect) {\n return choice.correct || false;\n }\n\n if (this.isSelected(choice.value)) {\n return true;\n }\n\n return this.props.choiceMode === 'radio'\n ? this.state.selectedValue === choice.value\n : this.state.selectedValues.includes(choice.value);\n }\n\n // renderHeading function was added for accessibility.\n renderHeading() {\n const { mode, choiceMode, classes } = this.props;\n\n if (mode !== 'gather') {\n return null;\n }\n\n return choiceMode === 'radio' ? (\n <h2 className={classes.srOnly}>Multiple Choice Question</h2>\n ) : (\n <h2 className={classes.srOnly}>Multiple Select Question</h2>\n );\n }\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language,\n isSelectionButtonBelow,\n minSelections,\n maxSelections,\n session,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n const selections = (session.value && session.value.length) || 0;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n return (\n <div className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h3 className={classes.partLabel}>{partLabel}</h3>}\n\n {this.renderHeading()}\n\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n <fieldset className={classes.fieldset}>\n <PreviewPrompt className=\"prompt\" defaultClassName=\"prompt\" prompt={prompt} tagName={'legend'} />\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n <div\n className={classNames({\n [classes.gridLayout]: this.props.choicesLayout === 'grid',\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n })}\n style={columnsStyle}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n choicesLayout={this.props.choicesLayout}\n selectedAnswerBackgroundColor={this.props.selectedAnswerBackgroundColor}\n gridColumns={gridColumns}\n key={`choice-${index}`}\n choice={choice}\n index={index}\n choicesLength={choices.length}\n showCorrect={showCorrect}\n isEvaluateMode={isEvaluateMode}\n choiceMode={choiceMode}\n disabled={disabled}\n onChoiceChanged={this.handleChange}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n isSelectionButtonBelow={isSelectionButtonBelow}\n />\n ))}\n </div>\n </fieldset>\n\n {choiceMode === 'checkbox' && selections < minSelections && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:minSelections_${minSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n minSelections,\n })}\n </div>\n )}\n {choiceMode === 'checkbox' && selections >= maxSelections && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n maxSelections,\n })}\n </div>\n )}\n </div>\n );\n }\n}\n\nMultipleChoice.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default withStyles(styles)(MultipleChoice);\n"],"file":"multiple-choice.js"}
|
package/module/element.js
CHANGED
|
@@ -1381,8 +1381,8 @@ function createMuiTheme() {
|
|
|
1381
1381
|
var _default$C = createMuiTheme;
|
|
1382
1382
|
createMuiTheme$1.default = _default$C;
|
|
1383
1383
|
var jssPreset$1 = {};
|
|
1384
|
-
var lib$8 = {};
|
|
1385
1384
|
var lib$7 = {};
|
|
1385
|
+
var lib$6 = {};
|
|
1386
1386
|
var getDynamicStyles = {};
|
|
1387
1387
|
(function (exports) {
|
|
1388
1388
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -3631,8 +3631,8 @@ getDefaultExportFromCjs(Jss);
|
|
|
3631
3631
|
return new _Jss2['default'](options);
|
|
3632
3632
|
};
|
|
3633
3633
|
exports['default'] = create();
|
|
3634
|
-
})(lib$
|
|
3635
|
-
getDefaultExportFromCjs(lib$
|
|
3634
|
+
})(lib$6);
|
|
3635
|
+
getDefaultExportFromCjs(lib$6);
|
|
3636
3636
|
(function (exports) {
|
|
3637
3637
|
Object.defineProperty(exports, "__esModule", {
|
|
3638
3638
|
value: true
|
|
@@ -3665,7 +3665,7 @@ getDefaultExportFromCjs(lib$7);
|
|
|
3665
3665
|
};
|
|
3666
3666
|
})();
|
|
3667
3667
|
exports['default'] = jssGlobal;
|
|
3668
|
-
var _jss = lib$
|
|
3668
|
+
var _jss = lib$6;
|
|
3669
3669
|
function _classCallCheck(instance, Constructor) {
|
|
3670
3670
|
if (!(instance instanceof Constructor)) {
|
|
3671
3671
|
throw new TypeError("Cannot call a class as a function");
|
|
@@ -3792,9 +3792,9 @@ getDefaultExportFromCjs(lib$7);
|
|
|
3792
3792
|
onProcessRule: onProcessRule
|
|
3793
3793
|
};
|
|
3794
3794
|
}
|
|
3795
|
-
})(lib$
|
|
3796
|
-
getDefaultExportFromCjs(lib$
|
|
3797
|
-
var lib$
|
|
3795
|
+
})(lib$7);
|
|
3796
|
+
getDefaultExportFromCjs(lib$7);
|
|
3797
|
+
var lib$5 = {};
|
|
3798
3798
|
var warning = function () {};
|
|
3799
3799
|
{
|
|
3800
3800
|
warning = function (condition, format, args) {
|
|
@@ -3824,7 +3824,7 @@ var warning = function () {};
|
|
|
3824
3824
|
};
|
|
3825
3825
|
}
|
|
3826
3826
|
var browser = warning;
|
|
3827
|
-
Object.defineProperty(lib$
|
|
3827
|
+
Object.defineProperty(lib$5, "__esModule", {
|
|
3828
3828
|
value: true
|
|
3829
3829
|
});
|
|
3830
3830
|
var _extends = Object.assign || (function (target) {
|
|
@@ -3838,7 +3838,7 @@ var _extends = Object.assign || (function (target) {
|
|
|
3838
3838
|
}
|
|
3839
3839
|
return target;
|
|
3840
3840
|
});
|
|
3841
|
-
lib$
|
|
3841
|
+
lib$5.default = jssNested;
|
|
3842
3842
|
var _warning$6 = browser;
|
|
3843
3843
|
var _warning2 = _interopRequireDefault$A(_warning$6);
|
|
3844
3844
|
function _interopRequireDefault$A(obj) {
|
|
@@ -3916,7 +3916,7 @@ function jssNested() {
|
|
|
3916
3916
|
onProcessStyle: onProcessStyle
|
|
3917
3917
|
};
|
|
3918
3918
|
}
|
|
3919
|
-
var lib$
|
|
3919
|
+
var lib$4 = {};
|
|
3920
3920
|
var uppercasePattern = /[A-Z]/g;
|
|
3921
3921
|
var msPattern = /^ms-/;
|
|
3922
3922
|
var cache = {};
|
|
@@ -3978,9 +3978,9 @@ var require$$0$6 = getAugmentedNamespace(hyphenateStyleName$1);
|
|
|
3978
3978
|
onChangeValue: onChangeValue
|
|
3979
3979
|
};
|
|
3980
3980
|
}
|
|
3981
|
-
})(lib$
|
|
3982
|
-
getDefaultExportFromCjs(lib$
|
|
3983
|
-
var lib$
|
|
3981
|
+
})(lib$4);
|
|
3982
|
+
getDefaultExportFromCjs(lib$4);
|
|
3983
|
+
var lib$3 = {};
|
|
3984
3984
|
var defaultUnits = {};
|
|
3985
3985
|
(function (exports) {
|
|
3986
3986
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -4171,10 +4171,10 @@ getDefaultExportFromCjs(defaultUnits);
|
|
|
4171
4171
|
onChangeValue: onChangeValue
|
|
4172
4172
|
};
|
|
4173
4173
|
}
|
|
4174
|
-
})(lib$
|
|
4175
|
-
getDefaultExportFromCjs(lib$
|
|
4176
|
-
var lib$3 = {};
|
|
4174
|
+
})(lib$3);
|
|
4175
|
+
getDefaultExportFromCjs(lib$3);
|
|
4177
4176
|
var lib$2 = {};
|
|
4177
|
+
var lib$1 = {};
|
|
4178
4178
|
var prefix = {};
|
|
4179
4179
|
(function (exports) {
|
|
4180
4180
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -4334,14 +4334,14 @@ getDefaultExportFromCjs(supportedValue);
|
|
|
4334
4334
|
exports.prefix = _prefix2['default'];
|
|
4335
4335
|
exports.supportedProperty = _supportedProperty2['default'];
|
|
4336
4336
|
exports.supportedValue = _supportedValue2['default'];
|
|
4337
|
-
})(lib$
|
|
4338
|
-
getDefaultExportFromCjs(lib$
|
|
4337
|
+
})(lib$1);
|
|
4338
|
+
getDefaultExportFromCjs(lib$1);
|
|
4339
4339
|
(function (exports) {
|
|
4340
4340
|
Object.defineProperty(exports, "__esModule", {
|
|
4341
4341
|
value: true
|
|
4342
4342
|
});
|
|
4343
4343
|
exports['default'] = jssVendorPrefixer;
|
|
4344
|
-
var _cssVendor = lib$
|
|
4344
|
+
var _cssVendor = lib$1;
|
|
4345
4345
|
var vendor = _interopRequireWildcard(_cssVendor);
|
|
4346
4346
|
function _interopRequireWildcard(obj) {
|
|
4347
4347
|
if (obj && obj.__esModule) {
|
|
@@ -4389,9 +4389,9 @@ getDefaultExportFromCjs(lib$2);
|
|
|
4389
4389
|
onChangeValue: onChangeValue
|
|
4390
4390
|
};
|
|
4391
4391
|
}
|
|
4392
|
-
})(lib$
|
|
4393
|
-
getDefaultExportFromCjs(lib$
|
|
4394
|
-
var lib
|
|
4392
|
+
})(lib$2);
|
|
4393
|
+
getDefaultExportFromCjs(lib$2);
|
|
4394
|
+
var lib = {};
|
|
4395
4395
|
(function (exports) {
|
|
4396
4396
|
Object.defineProperty(exports, "__esModule", {
|
|
4397
4397
|
value: true
|
|
@@ -4414,19 +4414,19 @@ var lib$1 = {};
|
|
|
4414
4414
|
onProcessStyle: onProcessStyle
|
|
4415
4415
|
};
|
|
4416
4416
|
}
|
|
4417
|
-
})(lib
|
|
4418
|
-
getDefaultExportFromCjs(lib
|
|
4417
|
+
})(lib);
|
|
4418
|
+
getDefaultExportFromCjs(lib);
|
|
4419
4419
|
var _interopRequireDefault$z = interopRequireDefault.exports;
|
|
4420
4420
|
Object.defineProperty(jssPreset$1, "__esModule", {
|
|
4421
4421
|
value: true
|
|
4422
4422
|
});
|
|
4423
4423
|
jssPreset$1.default = void 0;
|
|
4424
|
-
var _jssGlobal = _interopRequireDefault$z(lib$
|
|
4425
|
-
var _jssNested = _interopRequireDefault$z(lib$
|
|
4426
|
-
var _jssCamelCase = _interopRequireDefault$z(lib$
|
|
4427
|
-
var _jssDefaultUnit = _interopRequireDefault$z(lib$
|
|
4428
|
-
var _jssVendorPrefixer = _interopRequireDefault$z(lib$
|
|
4429
|
-
var _jssPropsSort = _interopRequireDefault$z(lib
|
|
4424
|
+
var _jssGlobal = _interopRequireDefault$z(lib$7);
|
|
4425
|
+
var _jssNested = _interopRequireDefault$z(lib$5);
|
|
4426
|
+
var _jssCamelCase = _interopRequireDefault$z(lib$4);
|
|
4427
|
+
var _jssDefaultUnit = _interopRequireDefault$z(lib$3);
|
|
4428
|
+
var _jssVendorPrefixer = _interopRequireDefault$z(lib$2);
|
|
4429
|
+
var _jssPropsSort = _interopRequireDefault$z(lib);
|
|
4430
4430
|
function jssPreset() {
|
|
4431
4431
|
return {
|
|
4432
4432
|
plugins: [(0, _jssGlobal.default)(), (0, _jssNested.default)(), (0, _jssCamelCase.default)(), (0, _jssDefaultUnit.default)(), typeof window === 'undefined' ? null : (0, _jssVendorPrefixer.default)(), (0, _jssPropsSort.default)()]
|
|
@@ -5026,7 +5026,7 @@ var _propTypes$d = _interopRequireDefault$u(require$$10$4);
|
|
|
5026
5026
|
var _warning$2 = _interopRequireDefault$u(warning_1);
|
|
5027
5027
|
var _hoistNonReactStatics$2 = _interopRequireDefault$u(hoistNonReactStatics_cjs);
|
|
5028
5028
|
var _utils$7 = require$$7$1;
|
|
5029
|
-
var _jss = lib$
|
|
5029
|
+
var _jss = lib$6;
|
|
5030
5030
|
var _reactJssContext = _interopRequireDefault$u(reactJssContext);
|
|
5031
5031
|
var _jssPreset = _interopRequireDefault$u(jssPreset$1);
|
|
5032
5032
|
var _mergeClasses = _interopRequireDefault$u(mergeClasses$1);
|
|
@@ -12666,8 +12666,9 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12666
12666
|
MultipleChoice$1.prototype.__init2.call(this);
|
|
12667
12667
|
MultipleChoice$1.prototype.__init3.call(this);
|
|
12668
12668
|
this.state = {
|
|
12669
|
-
|
|
12670
|
-
|
|
12669
|
+
selectedValue: null,
|
|
12670
|
+
selectedValues: [],
|
|
12671
|
+
showCorrect: this.props.alwaysShowCorrect || false
|
|
12671
12672
|
};
|
|
12672
12673
|
this.onToggle = this.onToggle.bind(this);
|
|
12673
12674
|
}
|
|
@@ -12678,14 +12679,22 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12678
12679
|
__init() {
|
|
12679
12680
|
this.handleChange = event => {
|
|
12680
12681
|
const {value, checked} = event.target;
|
|
12681
|
-
const {maxSelections, onChoiceChanged
|
|
12682
|
-
if (
|
|
12682
|
+
const {choiceMode, maxSelections, onChoiceChanged} = this.props;
|
|
12683
|
+
if (choiceMode === 'radio') {
|
|
12683
12684
|
this.setState({
|
|
12684
|
-
|
|
12685
|
+
selectedValue: value
|
|
12685
12686
|
});
|
|
12686
|
-
|
|
12687
|
+
} else {
|
|
12688
|
+
const {selectedValues} = this.state;
|
|
12689
|
+
if (checked && selectedValues.length >= maxSelections) {
|
|
12687
12690
|
return;
|
|
12688
12691
|
}
|
|
12692
|
+
this.setState(prevState => {
|
|
12693
|
+
const selectedValues = checked ? [...prevState.selectedValues, value] : prevState.selectedValues.filter(currentValue => currentValue !== value);
|
|
12694
|
+
return {
|
|
12695
|
+
selectedValues
|
|
12696
|
+
};
|
|
12697
|
+
});
|
|
12689
12698
|
}
|
|
12690
12699
|
onChoiceChanged({
|
|
12691
12700
|
value,
|
|
@@ -12761,7 +12770,10 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12761
12770
|
if (this.state.showCorrect) {
|
|
12762
12771
|
return choice.correct || false;
|
|
12763
12772
|
}
|
|
12764
|
-
|
|
12773
|
+
if (this.isSelected(choice.value)) {
|
|
12774
|
+
return true;
|
|
12775
|
+
}
|
|
12776
|
+
return this.props.choiceMode === 'radio' ? this.state.selectedValue === choice.value : this.state.selectedValues.includes(choice.value);
|
|
12765
12777
|
}
|
|
12766
12778
|
renderHeading() {
|
|
12767
12779
|
const {mode, choiceMode, classes} = this.props;
|
|
@@ -12773,20 +12785,20 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12773
12785
|
__self: this,
|
|
12774
12786
|
__source: {
|
|
12775
12787
|
fileName: _jsxFileName$1,
|
|
12776
|
-
lineNumber:
|
|
12788
|
+
lineNumber: 225
|
|
12777
12789
|
}
|
|
12778
12790
|
}, "Multiple Choice Question") : React$2.createElement('h2', {
|
|
12779
12791
|
className: classes.srOnly,
|
|
12780
12792
|
__self: this,
|
|
12781
12793
|
__source: {
|
|
12782
12794
|
fileName: _jsxFileName$1,
|
|
12783
|
-
lineNumber:
|
|
12795
|
+
lineNumber: 227
|
|
12784
12796
|
}
|
|
12785
12797
|
}, "Multiple Select Question");
|
|
12786
12798
|
}
|
|
12787
12799
|
render() {
|
|
12788
12800
|
const {mode, disabled, className, choices = [], choiceMode, gridColumns, partLabel, prompt, responseCorrect, teacherInstructions, classes, alwaysShowCorrect, animationsDisabled, language, isSelectionButtonBelow, minSelections, maxSelections, session} = this.props;
|
|
12789
|
-
const {showCorrect
|
|
12801
|
+
const {showCorrect} = this.state;
|
|
12790
12802
|
const isEvaluateMode = mode === 'evaluate';
|
|
12791
12803
|
const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;
|
|
12792
12804
|
const columnsStyle = gridColumns > 1 ? {
|
|
@@ -12801,7 +12813,7 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12801
12813
|
__self: this,
|
|
12802
12814
|
__source: {
|
|
12803
12815
|
fileName: _jsxFileName$1,
|
|
12804
|
-
lineNumber:
|
|
12816
|
+
lineNumber: 259
|
|
12805
12817
|
}
|
|
12806
12818
|
});
|
|
12807
12819
|
return React$2.createElement('div', {
|
|
@@ -12809,21 +12821,21 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12809
12821
|
__self: this,
|
|
12810
12822
|
__source: {
|
|
12811
12823
|
fileName: _jsxFileName$1,
|
|
12812
|
-
lineNumber:
|
|
12824
|
+
lineNumber: 268
|
|
12813
12825
|
}
|
|
12814
12826
|
}, partLabel && React$2.createElement('h3', {
|
|
12815
12827
|
className: classes.partLabel,
|
|
12816
12828
|
__self: this,
|
|
12817
12829
|
__source: {
|
|
12818
12830
|
fileName: _jsxFileName$1,
|
|
12819
|
-
lineNumber:
|
|
12831
|
+
lineNumber: 269
|
|
12820
12832
|
}
|
|
12821
12833
|
}, partLabel), this.renderHeading(), teacherInstructions && React$2.createElement('div', {
|
|
12822
12834
|
className: classes.teacherInstructions,
|
|
12823
12835
|
__self: this,
|
|
12824
12836
|
__source: {
|
|
12825
12837
|
fileName: _jsxFileName$1,
|
|
12826
|
-
lineNumber:
|
|
12838
|
+
lineNumber: 274
|
|
12827
12839
|
}
|
|
12828
12840
|
}, !animationsDisabled ? React$2.createElement(Collapsible, {
|
|
12829
12841
|
labels: {
|
|
@@ -12833,14 +12845,14 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12833
12845
|
__self: this,
|
|
12834
12846
|
__source: {
|
|
12835
12847
|
fileName: _jsxFileName$1,
|
|
12836
|
-
lineNumber:
|
|
12848
|
+
lineNumber: 276
|
|
12837
12849
|
}
|
|
12838
12850
|
}, teacherInstructionsDiv) : teacherInstructionsDiv), React$2.createElement('fieldset', {
|
|
12839
12851
|
className: classes.fieldset,
|
|
12840
12852
|
__self: this,
|
|
12841
12853
|
__source: {
|
|
12842
12854
|
fileName: _jsxFileName$1,
|
|
12843
|
-
lineNumber:
|
|
12855
|
+
lineNumber: 290
|
|
12844
12856
|
}
|
|
12845
12857
|
}, React$2.createElement(PreviewPrompt, {
|
|
12846
12858
|
className: "prompt",
|
|
@@ -12850,7 +12862,7 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12850
12862
|
__self: this,
|
|
12851
12863
|
__source: {
|
|
12852
12864
|
fileName: _jsxFileName$1,
|
|
12853
|
-
lineNumber:
|
|
12865
|
+
lineNumber: 291
|
|
12854
12866
|
}
|
|
12855
12867
|
}), !alwaysShowCorrect && React$2.createElement(CorrectAnswerToggle, {
|
|
12856
12868
|
show: showCorrectAnswerToggle,
|
|
@@ -12860,7 +12872,7 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12860
12872
|
__self: this,
|
|
12861
12873
|
__source: {
|
|
12862
12874
|
fileName: _jsxFileName$1,
|
|
12863
|
-
lineNumber:
|
|
12875
|
+
lineNumber: 294
|
|
12864
12876
|
}
|
|
12865
12877
|
}), React$2.createElement('div', {
|
|
12866
12878
|
className: classNames({
|
|
@@ -12871,7 +12883,7 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12871
12883
|
__self: this,
|
|
12872
12884
|
__source: {
|
|
12873
12885
|
fileName: _jsxFileName$1,
|
|
12874
|
-
lineNumber:
|
|
12886
|
+
lineNumber: 302
|
|
12875
12887
|
}
|
|
12876
12888
|
}, choices.map((choice, index) => React$2.createElement(StyledChoice, {
|
|
12877
12889
|
choicesLayout: this.props.choicesLayout,
|
|
@@ -12894,24 +12906,24 @@ class MultipleChoice$1 extends React$2.Component {
|
|
|
12894
12906
|
__self: this,
|
|
12895
12907
|
__source: {
|
|
12896
12908
|
fileName: _jsxFileName$1,
|
|
12897
|
-
lineNumber:
|
|
12909
|
+
lineNumber: 310
|
|
12898
12910
|
}
|
|
12899
12911
|
})))), choiceMode === 'checkbox' && selections < minSelections && React$2.createElement('div', {
|
|
12900
12912
|
className: classes.errorText,
|
|
12901
12913
|
__self: this,
|
|
12902
12914
|
__source: {
|
|
12903
12915
|
fileName: _jsxFileName$1,
|
|
12904
|
-
lineNumber:
|
|
12916
|
+
lineNumber: 334
|
|
12905
12917
|
}
|
|
12906
12918
|
}, translator.t(`translation:multipleChoice:minSelections_${minSelections === 1 ? 'one' : 'other'}`, {
|
|
12907
12919
|
lng: language,
|
|
12908
12920
|
minSelections
|
|
12909
|
-
})), choiceMode === 'checkbox' &&
|
|
12921
|
+
})), choiceMode === 'checkbox' && selections >= maxSelections && React$2.createElement('div', {
|
|
12910
12922
|
className: classes.errorText,
|
|
12911
12923
|
__self: this,
|
|
12912
12924
|
__source: {
|
|
12913
12925
|
fileName: _jsxFileName$1,
|
|
12914
|
-
lineNumber:
|
|
12926
|
+
lineNumber: 342
|
|
12915
12927
|
}
|
|
12916
12928
|
}, translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {
|
|
12917
12929
|
lng: language,
|
|
@@ -13003,43 +13015,6 @@ const Root = props => React$1.createElement(styles$b.MuiThemeProvider, {
|
|
|
13003
13015
|
lineNumber: 59
|
|
13004
13016
|
}
|
|
13005
13017
|
}));
|
|
13006
|
-
var lib = {};
|
|
13007
|
-
Object.defineProperty(lib, "__esModule", {
|
|
13008
|
-
value: true
|
|
13009
|
-
});
|
|
13010
|
-
class ModelSetEvent extends CustomEvent {
|
|
13011
|
-
constructor(component, complete, hasModel) {
|
|
13012
|
-
super(ModelSetEvent.TYPE, {
|
|
13013
|
-
bubbles: true,
|
|
13014
|
-
composed: true,
|
|
13015
|
-
detail: {
|
|
13016
|
-
complete,
|
|
13017
|
-
component,
|
|
13018
|
-
hasModel
|
|
13019
|
-
}
|
|
13020
|
-
});
|
|
13021
|
-
this.component = component;
|
|
13022
|
-
this.complete = complete;
|
|
13023
|
-
}
|
|
13024
|
-
}
|
|
13025
|
-
ModelSetEvent.TYPE = 'model-set';
|
|
13026
|
-
var ModelSetEvent_1 = lib.ModelSetEvent = ModelSetEvent;
|
|
13027
|
-
class SessionChangedEvent extends CustomEvent {
|
|
13028
|
-
constructor(component, complete) {
|
|
13029
|
-
super(SessionChangedEvent.TYPE, {
|
|
13030
|
-
bubbles: true,
|
|
13031
|
-
composed: true,
|
|
13032
|
-
detail: {
|
|
13033
|
-
complete,
|
|
13034
|
-
component
|
|
13035
|
-
}
|
|
13036
|
-
});
|
|
13037
|
-
this.component = component;
|
|
13038
|
-
this.complete = complete;
|
|
13039
|
-
}
|
|
13040
|
-
}
|
|
13041
|
-
SessionChangedEvent.TYPE = 'session-changed';
|
|
13042
|
-
var SessionChangedEvent_1 = lib.SessionChangedEvent = SessionChangedEvent;
|
|
13043
13018
|
const {concat: concat} = _dll_lodash;
|
|
13044
13019
|
const {uniq: uniq} = _dll_lodash;
|
|
13045
13020
|
const {without: without} = _dll_lodash;
|
|
@@ -13070,7 +13045,7 @@ const isComplete = (session, model) => {
|
|
|
13070
13045
|
if (!session || !session.value) {
|
|
13071
13046
|
return false;
|
|
13072
13047
|
}
|
|
13073
|
-
const {choiceMode, minSelections
|
|
13048
|
+
const {choiceMode, minSelections, maxSelections} = model || ({});
|
|
13074
13049
|
const selections = session.value.length || 0;
|
|
13075
13050
|
if (choiceMode === 'radio') {
|
|
13076
13051
|
return !!selections;
|
|
@@ -13108,10 +13083,27 @@ class MultipleChoice extends HTMLElement {
|
|
|
13108
13083
|
trailing: true
|
|
13109
13084
|
});
|
|
13110
13085
|
this._dispatchResponseChanged = debounce(() => {
|
|
13111
|
-
|
|
13086
|
+
console.log('>> dispatch event');
|
|
13087
|
+
var event = new CustomEvent('session-changed', {
|
|
13088
|
+
bubbles: true,
|
|
13089
|
+
composed: true,
|
|
13090
|
+
detail: {
|
|
13091
|
+
complete: isComplete(this._session, this._model),
|
|
13092
|
+
component: this.tagName.toLowerCase()
|
|
13093
|
+
}
|
|
13094
|
+
});
|
|
13095
|
+
this.dispatchEvent(event);
|
|
13112
13096
|
});
|
|
13113
13097
|
this._dispatchModelSet = debounce(() => {
|
|
13114
|
-
this.dispatchEvent(new
|
|
13098
|
+
this.dispatchEvent(new CustomEvent('model-set', {
|
|
13099
|
+
bubbles: true,
|
|
13100
|
+
composed: true,
|
|
13101
|
+
detail: {
|
|
13102
|
+
complete: isComplete(this._session, this._model),
|
|
13103
|
+
component: this.tagName.toLowerCase(),
|
|
13104
|
+
hasModel: this._model !== undefined
|
|
13105
|
+
}
|
|
13106
|
+
}));
|
|
13115
13107
|
}, 50, {
|
|
13116
13108
|
leading: false,
|
|
13117
13109
|
trailing: true
|
package/module/print.js
CHANGED
|
@@ -12666,8 +12666,9 @@ class MultipleChoice extends React$2.Component {
|
|
|
12666
12666
|
MultipleChoice.prototype.__init2.call(this);
|
|
12667
12667
|
MultipleChoice.prototype.__init3.call(this);
|
|
12668
12668
|
this.state = {
|
|
12669
|
-
|
|
12670
|
-
|
|
12669
|
+
selectedValue: null,
|
|
12670
|
+
selectedValues: [],
|
|
12671
|
+
showCorrect: this.props.alwaysShowCorrect || false
|
|
12671
12672
|
};
|
|
12672
12673
|
this.onToggle = this.onToggle.bind(this);
|
|
12673
12674
|
}
|
|
@@ -12678,14 +12679,22 @@ class MultipleChoice extends React$2.Component {
|
|
|
12678
12679
|
__init() {
|
|
12679
12680
|
this.handleChange = event => {
|
|
12680
12681
|
const {value, checked} = event.target;
|
|
12681
|
-
const {maxSelections, onChoiceChanged
|
|
12682
|
-
if (
|
|
12682
|
+
const {choiceMode, maxSelections, onChoiceChanged} = this.props;
|
|
12683
|
+
if (choiceMode === 'radio') {
|
|
12683
12684
|
this.setState({
|
|
12684
|
-
|
|
12685
|
+
selectedValue: value
|
|
12685
12686
|
});
|
|
12686
|
-
|
|
12687
|
+
} else {
|
|
12688
|
+
const {selectedValues} = this.state;
|
|
12689
|
+
if (checked && selectedValues.length >= maxSelections) {
|
|
12687
12690
|
return;
|
|
12688
12691
|
}
|
|
12692
|
+
this.setState(prevState => {
|
|
12693
|
+
const selectedValues = checked ? [...prevState.selectedValues, value] : prevState.selectedValues.filter(currentValue => currentValue !== value);
|
|
12694
|
+
return {
|
|
12695
|
+
selectedValues
|
|
12696
|
+
};
|
|
12697
|
+
});
|
|
12689
12698
|
}
|
|
12690
12699
|
onChoiceChanged({
|
|
12691
12700
|
value,
|
|
@@ -12761,7 +12770,10 @@ class MultipleChoice extends React$2.Component {
|
|
|
12761
12770
|
if (this.state.showCorrect) {
|
|
12762
12771
|
return choice.correct || false;
|
|
12763
12772
|
}
|
|
12764
|
-
|
|
12773
|
+
if (this.isSelected(choice.value)) {
|
|
12774
|
+
return true;
|
|
12775
|
+
}
|
|
12776
|
+
return this.props.choiceMode === 'radio' ? this.state.selectedValue === choice.value : this.state.selectedValues.includes(choice.value);
|
|
12765
12777
|
}
|
|
12766
12778
|
renderHeading() {
|
|
12767
12779
|
const {mode, choiceMode, classes} = this.props;
|
|
@@ -12773,20 +12785,20 @@ class MultipleChoice extends React$2.Component {
|
|
|
12773
12785
|
__self: this,
|
|
12774
12786
|
__source: {
|
|
12775
12787
|
fileName: _jsxFileName$1,
|
|
12776
|
-
lineNumber:
|
|
12788
|
+
lineNumber: 225
|
|
12777
12789
|
}
|
|
12778
12790
|
}, "Multiple Choice Question") : React$2.createElement('h2', {
|
|
12779
12791
|
className: classes.srOnly,
|
|
12780
12792
|
__self: this,
|
|
12781
12793
|
__source: {
|
|
12782
12794
|
fileName: _jsxFileName$1,
|
|
12783
|
-
lineNumber:
|
|
12795
|
+
lineNumber: 227
|
|
12784
12796
|
}
|
|
12785
12797
|
}, "Multiple Select Question");
|
|
12786
12798
|
}
|
|
12787
12799
|
render() {
|
|
12788
12800
|
const {mode, disabled, className, choices = [], choiceMode, gridColumns, partLabel, prompt, responseCorrect, teacherInstructions, classes, alwaysShowCorrect, animationsDisabled, language, isSelectionButtonBelow, minSelections, maxSelections, session} = this.props;
|
|
12789
|
-
const {showCorrect
|
|
12801
|
+
const {showCorrect} = this.state;
|
|
12790
12802
|
const isEvaluateMode = mode === 'evaluate';
|
|
12791
12803
|
const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;
|
|
12792
12804
|
const columnsStyle = gridColumns > 1 ? {
|
|
@@ -12801,7 +12813,7 @@ class MultipleChoice extends React$2.Component {
|
|
|
12801
12813
|
__self: this,
|
|
12802
12814
|
__source: {
|
|
12803
12815
|
fileName: _jsxFileName$1,
|
|
12804
|
-
lineNumber:
|
|
12816
|
+
lineNumber: 259
|
|
12805
12817
|
}
|
|
12806
12818
|
});
|
|
12807
12819
|
return React$2.createElement('div', {
|
|
@@ -12809,21 +12821,21 @@ class MultipleChoice extends React$2.Component {
|
|
|
12809
12821
|
__self: this,
|
|
12810
12822
|
__source: {
|
|
12811
12823
|
fileName: _jsxFileName$1,
|
|
12812
|
-
lineNumber:
|
|
12824
|
+
lineNumber: 268
|
|
12813
12825
|
}
|
|
12814
12826
|
}, partLabel && React$2.createElement('h3', {
|
|
12815
12827
|
className: classes.partLabel,
|
|
12816
12828
|
__self: this,
|
|
12817
12829
|
__source: {
|
|
12818
12830
|
fileName: _jsxFileName$1,
|
|
12819
|
-
lineNumber:
|
|
12831
|
+
lineNumber: 269
|
|
12820
12832
|
}
|
|
12821
12833
|
}, partLabel), this.renderHeading(), teacherInstructions && React$2.createElement('div', {
|
|
12822
12834
|
className: classes.teacherInstructions,
|
|
12823
12835
|
__self: this,
|
|
12824
12836
|
__source: {
|
|
12825
12837
|
fileName: _jsxFileName$1,
|
|
12826
|
-
lineNumber:
|
|
12838
|
+
lineNumber: 274
|
|
12827
12839
|
}
|
|
12828
12840
|
}, !animationsDisabled ? React$2.createElement(Collapsible, {
|
|
12829
12841
|
labels: {
|
|
@@ -12833,14 +12845,14 @@ class MultipleChoice extends React$2.Component {
|
|
|
12833
12845
|
__self: this,
|
|
12834
12846
|
__source: {
|
|
12835
12847
|
fileName: _jsxFileName$1,
|
|
12836
|
-
lineNumber:
|
|
12848
|
+
lineNumber: 276
|
|
12837
12849
|
}
|
|
12838
12850
|
}, teacherInstructionsDiv) : teacherInstructionsDiv), React$2.createElement('fieldset', {
|
|
12839
12851
|
className: classes.fieldset,
|
|
12840
12852
|
__self: this,
|
|
12841
12853
|
__source: {
|
|
12842
12854
|
fileName: _jsxFileName$1,
|
|
12843
|
-
lineNumber:
|
|
12855
|
+
lineNumber: 290
|
|
12844
12856
|
}
|
|
12845
12857
|
}, React$2.createElement(PreviewPrompt, {
|
|
12846
12858
|
className: "prompt",
|
|
@@ -12850,7 +12862,7 @@ class MultipleChoice extends React$2.Component {
|
|
|
12850
12862
|
__self: this,
|
|
12851
12863
|
__source: {
|
|
12852
12864
|
fileName: _jsxFileName$1,
|
|
12853
|
-
lineNumber:
|
|
12865
|
+
lineNumber: 291
|
|
12854
12866
|
}
|
|
12855
12867
|
}), !alwaysShowCorrect && React$2.createElement(CorrectAnswerToggle, {
|
|
12856
12868
|
show: showCorrectAnswerToggle,
|
|
@@ -12860,7 +12872,7 @@ class MultipleChoice extends React$2.Component {
|
|
|
12860
12872
|
__self: this,
|
|
12861
12873
|
__source: {
|
|
12862
12874
|
fileName: _jsxFileName$1,
|
|
12863
|
-
lineNumber:
|
|
12875
|
+
lineNumber: 294
|
|
12864
12876
|
}
|
|
12865
12877
|
}), React$2.createElement('div', {
|
|
12866
12878
|
className: classNames({
|
|
@@ -12871,7 +12883,7 @@ class MultipleChoice extends React$2.Component {
|
|
|
12871
12883
|
__self: this,
|
|
12872
12884
|
__source: {
|
|
12873
12885
|
fileName: _jsxFileName$1,
|
|
12874
|
-
lineNumber:
|
|
12886
|
+
lineNumber: 302
|
|
12875
12887
|
}
|
|
12876
12888
|
}, choices.map((choice, index) => React$2.createElement(StyledChoice, {
|
|
12877
12889
|
choicesLayout: this.props.choicesLayout,
|
|
@@ -12894,24 +12906,24 @@ class MultipleChoice extends React$2.Component {
|
|
|
12894
12906
|
__self: this,
|
|
12895
12907
|
__source: {
|
|
12896
12908
|
fileName: _jsxFileName$1,
|
|
12897
|
-
lineNumber:
|
|
12909
|
+
lineNumber: 310
|
|
12898
12910
|
}
|
|
12899
12911
|
})))), choiceMode === 'checkbox' && selections < minSelections && React$2.createElement('div', {
|
|
12900
12912
|
className: classes.errorText,
|
|
12901
12913
|
__self: this,
|
|
12902
12914
|
__source: {
|
|
12903
12915
|
fileName: _jsxFileName$1,
|
|
12904
|
-
lineNumber:
|
|
12916
|
+
lineNumber: 334
|
|
12905
12917
|
}
|
|
12906
12918
|
}, translator.t(`translation:multipleChoice:minSelections_${minSelections === 1 ? 'one' : 'other'}`, {
|
|
12907
12919
|
lng: language,
|
|
12908
12920
|
minSelections
|
|
12909
|
-
})), choiceMode === 'checkbox' &&
|
|
12921
|
+
})), choiceMode === 'checkbox' && selections >= maxSelections && React$2.createElement('div', {
|
|
12910
12922
|
className: classes.errorText,
|
|
12911
12923
|
__self: this,
|
|
12912
12924
|
__source: {
|
|
12913
12925
|
fileName: _jsxFileName$1,
|
|
12914
|
-
lineNumber:
|
|
12926
|
+
lineNumber: 342
|
|
12915
12927
|
}
|
|
12916
12928
|
}, translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {
|
|
12917
12929
|
lng: language,
|
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/multiple-choice",
|
|
3
3
|
"repository": "pie-framework/pie-elements",
|
|
4
|
-
"version": "9.7.2-next.
|
|
4
|
+
"version": "9.7.2-next.7+2e72baca5",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@material-ui/core": "^3.9.2",
|
|
10
|
-
"@pie-framework/pie-player-events": "^0.1.0",
|
|
11
10
|
"@pie-lib/pie-toolbox": "2.6.1",
|
|
12
11
|
"classnames": "^2.2.5",
|
|
13
12
|
"debug": "^4.1.1",
|
|
@@ -19,7 +18,7 @@
|
|
|
19
18
|
"react-test-renderer": "^16.3.2",
|
|
20
19
|
"react-transition-group": "^2.3.1"
|
|
21
20
|
},
|
|
22
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "2e72baca5a8804c802a4bd5e45ff59feccee930e",
|
|
23
22
|
"scripts": {
|
|
24
23
|
"postpublish": "../../scripts/postpublish"
|
|
25
24
|
},
|