@instructure/quiz-core 18.0.1-rc.1 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [18.1.0](https://gerrit.instructure.com/quizzes-ui/compare/v18.0.0...v18.1.0) (2023-09-14)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **BOLA:** use bola position and skip questions ([9e59be2](https://gerrit.instructure.com/quizzes-ui/commits/9e59be2f087b6e0b2bffac76020997c5b68c9086))
12
+ * **ItemAnalysis:** change heading styles according to the designs ([05ea8ca](https://gerrit.instructure.com/quizzes-ui/commits/05ea8ca1bf81240ca64a443738b21b157e131738))
13
+
14
+
15
+ ### Features
16
+
17
+ * **Reports:** Show specific alert messages on certain generation failure cases ([1e484fc](https://gerrit.instructure.com/quizzes-ui/commits/1e484fc52874aa98320dfcc0756ccd3b9a6eb220))
18
+
19
+
20
+
21
+
22
+
6
23
  # [18.0.0](https://gerrit.instructure.com/quizzes-ui/compare/v17.67.0...v18.0.0) (2023-09-08)
7
24
 
8
25
 
@@ -89,6 +89,9 @@ export var NewQuizAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
89
89
  className: styles.heading
90
90
  }, /*#__PURE__*/React.createElement(Heading, {
91
91
  level: "h2",
92
+ theme: {
93
+ h2FontWeight: 700
94
+ },
92
95
  margin: "0 x-large 0 0",
93
96
  color: "primary"
94
97
  }, t('Quiz summary:'), " ", metadata === null || metadata === void 0 ? void 0 : metadata.quiz_title)), /*#__PURE__*/React.createElement("div", {
@@ -57,7 +57,7 @@ export var ScoreDistribution = (_dec = themeable(theme, styles), _dec(_class = (
57
57
  }, /*#__PURE__*/React.createElement(Heading, {
58
58
  level: "h3",
59
59
  theme: {
60
- h3FontWeight: 300
60
+ h3FontWeight: 700
61
61
  }
62
62
  }, t('Score Distribution'))), /*#__PURE__*/React.createElement(QuintileDistribution, {
63
63
  animateDelay: 1000,
@@ -0,0 +1,12 @@
1
+ import { getReportGenerationFailure, getInsufficentSubmissionNumberError, getOngoingReportGenerationError } from "./errorMessages.js";
2
+ import { DEFAULT_ALERT_TIME } from '@instructure/quiz-common';
3
+ export var INSUFFICIENT_NUMBER_OF_SESSIONS = 'INSUFFICIENT_NUMBER_OF_SESSIONS';
4
+ export var ANALYSIS_GENERATION_IN_PROGRESS = 'ANALYSIS_GENERATION_IN_PROGRESS';
5
+ export var GENERAL_ANALYSIS_ERROR = 'GENERAL_ANALYSIS_ERROR';
6
+ var errorCodesToMessages = new Map().set(INSUFFICIENT_NUMBER_OF_SESSIONS, getInsufficentSubmissionNumberError()).set(ANALYSIS_GENERATION_IN_PROGRESS, getOngoingReportGenerationError()).set(GENERAL_ANALYSIS_ERROR, getReportGenerationFailure());
7
+ export var getErrorMessageForCode = function getErrorMessageForCode(code) {
8
+ return errorCodesToMessages.get(code);
9
+ };
10
+ export var getAlertTimeoutMsForCode = function getAlertTimeoutMsForCode(code) {
11
+ return code === INSUFFICIENT_NUMBER_OF_SESSIONS ? 10000 : DEFAULT_ALERT_TIME;
12
+ };
@@ -7,4 +7,10 @@ export var getLastReportGenerationFailed = function getLastReportGenerationFaile
7
7
  };
8
8
  export var getReportGenerationFailure = function getReportGenerationFailure() {
9
9
  return t('An error has occurred while generating this report. Please try again.');
10
+ };
11
+ export var getInsufficentSubmissionNumberError = function getInsufficentSubmissionNumberError() {
12
+ return t('There is not enough data available to generate this report. A minimum of 3 submissions is required to generate. Please try again when more submissions are available.');
13
+ };
14
+ export var getOngoingReportGenerationError = function getOngoingReportGenerationError() {
15
+ return t('A report for this quiz is currently being generated by another user. Please try again later.');
10
16
  };
@@ -1,48 +1,94 @@
1
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
3
  import { getReportGenerationFailure } from "./errorMessages.js";
4
+ import { getErrorMessageForCode, getAlertTimeoutMsForCode } from "./errorCodes.js";
5
+ import { DEFAULT_ALERT_TIME } from '@instructure/quiz-common';
4
6
  export var generateReports = /*#__PURE__*/function () {
5
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
6
- var setGenerationInProgress, setStatusPollingInProgress, generateAnalysis, filter, addError, response;
7
- return _regeneratorRuntime.wrap(function _callee$(_context) {
7
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref) {
8
+ var setGenerationInProgress, setStatusPollingInProgress, generateAnalysis, filter, addError, onError, _requestResult$respon, requestResult;
9
+
10
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
8
11
  while (1) {
9
- switch (_context.prev = _context.next) {
12
+ switch (_context2.prev = _context2.next) {
10
13
  case 0:
11
14
  setGenerationInProgress = _ref.setGenerationInProgress, setStatusPollingInProgress = _ref.setStatusPollingInProgress, generateAnalysis = _ref.generateAnalysis, filter = _ref.filter, addError = _ref.addError;
12
- _context.prev = 1;
15
+
16
+ onError = /*#__PURE__*/function () {
17
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(error) {
18
+ var errorMessage, alertTimeout, _responseBody$error, responseBody, errorCode, _getErrorMessageForCo;
19
+
20
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
21
+ while (1) {
22
+ switch (_context.prev = _context.next) {
23
+ case 0:
24
+ errorMessage = getReportGenerationFailure();
25
+ alertTimeout = DEFAULT_ALERT_TIME;
26
+ _context.prev = 2;
27
+ _context.next = 5;
28
+ return error.response.json();
29
+
30
+ case 5:
31
+ responseBody = _context.sent;
32
+ errorCode = responseBody === null || responseBody === void 0 ? void 0 : (_responseBody$error = responseBody.error) === null || _responseBody$error === void 0 ? void 0 : _responseBody$error.code;
33
+
34
+ if (errorCode) {
35
+ errorMessage = (_getErrorMessageForCo = getErrorMessageForCode(errorCode)) !== null && _getErrorMessageForCo !== void 0 ? _getErrorMessageForCo : getReportGenerationFailure();
36
+ alertTimeout = getAlertTimeoutMsForCode(errorCode);
37
+ }
38
+
39
+ _context.next = 12;
40
+ break;
41
+
42
+ case 10:
43
+ _context.prev = 10;
44
+ _context.t0 = _context["catch"](2);
45
+
46
+ case 12:
47
+ _context.prev = 12;
48
+ addError(errorMessage, alertTimeout);
49
+ setGenerationInProgress(false);
50
+ return _context.finish(12);
51
+
52
+ case 16:
53
+ case "end":
54
+ return _context.stop();
55
+ }
56
+ }
57
+ }, _callee, null, [[2, 10, 12, 16]]);
58
+ }));
59
+
60
+ return function onError(_x2) {
61
+ return _ref3.apply(this, arguments);
62
+ };
63
+ }();
64
+
65
+ _context2.prev = 2;
13
66
  setGenerationInProgress(true);
14
- _context.next = 5;
15
- return generateAnalysis(filter);
67
+ _context2.next = 6;
68
+ return generateAnalysis(filter, onError);
16
69
 
17
- case 5:
18
- response = _context.sent;
70
+ case 6:
71
+ requestResult = _context2.sent;
19
72
 
20
- if (response) {
21
- _context.next = 10;
22
- break;
73
+ if (requestResult === null || requestResult === void 0 ? void 0 : (_requestResult$respon = requestResult.response) === null || _requestResult$respon === void 0 ? void 0 : _requestResult$respon.ok) {
74
+ setStatusPollingInProgress(true);
23
75
  }
24
76
 
25
- addError(getReportGenerationFailure());
26
- setGenerationInProgress(false);
27
- return _context.abrupt("return");
28
-
29
- case 10:
30
- setStatusPollingInProgress(true);
31
- _context.next = 17;
77
+ _context2.next = 14;
32
78
  break;
33
79
 
34
- case 13:
35
- _context.prev = 13;
36
- _context.t0 = _context["catch"](1);
80
+ case 10:
81
+ _context2.prev = 10;
82
+ _context2.t0 = _context2["catch"](2);
37
83
  addError(getReportGenerationFailure());
38
84
  setGenerationInProgress(false);
39
85
 
40
- case 17:
86
+ case 14:
41
87
  case "end":
42
- return _context.stop();
88
+ return _context2.stop();
43
89
  }
44
90
  }
45
- }, _callee, null, [[1, 13]]);
91
+ }, _callee2, null, [[2, 10]]);
46
92
  }));
47
93
 
48
94
  return function generateReports(_x) {
@@ -185,7 +185,7 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
185
185
  fetchAnalysesStatus: PropTypes.func.isRequired,
186
186
  addError: PropTypes.func.isRequired,
187
187
  pollingInterval: PropTypes.number.isRequired,
188
- generateAnalysis: PropTypes.func.isRequired // from LTI, f(filter: string)
188
+ generateAnalysis: PropTypes.func.isRequired // from LTI, f(filter: string, onError?: func(error))
189
189
 
190
190
  };
191
191
  WithAnalysisStatePresenter.defaultProps = {
@@ -118,6 +118,9 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
118
118
  className: styles.heading
119
119
  }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
120
120
  level: "h2",
121
+ theme: {
122
+ h2FontWeight: 700
123
+ },
121
124
  margin: "0 x-large 0 0",
122
125
  color: "primary"
123
126
  }, (0, _formatMessage.default)('Quiz summary:'), " ", metadata === null || metadata === void 0 ? void 0 : metadata.quiz_title)), /*#__PURE__*/_react.default.createElement("div", {
@@ -79,7 +79,7 @@ var ScoreDistribution = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
79
79
  }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
80
80
  level: "h3",
81
81
  theme: {
82
- h3FontWeight: 300
82
+ h3FontWeight: 700
83
83
  }
84
84
  }, (0, _formatMessage.default)('Score Distribution'))), /*#__PURE__*/_react.default.createElement(_index.default, {
85
85
  animateDelay: 1000,
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAlertTimeoutMsForCode = exports.getErrorMessageForCode = exports.GENERAL_ANALYSIS_ERROR = exports.ANALYSIS_GENERATION_IN_PROGRESS = exports.INSUFFICIENT_NUMBER_OF_SESSIONS = void 0;
7
+
8
+ var _errorMessages = require("./errorMessages.js");
9
+
10
+ var _quizCommon = require("@instructure/quiz-common");
11
+
12
+ var INSUFFICIENT_NUMBER_OF_SESSIONS = 'INSUFFICIENT_NUMBER_OF_SESSIONS';
13
+ exports.INSUFFICIENT_NUMBER_OF_SESSIONS = INSUFFICIENT_NUMBER_OF_SESSIONS;
14
+ var ANALYSIS_GENERATION_IN_PROGRESS = 'ANALYSIS_GENERATION_IN_PROGRESS';
15
+ exports.ANALYSIS_GENERATION_IN_PROGRESS = ANALYSIS_GENERATION_IN_PROGRESS;
16
+ var GENERAL_ANALYSIS_ERROR = 'GENERAL_ANALYSIS_ERROR';
17
+ exports.GENERAL_ANALYSIS_ERROR = GENERAL_ANALYSIS_ERROR;
18
+ var errorCodesToMessages = new Map().set(INSUFFICIENT_NUMBER_OF_SESSIONS, (0, _errorMessages.getInsufficentSubmissionNumberError)()).set(ANALYSIS_GENERATION_IN_PROGRESS, (0, _errorMessages.getOngoingReportGenerationError)()).set(GENERAL_ANALYSIS_ERROR, (0, _errorMessages.getReportGenerationFailure)());
19
+
20
+ var getErrorMessageForCode = function getErrorMessageForCode(code) {
21
+ return errorCodesToMessages.get(code);
22
+ };
23
+
24
+ exports.getErrorMessageForCode = getErrorMessageForCode;
25
+
26
+ var getAlertTimeoutMsForCode = function getAlertTimeoutMsForCode(code) {
27
+ return code === INSUFFICIENT_NUMBER_OF_SESSIONS ? 10000 : _quizCommon.DEFAULT_ALERT_TIME;
28
+ };
29
+
30
+ exports.getAlertTimeoutMsForCode = getAlertTimeoutMsForCode;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getReportGenerationFailure = exports.getLastReportGenerationFailed = exports.getFailedToFetchReports = void 0;
8
+ exports.getOngoingReportGenerationError = exports.getInsufficentSubmissionNumberError = exports.getReportGenerationFailure = exports.getLastReportGenerationFailed = exports.getFailedToFetchReports = void 0;
9
9
 
10
10
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
11
11
 
@@ -25,4 +25,16 @@ var getReportGenerationFailure = function getReportGenerationFailure() {
25
25
  return (0, _formatMessage.default)('An error has occurred while generating this report. Please try again.');
26
26
  };
27
27
 
28
- exports.getReportGenerationFailure = getReportGenerationFailure;
28
+ exports.getReportGenerationFailure = getReportGenerationFailure;
29
+
30
+ var getInsufficentSubmissionNumberError = function getInsufficentSubmissionNumberError() {
31
+ return (0, _formatMessage.default)('There is not enough data available to generate this report. A minimum of 3 submissions is required to generate. Please try again when more submissions are available.');
32
+ };
33
+
34
+ exports.getInsufficentSubmissionNumberError = getInsufficentSubmissionNumberError;
35
+
36
+ var getOngoingReportGenerationError = function getOngoingReportGenerationError() {
37
+ return (0, _formatMessage.default)('A report for this quiz is currently being generated by another user. Please try again later.');
38
+ };
39
+
40
+ exports.getOngoingReportGenerationError = getOngoingReportGenerationError;
@@ -13,48 +13,96 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
13
13
 
14
14
  var _errorMessages = require("./errorMessages.js");
15
15
 
16
+ var _errorCodes = require("./errorCodes.js");
17
+
18
+ var _quizCommon = require("@instructure/quiz-common");
19
+
16
20
  var generateReports = /*#__PURE__*/function () {
17
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
18
- var setGenerationInProgress, setStatusPollingInProgress, generateAnalysis, filter, addError, response;
19
- return _regenerator.default.wrap(function _callee$(_context) {
21
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref) {
22
+ var setGenerationInProgress, setStatusPollingInProgress, generateAnalysis, filter, addError, onError, _requestResult$respon, requestResult;
23
+
24
+ return _regenerator.default.wrap(function _callee2$(_context2) {
20
25
  while (1) {
21
- switch (_context.prev = _context.next) {
26
+ switch (_context2.prev = _context2.next) {
22
27
  case 0:
23
28
  setGenerationInProgress = _ref.setGenerationInProgress, setStatusPollingInProgress = _ref.setStatusPollingInProgress, generateAnalysis = _ref.generateAnalysis, filter = _ref.filter, addError = _ref.addError;
24
- _context.prev = 1;
29
+
30
+ onError = /*#__PURE__*/function () {
31
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(error) {
32
+ var errorMessage, alertTimeout, _responseBody$error, responseBody, errorCode, _getErrorMessageForCo;
33
+
34
+ return _regenerator.default.wrap(function _callee$(_context) {
35
+ while (1) {
36
+ switch (_context.prev = _context.next) {
37
+ case 0:
38
+ errorMessage = (0, _errorMessages.getReportGenerationFailure)();
39
+ alertTimeout = _quizCommon.DEFAULT_ALERT_TIME;
40
+ _context.prev = 2;
41
+ _context.next = 5;
42
+ return error.response.json();
43
+
44
+ case 5:
45
+ responseBody = _context.sent;
46
+ errorCode = responseBody === null || responseBody === void 0 ? void 0 : (_responseBody$error = responseBody.error) === null || _responseBody$error === void 0 ? void 0 : _responseBody$error.code;
47
+
48
+ if (errorCode) {
49
+ errorMessage = (_getErrorMessageForCo = (0, _errorCodes.getErrorMessageForCode)(errorCode)) !== null && _getErrorMessageForCo !== void 0 ? _getErrorMessageForCo : (0, _errorMessages.getReportGenerationFailure)();
50
+ alertTimeout = (0, _errorCodes.getAlertTimeoutMsForCode)(errorCode);
51
+ }
52
+
53
+ _context.next = 12;
54
+ break;
55
+
56
+ case 10:
57
+ _context.prev = 10;
58
+ _context.t0 = _context["catch"](2);
59
+
60
+ case 12:
61
+ _context.prev = 12;
62
+ addError(errorMessage, alertTimeout);
63
+ setGenerationInProgress(false);
64
+ return _context.finish(12);
65
+
66
+ case 16:
67
+ case "end":
68
+ return _context.stop();
69
+ }
70
+ }
71
+ }, _callee, null, [[2, 10, 12, 16]]);
72
+ }));
73
+
74
+ return function onError(_x2) {
75
+ return _ref3.apply(this, arguments);
76
+ };
77
+ }();
78
+
79
+ _context2.prev = 2;
25
80
  setGenerationInProgress(true);
26
- _context.next = 5;
27
- return generateAnalysis(filter);
81
+ _context2.next = 6;
82
+ return generateAnalysis(filter, onError);
28
83
 
29
- case 5:
30
- response = _context.sent;
84
+ case 6:
85
+ requestResult = _context2.sent;
31
86
 
32
- if (response) {
33
- _context.next = 10;
34
- break;
87
+ if (requestResult === null || requestResult === void 0 ? void 0 : (_requestResult$respon = requestResult.response) === null || _requestResult$respon === void 0 ? void 0 : _requestResult$respon.ok) {
88
+ setStatusPollingInProgress(true);
35
89
  }
36
90
 
37
- addError((0, _errorMessages.getReportGenerationFailure)());
38
- setGenerationInProgress(false);
39
- return _context.abrupt("return");
40
-
41
- case 10:
42
- setStatusPollingInProgress(true);
43
- _context.next = 17;
91
+ _context2.next = 14;
44
92
  break;
45
93
 
46
- case 13:
47
- _context.prev = 13;
48
- _context.t0 = _context["catch"](1);
94
+ case 10:
95
+ _context2.prev = 10;
96
+ _context2.t0 = _context2["catch"](2);
49
97
  addError((0, _errorMessages.getReportGenerationFailure)());
50
98
  setGenerationInProgress(false);
51
99
 
52
- case 17:
100
+ case 14:
53
101
  case "end":
54
- return _context.stop();
102
+ return _context2.stop();
55
103
  }
56
104
  }
57
- }, _callee, null, [[1, 13]]);
105
+ }, _callee2, null, [[2, 10]]);
58
106
  }));
59
107
 
60
108
  return function generateReports(_x) {
@@ -204,7 +204,7 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
204
204
  fetchAnalysesStatus: _propTypes.default.func.isRequired,
205
205
  addError: _propTypes.default.func.isRequired,
206
206
  pollingInterval: _propTypes.default.number.isRequired,
207
- generateAnalysis: _propTypes.default.func.isRequired // from LTI, f(filter: string)
207
+ generateAnalysis: _propTypes.default.func.isRequired // from LTI, f(filter: string, onError?: func(error))
208
208
 
209
209
  };
210
210
  WithAnalysisStatePresenter.defaultProps = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "18.0.1-rc.1+9e59be2f0",
3
+ "version": "18.1.0",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -42,11 +42,11 @@
42
42
  "dependencies": {
43
43
  "@instructure/grading-utils": "^1.0.0",
44
44
  "@instructure/outcomes-ui": "^2.1.9",
45
- "@instructure/quiz-common": "18.0.1-rc.1+9e59be2f0",
46
- "@instructure/quiz-i18n": "18.0.1-rc.1+9e59be2f0",
47
- "@instructure/quiz-interactions": "18.0.1-rc.1+9e59be2f0",
48
- "@instructure/quiz-number-input": "18.0.1-rc.1+9e59be2f0",
49
- "@instructure/quiz-rce": "18.0.1-rc.1+9e59be2f0",
45
+ "@instructure/quiz-common": "^18.1.0",
46
+ "@instructure/quiz-i18n": "^18.1.0",
47
+ "@instructure/quiz-interactions": "^18.1.0",
48
+ "@instructure/quiz-number-input": "^18.1.0",
49
+ "@instructure/quiz-rce": "^18.1.0",
50
50
  "@instructure/ui-a11y-content": "^7.20.0",
51
51
  "@instructure/ui-alerts": "^7.20.0",
52
52
  "@instructure/ui-avatar": "^7.20.0",
@@ -107,7 +107,7 @@
107
107
  "eventemitter3": "^3.1.0",
108
108
  "humps": "^2.0.0",
109
109
  "immutable": "^3.8.1",
110
- "instructure-validations": "18.0.1-rc.1+9e59be2f0",
110
+ "instructure-validations": "^18.1.0",
111
111
  "ipaddr.js": "^1.5.4",
112
112
  "isomorphic-fetch": "^2.2.0",
113
113
  "isuuid": "^0.1.0",
@@ -139,7 +139,7 @@
139
139
  "uuid": "^3.2.1"
140
140
  },
141
141
  "devDependencies": {
142
- "@instructure/quiz-scripts": "18.0.0",
142
+ "@instructure/quiz-scripts": "^18.1.0",
143
143
  "@instructure/ui-axe-check": "^7.20.0",
144
144
  "@instructure/ui-babel-preset": "^7.20.0",
145
145
  "@instructure/ui-karma-config": "^7.20.0",
@@ -158,7 +158,7 @@
158
158
  "intl": "^1.2.4",
159
159
  "jquery": "^2.2.3",
160
160
  "most-subject": "^5.3.0",
161
- "quiz-presets": "18.0.1-rc.1+9e59be2f0",
161
+ "quiz-presets": "^18.1.0",
162
162
  "react": "^16.8.6",
163
163
  "react-addons-test-utils": "^15.6.2",
164
164
  "react-dom": "^16.8.6",
@@ -174,5 +174,5 @@
174
174
  "publishConfig": {
175
175
  "access": "public"
176
176
  },
177
- "gitHead": "9e59be2f087b6e0b2bffac76020997c5b68c9086"
177
+ "gitHead": "1c07e05d0358f44a48da8b9902ec2637842a2584"
178
178
  }