@instructure/quiz-core 20.27.0 → 20.27.1-snapshot.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.
@@ -3,7 +3,7 @@ import { noop } from 'lodash';
3
3
  import { DO_NOTHING, NEW_QUIZ_ID, QUIZ_SAVE_CALL, PARENT_TYPE_BANK, PARENT_TYPE_QUIZ, PARENT_TYPE_QUIZ_SESSION } from '@instructure/quiz-common';
4
4
  import Fetcher from "../../common/util/Fetcher.js";
5
5
  import { getQTIInfo } from "./qtiImports.js";
6
- import { changeQuizAllowBacktracking, changeQuizAllowClearMCSelection, changeQuizChoiceElimination, changeQuizHasTimeLimit, changeQuizOneAtATimeType, changeQuizShuffleQuestions, changeQuizShuffleAnswers, changeQuizRequireStudentAccessCode, changeQuizStudentAccessCode, changeSessionTimeLimitInSeconds, changeQuizFilterIpAddress, changeQuizIpFilters, changeQuizCalculatorType, changeResultsFeedback, changeResultsFeedbackEnabled } from "../../common/actions/modifications.js";
6
+ import { changeQuizAllowBacktracking, changeQuizAllowClearMCSelection, changeQuizChoiceElimination, changeQuizHasTimeLimit, changeQuizOneAtATimeType, changeQuizDefaultRceSettings, changeQuizShuffleQuestions, changeQuizShuffleAnswers, changeQuizRequireStudentAccessCode, changeQuizStudentAccessCode, changeSessionTimeLimitInSeconds, changeQuizFilterIpAddress, changeQuizIpFilters, changeQuizCalculatorType, changeResultsFeedback, changeResultsFeedbackEnabled } from "../../common/actions/modifications.js";
7
7
  import { handleQuizResponse } from "../../common/api/callHandlers.js";
8
8
  import { getUploadUrl, sendFileToS3 } from "../../common/api/fileUpload.js";
9
9
  import { interactionTypeFetch } from "../../common/api/interactionTypes.js";
@@ -175,6 +175,11 @@ export function setChoiceElimination(quizId, value, completeCb) {
175
175
  choice_elimination: Boolean(value)
176
176
  }, changeQuizChoiceElimination(quizId, value), completeCb);
177
177
  }
178
+ export function setQuizDefaultRceSettings(quizId, value, completeCb) {
179
+ return setQuizProperty(quizId, {
180
+ default_rce_settings: value
181
+ }, changeQuizDefaultRceSettings(quizId, value), completeCb);
182
+ }
178
183
  export function setQuizShuffleQuestions(quizId, value, completeCb) {
179
184
  return setQuizProperty(quizId, {
180
185
  shuffle_questions: Boolean(value)
@@ -21,7 +21,6 @@ import t from '@instructure/quiz-i18n/es/format-message';
21
21
  // editing and hover which shows an overlay
22
22
 
23
23
  // ==========================================
24
-
25
24
  export var QuizInstructionsShow = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class = (_QuizInstructionsShow = /*#__PURE__*/function (_Component) {
26
25
  _inherits(QuizInstructionsShow, _Component);
27
26
  var _super = _createSuper(QuizInstructionsShow);
@@ -66,6 +66,17 @@ export function changeQuizChoiceElimination(quizId, value) {
66
66
  }
67
67
  };
68
68
  }
69
+ export function changeQuizDefaultRceSettings(quizId, value) {
70
+ return {
71
+ type: QUIZ_MODIFICATION,
72
+ payload: {
73
+ id: quizId,
74
+ modifications: {
75
+ defaultRceSettings: value
76
+ }
77
+ }
78
+ };
79
+ }
69
80
  export function changeQuizShuffleQuestions(quizId, value) {
70
81
  return {
71
82
  type: QUIZ_MODIFICATION,
@@ -1,12 +1,14 @@
1
1
  import { connect } from "../../react-redux.js";
2
2
  import RceConfigProviderComponent from "./presenter.js";
3
3
  import { getRCEConfig } from "../../selectors/rce.js";
4
+ import { getActiveQuiz } from "../../selectors/quizzes.js";
4
5
  import { setStoredRCEConfig } from "../../actions/rce.js";
5
6
  import { featureOn } from "../../util/featureCheck.js";
6
7
  var mapStateToProps = function mapStateToProps(state, ownProps) {
7
8
  return {
8
9
  storedRCEConfig: getRCEConfig(state),
9
- displayOldLinks: featureOn('instfs_display_old_links_rollback')
10
+ displayOldLinks: featureOn('instfs_display_old_links_rollback'),
11
+ activeQuiz: getActiveQuiz(state)
10
12
  };
11
13
  };
12
14
  var mapDispatchToProps = {
@@ -1,7 +1,9 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
1
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
4
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
5
  import React, { useEffect, useState } from 'react';
6
+ import ImmutablePropTypes from 'react-immutable-proptypes';
5
7
  import PropTypes from 'prop-types';
6
8
  import { QuizzesSpinner as Spinner } from "../shared/spinner/Spinner.js";
7
9
  import { Card } from "../shared/Card/index.js";
@@ -51,7 +53,9 @@ var _ref4 = /*#__PURE__*/React.createElement(Card, {
51
53
  wrapped: true
52
54
  }, /*#__PURE__*/React.createElement(Spinner, null));
53
55
  var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
54
- var children = _ref2.children,
56
+ var _activeQuiz$defaultRc;
57
+ var activeQuiz = _ref2.activeQuiz,
58
+ children = _ref2.children,
55
59
  contextId = _ref2.contextId,
56
60
  contextType = _ref2.contextType,
57
61
  canvasUserId = _ref2.canvasUserId,
@@ -76,6 +80,10 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
76
80
  _useState6 = _slicedToArray(_useState5, 2),
77
81
  canvasConfigLoading = _useState6[0],
78
82
  setCanvasConfigLoading = _useState6[1];
83
+ var _useState7 = useState(activeQuiz === null || activeQuiz === void 0 ? void 0 : (_activeQuiz$defaultRc = activeQuiz.defaultRceSettings) === null || _activeQuiz$defaultRc === void 0 ? void 0 : _activeQuiz$defaultRc.toJS()),
84
+ _useState8 = _slicedToArray(_useState7, 2),
85
+ defaultRceSettings = _useState8[0],
86
+ setDefaultRceSettings = _useState8[1];
79
87
  var refreshToken = rcsJwtRefreshFn && jwt ? decorateRcsJwtRefreshFn(rcsJwtRefreshFn, jwt, setJwt) : null;
80
88
  var rcsParams = {
81
89
  contextId: contextId,
@@ -151,14 +159,22 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
151
159
  postMessageService.cleanupPostMessageListener();
152
160
  };
153
161
  }, []);
162
+ useEffect(function () {
163
+ var _activeQuiz$defaultRc2;
164
+ setDefaultRceSettings(activeQuiz === null || activeQuiz === void 0 ? void 0 : (_activeQuiz$defaultRc2 = activeQuiz.defaultRceSettings) === null || _activeQuiz$defaultRc2 === void 0 ? void 0 : _activeQuiz$defaultRc2.toJS());
165
+ }, [activeQuiz]);
154
166
  if (canvasConfigLoading) {
155
167
  return _ref4;
156
168
  }
169
+ var defaultContextValue = _objectSpread(_objectSpread({}, mapParamsToRceConfigContext(rcsParams, rendererParams, canvasConfig, ltiAppParams, flags)), {}, {
170
+ defaultRceSettings: defaultRceSettings
171
+ });
157
172
  return /*#__PURE__*/React.createElement(RceConfigContext.Provider, {
158
- value: mapParamsToRceConfigContext(rcsParams, rendererParams, canvasConfig, ltiAppParams, flags)
173
+ value: defaultContextValue
159
174
  }, children);
160
175
  };
161
176
  RceConfigProviderComponent.propTypes = {
177
+ activeQuiz: ImmutablePropTypes.record,
162
178
  children: PropTypes.node.isRequired,
163
179
  displayOldLinks: PropTypes.bool,
164
180
  contextId: PropTypes.string,
@@ -182,6 +198,7 @@ RceConfigProviderComponent.propTypes = {
182
198
  setStoredRCEConfig: PropTypes.func.isRequired
183
199
  };
184
200
  RceConfigProviderComponent.defaultProps = {
201
+ activeQuiz: null,
185
202
  contextId: null,
186
203
  contextType: null,
187
204
  canvasUserId: null,
@@ -149,6 +149,7 @@ export var Quiz = (_dec = withStateCache(function (quiz) {
149
149
  calculatorType: 'none',
150
150
  choiceElimination: false,
151
151
  contextId: null,
152
+ defaultRceSettings: null,
152
153
  hasTimeLimit: false,
153
154
  id: '0',
154
155
  instructions: t('Add Instructions...'),
package/es/index.js CHANGED
@@ -104,7 +104,7 @@ export { ensureRCEContentIsLoaded } from "./common/util/rceChecker.js"; // APIs
104
104
  export { createQuizEntryRegrade } from "./grading/api/quizEntryRegrades.js";
105
105
  export { getQuizEntry } from "./building/api/quizEntries.js";
106
106
  export { getItem } from "./building/api/items.js";
107
- export { interactionFileUpload, setOneAtATimeType, quizBuildingSession, saveQuizChange, setBacktracking, setCalculatorType, setAllowClearMCSelection, setChoiceElimination, setFilterIpAddress, setIpFiltersApi, setIpFiltersUi, setQuizShuffleAnswers, setQuizShuffleQuestions, setRequireStudentAccessCode, setStudentAccessCodeApi, setStudentAccessCodeUi, setQuizHasTimeLimit, setSessionTimeLimitInSecondsUi, setSessionTimeLimitInSecondsApi, setResultsFeedback, setResultsFeedbackEnabled } from "./building/api/quizzes.js";
107
+ export { interactionFileUpload, setOneAtATimeType, quizBuildingSession, saveQuizChange, setBacktracking, setCalculatorType, setAllowClearMCSelection, setChoiceElimination, setFilterIpAddress, setIpFiltersApi, setIpFiltersUi, setQuizDefaultRceSettings, setQuizShuffleAnswers, setQuizShuffleQuestions, setRequireStudentAccessCode, setStudentAccessCodeApi, setStudentAccessCodeUi, setQuizHasTimeLimit, setSessionTimeLimitInSecondsUi, setSessionTimeLimitInSecondsApi, setResultsFeedback, setResultsFeedbackEnabled } from "./building/api/quizzes.js";
108
108
  export { getExistingQuiz } from "./common/api/quizzes.js";
109
109
  export { confirmSessionStartPage, submitStudentAccessCode, nextQuestion, submitQuiz } from "./taking/api/taking.js";
110
110
  export { pinSessionItem } from "./common/api/quizSessions.js";
@@ -11,6 +11,7 @@ exports.getExistingQuizAndItemsForBuilding = getExistingQuizAndItemsForBuilding;
11
11
  exports.interactionFileUpload = interactionFileUpload;
12
12
  exports.setAllowClearMCSelection = setAllowClearMCSelection;
13
13
  exports.setChoiceElimination = setChoiceElimination;
14
+ exports.setQuizDefaultRceSettings = setQuizDefaultRceSettings;
14
15
  exports.setQuizShuffleQuestions = setQuizShuffleQuestions;
15
16
  exports.setQuizShuffleAnswers = setQuizShuffleAnswers;
16
17
  exports.setRequireStudentAccessCode = setRequireStudentAccessCode;
@@ -204,6 +205,11 @@ function setChoiceElimination(quizId, value, completeCb) {
204
205
  choice_elimination: Boolean(value)
205
206
  }, (0, _modifications.changeQuizChoiceElimination)(quizId, value), completeCb);
206
207
  }
208
+ function setQuizDefaultRceSettings(quizId, value, completeCb) {
209
+ return setQuizProperty(quizId, {
210
+ default_rce_settings: value
211
+ }, (0, _modifications.changeQuizDefaultRceSettings)(quizId, value), completeCb);
212
+ }
207
213
  function setQuizShuffleQuestions(quizId, value, completeCb) {
208
214
  return setQuizProperty(quizId, {
209
215
  shuffle_questions: Boolean(value)
@@ -7,6 +7,7 @@ exports.changeQuizTitle = changeQuizTitle;
7
7
  exports.changeQuizInstructions = changeQuizInstructions;
8
8
  exports.changeQuizAllowClearMCSelection = changeQuizAllowClearMCSelection;
9
9
  exports.changeQuizChoiceElimination = changeQuizChoiceElimination;
10
+ exports.changeQuizDefaultRceSettings = changeQuizDefaultRceSettings;
10
11
  exports.changeQuizShuffleQuestions = changeQuizShuffleQuestions;
11
12
  exports.changeQuizShuffleAnswers = changeQuizShuffleAnswers;
12
13
  exports.changeQuizRequireStudentAccessCode = changeQuizRequireStudentAccessCode;
@@ -111,6 +112,17 @@ function changeQuizChoiceElimination(quizId, value) {
111
112
  }
112
113
  };
113
114
  }
115
+ function changeQuizDefaultRceSettings(quizId, value) {
116
+ return {
117
+ type: _quizCommon.QUIZ_MODIFICATION,
118
+ payload: {
119
+ id: quizId,
120
+ modifications: {
121
+ defaultRceSettings: value
122
+ }
123
+ }
124
+ };
125
+ }
114
126
  function changeQuizShuffleQuestions(quizId, value) {
115
127
  return {
116
128
  type: _quizCommon.QUIZ_MODIFICATION,
@@ -8,12 +8,14 @@ exports.default = void 0;
8
8
  var _reactRedux = require("../../react-redux.js");
9
9
  var _presenter = _interopRequireDefault(require("./presenter.js"));
10
10
  var _rce = require("../../selectors/rce.js");
11
+ var _quizzes = require("../../selectors/quizzes.js");
11
12
  var _rce2 = require("../../actions/rce.js");
12
13
  var _featureCheck = require("../../util/featureCheck.js");
13
14
  var mapStateToProps = function mapStateToProps(state, ownProps) {
14
15
  return {
15
16
  storedRCEConfig: (0, _rce.getRCEConfig)(state),
16
- displayOldLinks: (0, _featureCheck.featureOn)('instfs_display_old_links_rollback')
17
+ displayOldLinks: (0, _featureCheck.featureOn)('instfs_display_old_links_rollback'),
18
+ activeQuiz: (0, _quizzes.getActiveQuiz)(state)
17
19
  };
18
20
  };
19
21
  var mapDispatchToProps = {
@@ -6,10 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
13
  var _react = _interopRequireWildcard(require("react"));
14
+ var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
13
15
  var _propTypes = _interopRequireDefault(require("prop-types"));
14
16
  var _Spinner = require("../shared/spinner/Spinner.js");
15
17
  var _index = require("../shared/Card/index.js");
@@ -59,7 +61,9 @@ var _ref4 = /*#__PURE__*/_react.default.createElement(_index.Card, {
59
61
  wrapped: true
60
62
  }, /*#__PURE__*/_react.default.createElement(_Spinner.QuizzesSpinner, null));
61
63
  var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
62
- var children = _ref2.children,
64
+ var _activeQuiz$defaultRc;
65
+ var activeQuiz = _ref2.activeQuiz,
66
+ children = _ref2.children,
63
67
  contextId = _ref2.contextId,
64
68
  contextType = _ref2.contextType,
65
69
  canvasUserId = _ref2.canvasUserId,
@@ -84,6 +88,10 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
84
88
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
85
89
  canvasConfigLoading = _useState6[0],
86
90
  setCanvasConfigLoading = _useState6[1];
91
+ var _useState7 = (0, _react.useState)(activeQuiz === null || activeQuiz === void 0 ? void 0 : (_activeQuiz$defaultRc = activeQuiz.defaultRceSettings) === null || _activeQuiz$defaultRc === void 0 ? void 0 : _activeQuiz$defaultRc.toJS()),
92
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
93
+ defaultRceSettings = _useState8[0],
94
+ setDefaultRceSettings = _useState8[1];
87
95
  var refreshToken = rcsJwtRefreshFn && jwt ? decorateRcsJwtRefreshFn(rcsJwtRefreshFn, jwt, setJwt) : null;
88
96
  var rcsParams = {
89
97
  contextId: contextId,
@@ -159,14 +167,22 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(_ref2) {
159
167
  postMessageService.cleanupPostMessageListener();
160
168
  };
161
169
  }, []);
170
+ (0, _react.useEffect)(function () {
171
+ var _activeQuiz$defaultRc2;
172
+ setDefaultRceSettings(activeQuiz === null || activeQuiz === void 0 ? void 0 : (_activeQuiz$defaultRc2 = activeQuiz.defaultRceSettings) === null || _activeQuiz$defaultRc2 === void 0 ? void 0 : _activeQuiz$defaultRc2.toJS());
173
+ }, [activeQuiz]);
162
174
  if (canvasConfigLoading) {
163
175
  return _ref4;
164
176
  }
177
+ var defaultContextValue = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _rceConfigMapper.mapParamsToRceConfigContext)(rcsParams, rendererParams, canvasConfig, ltiAppParams, flags)), {}, {
178
+ defaultRceSettings: defaultRceSettings
179
+ });
165
180
  return /*#__PURE__*/_react.default.createElement(_quizCommon.RceConfigContext.Provider, {
166
- value: (0, _rceConfigMapper.mapParamsToRceConfigContext)(rcsParams, rendererParams, canvasConfig, ltiAppParams, flags)
181
+ value: defaultContextValue
167
182
  }, children);
168
183
  };
169
184
  RceConfigProviderComponent.propTypes = {
185
+ activeQuiz: _reactImmutableProptypes.default.record,
170
186
  children: _propTypes.default.node.isRequired,
171
187
  displayOldLinks: _propTypes.default.bool,
172
188
  contextId: _propTypes.default.string,
@@ -190,6 +206,7 @@ RceConfigProviderComponent.propTypes = {
190
206
  setStoredRCEConfig: _propTypes.default.func.isRequired
191
207
  };
192
208
  RceConfigProviderComponent.defaultProps = {
209
+ activeQuiz: null,
193
210
  contextId: null,
194
211
  contextType: null,
195
212
  canvasUserId: null,
@@ -156,6 +156,7 @@ var Quiz = (_dec = (0, _withStateCache.default)(function (quiz) {
156
156
  calculatorType: 'none',
157
157
  choiceElimination: false,
158
158
  contextId: null,
159
+ defaultRceSettings: null,
159
160
  hasTimeLimit: false,
160
161
  id: '0',
161
162
  instructions: (0, _formatMessage.default)('Add Instructions...'),
package/lib/index.js CHANGED
@@ -122,6 +122,7 @@ var _exportNames = {
122
122
  setFilterIpAddress: true,
123
123
  setIpFiltersApi: true,
124
124
  setIpFiltersUi: true,
125
+ setQuizDefaultRceSettings: true,
125
126
  setQuizShuffleAnswers: true,
126
127
  setQuizShuffleQuestions: true,
127
128
  setRequireStudentAccessCode: true,
@@ -903,6 +904,12 @@ Object.defineProperty(exports, "setIpFiltersUi", {
903
904
  return _quizzes.setIpFiltersUi;
904
905
  }
905
906
  });
907
+ Object.defineProperty(exports, "setQuizDefaultRceSettings", {
908
+ enumerable: true,
909
+ get: function get() {
910
+ return _quizzes.setQuizDefaultRceSettings;
911
+ }
912
+ });
906
913
  Object.defineProperty(exports, "setQuizShuffleAnswers", {
907
914
  enumerable: true,
908
915
  get: function get() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "20.27.0",
3
+ "version": "20.27.1-snapshot.1+c07122db2",
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.2.2",
47
- "@instructure/quiz-common": "^20.27.0",
48
- "@instructure/quiz-i18n": "^20.27.0",
49
- "@instructure/quiz-interactions": "^20.27.0",
50
- "@instructure/quiz-number-input": "^20.27.0",
51
- "@instructure/quiz-rce": "^20.27.0",
47
+ "@instructure/quiz-common": "20.27.1-snapshot.1+c07122db2",
48
+ "@instructure/quiz-i18n": "20.27.1-snapshot.1+c07122db2",
49
+ "@instructure/quiz-interactions": "20.27.1-snapshot.1+c07122db2",
50
+ "@instructure/quiz-number-input": "20.27.1-snapshot.1+c07122db2",
51
+ "@instructure/quiz-rce": "20.27.1-snapshot.1+c07122db2",
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.27.0",
115
+ "instructure-validations": "20.27.1-snapshot.1+c07122db2",
116
116
  "ipaddr.js": "^1.5.4",
117
117
  "isomorphic-fetch": "^2.2.0",
118
118
  "isuuid": "^0.1.0",
@@ -143,7 +143,7 @@
143
143
  "uuid": "^3.2.1"
144
144
  },
145
145
  "devDependencies": {
146
- "@instructure/quiz-scripts": "^20.27.0",
146
+ "@instructure/quiz-scripts": "20.27.0",
147
147
  "@instructure/ui-axe-check": "^8.51.0",
148
148
  "@instructure/ui-babel-preset": "^7.22.1",
149
149
  "@instructure/ui-test-utils": "^7.22.1",
@@ -161,7 +161,7 @@
161
161
  "jquery": "^2.2.3",
162
162
  "karma-junit-reporter": "^2.0.1",
163
163
  "most-subject": "^5.3.0",
164
- "quiz-presets": "^20.27.0",
164
+ "quiz-presets": "20.27.1-snapshot.1+c07122db2",
165
165
  "react": "^16.8.6",
166
166
  "react-addons-test-utils": "^15.6.2",
167
167
  "react-dom": "^16.8.6",
@@ -176,5 +176,6 @@
176
176
  },
177
177
  "publishConfig": {
178
178
  "access": "public"
179
- }
179
+ },
180
+ "gitHead": "c07122db22b3c1be0b6217b84315069b2101fe74"
180
181
  }