@pie-element/multiple-choice 8.1.0-next.1 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +5 -0
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/main.js +6 -6
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/utils.js +1 -1
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +1 -1
- package/controller/lib/utils.js +1 -1
- package/lib/choice-input.js +1 -1
- package/lib/choice.js +1 -1
- package/lib/feedback-tick.js +1 -1
- package/lib/index.js +1 -1
- package/lib/main.js +1 -1
- package/lib/multiple-choice.js +3 -3
- package/lib/multiple-choice.js.map +1 -1
- package/lib/print.js +1 -1
- package/lib/session-updater.js +1 -1
- package/package.json +2 -2
- package/configure/lib/__tests__/root.test.js +0 -271
- package/controller/lib/__tests__/index.test.js +0 -864
- package/controller/lib/__tests__/utils.test.js +0 -8
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/choice-input-test.js +0 -124
- package/lib/__tests__/index-test.js +0 -22
- package/lib/__tests__/multiple-choice-test.js +0 -237
- package/lib/__tests__/session-updater-test.js +0 -72
- package/module/demo.js +0 -78
- package/module/element.js +0 -2130
- package/module/index.html +0 -21
- package/module/manifest.json +0 -10
- package/module/print-demo.js +0 -116
- package/module/print.html +0 -18
- package/module/print.js +0 -2092
package/lib/feedback-tick.js
CHANGED
|
@@ -171,4 +171,4 @@ var _default = (0, _styles.withStyles)(stylesheet, {
|
|
|
171
171
|
})(FeedbackTick);
|
|
172
172
|
|
|
173
173
|
exports["default"] = _default;
|
|
174
|
-
//# sourceMappingURL=
|
|
174
|
+
//# sourceMappingURL=feedback-tick.js.map
|
package/lib/index.js
CHANGED
|
@@ -153,4 +153,4 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
153
153
|
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
154
154
|
|
|
155
155
|
exports["default"] = MultipleChoice;
|
|
156
|
-
//# sourceMappingURL=
|
|
156
|
+
//# sourceMappingURL=index.js.map
|
package/lib/main.js
CHANGED
|
@@ -93,4 +93,4 @@ var Root = function Root(props) {
|
|
|
93
93
|
|
|
94
94
|
var _default = Root;
|
|
95
95
|
exports["default"] = _default;
|
|
96
|
-
//# sourceMappingURL=
|
|
96
|
+
//# sourceMappingURL=main.js.map
|
package/lib/multiple-choice.js
CHANGED
|
@@ -27,7 +27,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
27
27
|
|
|
28
28
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
29
|
|
|
30
|
-
var _correctAnswerToggle = require("@pie-lib/pie-toolbox/correct-answer-toggle");
|
|
30
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/pie-toolbox/correct-answer-toggle"));
|
|
31
31
|
|
|
32
32
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
33
33
|
|
|
@@ -292,7 +292,7 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
|
|
|
292
292
|
defaultClassName: "prompt",
|
|
293
293
|
prompt: prompt,
|
|
294
294
|
tagName: 'legend'
|
|
295
|
-
}), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle
|
|
295
|
+
}), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
296
296
|
show: showCorrectAnswerToggle,
|
|
297
297
|
toggled: showCorrect,
|
|
298
298
|
onToggle: this.onToggle.bind(this),
|
|
@@ -356,4 +356,4 @@ MultipleChoice.defaultProps = {
|
|
|
356
356
|
var _default = (0, _styles.withStyles)(styles)(MultipleChoice);
|
|
357
357
|
|
|
358
358
|
exports["default"] = _default;
|
|
359
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tdWx0aXBsZS1jaG9pY2UuanN4Il0sIm5hbWVzIjpbInN0eWxlcyIsInRoZW1lIiwibWFpbiIsImNvbG9yIiwidGV4dCIsImJhY2tncm91bmRDb2xvciIsImJhY2tncm91bmQiLCJwYXJ0TGFiZWwiLCJkaXNwbGF5IiwiZm9udFNpemUiLCJtYXJnaW4iLCJmb250V2VpZ2h0IiwicGFkZGluZ0JvdHRvbSIsInNwYWNpbmciLCJ1bml0IiwidGVhY2hlckluc3RydWN0aW9ucyIsIm1hcmdpbkJvdHRvbSIsImhvcml6b250YWxMYXlvdXQiLCJmbGV4RGlyZWN0aW9uIiwiZmxleFdyYXAiLCJncmlkTGF5b3V0IiwiZmllbGRzZXQiLCJib3JkZXIiLCJwYWRkaW5nIiwibWluV2lkdGgiLCJzck9ubHkiLCJwb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93IiwiTXVsdGlwbGVDaG9pY2UiLCJwcm9wcyIsImV2ZW50IiwidGFyZ2V0Iiwic2V0U3RhdGUiLCJzZWxlY3RlZFZhbHVlIiwidmFsdWUiLCJjaGVja2VkIiwicHJldlN0YXRlIiwic2VsZWN0ZWRWYWx1ZXMiLCJwdXNoIiwiZmlsdGVyIiwiY3VycmVudFZhbHVlIiwiY2hvaWNlIiwiaXNDb3JyZWN0IiwiY29ycmVjdCIsImlzQ2hlY2tlZCIsImlzU2VsZWN0ZWQiLCJzdGF0ZSIsInNob3dDb3JyZWN0IiwidW5kZWZpbmVkIiwiYWx3YXlzU2hvd0NvcnJlY3QiLCJvblRvZ2dsZSIsImJpbmQiLCJzZXNzaW9uVmFsdWUiLCJzZXNzaW9uIiwiaW5kZXhPZiIsIm1vZGUiLCJuZXh0UHJvcHMiLCJjb3JyZWN0UmVzcG9uc2UiLCJpbmRleCIsImtleU1vZGUiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ0b1VwcGVyQ2FzZSIsImNob2ljZU1vZGUiLCJpbmNsdWRlcyIsImNsYXNzZXMiLCJkaXNhYmxlZCIsImNsYXNzTmFtZSIsImNob2ljZXMiLCJncmlkQ29sdW1ucyIsInByb21wdCIsIm9uQ2hvaWNlQ2hhbmdlZCIsInJlc3BvbnNlQ29ycmVjdCIsImFuaW1hdGlvbnNEaXNhYmxlZCIsImxhbmd1YWdlIiwiaXNFdmFsdWF0ZU1vZGUiLCJzaG93Q29ycmVjdEFuc3dlclRvZ2dsZSIsImNvbHVtbnNTdHlsZSIsImdyaWRUZW1wbGF0ZUNvbHVtbnMiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRGl2IiwicmVuZGVySGVhZGluZyIsImhpZGRlbiIsInZpc2libGUiLCJjaG9pY2VzTGF5b3V0IiwibWFwIiwibGVuZ3RoIiwiaGFuZGxlQ2hhbmdlIiwiaGFuZGxlQ2hhbmdlQ2hlY2tib3hlcyIsImhpZGVUaWNrIiwiZ2V0Q2hlY2tlZCIsImdldENvcnJlY3RuZXNzIiwiaW5kZXhUb1N5bWJvbCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwic3RyaW5nIiwib25lT2YiLCJhcnJheSIsIm9iamVjdCIsImJvb2wiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUVBLElBQU1BLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQUNDLEtBQUQ7QUFBQSxTQUFZO0FBQ3ZCQyxJQUFBQSxJQUFJLEVBQUU7QUFDRkMsTUFBQUEsS0FBSyxFQUFFQSxnQkFBTUMsSUFBTixFQURMO0FBRUZDLE1BQUFBLGVBQWUsRUFBRUYsZ0JBQU1HLFVBQU4sRUFGZjtBQUdGLGFBQU87QUFDSCxrQ0FBMEI7QUFEdkI7QUFITCxLQURpQjtBQVF2QkMsSUFBQUEsU0FBUyxFQUFFO0FBQ1BDLE1BQUFBLE9BQU8sRUFBRSxPQURGO0FBRVBDLE1BQUFBLFFBQVEsRUFBRSxTQUZIO0FBR1BDLE1BQUFBLE1BQU0sRUFBRSxHQUhEO0FBSVBDLE1BQUFBLFVBQVUsRUFBRSxRQUpMO0FBS1BDLE1BQUFBLGFBQWEsRUFBRVgsS0FBSyxD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QUFtQmdDLGNBQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7Q29ycmVjdEFuc3dlclRvZ2dsZX0gZnJvbSAnQHBpZS1saWIvcGllLXRvb2xib3gvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHt3aXRoU3R5bGVzfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IHtjb2xvciwgQ29sbGFwc2libGUsIFByZXZpZXdQcm9tcHR9IGZyb20gJ0BwaWUtbGliL3BpZS10b29sYm94L3JlbmRlci11aSc7XG5pbXBvcnQgU3R5bGVkQ2hvaWNlIGZyb20gJy4vY2hvaWNlJztcblxuLy8gTXVsdGlwbGVDaG9pY2VcblxuY29uc3Qgc3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICAgIG1haW46IHtcbiAgICAgICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5iYWNrZ3JvdW5kKCksXG4gICAgICAgICcmIConOiB7XG4gICAgICAgICAgICAnLXdlYmtpdC1mb250LXNtb290aGluZyc6ICdhbnRpYWxpYXNlZCcsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBwYXJ0TGFiZWw6IHtcbiAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgICAgbWFyZ2luOiAnMCcsXG4gICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICAgIH0sXG4gICAgdGVhY2hlckluc3RydWN0aW9uczoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgfSxcbiAgICBob3Jpem9udGFsTGF5b3V0OiB7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgfSxcbiAgICBncmlkTGF5b3V0OiB7XG4gICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICB9LFxuICAgIGZpZWxkc2V0OiB7XG4gICAgICAgIGJvcmRlcjogJzBweCcsXG4gICAgICAgIHBhZGRpbmc6ICcwLjAxZW0gMCAwIDAnLFxuICAgICAgICBtYXJnaW46ICcwcHgnLFxuICAgICAgICBtaW5XaWR0aDogJzBweCcsXG4gICAgfSxcbiAgICBzck9ubHk6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIGxlZnQ6ICctMTAwMDBweCcsXG4gICAgICAgIHRvcDogJ2F1dG8nLFxuICAgICAgICB3aWR0aDogJzFweCcsXG4gICAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB9LFxufSk7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aXBsZUNob2ljZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBtb2RlOiBQcm9wVHlwZXMub25lT2YoWydnYXRoZXInLCAndmlldycsICdldmFsdWF0ZSddKSxcbiAgICAgICAgY2hvaWNlTW9kZTogUHJvcFR5cGVzLm9uZU9mKFsncmFkaW8nLCAnY2hlY2tib3gnXSksXG4gICAgICAgIGtleU1vZGU6IFByb3BUeXBlcy5vbmVPZihbJ251bWJlcnMnLCAnbGV0dGVycycsICdub25lJ10pLFxuICAgICAgICBjaG9pY2VzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICAgIHBhcnRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgcHJvbXB0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIG9uQ2hvaWNlQ2hhbmdlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIHJlc3BvbnNlQ29ycmVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgICAgY29ycmVjdFJlc3BvbnNlOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICAgIGNob2ljZXNMYXlvdXQ6IFByb3BUeXBlcy5vbmVPZihbJ3ZlcnRpY2FsJywgJ2dyaWQnLCAnaG9yaXpvbnRhbCddKSxcbiAgICAgICAgZ3JpZENvbHVtbnM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGFsd2F5c1Nob3dDb3JyZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgYW5pbWF0aW9uc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgbGFuZ3VhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzOiBbXSxcbiAgICAgICAgICAgIHNob3dDb3JyZWN0OiB0aGlzLnByb3BzLmFsd2F5c1Nob3dDb3JyZWN0IHx8IGZhbHNlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMub25Ub2dnbGUgPSB0aGlzLm9uVG9nZ2xlLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCh2YWx1ZSkge1xuICAgICAgICBjb25zdCBzZXNzaW9uVmFsdWUgPSB0aGlzLnByb3BzLnNlc3Npb24gJiYgdGhpcy5wcm9wcy5zZXNzaW9uLnZhbHVlO1xuXG4gICAgICAgIHJldHVybiBzZXNzaW9uVmFsdWUgJiYgc2Vzc2lvblZhbHVlLmluZGV4T2YgJiYgc2Vzc2lvblZhbHVlLmluZGV4T2YodmFsdWUpID49IDA7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxlQ2hhbmdlIGFuZCBoYW5kbGVDaGFuZ2VDaGVja2JveGVzIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIGZvciBhY2Nlc3NpYmlsaXR5LiBQbGVhc2Ugc2VlIGNvbW1lbnRzIGFuZCB2aWRlb3MgZnJvbSBQRC0yNDQxLiBUaGV5IHNob3VsZCBvbmx5IGJlIHJlbW92ZWQgaWYgYSBiZXR0ZXIgc29sdXRpb24gaXMgZm91bmQuXG4gICAgaGFuZGxlQ2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZWxlY3RlZFZhbHVlOiB0YXJnZXQudmFsdWV9KTtcbiAgICB9O1xuXG4gICAgaGFuZGxlQ2hhbmdlQ2hlY2tib3hlcyA9IChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGNoZWNrZWR9ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gWy4uLnByZXZTdGF0ZS5zZWxlY3RlZFZhbHVlc107XG5cbiAgICAgICAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzID0gc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKChjdXJyZW50VmFsdWUpID0+IGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge3NlbGVjdGVkVmFsdWVzfTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uVG9nZ2xlKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5tb2RlID09PSAnZXZhbHVhdGUnKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtzaG93Q29ycmVjdDogIXRoaXMuc3RhdGUuc2hvd0NvcnJlY3R9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgICBpZiAoIW5leHRQcm9wcy5jb3JyZWN0UmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dDb3JyZWN0OiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHRQcm9wcy5hbHdheXNTaG93Q29ycmVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0NvcnJlY3Q6IHRydWV9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluZGV4VG9TeW1ib2woaW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMua2V5TW9kZSA9PT0gJ251bWJlcnMnKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aW5kZXggKyAxfWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5rZXlNb2RlID09PSAnbGV0dGVycycpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3ICsgaW5kZXgpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZ2V0Q29ycmVjdG5lc3MgPSAoY2hvaWNlID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgaXNDb3JyZWN0ID0gY2hvaWNlLmNvcnJlY3Q7XG4gICAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IHRoaXMuaXNTZWxlY3RlZChjaG9pY2UudmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNob3dDb3JyZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gaXNDb3JyZWN0ID8gJ2NvcnJlY3QnIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQ29ycmVjdCkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIC8vIEEgY29ycmVjdCBhbnN3ZXIgaXMgc2VsZWN0ZWQ6IG1hcmtlZCB3aXRoIGEgZ3JlZW4gY2hlY2ttYXJrXG4gICAgICAgICAgICAgICAgcmV0dXJuICdjb3JyZWN0JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQSBjb3JyZWN0IGFuc3dlciBpcyBOT1Qgc2VsZWN0ZWQ6IG1hcmtlZCB3aXRoIGFuIG9yYW5nZSBYXG4gICAgICAgICAgICAgICAgcmV0dXJuICdpbmNvcnJlY3QnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIC8vIEFuIGluY29ycmVjdCBhbnN3ZXIgaXMgc2VsZWN0ZWQ6IG1hcmtlZCB3aXRoIGFuIG9yYW5nZSBYXG4gICAgICAgICAgICAgICAgcmV0dXJuICdpbmNvcnJlY3QnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBBbiBpbmNvcnJlY3QgYW5zd2VyIGlzIE5PVCBzZWxlY3RlZDogbm90IG1hcmtlZFxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2V0Q2hlY2tlZChjaG9pY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2hvd0NvcnJlY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjaG9pY2UuY29ycmVjdCB8fCBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoY2hvaWNlLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaG9pY2VNb2RlID09PSAncmFkaW8nXG4gICAgICAgICAgICA/IHRoaXMuc3RhdGUuc2VsZWN0ZWRWYWx1ZSA9PT0gY2hvaWNlLnZhbHVlXG4gICAgICAgICAgICA6IHRoaXMuc3RhdGUuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMoY2hvaWNlLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyByZW5kZXJIZWFkaW5nIGZ1bmN0aW9uIHdhcyBhZGRlZCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICByZW5kZXJIZWFkaW5nKCkge1xuICAgICAgICBjb25zdCB7bW9kZSwgY2hvaWNlTW9kZSwgY2xhc3Nlc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGlmIChtb2RlICE9PSAnZ2F0aGVyJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hvaWNlTW9kZSA9PT0gJ3JhZGlvJyA/IChcbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9e2NsYXNzZXMuc3JPbmx5fT5NdWx0aXBsZSBDaG9pY2UgUXVlc3Rpb248L2gyPlxuICAgICAgICApIDogKFxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT17Y2xhc3Nlcy5zck9ubHl9Pk11bHRpcGxlIFNlbGVjdCBRdWVzdGlvbjwvaDI+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBtb2RlLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICBjaG9pY2VzID0gW10sXG4gICAgICAgICAgICBjaG9pY2VNb2RlLFxuICAgICAgICAgICAgZ3JpZENvbHVtbnMsXG4gICAgICAgICAgICBwYXJ0TGFiZWwsXG4gICAgICAgICAgICBwcm9tcHQsXG4gICAgICAgICAgICBvbkNob2ljZUNoYW5nZWQsXG4gICAgICAgICAgICByZXNwb25zZUNvcnJlY3QsXG4gICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIGFsd2F5c1Nob3dDb3JyZWN0LFxuICAgICAgICAgICAgYW5pbWF0aW9uc0Rpc2FibGVkLFxuICAgICAgICAgICAgbGFuZ3VhZ2VcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHtzaG93Q29ycmVjdH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCBpc0V2YWx1YXRlTW9kZSA9IG1vZGUgPT09ICdldmFsdWF0ZSc7XG4gICAgICAgIGNvbnN0IHNob3dDb3JyZWN0QW5zd2VyVG9nZ2xlID0gaXNFdmFsdWF0ZU1vZGUgJiYgIXJlc3BvbnNlQ29ycmVjdDtcbiAgICAgICAgY29uc3QgY29sdW1uc1N0eWxlID0gZ3JpZENvbHVtbnMgPiAxID8ge2dyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHtncmlkQ29sdW1uc30sIDFmcilgfSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB0ZWFjaGVySW5zdHJ1Y3Rpb25zRGl2ID0gKFxuICAgICAgICAgICAgPFByZXZpZXdQcm9tcHRcbiAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcm9tcHRcIlxuICAgICAgICAgICAgICAgIGRlZmF1bHRDbGFzc05hbWU9XCJ0ZWFjaGVyLWluc3RydWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgcHJvbXB0PXt0ZWFjaGVySW5zdHJ1Y3Rpb25zfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5tYWluLCBjbGFzc05hbWUsICdtdWx0aXBsZS1jaG9pY2UnKX0+XG4gICAgICAgICAgICAgICAge3BhcnRMYWJlbCAmJiA8aDMgY2xhc3NOYW1lPXtjbGFzc2VzLnBhcnRMYWJlbH0+e3BhcnRMYWJlbH08L2gzPn1cblxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckhlYWRpbmcoKX1cblxuICAgICAgICAgICAgICAgIHt0ZWFjaGVySW5zdHJ1Y3Rpb25zICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMudGVhY2hlckluc3RydWN0aW9uc30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IWFuaW1hdGlvbnNEaXNhYmxlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW46ICdTaG93IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICdIaWRlIFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0ZWFjaGVySW5zdHJ1Y3Rpb25zRGl2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNEaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3NOYW1lPXtjbGFzc2VzLmZpZWxkc2V0fT5cbiAgICAgICAgICAgICAgICAgICAgPFByZXZpZXdQcm9tcHQgY2xhc3NOYW1lPVwicHJvbXB0XCIgZGVmYXVsdENsYXNzTmFtZT1cInByb21wdFwiIHByb21wdD17cHJvbXB0fSB0YWdOYW1lPXsnbGVnZW5kJ30vPlxuXG4gICAgICAgICAgICAgICAgICAgIHshYWx3YXlzU2hvd0NvcnJlY3QgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPENvcnJlY3RBbnN3ZXJUb2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93PXtzaG93Q29ycmVjdEFuc3dlclRvZ2dsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVkPXtzaG93Q29ycmVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRvZ2dsZT17dGhpcy5vblRvZ2dsZS5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPXtsYW5ndWFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlcy5ncmlkTGF5b3V0XTogdGhpcy5wcm9wcy5jaG9pY2VzTGF5b3V0ID09PSAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXMuaG9yaXpvbnRhbExheW91dF06IHRoaXMucHJvcHMuY2hvaWNlc0xheW91dCA9PT0gJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17Y29sdW1uc1N0eWxlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2hvaWNlcy5tYXAoKGNob2ljZSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hvaWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXNMYXlvdXQ9e3RoaXMucHJvcHMuY2hvaWNlc0xheW91dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZENvbHVtbnM9e2dyaWRDb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BjaG9pY2UtJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2U9e2Nob2ljZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzTGVuZ3RoPXtjaG9pY2VzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NvcnJlY3Q9e3Nob3dDb3JyZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0V2YWx1YXRlTW9kZT17aXNFdmFsdWF0ZU1vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZU1vZGU9e2Nob2ljZU1vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2Vzc2lvbj17b25DaG9pY2VDaGFuZ2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNob2ljZUNoYW5nZWQ9e3RoaXMucHJvcHMuY2hvaWNlTW9kZSA9PT0gJ3JhZGlvJyA/IHRoaXMuaGFuZGxlQ2hhbmdlIDogdGhpcy5oYW5kbGVDaGFuZ2VDaGVja2JveGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlVGljaz17Y2hvaWNlLmhpZGVUaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXt0aGlzLmdldENoZWNrZWQoY2hvaWNlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdG5lc3M9e2lzRXZhbHVhdGVNb2RlID8gdGhpcy5nZXRDb3JyZWN0bmVzcyhjaG9pY2UpIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5PXt0aGlzLmluZGV4VG9TeW1ib2woaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuTXVsdGlwbGVDaG9pY2UuZGVmYXVsdFByb3BzID0ge1xuICAgIHNlc3Npb246IHtcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoTXVsdGlwbGVDaG9pY2UpO1xuIl19
|
|
359
|
+
//# sourceMappingURL=multiple-choice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["styles","theme","main","color","text","backgroundColor","background","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","border","padding","minWidth","srOnly","position","left","top","width","height","overflow","MultipleChoice","props","event","target","setState","selectedValue","value","checked","prevState","selectedValues","push","filter","currentValue","choice","isCorrect","correct","isChecked","isSelected","state","showCorrect","undefined","alwaysShowCorrect","onToggle","bind","sessionValue","session","indexOf","mode","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","choiceMode","includes","classes","disabled","className","choices","gridColumns","prompt","onChoiceChanged","responseCorrect","animationsDisabled","language","isEvaluateMode","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","teacherInstructionsDiv","renderHeading","hidden","visible","choicesLayout","map","length","handleChange","handleChangeCheckboxes","hideTick","getChecked","getCorrectness","indexToSymbol","React","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {CorrectAnswerToggle} from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport classNames from 'classnames';\nimport {withStyles} from '@material-ui/core/styles';\nimport {color, Collapsible, PreviewPrompt} from '@pie-lib/pie-toolbox/render-ui';\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n partLabel: {\n display: 'block',\n fontSize: 'inherit',\n margin: '0',\n fontWeight: 'normal',\n paddingBottom: theme.spacing.unit * 2,\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n mode: PropTypes.oneOf(['gather', 'view', 'evaluate']),\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n keyMode: PropTypes.oneOf(['numbers', 'letters', 'none']),\n choices: PropTypes.array,\n partLabel: PropTypes.string,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool,\n onChoiceChanged: PropTypes.func,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n language: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n selectedValue: null,\n selectedValues: [],\n showCorrect: this.props.alwaysShowCorrect || false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;\n }\n\n // handleChange and handleChangeCheckboxes functions were added for accessibility. Please see comments and videos from PD-2441. They should only be removed if a better solution is found.\n handleChange = (event) => {\n const target = event.target;\n\n this.setState({selectedValue: target.value});\n };\n\n handleChangeCheckboxes = (event) => {\n const {value, checked} = event.target;\n\n this.setState((prevState) => {\n let selectedValues = [...prevState.selectedValues];\n\n if (checked) {\n selectedValues.push(value);\n } else {\n selectedValues = selectedValues.filter((currentValue) => currentValue !== value);\n }\n\n return {selectedValues};\n });\n };\n\n onToggle() {\n if (this.props.mode === 'evaluate') {\n this.setState({showCorrect: !this.state.showCorrect});\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse) {\n this.setState({showCorrect: false});\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({showCorrect: true});\n }\n }\n\n indexToSymbol(index) {\n if (this.props.keyMode === 'numbers') {\n return `${index + 1}`;\n }\n\n if (this.props.keyMode === 'letters') {\n return String.fromCharCode(97 + index).toUpperCase();\n }\n\n return '';\n }\n\n getCorrectness = (choice = {}) => {\n const isCorrect = choice.correct;\n const isChecked = this.isSelected(choice.value);\n\n if (this.state.showCorrect) {\n return isCorrect ? 'correct' : undefined;\n }\n\n if (isCorrect) {\n if (isChecked) {\n // A correct answer is selected: marked with a green checkmark\n return 'correct';\n } else {\n // A correct answer is NOT selected: marked with an orange X\n return 'incorrect';\n }\n } else {\n if (isChecked) {\n // An incorrect answer is selected: marked with an orange X\n return 'incorrect';\n } else {\n // An incorrect answer is NOT selected: not marked\n return undefined;\n }\n }\n };\n\n getChecked(choice) {\n if (this.state.showCorrect) {\n return choice.correct || false;\n }\n\n if (this.isSelected(choice.value)) {\n return true;\n }\n\n return this.props.choiceMode === 'radio'\n ? this.state.selectedValue === choice.value\n : this.state.selectedValues.includes(choice.value);\n }\n\n // renderHeading function was added for accessibility.\n renderHeading() {\n const {mode, choiceMode, classes} = this.props;\n\n if (mode !== 'gather') {\n return null;\n }\n\n return choiceMode === 'radio' ? (\n <h2 className={classes.srOnly}>Multiple Choice Question</h2>\n ) : (\n <h2 className={classes.srOnly}>Multiple Select Question</h2>\n );\n }\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n onChoiceChanged,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language\n } = this.props;\n const {showCorrect} = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? {gridTemplateColumns: `repeat(${gridColumns}, 1fr)`} : undefined;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n return (\n <div className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h3 className={classes.partLabel}>{partLabel}</h3>}\n\n {this.renderHeading()}\n\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n <fieldset className={classes.fieldset}>\n <PreviewPrompt className=\"prompt\" defaultClassName=\"prompt\" prompt={prompt} tagName={'legend'}/>\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n <div\n className={classNames({\n [classes.gridLayout]: this.props.choicesLayout === 'grid',\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n })}\n style={columnsStyle}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n choicesLayout={this.props.choicesLayout}\n gridColumns={gridColumns}\n key={`choice-${index}`}\n choice={choice}\n index={index}\n choicesLength={choices.length}\n showCorrect={showCorrect}\n isEvaluateMode={isEvaluateMode}\n choiceMode={choiceMode}\n disabled={disabled}\n updateSession={onChoiceChanged}\n onChoiceChanged={this.props.choiceMode === 'radio' ? this.handleChange : this.handleChangeCheckboxes}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n />\n ))}\n </div>\n </fieldset>\n </div>\n );\n }\n}\n\nMultipleChoice.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default withStyles(styles)(MultipleChoice);\n"],"file":"multiple-choice.js"}
|
|
1
|
+
{"version":3,"sources":["../src/multiple-choice.jsx"],"names":["styles","theme","main","color","text","backgroundColor","background","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","border","padding","minWidth","srOnly","position","left","top","width","height","overflow","MultipleChoice","props","event","target","setState","selectedValue","value","checked","prevState","selectedValues","push","filter","currentValue","choice","isCorrect","correct","isChecked","isSelected","state","showCorrect","undefined","alwaysShowCorrect","onToggle","bind","sessionValue","session","indexOf","mode","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","choiceMode","includes","classes","disabled","className","choices","gridColumns","prompt","onChoiceChanged","responseCorrect","animationsDisabled","language","isEvaluateMode","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","teacherInstructionsDiv","renderHeading","hidden","visible","choicesLayout","map","length","handleChange","handleChangeCheckboxes","hideTick","getChecked","getCorrectness","indexToSymbol","React","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color, Collapsible, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n },\n partLabel: {\n display: 'block',\n fontSize: 'inherit',\n margin: '0',\n fontWeight: 'normal',\n paddingBottom: theme.spacing.unit * 2,\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n horizontalLayout: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n gridLayout: {\n display: 'grid',\n },\n fieldset: {\n border: '0px',\n padding: '0.01em 0 0 0',\n margin: '0px',\n minWidth: '0px',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport class MultipleChoice extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n mode: PropTypes.oneOf(['gather', 'view', 'evaluate']),\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n keyMode: PropTypes.oneOf(['numbers', 'letters', 'none']),\n choices: PropTypes.array,\n partLabel: PropTypes.string,\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n disabled: PropTypes.bool,\n onChoiceChanged: PropTypes.func,\n responseCorrect: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n correctResponse: PropTypes.array,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n language: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n selectedValue: null,\n selectedValues: [],\n showCorrect: this.props.alwaysShowCorrect || false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n }\n\n isSelected(value) {\n const sessionValue = this.props.session && this.props.session.value;\n\n return sessionValue && sessionValue.indexOf && sessionValue.indexOf(value) >= 0;\n }\n\n // handleChange and handleChangeCheckboxes functions were added for accessibility. Please see comments and videos from PD-2441. They should only be removed if a better solution is found.\n handleChange = (event) => {\n const target = event.target;\n\n this.setState({ selectedValue: target.value });\n };\n\n handleChangeCheckboxes = (event) => {\n const { value, checked } = event.target;\n\n this.setState((prevState) => {\n let selectedValues = [...prevState.selectedValues];\n\n if (checked) {\n selectedValues.push(value);\n } else {\n selectedValues = selectedValues.filter((currentValue) => currentValue !== value);\n }\n\n return { selectedValues };\n });\n };\n\n onToggle() {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse) {\n this.setState({ showCorrect: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n }\n\n indexToSymbol(index) {\n if (this.props.keyMode === 'numbers') {\n return `${index + 1}`;\n }\n\n if (this.props.keyMode === 'letters') {\n return String.fromCharCode(97 + index).toUpperCase();\n }\n\n return '';\n }\n\n getCorrectness = (choice = {}) => {\n const isCorrect = choice.correct;\n const isChecked = this.isSelected(choice.value);\n\n if (this.state.showCorrect) {\n return isCorrect ? 'correct' : undefined;\n }\n\n if (isCorrect) {\n if (isChecked) {\n // A correct answer is selected: marked with a green checkmark\n return 'correct';\n } else {\n // A correct answer is NOT selected: marked with an orange X\n return 'incorrect';\n }\n } else {\n if (isChecked) {\n // An incorrect answer is selected: marked with an orange X\n return 'incorrect';\n } else {\n // An incorrect answer is NOT selected: not marked\n return undefined;\n }\n }\n };\n\n getChecked(choice) {\n if (this.state.showCorrect) {\n return choice.correct || false;\n }\n\n if (this.isSelected(choice.value)) {\n return true;\n }\n\n return this.props.choiceMode === 'radio'\n ? this.state.selectedValue === choice.value\n : this.state.selectedValues.includes(choice.value);\n }\n\n // renderHeading function was added for accessibility.\n renderHeading() {\n const { mode, choiceMode, classes } = this.props;\n\n if (mode !== 'gather') {\n return null;\n }\n\n return choiceMode === 'radio' ? (\n <h2 className={classes.srOnly}>Multiple Choice Question</h2>\n ) : (\n <h2 className={classes.srOnly}>Multiple Select Question</h2>\n );\n }\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n onChoiceChanged,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n return (\n <div className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h3 className={classes.partLabel}>{partLabel}</h3>}\n\n {this.renderHeading()}\n\n {teacherInstructions && (\n <div className={classes.teacherInstructions}>\n {!animationsDisabled ? (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n <fieldset className={classes.fieldset}>\n <PreviewPrompt className=\"prompt\" defaultClassName=\"prompt\" prompt={prompt} tagName={'legend'} />\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n <div\n className={classNames({\n [classes.gridLayout]: this.props.choicesLayout === 'grid',\n [classes.horizontalLayout]: this.props.choicesLayout === 'horizontal',\n })}\n style={columnsStyle}\n >\n {choices.map((choice, index) => (\n <StyledChoice\n choicesLayout={this.props.choicesLayout}\n gridColumns={gridColumns}\n key={`choice-${index}`}\n choice={choice}\n index={index}\n choicesLength={choices.length}\n showCorrect={showCorrect}\n isEvaluateMode={isEvaluateMode}\n choiceMode={choiceMode}\n disabled={disabled}\n updateSession={onChoiceChanged}\n onChoiceChanged={this.props.choiceMode === 'radio' ? this.handleChange : this.handleChangeCheckboxes}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n />\n ))}\n </div>\n </fieldset>\n </div>\n );\n }\n}\n\nMultipleChoice.defaultProps = {\n session: {\n value: [],\n },\n};\n\nexport default withStyles(styles)(MultipleChoice);\n"],"file":"multiple-choice.js"}
|
package/lib/print.js
CHANGED
|
@@ -126,4 +126,4 @@ var MultipleChoicePrint = /*#__PURE__*/function (_HTMLElement) {
|
|
|
126
126
|
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
127
127
|
|
|
128
128
|
exports["default"] = MultipleChoicePrint;
|
|
129
|
-
//# sourceMappingURL=
|
|
129
|
+
//# sourceMappingURL=print.js.map
|
package/lib/session-updater.js
CHANGED
|
@@ -32,4 +32,4 @@ function updateSessionValue(session, choiceMode, data) {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=session-updater.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/multiple-choice",
|
|
3
3
|
"repository": "pie-framework/pie-elements",
|
|
4
|
-
"version": "8.1.0
|
|
4
|
+
"version": "8.1.0",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"react-test-renderer": "^16.3.2",
|
|
19
19
|
"react-transition-group": "^2.3.1"
|
|
20
20
|
},
|
|
21
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "8aec9bff2588b2640ca5b4fa74a75333a52a563b",
|
|
22
22
|
"scripts": {
|
|
23
23
|
"postpublish": "../../scripts/postpublish"
|
|
24
24
|
},
|
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
6
|
-
|
|
7
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
-
|
|
9
|
-
var _enzyme = require("enzyme");
|
|
10
|
-
|
|
11
|
-
var _react = _interopRequireDefault(require("react"));
|
|
12
|
-
|
|
13
|
-
var _main = require("../main");
|
|
14
|
-
|
|
15
|
-
var _defaults = _interopRequireDefault(require("../defaults"));
|
|
16
|
-
|
|
17
|
-
var _configUi = require("@pie-lib/pie-toolbox/config-ui");
|
|
18
|
-
|
|
19
|
-
var _index = _interopRequireDefault(require("../index"));
|
|
20
|
-
|
|
21
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
22
|
-
|
|
23
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
24
|
-
|
|
25
|
-
jest.mock('@pie-lib/pie-toolbox/config-ui', function () {
|
|
26
|
-
return {
|
|
27
|
-
choiceUtils: {
|
|
28
|
-
firstAvailableIndex: jest.fn(),
|
|
29
|
-
normalizeChoices: jest.fn(function (model) {
|
|
30
|
-
return model;
|
|
31
|
-
})
|
|
32
|
-
},
|
|
33
|
-
settings: {
|
|
34
|
-
Panel: function Panel(props) {
|
|
35
|
-
return /*#__PURE__*/_react["default"].createElement("div", props);
|
|
36
|
-
},
|
|
37
|
-
toggle: jest.fn(),
|
|
38
|
-
radio: jest.fn()
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
var model = function model(extras) {
|
|
44
|
-
return _objectSpread(_objectSpread({}, _defaults["default"].model), {}, {
|
|
45
|
-
prompt: 'Which of these northern European countries are EU members?',
|
|
46
|
-
choiceMode: 'checkbox',
|
|
47
|
-
choices: [{
|
|
48
|
-
correct: true,
|
|
49
|
-
value: 'sweden',
|
|
50
|
-
label: 'Sweden',
|
|
51
|
-
feedback: {
|
|
52
|
-
type: 'none',
|
|
53
|
-
value: ''
|
|
54
|
-
}
|
|
55
|
-
}, {
|
|
56
|
-
value: 'iceland',
|
|
57
|
-
label: 'Iceland',
|
|
58
|
-
feedback: {
|
|
59
|
-
type: 'none',
|
|
60
|
-
value: ''
|
|
61
|
-
}
|
|
62
|
-
}, {
|
|
63
|
-
value: 'norway',
|
|
64
|
-
label: 'Norway',
|
|
65
|
-
feedback: {
|
|
66
|
-
type: 'none',
|
|
67
|
-
value: ''
|
|
68
|
-
}
|
|
69
|
-
}, {
|
|
70
|
-
correct: true,
|
|
71
|
-
value: 'finland',
|
|
72
|
-
label: 'Finland',
|
|
73
|
-
feedback: {
|
|
74
|
-
type: 'none',
|
|
75
|
-
value: ''
|
|
76
|
-
}
|
|
77
|
-
}],
|
|
78
|
-
partialScoring: false,
|
|
79
|
-
configure: {}
|
|
80
|
-
}, extras);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
describe('Main', function () {
|
|
84
|
-
var w;
|
|
85
|
-
var onModelChanged = jest.fn();
|
|
86
|
-
var onConfigurationChanged = jest.fn();
|
|
87
|
-
var initialModel = model();
|
|
88
|
-
|
|
89
|
-
var wrapper = function wrapper(extras) {
|
|
90
|
-
var defaults = {
|
|
91
|
-
onModelChanged: onModelChanged,
|
|
92
|
-
onConfigurationChanged: onConfigurationChanged,
|
|
93
|
-
classes: {},
|
|
94
|
-
model: model()
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
98
|
-
|
|
99
|
-
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_main.Main, props));
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
describe('snapshot', function () {
|
|
103
|
-
it('renders with choicePrefix="numbers"', function () {
|
|
104
|
-
w = wrapper({
|
|
105
|
-
model: model({
|
|
106
|
-
choicePrefix: 'numbers'
|
|
107
|
-
})
|
|
108
|
-
});
|
|
109
|
-
expect(w).toMatchSnapshot();
|
|
110
|
-
});
|
|
111
|
-
it('renders with choicePrefix="letters" as default', function () {
|
|
112
|
-
w = wrapper();
|
|
113
|
-
expect(w).toMatchSnapshot();
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
describe('logic', function () {
|
|
117
|
-
beforeEach(function () {
|
|
118
|
-
w = wrapper();
|
|
119
|
-
});
|
|
120
|
-
describe('onRemoveChoice', function () {
|
|
121
|
-
it('removes choice', function () {
|
|
122
|
-
w.instance().onRemoveChoice(0);
|
|
123
|
-
expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
|
|
124
|
-
choices: initialModel.choices.slice(1)
|
|
125
|
-
}));
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
describe('createDefaultModel', function () {
|
|
129
|
-
it('sets choicesLayout: horizontal if verticalMode: false', function () {
|
|
130
|
-
var m = _index["default"].createDefaultModel(model({
|
|
131
|
-
verticalMode: false,
|
|
132
|
-
choicesLayout: undefined
|
|
133
|
-
}));
|
|
134
|
-
|
|
135
|
-
expect(m.choicesLayout).toEqual('horizontal');
|
|
136
|
-
});
|
|
137
|
-
it('sets choicesLayout: vertical if verticalMode: true', function () {
|
|
138
|
-
var m = _index["default"].createDefaultModel(model({
|
|
139
|
-
verticalMode: true,
|
|
140
|
-
choicesLayout: undefined
|
|
141
|
-
}));
|
|
142
|
-
|
|
143
|
-
expect(m.choicesLayout).toEqual('vertical');
|
|
144
|
-
});
|
|
145
|
-
it('sets choicesLayout: grid if verticalMode: true && choicesLayout: grid', function () {
|
|
146
|
-
var m = _index["default"].createDefaultModel(model({
|
|
147
|
-
verticalMode: true,
|
|
148
|
-
choicesLayout: 'grid'
|
|
149
|
-
}));
|
|
150
|
-
|
|
151
|
-
expect(m.choicesLayout).toEqual('grid');
|
|
152
|
-
});
|
|
153
|
-
it('sets choicesLayout: vertical', function () {
|
|
154
|
-
var m = _index["default"].createDefaultModel(model());
|
|
155
|
-
|
|
156
|
-
expect(m.choicesLayout).toEqual('vertical');
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
describe('onAddChoice', function () {
|
|
160
|
-
it('adds a choice', function () {
|
|
161
|
-
w.instance().onAddChoice();
|
|
162
|
-
expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
|
|
163
|
-
choices: [].concat((0, _toConsumableArray2["default"])(initialModel.choices), [{
|
|
164
|
-
label: '',
|
|
165
|
-
value: _configUi.choiceUtils.firstAvailableIndex(initialModel.choices.map(function (c) {
|
|
166
|
-
return c.value;
|
|
167
|
-
}), 0),
|
|
168
|
-
feedback: {
|
|
169
|
-
type: 'none'
|
|
170
|
-
}
|
|
171
|
-
}])
|
|
172
|
-
}));
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
describe('onChoiceChanged', function () {
|
|
176
|
-
describe('checkbox', function () {
|
|
177
|
-
it('changes choice (there are 2 true values)', function () {
|
|
178
|
-
var newChoices = (0, _toConsumableArray2["default"])(model().choices);
|
|
179
|
-
var choice = {
|
|
180
|
-
correct: true,
|
|
181
|
-
value: 'iceland',
|
|
182
|
-
label: 'Iceland',
|
|
183
|
-
feedback: {
|
|
184
|
-
type: 'none',
|
|
185
|
-
value: ''
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
w.instance().onChoiceChanged(1, choice);
|
|
189
|
-
newChoices[1].correct = true;
|
|
190
|
-
expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
|
|
191
|
-
choices: newChoices
|
|
192
|
-
}));
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
describe('radio', function () {
|
|
196
|
-
it('changes choice (there is only one true value)', function () {
|
|
197
|
-
var choice = {
|
|
198
|
-
correct: true,
|
|
199
|
-
value: 'iceland',
|
|
200
|
-
label: 'Iceland',
|
|
201
|
-
feedback: {
|
|
202
|
-
type: 'none',
|
|
203
|
-
value: ''
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
var newModel = _objectSpread(_objectSpread({}, initialModel), {}, {
|
|
208
|
-
choiceMode: 'radio',
|
|
209
|
-
choices: initialModel.choices.slice(0, 2)
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
w = wrapper({
|
|
213
|
-
model: newModel
|
|
214
|
-
});
|
|
215
|
-
w.instance().onChoiceChanged(1, choice);
|
|
216
|
-
expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, newModel), {}, {
|
|
217
|
-
choices: [{
|
|
218
|
-
correct: false,
|
|
219
|
-
value: 'sweden',
|
|
220
|
-
label: 'Sweden',
|
|
221
|
-
feedback: {
|
|
222
|
-
type: 'none',
|
|
223
|
-
value: ''
|
|
224
|
-
}
|
|
225
|
-
}, {
|
|
226
|
-
correct: true,
|
|
227
|
-
value: 'iceland',
|
|
228
|
-
label: 'Iceland',
|
|
229
|
-
feedback: {
|
|
230
|
-
type: 'none',
|
|
231
|
-
value: ''
|
|
232
|
-
}
|
|
233
|
-
}]
|
|
234
|
-
}));
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
describe('onPromptChanged', function () {
|
|
239
|
-
it('changes prompt', function () {
|
|
240
|
-
w.instance().onPromptChanged('New Prompt');
|
|
241
|
-
expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
|
|
242
|
-
prompt: 'New Prompt'
|
|
243
|
-
}));
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
describe('onTeacherInstructionsChanged', function () {
|
|
247
|
-
it('changes teacher instructions', function () {
|
|
248
|
-
w.instance().onTeacherInstructionsChanged('New Teacher Instructions');
|
|
249
|
-
expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
|
|
250
|
-
teacherInstructions: 'New Teacher Instructions'
|
|
251
|
-
}));
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
describe('onModelChanged', function () {
|
|
255
|
-
it('changes choice and makes incorrect all other choices', function () {
|
|
256
|
-
w.instance().onModelChanged(_objectSpread(_objectSpread({}, initialModel), {}, {
|
|
257
|
-
choiceMode: 'radio'
|
|
258
|
-
}), 'choiceMode');
|
|
259
|
-
var expectedChoices = model().choices;
|
|
260
|
-
expectedChoices.forEach(function (eC, index) {
|
|
261
|
-
eC.correct = index === 0;
|
|
262
|
-
});
|
|
263
|
-
expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
|
|
264
|
-
choiceMode: 'radio',
|
|
265
|
-
choices: expectedChoices
|
|
266
|
-
}), true);
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcm9vdC50ZXN0LmpzeCJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsImNob2ljZVV0aWxzIiwiZmlyc3RBdmFpbGFibGVJbmRleCIsImZuIiwibm9ybWFsaXplQ2hvaWNlcyIsIm1vZGVsIiwic2V0dGluZ3MiLCJQYW5lbCIsInByb3BzIiwidG9nZ2xlIiwicmFkaW8iLCJleHRyYXMiLCJkZWZhdWx0cyIsInByb21wdCIsImNob2ljZU1vZGUiLCJjaG9pY2VzIiwiY29ycmVjdCIsInZhbHVlIiwibGFiZWwiLCJmZWVkYmFjayIsInR5cGUiLCJwYXJ0aWFsU2NvcmluZyIsImNvbmZpZ3VyZSIsImRlc2NyaWJlIiwidyIsIm9uTW9kZWxDaGFuZ2VkIiwib25Db25maWd1cmF0aW9uQ2hhbmdlZCIsImluaXRpYWxNb2RlbCIsIndyYXBwZXIiLCJjbGFzc2VzIiwiaXQiLCJjaG9pY2VQcmVmaXgiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJiZWZvcmVFYWNoIiwiaW5zdGFuY2UiLCJvblJlbW92ZUNob2ljZSIsInRvQmVDYWxsZWRXaXRoIiwic2xpY2UiLCJtIiwiTXVsdGlwbGVDaG9pY2UiLCJjcmVhdGVEZWZhdWx0TW9kZWwiLCJ2ZXJ0aWNhbE1vZGUiLCJjaG9pY2VzTGF5b3V0IiwidW5kZWZpbmVkIiwidG9FcXVhbCIsIm9uQWRkQ2hvaWNlIiwidXRpbHMiLCJtYXAiLCJjIiwibmV3Q2hvaWNlcyIsImNob2ljZSIsIm9uQ2hvaWNlQ2hhbmdlZCIsIm5ld01vZGVsIiwib25Qcm9tcHRDaGFuZ2VkIiwib25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJleHBlY3RlZENob2ljZXMiLCJmb3JFYWNoIiwiZUMiLCJpbmRleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxD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QUYsR0FBYVYsY0FBYixpQ0FFT0UsWUFGUDtBQUdJYixVQUFBQSxVQUFVLEVBQUU7QUFIaEIsWUFLRSxZQUxGO0FBUUEsWUFBTTJDLGVBQWUsR0FBR3BELEtBQUssR0FBR1UsT0FBaEM7QUFFQTBDLFFBQUFBLGVBQWUsQ0FBQ0MsT0FBaEIsQ0FBd0IsVUFBQ0MsRUFBRCxFQUFLQyxLQUFMLEVBQWU7QUFDckNELFVBQUFBLEVBQUUsQ0FBQzNDLE9BQUgsR0FBYTRDLEtBQUssS0FBSyxDQUF2QjtBQUNELFNBRkQ7QUFJQTVCLFFBQUFBLE1BQU0sQ0FBQ1AsY0FBRCxDQUFOLENBQXVCWSxjQUF2QixpQ0FFT1YsWUFGUDtBQUdJYixVQUFBQSxVQUFVLEVBQUUsT0FIaEI7QUFJSUMsVUFBQUEsT0FBTyxFQUFFMEM7QUFKYixZQU1FLElBTkY7QUFRRCxPQXZCQyxDQUFGO0FBd0JELEtBekJPLENBQVI7QUEwQkQsR0FyTE8sQ0FBUjtBQXNMRCxDQXBOTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBNYWluIH0gZnJvbSAnLi4vbWFpbic7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMnO1xuaW1wb3J0IHsgY2hvaWNlVXRpbHMgYXMgdXRpbHMgfSBmcm9tICdAcGllLWxpYi9waWUtdG9vbGJveC9jb25maWctdWknO1xuaW1wb3J0IE11bHRpcGxlQ2hvaWNlIGZyb20gJy4uL2luZGV4JztcblxuamVzdC5tb2NrKCdAcGllLWxpYi9waWUtdG9vbGJveC9jb25maWctdWknLCAoKSA9PiAoe1xuICBjaG9pY2VVdGlsczoge1xuICAgIGZpcnN0QXZhaWxhYmxlSW5kZXg6IGplc3QuZm4oKSxcbiAgICBub3JtYWxpemVDaG9pY2VzOiBqZXN0LmZuKChtb2RlbCkgPT4gbW9kZWwpLFxuICB9LFxuICBzZXR0aW5nczoge1xuICAgIFBhbmVsOiAocHJvcHMpID0+IDxkaXYgey4uLnByb3BzfSAvPixcbiAgICB0b2dnbGU6IGplc3QuZm4oKSxcbiAgICByYWRpbzogamVzdC5mbigpLFxuICB9LFxufSkpO1xuXG5jb25zdCBtb2RlbCA9IChleHRyYXMpID0+ICh7XG4gIC4uLmRlZmF1bHRzLm1vZGVsLFxuICBwcm9tcHQ6ICdXaGljaCBvZiB0aGVzZSBub3J0aGVybiBFdXJvcGVhbiBjb3VudHJpZXMgYXJlIEVVIG1lbWJlcnM/JyxcbiAgY2hvaWNlTW9kZTogJ2NoZWNrYm94JyxcbiAgY2hvaWNlczogW1xuICAgIHtcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICB2YWx1ZTogJ3N3ZWRlbicsXG4gICAgICBsYWJlbDogJ1N3ZWRlbicsXG4gICAgICBmZWVkYmFjazoge1xuICAgICAgICB0eXBlOiAnbm9uZScsXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ2ljZWxhbmQnLFxuICAgICAgbGFiZWw6ICdJY2VsYW5kJyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnbm9yd2F5JyxcbiAgICAgIGxhYmVsOiAnTm9yd2F5JyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICB2YWx1ZTogJ2ZpbmxhbmQnLFxuICAgICAgbGFiZWw6ICdGaW5sYW5kJyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgfSxcbiAgICB9LFxuICBdLFxuICBwYXJ0aWFsU2NvcmluZzogZmFsc2UsXG4gIGNvbmZpZ3VyZToge30sXG4gIC4uLmV4dHJhcyxcbn0pO1xuXG5kZXNjcmliZSgnTWFpbicsICgpID0+IHtcbiAgbGV0IHc7XG4gIGxldCBvbk1vZGVsQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgbGV0IG9uQ29uZmlndXJhdGlvbkNoYW5nZWQgPSBqZXN0LmZuKCk7XG4gIGxldCBpbml0aWFsTW9kZWwgPSBtb2RlbCgpO1xuXG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBvbk1vZGVsQ2hhbmdlZCxcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQsXG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIG1vZGVsOiBtb2RlbCgpLFxuICAgIH07XG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRzLCAuLi5leHRyYXMgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxNYWluIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRoIGNob2ljZVByZWZpeD1cIm51bWJlcnNcIicsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKHsgbW9kZWw6IG1vZGVsKHsgY2hvaWNlUHJlZml4OiAnbnVtYmVycycgfSkgfSk7XG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGNob2ljZVByZWZpeD1cImxldHRlcnNcIiBhcyBkZWZhdWx0JywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnb25SZW1vdmVDaG9pY2UnLCAoKSA9PiB7XG4gICAgICBpdCgncmVtb3ZlcyBjaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgwKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgY2hvaWNlczogaW5pdGlhbE1vZGVsLmNob2ljZXMuc2xpY2UoMSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY3JlYXRlRGVmYXVsdE1vZGVsJywgKCkgPT4ge1xuICAgICAgaXQoJ3NldHMgY2hvaWNlc0xheW91dDogaG9yaXpvbnRhbCBpZiB2ZXJ0aWNhbE1vZGU6IGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKHsgdmVydGljYWxNb2RlOiBmYWxzZSwgY2hvaWNlc0xheW91dDogdW5kZWZpbmVkIH0pKTtcblxuICAgICAgICBleHBlY3QobS5jaG9pY2VzTGF5b3V0KS50b0VxdWFsKCdob3Jpem9udGFsJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NldHMgY2hvaWNlc0xheW91dDogdmVydGljYWwgaWYgdmVydGljYWxNb2RlOiB0cnVlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKHsgdmVydGljYWxNb2RlOiB0cnVlLCBjaG9pY2VzTGF5b3V0OiB1bmRlZmluZWQgfSkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ3ZlcnRpY2FsJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NldHMgY2hvaWNlc0xheW91dDogZ3JpZCBpZiB2ZXJ0aWNhbE1vZGU6IHRydWUgJiYgY2hvaWNlc0xheW91dDogZ3JpZCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgbSA9IE11bHRpcGxlQ2hvaWNlLmNyZWF0ZURlZmF1bHRNb2RlbChtb2RlbCh7IHZlcnRpY2FsTW9kZTogdHJ1ZSwgY2hvaWNlc0xheW91dDogJ2dyaWQnIH0pKTtcblxuICAgICAgICBleHBlY3QobS5jaG9pY2VzTGF5b3V0KS50b0VxdWFsKCdncmlkJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NldHMgY2hvaWNlc0xheW91dDogdmVydGljYWwnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG0gPSBNdWx0aXBsZUNob2ljZS5jcmVhdGVEZWZhdWx0TW9kZWwobW9kZWwoKSk7XG5cbiAgICAgICAgZXhwZWN0KG0uY2hvaWNlc0xheW91dCkudG9FcXVhbCgndmVydGljYWwnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uQWRkQ2hvaWNlJywgKCkgPT4ge1xuICAgICAgaXQoJ2FkZHMgYSBjaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkFkZENob2ljZSgpO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwuY2hvaWNlcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICAgICAgICB2YWx1ZTogdXRpbHMuZmlyc3RBdmFpbGFibGVJbmRleChcbiAgICAgICAgICAgICAgICBpbml0aWFsTW9kZWwuY2hvaWNlcy5tYXAoKGMpID0+IGMudmFsdWUpLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uQ2hvaWNlQ2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGRlc2NyaWJlKCdjaGVja2JveCcsICgpID0+IHtcbiAgICAgICAgaXQoJ2NoYW5nZXMgY2hvaWNlICh0aGVyZSBhcmUgMiB0cnVlIHZhbHVlcyknLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IFsuLi5tb2RlbCgpLmNob2ljZXNdO1xuICAgICAgICAgIGxldCBjaG9pY2UgPSB7XG4gICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICdpY2VsYW5kJyxcbiAgICAgICAgICAgIGxhYmVsOiAnSWNlbGFuZCcsXG4gICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICB0eXBlOiAnbm9uZScsXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHcuaW5zdGFuY2UoKS5vbkNob2ljZUNoYW5nZWQoMSwgY2hvaWNlKTtcblxuICAgICAgICAgIG5ld0Nob2ljZXNbMV0uY29ycmVjdCA9IHRydWU7XG5cbiAgICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICAgIGNob2ljZXM6IG5ld0Nob2ljZXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdyYWRpbycsICgpID0+IHtcbiAgICAgICAgaXQoJ2NoYW5nZXMgY2hvaWNlICh0aGVyZSBpcyBvbmx5IG9uZSB0cnVlIHZhbHVlKScsICgpID0+IHtcbiAgICAgICAgICBsZXQgY2hvaWNlID0ge1xuICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAnaWNlbGFuZCcsXG4gICAgICAgICAgICBsYWJlbDogJ0ljZWxhbmQnLFxuICAgICAgICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBuZXdNb2RlbCA9IHsgLi4uaW5pdGlhbE1vZGVsLCBjaG9pY2VNb2RlOiAncmFkaW8nLCBjaG9pY2VzOiBpbml0aWFsTW9kZWwuY2hvaWNlcy5zbGljZSgwLCAyKSB9O1xuICAgICAgICAgIHcgPSB3cmFwcGVyKHsgbW9kZWw6IG5ld01vZGVsIH0pO1xuXG4gICAgICAgICAgdy5pbnN0YW5jZSgpLm9uQ2hvaWNlQ2hhbmdlZCgxLCBjaG9pY2UpO1xuXG4gICAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgICAuLi5uZXdNb2RlbCxcbiAgICAgICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnc3dlZGVuJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1N3ZWRlbicsXG4gICAgICAgICAgICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2ljZWxhbmQnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSWNlbGFuZCcsXG4gICAgICAgICAgICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblByb21wdENoYW5nZWQnLCAoKSA9PiB7XG4gICAgICBpdCgnY2hhbmdlcyBwcm9tcHQnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblByb21wdENoYW5nZWQoJ05ldyBQcm9tcHQnKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgcHJvbXB0OiAnTmV3IFByb21wdCcsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGl0KCdjaGFuZ2VzIHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCgnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4uaW5pdGlhbE1vZGVsLFxuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6ICdOZXcgVGVhY2hlciBJbnN0cnVjdGlvbnMnLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uTW9kZWxDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgaXQoJ2NoYW5nZXMgY2hvaWNlIGFuZCBtYWtlcyBpbmNvcnJlY3QgYWxsIG90aGVyIGNob2ljZXMnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbk1vZGVsQ2hhbmdlZChcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgICBjaG9pY2VNb2RlOiAncmFkaW8nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2Nob2ljZU1vZGUnLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGV4cGVjdGVkQ2hvaWNlcyA9IG1vZGVsKCkuY2hvaWNlcztcblxuICAgICAgICBleHBlY3RlZENob2ljZXMuZm9yRWFjaCgoZUMsIGluZGV4KSA9PiB7XG4gICAgICAgICAgZUMuY29ycmVjdCA9IGluZGV4ID09PSAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICAgIGNob2ljZU1vZGU6ICdyYWRpbycsXG4gICAgICAgICAgICBjaG9pY2VzOiBleHBlY3RlZENob2ljZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|