@pie-element/explicit-constructed-response 9.3.2-next.3 → 9.3.2-tip-tap.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.
- package/CHANGELOG.md +11 -0
- package/configure/CHANGELOG.md +11 -0
- package/configure/lib/__tests__/alternateResponses.test.js +335 -0
- package/configure/lib/__tests__/alternateSection.test.js +289 -0
- package/configure/lib/__tests__/ecr-toolbar.test.js +87 -0
- package/configure/lib/__tests__/main.test.js +320 -0
- package/configure/lib/__tests__/markupUtils.test.js +56 -0
- package/configure/lib/__tests__/utils.test.js +66 -0
- package/configure/lib/alternateResponses.js +1 -1
- package/configure/lib/alternateSection.js +3 -3
- package/configure/lib/alternateSection.js.map +1 -1
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/ecr-toolbar.js +20 -23
- package/configure/lib/ecr-toolbar.js.map +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/main.js +11 -11
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +1 -1
- package/configure/lib/utils.js +1 -1
- package/configure/package.json +6 -5
- package/controller/CHANGELOG.md +11 -0
- package/controller/lib/__tests__/index.spec.js +52 -0
- package/controller/lib/__tests__/index.test.js +1205 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +1 -1
- package/controller/package.json +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/main.test.js +124 -0
- package/lib/index.js +1 -1
- package/lib/main.js +1 -1
- package/lib/main.js.map +1 -1
- package/lib/print.js +1 -1
- package/package.json +6 -5
- package/LICENSE.md +0 -5
- package/module/configure.js +0 -1
- package/module/controller.js +0 -7460
- package/module/demo.js +0 -45
- package/module/element.js +0 -1
- package/module/index.html +0 -21
- package/module/manifest.json +0 -22
- package/module/print-demo.js +0 -83
- package/module/print.html +0 -18
- package/module/print.js +0 -1
package/configure/lib/main.js
CHANGED
|
@@ -37,7 +37,7 @@ var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
|
37
37
|
|
|
38
38
|
var _throttle = _interopRequireDefault(require("lodash/throttle"));
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var _editableHtmlTipTap = _interopRequireWildcard(require("@pie-lib/editable-html-tip-tap"));
|
|
41
41
|
|
|
42
42
|
var _configUi = require("@pie-lib/config-ui");
|
|
43
43
|
|
|
@@ -450,7 +450,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
450
450
|
}, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
451
451
|
label: teacherInstructions.label,
|
|
452
452
|
className: classes.promptHolder
|
|
453
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
453
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtmlTipTap["default"], {
|
|
454
454
|
className: classes.prompt,
|
|
455
455
|
markup: model.teacherInstructions || '',
|
|
456
456
|
onChange: this.onTeacherInstructionsChanged,
|
|
@@ -475,7 +475,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
475
475
|
}, teacherInstructionsError)), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
476
476
|
label: prompt.label,
|
|
477
477
|
className: classes.promptHolder
|
|
478
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
478
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtmlTipTap["default"], {
|
|
479
479
|
className: classes.prompt,
|
|
480
480
|
markup: model.prompt,
|
|
481
481
|
onChange: this.onPromptChanged,
|
|
@@ -517,8 +517,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
517
517
|
style: {
|
|
518
518
|
marginLeft: '8px'
|
|
519
519
|
}
|
|
520
|
-
}))), /*#__PURE__*/_react["default"].createElement(
|
|
521
|
-
activePlugins:
|
|
520
|
+
}))), /*#__PURE__*/_react["default"].createElement(_editableHtmlTipTap["default"], {
|
|
521
|
+
activePlugins: _editableHtmlTipTap.ALL_PLUGINS,
|
|
522
522
|
toolbarOpts: {
|
|
523
523
|
position: 'top'
|
|
524
524
|
},
|
|
@@ -530,16 +530,16 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
530
530
|
duplicates: true
|
|
531
531
|
},
|
|
532
532
|
maxResponseAreas: maxResponseAreas,
|
|
533
|
-
respAreaToolbar: function respAreaToolbar(node,
|
|
533
|
+
respAreaToolbar: function respAreaToolbar(node, editor, onToolbarDone) {
|
|
534
534
|
var model = _this2.props.model;
|
|
535
|
-
var correctChoice = (model.choices[node.
|
|
535
|
+
var correctChoice = (model.choices[node.attrs.index] || [])[0];
|
|
536
536
|
return function () {
|
|
537
537
|
return /*#__PURE__*/_react["default"].createElement(_ecrToolbar["default"], {
|
|
538
538
|
onChangeResponse: function onChangeResponse(newVal) {
|
|
539
|
-
return _this2.onChangeResponse(node.
|
|
539
|
+
return _this2.onChangeResponse(node.attrs.index, newVal);
|
|
540
540
|
},
|
|
541
541
|
node: node,
|
|
542
|
-
|
|
542
|
+
editor: editor,
|
|
543
543
|
onToolbarDone: onToolbarDone,
|
|
544
544
|
correctChoice: correctChoice,
|
|
545
545
|
maxLengthPerChoiceEnabled: maxLengthPerChoiceEnabled,
|
|
@@ -584,7 +584,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
584
584
|
}), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
585
585
|
label: rationale.label,
|
|
586
586
|
className: classes.promptHolder
|
|
587
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
587
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtmlTipTap["default"], {
|
|
588
588
|
className: classes.prompt,
|
|
589
589
|
markup: model.rationale || '',
|
|
590
590
|
onChange: this.onRationaleChanged,
|
|
@@ -628,4 +628,4 @@ exports.Main = Main;
|
|
|
628
628
|
var Styled = (0, _styles.withStyles)(styles)(Main);
|
|
629
629
|
var _default = Styled;
|
|
630
630
|
exports["default"] = _default;
|
|
631
|
-
//# sourceMappingURL=main.js.map
|
|
631
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJ0b2dnbGUiLCJzZXR0aW5ncyIsIlBhbmVsIiwiZHJvcGRvd24iLCJzdHlsZXMiLCJ0aGVtZSIsInByb21wdEhvbGRlciIsIndpZHRoIiwicGFkZGluZ1RvcCIsInNwYWNpbmciLCJ1bml0IiwibWFyZ2luQm90dG9tIiwibWFya3VwIiwibWluSGVpZ2h0IiwiY2hvaWNlQ29uZmlndXJhdGlvbiIsInBhZGRpbmdCb3R0b20iLCJzd2l0Y2hFbGVtZW50IiwianVzdGlmeUNvbnRlbnQiLCJtYXJnaW4iLCJhZGRCdXR0b24iLCJ0ZXh0IiwiZm9udFNpemUiLCJ0eXBvZ3JhcGh5IiwidG9vbHRpcCIsIndoaXRlU3BhY2UiLCJtYXhXaWR0aCIsImVycm9yVGV4dCIsImNvbG9yIiwicGFsZXR0ZSIsImVycm9yIiwibWFpbiIsImZsZXhDb250YWluZXIiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsInJlc3BvbnNlSGVhZGVyIiwibWFyZ2luVG9wIiwiY3JlYXRlRWxlbWVudEZyb21IVE1MIiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJNYWluIiwibmV3VmFsIiwicHJvcHMiLCJvbk1vZGVsQ2hhbmdlZCIsIm1vZGVsIiwicHJvbXB0IiwicmF0aW9uYWxlIiwidGVhY2hlckluc3RydWN0aW9ucyIsInNsYXRlTWFya3VwIiwiY2hvaWNlcyIsIm1heExlbmd0aFBlckNob2ljZSIsImluZGV4IiwibmV3VmFsTGVuZ3RoIiwibGVuZ3RoIiwibGFiZWwiLCJ2YWx1ZSIsIm5iT2ZNaXNzaW5nQ2hvaWNlcyIsIkFycmF5IiwiZmlsbCIsInNwbGljZSIsImRvbU1hcmt1cCIsImFsbFJlc3BBcmVhcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJhbGxDaG9pY2VzIiwidXBkYXRlZE1heExlbmd0aFBlckNob2ljZSIsImZvckVhY2giLCJlbCIsIm5ld0Nob2ljZXMiLCJkYXRhc2V0IiwiY2FsbGJhY2siLCJzZXRTdGF0ZSIsImNhY2hlZENob2ljZXMiLCJ1bmRlZmluZWQiLCJub2RlcyIsInN0YXRlIiwibmV3Q2FjaGVkQ2hvaWNlcyIsIm5vZGUiLCJrZXlGb3JOb2RlIiwiZGF0YSIsImdldCIsIk9iamVjdCIsImFzc2lnbiIsImhhc093blByb3BlcnR5IiwidHJhaWxpbmciLCJsZWFkaW5nIiwidW5kZWZpbmVkTGVuZ3RocyIsInZhbHVlcyIsImNob2ljZSIsImxhYmVsTGVuZ3Roc0FyciIsIm1hcCIsIk1hdGgiLCJtYXgiLCJjbGFzc2VzIiwiY29uZmlndXJhdGlvbiIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJpbWFnZVN1cHBvcnQiLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJiYXNlSW5wdXRDb25maWd1cmF0aW9uIiwiY29udGVudERpbWVuc2lvbnMiLCJtYXhJbWFnZVdpZHRoIiwibWF4SW1hZ2VIZWlnaHQiLCJtYXhSZXNwb25zZUFyZWFzIiwicGFydGlhbFNjb3JpbmciLCJwbGF5ZXJTcGVsbENoZWNrIiwidGVtcGxhdGUiLCJzZXR0aW5nc1BhbmVsRGlzYWJsZWQiLCJzcGVsbENoZWNrIiwiZWRpdFNvdXJjZSIsIndpdGhSdWJyaWMiLCJtYXRoTWxPcHRpb25zIiwibGFuZ3VhZ2UiLCJsYW5ndWFnZUNob2ljZXMiLCJzcGFuaXNoQnV0dG9uIiwicmVzcG9uc2VBcmVhSW5wdXRDb25maWd1cmF0aW9uIiwiZXJyb3JzIiwiZXh0cmFDU1NSdWxlcyIsIm1heExlbmd0aFBlckNob2ljZUVuYWJsZWQiLCJwcm9tcHRFbmFibGVkIiwicmF0aW9uYWxlRW5hYmxlZCIsInNwZWxsQ2hlY2tFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJ0b29sYmFyRWRpdG9yUG9zaXRpb24iLCJjaG9pY2VzRXJyb3JzIiwicHJvbXB0RXJyb3IiLCJyYXRpb25hbGVFcnJvciIsInJlc3BvbnNlQXJlYXNFcnJvciIsInJlc3BvbnNlQXJlYXMiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRXJyb3IiLCJ2YWxpZGF0aW9uTWVzc2FnZSIsImRlZmF1bHRJbWFnZU1heFdpZHRoIiwiZGVmYXVsdEltYWdlTWF4SGVpZ2h0IiwidG9vbGJhck9wdHMiLCJwb3NpdGlvbiIsInBhbmVsU2V0dGluZ3MiLCJlbmFibGVkIiwib3B0aW9ucyIsInBhbmVsUHJvcGVydGllcyIsInBsYXllclNwZWxsQ2hlY2tFbmFibGVkIiwicnVicmljRW5hYmxlZCIsImdldFBsdWdpblByb3BzIiwib25Nb2RlbENoYW5nZSIsIlNldHRpbmdzIiwiUHJvcGVydGllcyIsIm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQiLCJpbnB1dENvbmZpZ3VyYXRpb24iLCJvblByb21wdENoYW5nZWQiLCJtYXJnaW5MZWZ0IiwiQUxMX1BMVUdJTlMiLCJ0eXBlIiwiZHVwbGljYXRlcyIsInJlc3BBcmVhVG9vbGJhciIsImVkaXRvciIsIm9uVG9vbGJhckRvbmUiLCJjb3JyZWN0Q2hvaWNlIiwiYXR0cnMiLCJvbkNoYW5nZVJlc3BvbnNlIiwib25IYW5kbGVBcmVhQ2hhbmdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvblJlc3BvbnNlc0NoYW5nZWQiLCJvbkxlbmd0aENoYW5nZWQiLCJvblJhdGlvbmFsZUNoYW5nZWQiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJkaXNhYmxlU2lkZVBhbmVsIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsImFkZCIsIlN0eWxlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBUUEsTUFBUixHQUFvQ0Msa0JBQXBDLENBQVFELE1BQVI7QUFBQSxJQUFnQkUsS0FBaEIsR0FBb0NELGtC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QSxPQUFPLEVBQUV3RSxzQkFBVUMsTUFBVixDQUFpQkMsVUFOVDtBQU9qQnZFLEVBQUFBLFlBQVksRUFBRXFFLHNCQUFVTSxLQUFWLENBQWdCO0FBQzVCQyxJQUFBQSxHQUFHLEVBQUVQLHNCQUFVSyxJQUFWLENBQWVILFVBRFE7QUFFNUIsY0FBUUYsc0JBQVVLLElBQVYsQ0FBZUg7QUFGSyxHQUFoQixDQVBHO0FBV2pCdEUsRUFBQUEsa0JBQWtCLEVBQUVvRSxzQkFBVUM7QUFYYixDO0FBd2FyQixJQUFNTyxNQUFNLEdBQUcsd0JBQVczSyxNQUFYLEVBQW1CdUMsSUFBbkIsQ0FBZjtlQUVlb0ksTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnO1xuaW1wb3J0IEVkaXRhYmxlSHRtbCwgeyBBTExfUExVR0lOUyB9IGZyb20gJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwtdGlwLXRhcCc7XG5pbXBvcnQgeyBJbnB1dENvbnRhaW5lciwgbGF5b3V0LCBzZXR0aW5ncyB9IGZyb20gJ0BwaWUtbGliL2NvbmZpZy11aSc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBUeXBvZ3JhcGh5IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1R5cG9ncmFwaHknO1xuaW1wb3J0IEluZm8gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0luZm8nO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVG9vbHRpcCc7XG5cbmltcG9ydCBFQ1JUb29sYmFyIGZyb20gJy4vZWNyLXRvb2xiYXInO1xuaW1wb3J0IEFsdGVybmF0ZVJlc3BvbnNlcyBmcm9tICcuL2FsdGVybmF0ZVJlc3BvbnNlcyc7XG5pbXBvcnQgeyBkZWNvZGVIVE1MLCBnZXRBZGp1c3RlZExlbmd0aCB9IGZyb20gJy4vbWFya3VwVXRpbHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVWYWxpZGF0aW9uTWVzc2FnZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmNvbnN0IHsgdG9nZ2xlLCBQYW5lbCwgZHJvcGRvd24gfSA9IHNldHRpbmdzO1xuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIHByb21wdEhvbGRlcjoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIG1hcmt1cDoge1xuICAgIG1pbkhlaWdodDogJzEwMHB4JyxcbiAgICBwYWRkaW5nVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICAnJiBbZGF0YS1zbGF0ZS1lZGl0b3I9XCJ0cnVlXCJdJzoge1xuICAgICAgbWluSGVpZ2h0OiAnMTAwcHgnLFxuICAgIH0sXG4gIH0sXG4gIGNob2ljZUNvbmZpZ3VyYXRpb246IHtcbiAgICBwYWRkaW5nVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIHN3aXRjaEVsZW1lbnQ6IHtcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIG1hcmdpbjogMCxcbiAgfSxcbiAgYWRkQnV0dG9uOiB7XG4gICAgZmxvYXQ6ICdyaWdodCcsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSArIDIsXG4gIH0sXG4gIHRvb2x0aXA6IHtcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSAtIDIsXG4gICAgd2hpdGVTcGFjZTogJ3ByZScsXG4gICAgbWF4V2lkdGg6ICc1MDBweCcsXG4gIH0sXG4gIGVycm9yVGV4dDoge1xuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRTaXplIC0gMixcbiAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5lcnJvci5tYWluLFxuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgfSxcbiAgZmxleENvbnRhaW5lcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSxcbiAgcmVzcG9uc2VIZWFkZXI6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDMsXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gIH0sXG59KTtcblxuY29uc3QgY3JlYXRlRWxlbWVudEZyb21IVE1MID0gKGh0bWxTdHJpbmcpID0+IHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSBodG1sU3RyaW5nLnRyaW0oKTtcblxuICByZXR1cm4gZGl2O1xufTtcblxuZXhwb3J0IGNsYXNzIE1haW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBtb2RlbDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVTaWRlUGFuZWw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uTW9kZWxDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGltYWdlU3VwcG9ydDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGFkZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIGRlbGV0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB9KSxcbiAgICB1cGxvYWRTb3VuZFN1cHBvcnQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIH07XG5cbiAgc3RhdGUgPSB7fTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbDogeyBzbGF0ZU1hcmt1cCwgY2hvaWNlcywgbWF4TGVuZ3RoUGVyQ2hvaWNlID0gW10gfSxcbiAgICAgIG9uTW9kZWxDaGFuZ2VkLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHVuZGVmaW5lZExlbmd0aHMgPSAhbWF4TGVuZ3RoUGVyQ2hvaWNlLmxlbmd0aDtcblxuICAgIHRoaXMuc2V0U3RhdGUoeyBtYXJrdXA6IHNsYXRlTWFya3VwIH0pO1xuXG4gICAgLy8gY2FsY3VsYXRlIG1heExlbmd0aFBlckNob2ljZSBhcnJheSBpZiBpdCBpcyBub3QgZGVmaW5lZCBvciBkZWZpbmVkIGluY29ycmVjdGx5XG4gICAgT2JqZWN0LnZhbHVlcyhjaG9pY2VzKS5mb3JFYWNoKChjaG9pY2UsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBsYWJlbExlbmd0aHNBcnIgPSBjaG9pY2UubWFwKChjaG9pY2UpID0+IGRlY29kZUhUTUwoY2hvaWNlLmxhYmVsIHx8ICcnKS5sZW5ndGgpO1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoLi4ubGFiZWxMZW5ndGhzQXJyKTtcblxuICAgICAgaWYgKFxuICAgICAgICB1bmRlZmluZWRMZW5ndGhzIHx8XG4gICAgICAgICFtYXhMZW5ndGhQZXJDaG9pY2VbaW5kZXhdIHx8XG4gICAgICAgIG1heExlbmd0aFBlckNob2ljZVtpbmRleF0gPCBsZW5ndGggfHxcbiAgICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlW2luZGV4XSA+IGxlbmd0aCArIDEwXG4gICAgICApIHtcbiAgICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlW2luZGV4XSA9IGdldEFkanVzdGVkTGVuZ3RoKGxlbmd0aCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvbk1vZGVsQ2hhbmdlZCh7IC4uLnRoaXMucHJvcHMubW9kZWwsIG1heExlbmd0aFBlckNob2ljZSB9KTtcbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2UgPSAobmV3VmFsKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7IC4uLnRoaXMucHJvcHMubW9kZWwsIC4uLm5ld1ZhbCB9KTtcbiAgfTtcblxuICBvblByb21wdENoYW5nZWQgPSAocHJvbXB0KSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7IC4uLnRoaXMucHJvcHMubW9kZWwsIHByb21wdCB9KTtcbiAgfTtcblxuICBvblJhdGlvbmFsZUNoYW5nZWQgPSAocmF0aW9uYWxlKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7IC4uLnRoaXMucHJvcHMubW9kZWwsIHJhdGlvbmFsZSB9KTtcbiAgfTtcblxuICBvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkID0gKHRlYWNoZXJJbnN0cnVjdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IG1vZGVsLCBvbk1vZGVsQ2hhbmdlZCB9ID0gdGhpcy5wcm9wcztcblxuICAgIG9uTW9kZWxDaGFuZ2VkKHsgLi4ubW9kZWwsIHRlYWNoZXJJbnN0cnVjdGlvbnMgfSk7XG4gIH07XG5cbiAgb25NYXJrdXBDaGFuZ2VkID0gKHNsYXRlTWFya3VwKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7IC4uLnRoaXMucHJvcHMubW9kZWwsIHNsYXRlTWFya3VwIH0pO1xuICB9O1xuXG4gIG9uUmVzcG9uc2VzQ2hhbmdlZCA9IChjaG9pY2VzKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7IC4uLnRoaXMucHJvcHMubW9kZWwsIGNob2ljZXMgfSk7XG4gIH07XG5cbiAgb25MZW5ndGhDaGFuZ2VkID0gKG1heExlbmd0aFBlckNob2ljZSkgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwsIG9uTW9kZWxDaGFuZ2VkIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgb25Nb2RlbENoYW5nZWQoeyAuLi5tb2RlbCwgbWF4TGVuZ3RoUGVyQ2hvaWNlIH0pO1xuICB9O1xuXG4gIG9uQ2hhbmdlUmVzcG9uc2UgPSAoaW5kZXgsIG5ld1ZhbCkgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwsIG9uTW9kZWxDaGFuZ2VkIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgY2hvaWNlcyB9ID0gbW9kZWw7XG4gICAgbGV0IHsgbWF4TGVuZ3RoUGVyQ2hvaWNlIH0gPSBtb2RlbDtcbiAgICBjb25zdCBuZXdWYWxMZW5ndGggPSBkZWNvZGVIVE1MKG5ld1ZhbCB8fCAnJykubGVuZ3RoO1xuXG4gICAgaWYgKCFjaG9pY2VzW2luZGV4XSkge1xuICAgICAgY2hvaWNlc1tpbmRleF0gPSBbeyBsYWJlbDogbmV3VmFsIHx8ICcnLCB2YWx1ZTogJzAnIH1dO1xuXG4gICAgICAvLyBhZGQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3NpbmcgY2hvaWNlcyB1cCB0byB0aGUgbmV3IGluZGV4IHBvc2l0aW9uXG4gICAgICBjb25zdCBuYk9mTWlzc2luZ0Nob2ljZXMgPSBpbmRleCA+IG1heExlbmd0aFBlckNob2ljZS5sZW5ndGggPyBpbmRleCAtIG1heExlbmd0aFBlckNob2ljZS5sZW5ndGggOiAwO1xuXG4gICAgICBtYXhMZW5ndGhQZXJDaG9pY2UgPSBbLi4ubWF4TGVuZ3RoUGVyQ2hvaWNlLCAuLi5BcnJheShuYk9mTWlzc2luZ0Nob2ljZXMpLmZpbGwoMSldO1xuXG4gICAgICBtYXhMZW5ndGhQZXJDaG9pY2Uuc3BsaWNlKGluZGV4LCAwLCBnZXRBZGp1c3RlZExlbmd0aChuZXdWYWxMZW5ndGgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hvaWNlc1tpbmRleF1bMF0ubGFiZWwgPSBuZXdWYWwgfHwgJyc7XG5cbiAgICAgIGlmIChcbiAgICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlICYmXG4gICAgICAgIChtYXhMZW5ndGhQZXJDaG9pY2VbaW5kZXhdIDwgbmV3VmFsTGVuZ3RoIHx8IG1heExlbmd0aFBlckNob2ljZVtpbmRleF0gPiBuZXdWYWxMZW5ndGggKyAxMClcbiAgICAgICkge1xuICAgICAgICBtYXhMZW5ndGhQZXJDaG9pY2VbaW5kZXhdID0gZ2V0QWRqdXN0ZWRMZW5ndGgobmV3VmFsTGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlZCh7IC4uLm1vZGVsLCBjaG9pY2VzLCBtYXhMZW5ndGhQZXJDaG9pY2UgfSk7XG4gIH07XG5cbiAgb25DaGFuZ2UgPSAobWFya3VwKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kZWw6IHsgY2hvaWNlcywgbWF4TGVuZ3RoUGVyQ2hvaWNlIH0sXG4gICAgICBvbk1vZGVsQ2hhbmdlZCxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBkb21NYXJrdXAgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwobWFya3VwKTtcbiAgICBjb25zdCBhbGxSZXNwQXJlYXMgPSBkb21NYXJrdXAucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdHlwZT1cImV4cGxpY2l0X2NvbnN0cnVjdGVkX3Jlc3BvbnNlXCJdJyk7XG5cbiAgICBjb25zdCBhbGxDaG9pY2VzID0ge307XG4gICAgY29uc3QgdXBkYXRlZE1heExlbmd0aFBlckNob2ljZSA9IFtdO1xuXG4gICAgYWxsUmVzcEFyZWFzLmZvckVhY2goKGVsLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IGNsb25lRGVlcChjaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdKTtcblxuICAgICAgaWYgKG5ld0Nob2ljZXMpIHtcbiAgICAgICAgbmV3Q2hvaWNlc1swXSA9IHtcbiAgICAgICAgICBsYWJlbDogZWwuZGF0YXNldC52YWx1ZSB8fCAnJyxcbiAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHVwZGF0ZWRNYXhMZW5ndGhQZXJDaG9pY2VbaW5kZXhdID0gbWF4TGVuZ3RoUGVyQ2hvaWNlW2VsLmRhdGFzZXQuaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICBhbGxDaG9pY2VzW2luZGV4XSA9IG5ld0Nob2ljZXM7XG4gICAgICBlbC5kYXRhc2V0LmluZGV4ID0gaW5kZXg7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+XG4gICAgICBvbk1vZGVsQ2hhbmdlZCh7XG4gICAgICAgIC4uLnRoaXMucHJvcHMubW9kZWwsXG4gICAgICAgIGNob2ljZXM6IGFsbENob2ljZXMsXG4gICAgICAgIHNsYXRlTWFya3VwOiBkb21NYXJrdXAuaW5uZXJIVE1MLFxuICAgICAgICBtYXhMZW5ndGhQZXJDaG9pY2U6IHVwZGF0ZWRNYXhMZW5ndGhQZXJDaG9pY2UsXG4gICAgICB9KTtcblxuICAgIHRoaXMuc2V0U3RhdGUoeyBjYWNoZWRDaG9pY2VzOiB1bmRlZmluZWQgfSwgY2FsbGJhY2spO1xuICB9O1xuXG4gIG9uSGFuZGxlQXJlYUNoYW5nZSA9IHRocm90dGxlKFxuICAgIChub2RlcykgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtb2RlbDogeyBjaG9pY2VzIH0sXG4gICAgICAgIG9uTW9kZWxDaGFuZ2VkLFxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7IGNhY2hlZENob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIGlmICghbm9kZXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdDaG9pY2VzID0gY2hvaWNlcyA/IGNsb25lRGVlcChjaG9pY2VzKSA6IHt9O1xuICAgICAgY29uc3QgbmV3Q2FjaGVkQ2hvaWNlcyA9IGNhY2hlZENob2ljZXMgPyBjbG9uZURlZXAoY2FjaGVkQ2hvaWNlcykgOiB7fTtcblxuICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBrZXlGb3JOb2RlID0gbm9kZS5kYXRhLmdldCgnaW5kZXgnKTtcblxuICAgICAgICBpZiAoIW5ld0Nob2ljZXNba2V5Rm9yTm9kZV0gJiYgbmV3Q2FjaGVkQ2hvaWNlc1trZXlGb3JOb2RlXSkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24obmV3Q2hvaWNlcywgcGljayhuZXdDYWNoZWRDaG9pY2VzLCBrZXlGb3JOb2RlKSk7XG5cbiAgICAgICAgICBpZiAobmV3Q2FjaGVkQ2hvaWNlcy5oYXNPd25Qcm9wZXJ0eShrZXlGb3JOb2RlKSkge1xuICAgICAgICAgICAgZGVsZXRlIG5ld0NhY2hlZENob2ljZXNba2V5Rm9yTm9kZV07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24obmV3Q2FjaGVkQ2hvaWNlcywgcGljayhuZXdDaG9pY2VzLCBrZXlGb3JOb2RlKSk7XG5cbiAgICAgICAgICBpZiAobmV3Q2hvaWNlcy5oYXNPd25Qcm9wZXJ0eShrZXlGb3JOb2RlKSkge1xuICAgICAgICAgICAgZGVsZXRlIG5ld0Nob2ljZXNba2V5Rm9yTm9kZV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiBvbk1vZGVsQ2hhbmdlZCh7IC4uLnRoaXMucHJvcHMubW9kZWwsIGNob2ljZXM6IG5ld0Nob2ljZXMgfSk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjYWNoZWRDaG9pY2VzOiBuZXdDYWNoZWRDaG9pY2VzIH0sIGNhbGxiYWNrKTtcbiAgICB9LFxuICAgIDUwMCxcbiAgICB7IHRyYWlsaW5nOiBmYWxzZSwgbGVhZGluZzogdHJ1ZSB9LFxuICApO1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzZXMsIG1vZGVsLCBjb25maWd1cmF0aW9uLCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkLCBpbWFnZVN1cHBvcnQsIHVwbG9hZFNvdW5kU3VwcG9ydCB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHtcbiAgICAgIGJhc2VJbnB1dENvbmZpZ3VyYXRpb24gPSB7fSxcbiAgICAgIGNvbnRlbnREaW1lbnNpb25zID0ge30sXG4gICAgICBtYXhJbWFnZVdpZHRoID0ge30sXG4gICAgICBtYXhJbWFnZUhlaWdodCA9IHt9LFxuICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlID0ge30sXG4gICAgICBtYXhSZXNwb25zZUFyZWFzLFxuICAgICAgcGFydGlhbFNjb3JpbmcgPSB7fSxcbiAgICAgIHBsYXllclNwZWxsQ2hlY2sgPSB7fSxcbiAgICAgIHByb21wdCA9IHt9LFxuICAgICAgcmF0aW9uYWxlID0ge30sXG4gICAgICB0ZW1wbGF0ZSA9IHt9LFxuICAgICAgc2V0dGluZ3NQYW5lbERpc2FibGVkLFxuICAgICAgc3BlbGxDaGVjayA9IHt9LFxuICAgICAgZWRpdFNvdXJjZSA9IHt9LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IHt9LFxuICAgICAgd2l0aFJ1YnJpYyA9IHt9LFxuICAgICAgbWF0aE1sT3B0aW9ucyA9IHt9LFxuICAgICAgbGFuZ3VhZ2UgPSB7fSxcbiAgICAgIGxhbmd1YWdlQ2hvaWNlcyA9IHt9LFxuICAgICAgc3BhbmlzaEJ1dHRvbiA9IHt9LFxuICAgICAgcmVzcG9uc2VBcmVhSW5wdXRDb25maWd1cmF0aW9uID0ge30sXG4gICAgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG4gICAgY29uc3Qge1xuICAgICAgZXJyb3JzLFxuICAgICAgZXh0cmFDU1NSdWxlcyxcbiAgICAgIG1heExlbmd0aFBlckNob2ljZUVuYWJsZWQsXG4gICAgICBwcm9tcHRFbmFibGVkLFxuICAgICAgcmF0aW9uYWxlRW5hYmxlZCxcbiAgICAgIHNwZWxsQ2hlY2tFbmFibGVkLFxuICAgICAgdGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQsXG4gICAgICB0b29sYmFyRWRpdG9yUG9zaXRpb24sXG4gICAgfSA9IG1vZGVsIHx8IHt9O1xuXG4gICAgY29uc3Qge1xuICAgICAgY2hvaWNlczogY2hvaWNlc0Vycm9ycyA9IHt9LFxuICAgICAgcHJvbXB0OiBwcm9tcHRFcnJvcixcbiAgICAgIHJhdGlvbmFsZTogcmF0aW9uYWxlRXJyb3IsXG4gICAgICByZXNwb25zZUFyZWFzOiByZXNwb25zZUFyZWFzRXJyb3IsXG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiB0ZWFjaGVySW5zdHJ1Y3Rpb25zRXJyb3IsXG4gICAgfSA9IGVycm9ycyB8fCB7fTtcbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZSA9IGdlbmVyYXRlVmFsaWRhdGlvbk1lc3NhZ2UoY29uZmlndXJhdGlvbik7XG5cbiAgICBjb25zdCBkZWZhdWx0SW1hZ2VNYXhXaWR0aCA9IG1heEltYWdlV2lkdGggJiYgbWF4SW1hZ2VXaWR0aC5wcm9tcHQ7XG4gICAgY29uc3QgZGVmYXVsdEltYWdlTWF4SGVpZ2h0ID0gbWF4SW1hZ2VIZWlnaHQgJiYgbWF4SW1hZ2VIZWlnaHQucHJvbXB0O1xuXG4gICAgY29uc3QgdG9vbGJhck9wdHMgPSB7XG4gICAgICBwb3NpdGlvbjogdG9vbGJhckVkaXRvclBvc2l0aW9uID09PSAndG9wJyA/ICd0b3AnIDogJ2JvdHRvbScsXG4gICAgfTtcblxuICAgIGNvbnN0IHBhbmVsU2V0dGluZ3MgPSB7XG4gICAgICBwYXJ0aWFsU2NvcmluZzogcGFydGlhbFNjb3Jpbmcuc2V0dGluZ3MgJiYgdG9nZ2xlKHBhcnRpYWxTY29yaW5nLmxhYmVsKSxcbiAgICAgIG1heExlbmd0aFBlckNob2ljZUVuYWJsZWQ6IG1heExlbmd0aFBlckNob2ljZS5zZXR0aW5ncyAmJiB0b2dnbGUobWF4TGVuZ3RoUGVyQ2hvaWNlLmxhYmVsKSxcbiAgICAgICdsYW5ndWFnZS5lbmFibGVkJzogbGFuZ3VhZ2Uuc2V0dGluZ3MgJiYgdG9nZ2xlKGxhbmd1YWdlLmxhYmVsLCB0cnVlKSxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZS5zZXR0aW5ncyAmJiBsYW5ndWFnZS5lbmFibGVkICYmIGRyb3Bkb3duKGxhbmd1YWdlQ2hvaWNlcy5sYWJlbCwgbGFuZ3VhZ2VDaG9pY2VzLm9wdGlvbnMpLFxuICAgICAgJ3Jlc3BvbnNlQXJlYUlucHV0Q29uZmlndXJhdGlvbi5pbnB1dENvbmZpZ3VyYXRpb24uY2hhcmFjdGVycy5kaXNhYmxlZCc6XG4gICAgICAgIHNwYW5pc2hCdXR0b24uc2V0dGluZ3MgJiYgdG9nZ2xlKHNwYW5pc2hCdXR0b24ubGFiZWwsIHRydWUpLFxuICAgIH07XG4gICAgY29uc3QgcGFuZWxQcm9wZXJ0aWVzID0ge1xuICAgICAgdGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQ6IHRlYWNoZXJJbnN0cnVjdGlvbnMuc2V0dGluZ3MgJiYgdG9nZ2xlKHRlYWNoZXJJbnN0cnVjdGlvbnMubGFiZWwpLFxuICAgICAgcmF0aW9uYWxlRW5hYmxlZDogcmF0aW9uYWxlLnNldHRpbmdzICYmIHRvZ2dsZShyYXRpb25hbGUubGFiZWwpLFxuICAgICAgcHJvbXB0RW5hYmxlZDogcHJvbXB0LnNldHRpbmdzICYmIHRvZ2dsZShwcm9tcHQubGFiZWwpLFxuICAgICAgc3BlbGxDaGVja0VuYWJsZWQ6IHNwZWxsQ2hlY2suc2V0dGluZ3MgJiYgdG9nZ2xlKHNwZWxsQ2hlY2subGFiZWwpLFxuICAgICAgcGxheWVyU3BlbGxDaGVja0VuYWJsZWQ6IHBsYXllclNwZWxsQ2hlY2suc2V0dGluZ3MgJiYgdG9nZ2xlKHBsYXllclNwZWxsQ2hlY2subGFiZWwpLFxuICAgICAgcnVicmljRW5hYmxlZDogd2l0aFJ1YnJpYz8uc2V0dGluZ3MgJiYgdG9nZ2xlKHdpdGhSdWJyaWM/LmxhYmVsKSxcbiAgICAgICdlZGl0U291cmNlLmVuYWJsZWQnOiBlZGl0U291cmNlPy5zZXR0aW5ncyAmJiB0b2dnbGUoZWRpdFNvdXJjZS5sYWJlbCwgdHJ1ZSksXG4gICAgfTtcblxuICAgIGNvbnN0IGdldFBsdWdpblByb3BzID0gKHByb3BzID0ge30pID0+ICh7XG4gICAgICAuLi5iYXNlSW5wdXRDb25maWd1cmF0aW9uLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxsYXlvdXQuQ29uZmlnTGF5b3V0XG4gICAgICAgIGV4dHJhQ1NTUnVsZXM9e2V4dHJhQ1NTUnVsZXN9XG4gICAgICAgIGRpbWVuc2lvbnM9e2NvbnRlbnREaW1lbnNpb25zfVxuICAgICAgICBoaWRlU2V0dGluZ3M9e3NldHRpbmdzUGFuZWxEaXNhYmxlZH1cbiAgICAgICAgc2V0dGluZ3M9e1xuICAgICAgICAgIDxQYW5lbFxuICAgICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgICAgY29uZmlndXJhdGlvbj17Y29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgIG9uQ2hhbmdlTW9kZWw9eyhtb2RlbCkgPT4gdGhpcy5vbk1vZGVsQ2hhbmdlKG1vZGVsKX1cbiAgICAgICAgICAgIG9uQ2hhbmdlQ29uZmlndXJhdGlvbj17KGNvbmZpZ3VyYXRpb24pID0+IG9uQ29uZmlndXJhdGlvbkNoYW5nZWQoY29uZmlndXJhdGlvbiwgdHJ1ZSl9XG4gICAgICAgICAgICBncm91cHM9e3tcbiAgICAgICAgICAgICAgU2V0dGluZ3M6IHBhbmVsU2V0dGluZ3MsXG4gICAgICAgICAgICAgIFByb3BlcnRpZXM6IHBhbmVsUHJvcGVydGllcyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICB7dGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQgJiYgKFxuICAgICAgICAgIDxJbnB1dENvbnRhaW5lciBsYWJlbD17dGVhY2hlckluc3RydWN0aW9ucy5sYWJlbH0gY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn0+XG4gICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwudGVhY2hlckluc3RydWN0aW9ucyB8fCAnJ31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZH1cbiAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgZXJyb3I9e3RlYWNoZXJJbnN0cnVjdGlvbnNFcnJvcn1cbiAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICBwbHVnaW5Qcm9wcz17Z2V0UGx1Z2luUHJvcHModGVhY2hlckluc3RydWN0aW9ucz8uaW5wdXRDb25maWd1cmF0aW9uKX1cbiAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgIG1heEltYWdlV2lkdGg9eyhtYXhJbWFnZVdpZHRoICYmIG1heEltYWdlV2lkdGgudGVhY2hlckluc3RydWN0aW9ucykgfHwgZGVmYXVsdEltYWdlTWF4V2lkdGh9XG4gICAgICAgICAgICAgIG1heEltYWdlSGVpZ2h0PXsobWF4SW1hZ2VIZWlnaHQgJiYgbWF4SW1hZ2VIZWlnaHQudGVhY2hlckluc3RydWN0aW9ucykgfHwgZGVmYXVsdEltYWdlTWF4SGVpZ2h0fVxuICAgICAgICAgICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ9e3VwbG9hZFNvdW5kU3VwcG9ydH1cbiAgICAgICAgICAgICAgbGFuZ3VhZ2VDaGFyYWN0ZXJzUHJvcHM9e1t7IGxhbmd1YWdlOiAnc3BhbmlzaCcgfSwgeyBsYW5ndWFnZTogJ3NwZWNpYWwnIH1dfVxuICAgICAgICAgICAgICBtYXRoTWxPcHRpb25zPXttYXRoTWxPcHRpb25zfVxuICAgICAgICAgICAgICBhdXRvV2lkdGhUb29sYmFyXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge3RlYWNoZXJJbnN0cnVjdGlvbnNFcnJvciAmJiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5lcnJvclRleHR9Pnt0ZWFjaGVySW5zdHJ1Y3Rpb25zRXJyb3J9PC9kaXY+fVxuICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICl9XG5cbiAgICAgICAge3Byb21wdEVuYWJsZWQgJiYgKFxuICAgICAgICAgIDxJbnB1dENvbnRhaW5lciBsYWJlbD17cHJvbXB0LmxhYmVsfSBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfT5cbiAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgbWFya3VwPXttb2RlbC5wcm9tcHR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgZGlzYWJsZVVuZGVybGluZVxuICAgICAgICAgICAgICBlcnJvcj17cHJvbXB0RXJyb3J9XG4gICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgcGx1Z2luUHJvcHM9e2dldFBsdWdpblByb3BzKHByb21wdD8uaW5wdXRDb25maWd1cmF0aW9uKX1cbiAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgIG1heEltYWdlV2lkdGg9e2RlZmF1bHRJbWFnZU1heFdpZHRofVxuICAgICAgICAgICAgICBtYXhJbWFnZUhlaWdodD17ZGVmYXVsdEltYWdlTWF4SGVpZ2h0fVxuICAgICAgICAgICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ9e3VwbG9hZFNvdW5kU3VwcG9ydH1cbiAgICAgICAgICAgICAgbGFuZ3VhZ2VDaGFyYWN0ZXJzUHJvcHM9e1t7IGxhbmd1YWdlOiAnc3BhbmlzaCcgfSwgeyBsYW5ndWFnZTogJ3NwZWNpYWwnIH1dfVxuICAgICAgICAgICAgICBtYXRoTWxPcHRpb25zPXttYXRoTWxPcHRpb25zfVxuICAgICAgICAgICAgICBhdXRvV2lkdGhUb29sYmFyXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge3Byb21wdEVycm9yICYmIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+e3Byb21wdEVycm9yfTwvZGl2Pn1cbiAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICApfVxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmZsZXhDb250YWluZXJ9PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IGNsYXNzTmFtZT17Y2xhc3Nlcy50ZXh0fSBjb21wb25lbnQ9XCJkaXZcIj5cbiAgICAgICAgICAgIERlZmluZSBUZW1wbGF0ZSwgQ2hvaWNlcywgYW5kIENvcnJlY3QgUmVzcG9uc2VzXG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICBjbGFzc2VzPXt7IHRvb2x0aXA6IGNsYXNzZXMudG9vbHRpcCB9fVxuICAgICAgICAgICAgZGlzYWJsZUZvY3VzTGlzdGVuZXJcbiAgICAgICAgICAgIGRpc2FibGVUb3VjaExpc3RlbmVyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9eydyaWdodCd9XG4gICAgICAgICAgICB0aXRsZT17dmFsaWRhdGlvbk1lc3NhZ2V9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEluZm8gZm9udFNpemU9eydzbWFsbCd9IGNvbG9yPXsncHJpbWFyeSd9IHN0eWxlPXt7IG1hcmdpbkxlZnQ6ICc4cHgnIH19IC8+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgYWN0aXZlUGx1Z2lucz17QUxMX1BMVUdJTlN9XG4gICAgICAgICAgdG9vbGJhck9wdHM9e3sgcG9zaXRpb246ICd0b3AnIH19XG4gICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgcGx1Z2luUHJvcHM9e2dldFBsdWdpblByb3BzKHRlbXBsYXRlPy5pbnB1dENvbmZpZ3VyYXRpb24pfVxuICAgICAgICAgIHJlc3BvbnNlQXJlYVByb3BzPXt7XG4gICAgICAgICAgICB0eXBlOiAnZXhwbGljaXQtY29uc3RydWN0ZWQtcmVzcG9uc2UnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBkdXBsaWNhdGVzOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1heFJlc3BvbnNlQXJlYXM6IG1heFJlc3BvbnNlQXJlYXMsXG4gICAgICAgICAgICByZXNwQXJlYVRvb2xiYXI6IChub2RlLCBlZGl0b3IsIG9uVG9vbGJhckRvbmUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBtb2RlbCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZSA9IChtb2RlbC5jaG9pY2VzW25vZGUuYXR0cnMuaW5kZXhdIHx8IFtdKVswXTtcbiAgICAgICAgICAgICAgcmV0dXJuICgpID0+IChcbiAgICAgICAgICAgICAgICA8RUNSVG9vbGJhclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2VSZXNwb25zZT17KG5ld1ZhbCkgPT4gdGhpcy5vbkNoYW5nZVJlc3BvbnNlKG5vZGUuYXR0cnMuaW5kZXgsIG5ld1ZhbCl9XG4gICAgICAgICAgICAgICAgICBub2RlPXtub2RlfVxuICAgICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgICBvblRvb2xiYXJEb25lPXtvblRvb2xiYXJEb25lfVxuICAgICAgICAgICAgICAgICAgY29ycmVjdENob2ljZT17Y29ycmVjdENob2ljZX1cbiAgICAgICAgICAgICAgICAgIG1heExlbmd0aFBlckNob2ljZUVuYWJsZWQ9e21heExlbmd0aFBlckNob2ljZUVuYWJsZWR9XG4gICAgICAgICAgICAgICAgICBwbHVnaW5Qcm9wcz17Z2V0UGx1Z2luUHJvcHMocmVzcG9uc2VBcmVhSW5wdXRDb25maWd1cmF0aW9uPy5pbnB1dENvbmZpZ3VyYXRpb24pfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IGNob2ljZXNFcnJvcnMsXG4gICAgICAgICAgICBvbkhhbmRsZUFyZWFDaGFuZ2U6IHRoaXMub25IYW5kbGVBcmVhQ2hhbmdlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmt1cH1cbiAgICAgICAgICBtYXJrdXA9e21vZGVsLnNsYXRlTWFya3VwfVxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfVxuICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgIGRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnM9e3RydWV9XG4gICAgICAgICAgb25CbHVyPXt0aGlzLm9uQmx1cn1cbiAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgaGlnaGxpZ2h0U2hhcGU9e2ZhbHNlfVxuICAgICAgICAgIGVycm9yPXtyZXNwb25zZUFyZWFzRXJyb3J9XG4gICAgICAgICAgdXBsb2FkU291bmRTdXBwb3J0PXt1cGxvYWRTb3VuZFN1cHBvcnR9XG4gICAgICAgICAgbGFuZ3VhZ2VDaGFyYWN0ZXJzUHJvcHM9e1t7IGxhbmd1YWdlOiAnc3BhbmlzaCcgfSwgeyBsYW5ndWFnZTogJ3NwZWNpYWwnIH1dfVxuICAgICAgICAgIG1hdGhNbE9wdGlvbnM9e21hdGhNbE9wdGlvbnN9XG4gICAgICAgICAgYXV0b1dpZHRoVG9vbGJhclxuICAgICAgICAvPlxuICAgICAgICB7cmVzcG9uc2VBcmVhc0Vycm9yICYmIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+e3Jlc3BvbnNlQXJlYXNFcnJvcn08L2Rpdj59XG5cbiAgICAgICAgeyFpc0VtcHR5KG1vZGVsLmNob2ljZXMpICYmIChcbiAgICAgICAgICA8VHlwb2dyYXBoeSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcy50ZXh0LCBjbGFzc2VzLnJlc3BvbnNlSGVhZGVyKX0+XG4gICAgICAgICAgICB7YERlZmluZSBBbHRlcm5hdGVzICR7bWF4TGVuZ3RoUGVyQ2hvaWNlRW5hYmxlZCA/ICdhbmQgQ2hhcmFjdGVyIExpbWl0cycgOiAnJ31gfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgKX1cbiAgICAgICAgPEFsdGVybmF0ZVJlc3BvbnNlc1xuICAgICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblJlc3BvbnNlc0NoYW5nZWR9XG4gICAgICAgICAgb25MZW5ndGhDaGFuZ2U9e3RoaXMub25MZW5ndGhDaGFuZ2VkfVxuICAgICAgICAgIG1heExlbmd0aFBlckNob2ljZUVuYWJsZWQ9e21heExlbmd0aFBlckNob2ljZUVuYWJsZWR9XG4gICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgY2hvaWNlc0Vycm9ycz17Y2hvaWNlc0Vycm9yc31cbiAgICAgICAgICBwbHVnaW5Qcm9wcz17Z2V0UGx1Z2luUHJvcHMocmVzcG9uc2VBcmVhSW5wdXRDb25maWd1cmF0aW9uPy5pbnB1dENvbmZpZ3VyYXRpb24pfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYXRpb25hbGVFbmFibGVkICYmIChcbiAgICAgICAgICA8SW5wdXRDb250YWluZXIgbGFiZWw9e3JhdGlvbmFsZS5sYWJlbH0gY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn0+XG4gICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwucmF0aW9uYWxlIHx8ICcnfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblJhdGlvbmFsZUNoYW5nZWR9XG4gICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICBlcnJvcj17cmF0aW9uYWxlRXJyb3J9XG4gICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgcGx1Z2luUHJvcHM9e2dldFBsdWdpblByb3BzKHJhdGlvbmFsZT8uaW5wdXRDb25maWd1cmF0aW9uKX1cbiAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgIG1heEltYWdlV2lkdGg9eyhtYXhJbWFnZVdpZHRoICYmIG1heEltYWdlV2lkdGgucmF0aW9uYWxlKSB8fCBkZWZhdWx0SW1hZ2VNYXhXaWR0aH1cbiAgICAgICAgICAgICAgbWF4SW1hZ2VIZWlnaHQ9eyhtYXhJbWFnZUhlaWdodCAmJiBtYXhJbWFnZUhlaWdodC5yYXRpb25hbGUpIHx8IGRlZmF1bHRJbWFnZU1heEhlaWdodH1cbiAgICAgICAgICAgICAgdXBsb2FkU291bmRTdXBwb3J0PXt1cGxvYWRTb3VuZFN1cHBvcnR9XG4gICAgICAgICAgICAgIGxhbmd1YWdlQ2hhcmFjdGVyc1Byb3BzPXtbeyBsYW5ndWFnZTogJ3NwYW5pc2gnIH0sIHsgbGFuZ3VhZ2U6ICdzcGVjaWFsJyB9XX1cbiAgICAgICAgICAgICAgbWF0aE1sT3B0aW9ucz17bWF0aE1sT3B0aW9uc31cbiAgICAgICAgICAgICAgYXV0b1dpZHRoVG9vbGJhclxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHtyYXRpb25hbGVFcnJvciAmJiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5lcnJvclRleHR9PntyYXRpb25hbGVFcnJvcn08L2Rpdj59XG4gICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgKX1cbiAgICAgIDwvbGF5b3V0LkNvbmZpZ0xheW91dD5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZCA9IHdpdGhTdHlsZXMoc3R5bGVzKShNYWluKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkO1xuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","dropdown","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","markup","minHeight","choiceConfiguration","paddingBottom","switchElement","justifyContent","margin","addButton","text","fontSize","typography","tooltip","whiteSpace","maxWidth","errorText","color","palette","error","main","flexContainer","display","alignItems","responseHeader","marginTop","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Main","newVal","props","onModelChanged","model","prompt","rationale","teacherInstructions","slateMarkup","choices","maxLengthPerChoice","index","newValLength","length","label","value","nbOfMissingChoices","Array","fill","splice","domMarkup","allRespAreas","querySelectorAll","allChoices","updatedMaxLengthPerChoice","forEach","el","newChoices","dataset","callback","setState","cachedChoices","undefined","nodes","state","newCachedChoices","node","keyForNode","data","get","Object","assign","hasOwnProperty","trailing","leading","undefinedLengths","values","choice","labelLengthsArr","map","Math","max","classes","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","maxResponseAreas","partialScoring","playerSpellCheck","template","settingsPanelDisabled","spellCheck","editSource","withRubric","mathMlOptions","language","languageChoices","spanishButton","responseAreaInputConfiguration","errors","extraCSSRules","maxLengthPerChoiceEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","choicesErrors","promptError","rationaleError","responseAreasError","responseAreas","teacherInstructionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","enabled","options","panelProperties","playerSpellCheckEnabled","rubricEnabled","getPluginProps","onModelChange","Settings","Properties","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","marginLeft","ALL_PLUGINS","type","duplicates","respAreaToolbar","onToolbarDone","correctChoice","onChangeResponse","onHandleAreaChange","onChange","onBlur","onResponsesChanged","onLengthChanged","onRationaleChanged","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ECRToolbar from './ecr-toolbar';\nimport AlternateResponses from './alternateResponses';\nimport { decodeHTML, getAdjustedLength } from './markupUtils';\nimport { generateValidationMessage } from './utils';\nimport classnames from 'classnames';\n\nconst { toggle, Panel, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n float: 'right',\n },\n text: {\n fontSize: theme.typography.fontSize + 2,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n responseHeader: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit,\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n state = {};\n\n componentDidMount() {\n const {\n model: { slateMarkup, choices, maxLengthPerChoice = [] },\n onModelChanged,\n } = this.props;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n this.setState({ markup: slateMarkup });\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = choice.map((choice) => decodeHTML(choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n onModelChanged({ ...this.props.model, maxLengthPerChoice });\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({ ...this.props.model, ...newVal });\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.props.onModelChanged({ ...this.props.model, slateMarkup });\n };\n\n onResponsesChanged = (choices) => {\n this.props.onModelChanged({ ...this.props.model, choices });\n };\n\n onLengthChanged = (maxLengthPerChoice) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, maxLengthPerChoice });\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { choices } = model;\n let { maxLengthPerChoice } = model;\n const newValLength = decodeHTML(newVal || '').length;\n\n if (!choices[index]) {\n choices[index] = [{ label: newVal || '', value: '0' }];\n\n // add default values for missing choices up to the new index position\n const nbOfMissingChoices = index > maxLengthPerChoice.length ? index - maxLengthPerChoice.length : 0;\n\n maxLengthPerChoice = [...maxLengthPerChoice, ...Array(nbOfMissingChoices).fill(1)];\n\n maxLengthPerChoice.splice(index, 0, getAdjustedLength(newValLength));\n } else {\n choices[index][0].label = newVal || '';\n\n if (\n maxLengthPerChoice &&\n (maxLengthPerChoice[index] < newValLength || maxLengthPerChoice[index] > newValLength + 10)\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(newValLength);\n }\n }\n\n onModelChanged({ ...model, choices, maxLengthPerChoice });\n };\n\n onChange = (markup) => {\n const {\n model: { choices, maxLengthPerChoice },\n onModelChanged,\n } = this.props;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"explicit_constructed_response\"]');\n\n const allChoices = {};\n const updatedMaxLengthPerChoice = [];\n\n allRespAreas.forEach((el, index) => {\n const newChoices = cloneDeep(choices[el.dataset.index]);\n\n if (newChoices) {\n newChoices[0] = {\n label: el.dataset.value || '',\n value: '0',\n };\n\n updatedMaxLengthPerChoice[index] = maxLengthPerChoice[el.dataset.index];\n }\n\n allChoices[index] = newChoices;\n el.dataset.index = index;\n });\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n choices: allChoices,\n slateMarkup: domMarkup.innerHTML,\n maxLengthPerChoice: updatedMaxLengthPerChoice,\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { choices },\n onModelChanged,\n } = this.props;\n const { cachedChoices } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = choices ? cloneDeep(choices) : {};\n const newCachedChoices = cachedChoices ? cloneDeep(cachedChoices) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.get('index');\n\n if (!newChoices[keyForNode] && newCachedChoices[keyForNode]) {\n Object.assign(newChoices, pick(newCachedChoices, keyForNode));\n\n if (newCachedChoices.hasOwnProperty(keyForNode)) {\n delete newCachedChoices[keyForNode];\n }\n } else {\n Object.assign(newCachedChoices, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, choices: newChoices });\n\n this.setState({ cachedChoices: newCachedChoices }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n render() {\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n maxLengthPerChoice = {},\n maxResponseAreas,\n partialScoring = {},\n playerSpellCheck = {},\n prompt = {},\n rationale = {},\n template = {},\n settingsPanelDisabled,\n spellCheck = {},\n editSource = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n spanishButton = {},\n responseAreaInputConfiguration = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n maxLengthPerChoiceEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const {\n choices: choicesErrors = {},\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n maxLengthPerChoiceEnabled: maxLengthPerChoice.settings && toggle(maxLengthPerChoice.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n 'responseAreaInputConfiguration.inputConfiguration.characters.disabled':\n spanishButton.settings && toggle(spanishButton.label, true),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckEnabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text} component=\"div\">\n Define Template, Choices, and Correct Responses\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '8px' }} />\n </Tooltip>\n </div>\n\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(template?.inputConfiguration)}\n responseAreaProps={{\n type: 'explicit-constructed-response',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { model } = this.props;\n const correctChoice = (model.choices[node.data.get('index')] || [])[0];\n return () => (\n <ECRToolbar\n onChangeResponse={(newVal) => this.onChangeResponse(node.data.get('index'), newVal)}\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n correctChoice={correctChoice}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration)}\n />\n );\n },\n error: () => choicesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n }}\n className={classes.markup}\n markup={model.slateMarkup}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n\n {!isEmpty(model.choices) && (\n <Typography className={classnames(classes.text, classes.responseHeader)}>\n {`Define Alternates ${maxLengthPerChoiceEnabled ? 'and Character Limits' : ''}`}\n </Typography>\n )}\n <AlternateResponses\n model={model}\n onChange={this.onResponsesChanged}\n onLengthChange={this.onLengthChanged}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n spellCheck={spellCheckEnabled}\n choicesErrors={choicesErrors}\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration)}\n />\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","dropdown","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","markup","minHeight","choiceConfiguration","paddingBottom","switchElement","justifyContent","margin","addButton","text","fontSize","typography","tooltip","whiteSpace","maxWidth","errorText","color","palette","error","main","flexContainer","display","alignItems","responseHeader","marginTop","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Main","newVal","props","onModelChanged","model","prompt","rationale","teacherInstructions","slateMarkup","choices","maxLengthPerChoice","index","newValLength","length","label","value","nbOfMissingChoices","Array","fill","splice","domMarkup","allRespAreas","querySelectorAll","allChoices","updatedMaxLengthPerChoice","forEach","el","newChoices","dataset","callback","setState","cachedChoices","undefined","nodes","state","newCachedChoices","node","keyForNode","data","get","Object","assign","hasOwnProperty","trailing","leading","undefinedLengths","values","choice","labelLengthsArr","map","Math","max","classes","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","maxResponseAreas","partialScoring","playerSpellCheck","template","settingsPanelDisabled","spellCheck","editSource","withRubric","mathMlOptions","language","languageChoices","spanishButton","responseAreaInputConfiguration","errors","extraCSSRules","maxLengthPerChoiceEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","choicesErrors","promptError","rationaleError","responseAreasError","responseAreas","teacherInstructionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","enabled","options","panelProperties","playerSpellCheckEnabled","rubricEnabled","getPluginProps","onModelChange","Settings","Properties","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","marginLeft","ALL_PLUGINS","type","duplicates","respAreaToolbar","editor","onToolbarDone","correctChoice","attrs","onChangeResponse","onHandleAreaChange","onChange","onBlur","onResponsesChanged","onLengthChanged","onRationaleChanged","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ECRToolbar from './ecr-toolbar';\nimport AlternateResponses from './alternateResponses';\nimport { decodeHTML, getAdjustedLength } from './markupUtils';\nimport { generateValidationMessage } from './utils';\nimport classnames from 'classnames';\n\nconst { toggle, Panel, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n float: 'right',\n },\n text: {\n fontSize: theme.typography.fontSize + 2,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n responseHeader: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit,\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n state = {};\n\n componentDidMount() {\n const {\n model: { slateMarkup, choices, maxLengthPerChoice = [] },\n onModelChanged,\n } = this.props;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n this.setState({ markup: slateMarkup });\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = choice.map((choice) => decodeHTML(choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n onModelChanged({ ...this.props.model, maxLengthPerChoice });\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({ ...this.props.model, ...newVal });\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.props.onModelChanged({ ...this.props.model, slateMarkup });\n };\n\n onResponsesChanged = (choices) => {\n this.props.onModelChanged({ ...this.props.model, choices });\n };\n\n onLengthChanged = (maxLengthPerChoice) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, maxLengthPerChoice });\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { choices } = model;\n let { maxLengthPerChoice } = model;\n const newValLength = decodeHTML(newVal || '').length;\n\n if (!choices[index]) {\n choices[index] = [{ label: newVal || '', value: '0' }];\n\n // add default values for missing choices up to the new index position\n const nbOfMissingChoices = index > maxLengthPerChoice.length ? index - maxLengthPerChoice.length : 0;\n\n maxLengthPerChoice = [...maxLengthPerChoice, ...Array(nbOfMissingChoices).fill(1)];\n\n maxLengthPerChoice.splice(index, 0, getAdjustedLength(newValLength));\n } else {\n choices[index][0].label = newVal || '';\n\n if (\n maxLengthPerChoice &&\n (maxLengthPerChoice[index] < newValLength || maxLengthPerChoice[index] > newValLength + 10)\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(newValLength);\n }\n }\n\n onModelChanged({ ...model, choices, maxLengthPerChoice });\n };\n\n onChange = (markup) => {\n const {\n model: { choices, maxLengthPerChoice },\n onModelChanged,\n } = this.props;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"explicit_constructed_response\"]');\n\n const allChoices = {};\n const updatedMaxLengthPerChoice = [];\n\n allRespAreas.forEach((el, index) => {\n const newChoices = cloneDeep(choices[el.dataset.index]);\n\n if (newChoices) {\n newChoices[0] = {\n label: el.dataset.value || '',\n value: '0',\n };\n\n updatedMaxLengthPerChoice[index] = maxLengthPerChoice[el.dataset.index];\n }\n\n allChoices[index] = newChoices;\n el.dataset.index = index;\n });\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n choices: allChoices,\n slateMarkup: domMarkup.innerHTML,\n maxLengthPerChoice: updatedMaxLengthPerChoice,\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { choices },\n onModelChanged,\n } = this.props;\n const { cachedChoices } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = choices ? cloneDeep(choices) : {};\n const newCachedChoices = cachedChoices ? cloneDeep(cachedChoices) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.get('index');\n\n if (!newChoices[keyForNode] && newCachedChoices[keyForNode]) {\n Object.assign(newChoices, pick(newCachedChoices, keyForNode));\n\n if (newCachedChoices.hasOwnProperty(keyForNode)) {\n delete newCachedChoices[keyForNode];\n }\n } else {\n Object.assign(newCachedChoices, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, choices: newChoices });\n\n this.setState({ cachedChoices: newCachedChoices }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n render() {\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n maxLengthPerChoice = {},\n maxResponseAreas,\n partialScoring = {},\n playerSpellCheck = {},\n prompt = {},\n rationale = {},\n template = {},\n settingsPanelDisabled,\n spellCheck = {},\n editSource = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n spanishButton = {},\n responseAreaInputConfiguration = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n maxLengthPerChoiceEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const {\n choices: choicesErrors = {},\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n maxLengthPerChoiceEnabled: maxLengthPerChoice.settings && toggle(maxLengthPerChoice.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n 'responseAreaInputConfiguration.inputConfiguration.characters.disabled':\n spanishButton.settings && toggle(spanishButton.label, true),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckEnabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text} component=\"div\">\n Define Template, Choices, and Correct Responses\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '8px' }} />\n </Tooltip>\n </div>\n\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(template?.inputConfiguration)}\n responseAreaProps={{\n type: 'explicit-constructed-response',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, editor, onToolbarDone) => {\n const { model } = this.props;\n const correctChoice = (model.choices[node.attrs.index] || [])[0];\n return () => (\n <ECRToolbar\n onChangeResponse={(newVal) => this.onChangeResponse(node.attrs.index, newVal)}\n node={node}\n editor={editor}\n onToolbarDone={onToolbarDone}\n correctChoice={correctChoice}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration)}\n />\n );\n },\n error: () => choicesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n }}\n className={classes.markup}\n markup={model.slateMarkup}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n\n {!isEmpty(model.choices) && (\n <Typography className={classnames(classes.text, classes.responseHeader)}>\n {`Define Alternates ${maxLengthPerChoiceEnabled ? 'and Character Limits' : ''}`}\n </Typography>\n )}\n <AlternateResponses\n model={model}\n onChange={this.onResponsesChanged}\n onLengthChange={this.onLengthChanged}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n spellCheck={spellCheckEnabled}\n choicesErrors={choicesErrors}\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration)}\n />\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
|
@@ -91,4 +91,4 @@ var decodeHTML = function decodeHTML(html) {
|
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
exports.decodeHTML = decodeHTML;
|
|
94
|
-
//# sourceMappingURL=
|
|
94
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXJrdXBVdGlscy5qcyJdLCJuYW1lcyI6WyJ0U3ltYm9scyIsIm5TeW1ib2xzIiwibWF0Y2hUYWJBbmROZXdMaW5lIiwiUmVnRXhwIiwicmVtb3ZlVW53YW50ZWRDaGFyYWN0ZXJzIiwibWFya3VwIiwicmVwbGFjZSIsImNyZWF0ZUVsZW1lbnRGcm9tSFRNTCIsImh0bWxTdHJpbmciLCJkaXYiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJ0cmltIiwicHJvY2Vzc01hcmt1cCIsIm5ld01hcmt1cCIsInNsYXRlTWFya3VwIiwiaW5kZXgiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInMiLCJyZXBsYWNlV2l0aCIsIlJFR0VYIiwiY3JlYXRlU2xhdGVNYXJrdXAiLCJjaG9pY2VzIiwibWF0Y2giLCJnIiwibGFiZWwiLCJnZXRBZGp1c3RlZExlbmd0aCIsImxlbmd0aCIsInN0cmlwSHRtbFRhZ3MiLCJkZWNvZGVIVE1MIiwiaHRtbCIsImRvYyIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsImJvZHkiLCJ0ZXh0Q29udGVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7QUFDQSxJQUFNQSxRQUFRLEdBQUcsK0JBQWpCLEMsQ0FDQTs7QUFDQSxJQUFNQyxRQUFRLEdBQUcsc0NBQWpCLEMsQ0FDQTs7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxJQUFJQyxNQUFKLGtCQUNmSCxRQURlLHVCQUNNQyxRQUROLHlCQUM2QkQsUUFEN0IseUJBQ29EQyxRQURwRCxTQUV6QixHQUZ5QixDQUEzQjs7QUFLTyxJQUFNRyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQTJCLENBQUNDLE1BQUQ7QUFBQSxTQUN0Q0EsTUFBTSxDQUFDQyxPQUFQLENBQWVKLGtCQUFmLEVBQW1DLEVBQW5DLEVBQXVDSSxPQUF2QyxDQUErQyxNQUEvQyxFQUF1RCxHQUF2RCxFQUE0REEsT0FBNUQsQ0FBb0UsT0FBcEUsRUFBNkUsR0FBN0UsQ0FEc0M7QUFBQSxDQUFqQzs7OztBQUdQLElBQU1DLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBd0IsR0FBcUI7QUFBQSxNQUFwQkMsVUFBb0IsdUVBQVAsRUFBTztBQUNqRCxNQUFNQyxHQUFHLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFaO0FBRUFGLEVBQUFBLEdBQUcsQ0FBQ0csU0FBSixHQUFnQkosVUFBVSxDQUFDSyxJQUFYLEVBQWhCO0FBRUEsU0FBT0osR0FBUDtBQUNELENBTkQ7O0FBUU8sSUFBTUssYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFDVCxNQUFELEVBQVk7QUFDdkMsTUFBTVUsU0FBUyxHQUFHWCx3QkFBd0IsQ0FBQ0MsTUFBTSxJQUFJLEVBQVgsQ0FBMUM7QUFDQSxNQUFNVyxXQUFXLEdBQUdULHFCQUFxQixDQUFDUSxTQUFTLElBQUksRUFBZCxDQUF6QztBQUNBLE1BQUlFLEtBQUssR0FBRyxDQUFaO0FBRUFELEVBQUFBLFdBQVcsQ0FBQ0UsZ0JBQVosQ0FBNkIsNkNBQTdCLEVBQTRFQyxPQUE1RSxDQUFvRixVQUFDQyxDQUFELEVBQU87QUFDekZBLElBQUFBLENBQUMsQ0FBQ0MsV0FBRixhQUFtQkosS0FBSyxFQUF4QjtBQUNELEdBRkQ7QUFJQSxTQUFPRCxXQUFXLENBQUNKLFNBQW5CO0FBQ0QsQ0FWTTs7O0FBWVAsSUFBTVUsS0FBSyxHQUFHLGdCQUFkOztBQUVPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsQ0FBQ2xCLE1BQUQsRUFBU21CLE9BQVQsRUFBcUI7QUFDcEQsTUFBSSxDQUFDbkIsTUFBTCxFQUFhO0FBQ1gsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsTUFBTVUsU0FBUyxHQUFHWCx3QkFBd0IsQ0FBQ0MsTUFBRCxDQUExQztBQUVBLFNBQU9VLFNBQVMsQ0FBQ1QsT0FBVixDQUFrQmdCLEtBQWxCLEVBQXlCLFVBQUNHLEtBQUQsRUFBUUMsQ0FBUixFQUFjO0FBQzVDLFFBQU1DLEtBQUssR0FBR0gsT0FBTyxDQUFDRSxDQUFELENBQVAsQ0FBVyxDQUFYLEVBQWNDLEtBQWQsSUFBdUIsRUFBckM7QUFFQSxvRkFBc0VELENBQXRFLDZCQUF3Rix3QkFBT0MsS0FBUCxDQUF4RjtBQUNELEdBSk0sQ0FBUDtBQUtELENBWk0sQyxDQWNQOzs7OztBQUNPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsQ0FBQ0MsTUFBRCxFQUFZO0FBQzNDLE1BQUlBLE1BQU0sSUFBSSxDQUFkLEVBQWlCO0FBQ2YsV0FBT0EsTUFBTSxHQUFHLENBQWhCO0FBQ0Q7O0FBRUQsTUFBSUEsTUFBTSxJQUFJLENBQWQsRUFBaUI7QUFDZixXQUFPQSxNQUFNLEdBQUcsQ0FBaEI7QUFDRDs7QUFFRCxNQUFJQSxNQUFNLElBQUksQ0FBZCxFQUFpQjtBQUNmLFdBQU9BLE1BQU0sR0FBRyxDQUFoQjtBQUNEOztBQUVELFNBQU9BLE1BQU0sR0FBRyxDQUFoQjtBQUNELENBZE07Ozs7QUFnQkEsSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFDekIsTUFBRCxFQUFZO0FBQ3ZDLE1BQUksT0FBT0EsTUFBUCxLQUFrQixRQUF0QixFQUFnQztBQUM5QixXQUFPLEVBQVA7QUFDRDs7QUFDRCxTQUFPQSxNQUFNLENBQUNDLE9BQVAsQ0FBZSxpQkFBZixFQUFrQyxFQUFsQyxDQUFQO0FBQ0QsQ0FMTTs7OztBQU9BLElBQU15QixVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDQyxJQUFELEVBQVU7QUFDbEMsTUFBTUMsR0FBRyxHQUFHLElBQUlDLFNBQUosR0FBZ0JDLGVBQWhCLENBQWdDSCxJQUFoQyxFQUFzQyxXQUF0QyxDQUFaO0FBQ0EsU0FBT0MsR0FBRyxDQUFDRyxJQUFKLENBQVNDLFdBQVQsSUFBd0IsRUFBL0I7QUFDRCxDQUhNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVzY2FwZSBmcm9tICdsb2Rhc2gvZXNjYXBlJztcblxuLy8gZG8gbm90IHJlbW92ZSBcXHQgZnJvbSBcXHRpbWVzLCBcXHRyaWFuZ2xlLCBcXHRhbiwgXFx0aGV0YSBvciBcXHRoZXJlZm9yZVxuY29uc3QgdFN5bWJvbHMgPSAnaW1lc3xyaWFuZ2xlfGFufGhldGF8aGVyZWZvcmUnO1xuLy8gZG8gbm90IHJlbW92ZSBcXG4gZnJvbSBcXG50aHJvb3QsIFxcbnBhcmFsbGVsLCBcXG5jb25nLCBcXG5hcHByb3gsIFxcbmVxLCBcXG5lIG9yIFxcbnNpbVxuY29uc3QgblN5bWJvbHMgPSAndGhyb290fHBhcmFsbGVsfGNvbmd8YXBwcm94fGVxfGV8c2ltJztcbi8vIG1hdGNoIGFsbCBcXHQgYW5kIFxcbiB0aGF0IGFyZSBub3QgcGFydCBvZiBtYXRoIHN5bWJvbHMgdGhhdCBzdGFydHMgd2l0aCBcXHQgb3IgXFxuXG5jb25zdCBtYXRjaFRhYkFuZE5ld0xpbmUgPSBuZXcgUmVnRXhwKFxuICBgKFxcXFx0KD8hJHt0U3ltYm9sc30pKXwoXFxcXG4oPyEke25TeW1ib2xzfSkpfChcXFxcXFxcXHQoPyEke3RTeW1ib2xzfSkpfChcXFxcXFxcXG4oPyEke25TeW1ib2xzfSkpYCxcbiAgJ2cnLFxuKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVVud2FudGVkQ2hhcmFjdGVycyA9IChtYXJrdXApID0+XG4gIG1hcmt1cC5yZXBsYWNlKG1hdGNoVGFiQW5kTmV3TGluZSwgJycpLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKS5yZXBsYWNlKC9cXFxcXFwvL2csICcvJyk7XG5cbmNvbnN0IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCA9IChodG1sU3RyaW5nID0gJycpID0+IHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgZGl2LmlubmVySFRNTCA9IGh0bWxTdHJpbmcudHJpbSgpO1xuXG4gIHJldHVybiBkaXY7XG59O1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc01hcmt1cCA9IChtYXJrdXApID0+IHtcbiAgY29uc3QgbmV3TWFya3VwID0gcmVtb3ZlVW53YW50ZWRDaGFyYWN0ZXJzKG1hcmt1cCB8fCAnJyk7XG4gIGNvbnN0IHNsYXRlTWFya3VwID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKG5ld01hcmt1cCB8fCAnJyk7XG4gIGxldCBpbmRleCA9IDA7XG5cbiAgc2xhdGVNYXJrdXAucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdHlwZT1cImV4cGxpY2l0X2NvbnN0cnVjdGVkX3Jlc3BvbnNlXCJdJykuZm9yRWFjaCgocykgPT4ge1xuICAgIHMucmVwbGFjZVdpdGgoYHt7JHtpbmRleCsrfX19YCk7XG4gIH0pO1xuXG4gIHJldHVybiBzbGF0ZU1hcmt1cC5pbm5lckhUTUw7XG59O1xuXG5jb25zdCBSRUdFWCA9IC9cXHtcXHsoXFxkKylcXH1cXH0vZztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNsYXRlTWFya3VwID0gKG1hcmt1cCwgY2hvaWNlcykgPT4ge1xuICBpZiAoIW1hcmt1cCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IG5ld01hcmt1cCA9IHJlbW92ZVVud2FudGVkQ2hhcmFjdGVycyhtYXJrdXApO1xuXG4gIHJldHVybiBuZXdNYXJrdXAucmVwbGFjZShSRUdFWCwgKG1hdGNoLCBnKSA9PiB7XG4gICAgY29uc3QgbGFiZWwgPSBjaG9pY2VzW2ddWzBdLmxhYmVsIHx8ICcnO1xuXG4gICAgcmV0dXJuIGA8c3BhbiBkYXRhLXR5cGU9XCJleHBsaWNpdF9jb25zdHJ1Y3RlZF9yZXNwb25zZVwiIGRhdGEtaW5kZXg9XCIke2d9XCIgZGF0YS12YWx1ZT1cIiR7ZXNjYXBlKGxhYmVsKX1cIj48L3NwYW4+YDtcbiAgfSk7XG59O1xuXG4vLyBhbHNvIHVzZWQgaW4gY29udHJvbGxlci9zcmMvaW5kZXguanNcbmV4cG9ydCBjb25zdCBnZXRBZGp1c3RlZExlbmd0aCA9IChsZW5ndGgpID0+IHtcbiAgaWYgKGxlbmd0aCA8PSAyKSB7XG4gICAgcmV0dXJuIGxlbmd0aCArIDI7XG4gIH1cblxuICBpZiAobGVuZ3RoIDw9IDQpIHtcbiAgICByZXR1cm4gbGVuZ3RoICsgMztcbiAgfVxuXG4gIGlmIChsZW5ndGggPD0gNikge1xuICAgIHJldHVybiBsZW5ndGggKyA0O1xuICB9XG5cbiAgcmV0dXJuIGxlbmd0aCArIDU7XG59O1xuXG5leHBvcnQgY29uc3Qgc3RyaXBIdG1sVGFncyA9IChtYXJrdXApID0+IHtcbiAgaWYgKHR5cGVvZiBtYXJrdXAgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBtYXJrdXAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csIFwiXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29kZUhUTUwgPSAoaHRtbCkgPT4ge1xuICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGh0bWwsICd0ZXh0L2h0bWwnKTtcbiAgcmV0dXJuIGRvYy5ib2R5LnRleHRDb250ZW50IHx8ICcnO1xufTsiXX0=
|
package/configure/lib/utils.js
CHANGED
|
@@ -12,4 +12,4 @@ var generateValidationMessage = function generateValidationMessage(config) {
|
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
exports.generateValidationMessage = generateValidationMessage;
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZVZhbGlkYXRpb25NZXNzYWdlIiwiY29uZmlnIiwibWF4UmVzcG9uc2VBcmVhcyIsInJlc3BvbnNlQXJlYXNNZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU8sSUFBTUEseUJBQXlCLEdBQUcsU0FBNUJBLHlCQUE0QixDQUFDQyxNQUFELEVBQVk7QUFDbkQsTUFBUUMsZ0JBQVIsR0FBNkJELE1BQTdCLENBQVFDLGdCQUFSO0FBRUEsTUFBTUMsb0JBQW9CLEdBQ3hCLDJDQUNBLDZEQURBLEdBRUEsK0JBRkEsSUFHQ0QsZ0JBQWdCLHlCQUFrQkEsZ0JBQWxCLFNBQXdDLEVBSHpELElBSUEsZUFKQSxJQUtDQSxnQkFBZ0IsR0FBRyxHQUFILEdBQVMsRUFMMUIsSUFNQSxXQVBGO0FBU0EsU0FBTyw2QkFBNkJDLG9CQUFwQztBQUNELENBYk0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZ2VuZXJhdGVWYWxpZGF0aW9uTWVzc2FnZSA9IChjb25maWcpID0+IHtcbiAgY29uc3QgeyBtYXhSZXNwb25zZUFyZWFzIH0gPSBjb25maWc7XG5cbiAgY29uc3QgcmVzcG9uc2VBcmVhc01lc3NhZ2UgPVxuICAgICdcXG5Db3JyZWN0IGFuc3dlcnMgc2hvdWxkIG5vdCBiZSBibGFuay4nICtcbiAgICAnXFxuRWFjaCBhbnN3ZXIgZGVmaW5lZCBmb3IgYSByZXNwb25zZSBhcmVhIHNob3VsZCBiZSB1bmlxdWUuJyArXG4gICAgJ1xcblRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCAxICcgK1xuICAgIChtYXhSZXNwb25zZUFyZWFzID8gYGFuZCBhdCBtb3N0ICR7bWF4UmVzcG9uc2VBcmVhc30gYCA6ICcnKSArXG4gICAgJ3Jlc3BvbnNlIGFyZWEnICtcbiAgICAobWF4UmVzcG9uc2VBcmVhcyA/ICdzJyA6ICcnKSArXG4gICAgJyBkZWZpbmVkLic7XG5cbiAgcmV0dXJuICdWYWxpZGF0aW9uIHJlcXVpcmVtZW50czonICsgcmVzcG9uc2VBcmVhc01lc3NhZ2U7XG59O1xuIl19
|
package/configure/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/explicit-constructed-response-configure",
|
|
3
|
-
"version": "8.3.
|
|
3
|
+
"version": "8.3.2",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"modue": "src/index.js",
|
|
@@ -8,13 +8,14 @@
|
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@material-ui/icons": "^3.0.1",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
11
|
-
"@pie-lib/config-ui": "
|
|
12
|
-
"@pie-lib/editable-html": "^
|
|
11
|
+
"@pie-lib/config-ui": "11.30.1-beta-2",
|
|
12
|
+
"@pie-lib/editable-html-tip-tap": "^1.0.4",
|
|
13
|
+
"@pie-lib/math-toolbar": "1.31.2-beta.1",
|
|
13
14
|
"classnames": "^2.2.6",
|
|
14
15
|
"debug": "^3.1.0",
|
|
15
16
|
"lodash": "^4.17.15",
|
|
16
17
|
"prop-types": "^15.6.2",
|
|
17
|
-
"react": "
|
|
18
|
-
"react-dom": "
|
|
18
|
+
"react": "18.2.0",
|
|
19
|
+
"react-dom": "18.2.0"
|
|
19
20
|
}
|
|
20
21
|
}
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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
|
+
## [6.3.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-controller@6.3.1...@pie-element/explicit-constructed-response-controller@6.3.2) (2025-10-22)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* bump libs PD-5265 ([184a978](https://github.com/pie-framework/pie-elements/commit/184a978f57a2a84dc6ba87c1eba0b92d5cdd9eae))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [6.3.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-controller@6.2.0...@pie-element/explicit-constructed-response-controller@6.3.1) (2025-10-16)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
|
|
9
|
+
var _index = require("../index");
|
|
10
|
+
|
|
11
|
+
var choice = function choice(l, v) {
|
|
12
|
+
return {
|
|
13
|
+
label: l,
|
|
14
|
+
value: v
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
var d = {
|
|
19
|
+
prompt: '',
|
|
20
|
+
teacherInstructions: true,
|
|
21
|
+
studentInstructions: false,
|
|
22
|
+
choices: {
|
|
23
|
+
0: [choice('A', '0'), choice('B', '1')]
|
|
24
|
+
},
|
|
25
|
+
markup: '<p>\n <strong>Esta cuadrícula de coordenadas representa el diseño del salón de matemáticas de Valerie. Cada unidad en la cuadricula representa 1 pie cuadrado. </strong>\n</p>\n<p>\n <strong>* El escritorio de Valeria se encuentra en (-3,-4)</strong>\n</p>\n<p>\n <strong>* El escritorio de la maestra se encuentra en (5,-4)</strong>\n</p>\n<p>\n <strong>* El cuarto de materiales se encuentra en (-3,-7)</strong>\n</p>\n<p>\n <strong><img src="https://storage.googleapis.com/pie-staging-221718-assets/image/180d28b2-0376-428e-b415-de96e158b7e7" alt=""></strong>\n</p>\n<p>\n \n</p>\n<p>\n <strong>Anota la distancia, en pies, desde el escritorio de Valerie al cuarto de materiales.</strong>\n</p>\n<p>\n {{0}} <strong>pies</strong>\n</p>',
|
|
26
|
+
id: '2422330',
|
|
27
|
+
rubric: '',
|
|
28
|
+
element: 'explicit-constructed-response-element',
|
|
29
|
+
autoScoring: 'partial',
|
|
30
|
+
rationale: ''
|
|
31
|
+
};
|
|
32
|
+
describe('edge cases', function () {
|
|
33
|
+
it('does not throw an error if the session has no value', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
34
|
+
var result;
|
|
35
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
36
|
+
while (1) {
|
|
37
|
+
switch (_context.prev = _context.next) {
|
|
38
|
+
case 0:
|
|
39
|
+
result = (0, _index.model)(d, {}, {
|
|
40
|
+
mode: 'evaluate'
|
|
41
|
+
});
|
|
42
|
+
expect(result).toBeDefined();
|
|
43
|
+
|
|
44
|
+
case 2:
|
|
45
|
+
case "end":
|
|
46
|
+
return _context.stop();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, _callee);
|
|
50
|
+
})));
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXguc3BlYy5qcyJdLCJuYW1lcyI6WyJjaG9pY2UiLCJsIiwidiIsImxhYmVsIiwidmFsdWUiLCJkIiwicHJvbXB0IiwidGVhY2hlckluc3RydWN0aW9ucyIsInN0dWRlbnRJbnN0cnVjdGlvbnMiLCJjaG9pY2VzIiwibWFya3VwIiwiaWQiLCJydWJyaWMiLCJlbGVtZW50IiwiYXV0b1Njb3JpbmciLCJyYXRpb25hbGUiLCJkZXNjcmliZSIsIml0IiwicmVzdWx0IiwibW9kZSIsImV4cGVjdCIsInRvQmVEZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUVBLElBQU1BLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQUNDLENBQUQsRUFBSUMsQ0FBSjtBQUFBLFNBQVc7QUFBRUMsSUFBQUEsS0FBSyxFQUFFRixDQUFUO0FBQVlHLElBQUFBLEtBQUssRUFBRUY7QUFBbkIsR0FBWDtBQUFBLENBQWY7O0FBRUEsSUFBTUcsQ0FBQyxHQUFHO0FBQ1JDLEVBQUFBLE1BQU0sRUFBRSxFQURBO0FBRVJDLEVBQUFBLG1CQUFtQixFQUFFLElBRmI7QUFHUkMsRUFBQUEsbUJBQW1CLEVBQUUsS0FIYjtBQUlSQyxFQUFBQSxPQUFPLEVBQUU7QUFDUCxPQUFHLENBQUNULE1BQU0sQ0FBQyxHQUFELEVBQU0sR0FBTixDQUFQLEVBQW1CQSxNQUFNLENBQUMsR0FBRCxFQUFNLEdBQU4sQ0FBekI7QUFESSxHQUpEO0FBT1JVLEVBQUFBLE1BQU0sRUFDSiw0dkJBUk07QUFTUkMsRUFBQUEsRUFBRSxFQUFFLFNBVEk7QUFVUkMsRUFBQUEsTUFBTSxFQUFFLEVBVkE7QUFXUkMsRUFBQUEsT0FBTyxFQUFFLHVDQVhEO0FBWVJDLEVBQUFBLFdBQVcsRUFBRSxTQVpMO0FBYVJDLEVBQUFBLFNBQVMsRUFBRTtBQWJILENBQVY7QUFnQkFDLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUMzQkMsRUFBQUEsRUFBRSxDQUFDLHFEQUFELDZGQUF3RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDbERDLFlBQUFBLE1BRGtELEdBQ3pDLGtCQUFNYixDQUFOLEVBQVMsRUFBVCxFQUFhO0FBQUVjLGNBQUFBLElBQUksRUFBRTtBQUFSLGFBQWIsQ0FEeUM7QUFFeERDLFlBQUFBLE1BQU0sQ0FBQ0YsTUFBRCxDQUFOLENBQWVHLFdBQWY7O0FBRndEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQXhELEdBQUY7QUFJRCxDQUxPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RlbCB9IGZyb20gJy4uL2luZGV4JztcblxuY29uc3QgY2hvaWNlID0gKGwsIHYpID0+ICh7IGxhYmVsOiBsLCB2YWx1ZTogdiB9KTtcblxuY29uc3QgZCA9IHtcbiAgcHJvbXB0OiAnJyxcbiAgdGVhY2hlckluc3RydWN0aW9uczogdHJ1ZSxcbiAgc3R1ZGVudEluc3RydWN0aW9uczogZmFsc2UsXG4gIGNob2ljZXM6IHtcbiAgICAwOiBbY2hvaWNlKCdBJywgJzAnKSwgY2hvaWNlKCdCJywgJzEnKV0sXG4gIH0sXG4gIG1hcmt1cDpcbiAgICAnPHA+XFxuICA8c3Ryb25nPkVzdGEgY3VhZHLDrWN1bGEgZGUgY29vcmRlbmFkYXMgcmVwcmVzZW50YSBlbCBkaXNlw7FvIGRlbCBzYWzDs24gZGUgbWF0ZW3DoXRpY2FzIGRlIFZhbGVyaWUuIENhZGEgdW5pZGFkIGVuIGxhIGN1YWRyaWN1bGEgcmVwcmVzZW50YSAxIHBpZSBjdWFkcmFkby4mbmJzcDs8L3N0cm9uZz5cXG48L3A+XFxuPHA+XFxuICA8c3Ryb25nPiogRWwgZXNjcml0b3JpbyBkZSBWYWxlcmlhIHNlIGVuY3VlbnRyYSBlbiAoLTMsLTQpPC9zdHJvbmc+XFxuPC9wPlxcbjxwPlxcbiAgPHN0cm9uZz4qIEVsIGVzY3JpdG9yaW8gZGUgbGEgbWFlc3RyYSBzZSBlbmN1ZW50cmEgZW4gKDUsLTQpPC9zdHJvbmc+XFxuPC9wPlxcbjxwPlxcbiAgPHN0cm9uZz4qIEVsIGN1YXJ0byBkZSBtYXRlcmlhbGVzIHNlIGVuY3VlbnRyYSZuYnNwOyBlbiAoLTMsLTcpPC9zdHJvbmc+XFxuPC9wPlxcbjxwPlxcbiAgPHN0cm9uZz48aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9waWUtc3RhZ2luZy0yMjE3MTgtYXNzZXRzL2ltYWdlLzE4MGQyOGIyLTAzNzYtNDI4ZS1iNDE1LWRlOTZlMTU4YjdlN1wiIGFsdD1cIlwiPjwvc3Ryb25nPlxcbjwvcD5cXG48cD5cXG4gICZuYnNwO1xcbjwvcD5cXG48cD5cXG4gIDxzdHJvbmc+QW5vdGEgbGEgZGlzdGFuY2lhLCBlbiBwaWVzLCBkZXNkZSBlbCBlc2NyaXRvcmlvIGRlIFZhbGVyaWUgYWwgY3VhcnRvIGRlIG1hdGVyaWFsZXMuPC9zdHJvbmc+XFxuPC9wPlxcbjxwPlxcbiAge3swfX0gPHN0cm9uZz5waWVzPC9zdHJvbmc+XFxuPC9wPicsXG4gIGlkOiAnMjQyMjMzMCcsXG4gIHJ1YnJpYzogJycsXG4gIGVsZW1lbnQ6ICdleHBsaWNpdC1jb25zdHJ1Y3RlZC1yZXNwb25zZS1lbGVtZW50JyxcbiAgYXV0b1Njb3Jpbmc6ICdwYXJ0aWFsJyxcbiAgcmF0aW9uYWxlOiAnJyxcbn07XG5cbmRlc2NyaWJlKCdlZGdlIGNhc2VzJywgKCkgPT4ge1xuICBpdCgnZG9lcyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHNlc3Npb24gaGFzIG5vIHZhbHVlJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG1vZGVsKGQsIHt9LCB7IG1vZGU6ICdldmFsdWF0ZScgfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgfSk7XG59KTtcbiJdfQ==
|