@pie-element/multiple-choice 5.11.0-ps.13 → 6.0.0-strikethrough.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/configure/CHANGELOG.md +31 -0
  3. package/configure/lib/__tests__/root.test.js +271 -0
  4. package/configure/lib/defaults.js +17 -4
  5. package/configure/lib/defaults.js.map +1 -1
  6. package/configure/lib/index.js +9 -4
  7. package/configure/lib/index.js.map +1 -1
  8. package/configure/lib/main.js +68 -19
  9. package/configure/lib/main.js.map +1 -1
  10. package/configure/package.json +4 -4
  11. package/controller/CHANGELOG.md +13 -0
  12. package/controller/lib/__tests__/index.test.js +864 -0
  13. package/controller/lib/__tests__/utils.test.js +8 -0
  14. package/controller/lib/defaults.js +4 -2
  15. package/controller/lib/defaults.js.map +1 -1
  16. package/controller/lib/index.js +25 -7
  17. package/controller/lib/index.js.map +1 -1
  18. package/controller/lib/utils.js +9 -1
  19. package/controller/lib/utils.js.map +1 -1
  20. package/controller/package.json +1 -1
  21. package/docs/demo/generate.js +17 -14
  22. package/lib/__tests__/choice-input-test.js +124 -0
  23. package/lib/__tests__/index-test.js +22 -0
  24. package/lib/__tests__/multiple-choice-test.js +237 -0
  25. package/lib/__tests__/session-updater-test.js +72 -0
  26. package/lib/choice-input.js +79 -18
  27. package/lib/choice-input.js.map +1 -1
  28. package/lib/choice.js +149 -0
  29. package/lib/choice.js.map +1 -0
  30. package/lib/feedback-tick.js +1 -1
  31. package/lib/feedback-tick.js.map +1 -1
  32. package/lib/index.js +70 -3
  33. package/lib/index.js.map +1 -1
  34. package/lib/main.js +1 -1
  35. package/lib/main.js.map +1 -1
  36. package/lib/multiple-choice.js +84 -144
  37. package/lib/multiple-choice.js.map +1 -1
  38. package/lib/print.js +125 -0
  39. package/lib/print.js.map +1 -0
  40. package/package.json +5 -5
@@ -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,34 @@ 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;
157
63
  }
158
64
  };
159
65
 
160
- var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
161
- (0, _inherits2["default"])(MultipleChoice, _React$Component2);
66
+ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
67
+ (0, _inherits2["default"])(MultipleChoice, _React$Component);
162
68
 
163
- var _super2 = _createSuper(MultipleChoice);
69
+ var _super = _createSuper(MultipleChoice);
164
70
 
165
71
  function MultipleChoice(props) {
166
- var _this2;
72
+ var _this;
167
73
 
168
74
  (0, _classCallCheck2["default"])(this, MultipleChoice);
169
- _this2 = _super2.call(this, props);
170
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "getCorrectness", function () {
75
+ _this = _super.call(this, props);
76
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getCorrectness", function () {
171
77
  var choice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
172
78
  var isCorrect = choice.correct;
173
79
 
174
- var isChecked = _this2.isSelected(choice.value);
80
+ var isChecked = _this.isSelected(choice.value);
175
81
 
176
- if (_this2.state.showCorrect) {
82
+ if (_this.state.showCorrect) {
177
83
  return isCorrect ? 'correct' : undefined;
178
84
  }
179
85
 
@@ -195,11 +101,11 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
195
101
  }
196
102
  }
197
103
  });
198
- _this2.state = {
199
- showCorrect: false
104
+ _this.state = {
105
+ showCorrect: _this.props.alwaysShowCorrect || false
200
106
  };
201
- _this2.onToggle = _this2.onToggle.bind((0, _assertThisInitialized2["default"])(_this2));
202
- return _this2;
107
+ _this.onToggle = _this.onToggle.bind((0, _assertThisInitialized2["default"])(_this));
108
+ return _this;
203
109
  }
204
110
 
205
111
  (0, _createClass2["default"])(MultipleChoice, [{
@@ -219,6 +125,12 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
219
125
  showCorrect: false
220
126
  });
221
127
  }
128
+
129
+ if (nextProps.alwaysShowCorrect) {
130
+ this.setState({
131
+ showCorrect: true
132
+ });
133
+ }
222
134
  }
223
135
  }, {
224
136
  key: "isSelected",
@@ -226,6 +138,16 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
226
138
  var sessionValue = this.props.session && this.props.session.value;
227
139
  return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;
228
140
  }
141
+ }, {
142
+ key: "isStrikethrough",
143
+ value: function isStrikethrough(value) {
144
+ if (!this.props.tools.strikethrough.enabled) {
145
+ return false;
146
+ }
147
+
148
+ var arr = this.props.session && this.props.session.strikethrough;
149
+ return Array.isArray(arr) && arr.includes(value);
150
+ }
229
151
  }, {
230
152
  key: "indexToSymbol",
231
153
  value: function indexToSymbol(index) {
@@ -242,44 +164,57 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
242
164
  }, {
243
165
  key: "render",
244
166
  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;
167
+ var _this2 = this;
168
+
169
+ var _this$props = this.props,
170
+ mode = _this$props.mode,
171
+ disabled = _this$props.disabled,
172
+ _this$props$choices = _this$props.choices,
173
+ choices = _this$props$choices === void 0 ? [] : _this$props$choices,
174
+ choiceMode = _this$props.choiceMode,
175
+ prompt = _this$props.prompt,
176
+ onChoiceChanged = _this$props.onChoiceChanged,
177
+ responseCorrect = _this$props.responseCorrect,
178
+ teacherInstructions = _this$props.teacherInstructions,
179
+ classes = _this$props.classes,
180
+ alwaysShowCorrect = _this$props.alwaysShowCorrect,
181
+ animationsDisabled = _this$props.animationsDisabled,
182
+ tools = _this$props.tools;
258
183
  var showCorrect = this.state.showCorrect;
259
184
  var isEvaluateMode = mode === 'evaluate';
260
- var showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;
185
+ var showCorrectAnswerToggle = isEvaluateMode && !responseCorrect; // console.log('context:', this.props.tools);
186
+
261
187
  return /*#__PURE__*/_react["default"].createElement("div", {
262
- className: classes.corespringChoice
263
- }, teacherInstructions && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
188
+ className: (0, _classnames["default"])(classes.corespringChoice, 'multiple-choice')
189
+ }, teacherInstructions && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
264
190
  labels: {
265
191
  hidden: 'Show Teacher Instructions',
266
192
  visible: 'Hide Teacher Instructions'
267
193
  }
268
194
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
195
+ tagName: "div",
196
+ className: "prompt",
197
+ prompt: teacherInstructions
198
+ })) : /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
199
+ tagName: "div",
269
200
  className: "prompt",
201
+ defaultClassName: "teacher-instructions",
270
202
  prompt: teacherInstructions
271
- })), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
203
+ }), /*#__PURE__*/_react["default"].createElement("br", null)), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
272
204
  show: showCorrectAnswerToggle,
273
205
  toggled: showCorrect,
274
206
  onToggle: this.onToggle.bind(this)
275
207
  }), showCorrectAnswerToggle && /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
276
208
  className: "prompt",
209
+ defaultClassName: "prompt",
277
210
  prompt: prompt
278
211
  }), /*#__PURE__*/_react["default"].createElement("div", {
279
- className: this.props.verticalMode ? '' : classes.horizontalLayout
212
+ className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.gridLayout, this.props.choicesLayout === 'grid'), (0, _defineProperty2["default"])({}, classes.horizontalLayout, this.props.choicesLayout === 'horizontal')),
213
+ style: styles.getColumns(this.props.gridColumns)
280
214
  }, choices.map(function (choice, index) {
281
- return /*#__PURE__*/_react["default"].createElement(StyledChoice, {
282
- verticalMode: _this3.props.verticalMode,
215
+ return /*#__PURE__*/_react["default"].createElement(_choice["default"], {
216
+ choicesLayout: _this2.props.choicesLayout,
217
+ gridColumns: _this2.props.gridColumns,
283
218
  key: "choice-".concat(index),
284
219
  choice: choice,
285
220
  index: index,
@@ -289,9 +224,11 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component2) {
289
224
  choiceMode: choiceMode,
290
225
  disabled: disabled,
291
226
  onChoiceChanged: onChoiceChanged,
292
- checked: showCorrect ? choice.correct || false : _this3.isSelected(choice.value),
293
- correctness: isEvaluateMode ? _this3.getCorrectness(choice) : undefined,
294
- displayKey: _this3.indexToSymbol(index)
227
+ hideTick: choice.hideTick,
228
+ strikethrough: _this2.isStrikethrough(choice.value),
229
+ checked: showCorrect ? choice.correct || false : _this2.isSelected(choice.value),
230
+ correctness: isEvaluateMode ? _this2.getCorrectness(choice) : undefined,
231
+ displayKey: _this2.indexToSymbol(index)
295
232
  });
296
233
  })));
297
234
  }
@@ -308,12 +245,15 @@ exports.MultipleChoice = MultipleChoice;
308
245
  prompt: _propTypes["default"].string,
309
246
  teacherInstructions: _propTypes["default"].string,
310
247
  session: _propTypes["default"].object,
311
- disabled: _propTypes["default"].bool.isRequired,
312
- onChoiceChanged: _propTypes["default"].func.isRequired,
248
+ disabled: _propTypes["default"].bool,
249
+ onChoiceChanged: _propTypes["default"].func,
313
250
  responseCorrect: _propTypes["default"].bool,
314
251
  classes: _propTypes["default"].object.isRequired,
315
252
  correctResponse: _propTypes["default"].array,
316
- verticalMode: _propTypes["default"].bool
253
+ choicesLayout: _propTypes["default"].oneOf(['vertical', 'grid', 'horizontal']),
254
+ gridColumns: _propTypes["default"].string,
255
+ alwaysShowCorrect: _propTypes["default"].bool,
256
+ animationsDisabled: _propTypes["default"].bool
317
257
  });
318
258
  MultipleChoice.defaultProps = {
319
259
  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","showCorrectAnswerToggle","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 const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n\n return (\n <div className={classes.corespringChoice}>\n {teacherInstructions && (\n <React.Fragment>\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 <br />\n </React.Fragment>\n )}\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n />\n {showCorrectAnswerToggle && <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","MultipleChoice","props","choice","isCorrect","correct","isChecked","isSelected","value","state","showCorrect","alwaysShowCorrect","onToggle","bind","mode","setState","nextProps","correctResponse","sessionValue","session","indexOf","tools","strikethrough","enabled","arr","Array","isArray","includes","index","keyMode","String","fromCharCode","toUpperCase","disabled","choices","choiceMode","prompt","onChoiceChanged","responseCorrect","teacherInstructions","classes","animationsDisabled","isEvaluateMode","showCorrectAnswerToggle","hidden","visible","choicesLayout","gridColumns","map","length","hideTick","isStrikethrough","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\n ? { gridTemplateColumns: `repeat(${columns}, 1fr)` }\n : undefined;\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 (\n sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0\n );\n }\n\n isStrikethrough(value) {\n if (!this.props.tools.strikethrough.enabled) {\n return false;\n }\n\n const arr = this.props.session && this.props.session.strikethrough;\n return Array.isArray(arr) && arr.includes(value);\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 tools,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n\n // console.log('context:', this.props.tools);\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\n tagName=\"div\"\n className=\"prompt\"\n prompt={teacherInstructions}\n />\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 <PreviewPrompt\n className=\"prompt\"\n defaultClassName=\"prompt\"\n prompt={prompt}\n />\n <div\n className={classNames(\n { [classes.gridLayout]: this.props.choicesLayout === 'grid' },\n {\n [classes.horizontalLayout]:\n 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 strikethrough={this.isStrikethrough(choice.value)}\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"}
package/lib/print.js ADDED
@@ -0,0 +1,125 @@
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.teacherInstructions = instr ? model.teacherInstructions : undefined;
54
+ model.showTeacherInstructions = instr;
55
+ model.alwaysShowCorrect = instr;
56
+ model.mode = instr ? 'evaluate' : model.mode;
57
+ model.disabled = true;
58
+ model.animationsDisabled = true;
59
+ var choices = (0, _cloneDeep["default"])(model.choices);
60
+ model.choices = choices.map(function (c) {
61
+ c.rationale = instr ? c.rationale : undefined;
62
+ c.hideTick = instr;
63
+ c.feedback = undefined;
64
+ return c;
65
+ });
66
+ return model;
67
+ };
68
+
69
+ var MultipleChoicePrint = /*#__PURE__*/function (_HTMLElement) {
70
+ (0, _inherits2["default"])(MultipleChoicePrint, _HTMLElement);
71
+
72
+ var _super = _createSuper(MultipleChoicePrint);
73
+
74
+ function MultipleChoicePrint() {
75
+ var _this;
76
+
77
+ (0, _classCallCheck2["default"])(this, MultipleChoicePrint);
78
+ _this = _super.call(this);
79
+ _this._options = null;
80
+ _this._model = null;
81
+ _this._session = [];
82
+ _this._rerender = (0, _debounce["default"])(function () {
83
+ if (_this._model && _this._session) {
84
+ var printModel = preparePrintModel(_this._model, _this._options);
85
+
86
+ var element = _this._options && /*#__PURE__*/_react["default"].createElement(_main["default"], {
87
+ model: printModel,
88
+ session: {}
89
+ });
90
+
91
+ _reactDom["default"].render(element, (0, _assertThisInitialized2["default"])(_this), function () {
92
+ log('render complete - render math');
93
+ (0, _mathRendering.renderMath)((0, _assertThisInitialized2["default"])(_this));
94
+ });
95
+ } else {
96
+ log('skip');
97
+ }
98
+ }, 50, {
99
+ leading: false,
100
+ trailing: true
101
+ });
102
+ return _this;
103
+ }
104
+
105
+ (0, _createClass2["default"])(MultipleChoicePrint, [{
106
+ key: "options",
107
+ set: function set(o) {
108
+ this._options = o;
109
+ }
110
+ }, {
111
+ key: "model",
112
+ set: function set(s) {
113
+ this._model = s;
114
+
115
+ this._rerender();
116
+ }
117
+ }, {
118
+ key: "connectedCallback",
119
+ value: function connectedCallback() {}
120
+ }]);
121
+ return MultipleChoicePrint;
122
+ }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
123
+
124
+ exports["default"] = MultipleChoicePrint;
125
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","teacherInstructions","undefined","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","choices","map","c","rationale","hideTick","feedback","MultipleChoicePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,mCAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,mBAAN,GAA4BF,KAAK,GAAGF,KAAK,CAACI,mBAAT,GAA+BC,SAAhE;AACAL,EAAAA,KAAK,CAACM,uBAAN,GAAgCJ,KAAhC;AACAF,EAAAA,KAAK,CAACO,iBAAN,GAA0BL,KAA1B;AACAF,EAAAA,KAAK,CAACQ,IAAN,GAAaN,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACQ,IAAxC;AAEAR,EAAAA,KAAK,CAACS,QAAN,GAAiB,IAAjB;AACAT,EAAAA,KAAK,CAACU,kBAAN,GAA2B,IAA3B;AAEA,MAAMC,OAAO,GAAG,2BAAUX,KAAK,CAACW,OAAhB,CAAhB;AAEAX,EAAAA,KAAK,CAACW,OAAN,GAAgBA,OAAO,CAACC,GAAR,CAAY,UAACC,CAAD,EAAO;AACjCA,IAAAA,CAAC,CAACC,SAAF,GAAcZ,KAAK,GAAGW,CAAC,CAACC,SAAL,GAAiBT,SAApC;AACAQ,IAAAA,CAAC,CAACE,QAAF,GAAab,KAAb;AACAW,IAAAA,CAAC,CAACG,QAAF,GAAaX,SAAb;AACA,WAAOQ,CAAP;AACD,GALe,CAAhB;AAMA,SAAOb,KAAP;AACD,CApBD;;IAsBqBiB,mB;;;;;AACnB,iCAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAGvB,iBAAiB,CAAC,MAAKoB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB1B,UAAAA,KAAK,EAAEsB,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAFe,SAA1B,CAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnCzB,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAEgC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AALY;AA4Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAvCyBa,W","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.teacherInstructions = instr ? 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\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\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"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@pie-element/multiple-choice",
3
3
  "repository": "pie-framework/pie-elements",
4
- "version": "5.11.0-ps.13",
4
+ "version": "6.0.0-strikethrough.1",
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.10.3",
11
- "@pie-lib/correct-answer-toggle": "^2.3.29",
12
- "@pie-lib/math-rendering": "^2.3.9",
13
- "@pie-lib/render-ui": "^4.12.0",
10
+ "@pie-lib/config-ui": "^10.10.11",
11
+ "@pie-lib/correct-answer-toggle": "^2.3.31",
12
+ "@pie-lib/math-rendering": "^2.3.11",
13
+ "@pie-lib/render-ui": "^4.12.2",
14
14
  "classnames": "^2.2.5",
15
15
  "debug": "^4.1.1",
16
16
  "enzyme-to-json": "^3.3.3",