@instructure/quiz-core 20.8.1-rc.0 → 20.8.1-rc.2

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.
@@ -60,7 +60,8 @@ export var ResponseEvent = (_dec = themeable(theme, styles), _dec(_class = (_tem
60
60
  var strippedItemBody = extractTextFromHtml(this.itemBody);
61
61
  return /*#__PURE__*/React.createElement("span", null, this.hasMedia() && /*#__PURE__*/React.createElement(IconImageSolid, {
62
62
  className: styles.answerMediaIcon
63
- }), t('Answered: {question}', {
63
+ }), t('Answered question {position}: {question}', {
64
+ position: this.props.event.getIn(['eventData', 'position']),
64
65
  question: strippedItemBody
65
66
  }));
66
67
  }
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
3
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
4
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
@@ -10,11 +11,14 @@ var _dec, _class, _class2, _temp;
10
11
  import React, { Component } from 'react';
11
12
  import PropTypes from 'prop-types';
12
13
  import ImmutablePropTypes from 'react-immutable-proptypes';
14
+ import classNames from 'classnames';
13
15
  import { Text } from '@instructure/ui-text';
14
16
  import { Link } from '@instructure/ui-link';
15
17
  import { Flex } from '@instructure/ui-flex';
16
18
  import { ScreenReaderContent } from '@instructure/ui-a11y-content';
17
19
  import { Table } from '@instructure/ui-table';
20
+ import { IconButton } from '@instructure/ui-buttons';
21
+ import { IconInfoLine, IconConfigureLine } from '@instructure/ui-icons';
18
22
  import { themeable } from '@instructure/ui-themeable';
19
23
  import t from '@instructure/quiz-i18n/es/format-message';
20
24
  import ModerateTableRow from "../ModerateTableRow/index.js";
@@ -23,24 +27,27 @@ import OutstandingQuizzesModal from "../OutstandingQuizzesModal/index.js";
23
27
  import ModerateTray from "../../sidebar/ModerateTray/index.js";
24
28
  import Spinner from "../../../../common/components/shared/spinner/Spinner.js";
25
29
  var styles = {
26
- componentId: 'esFtE',
30
+ componentId: 'eDRzW',
27
31
  template: function template(theme) {
28
- return "\n\n.esFtE_bwKH{display:block;margin:".concat(theme.emptyTextMargin || 'inherit', " 0 0 0}\n\n.esFtE_xNcP{background-color:").concat(theme.pageBackgroundColor || 'inherit', ";flex:1;overflow:auto}");
32
+ return "\n\n.eDRzW_bwKH{display:block;margin:".concat(theme.emptyTextMargin || 'inherit', " 0 0 0}\n\n.eDRzW_xNcP{background-color:").concat(theme.pageBackgroundColor || 'inherit', ";flex:1;overflow:auto}\n\n.eDRzW_eeML{display:inline-block;transition:transform 0.3s}\n\n.eDRzW_XujX{transform:scaleX(-1)}");
29
33
  },
30
- 'emptyText': 'esFtE_bwKH',
31
- 'page': 'esFtE_xNcP'
34
+ 'emptyText': 'eDRzW_bwKH',
35
+ 'page': 'eDRzW_xNcP',
36
+ 'scoreToggleWrapper': 'eDRzW_eeML',
37
+ 'mirror': 'eDRzW_XujX'
32
38
  };
33
39
  import theme from "./theme.js";
34
40
  import ResetQuiz from "../../sidebar/ResetQuiz/index.js";
35
41
  import { OUTSTANDING_QUIZZES_MODAL } from '@instructure/quiz-common';
36
- import { IconInfoLine } from '@instructure/ui-icons';
37
42
  import { chunk } from 'lodash';
38
43
 
39
44
  var _ref2 = /*#__PURE__*/React.createElement(Flex.Item, null, /*#__PURE__*/React.createElement(IconInfoLine, null));
40
45
 
41
- var _ref4 = /*#__PURE__*/React.createElement(Spinner, null);
46
+ var _ref4 = /*#__PURE__*/React.createElement(IconConfigureLine, null);
42
47
 
43
- var _ref5 = /*#__PURE__*/React.createElement(ResetQuiz, null);
48
+ var _ref5 = /*#__PURE__*/React.createElement(Spinner, null);
49
+
50
+ var _ref6 = /*#__PURE__*/React.createElement(ResetQuiz, null);
44
51
 
45
52
  export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
46
53
  _inherits(ModerateTable, _Component);
@@ -58,6 +65,7 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
58
65
 
59
66
  _this = _super.call.apply(_super, [this].concat(args));
60
67
  _this.state = {
68
+ displayScoreAsPercentage: true,
61
69
  // To support voiceover when the table changes
62
70
  moderatePanelIterations: 0,
63
71
  selectedStudent: null,
@@ -150,6 +158,18 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
150
158
  _this.pollAutogradingStatus(submittedQuizSessions);
151
159
  };
152
160
 
161
+ _this.handleScoreToggle = function () {
162
+ _this.setState(function (prevState) {
163
+ return {
164
+ displayScoreAsPercentage: !prevState.displayScoreAsPercentage
165
+ };
166
+ });
167
+ };
168
+
169
+ _this.scoreToggleScreenreaderMessage = function () {
170
+ return _this.state.displayScoreAsPercentage ? t('Toggle scores to raw points') : t('Toggle scores to percentages');
171
+ };
172
+
153
173
  _this.openModalOnClick = function () {
154
174
  _this.props.openModal(OUTSTANDING_QUIZZES_MODAL);
155
175
  };
@@ -231,7 +251,8 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
231
251
  onModerateLogClick: onModerateLogClick,
232
252
  rowData: rowData,
233
253
  shouldRenderModerateButton: shouldRenderModerateButton,
234
- focusTarget: _this2.state.selectedStudent
254
+ focusTarget: _this2.state.selectedStudent,
255
+ displayScoreAsPercentage: _this2.state.displayScoreAsPercentage
235
256
  });
236
257
  });
237
258
  }
@@ -291,6 +312,20 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
291
312
  afterSubmit: this.props.afterManualSubmit
292
313
  })));
293
314
  }
315
+ }, {
316
+ key: "renderScoreToggle",
317
+ value: function renderScoreToggle() {
318
+ return /*#__PURE__*/React.createElement("div", {
319
+ className: classNames(styles.scoreToggleWrapper, _defineProperty({}, styles.mirror, !this.state.displayScoreAsPercentage))
320
+ }, /*#__PURE__*/React.createElement(IconButton, {
321
+ size: "small",
322
+ margin: "0 x-small",
323
+ withBackground: false,
324
+ withBorder: false,
325
+ screenReaderLabel: this.scoreToggleScreenreaderMessage(),
326
+ onClick: this.handleScoreToggle
327
+ }, _ref4));
328
+ }
294
329
  }, {
295
330
  key: "renderTable",
296
331
  value: function renderTable() {
@@ -305,7 +340,7 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
305
340
  id: "moderation-table-attempts"
306
341
  }, t('Attempts')), !this.props.anonymousGrading && /*#__PURE__*/React.createElement(Table.ColHeader, {
307
342
  id: "moderation-table-score"
308
- }, t('Score')), !this.props.anonymousGrading && /*#__PURE__*/React.createElement(Table.ColHeader, {
343
+ }, t('Score'), this.renderScoreToggle()), !this.props.anonymousGrading && /*#__PURE__*/React.createElement(Table.ColHeader, {
309
344
  id: "moderation-table-time"
310
345
  }, t('Time')), !this.props.anonymousGrading && /*#__PURE__*/React.createElement(Table.ColHeader, {
311
346
  id: "moderation-table-log"
@@ -325,7 +360,7 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
325
360
  isFetching = _this$props5.isFetching,
326
361
  tableData = _this$props5.tableData,
327
362
  emptyMessage = _this$props5.emptyMessage;
328
- if (isFetching || this.state.isWaiting) return _ref4;
363
+ if (isFetching || this.state.isWaiting) return _ref5;
329
364
  if (tableData.length) return this.renderTable();
330
365
  return /*#__PURE__*/React.createElement("span", {
331
366
  className: styles.emptyText
@@ -340,7 +375,7 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
340
375
  className: styles.page
341
376
  }, /*#__PURE__*/React.createElement(ModerateTray, {
342
377
  onClose: this.onCloseTray
343
- }, !this.props.anonymousGrading && _ref5, this.props.children), this.renderContent());
378
+ }, !this.props.anonymousGrading && _ref6, this.props.children), this.renderContent());
344
379
  }
345
380
  }]);
346
381
 
@@ -143,8 +143,12 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
143
143
  var message = t('No Score');
144
144
 
145
145
  if (result.get('score') != null) {
146
- var percentage = result.get('score') / result.get('pointsPossible');
147
- message = _this3.formatPercentMax2FractionDigits(percentage);
146
+ if (_this3.props.displayScoreAsPercentage) {
147
+ var percentage = result.get('score') / result.get('pointsPossible');
148
+ message = _this3.formatPercentMax2FractionDigits(percentage);
149
+ } else {
150
+ message = "".concat(t.number(result.get('score')), "/").concat(t.number(result.get('pointsPossible')));
151
+ }
148
152
  }
149
153
 
150
154
  if (result.get('pointsPossible') === 0) {
@@ -360,6 +364,7 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
360
364
  return ModerateTableRow;
361
365
  }(withI18nSupport(Component)), _class2.propTypes = {
362
366
  anonymousGrading: PropTypes.bool.isRequired,
367
+ displayScoreAsPercentage: PropTypes.bool,
363
368
  onModerateButtonClick: PropTypes.func.isRequired,
364
369
  onModerateLogClick: PropTypes.func.isRequired,
365
370
  onAccommodationsClick: PropTypes.func,
@@ -380,6 +385,7 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
380
385
  shouldRenderModerateButton: PropTypes.bool,
381
386
  focusTarget: PropTypes.string
382
387
  }, _class2.defaultProps = {
388
+ displayScoreAsPercentage: true,
383
389
  shouldRenderModerateButton: true,
384
390
  focusTarget: null,
385
391
  onAccommodationsClick: null
@@ -83,7 +83,8 @@ var ResponseEvent = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
83
83
  var strippedItemBody = (0, _quizInteractions.extractTextFromHtml)(this.itemBody);
84
84
  return /*#__PURE__*/_react.default.createElement("span", null, this.hasMedia() && /*#__PURE__*/_react.default.createElement(_uiIcons.IconImageSolid, {
85
85
  className: styles.answerMediaIcon
86
- }), (0, _formatMessage.default)('Answered: {question}', {
86
+ }), (0, _formatMessage.default)('Answered question {position}: {question}', {
87
+ position: this.props.event.getIn(['eventData', 'position']),
87
88
  question: strippedItemBody
88
89
  }));
89
90
  }
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.default = exports.ModerateTable = void 0;
11
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
12
14
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
13
15
 
14
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -27,6 +29,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
27
29
 
28
30
  var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
29
31
 
32
+ var _classnames = _interopRequireDefault(require("classnames"));
33
+
30
34
  var _uiText = require("@instructure/ui-text");
31
35
 
32
36
  var _uiLink = require("@instructure/ui-link");
@@ -37,6 +41,10 @@ var _uiA11yContent = require("@instructure/ui-a11y-content");
37
41
 
38
42
  var _uiTable = require("@instructure/ui-table");
39
43
 
44
+ var _uiButtons = require("@instructure/ui-buttons");
45
+
46
+ var _uiIcons = require("@instructure/ui-icons");
47
+
40
48
  var _uiThemeable = require("@instructure/ui-themeable");
41
49
 
42
50
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
@@ -57,26 +65,28 @@ var _index5 = _interopRequireDefault(require("../../sidebar/ResetQuiz/index.js")
57
65
 
58
66
  var _quizCommon = require("@instructure/quiz-common");
59
67
 
60
- var _uiIcons = require("@instructure/ui-icons");
61
-
62
68
  var _lodash = require("lodash");
63
69
 
64
70
  var _dec, _class, _class2, _temp;
65
71
 
66
72
  var styles = {
67
- componentId: 'esFtE',
73
+ componentId: 'eDRzW',
68
74
  template: function template(theme) {
69
- return "\n\n.esFtE_bwKH{display:block;margin:".concat(theme.emptyTextMargin || 'inherit', " 0 0 0}\n\n.esFtE_xNcP{background-color:").concat(theme.pageBackgroundColor || 'inherit', ";flex:1;overflow:auto}");
75
+ return "\n\n.eDRzW_bwKH{display:block;margin:".concat(theme.emptyTextMargin || 'inherit', " 0 0 0}\n\n.eDRzW_xNcP{background-color:").concat(theme.pageBackgroundColor || 'inherit', ";flex:1;overflow:auto}\n\n.eDRzW_eeML{display:inline-block;transition:transform 0.3s}\n\n.eDRzW_XujX{transform:scaleX(-1)}");
70
76
  },
71
- 'emptyText': 'esFtE_bwKH',
72
- 'page': 'esFtE_xNcP'
77
+ 'emptyText': 'eDRzW_bwKH',
78
+ 'page': 'eDRzW_xNcP',
79
+ 'scoreToggleWrapper': 'eDRzW_eeML',
80
+ 'mirror': 'eDRzW_XujX'
73
81
  };
74
82
 
75
83
  var _ref2 = /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, /*#__PURE__*/_react.default.createElement(_uiIcons.IconInfoLine, null));
76
84
 
77
- var _ref4 = /*#__PURE__*/_react.default.createElement(_Spinner.default, null);
85
+ var _ref4 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconConfigureLine, null);
86
+
87
+ var _ref5 = /*#__PURE__*/_react.default.createElement(_Spinner.default, null);
78
88
 
79
- var _ref5 = /*#__PURE__*/_react.default.createElement(_index5.default, null);
89
+ var _ref6 = /*#__PURE__*/_react.default.createElement(_index5.default, null);
80
90
 
81
91
  var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
82
92
  (0, _inherits2.default)(ModerateTable, _Component);
@@ -94,6 +104,7 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
94
104
 
95
105
  _this = _super.call.apply(_super, [this].concat(args));
96
106
  _this.state = {
107
+ displayScoreAsPercentage: true,
97
108
  // To support voiceover when the table changes
98
109
  moderatePanelIterations: 0,
99
110
  selectedStudent: null,
@@ -184,6 +195,18 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
184
195
  _this.pollAutogradingStatus(submittedQuizSessions);
185
196
  };
186
197
 
198
+ _this.handleScoreToggle = function () {
199
+ _this.setState(function (prevState) {
200
+ return {
201
+ displayScoreAsPercentage: !prevState.displayScoreAsPercentage
202
+ };
203
+ });
204
+ };
205
+
206
+ _this.scoreToggleScreenreaderMessage = function () {
207
+ return _this.state.displayScoreAsPercentage ? (0, _formatMessage.default)('Toggle scores to raw points') : (0, _formatMessage.default)('Toggle scores to percentages');
208
+ };
209
+
187
210
  _this.openModalOnClick = function () {
188
211
  _this.props.openModal(_quizCommon.OUTSTANDING_QUIZZES_MODAL);
189
212
  };
@@ -263,7 +286,8 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
263
286
  onModerateLogClick: onModerateLogClick,
264
287
  rowData: rowData,
265
288
  shouldRenderModerateButton: shouldRenderModerateButton,
266
- focusTarget: _this2.state.selectedStudent
289
+ focusTarget: _this2.state.selectedStudent,
290
+ displayScoreAsPercentage: _this2.state.displayScoreAsPercentage
267
291
  });
268
292
  });
269
293
  }
@@ -323,6 +347,20 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
323
347
  afterSubmit: this.props.afterManualSubmit
324
348
  })));
325
349
  }
350
+ }, {
351
+ key: "renderScoreToggle",
352
+ value: function renderScoreToggle() {
353
+ return /*#__PURE__*/_react.default.createElement("div", {
354
+ className: (0, _classnames.default)(styles.scoreToggleWrapper, (0, _defineProperty2.default)({}, styles.mirror, !this.state.displayScoreAsPercentage))
355
+ }, /*#__PURE__*/_react.default.createElement(_uiButtons.IconButton, {
356
+ size: "small",
357
+ margin: "0 x-small",
358
+ withBackground: false,
359
+ withBorder: false,
360
+ screenReaderLabel: this.scoreToggleScreenreaderMessage(),
361
+ onClick: this.handleScoreToggle
362
+ }, _ref4));
363
+ }
326
364
  }, {
327
365
  key: "renderTable",
328
366
  value: function renderTable() {
@@ -337,7 +375,7 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
337
375
  id: "moderation-table-attempts"
338
376
  }, (0, _formatMessage.default)('Attempts')), !this.props.anonymousGrading && /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
339
377
  id: "moderation-table-score"
340
- }, (0, _formatMessage.default)('Score')), !this.props.anonymousGrading && /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
378
+ }, (0, _formatMessage.default)('Score'), this.renderScoreToggle()), !this.props.anonymousGrading && /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
341
379
  id: "moderation-table-time"
342
380
  }, (0, _formatMessage.default)('Time')), !this.props.anonymousGrading && /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
343
381
  id: "moderation-table-log"
@@ -357,7 +395,7 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
357
395
  isFetching = _this$props5.isFetching,
358
396
  tableData = _this$props5.tableData,
359
397
  emptyMessage = _this$props5.emptyMessage;
360
- if (isFetching || this.state.isWaiting) return _ref4;
398
+ if (isFetching || this.state.isWaiting) return _ref5;
361
399
  if (tableData.length) return this.renderTable();
362
400
  return /*#__PURE__*/_react.default.createElement("span", {
363
401
  className: styles.emptyText
@@ -372,7 +410,7 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
372
410
  className: styles.page
373
411
  }, /*#__PURE__*/_react.default.createElement(_index4.default, {
374
412
  onClose: this.onCloseTray
375
- }, !this.props.anonymousGrading && _ref5, this.props.children), this.renderContent());
413
+ }, !this.props.anonymousGrading && _ref6, this.props.children), this.renderContent());
376
414
  }
377
415
  }]);
378
416
  ModerateTable.displayName = "ModerateTable";
@@ -175,8 +175,12 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
175
175
  var message = (0, _formatMessage.default)('No Score');
176
176
 
177
177
  if (result.get('score') != null) {
178
- var percentage = result.get('score') / result.get('pointsPossible');
179
- message = _this3.formatPercentMax2FractionDigits(percentage);
178
+ if (_this3.props.displayScoreAsPercentage) {
179
+ var percentage = result.get('score') / result.get('pointsPossible');
180
+ message = _this3.formatPercentMax2FractionDigits(percentage);
181
+ } else {
182
+ message = "".concat(_formatMessage.default.number(result.get('score')), "/").concat(_formatMessage.default.number(result.get('pointsPossible')));
183
+ }
180
184
  }
181
185
 
182
186
  if (result.get('pointsPossible') === 0) {
@@ -391,6 +395,7 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
391
395
  return ModerateTableRow;
392
396
  }((0, _quizCommon.withI18nSupport)(_react.Component)), _class2.propTypes = {
393
397
  anonymousGrading: _propTypes.default.bool.isRequired,
398
+ displayScoreAsPercentage: _propTypes.default.bool,
394
399
  onModerateButtonClick: _propTypes.default.func.isRequired,
395
400
  onModerateLogClick: _propTypes.default.func.isRequired,
396
401
  onAccommodationsClick: _propTypes.default.func,
@@ -411,6 +416,7 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
411
416
  shouldRenderModerateButton: _propTypes.default.bool,
412
417
  focusTarget: _propTypes.default.string
413
418
  }, _class2.defaultProps = {
419
+ displayScoreAsPercentage: true,
414
420
  shouldRenderModerateButton: true,
415
421
  focusTarget: null,
416
422
  onAccommodationsClick: null
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "20.8.1-rc.0+7ddfe123f",
3
+ "version": "20.8.1-rc.2+bc1306e58",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -44,11 +44,11 @@
44
44
  "@instructure/emotion": "^8.51.0",
45
45
  "@instructure/grading-utils": "^1.0.0",
46
46
  "@instructure/outcomes-ui": "^3.1.0",
47
- "@instructure/quiz-common": "20.8.1-rc.0+7ddfe123f",
48
- "@instructure/quiz-i18n": "20.8.1-rc.0+7ddfe123f",
49
- "@instructure/quiz-interactions": "20.8.1-rc.0+7ddfe123f",
50
- "@instructure/quiz-number-input": "20.8.1-rc.0+7ddfe123f",
51
- "@instructure/quiz-rce": "20.8.1-rc.0+7ddfe123f",
47
+ "@instructure/quiz-common": "20.8.1-rc.2+bc1306e58",
48
+ "@instructure/quiz-i18n": "20.8.1-rc.2+bc1306e58",
49
+ "@instructure/quiz-interactions": "20.8.1-rc.2+bc1306e58",
50
+ "@instructure/quiz-number-input": "20.8.1-rc.2+bc1306e58",
51
+ "@instructure/quiz-rce": "20.8.1-rc.2+bc1306e58",
52
52
  "@instructure/ui-a11y-content": "^8.51.0",
53
53
  "@instructure/ui-alerts": "^8.51.0",
54
54
  "@instructure/ui-avatar": "^8.51.0",
@@ -112,7 +112,7 @@
112
112
  "file-saver": "~2.0.5",
113
113
  "humps": "^2.0.0",
114
114
  "immutable": "^3.8.1",
115
- "instructure-validations": "20.8.1-rc.0+7ddfe123f",
115
+ "instructure-validations": "20.8.1-rc.2+bc1306e58",
116
116
  "ipaddr.js": "^1.5.4",
117
117
  "isomorphic-fetch": "^2.2.0",
118
118
  "isuuid": "^0.1.0",
@@ -163,7 +163,7 @@
163
163
  "intl": "^1.2.4",
164
164
  "jquery": "^2.2.3",
165
165
  "most-subject": "^5.3.0",
166
- "quiz-presets": "20.8.1-rc.0+7ddfe123f",
166
+ "quiz-presets": "20.8.1-rc.2+bc1306e58",
167
167
  "react": "^16.8.6",
168
168
  "react-addons-test-utils": "^15.6.2",
169
169
  "react-dom": "^16.8.6",
@@ -179,5 +179,5 @@
179
179
  "publishConfig": {
180
180
  "access": "public"
181
181
  },
182
- "gitHead": "7ddfe123f7affbad1dc83267ac782ef96b1b24c0"
182
+ "gitHead": "bc1306e580538ad70310d908839cf09aa59d240e"
183
183
  }