@instructure/quiz-core 17.32.1-rc.4 → 17.32.1-rc.7

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.
@@ -305,7 +305,6 @@ export var BankEntry = (_dec = themeable(theme, styles), _dec(_class = (_temp =
305
305
  scope = _this$props.scope,
306
306
  closeTray = _this$props.closeTray,
307
307
  navigateToBanks = _this$props.navigateToBanks,
308
- navigateToBank = _this$props.navigateToBank,
309
308
  navigateToBuild = _this$props.navigateToBuild,
310
309
  returnToUrl = _this$props.returnToUrl,
311
310
  bank = _this$props.bank;
@@ -318,7 +317,7 @@ export var BankEntry = (_dec = themeable(theme, styles), _dec(_class = (_temp =
318
317
  canvasReferrerLinkText: isScopeEmpty ? null : scope.title
319
318
  }, /*#__PURE__*/React.createElement(BreadcrumbLink, {
320
319
  key: "bank",
321
- onClick: navigateToBank,
320
+ onClick: this.navigateToBank,
322
321
  ref: this.setNavToBankRef
323
322
  }, bank.title), /*#__PURE__*/React.createElement(BreadcrumbLink, {
324
323
  key: "bankEntry"
@@ -1,4 +1,11 @@
1
- import { List, Map } from 'immutable';
1
+ import { List, Map } from 'immutable'; // https://stackoverflow.com/questions/18749591/encode-html-entities-in-javascript
2
+
3
+ function htmlEncode(input) {
4
+ return input.replace(/[\u00A0-\u9999<>&]/g, function (i) {
5
+ return '&#' + i.charCodeAt(0) + ';';
6
+ });
7
+ }
8
+
2
9
  export function convertFITBtoRich(interactionTypeData, richFITBInteractionID) {
3
10
  var interactionData = interactionTypeData.interactionData,
4
11
  scoringData = interactionTypeData.scoringData;
@@ -7,12 +14,13 @@ export function convertFITBtoRich(interactionTypeData, richFITBInteractionID) {
7
14
  });
8
15
  var workingItemBody = sortedStemItems.reduce(function (itemBody, stemItem) {
9
16
  if (stemItem.get('type') === 'text') {
10
- return itemBody + stemItem.get('value', '');
17
+ return itemBody + htmlEncode(stemItem.get('value', ''));
11
18
  } else {
12
19
  var blankScoringData = scoringData.get('value', List()).find(function (blank) {
13
20
  return blank.get('id') === stemItem.get('blankId');
14
21
  }) || Map();
15
- return itemBody + "`".concat(blankScoringData.getIn(['scoringData', 'blankText']), "`");
22
+ var blankText = blankScoringData.getIn(['scoringData', 'blankText'], '');
23
+ return itemBody + "`".concat(htmlEncode(blankText), "`");
16
24
  }
17
25
  }, '');
18
26
  return Object.assign({}, interactionTypeData, {
@@ -357,7 +357,6 @@ var BankEntry = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
357
357
  scope = _this$props.scope,
358
358
  closeTray = _this$props.closeTray,
359
359
  navigateToBanks = _this$props.navigateToBanks,
360
- navigateToBank = _this$props.navigateToBank,
361
360
  navigateToBuild = _this$props.navigateToBuild,
362
361
  returnToUrl = _this$props.returnToUrl,
363
362
  bank = _this$props.bank;
@@ -370,7 +369,7 @@ var BankEntry = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
370
369
  canvasReferrerLinkText: isScopeEmpty ? null : scope.title
371
370
  }, /*#__PURE__*/_react.default.createElement(_uiBreadcrumb.BreadcrumbLink, {
372
371
  key: "bank",
373
- onClick: navigateToBank,
372
+ onClick: this.navigateToBank,
374
373
  ref: this.setNavToBankRef
375
374
  }, bank.title), /*#__PURE__*/_react.default.createElement(_uiBreadcrumb.BreadcrumbLink, {
376
375
  key: "bankEntry"
@@ -7,6 +7,13 @@ exports.convertFITBtoRich = convertFITBtoRich;
7
7
 
8
8
  var _immutable = require("immutable");
9
9
 
10
+ // https://stackoverflow.com/questions/18749591/encode-html-entities-in-javascript
11
+ function htmlEncode(input) {
12
+ return input.replace(/[\u00A0-\u9999<>&]/g, function (i) {
13
+ return '&#' + i.charCodeAt(0) + ';';
14
+ });
15
+ }
16
+
10
17
  function convertFITBtoRich(interactionTypeData, richFITBInteractionID) {
11
18
  var interactionData = interactionTypeData.interactionData,
12
19
  scoringData = interactionTypeData.scoringData;
@@ -15,12 +22,13 @@ function convertFITBtoRich(interactionTypeData, richFITBInteractionID) {
15
22
  });
16
23
  var workingItemBody = sortedStemItems.reduce(function (itemBody, stemItem) {
17
24
  if (stemItem.get('type') === 'text') {
18
- return itemBody + stemItem.get('value', '');
25
+ return itemBody + htmlEncode(stemItem.get('value', ''));
19
26
  } else {
20
27
  var blankScoringData = scoringData.get('value', (0, _immutable.List)()).find(function (blank) {
21
28
  return blank.get('id') === stemItem.get('blankId');
22
29
  }) || (0, _immutable.Map)();
23
- return itemBody + "`".concat(blankScoringData.getIn(['scoringData', 'blankText']), "`");
30
+ var blankText = blankScoringData.getIn(['scoringData', 'blankText'], '');
31
+ return itemBody + "`".concat(htmlEncode(blankText), "`");
24
32
  }
25
33
  }, '');
26
34
  return Object.assign({}, interactionTypeData, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "17.32.1-rc.4+c9243e7d3",
3
+ "version": "17.32.1-rc.7+fbd128d56",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -41,11 +41,11 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@instructure/outcomes-ui": "^2.1.2",
44
- "@instructure/quiz-common": "17.32.1-rc.4+c9243e7d3",
45
- "@instructure/quiz-i18n": "17.32.1-rc.4+c9243e7d3",
46
- "@instructure/quiz-interactions": "17.32.1-rc.4+c9243e7d3",
47
- "@instructure/quiz-number-input": "17.32.1-rc.4+c9243e7d3",
48
- "@instructure/quiz-rce": "17.32.1-rc.4+c9243e7d3",
44
+ "@instructure/quiz-common": "17.32.1-rc.7+fbd128d56",
45
+ "@instructure/quiz-i18n": "17.32.1-rc.7+fbd128d56",
46
+ "@instructure/quiz-interactions": "17.32.1-rc.7+fbd128d56",
47
+ "@instructure/quiz-number-input": "17.32.1-rc.7+fbd128d56",
48
+ "@instructure/quiz-rce": "17.32.1-rc.7+fbd128d56",
49
49
  "@instructure/ui-a11y-content": "^7.11.0",
50
50
  "@instructure/ui-alerts": "^7.11.0",
51
51
  "@instructure/ui-avatar": "^7.11.0",
@@ -106,7 +106,7 @@
106
106
  "eventemitter3": "^3.1.0",
107
107
  "humps": "^2.0.0",
108
108
  "immutable": "^3.8.1",
109
- "instructure-validations": "17.32.1-rc.4+c9243e7d3",
109
+ "instructure-validations": "17.32.1-rc.7+fbd128d56",
110
110
  "ipaddr.js": "^1.5.4",
111
111
  "isomorphic-fetch": "^2.2.0",
112
112
  "isuuid": "^0.1.0",
@@ -137,7 +137,7 @@
137
137
  "uuid": "^3.2.1"
138
138
  },
139
139
  "devDependencies": {
140
- "@instructure/quiz-scripts": "17.32.1-rc.4+c9243e7d3",
140
+ "@instructure/quiz-scripts": "17.32.1-rc.7+fbd128d56",
141
141
  "@instructure/ui-axe-check": "^7.11.0",
142
142
  "@instructure/ui-babel-preset": "^7.11.0",
143
143
  "@instructure/ui-karma-config": "^7.11.0",
@@ -156,7 +156,7 @@
156
156
  "intl": "^1.2.4",
157
157
  "jquery": "^2.2.3",
158
158
  "most-subject": "^5.3.0",
159
- "quiz-presets": "17.32.1-rc.4+c9243e7d3",
159
+ "quiz-presets": "17.32.1-rc.7+fbd128d56",
160
160
  "react": "^16.8.6",
161
161
  "react-addons-test-utils": "^15.6.2",
162
162
  "react-dom": "^16.8.6",
@@ -172,5 +172,5 @@
172
172
  "publishConfig": {
173
173
  "access": "public"
174
174
  },
175
- "gitHead": "c9243e7d3213479e55472a6bb6959d1c393952f1"
175
+ "gitHead": "fbd128d5628d155adc7ac00ba744a541c3aeb8df"
176
176
  }