@pie-element/multiple-choice 5.8.0 → 5.8.1-beta.587

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 (45) hide show
  1. package/CHANGELOG.md +529 -0
  2. package/PRINT.md +35 -0
  3. package/README.md +1 -1
  4. package/configure/CHANGELOG.md +468 -0
  5. package/configure/lib/defaults.js +39 -8
  6. package/configure/lib/defaults.js.map +1 -1
  7. package/configure/lib/index.js +24 -5
  8. package/configure/lib/index.js.map +1 -1
  9. package/configure/lib/main.js +290 -77
  10. package/configure/lib/main.js.map +1 -1
  11. package/configure/lib/utils.js +18 -0
  12. package/configure/lib/utils.js.map +1 -0
  13. package/configure/package.json +5 -5
  14. package/controller/CHANGELOG.md +97 -0
  15. package/controller/lib/defaults.js +4 -2
  16. package/controller/lib/defaults.js.map +1 -1
  17. package/controller/lib/index.js +85 -9
  18. package/controller/lib/index.js.map +1 -1
  19. package/controller/lib/utils.js +9 -1
  20. package/controller/lib/utils.js.map +1 -1
  21. package/controller/package.json +2 -2
  22. package/docs/config-schema.json +158 -1
  23. package/docs/config-schema.json.md +123 -3
  24. package/docs/demo/config.js +2 -2
  25. package/docs/demo/generate.js +18 -11
  26. package/docs/demo/index.html +1 -1
  27. package/docs/demo/session.js +1 -1
  28. package/docs/pie-schema.json +69 -4
  29. package/docs/pie-schema.json.md +57 -2
  30. package/lib/choice-input.js +44 -20
  31. package/lib/choice-input.js.map +1 -1
  32. package/lib/choice.js +157 -0
  33. package/lib/choice.js.map +1 -0
  34. package/lib/feedback-tick.js +1 -1
  35. package/lib/feedback-tick.js.map +1 -1
  36. package/lib/index.js +2 -2
  37. package/lib/index.js.map +1 -1
  38. package/lib/main.js +5 -2
  39. package/lib/main.js.map +1 -1
  40. package/lib/multiple-choice.js +85 -148
  41. package/lib/multiple-choice.js.map +1 -1
  42. package/lib/print.js +129 -0
  43. package/lib/print.js.map +1 -0
  44. package/lib/session-updater.js.map +1 -1
  45. package/package.json +12 -7
@@ -5,9 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.MultipleChoice = exports.Choice = void 0;
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ exports["default"] = exports.MultipleChoice = void 0;
11
9
 
12
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
11
 
@@ -27,8 +25,6 @@ var _react = _interopRequireDefault(require("react"));
27
25
 
28
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
29
27
 
30
- var _choiceInput = _interopRequireDefault(require("./choice-input"));
31
-
32
28
  var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
33
29
 
34
30
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -37,111 +33,13 @@ var _styles = require("@material-ui/core/styles");
37
33
 
38
34
  var _renderUi = require("@pie-lib/render-ui");
39
35
 
40
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
-
42
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
36
+ var _choice = _interopRequireDefault(require("./choice"));
43
37
 
44
38
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
45
39
 
46
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
47
-
48
- // Choice
49
- var Choice = /*#__PURE__*/function (_React$Component) {
50
- (0, _inherits2["default"])(Choice, _React$Component);
51
-
52
- var _super = _createSuper(Choice);
53
-
54
- function Choice() {
55
- var _this;
56
-
57
- (0, _classCallCheck2["default"])(this, Choice);
58
-
59
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
60
- args[_key] = arguments[_key];
61
- }
62
-
63
- _this = _super.call.apply(_super, [this].concat(args));
64
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (choice) {
65
- var _this$props = _this.props,
66
- disabled = _this$props.disabled,
67
- onChoiceChanged = _this$props.onChoiceChanged;
68
-
69
- if (!disabled) {
70
- onChoiceChanged(choice);
71
- }
72
- });
73
- return _this;
74
- }
75
-
76
- (0, _createClass2["default"])(Choice, [{
77
- key: "render",
78
- value: function render() {
79
- var _this$props2 = this.props,
80
- choice = _this$props2.choice,
81
- index = _this$props2.index,
82
- choicesLength = _this$props2.choicesLength,
83
- showCorrect = _this$props2.showCorrect,
84
- isEvaluateMode = _this$props2.isEvaluateMode,
85
- choiceMode = _this$props2.choiceMode,
86
- disabled = _this$props2.disabled,
87
- checked = _this$props2.checked,
88
- correctness = _this$props2.correctness,
89
- displayKey = _this$props2.displayKey,
90
- classes = _this$props2.classes,
91
- verticalMode = _this$props2.verticalMode;
92
- var choiceClass = 'choice' + (index === choicesLength - 1 ? ' last' : '');
93
- var feedback = !isEvaluateMode || showCorrect ? '' : choice.feedback;
94
-
95
- var choiceProps = _objectSpread(_objectSpread({}, choice), {}, {
96
- checked: checked,
97
- choiceMode: choiceMode,
98
- disabled: disabled,
99
- feedback: feedback,
100
- correctness: correctness,
101
- displayKey: displayKey,
102
- verticalMode: verticalMode,
103
- onChange: this.onChange
104
- });
105
-
106
- var names = (0, _classnames["default"])(classes.choice, (0, _defineProperty2["default"])({}, classes.noBorder, index === choicesLength - 1 || !this.props.verticalMode));
107
- return /*#__PURE__*/_react["default"].createElement("div", {
108
- className: choiceClass,
109
- key: index
110
- }, /*#__PURE__*/_react["default"].createElement(_choiceInput["default"], (0, _extends2["default"])({}, choiceProps, {
111
- className: names
112
- })));
113
- }
114
- }]);
115
- return Choice;
116
- }(_react["default"].Component);
117
-
118
- exports.Choice = Choice;
119
- Choice.propTypes = {
120
- choiceMode: _propTypes["default"].oneOf(['radio', 'checkbox']),
121
- choice: _propTypes["default"].object,
122
- disabled: _propTypes["default"].bool.isRequired,
123
- onChoiceChanged: _propTypes["default"].func.isRequired,
124
- classes: _propTypes["default"].object.isRequired,
125
- index: _propTypes["default"].number,
126
- choicesLength: _propTypes["default"].number,
127
- showCorrect: _propTypes["default"].bool,
128
- isEvaluateMode: _propTypes["default"].bool,
129
- checked: _propTypes["default"].bool,
130
- correctness: _propTypes["default"].string,
131
- displayKey: _propTypes["default"].string,
132
- verticalMode: _propTypes["default"].string
133
- };
134
- var StyledChoice = (0, _styles.withStyles)({
135
- choice: {
136
- paddingTop: '20px',
137
- paddingBottom: '10px',
138
- borderBottom: '1px solid #E0DEE0'
139
- },
140
- noBorder: {
141
- borderBottom: 'none'
142
- }
143
- })(Choice); // MultipleChoice
40
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
144
41
 
42
+ // MultipleChoice
145
43
  var styles = {
146
44
  corespringChoice: {
147
45
  backgroundColor: _renderUi.color.background(),
@@ -154,26 +52,40 @@ var styles = {
154
52
  display: 'flex',
155
53
  flexDirection: 'row',
156
54
  flexWrap: 'wrap'
55
+ },
56
+ gridLayout: {
57
+ display: 'grid'
58
+ },
59
+ getColumns: function getColumns(columns) {
60
+ return columns > 1 ? {
61
+ gridTemplateColumns: "repeat(".concat(columns, ", 1fr)")
62
+ } : undefined;
63
+ },
64
+ fieldset: {
65
+ border: '0px',
66
+ padding: '0.01em 0 0 0',
67
+ margin: '0px',
68
+ minWidth: '0px'
157
69
  }
158
70
  };
159
71
 
160
- var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
161
- (0, _inherits2["default"])(MultipleChoice, _React$Component2);
72
+ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
73
+ (0, _inherits2["default"])(MultipleChoice, _React$Component);
162
74
 
163
- var _super2 = _createSuper(MultipleChoice);
75
+ var _super = _createSuper(MultipleChoice);
164
76
 
165
77
  function MultipleChoice(props) {
166
- var _this2;
78
+ var _this;
167
79
 
168
80
  (0, _classCallCheck2["default"])(this, MultipleChoice);
169
- _this2 = _super2.call(this, props);
170
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "getCorrectness", function () {
81
+ _this = _super.call(this, props);
82
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getCorrectness", function () {
171
83
  var choice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
172
84
  var isCorrect = choice.correct;
173
85
 
174
- var isChecked = _this2.isSelected(choice.value);
86
+ var isChecked = _this.isSelected(choice.value);
175
87
 
176
- if (_this2.state.showCorrect) {
88
+ if (_this.state.showCorrect) {
177
89
  return isCorrect ? 'correct' : undefined;
178
90
  }
179
91
 
@@ -195,11 +107,11 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
195
107
  }
196
108
  }
197
109
  });
198
- _this2.state = {
199
- showCorrect: false
110
+ _this.state = {
111
+ showCorrect: _this.props.alwaysShowCorrect || false
200
112
  };
201
- _this2.onToggle = _this2.onToggle.bind((0, _assertThisInitialized2["default"])(_this2));
202
- return _this2;
113
+ _this.onToggle = _this.onToggle.bind((0, _assertThisInitialized2["default"])(_this));
114
+ return _this;
203
115
  }
204
116
 
205
117
  (0, _createClass2["default"])(MultipleChoice, [{
@@ -219,6 +131,12 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
219
131
  showCorrect: false
220
132
  });
221
133
  }
134
+
135
+ if (nextProps.alwaysShowCorrect) {
136
+ this.setState({
137
+ showCorrect: true
138
+ });
139
+ }
222
140
  }
223
141
  }, {
224
142
  key: "isSelected",
@@ -242,43 +160,58 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
242
160
  }, {
243
161
  key: "render",
244
162
  value: function render() {
245
- var _this3 = this;
246
-
247
- var _this$props3 = this.props,
248
- mode = _this$props3.mode,
249
- disabled = _this$props3.disabled,
250
- _this$props3$choices = _this$props3.choices,
251
- choices = _this$props3$choices === void 0 ? [] : _this$props3$choices,
252
- choiceMode = _this$props3.choiceMode,
253
- prompt = _this$props3.prompt,
254
- onChoiceChanged = _this$props3.onChoiceChanged,
255
- responseCorrect = _this$props3.responseCorrect,
256
- teacherInstructions = _this$props3.teacherInstructions,
257
- classes = _this$props3.classes;
163
+ var _this2 = this;
164
+
165
+ var _this$props = this.props,
166
+ mode = _this$props.mode,
167
+ disabled = _this$props.disabled,
168
+ _this$props$choices = _this$props.choices,
169
+ choices = _this$props$choices === void 0 ? [] : _this$props$choices,
170
+ choiceMode = _this$props.choiceMode,
171
+ prompt = _this$props.prompt,
172
+ onChoiceChanged = _this$props.onChoiceChanged,
173
+ responseCorrect = _this$props.responseCorrect,
174
+ teacherInstructions = _this$props.teacherInstructions,
175
+ classes = _this$props.classes,
176
+ alwaysShowCorrect = _this$props.alwaysShowCorrect,
177
+ animationsDisabled = _this$props.animationsDisabled;
258
178
  var showCorrect = this.state.showCorrect;
259
179
  var isEvaluateMode = mode === 'evaluate';
180
+ var showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;
260
181
  return /*#__PURE__*/_react["default"].createElement("div", {
261
- className: classes.corespringChoice
262
- }, teacherInstructions && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
182
+ className: (0, _classnames["default"])(classes.corespringChoice, 'multiple-choice')
183
+ }, teacherInstructions && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
263
184
  labels: {
264
185
  hidden: 'Show Teacher Instructions',
265
186
  visible: 'Hide Teacher Instructions'
266
187
  }
267
188
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
189
+ tagName: "div",
268
190
  className: "prompt",
269
191
  prompt: teacherInstructions
270
- })), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
271
- show: isEvaluateMode && !responseCorrect,
272
- toggled: this.state.showCorrect,
192
+ })) : /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
193
+ tagName: "div",
194
+ className: "prompt",
195
+ defaultClassName: "teacher-instructions",
196
+ prompt: teacherInstructions
197
+ }), /*#__PURE__*/_react["default"].createElement("br", null)), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
198
+ show: showCorrectAnswerToggle,
199
+ toggled: showCorrect,
273
200
  onToggle: this.onToggle.bind(this)
274
- }), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
201
+ }), showCorrectAnswerToggle && /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("fieldset", {
202
+ className: classes.fieldset
203
+ }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
275
204
  className: "prompt",
276
- prompt: prompt
205
+ defaultClassName: "prompt",
206
+ prompt: prompt,
207
+ tagName: "legend"
277
208
  }), /*#__PURE__*/_react["default"].createElement("div", {
278
- className: this.props.verticalMode ? '' : classes.horizontalLayout
209
+ className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.gridLayout, this.props.choicesLayout === 'grid'), (0, _defineProperty2["default"])({}, classes.horizontalLayout, this.props.choicesLayout === 'horizontal')),
210
+ style: styles.getColumns(this.props.gridColumns)
279
211
  }, choices.map(function (choice, index) {
280
- return /*#__PURE__*/_react["default"].createElement(StyledChoice, {
281
- verticalMode: _this3.props.verticalMode,
212
+ return /*#__PURE__*/_react["default"].createElement(_choice["default"], {
213
+ choicesLayout: _this2.props.choicesLayout,
214
+ gridColumns: _this2.props.gridColumns,
282
215
  key: "choice-".concat(index),
283
216
  choice: choice,
284
217
  index: index,
@@ -288,11 +221,12 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
288
221
  choiceMode: choiceMode,
289
222
  disabled: disabled,
290
223
  onChoiceChanged: onChoiceChanged,
291
- checked: showCorrect ? choice.correct || false : _this3.isSelected(choice.value),
292
- correctness: isEvaluateMode ? _this3.getCorrectness(choice) : undefined,
293
- displayKey: _this3.indexToSymbol(index)
224
+ hideTick: choice.hideTick,
225
+ checked: showCorrect ? choice.correct || false : _this2.isSelected(choice.value),
226
+ correctness: isEvaluateMode ? _this2.getCorrectness(choice) : undefined,
227
+ displayKey: _this2.indexToSymbol(index)
294
228
  });
295
- })));
229
+ }))));
296
230
  }
297
231
  }]);
298
232
  return MultipleChoice;
@@ -307,12 +241,15 @@ exports.MultipleChoice = MultipleChoice;
307
241
  prompt: _propTypes["default"].string,
308
242
  teacherInstructions: _propTypes["default"].string,
309
243
  session: _propTypes["default"].object,
310
- disabled: _propTypes["default"].bool.isRequired,
311
- onChoiceChanged: _propTypes["default"].func.isRequired,
244
+ disabled: _propTypes["default"].bool,
245
+ onChoiceChanged: _propTypes["default"].func,
312
246
  responseCorrect: _propTypes["default"].bool,
313
247
  classes: _propTypes["default"].object.isRequired,
314
248
  correctResponse: _propTypes["default"].array,
315
- verticalMode: _propTypes["default"].bool
249
+ choicesLayout: _propTypes["default"].oneOf(['vertical', 'grid', 'horizontal']),
250
+ gridColumns: _propTypes["default"].string,
251
+ alwaysShowCorrect: _propTypes["default"].bool,
252
+ animationsDisabled: _propTypes["default"].bool
316
253
  });
317
254
  MultipleChoice.defaultProps = {
318
255
  session: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/multiple-choice.jsx"],"names":["Choice","choice","props","disabled","onChoiceChanged","index","choicesLength","showCorrect","isEvaluateMode","choiceMode","checked","correctness","displayKey","classes","verticalMode","choiceClass","feedback","choiceProps","onChange","names","noBorder","React","Component","propTypes","PropTypes","oneOf","object","bool","isRequired","func","number","string","StyledChoice","paddingTop","paddingBottom","borderBottom","styles","corespringChoice","backgroundColor","color","background","padding","horizontalLayout","display","flexDirection","flexWrap","MultipleChoice","isCorrect","correct","isChecked","isSelected","value","state","undefined","onToggle","bind","mode","setState","nextProps","correctResponse","sessionValue","session","indexOf","keyMode","String","fromCharCode","toUpperCase","choices","prompt","responseCorrect","teacherInstructions","hidden","visible","map","length","getCorrectness","indexToSymbol","array","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ChoiceInput from './choice-input';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible , PreviewPrompt} from '@pie-lib/render-ui';\n\n// Choice\n\nexport class Choice extends React.Component {\n onChange = (choice) => {\n const { disabled, onChoiceChanged } = this.props;\n\n if (!disabled) {\n onChoiceChanged(choice);\n }\n };\n\n render() {\n const {\n choice,\n index,\n choicesLength,\n showCorrect,\n isEvaluateMode,\n choiceMode,\n disabled,\n checked,\n correctness,\n displayKey,\n classes,\n verticalMode\n } = this.props;\n const choiceClass = 'choice' + (index === choicesLength - 1 ? ' last' : '');\n\n const feedback = !isEvaluateMode || showCorrect ? '' : choice.feedback;\n\n const choiceProps = {\n ...choice,\n checked,\n choiceMode,\n disabled,\n feedback,\n correctness,\n displayKey,\n verticalMode,\n onChange: this.onChange,\n };\n\n const names = classNames(classes.choice, {\n [classes.noBorder]: (index === choicesLength - 1) || !this.props.verticalMode,\n });\n\n return (\n <div className={choiceClass} key={index}>\n <ChoiceInput {...choiceProps} className={names} />\n </div>\n );\n }\n}\n\nChoice.propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n choice: PropTypes.object,\n disabled: PropTypes.bool.isRequired,\n onChoiceChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n index: PropTypes.number,\n choicesLength: PropTypes.number,\n showCorrect: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n checked: PropTypes.bool,\n correctness: PropTypes.string,\n displayKey: PropTypes.string,\n verticalMode: PropTypes.string\n};\n\nconst StyledChoice = withStyles({\n choice: {\n paddingTop: '20px',\n paddingBottom: '10px',\n borderBottom: '1px solid #E0DEE0',\n },\n noBorder: {\n borderBottom: 'none',\n }\n})(Choice);\n\n// MultipleChoice\n\nconst styles = {\n corespringChoice: {\n backgroundColor: color.background(),\n padding: '5px',\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap'\n }\n};\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\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 prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool.isRequired,\n onChoiceChanged: PropTypes.func.isRequired,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n verticalMode: PropTypes.bool\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n onToggle() {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse) {\n this.setState({ showCorrect: false });\n }\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return (\n sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0\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 render() {\n const {\n mode,\n disabled,\n choices = [],\n choiceMode,\n prompt,\n onChoiceChanged,\n responseCorrect,\n teacherInstructions,\n classes,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n\n return (\n <div className={classes.corespringChoice}>\n {teacherInstructions && (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt className=\"prompt\" prompt={teacherInstructions} />\n </Collapsible>\n )}\n <br />\n <CorrectAnswerToggle\n show={isEvaluateMode && !responseCorrect}\n toggled={this.state.showCorrect}\n onToggle={this.onToggle.bind(this)}\n />\n <br />\n <PreviewPrompt className=\"prompt\" prompt={prompt}/>\n <div className={this.props.verticalMode ? '' : classes.horizontalLayout}>\n {choices.map((choice, index) => (\n <StyledChoice\n verticalMode={this.props.verticalMode}\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={onChoiceChanged}\n checked={\n showCorrect\n ? choice.correct || false\n : this.isSelected(choice.value)\n }\n correctness={\n isEvaluateMode ? this.getCorrectness(choice) : undefined\n }\n displayKey={this.indexToSymbol(index)}\n />\n ))}\n </div>\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":["styles","corespringChoice","backgroundColor","color","background","padding","horizontalLayout","display","flexDirection","flexWrap","gridLayout","getColumns","columns","gridTemplateColumns","undefined","fieldset","border","margin","minWidth","MultipleChoice","props","choice","isCorrect","correct","isChecked","isSelected","value","state","showCorrect","alwaysShowCorrect","onToggle","bind","mode","setState","nextProps","correctResponse","sessionValue","session","indexOf","index","keyMode","String","fromCharCode","toUpperCase","disabled","choices","choiceMode","prompt","onChoiceChanged","responseCorrect","teacherInstructions","classes","animationsDisabled","isEvaluateMode","showCorrectAnswerToggle","hidden","visible","choicesLayout","gridColumns","map","length","hideTick","getCorrectness","indexToSymbol","React","Component","PropTypes","oneOf","array","string","object","bool","func","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/render-ui';\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst styles = {\n corespringChoice: {\n backgroundColor: color.background(),\n padding: '5px',\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n getColumns: function (columns) {\n return columns > 1 ? { gridTemplateColumns: `repeat(${columns}, 1fr)` } : undefined;\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px'\n },\n};\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\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 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 };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: this.props.alwaysShowCorrect || false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n onToggle() {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse) {\n this.setState({ showCorrect: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\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 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 render() {\n const {\n mode,\n disabled,\n choices = [],\n choiceMode,\n prompt,\n onChoiceChanged,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n\n return (\n <div className={classNames(classes.corespringChoice, 'multiple-choice')}>\n {teacherInstructions && (\n <React.Fragment>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt tagName=\"div\" className=\"prompt\" prompt={teacherInstructions} />\n </Collapsible>\n ) : (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n )}\n <br />\n </React.Fragment>\n )}\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n />\n )}\n {showCorrectAnswerToggle && <br />}\n <fieldset className={classes.fieldset}>\n <PreviewPrompt className=\"prompt\" defaultClassName=\"prompt\" prompt={prompt} tagName={\"legend\"} />\n <div\n className={classNames(\n { [classes.gridLayout]: this.props.choicesLayout === 'grid' },\n {\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n },\n )}\n style={styles.getColumns(this.props.gridColumns)}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n choicesLayout={this.props.choicesLayout}\n gridColumns={this.props.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={onChoiceChanged}\n hideTick={choice.hideTick}\n checked={showCorrect ? choice.correct || false : this.isSelected(choice.value)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n />\n ))}\n </div>\n </fieldset>\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/lib/print.js ADDED
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
23
+
24
+ var _react = _interopRequireDefault(require("react"));
25
+
26
+ var _reactDom = _interopRequireDefault(require("react-dom"));
27
+
28
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
29
+
30
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
31
+
32
+ var _main = _interopRequireDefault(require("./main"));
33
+
34
+ var _mathRendering = require("@pie-lib/math-rendering");
35
+
36
+ var _debug = _interopRequireDefault(require("debug"));
37
+
38
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
39
+
40
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
+
42
+ var log = (0, _debug["default"])('pie-element:multiple-choice:print');
43
+ /**
44
+ * Live in same package as main element - so we can access some of the shared comps!
45
+ *
46
+ * - update pslb to build print if src/print.js is there
47
+ * - update demo el
48
+ * - get configure/controller building
49
+ */
50
+
51
+ var preparePrintModel = function preparePrintModel(model, opts) {
52
+ var instr = opts.role === 'instructor';
53
+ model.prompt = model.promptEnabled !== false ? model.prompt : undefined;
54
+ model.teacherInstructions = instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;
55
+ model.showTeacherInstructions = instr;
56
+ model.alwaysShowCorrect = instr;
57
+ model.mode = instr ? 'evaluate' : model.mode;
58
+ model.disabled = true;
59
+ model.animationsDisabled = true;
60
+ model.lockChoiceOrder = true;
61
+ model.choicesLayout = model.choicesLayout || 'vertical';
62
+ var choices = (0, _cloneDeep["default"])(model.choices);
63
+ model.choices = choices.map(function (c) {
64
+ c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;
65
+ c.hideTick = instr;
66
+ c.feedback = undefined;
67
+ return c;
68
+ });
69
+ model.keyMode = model.choicePrefix || 'letters';
70
+ return model;
71
+ };
72
+
73
+ var MultipleChoicePrint = /*#__PURE__*/function (_HTMLElement) {
74
+ (0, _inherits2["default"])(MultipleChoicePrint, _HTMLElement);
75
+
76
+ var _super = _createSuper(MultipleChoicePrint);
77
+
78
+ function MultipleChoicePrint() {
79
+ var _this;
80
+
81
+ (0, _classCallCheck2["default"])(this, MultipleChoicePrint);
82
+ _this = _super.call(this);
83
+ _this._options = null;
84
+ _this._model = null;
85
+ _this._session = [];
86
+ _this._rerender = (0, _debounce["default"])(function () {
87
+ if (_this._model && _this._session) {
88
+ var printModel = preparePrintModel(_this._model, _this._options);
89
+
90
+ var element = _this._options && /*#__PURE__*/_react["default"].createElement(_main["default"], {
91
+ model: printModel,
92
+ session: {}
93
+ });
94
+
95
+ _reactDom["default"].render(element, (0, _assertThisInitialized2["default"])(_this), function () {
96
+ log('render complete - render math');
97
+ (0, _mathRendering.renderMath)((0, _assertThisInitialized2["default"])(_this));
98
+ });
99
+ } else {
100
+ log('skip');
101
+ }
102
+ }, 50, {
103
+ leading: false,
104
+ trailing: true
105
+ });
106
+ return _this;
107
+ }
108
+
109
+ (0, _createClass2["default"])(MultipleChoicePrint, [{
110
+ key: "options",
111
+ set: function set(o) {
112
+ this._options = o;
113
+ }
114
+ }, {
115
+ key: "model",
116
+ set: function set(s) {
117
+ this._model = s;
118
+
119
+ this._rerender();
120
+ }
121
+ }, {
122
+ key: "connectedCallback",
123
+ value: function connectedCallback() {}
124
+ }]);
125
+ return MultipleChoicePrint;
126
+ }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
127
+
128
+ exports["default"] = MultipleChoicePrint;
129
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","MultipleChoicePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport cloneDeep from 'lodash/cloneDeep';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:multiple-choice:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nexport default class MultipleChoicePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n model: printModel,\n session: {},\n });\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 set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/session-updater.js"],"names":["updateSessionValue","session","choiceMode","data","value","selected"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEO,SAASA,kBAAT,CAA4BC,OAA5B,EAAqCC,UAArC,EAAiDC,IAAjD,EAAuD;AAC5DF,EAAAA,OAAO,CAACG,KAAR,GAAgBH,OAAO,CAACG,KAAR,IAAiB,EAAjC;;AACA,MAAIF,UAAU,KAAK,UAAnB,EAA+B;AAC7B,QAAIC,IAAI,CAACE,QAAT,EAAmB;AACjBJ,MAAAA,OAAO,CAACG,KAAR,GAAgB,sBAAK,wBAAOH,OAAO,CAACG,KAAf,EAAsB,CAACD,IAAI,CAACC,KAAN,CAAtB,CAAL,CAAhB;AACD,KAFD,MAEO;AACLH,MAAAA,OAAO,CAACG,KAAR,GAAgB,yBAAQH,OAAO,CAACG,KAAhB,EAAuBD,IAAI,CAACC,KAA5B,CAAhB;AACD;AACF;;AAGD,MAAIF,UAAU,KAAK,OAAnB,EAA4B;AAC1B,QAAIC,IAAI,CAACE,QAAT,EAAmB;AACjBJ,MAAAA,OAAO,CAACG,KAAR,GAAgB,CAACD,IAAI,CAACC,KAAN,CAAhB;AACD,KAFD,MAEO;AACLH,MAAAA,OAAO,CAACG,KAAR,GAAgB,EAAhB;AACD;AACF;AACF","sourcesContent":["import concat from 'lodash/concat';\nimport uniq from 'lodash/uniq';\nimport without from 'lodash/without';\n\nexport function updateSessionValue(session, choiceMode, data) {\n session.value = session.value || [];\n if (choiceMode === 'checkbox') {\n if (data.selected) {\n session.value = uniq(concat(session.value, [data.value]));\n } else {\n session.value = without(session.value, data.value);\n }\n }\n\n\n if (choiceMode === 'radio') {\n if (data.selected) {\n session.value = [data.value]\n } else {\n session.value = [];\n }\n }\n}\n"],"file":"session-updater.js"}
1
+ {"version":3,"sources":["../src/session-updater.js"],"names":["updateSessionValue","session","choiceMode","data","value","selected"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEO,SAASA,kBAAT,CAA4BC,OAA5B,EAAqCC,UAArC,EAAiDC,IAAjD,EAAuD;AAC5DF,EAAAA,OAAO,CAACG,KAAR,GAAgBH,OAAO,CAACG,KAAR,IAAiB,EAAjC;;AACA,MAAIF,UAAU,KAAK,UAAnB,EAA+B;AAC7B,QAAIC,IAAI,CAACE,QAAT,EAAmB;AACjBJ,MAAAA,OAAO,CAACG,KAAR,GAAgB,sBAAK,wBAAOH,OAAO,CAACG,KAAf,EAAsB,CAACD,IAAI,CAACC,KAAN,CAAtB,CAAL,CAAhB;AACD,KAFD,MAEO;AACLH,MAAAA,OAAO,CAACG,KAAR,GAAgB,yBAAQH,OAAO,CAACG,KAAhB,EAAuBD,IAAI,CAACC,KAA5B,CAAhB;AACD;AACF;;AAED,MAAIF,UAAU,KAAK,OAAnB,EAA4B;AAC1B,QAAIC,IAAI,CAACE,QAAT,EAAmB;AACjBJ,MAAAA,OAAO,CAACG,KAAR,GAAgB,CAACD,IAAI,CAACC,KAAN,CAAhB;AACD,KAFD,MAEO;AACLH,MAAAA,OAAO,CAACG,KAAR,GAAgB,EAAhB;AACD;AACF;AACF","sourcesContent":["import concat from 'lodash/concat';\nimport uniq from 'lodash/uniq';\nimport without from 'lodash/without';\n\nexport function updateSessionValue(session, choiceMode, data) {\n session.value = session.value || [];\n if (choiceMode === 'checkbox') {\n if (data.selected) {\n session.value = uniq(concat(session.value, [data.value]));\n } else {\n session.value = without(session.value, data.value);\n }\n }\n\n if (choiceMode === 'radio') {\n if (data.selected) {\n session.value = [data.value];\n } else {\n session.value = [];\n }\n }\n}\n"],"file":"session-updater.js"}
package/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@pie-element/multiple-choice",
3
3
  "repository": "pie-framework/pie-elements",
4
- "version": "5.8.0",
4
+ "version": "5.8.1-beta.587+40df32c2f",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
8
  "dependencies": {
9
9
  "@material-ui/core": "^3.9.2",
10
- "@pie-lib/config-ui": "^10.8.57",
11
- "@pie-lib/correct-answer-toggle": "^2.3.23",
12
- "@pie-lib/math-rendering": "^2.3.6",
13
- "@pie-lib/render-ui": "^4.11.5",
10
+ "@pie-lib/config-ui": "12.0.0-beta.3",
11
+ "@pie-lib/correct-answer-toggle": "^2.3.62",
12
+ "@pie-lib/math-rendering": "^2.5.12",
13
+ "@pie-lib/render-ui": "^4.14.12",
14
14
  "classnames": "^2.2.5",
15
15
  "debug": "^4.1.1",
16
16
  "enzyme-to-json": "^3.3.3",
17
+ "is-plain-object": "^5.0.0",
17
18
  "lodash": "^4.17.10",
18
19
  "prop-types": "^15.6.1",
19
20
  "react": "^16.8.1",
@@ -21,10 +22,14 @@
21
22
  "react-test-renderer": "^16.3.2",
22
23
  "react-transition-group": "^2.3.1"
23
24
  },
24
- "gitHead": "8f4eaa4018dffb68e135ec9e274688a8ae05d865",
25
+ "gitHead": "40df32c2f78966706cb168843567c9df174f1d88",
25
26
  "scripts": {
26
27
  "postpublish": "../../scripts/postpublish"
27
28
  },
28
29
  "main": "lib/index.js",
29
- "module": "src/index.js"
30
+ "module": "src/index.js",
31
+ "exports": {
32
+ ".": "./src/index.js",
33
+ "./print": "./src/print.js"
34
+ }
30
35
  }