@pie-element/multiple-choice 9.19.0-beta.0 → 9.19.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +68 -2
  2. package/configure/CHANGELOG.md +61 -2
  3. package/configure/lib/defaults.js +1 -1
  4. package/configure/lib/defaults.js.map +1 -0
  5. package/configure/lib/index.js +2 -2
  6. package/configure/lib/index.js.map +1 -0
  7. package/configure/lib/main.js +7 -7
  8. package/configure/lib/main.js.map +1 -0
  9. package/configure/lib/utils.js +1 -1
  10. package/configure/lib/utils.js.map +1 -0
  11. package/configure/package.json +2 -4
  12. package/controller/CHANGELOG.md +61 -2
  13. package/controller/lib/defaults.js +1 -1
  14. package/controller/lib/defaults.js.map +1 -0
  15. package/controller/lib/index.js +2 -2
  16. package/controller/lib/index.js.map +1 -0
  17. package/controller/lib/utils.js +1 -1
  18. package/controller/lib/utils.js.map +1 -0
  19. package/controller/package.json +2 -2
  20. package/lib/choice-input.js +2 -2
  21. package/lib/choice-input.js.map +1 -0
  22. package/lib/choice.js +1 -1
  23. package/lib/choice.js.map +1 -0
  24. package/lib/feedback-tick.js +2 -2
  25. package/lib/feedback-tick.js.map +1 -0
  26. package/lib/index.js +22 -8
  27. package/lib/index.js.map +1 -0
  28. package/lib/main.js +2 -2
  29. package/lib/main.js.map +1 -0
  30. package/lib/multiple-choice.js +9 -6
  31. package/lib/multiple-choice.js.map +1 -0
  32. package/lib/print.js +2 -2
  33. package/lib/print.js.map +1 -0
  34. package/lib/session-updater.js +1 -1
  35. package/lib/session-updater.js.map +1 -0
  36. package/module/configure.js +11070 -0
  37. package/module/controller.js +3601 -0
  38. package/module/demo.js +86 -0
  39. package/module/element.js +13461 -0
  40. package/module/index.html +21 -0
  41. package/module/manifest.json +14 -0
  42. package/module/print-demo.js +124 -0
  43. package/module/print.html +18 -0
  44. package/module/print.js +13207 -0
  45. package/package.json +3 -6
  46. package/configure/lib/__tests__/root.test.js +0 -271
  47. package/controller/lib/__tests__/index.test.js +0 -867
  48. package/controller/lib/__tests__/utils.test.js +0 -8
  49. package/docs/demo/pie.manifest.json +0 -11
  50. package/lib/__tests__/choice-input-test.js +0 -131
  51. package/lib/__tests__/index-test.js +0 -183
  52. package/lib/__tests__/key-events-test.js +0 -98
  53. package/lib/__tests__/multiple-choice-test.js +0 -235
  54. package/lib/__tests__/session-updater-test.js +0 -72
package/lib/index.js CHANGED
@@ -35,9 +35,9 @@ var _debug = _interopRequireDefault(require("debug"));
35
35
 
36
36
  var _piePlayerEvents = require("@pie-framework/pie-player-events");
37
37
 
38
- var _mathRendering = require("@pie-lib/math-rendering");
38
+ var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
39
39
 
40
- var _renderUi = require("@pie-lib/render-ui");
40
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
41
41
 
42
42
  var _sessionUpdater = require("./session-updater");
43
43
 
@@ -47,13 +47,21 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
47
47
 
48
48
  var log = (0, _debug["default"])('pie-ui:multiple-choice');
49
49
 
50
- var isComplete = function isComplete(session, model, audioComplete) {
50
+ var isComplete = function isComplete(session, model, audioComplete, elementContext) {
51
51
  var _ref = model || {},
52
52
  autoplayAudioEnabled = _ref.autoplayAudioEnabled,
53
- completeAudioEnabled = _ref.completeAudioEnabled;
53
+ completeAudioEnabled = _ref.completeAudioEnabled; // check audio completion if audio settings are enabled and audio actually exists
54
+
54
55
 
55
56
  if (autoplayAudioEnabled && completeAudioEnabled && !audioComplete) {
56
- return false;
57
+ if (elementContext) {
58
+ var audio = elementContext.querySelector('audio');
59
+ var isInsidePrompt = audio && audio.closest('#preview-prompt'); // only require audio completion if audio exists and is inside the prompt
60
+
61
+ if (audio && isInsidePrompt) {
62
+ return false;
63
+ }
64
+ }
57
65
  }
58
66
 
59
67
  if (!session || !session.value) {
@@ -129,10 +137,10 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
129
137
  trailing: true
130
138
  });
131
139
  _this._dispatchResponseChanged = (0, _debounce["default"])(function () {
132
- _this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(_this.tagName.toLowerCase(), isComplete(_this._session, _this._model, _this.audioComplete)));
140
+ _this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(_this.tagName.toLowerCase(), isComplete(_this._session, _this._model, _this.audioComplete, (0, _assertThisInitialized2["default"])(_this))));
133
141
  });
134
142
  _this._dispatchModelSet = (0, _debounce["default"])(function () {
135
- _this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(_this.tagName.toLowerCase(), isComplete(_this._session, _this._model), _this._model !== undefined));
143
+ _this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(_this.tagName.toLowerCase(), isComplete(_this._session, _this._model, _this.audioComplete, (0, _assertThisInitialized2["default"])(_this)), _this._model !== undefined));
136
144
  }, 50, {
137
145
  leading: false,
138
146
  trailing: true
@@ -344,6 +352,12 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
344
352
  return;
345
353
  }
346
354
 
355
+ var mode = this._model.mode;
356
+
357
+ if (mode !== 'gather') {
358
+ return;
359
+ }
360
+
347
361
  var keyToIndex = function keyToIndex(key) {
348
362
  var numOffset = key >= '1' && key <= '9' ? key - '1' : key === '0' ? 9 : -1;
349
363
  var letterOffset = /^[a-jA-J]$/.test(key) ? key.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0) : -1;
@@ -371,4 +385,4 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
371
385
  }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
372
386
 
373
387
  exports["default"] = MultipleChoice;
374
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJpc0NvbXBsZXRlIiwic2Vzc2lvbiIsIm1vZGVsIiwiYXVkaW9Db21wbGV0ZSIsImF1dG9wbGF5QXVkaW9FbmFibGVkIiwiY29tcGxldGVBdWRpb0VuYWJsZWQiLCJ2YWx1ZSIsImNob2ljZU1vZGUiLCJtaW5TZWxlY3Rpb25zIiwibWF4U2VsZWN0aW9ucyIsInNlbGVjdGlvbnMiLCJsZW5ndGgiLCJNdWx0aXBsZUNob2ljZSIsIl9tb2RlbCIsIl9zZXNzaW9uIiwiX2JvdW5kSGFuZGxlS2V5RG93biIsImhhbmRsZUtleURvd24iLCJiaW5kIiwiX2tleWJvYXJkRXZlbnRzRW5hYmxlZCIsIl9hdWRpb0luaXRpYWxpemVkIiwiX3JlcmVuZGVyIiwiZWxlbWVudCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIk1haW4iLCJvbkNob2ljZUNoYW5nZWQiLCJfb25DaGFuZ2UiLCJvblNob3dDb3JyZWN0VG9nZ2xlIiwic2V0QXR0cmlidXRlIiwic2V0TGFuZ0F0dHJpYnV0ZSIsIlJlYWN0RE9NIiwicmVuZGVyIiwia2V5Ym9hcmRFdmVudHNFbmFibGVkIiwiZW5hYmxlS2V5Ym9hcmRFdmVudHMiLCJsZWFkaW5nIiwidHJhaWxpbmciLCJfZGlzcGF0Y2hSZXNwb25zZUNoYW5nZWQiLCJkaXNwYXRjaEV2ZW50IiwiU2Vzc2lvbkNoYW5nZWRFdmVudCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsIl9kaXNwYXRjaE1vZGVsU2V0IiwiTW9kZWxTZXRFdmVudCIsInVuZGVmaW5lZCIsImxhbmd1YWdlIiwibGFuZyIsInNsaWNlIiwicyIsImRhdGEiLCJpbmZvIiwiZG9jdW1lbnQiLCJpZCIsIk9iamVjdCIsImFzc2lnbiIsInN0eWxlIiwicG9zaXRpb24iLCJ0b3AiLCJ3aWR0aCIsImhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJiYWNrZ3JvdW5kIiwiekluZGV4IiwiY3Vyc29yIiwiaW1nIiwic3JjIiwiRW5hYmxlQXVkaW9BdXRvcGxheUltYWdlIiwiYWx0IiwiYXBwZW5kQ2hpbGQiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnNMaXN0IiwiZm9yRWFjaCIsIm11dGF0aW9uIiwidHlwZSIsImF1ZGlvIiwicXVlcnlTZWxlY3RvciIsImlzSW5zaWRlUHJvbXB0IiwiY2xvc2VzdCIsIl9jcmVhdGVBdWRpb0luZm9Ub2FzdCIsImNvbnRhaW5lciIsImVuYWJsZUF1ZGlvIiwicGxheSIsInJlbW92ZUNoaWxkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFRpbWVvdXQiLCJwYXVzZWQiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlUGxheWluZyIsImF1ZGlvU3RhcnRUaW1lIiwiRGF0ZSIsImdldFRpbWUiLCJoYW5kbGVFbmRlZCIsImF1ZGlvRW5kVGltZSIsIl9hdWRpbyIsIl9oYW5kbGVQbGF5aW5nIiwiX2hhbmRsZUVuZGVkIiwiX2VuYWJsZUF1ZGlvIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwid2luZG93IiwiZXZlbnQiLCJrZXlUb0luZGV4Iiwia2V5IiwibnVtT2Zmc2V0IiwibGV0dGVyT2Zmc2V0IiwidGVzdCIsImNoYXJDb2RlQXQiLCJjaG9pY2VJbmRleCIsImNob2ljZXMiLCJjdXJyZW50VmFsdWUiLCJjaG9pY2VJZCIsIm5ld1ZhbHVlIiwic2VsZWN0ZWQiLCJpbmNsdWRlcyIsInNlbGVjdG9yIiwiSFRNTEVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLHdCQUFOLENBQVo7O0FBRU8sSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ0MsT0FBRCxFQUFVQyxLQUFWLEVBQWlCQyxhQUFqQixF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QUwsQ0FBWW1HLE9BQWhCLHlEQUFJLHFCQUFxQnJHLE1BQXpCLENBQWpFLEVBQWtHO0FBQ2hHO0FBQ0Q7O0FBRUQsVUFBTXNHLFlBQVksR0FBRyxLQUFLbkcsUUFBTCxDQUFjUixLQUFkLElBQXVCLEVBQTVDO0FBQ0EsVUFBTTRHLFFBQVEsR0FBRyxLQUFLckcsTUFBTCxDQUFZbUcsT0FBWixDQUFvQkQsV0FBcEIsRUFBaUN6RyxLQUFsRDtBQUVBLFVBQU02RyxRQUFRLEdBQUc7QUFDZjdHLFFBQUFBLEtBQUssRUFBRTRHLFFBRFE7QUFFZkUsUUFBQUEsUUFBUSxFQUFFLENBQUNILFlBQVksQ0FBQ0ksUUFBYixDQUFzQkgsUUFBdEIsQ0FGSTtBQUdmSSxRQUFBQSxRQUFRLEVBQUU7QUFISyxPQUFqQjs7QUFNQSxXQUFLNUYsU0FBTCxDQUFleUYsUUFBZjtBQUNEOzs7a0RBdlF5Q0ksVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYWluIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBNb2RlbFNldEV2ZW50LCBTZXNzaW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQHBpZS1mcmFtZXdvcmsvcGllLXBsYXllci1ldmVudHMnO1xuaW1wb3J0IHsgcmVuZGVyTWF0aCB9IGZyb20gJ0BwaWUtbGliL21hdGgtcmVuZGVyaW5nJztcbmltcG9ydCB7IEVuYWJsZUF1ZGlvQXV0b3BsYXlJbWFnZSB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyB1cGRhdGVTZXNzaW9uVmFsdWUsIHVwZGF0ZVNlc3Npb25NZXRhZGF0YSB9IGZyb20gJy4vc2Vzc2lvbi11cGRhdGVyJztcblxuY29uc3QgbG9nID0gZGVidWcoJ3BpZS11aTptdWx0aXBsZS1jaG9pY2UnKTtcblxuZXhwb3J0IGNvbnN0IGlzQ29tcGxldGUgPSAoc2Vzc2lvbiwgbW9kZWwsIGF1ZGlvQ29tcGxldGUpID0+IHtcbiAgY29uc3QgeyBhdXRvcGxheUF1ZGlvRW5hYmxlZCwgY29tcGxldGVBdWRpb0VuYWJsZWQgfSA9IG1vZGVsIHx8IHt9O1xuXG4gIGlmIChhdXRvcGxheUF1ZGlvRW5hYmxlZCAmJiBjb21wbGV0ZUF1ZGlvRW5hYmxlZCAmJiAhYXVkaW9Db21wbGV0ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi52YWx1ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHsgY2hvaWNlTW9kZSwgbWluU2VsZWN0aW9ucyA9IDEsIG1heFNlbGVjdGlvbnMgfSA9IG1vZGVsIHx8IHt9O1xuICBjb25zdCBzZWxlY3Rpb25zID0gc2Vzc2lvbi52YWx1ZS5sZW5ndGggfHwgMDtcblxuICBpZiAoY2hvaWNlTW9kZSA9PT0gJ3JhZGlvJykge1xuICAgIHJldHVybiAhIXNlbGVjdGlvbnM7XG4gIH1cblxuICBpZiAoc2VsZWN0aW9ucyA8IG1pblNlbGVjdGlvbnMgfHwgc2VsZWN0aW9ucyA+IG1heFNlbGVjdGlvbnMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpcGxlQ2hvaWNlIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21vZGVsID0gbnVsbDtcbiAgICB0aGlzLl9zZXNzaW9uID0gbnVsbDtcbiAgICB0aGlzLmF1ZGlvQ29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLl9ib3VuZEhhbmRsZUtleURvd24gPSB0aGlzLmhhbmRsZUtleURvd24uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9rZXlib2FyZEV2ZW50c0VuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9hdWRpb0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICB0aGlzLl9yZXJlbmRlciA9IGRlYm91bmNlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbW9kZWwgJiYgdGhpcy5fc2Vzc2lvbikge1xuICAgICAgICAgIHZhciBlbGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChNYWluLCB7XG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWwsXG4gICAgICAgICAgICBzZXNzaW9uOiB0aGlzLl9zZXNzaW9uLFxuICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkOiB0aGlzLl9vbkNoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgb25TaG93Q29ycmVjdFRvZ2dsZTogdGhpcy5vblNob3dDb3JyZWN0VG9nZ2xlLmJpbmQodGhpcyksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvL1RPRE86IGFyaWEtbGFiZWwgaXMgc2V0IGluIHRoZSBfcmVyZW5kZXIgYmVjYXVzZSB3ZSBuZWVkIHRvIGNoYW5nZSBpdCB3aGVuIHRoZSBtb2RlbC5jaG9pY2VNb2RlIGlzIHVwZGF0ZWQuIENvbnNpZGVyIHJldmlzaXRpbmcgdGhlIHBsYWNlbWVudCBvZiB0aGUgYXJpYS1sYWJlbCBzZXR0aW5nIGluIHRoZSBfcmVyZW5kZXJcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdhcmlhLWxhYmVsJyxcbiAgICAgICAgICAgIHRoaXMuX21vZGVsLmNob2ljZU1vZGUgPT09ICdyYWRpbycgPyAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uJyA6ICdNdWx0aXBsZSBDb3JyZWN0IEFuc3dlciBRdWVzdGlvbicsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsICdyZWdpb24nKTtcbiAgICAgICAgICB0aGlzLnNldExhbmdBdHRyaWJ1dGUoKTtcblxuICAgICAgICAgIFJlYWN0RE9NLnJlbmRlcihlbGVtZW50LCB0aGlzLCAoKSA9PiB7XG4gICAgICAgICAgICBsb2coJ3JlbmRlciBjb21wbGV0ZSAtIHJlbmRlciBtYXRoJyk7XG4gICAgICAgICAgICByZW5kZXJNYXRoKHRoaXMpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX21vZGVsLmtleWJvYXJkRXZlbnRzRW5hYmxlZCA9PT0gdHJ1ZSAmJiAhdGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUtleWJvYXJkRXZlbnRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZygnc2tpcCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgNTAsXG4gICAgICB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQodGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCksIGlzQ29tcGxldGUodGhpcy5fc2Vzc2lvbiwgdGhpcy5fbW9kZWwsIHRoaXMuYXVkaW9Db21wbGV0ZSkpLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3BhdGNoTW9kZWxTZXQgPSBkZWJvdW5jZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBNb2RlbFNldEV2ZW50KFxuICAgICAgICAgICAgdGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBpc0NvbXBsZXRlKHRoaXMuX3Nlc3Npb24sIHRoaXMuX21vZGVsKSxcbiAgICAgICAgICAgIHRoaXMuX21vZGVsICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICA1MCxcbiAgICAgIHsgbGVhZGluZzogZmFsc2UsIHRyYWlsaW5nOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIG9uU2hvd0NvcnJlY3RUb2dnbGUoKSB7XG4gICAgcmVuZGVyTWF0aCh0aGlzKTtcbiAgfVxuXG4gIHNldExhbmdBdHRyaWJ1dGUoKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9tb2RlbCAmJiB0eXBlb2YgdGhpcy5fbW9kZWwubGFuZ3VhZ2UgPyB0aGlzLl9tb2RlbC5sYW5ndWFnZSA6ICcnO1xuICAgIGNvbnN0IGxhbmcgPSBsYW5ndWFnZSA/IGxhbmd1YWdlLnNsaWNlKDAsIDIpIDogJ2VuJztcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbGFuZycsIGxhbmcpO1xuICB9XG5cbiAgc2V0IG1vZGVsKHMpIHtcbiAgICB0aGlzLl9tb2RlbCA9IHM7XG4gICAgdGhpcy5fcmVyZW5kZXIoKTtcbiAgICAvLyByZXNldCB0aGUgYXVkaW9Jbml0aWFsaXplZCB0byBmYWxzZSBzaW5jZSB0aGUgbW9kZWwgY2hhbmdlZCwgYW5kIHdlIG1pZ2h0IG5lZWQgdG8gcmVpbml0aWFsaXplIHRoZSBhdWRpb1xuICAgIHRoaXMuX2F1ZGlvSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwYXRjaE1vZGVsU2V0KCk7XG4gIH1cblxuICBnZXQgc2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbjtcbiAgfVxuXG4gIHNldCBzZXNzaW9uKHMpIHtcbiAgICB0aGlzLl9zZXNzaW9uID0gcztcbiAgICB0aGlzLl9yZXJlbmRlcigpO1xuICAgIC8vVE9ETzogcmVtb3ZlIHRoaXMgc2Vzc2lvbi1jaGFuZ2VkIHNob3VsZCBvbmx5IGJlIGVtaXQgb24gdXNlciBjaGFuZ2VcbiAgICB0aGlzLl9kaXNwYXRjaFJlc3BvbnNlQ2hhbmdlZCgpO1xuICB9XG5cbiAgX29uQ2hhbmdlKGRhdGEpIHtcbiAgICB1cGRhdGVTZXNzaW9uVmFsdWUodGhpcy5fc2Vzc2lvbiwgdGhpcy5fbW9kZWwuY2hvaWNlTW9kZSwgZGF0YSk7XG4gICAgdGhpcy5fZGlzcGF0Y2hSZXNwb25zZUNoYW5nZWQoKTtcbiAgICB0aGlzLl9yZXJlbmRlcigpO1xuICB9XG5cbiAgX2NyZWF0ZUF1ZGlvSW5mb1RvYXN0KCkge1xuICAgIGNvbnN0IGluZm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBpbmZvLmlkID0gJ3BsYXktYXVkaW8taW5mbyc7XG5cbiAgICBPYmplY3QuYXNzaWduKGluZm8uc3R5bGUsIHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLFxuICAgICAgd2lkdGg6JzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIGJhY2tncm91bmQ6ICd3aGl0ZScsXG4gICAgICB6SW5kZXg6ICcxMDAwJyxcbiAgICAgIGN1cnNvcjogJ3BvaW50ZXInXG4gICAgfSk7XG5cbiAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICBpbWcuc3JjID0gRW5hYmxlQXVkaW9BdXRvcGxheUltYWdlO1xuICAgIGltZy5hbHQgPSAnQ2xpY2sgYW55d2hlcmUgdG8gZW5hYmxlIGF1ZGlvIGF1dG9wbGF5JztcbiAgICBpbWcud2lkdGggPSA1MDA7XG4gICAgaW1nLmhlaWdodCA9IDMwMDtcblxuICAgIGluZm8uYXBwZW5kQ2hpbGQoaW1nKTtcbiAgICByZXR1cm4gaW5mbztcbiAgfVxuXG4gIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgIHRoaXMuX3JlcmVuZGVyKCk7XG5cbiAgICAvLyBPYnNlcnZhdGlvbjogIGF1ZGlvIGluIENocm9tZSB3aWxsIGhhdmUgdGhlIGF1dG9wbGF5IGF0dHJpYnV0ZSxcbiAgICAvLyB3aGlsZSBvdGhlciBicm93c2VycyB3aWxsIG5vdCBoYXZlIHRoZSBhdXRvcGxheSBhdHRyaWJ1dGUgYW5kIHdpbGwgbmVlZCBhIHVzZXIgaW50ZXJhY3Rpb24gdG8gcGxheSB0aGUgYXVkaW9cbiAgICAvLyBUaGlzIHdvcmthcm91bmQgZml4ZXMgdGhlIGlzc3VlIG9mIGF1ZGlvIGJlaW5nIGNhY2hlZCBhbmQgcGxheWVkIG9uIGFueSB1c2VyIGludGVyYWN0aW9uIGluIFNhZmFyaSBhbmQgRmlyZWZveFxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QsIG9ic2VydmVyKSA9PiB7XG4gICAgICBtdXRhdGlvbnNMaXN0LmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0luaXRpYWxpemVkKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBhdWRpbyA9IHRoaXMucXVlcnlTZWxlY3RvcignYXVkaW8nKTtcbiAgICAgICAgICBjb25zdCBpc0luc2lkZVByb21wdCA9IGF1ZGlvICYmIGF1ZGlvLmNsb3Nlc3QoJyNwcmV2aWV3LXByb21wdCcpO1xuXG4gICAgICAgICAgaWYgKCF0aGlzLl9tb2RlbCkgcmV0dXJuO1xuICAgICAgICAgIGlmICghdGhpcy5fbW9kZWwuYXV0b3BsYXlBdWRpb0VuYWJsZWQpIHJldHVybjtcbiAgICAgICAgICBpZiAoYXVkaW8gJiYgIWlzSW5zaWRlUHJvbXB0KSByZXR1cm47XG4gICAgICAgICAgaWYgKCFhdWRpbykgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuX2NyZWF0ZUF1ZGlvSW5mb1RvYXN0KCk7XG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcjbWFpbi1jb250YWluZXInKTtcbiAgICAgICAgICBjb25zdCBlbmFibGVBdWRpbyA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5U2VsZWN0b3IoJyNwbGF5LWF1ZGlvLWluZm8nKSkge1xuICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XG4gICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChpbmZvKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlbmFibGVBdWRpbyk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIGlmIHRoZSBhdWRpbyBpcyBwYXVzZWQsIGl0IG1lYW5zIHRoZSB1c2VyIGhhcyBub3QgaW50ZXJhY3RlZCB3aXRoIHRoZSBwYWdlIHlldCBhbmQgdGhlIGF1ZGlvIHdpbGwgbm90IHBsYXlcbiAgICAgICAgICAvLyBGSVggRk9SIFNBRkFSSTogcGxheSB3aXRoIGEgc2xpZ2h0IGRlbGF5IHRvIGNoZWNrIGlmIGF1dG9wbGF5IHdhcyBibG9ja2VkXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXVkaW8ucGF1c2VkICYmICF0aGlzLnF1ZXJ5U2VsZWN0b3IoJyNwbGF5LWF1ZGlvLWluZm8nKSkge1xuICAgICAgICAgICAgICAvLyBhZGQgaW5mbyBtZXNzYWdlIGFzIGEgdG9hc3QgdG8gZW5hYmxlIGF1ZGlvIHBsYXliYWNrXG4gICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbmZvKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlbmFibGVBdWRpbyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGVuYWJsZUF1ZGlvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCA1MDApO1xuXG4gICAgICAgICAgLy8gd2UgbmVlZCB0byBsaXN0ZW4gZm9yIHRoZSBwbGF5aW5nIGV2ZW50IHRvIHJlbW92ZSB0aGUgdG9hc3QgaW4gY2FzZSB0aGUgYXVkaW8gcGxheXMgYmVjYXVzZSBvZiByZS1yZW5kZXJpbmdcbiAgICAgICAgICBjb25zdCBoYW5kbGVQbGF5aW5nID0gKCkgPT4ge1xuICAgICAgICAgICAgdXBkYXRlU2Vzc2lvbk1ldGFkYXRhKHRoaXMuX3Nlc3Npb24sIHsgYXVkaW9TdGFydFRpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcjcGxheS1hdWRpby1pbmZvJyk7XG4gICAgICAgICAgICBpZiAoaW5mbykge1xuICAgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoaW5mbyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBoYW5kbGVQbGF5aW5nKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIGhhbmRsZVBsYXlpbmcpO1xuXG4gICAgICAgICAgLy8gd2UgbmVlZCB0byBsaXN0ZW4gZm9yIHRoZSBlbmRlZCBldmVudCB0byB1cGRhdGUgdGhlIGlzQ29tcGxldGUgc3RhdGVcbiAgICAgICAgICBjb25zdCBoYW5kbGVFbmRlZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVNlc3Npb25NZXRhZGF0YSh0aGlzLl9zZXNzaW9uLCB7IGF1ZGlvRW5kVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgfSk7XG4gICAgICAgICAgICB0aGlzLmF1ZGlvQ29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hSZXNwb25zZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIGF1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgaGFuZGxlRW5kZWQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIGhhbmRsZUVuZGVkKTtcblxuICAgICAgICAgIC8vIHN0b3JlIHJlZmVyZW5jZXMgdG8gcmVtb3ZlIGxhdGVyXG4gICAgICAgICAgdGhpcy5fYXVkaW8gPSBhdWRpbztcbiAgICAgICAgICB0aGlzLl9oYW5kbGVQbGF5aW5nID0gaGFuZGxlUGxheWluZztcbiAgICAgICAgICB0aGlzLl9oYW5kbGVFbmRlZCA9IGhhbmRsZUVuZGVkO1xuICAgICAgICAgIHRoaXMuX2VuYWJsZUF1ZGlvID0gZW5hYmxlQXVkaW87XG4gICAgICAgICAgLy8gc2V0IHRvIHRydWUgdG8gcHJldmVudCBtdWx0aXBsZSBpbml0aWFsaXphdGlvbnNcbiAgICAgICAgICB0aGlzLl9hdWRpb0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICB9XG5cbiAgZW5hYmxlS2V5Ym9hcmRFdmVudHMoKSB7XG4gICAgaWYgKCF0aGlzLl9rZXlib2FyZEV2ZW50c0VuYWJsZWQpIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fYm91bmRIYW5kbGVLZXlEb3duKTtcbiAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzRW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgaWYgKHRoaXMuX2tleWJvYXJkRXZlbnRzRW5hYmxlZCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLl9ib3VuZEhhbmRsZUtleURvd24pO1xuICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNFbmFibGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9lbmFibGVBdWRpbyk7XG5cbiAgICBpZiAodGhpcy5fYXVkaW8pIHtcbiAgICAgIHRoaXMuX2F1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9oYW5kbGVQbGF5aW5nKTtcbiAgICAgIHRoaXMuX2F1ZGlvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgdGhpcy5faGFuZGxlRW5kZWQpO1xuICAgICAgdGhpcy5fYXVkaW8gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGdsb2JhbCBrZXlib2FyZCBldmVudHMgZm9yIHNlbGVjdGluZyBvciB0b2dnbGluZyBtdWx0aXBsZS1jaG9pY2UgYW5zd2Vycy5cbiAgICogTWFwcyBrZXlzICgxLTksIDAsIGEtaiwgQS1KKSB0byBjaG9pY2VzIGFuZCB1cGRhdGVzIHRoZSBzZXNzaW9uIHN0YXRlIGFjY29yZGluZ2x5LlxuICAgKiBFbnN1cmVzIHZhbGlkIGtleSBwcmVzc2VzIHRvZ2dsZSBvciBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGNob2ljZSBiYXNlZCBvbiB0aGUgbW9kZWwuXG4gICAqL1xuICBoYW5kbGVLZXlEb3duKGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9tb2RlbCB8fCAhdGhpcy5fc2Vzc2lvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleVRvSW5kZXggPSAoa2V5KSA9PiB7XG4gICAgICBjb25zdCBudW1PZmZzZXQgPSBrZXkgPj0gJzEnICYmIGtleSA8PSAnOScgPyBrZXkgLSAnMScgOiBrZXkgPT09ICcwJyA/IDkgOiAtMTtcbiAgICAgIGNvbnN0IGxldHRlck9mZnNldCA9IC9eW2EtakEtSl0kLy50ZXN0KGtleSkgPyBrZXkudG9Mb3dlckNhc2UoKS5jaGFyQ29kZUF0KDApIC0gJ2EnLmNoYXJDb2RlQXQoMCkgOiAtMTtcbiAgICAgIHJldHVybiBudW1PZmZzZXQgPj0gMCA/IG51bU9mZnNldCA6IGxldHRlck9mZnNldDtcbiAgICB9O1xuXG4gICAgY29uc3QgY2hvaWNlSW5kZXggPSBrZXlUb0luZGV4KGV2ZW50LmtleSk7XG5cbiAgICBpZiAoY2hvaWNlSW5kZXggPT09IHVuZGVmaW5lZCB8fCBjaG9pY2VJbmRleCA8PSAtMSB8fCBjaG9pY2VJbmRleCA+PSB0aGlzLl9tb2RlbC5jaG9pY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLl9zZXNzaW9uLnZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IGNob2ljZUlkID0gdGhpcy5fbW9kZWwuY2hvaWNlc1tjaG9pY2VJbmRleF0udmFsdWU7XG5cbiAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgIHZhbHVlOiBjaG9pY2VJZCxcbiAgICAgIHNlbGVjdGVkOiAhY3VycmVudFZhbHVlLmluY2x1ZGVzKGNob2ljZUlkKSxcbiAgICAgIHNlbGVjdG9yOiAnS2V5Ym9hcmQnLFxuICAgIH07XG5cbiAgICB0aGlzLl9vbkNoYW5nZShuZXdWYWx1ZSk7XG4gIH1cbn1cbiJdfQ==
388
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","isComplete","session","model","audioComplete","elementContext","autoplayAudioEnabled","completeAudioEnabled","audio","querySelector","isInsidePrompt","closest","value","choiceMode","minSelections","maxSelections","selections","length","MultipleChoice","_model","_session","_boundHandleKeyDown","handleKeyDown","bind","_keyboardEventsEnabled","_audioInitialized","_rerender","element","React","createElement","Main","onChoiceChanged","_onChange","onShowCorrectToggle","setAttribute","setLangAttribute","ReactDOM","render","keyboardEventsEnabled","enableKeyboardEvents","leading","trailing","_dispatchResponseChanged","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","_dispatchModelSet","ModelSetEvent","undefined","language","lang","slice","s","data","info","document","id","Object","assign","style","position","top","width","height","display","justifyContent","alignItems","background","zIndex","cursor","img","src","EnableAudioAutoplayImage","alt","appendChild","observer","MutationObserver","mutationsList","forEach","mutation","type","_createAudioInfoToast","container","enableAudio","play","removeChild","removeEventListener","setTimeout","paused","addEventListener","handlePlaying","audioStartTime","Date","getTime","handleEnded","audioEndTime","_audio","_handlePlaying","_handleEnded","_enableAudio","disconnect","observe","childList","subtree","window","event","mode","keyToIndex","key","numOffset","letterOffset","test","charCodeAt","choiceIndex","choices","currentValue","choiceId","newValue","selected","includes","selector","HTMLElement"],"mappings":"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","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport debug from 'debug';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\nimport { EnableAudioAutoplayImage } from '@pie-lib/pie-toolbox/render-ui';\nimport { updateSessionValue, updateSessionMetadata } from './session-updater';\n\nconst log = debug('pie-ui:multiple-choice');\n\nexport const isComplete = (session, model, audioComplete, elementContext) => {\n const { autoplayAudioEnabled, completeAudioEnabled } = model || {};\n\n // check audio completion if audio settings are enabled and audio actually exists\n if (autoplayAudioEnabled && completeAudioEnabled && !audioComplete) {\n if (elementContext) {\n const audio = elementContext.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('#preview-prompt');\n \n // only require audio completion if audio exists and is inside the prompt\n if (audio && isInsidePrompt) {\n return false;\n }\n }\n }\n\n if (!session || !session.value) {\n return false;\n }\n\n const { choiceMode, minSelections = 1, maxSelections } = model || {};\n const selections = session.value.length || 0;\n\n if (choiceMode === 'radio') {\n return !!selections;\n }\n\n if (selections < minSelections || selections > maxSelections) {\n return false;\n }\n\n return true;\n};\n\nexport default class MultipleChoice extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n this.audioComplete = false;\n this._boundHandleKeyDown = this.handleKeyDown.bind(this);\n this._keyboardEventsEnabled = false;\n this._audioInitialized = false;\n\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n var element = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onChoiceChanged: this._onChange.bind(this),\n onShowCorrectToggle: this.onShowCorrectToggle.bind(this),\n });\n\n //TODO: aria-label is set in the _rerender because we need to change it when the model.choiceMode is updated. Consider revisiting the placement of the aria-label setting in the _rerender\n this.setAttribute(\n 'aria-label',\n this._model.choiceMode === 'radio' ? 'Multiple Choice Question' : 'Multiple Correct Answer Question',\n );\n this.setAttribute('role', 'region');\n this.setLangAttribute();\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n\n if (this._model.keyboardEventsEnabled === true && !this._keyboardEventsEnabled) {\n this.enableKeyboardEvents();\n }\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n\n this._dispatchResponseChanged = debounce(() => {\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), isComplete(this._session, this._model, this.audioComplete, this)),\n );\n });\n\n this._dispatchModelSet = debounce(\n () => {\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n isComplete(this._session, this._model, this.audioComplete, this),\n this._model !== undefined,\n ),\n );\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n\n onShowCorrectToggle() {\n renderMath(this);\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n // reset the audioInitialized to false since the model changed, and we might need to reinitialize the audio\n this._audioInitialized = false;\n this._dispatchModelSet();\n }\n\n get session() {\n return this._session;\n }\n\n set session(s) {\n this._session = s;\n this._rerender();\n //TODO: remove this session-changed should only be emit on user change\n this._dispatchResponseChanged();\n }\n\n _onChange(data) {\n updateSessionValue(this._session, this._model.choiceMode, data);\n this._dispatchResponseChanged();\n this._rerender();\n }\n\n _createAudioInfoToast() {\n const info = document.createElement('div');\n info.id = 'play-audio-info';\n\n Object.assign(info.style, {\n position: 'absolute',\n top: 0,\n width:'100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n zIndex: '1000',\n cursor: 'pointer'\n });\n\n const img = document.createElement('img');\n img.src = EnableAudioAutoplayImage;\n img.alt = 'Click anywhere to enable audio autoplay';\n img.width = 500;\n img.height = 300;\n\n info.appendChild(img);\n return info;\n }\n\n connectedCallback() {\n this._rerender();\n\n // Observation: audio in Chrome will have the autoplay attribute,\n // while other browsers will not have the autoplay attribute and will need a user interaction to play the audio\n // This workaround fixes the issue of audio being cached and played on any user interaction in Safari and Firefox\n const observer = new MutationObserver((mutationsList, observer) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'childList') {\n if (this._audioInitialized) return;\n\n const audio = this.querySelector('audio');\n const isInsidePrompt = audio && audio.closest('#preview-prompt');\n\n if (!this._model) return;\n if (!this._model.autoplayAudioEnabled) return;\n if (audio && !isInsidePrompt) return;\n if (!audio) return;\n\n const info = this._createAudioInfoToast();\n const container = this.querySelector('#main-container');\n const enableAudio = () => {\n if (this.querySelector('#play-audio-info')) {\n audio.play();\n container.removeChild(info);\n }\n\n document.removeEventListener('click', enableAudio);\n };\n\n // if the audio is paused, it means the user has not interacted with the page yet and the audio will not play\n // FIX FOR SAFARI: play with a slight delay to check if autoplay was blocked\n setTimeout(() => {\n if (audio.paused && !this.querySelector('#play-audio-info')) {\n // add info message as a toast to enable audio playback\n container.appendChild(info);\n document.addEventListener('click', enableAudio);\n } else {\n document.removeEventListener('click', enableAudio);\n }\n }, 500);\n\n // we need to listen for the playing event to remove the toast in case the audio plays because of re-rendering\n const handlePlaying = () => {\n updateSessionMetadata(this._session, { audioStartTime: new Date().getTime() });\n\n const info = this.querySelector('#play-audio-info');\n if (info) {\n container.removeChild(info);\n }\n\n audio.removeEventListener('playing', handlePlaying);\n };\n\n audio.addEventListener('playing', handlePlaying);\n\n // we need to listen for the ended event to update the isComplete state\n const handleEnded = () => {\n updateSessionMetadata(this._session, { audioEndTime: new Date().getTime() });\n this.audioComplete = true;\n this._dispatchResponseChanged();\n audio.removeEventListener('ended', handleEnded);\n };\n\n audio.addEventListener('ended', handleEnded);\n\n // store references to remove later\n this._audio = audio;\n this._handlePlaying = handlePlaying;\n this._handleEnded = handleEnded;\n this._enableAudio = enableAudio;\n // set to true to prevent multiple initializations\n this._audioInitialized = true;\n\n observer.disconnect();\n }\n });\n });\n\n observer.observe(this, { childList: true, subtree: true });\n }\n\n enableKeyboardEvents() {\n if (!this._keyboardEventsEnabled) {\n window.addEventListener('keydown', this._boundHandleKeyDown);\n this._keyboardEventsEnabled = true;\n }\n }\n\n disconnectedCallback() {\n if (this._keyboardEventsEnabled) {\n window.removeEventListener('keydown', this._boundHandleKeyDown);\n this._keyboardEventsEnabled = false;\n }\n\n document.removeEventListener('click', this._enableAudio);\n\n if (this._audio) {\n this._audio.removeEventListener('playing', this._handlePlaying);\n this._audio.removeEventListener('ended', this._handleEnded);\n this._audio = null;\n }\n }\n\n /**\n * Handles global keyboard events for selecting or toggling multiple-choice answers.\n * Maps keys (1-9, 0, a-j, A-J) to choices and updates the session state accordingly.\n * Ensures valid key presses toggle or select the appropriate choice based on the model.\n */\n handleKeyDown(event) {\n if (!this._model || !this._session) {\n return;\n }\n\n const { mode } = this._model;\n if (mode !== 'gather') {\n return;\n }\n\n const keyToIndex = (key) => {\n const numOffset = key >= '1' && key <= '9' ? key - '1' : key === '0' ? 9 : -1;\n const letterOffset = /^[a-jA-J]$/.test(key) ? key.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0) : -1;\n return numOffset >= 0 ? numOffset : letterOffset;\n };\n\n const choiceIndex = keyToIndex(event.key);\n\n if (choiceIndex === undefined || choiceIndex <= -1 || choiceIndex >= this._model.choices?.length) {\n return;\n }\n\n const currentValue = this._session.value || [];\n const choiceId = this._model.choices[choiceIndex].value;\n\n const newValue = {\n value: choiceId,\n selected: !currentValue.includes(choiceId),\n selector: 'Keyboard',\n };\n\n this._onChange(newValue);\n }\n}\n"],"file":"index.js"}
package/lib/main.js CHANGED
@@ -27,7 +27,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
28
  var _styles = require("@material-ui/core/styles");
29
29
 
30
- var _renderUi = require("@pie-lib/render-ui");
30
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
31
31
 
32
32
  var _multipleChoice = _interopRequireDefault(require("./multiple-choice"));
33
33
 
@@ -105,4 +105,4 @@ var Root = function Root(props) {
105
105
 
106
106
  var _default = Root;
107
107
  exports["default"] = _default;
108
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJzdHlsZXMiLCJNYWluIiwicHJvcHMiLCJtb2RlbCIsIm9uQ2hvaWNlQ2hhbmdlZCIsInNlc3Npb24iLCJvblNob3dDb3JyZWN0VG9nZ2xlIiwiZXh0cmFDU1NSdWxlcyIsImZvbnRTaXplRmFjdG9yIiwiUmVhY3QiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJmdW5jIiwiY2xhc3NlcyIsImlzUmVxdWlyZWQiLCJzaGFwZSIsIm5hbWVzIiwiYXJyYXlPZiIsInN0cmluZyIsInJ1bGVzIiwiU3R5bGVkIiwibmFtZSIsInRoZW1lIiwidHlwb2dyYXBoeSIsInVzZU5leHRWYXJpYW50cyIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLE1BQU0sR0FBRyxTQUFUQSxNQUFTO0FBQUEsU0FBTyxFQUFQO0FBQUEsQ0FBZjs7SUFFTUMsSTs7Ozs7QUFpQkosZ0JBQVlDLEtBQVosRUFBbUI7QUFBQTtBQUFBLDZCQUNYQSxLQURXO0FBRWxCOzs7O1dBRUQsa0JBQVM7QUFDUCx3QkFBaUUsS0FBS0EsS0FBdEU7QUFBQSxVQUFRQyxLQUFSLGVBQVFBLEtBQVI7QUFBQSxVQUFlQyxlQUFmLGVBQWVBLGVBQWY7QUFBQSxVQUFnQ0MsT0FBaEMsZUFBZ0NBLE9BQWhDO0FBQUEsVUFBeUNDLG1CQUF6QyxlQUF5Q0EsbUJBQXpDO0FBQ0EsVUFBUUMsYUFBUixHQUEwQ0osS0FBMUMsQ0FBUUksYUFBUjtBQUFBLFVBQXVCQyxjQUF2QixHQUEwQ0wsS0FBMUMsQ0FBdUJLLGNBQXZCLENBRk8sQ0FJUDs7QUFDQSwwQkFDRSxnQ0FBQyx1QkFBRDtBQUFlLFFBQUEsYUFBYSxFQUFFRCxhQUE5QjtBQUE2QyxRQUFBLGNBQWMsRUFBRUM7QUFBN0Qsc0JBQ0UsZ0NBQUMsMEJBQUQsZ0NBQ01MLEtBRE47QUFFRSxRQUFBLE9BQU8sRUFBRUUsT0FGWDtBQUdFLFFBQUEsZUFBZSxFQUFFRCxlQUhuQjtBQUlFLFFBQUEsbUJBQW1CLEVBQUVFO0FBSnZCLFNBREYsQ0FERjtBQVVEOzs7RUFwQ2dCRyxrQkFBTUMsUzs7aUNBQW5CVCxJLGVBQ2U7QUFDakJFLEVBQUFBLEtBQUssRUFBRVEsc0JBQVVDLE1BREE7QUFFakJQLEVBQUFBLE9BQU8sRUFBRU0sc0JBQVVDLE1BRkY7QUFHakJSLEVBQUFBLGVBQWUsRUFBRU8sc0JBQVVFLElBSFY7QUFJakJDLEVBQUFBLE9BQU8sRUFBRUgsc0JBQVVDLE1BQVYsQ0FBaUJHLFVBSlQ7QUFLakJULEVBQUFBLG1CQUFtQixFQUFFSyxzQkFBVUUsSUFMZDtBQU1qQk4sRUFBQUEsYUFBYSxFQUFFSSxzQkFBVUssS0FBVixDQUFnQjtBQUM3QkMsSUFBQUEsS0FBSyxFQUFFTixzQkFBVU8sT0FBVixDQUFrQlAsc0JBQVVRLE1BQTVCLENBRHNCO0FBRTdCQyxJQUFBQSxLQUFLLEVBQUVULHNCQUFVUTtBQUZZLEdBQWhCO0FBTkUsQztpQ0FEZmxCLEksa0JBYWtCO0FBQ3BCRSxFQUFBQSxLQUFLLEVBQUUsRUFEYTtBQUVwQkUsRUFBQUEsT0FBTyxFQUFFO0FBRlcsQztBQTBCeEIsSUFBTWdCLE1BQU0sR0FBRyx3QkFBV3JCLE1BQVgsRUFBbUI7QUFBRXNCLEVBQUFBLElBQUksRUFBRTtBQUFSLENBQW5CLEVBQXFDckIsSUFBckMsQ0FBZjtBQUVBLElBQU1zQixLQUFLLEdBQUcsNEJBQWU7QUFDM0JDLEVBQUFBLFVBQVUsRUFBRTtBQUNWQyxJQUFBQSxlQUFlLEVBQUU7QUFEUDtBQURlLENBQWYsQ0FBZDs7QUFNQSxJQUFNQyxJQUFJLEdBQUcsU0FBUEEsSUFBTyxDQUFDeEIsS0FBRDtBQUFBLHNCQUNYLGdDQUFDLHdCQUFEO0FBQWtCLElBQUEsS0FBSyxFQUFFcUI7QUFBekIsa0JBQ0UsZ0NBQUMsTUFBRCxFQUFZckIsS0FBWixDQURGLENBRFc7QUFBQSxDQUFiOztlQU1ld0IsSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgeyBjcmVhdGVNdWlUaGVtZSwgTXVpVGhlbWVQcm92aWRlciB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgeyBQcmV2aWV3TGF5b3V0IH0gZnJvbSAnQHBpZS1saWIvcmVuZGVyLXVpJztcbmltcG9ydCBNdWx0aXBsZUNob2ljZSBmcm9tICcuL211bHRpcGxlLWNob2ljZSc7XG5cbmNvbnN0IHN0eWxlcyA9ICgpID0+ICh7fSk7XG5cbmNsYXNzIE1haW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNlc3Npb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DaG9pY2VDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgb25TaG93Q29ycmVjdFRvZ2dsZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZXh0cmFDU1NSdWxlczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICAgIHJ1bGVzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgbW9kZWw6IHt9LFxuICAgIHNlc3Npb246IHt9LFxuICB9O1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IG1vZGVsLCBvbkNob2ljZUNoYW5nZWQsIHNlc3Npb24sIG9uU2hvd0NvcnJlY3RUb2dnbGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBleHRyYUNTU1J1bGVzLCBmb250U2l6ZUZhY3RvciB9ID0gbW9kZWw7XG5cbiAgICAvLyBtb2RlbC5wYXJ0TGFiZWwgaXMgYSBwcm9wZXJ0eSB1c2VkIGZvciBlYnNyXG4gICAgcmV0dXJuIChcbiAgICAgIDxQcmV2aWV3TGF5b3V0IGV4dHJhQ1NTUnVsZXM9e2V4dHJhQ1NTUnVsZXN9IGZvbnRTaXplRmFjdG9yPXtmb250U2l6ZUZhY3Rvcn0+XG4gICAgICAgIDxNdWx0aXBsZUNob2ljZVxuICAgICAgICAgIHsuLi5tb2RlbH1cbiAgICAgICAgICBzZXNzaW9uPXtzZXNzaW9ufVxuICAgICAgICAgIG9uQ2hvaWNlQ2hhbmdlZD17b25DaG9pY2VDaGFuZ2VkfVxuICAgICAgICAgIG9uU2hvd0NvcnJlY3RUb2dnbGU9e29uU2hvd0NvcnJlY3RUb2dnbGV9XG4gICAgICAgIC8+XG4gICAgICA8L1ByZXZpZXdMYXlvdXQ+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBTdHlsZWQgPSB3aXRoU3R5bGVzKHN0eWxlcywgeyBuYW1lOiAnTWFpbicgfSkoTWFpbik7XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlTXVpVGhlbWUoe1xuICB0eXBvZ3JhcGh5OiB7XG4gICAgdXNlTmV4dFZhcmlhbnRzOiB0cnVlLFxuICB9LFxufSk7XG5cbmNvbnN0IFJvb3QgPSAocHJvcHMpID0+IChcbiAgPE11aVRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICA8U3R5bGVkIHsuLi5wcm9wc30gLz5cbiAgPC9NdWlUaGVtZVByb3ZpZGVyPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgUm9vdDtcbiJdfQ==
108
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["styles","Main","props","model","onChoiceChanged","session","onShowCorrectToggle","extraCSSRules","fontSizeFactor","React","Component","PropTypes","object","func","classes","isRequired","shape","names","arrayOf","string","rules","Styled","name","theme","typography","useNextVariants","Root"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO,EAAP;AAAA,CAAf;;IAEMC,I;;;;;AAiBJ,gBAAYC,KAAZ,EAAmB;AAAA;AAAA,6BACXA,KADW;AAElB;;;;WAED,kBAAS;AACP,wBAAiE,KAAKA,KAAtE;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,eAAf,eAAeA,eAAf;AAAA,UAAgCC,OAAhC,eAAgCA,OAAhC;AAAA,UAAyCC,mBAAzC,eAAyCA,mBAAzC;AACA,UAAQC,aAAR,GAA0CJ,KAA1C,CAAQI,aAAR;AAAA,UAAuBC,cAAvB,GAA0CL,KAA1C,CAAuBK,cAAvB,CAFO,CAIP;;AACA,0BACE,gCAAC,uBAAD;AAAe,QAAA,aAAa,EAAED,aAA9B;AAA6C,QAAA,cAAc,EAAEC;AAA7D,sBACE,gCAAC,0BAAD,gCACML,KADN;AAEE,QAAA,OAAO,EAAEE,OAFX;AAGE,QAAA,eAAe,EAAED,eAHnB;AAIE,QAAA,mBAAmB,EAAEE;AAJvB,SADF,CADF;AAUD;;;EApCgBG,kBAAMC,S;;iCAAnBT,I,eACe;AACjBE,EAAAA,KAAK,EAAEQ,sBAAUC,MADA;AAEjBP,EAAAA,OAAO,EAAEM,sBAAUC,MAFF;AAGjBR,EAAAA,eAAe,EAAEO,sBAAUE,IAHV;AAIjBC,EAAAA,OAAO,EAAEH,sBAAUC,MAAV,CAAiBG,UAJT;AAKjBT,EAAAA,mBAAmB,EAAEK,sBAAUE,IALd;AAMjBN,EAAAA,aAAa,EAAEI,sBAAUK,KAAV,CAAgB;AAC7BC,IAAAA,KAAK,EAAEN,sBAAUO,OAAV,CAAkBP,sBAAUQ,MAA5B,CADsB;AAE7BC,IAAAA,KAAK,EAAET,sBAAUQ;AAFY,GAAhB;AANE,C;iCADflB,I,kBAakB;AACpBE,EAAAA,KAAK,EAAE,EADa;AAEpBE,EAAAA,OAAO,EAAE;AAFW,C;AA0BxB,IAAMgB,MAAM,GAAG,wBAAWrB,MAAX,EAAmB;AAAEsB,EAAAA,IAAI,EAAE;AAAR,CAAnB,EAAqCrB,IAArC,CAAf;AAEA,IAAMsB,KAAK,GAAG,4BAAe;AAC3BC,EAAAA,UAAU,EAAE;AACVC,IAAAA,eAAe,EAAE;AADP;AADe,CAAf,CAAd;;AAMA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACxB,KAAD;AAAA,sBACX,gCAAC,wBAAD;AAAkB,IAAA,KAAK,EAAEqB;AAAzB,kBACE,gCAAC,MAAD,EAAYrB,KAAZ,CADF,CADW;AAAA,CAAb;;eAMewB,I","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';\nimport { PreviewLayout } from '@pie-lib/pie-toolbox/render-ui';\nimport MultipleChoice from './multiple-choice';\n\nconst styles = () => ({});\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onChoiceChanged: PropTypes.func,\n classes: PropTypes.object.isRequired,\n onShowCorrectToggle: PropTypes.func,\n extraCSSRules: PropTypes.shape({\n names: PropTypes.arrayOf(PropTypes.string),\n rules: PropTypes.string,\n }),\n };\n\n static defaultProps = {\n model: {},\n session: {},\n };\n constructor(props) {\n super(props);\n }\n\n render() {\n const { model, onChoiceChanged, session, onShowCorrectToggle } = this.props;\n const { extraCSSRules, fontSizeFactor } = model;\n\n // model.partLabel is a property used for ebsr\n return (\n <PreviewLayout extraCSSRules={extraCSSRules} fontSizeFactor={fontSizeFactor}>\n <MultipleChoice\n {...model}\n session={session}\n onChoiceChanged={onChoiceChanged}\n onShowCorrectToggle={onShowCorrectToggle}\n />\n </PreviewLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles, { name: 'Main' })(Main);\n\nconst theme = createMuiTheme({\n typography: {\n useNextVariants: true,\n },\n});\n\nconst Root = (props) => (\n <MuiThemeProvider theme={theme}>\n <Styled {...props} />\n </MuiThemeProvider>\n);\n\nexport default Root;\n"],"file":"main.js"}
@@ -25,15 +25,15 @@ var _react = _interopRequireDefault(require("react"));
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
- var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
28
+ var _correctAnswerToggle = require("@pie-lib/pie-toolbox/correct-answer-toggle");
29
29
 
30
30
  var _classnames = _interopRequireDefault(require("classnames"));
31
31
 
32
32
  var _styles = require("@material-ui/core/styles");
33
33
 
34
- var _renderUi = require("@pie-lib/render-ui");
34
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
35
35
 
36
- var _translator = _interopRequireDefault(require("@pie-lib/translator"));
36
+ var _translator = _interopRequireDefault(require("@pie-lib/pie-toolbox/translator"));
37
37
 
38
38
  var _choice = _interopRequireDefault(require("./choice"));
39
39
 
@@ -80,7 +80,10 @@ var styles = function styles(theme) {
80
80
  border: '0px',
81
81
  padding: '0.01em 0 0 0',
82
82
  margin: '0px',
83
- minWidth: '0px'
83
+ minWidth: '0px',
84
+ '&:focus': {
85
+ outline: 'none'
86
+ }
84
87
  },
85
88
  srOnly: {
86
89
  position: 'absolute',
@@ -364,7 +367,7 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
364
367
  tagName: 'legend',
365
368
  autoplayAudioEnabled: autoplayAudioEnabled,
366
369
  customAudioButton: customAudioButton
367
- }), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
370
+ }), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle.CorrectAnswerToggle, {
368
371
  show: showCorrectAnswerToggle,
369
372
  toggled: showCorrect,
370
373
  onToggle: this.onToggle.bind(this),
@@ -448,4 +451,4 @@ MultipleChoice.defaultProps = {
448
451
  var _default = (0, _styles.withStyles)(styles)(MultipleChoice);
449
452
 
450
453
  exports["default"] = _default;
451
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tdWx0aXBsZS1jaG9pY2UuanN4Il0sIm5hbWVzIjpbInRyYW5zbGF0b3IiLCJUcmFuc2xhdG9yIiwic3R5bGVzIiwidGhlbWUiLCJtYWluIiwiY29sb3IiLCJ0ZXh0IiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZCIsInBvc2l0aW9uIiwiYm9yZGVyIiwicGFydExhYmVsIiwiZGlzcGxheSIsImZvbnRTaXplIiwibWFyZ2luIiwiZm9udFdlaWdodCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJtYXJnaW5Cb3R0b20iLCJob3Jpem9udGFsTGF5b3V0IiwiZmxleERpcmVjdGlvbiIsImZsZXhXcmFwIiwiZ3JpZExheW91dCIsImZpZWxkc2V0IiwicGFkZGluZyIsIm1pbldpZHRoIiwic3JPbmx5IiwibGVmdCIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJlcnJvclRleHQiLCJ0eXBvZ3JhcGh5IiwicGFsZXR0ZSIsImVycm9yIiwicGFkZGluZ1RvcCIsIk11bHRpcGxlQ2hvaWNlIiwicHJvcHMiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hlY2tlZCIsIm1heFNlbGVjdGlvbnMiLCJvbkNob2ljZUNoYW5nZWQiLCJzZXNzaW9uIiwibGVuZ3RoIiwic2V0U3RhdGUiLCJtYXhTZWxlY3Rpb25zRXJyb3JTdGF0ZSIsInNlbGVjdGVkIiwic2VsZWN0b3IiLCJtb2RlIiwic2hvd0NvcnJlY3QiLCJzdGF0ZSIsIm9uU2hvd0NvcnJlY3RUb2dnbGUiLCJjaG9pY2UiLCJpc0NvcnJlY3QiLCJjb3JyZWN0IiwiaXNDaGVja2VkIiwiaXNTZWxlY3RlZCIsInVuZGVmaW5lZCIsImUiLCJjdXJyZW50VGFyZ2V0IiwiYWN0aXZlRWwiLCJkb2N1bWVudCIsImFjdGl2ZUVsZW1lbnQiLCJjb250YWlucyIsInJlbGF0ZWRUYXJnZXQiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsIk5vZGUiLCJET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkciLCJmaXJzdElucHV0UmVmIiwiY3VycmVudCIsImZvY3VzIiwiYWx3YXlzU2hvd0NvcnJlY3QiLCJvblRvZ2dsZSIsImJpbmQiLCJSZWFjdCIsImNyZWF0ZVJlZiIsInNlc3Npb25WYWx1ZSIsImluZGV4T2YiLCJuZXh0UHJvcHMiLCJjb3JyZWN0UmVzcG9uc2UiLCJpbmRleCIsImtleU1vZGUiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ0b1VwcGVyQ2FzZSIsImNob2ljZU1vZGUiLCJjbGFzc2VzIiwiZGlzYWJsZWQiLCJjbGFzc05hbWUiLCJjaG9pY2VzIiwiZ3JpZENvbHVtbnMiLCJwcm9tcHQiLCJyZXNwb25zZUNvcnJlY3QiLCJhbmltYXRpb25zRGlzYWJsZWQiLCJsYW5ndWFnZSIsImlzU2VsZWN0aW9uQnV0dG9uQmVsb3ciLCJtaW5TZWxlY3Rpb25zIiwiYXV0b3BsYXlBdWRpb0VuYWJsZWQiLCJjdXN0b21BdWRpb0J1dHRvbiIsImlzRXZhbHVhdGVNb2RlIiwic2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGUiLCJjb2x1bW5zU3R5bGUiLCJncmlkVGVtcGxhdGVDb2x1bW5zIiwic2VsZWN0aW9ucyIsInRlYWNoZXJJbnN0cnVjdGlvbnNEaXYiLCJnZXRNdWx0aXBsZUNob2ljZU1pblNlbGVjdGlvbkVycm9yTWVzc2FnZSIsInQiLCJsbmciLCJyZW5kZXJIZWFkaW5nIiwiaGlkZGVuIiwidmlzaWJsZSIsImhhbmRsZUdyb3VwRm9jdXMiLCJjaG9pY2VzTGF5b3V0IiwibWFwIiwic2VsZWN0ZWRBbnN3ZXJCYWNrZ3JvdW5kQ29sb3IiLCJoYW5kbGVDaGFuZ2UiLCJoaWRlVGljayIsImdldENoZWNrZWQiLCJnZXRDb3JyZWN0bmVzcyIsImluZGV4VG9TeW1ib2wiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvbmVPZiIsImFycmF5Iiwib2JqZWN0IiwiYm9vbCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVy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QWIsRUFBcUIsWUFBckIsQ0FBaEIsQ0FmRTtBQWdCakJqQyxFQUFBQSxXQUFXLEVBQUUrQixzQkFBVUMsTUFoQk47QUFpQmpCbkQsRUFBQUEsaUJBQWlCLEVBQUVrRCxzQkFBVUssSUFqQlo7QUFrQmpCakMsRUFBQUEsa0JBQWtCLEVBQUU0QixzQkFBVUssSUFsQmI7QUFtQmpCaEMsRUFBQUEsUUFBUSxFQUFFMkIsc0JBQVVDLE1BbkJIO0FBb0JqQlIsRUFBQUEsNkJBQTZCLEVBQUVPLHNCQUFVQyxNQXBCeEI7QUFxQmpCdkUsRUFBQUEsbUJBQW1CLEVBQUVzRSxzQkFBVU0sSUFyQmQ7QUFzQmpCaEMsRUFBQUEsc0JBQXNCLEVBQUUwQixzQkFBVUssSUF0QmpCO0FBdUJqQjlCLEVBQUFBLGFBQWEsRUFBRXlCLHNCQUFVUSxNQXZCUjtBQXdCakJ6RixFQUFBQSxhQUFhLEVBQUVpRixzQkFBVVEsTUF4QlI7QUF5QmpCaEMsRUFBQUEsb0JBQW9CLEVBQUV3QixzQkFBVUssSUF6QmY7QUEwQmpCNUIsRUFBQUEsaUJBQWlCLEVBQUU7QUFDakJnQyxJQUFBQSxTQUFTLEVBQUVULHNCQUFVQyxNQURKO0FBRWpCUyxJQUFBQSxVQUFVLEVBQUVWLHNCQUFVQztBQUZMO0FBMUJGLEM7QUFzVXJCeEYsY0FBYyxDQUFDa0csWUFBZixHQUE4QjtBQUM1QjFGLEVBQUFBLE9BQU8sRUFBRTtBQUNQSixJQUFBQSxLQUFLLEVBQUU7QUFEQTtBQURtQixDQUE5Qjs7ZUFNZSx3QkFBV3pDLE1BQVgsRUFBbUJxQyxjQUFuQixDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgQ29ycmVjdEFuc3dlclRvZ2dsZSBmcm9tICdAcGllLWxpYi9jb3JyZWN0LWFuc3dlci10b2dnbGUnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7IGNvbG9yLCBDb2xsYXBzaWJsZSwgUHJldmlld1Byb21wdCB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgVHJhbnNsYXRvciBmcm9tICdAcGllLWxpYi90cmFuc2xhdG9yJztcblxuaW1wb3J0IFN0eWxlZENob2ljZSBmcm9tICcuL2Nob2ljZSc7XG5cbi8vIE11bHRpcGxlQ2hvaWNlXG5cbmNvbnN0IHsgdHJhbnNsYXRvciB9ID0gVHJhbnNsYXRvcjtcblxuY29uc3Qgc3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICBtYWluOiB7XG4gICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICAnJiAqJzoge1xuICAgICAgJy13ZWJraXQtZm9udC1zbW9vdGhpbmcnOiAnYW50aWFsaWFzZWQnLFxuICAgIH0sXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgLy8gcmVtb3ZlIGJvcmRlciBmcm9tIGxlZ2VuZCB0YWdzIGluc2lkZSBtYWluIHRvIG92ZXJyaWRlIHRoZSBPVCBkZWZhdWx0IHN0eWxlc1xuICAgICcmIGxlZ2VuZCc6IHtcbiAgICAgIGJvcmRlcjogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgfSxcbiAgfSxcbiAgcGFydExhYmVsOiB7XG4gICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgIG1hcmdpbjogJzAnLFxuICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIHRlYWNoZXJJbnN0cnVjdGlvbnM6IHtcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIGhvcml6b250YWxMYXlvdXQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgfSxcbiAgZ3JpZExheW91dDoge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgfSxcbiAgZmllbGRzZXQ6IHtcbiAgICBib3JkZXI6ICcwcHgnLFxuICAgIHBhZGRpbmc6ICcwLjAxZW0gMCAwIDAnLFxuICAgIG1hcmdpbjogJzBweCcsXG4gICAgbWluV2lkdGg6ICcwcHgnLFxuICB9LFxuICBzck9ubHk6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICBsZWZ0OiAnLTEwMDAwcHgnLFxuICAgIHRvcDogJ2F1dG8nLFxuICAgIHdpZHRoOiAnMXB4JyxcbiAgICBoZWlnaHQ6ICcxcHgnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgfSxcbiAgZXJyb3JUZXh0OiB7XG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFNpemUgLSAyLFxuICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLmVycm9yLm1haW4sXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0LFxuICB9LFxufSk7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aXBsZUNob2ljZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGU6IFByb3BUeXBlcy5vbmVPZihbJ2dhdGhlcicsICd2aWV3JywgJ2V2YWx1YXRlJ10pLFxuICAgIGNob2ljZU1vZGU6IFByb3BUeXBlcy5vbmVPZihbJ3JhZGlvJywgJ2NoZWNrYm94J10pLFxuICAgIGtleU1vZGU6IFByb3BUeXBlcy5vbmVPZihbJ251bWJlcnMnLCAnbGV0dGVycycsICdub25lJ10pLFxuICAgIGNob2ljZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBwYXJ0TGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcHJvbXB0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2Vzc2lvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25DaG9pY2VDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICByZXNwb25zZUNvcnJlY3Q6IFByb3BUeXBlcy5ib29sLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb3JyZWN0UmVzcG9uc2U6IFByb3BUeXBlcy5hcnJheSxcbiAgICBjaG9pY2VzTGF5b3V0OiBQcm9wVHlwZXMub25lT2YoWyd2ZXJ0aWNhbCcsICdncmlkJywgJ2hvcml6b250YWwnXSksXG4gICAgZ3JpZENvbHVtbnM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYWx3YXlzU2hvd0NvcnJlY3Q6IFByb3BUeXBlcy5ib29sLFxuICAgIGFuaW1hdGlvbnNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbGFuZ3VhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0ZWRBbnN3ZXJCYWNrZ3JvdW5kQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25TaG93Q29ycmVjdFRvZ2dsZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaXNTZWxlY3Rpb25CdXR0b25CZWxvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWluU2VsZWN0aW9uczogUHJvcFR5cGVzLm51bWJlcixcbiAgICBtYXhTZWxlY3Rpb25zOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGF1dG9wbGF5QXVkaW9FbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjdXN0b21BdWRpb0J1dHRvbjoge1xuICAgICAgcGxheUltYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgcGF1c2VJbWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHNob3dDb3JyZWN0OiB0aGlzLnByb3BzLmFsd2F5c1Nob3dDb3JyZWN0IHx8IGZhbHNlLFxuICAgICAgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGU6IGZhbHNlLFxuICAgIH07XG5cbiAgICB0aGlzLm9uVG9nZ2xlID0gdGhpcy5vblRvZ2dsZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZmlyc3RJbnB1dFJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCh2YWx1ZSkge1xuICAgIGNvbnN0IHNlc3Npb25WYWx1ZSA9IHRoaXMucHJvcHMuc2Vzc2lvbiAmJiB0aGlzLnByb3BzLnNlc3Npb24udmFsdWU7XG5cbiAgICByZXR1cm4gc2Vzc2lvblZhbHVlICYmIHNlc3Npb25WYWx1ZS5pbmRleE9mICYmIHNlc3Npb25WYWx1ZS5pbmRleE9mKHZhbHVlKSA+PSAwO1xuICB9XG5cbiAgLy8gaGFuZGxlQ2hhbmdlIHdhcyBhZGRlZCBmb3IgYWNjZXNzaWJpbGl0eS4gUGxlYXNlIHNlZSBjb21tZW50cyBhbmQgdmlkZW9zIGZyb20gUEQtMjQ0MS5cbiAgaGFuZGxlQ2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSwgY2hlY2tlZCB9ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHsgbWF4U2VsZWN0aW9ucywgb25DaG9pY2VDaGFuZ2VkLCBzZXNzaW9uIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHNlc3Npb24udmFsdWUgJiYgc2Vzc2lvbi52YWx1ZS5sZW5ndGggPj0gbWF4U2VsZWN0aW9ucykge1xuICAgICAgLy8gc2hvdy9oaWRlIG1heCBzZWxlY3Rpb25zIGVycm9yIHdoZW4gdXNlciBzZWxlY3QvZGVzZWxlY3QgYW4gYW5zd2VyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGU6IGNoZWNrZWQgfSk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIC8vIHByZXZlbnQgc2VsZWN0aW5nIG1vcmUgYW5zd2Vyc1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgb25DaG9pY2VDaGFuZ2VkKHsgdmFsdWUsIHNlbGVjdGVkOiBjaGVja2VkLCBzZWxlY3RvcjogJ01vdXNlJyB9KTtcbiAgfTtcblxuICBvblRvZ2dsZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5tb2RlID09PSAnZXZhbHVhdGUnKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2hvd0NvcnJlY3Q6ICF0aGlzLnN0YXRlLnNob3dDb3JyZWN0IH0sICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSkge1xuICAgICAgICAgIHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgaWYgKCFuZXh0UHJvcHMuY29ycmVjdFJlc3BvbnNlICYmIHRoaXMuc3RhdGUuc2hvd0NvcnJlY3QgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2hvd0NvcnJlY3Q6IGZhbHNlIH0sICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSkge1xuICAgICAgICAgIHRoaXMucHJvcHMub25TaG93Q29ycmVjdFRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFByb3BzLmFsd2F5c1Nob3dDb3JyZWN0ICYmIHRoaXMuc3RhdGUuc2hvd0NvcnJlY3QgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogdHJ1ZSB9LCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uU2hvd0NvcnJlY3RUb2dnbGUpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLm9uU2hvd0NvcnJlY3RUb2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaW5kZXhUb1N5bWJvbChpbmRleCkge1xuICAgIGlmICh0aGlzLnByb3BzLmtleU1vZGUgPT09ICdudW1iZXJzJykge1xuICAgICAgcmV0dXJuIGAke2luZGV4ICsgMX1gO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmtleU1vZGUgPT09ICdsZXR0ZXJzJykge1xuICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoOTcgKyBpbmRleCkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXRDb3JyZWN0bmVzcyA9IChjaG9pY2UgPSB7fSkgPT4ge1xuICAgIGNvbnN0IGlzQ29ycmVjdCA9IGNob2ljZS5jb3JyZWN0O1xuICAgIGNvbnN0IGlzQ2hlY2tlZCA9IHRoaXMuaXNTZWxlY3RlZChjaG9pY2UudmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuc2hvd0NvcnJlY3QpIHtcbiAgICAgIHJldHVybiBpc0NvcnJlY3QgPyAnY29ycmVjdCcgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGlzQ29ycmVjdCkge1xuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAvLyBBIGNvcnJlY3QgYW5zd2VyIGlzIHNlbGVjdGVkOiBtYXJrZWQgd2l0aCBhIGdyZWVuIGNoZWNrbWFya1xuICAgICAgICByZXR1cm4gJ2NvcnJlY3QnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQSBjb3JyZWN0IGFuc3dlciBpcyBOT1Qgc2VsZWN0ZWQ6IG1hcmtlZCB3aXRoIGFuIG9yYW5nZSBYXG4gICAgICAgIHJldHVybiAnaW5jb3JyZWN0JztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAvLyBBbiBpbmNvcnJlY3QgYW5zd2VyIGlzIHNlbGVjdGVkOiBtYXJrZWQgd2l0aCBhbiBvcmFuZ2UgWFxuICAgICAgICByZXR1cm4gJ2luY29ycmVjdCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBbiBpbmNvcnJlY3QgYW5zd2VyIGlzIE5PVCBzZWxlY3RlZDogbm90IG1hcmtlZFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBnZXRDaGVja2VkKGNob2ljZSkge1xuICAgIGlmICh0aGlzLnN0YXRlLnNob3dDb3JyZWN0KSB7XG4gICAgICByZXR1cm4gY2hvaWNlLmNvcnJlY3QgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RlZChjaG9pY2UudmFsdWUpO1xuICB9XG5cbiAgLy8gcmVuZGVySGVhZGluZyBmdW5jdGlvbiB3YXMgYWRkZWQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gIHJlbmRlckhlYWRpbmcoKSB7XG4gICAgY29uc3QgeyBtb2RlLCBjaG9pY2VNb2RlLCBjbGFzc2VzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKG1vZGUgIT09ICdnYXRoZXInKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hvaWNlTW9kZSA9PT0gJ3JhZGlvJyA/IChcbiAgICAgIDxoMyBjbGFzc05hbWU9e2NsYXNzZXMuc3JPbmx5fT5NdWx0aXBsZSBDaG9pY2UgUXVlc3Rpb248L2gzPlxuICAgICkgOiAoXG4gICAgICA8aDMgY2xhc3NOYW1lPXtjbGFzc2VzLnNyT25seX0+TXVsdGlwbGUgU2VsZWN0IFF1ZXN0aW9uPC9oMz5cbiAgICApO1xuICB9XG5cbiAgaGFuZGxlR3JvdXBGb2N1cyA9IChlKSA9PiB7XG4gICAgY29uc3QgZmllbGRzZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgYWN0aXZlRWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgaWYgKGZpZWxkc2V0LmNvbnRhaW5zKGFjdGl2ZUVsKSAmJiBhY3RpdmVFbCAhPT0gZmllbGRzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPbmx5IGZvY3VzIHRoZSBmaXJzdCBpbnB1dCBpZiB1c2VyIGlzIHRhYmJpbmcgZm9yd2FyZFxuICAgIGlmICghZS5yZWxhdGVkVGFyZ2V0IHx8IGZpZWxkc2V0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUucmVsYXRlZFRhcmdldCkgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORykge1xuICAgICAgaWYgKHRoaXMuZmlyc3RJbnB1dFJlZj8uY3VycmVudCkge1xuICAgICAgICB0aGlzLmZpcnN0SW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2hvaWNlcyA9IFtdLFxuICAgICAgY2hvaWNlTW9kZSxcbiAgICAgIGdyaWRDb2x1bW5zLFxuICAgICAgcGFydExhYmVsLFxuICAgICAgcHJvbXB0LFxuICAgICAgcmVzcG9uc2VDb3JyZWN0LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyxcbiAgICAgIGNsYXNzZXMsXG4gICAgICBhbHdheXNTaG93Q29ycmVjdCxcbiAgICAgIGFuaW1hdGlvbnNEaXNhYmxlZCxcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgaXNTZWxlY3Rpb25CdXR0b25CZWxvdyxcbiAgICAgIG1pblNlbGVjdGlvbnMsXG4gICAgICBtYXhTZWxlY3Rpb25zLFxuICAgICAgYXV0b3BsYXlBdWRpb0VuYWJsZWQsXG4gICAgICBzZXNzaW9uLFxuICAgICAgY3VzdG9tQXVkaW9CdXR0b24sXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBzaG93Q29ycmVjdCwgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGUgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgaXNFdmFsdWF0ZU1vZGUgPSBtb2RlID09PSAnZXZhbHVhdGUnO1xuICAgIGNvbnN0IHNob3dDb3JyZWN0QW5zd2VyVG9nZ2xlID0gaXNFdmFsdWF0ZU1vZGUgJiYgIXJlc3BvbnNlQ29ycmVjdDtcbiAgICBjb25zdCBjb2x1bW5zU3R5bGUgPSBncmlkQ29sdW1ucyA+IDEgPyB7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHtncmlkQ29sdW1uc30sIDFmcilgIH0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2VsZWN0aW9ucyA9IChzZXNzaW9uLnZhbHVlICYmIHNlc3Npb24udmFsdWUubGVuZ3RoKSB8fCAwO1xuXG4gICAgY29uc3QgdGVhY2hlckluc3RydWN0aW9uc0RpdiA9IChcbiAgICAgIDxQcmV2aWV3UHJvbXB0XG4gICAgICAgIHRhZ05hbWU9XCJkaXZcIlxuICAgICAgICBjbGFzc05hbWU9XCJwcm9tcHRcIlxuICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lPVwidGVhY2hlci1pbnN0cnVjdGlvbnNcIlxuICAgICAgICBwcm9tcHQ9e3RlYWNoZXJJbnN0cnVjdGlvbnN9XG4gICAgICAvPlxuICAgICk7XG5cbiAgICBjb25zdCBnZXRNdWx0aXBsZUNob2ljZU1pblNlbGVjdGlvbkVycm9yTWVzc2FnZSA9ICgpID0+IHtcbiAgICAgIGlmIChtaW5TZWxlY3Rpb25zICYmIG1heFNlbGVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG1pblNlbGVjdGlvbnMgPT09IG1heFNlbGVjdGlvbnNcbiAgICAgICAgICA/IHRyYW5zbGF0b3IudCgndHJhbnNsYXRpb246bXVsdGlwbGVDaG9pY2U6bWlubWF4U2VsZWN0aW9uc19lcXVhbCcsIHsgbG5nOiBsYW5ndWFnZSwgbWluU2VsZWN0aW9ucyB9KVxuICAgICAgICAgIDogdHJhbnNsYXRvci50KCd0cmFuc2xhdGlvbjptdWx0aXBsZUNob2ljZTptaW5tYXhTZWxlY3Rpb25zX3JhbmdlJywge1xuICAgICAgICAgICAgICBsbmc6IGxhbmd1YWdlLFxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25zLFxuICAgICAgICAgICAgICBtYXhTZWxlY3Rpb25zLFxuICAgICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtaW5TZWxlY3Rpb25zKSB7XG4gICAgICAgIHJldHVybiB0cmFuc2xhdG9yLnQoJ3RyYW5zbGF0aW9uOm11bHRpcGxlQ2hvaWNlOm1pblNlbGVjdGlvbnMnLCB7IGxuZzogbGFuZ3VhZ2UsIG1pblNlbGVjdGlvbnMgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnJztcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgaWQ9eydtYWluLWNvbnRhaW5lcid9IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLm1haW4sIGNsYXNzTmFtZSwgJ211bHRpcGxlLWNob2ljZScpfT5cbiAgICAgICAge3BhcnRMYWJlbCAmJiA8aDIgY2xhc3NOYW1lPXtjbGFzc2VzLnBhcnRMYWJlbH0+e3BhcnRMYWJlbH08L2gyPn1cblxuICAgICAgICB7dGhpcy5yZW5kZXJIZWFkaW5nKCl9XG5cbiAgICAgICAge3RlYWNoZXJJbnN0cnVjdGlvbnMgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnRlYWNoZXJJbnN0cnVjdGlvbnN9PlxuICAgICAgICAgICAgeyFhbmltYXRpb25zRGlzYWJsZWQgPyAoXG4gICAgICAgICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgICAgICAgIGxhYmVscz17e1xuICAgICAgICAgICAgICAgICAgaGlkZGVuOiAnU2hvdyBUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlOiAnSGlkZSBUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0ZWFjaGVySW5zdHJ1Y3Rpb25zRGl2fVxuICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgdGVhY2hlckluc3RydWN0aW9uc0RpdlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cblxuICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuZmllbGRzZXR9XG4gICAgICAgICAgb25Gb2N1cz17dGhpcy5oYW5kbGVHcm91cEZvY3VzfVxuICAgICAgICAgIHJvbGU9e2Nob2ljZU1vZGUgPT09ICdyYWRpbycgPyAncmFkaW9ncm91cCcgOiAnZ3JvdXAnfVxuICAgICAgICA+XG4gICAgICAgICAgPFByZXZpZXdQcm9tcHRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInByb21wdFwiXG4gICAgICAgICAgICBkZWZhdWx0Q2xhc3NOYW1lPVwicHJvbXB0XCJcbiAgICAgICAgICAgIHByb21wdD17cHJvbXB0fVxuICAgICAgICAgICAgdGFnTmFtZT17J2xlZ2VuZCd9XG4gICAgICAgICAgICBhdXRvcGxheUF1ZGlvRW5hYmxlZD17YXV0b3BsYXlBdWRpb0VuYWJsZWR9XG4gICAgICAgICAgICBjdXN0b21BdWRpb0J1dHRvbj17Y3VzdG9tQXVkaW9CdXR0b259XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHshYWx3YXlzU2hvd0NvcnJlY3QgJiYgKFxuICAgICAgICAgICAgPENvcnJlY3RBbnN3ZXJUb2dnbGVcbiAgICAgICAgICAgICAgc2hvdz17c2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGV9XG4gICAgICAgICAgICAgIHRvZ2dsZWQ9e3Nob3dDb3JyZWN0fVxuICAgICAgICAgICAgICBvblRvZ2dsZT17dGhpcy5vblRvZ2dsZS5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICBsYW5ndWFnZT17bGFuZ3VhZ2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAgICAgICBbY2xhc3Nlcy5ncmlkTGF5b3V0XTogdGhpcy5wcm9wcy5jaG9pY2VzTGF5b3V0ID09PSAnZ3JpZCcsXG4gICAgICAgICAgICAgIFtjbGFzc2VzLmhvcml6b250YWxMYXlvdXRdOiB0aGlzLnByb3BzLmNob2ljZXNMYXlvdXQgPT09ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgc3R5bGU9e2NvbHVtbnNTdHlsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hvaWNlcy5tYXAoKGNob2ljZSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPFN0eWxlZENob2ljZVxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1JlZj17aW5kZXggPT09IDAgPyB0aGlzLmZpcnN0SW5wdXRSZWYgOiBudWxsfVxuICAgICAgICAgICAgICAgIGNob2ljZXNMYXlvdXQ9e3RoaXMucHJvcHMuY2hvaWNlc0xheW91dH1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEFuc3dlckJhY2tncm91bmRDb2xvcj17dGhpcy5wcm9wcy5zZWxlY3RlZEFuc3dlckJhY2tncm91bmRDb2xvcn1cbiAgICAgICAgICAgICAgICBncmlkQ29sdW1ucz17Z3JpZENvbHVtbnN9XG4gICAgICAgICAgICAgICAga2V5PXtgY2hvaWNlLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICBjaG9pY2U9e2Nob2ljZX1cbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgY2hvaWNlc0xlbmd0aD17Y2hvaWNlcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgc2hvd0NvcnJlY3Q9e3Nob3dDb3JyZWN0fVxuICAgICAgICAgICAgICAgIGlzRXZhbHVhdGVNb2RlPXtpc0V2YWx1YXRlTW9kZX1cbiAgICAgICAgICAgICAgICBjaG9pY2VNb2RlPXtjaG9pY2VNb2RlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICB0YWdOYW1lPXtwYXJ0TGFiZWwgPyBgZ3JvdXAtJHtwYXJ0TGFiZWx9YCA6ICdncm91cCd9XG4gICAgICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICBoaWRlVGljaz17Y2hvaWNlLmhpZGVUaWNrfVxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMuZ2V0Q2hlY2tlZChjaG9pY2UpfVxuICAgICAgICAgICAgICAgIGNvcnJlY3RuZXNzPXtpc0V2YWx1YXRlTW9kZSA/IHRoaXMuZ2V0Q29ycmVjdG5lc3MoY2hvaWNlKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICBkaXNwbGF5S2V5PXt0aGlzLmluZGV4VG9TeW1ib2woaW5kZXgpfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0aW9uQnV0dG9uQmVsb3c9e2lzU2VsZWN0aW9uQnV0dG9uQmVsb3d9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICB7Y2hvaWNlTW9kZSA9PT0gJ2NoZWNrYm94JyAmJiBzZWxlY3Rpb25zIDwgbWluU2VsZWN0aW9ucyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZXJyb3JUZXh0fT57Z2V0TXVsdGlwbGVDaG9pY2VNaW5TZWxlY3Rpb25FcnJvck1lc3NhZ2UoKX08L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2Nob2ljZU1vZGUgPT09ICdjaGVja2JveCcgJiYgbWF4U2VsZWN0aW9uc0Vycm9yU3RhdGUgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+XG4gICAgICAgICAgICB7dHJhbnNsYXRvci50KGB0cmFuc2xhdGlvbjptdWx0aXBsZUNob2ljZTptYXhTZWxlY3Rpb25zXyR7bWF4U2VsZWN0aW9ucyA9PT0gMSA/ICdvbmUnIDogJ290aGVyJ31gLCB7XG4gICAgICAgICAgICAgIGxuZzogbGFuZ3VhZ2UsXG4gICAgICAgICAgICAgIG1heFNlbGVjdGlvbnMsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuTXVsdGlwbGVDaG9pY2UuZGVmYXVsdFByb3BzID0ge1xuICBzZXNzaW9uOiB7XG4gICAgdmFsdWU6IFtdLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKE11bHRpcGxlQ2hvaWNlKTtcbiJdfQ==
454
+ //# sourceMappingURL=multiple-choice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/multiple-choice.jsx"],"names":["translator","Translator","styles","theme","main","color","text","backgroundColor","background","position","border","partLabel","display","fontSize","margin","fontWeight","paddingBottom","spacing","unit","teacherInstructions","marginBottom","horizontalLayout","flexDirection","flexWrap","gridLayout","fieldset","padding","minWidth","outline","srOnly","left","top","width","height","overflow","errorText","typography","palette","error","paddingTop","MultipleChoice","props","event","target","value","checked","maxSelections","onChoiceChanged","session","length","setState","maxSelectionsErrorState","selected","selector","mode","showCorrect","state","onShowCorrectToggle","choice","isCorrect","correct","isChecked","isSelected","undefined","e","currentTarget","activeEl","document","activeElement","contains","relatedTarget","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","firstInputRef","current","focus","alwaysShowCorrect","onToggle","bind","React","createRef","sessionValue","indexOf","nextProps","correctResponse","index","keyMode","String","fromCharCode","toUpperCase","choiceMode","classes","disabled","className","choices","gridColumns","prompt","responseCorrect","animationsDisabled","language","isSelectionButtonBelow","minSelections","autoplayAudioEnabled","customAudioButton","isEvaluateMode","showCorrectAnswerToggle","columnsStyle","gridTemplateColumns","selections","teacherInstructionsDiv","getMultipleChoiceMinSelectionErrorMessage","t","lng","renderHeading","hidden","visible","handleGroupFocus","choicesLayout","map","selectedAnswerBackgroundColor","handleChange","hideTick","getChecked","getCorrectness","indexToSymbol","Component","PropTypes","string","oneOf","array","object","bool","func","isRequired","number","playImage","pauseImage","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 Translator from '@pie-lib/pie-toolbox/translator';\n\nimport StyledChoice from './choice';\n\n// MultipleChoice\n\nconst { translator } = Translator;\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n '& *': {\n '-webkit-font-smoothing': 'antialiased',\n },\n position: 'relative',\n // remove border from legend tags inside main to override the OT default styles\n '& legend': {\n border: 'none !important',\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 '&:focus': {\n outline: 'none',\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\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 selectedAnswerBackgroundColor: PropTypes.string,\n onShowCorrectToggle: PropTypes.func,\n isSelectionButtonBelow: PropTypes.bool,\n minSelections: PropTypes.number,\n maxSelections: PropTypes.number,\n autoplayAudioEnabled: PropTypes.bool,\n customAudioButton: {\n playImage: PropTypes.string,\n pauseImage: PropTypes.string,\n },\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: this.props.alwaysShowCorrect || false,\n maxSelectionsErrorState: false,\n };\n\n this.onToggle = this.onToggle.bind(this);\n this.firstInputRef = React.createRef();\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 was added for accessibility. Please see comments and videos from PD-2441.\n handleChange = (event) => {\n const { value, checked } = event.target;\n const { maxSelections, onChoiceChanged, session } = this.props;\n\n if (session.value && session.value.length >= maxSelections) {\n // show/hide max selections error when user select/deselect an answer\n this.setState({ maxSelectionsErrorState: checked });\n\n if (checked) {\n // prevent selecting more answers\n return;\n }\n }\n\n onChoiceChanged({ value, selected: checked, selector: 'Mouse' });\n };\n\n onToggle = () => {\n if (this.props.mode === 'evaluate') {\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps.correctResponse && this.state.showCorrect !== false) {\n this.setState({ showCorrect: false }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\n }\n\n if (nextProps.alwaysShowCorrect && this.state.showCorrect !== true) {\n this.setState({ showCorrect: true }, () => {\n if (this.props.onShowCorrectToggle) {\n this.props.onShowCorrectToggle();\n }\n });\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 return this.isSelected(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 <h3 className={classes.srOnly}>Multiple Choice Question</h3>\n ) : (\n <h3 className={classes.srOnly}>Multiple Select Question</h3>\n );\n }\n\n handleGroupFocus = (e) => {\n const fieldset = e.currentTarget;\n const activeEl = document.activeElement;\n\n if (fieldset.contains(activeEl) && activeEl !== fieldset) {\n return;\n }\n\n // Only focus the first input if user is tabbing forward\n if (!e.relatedTarget || fieldset.compareDocumentPosition(e.relatedTarget) & Node.DOCUMENT_POSITION_PRECEDING) {\n if (this.firstInputRef?.current) {\n this.firstInputRef.current.focus();\n }\n }\n };\n\n render() {\n const {\n mode,\n disabled,\n className,\n choices = [],\n choiceMode,\n gridColumns,\n partLabel,\n prompt,\n responseCorrect,\n teacherInstructions,\n classes,\n alwaysShowCorrect,\n animationsDisabled,\n language,\n isSelectionButtonBelow,\n minSelections,\n maxSelections,\n autoplayAudioEnabled,\n session,\n customAudioButton,\n } = this.props;\n const { showCorrect, maxSelectionsErrorState } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const columnsStyle = gridColumns > 1 ? { gridTemplateColumns: `repeat(${gridColumns}, 1fr)` } : undefined;\n const selections = (session.value && session.value.length) || 0;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt\n tagName=\"div\"\n className=\"prompt\"\n defaultClassName=\"teacher-instructions\"\n prompt={teacherInstructions}\n />\n );\n\n const getMultipleChoiceMinSelectionErrorMessage = () => {\n if (minSelections && maxSelections) {\n return minSelections === maxSelections\n ? translator.t('translation:multipleChoice:minmaxSelections_equal', { lng: language, minSelections })\n : translator.t('translation:multipleChoice:minmaxSelections_range', {\n lng: language,\n minSelections,\n maxSelections,\n });\n }\n\n if (minSelections) {\n return translator.t('translation:multipleChoice:minSelections', { lng: language, minSelections });\n }\n\n return '';\n };\n\n return (\n <div id={'main-container'} className={classNames(classes.main, className, 'multiple-choice')}>\n {partLabel && <h2 className={classes.partLabel}>{partLabel}</h2>}\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\n tabIndex={0}\n className={classes.fieldset}\n onFocus={this.handleGroupFocus}\n role={choiceMode === 'radio' ? 'radiogroup' : 'group'}\n >\n <PreviewPrompt\n className=\"prompt\"\n defaultClassName=\"prompt\"\n prompt={prompt}\n tagName={'legend'}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\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 autoFocusRef={index === 0 ? this.firstInputRef : null}\n choicesLayout={this.props.choicesLayout}\n selectedAnswerBackgroundColor={this.props.selectedAnswerBackgroundColor}\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 tagName={partLabel ? `group-${partLabel}` : 'group'}\n onChoiceChanged={this.handleChange}\n hideTick={choice.hideTick}\n checked={this.getChecked(choice)}\n correctness={isEvaluateMode ? this.getCorrectness(choice) : undefined}\n displayKey={this.indexToSymbol(index)}\n isSelectionButtonBelow={isSelectionButtonBelow}\n />\n ))}\n </div>\n </fieldset>\n\n {choiceMode === 'checkbox' && selections < minSelections && (\n <div className={classes.errorText}>{getMultipleChoiceMinSelectionErrorMessage()}</div>\n )}\n {choiceMode === 'checkbox' && maxSelectionsErrorState && (\n <div className={classes.errorText}>\n {translator.t(`translation:multipleChoice:maxSelections_${maxSelections === 1 ? 'one' : 'other'}`, {\n lng: language,\n maxSelections,\n })}\n </div>\n )}\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
@@ -31,7 +31,7 @@ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
31
31
 
32
32
  var _main = _interopRequireDefault(require("./main"));
33
33
 
34
- var _mathRendering = require("@pie-lib/math-rendering");
34
+ var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
35
35
 
36
36
  var _debug = _interopRequireDefault(require("debug"));
37
37
 
@@ -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=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmludC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJwcmVwYXJlUHJpbnRNb2RlbCIsIm1vZGVsIiwib3B0cyIsImluc3RyIiwicm9sZSIsInByb21wdCIsInByb21wdEVuYWJsZWQiLCJ1bmRlZmluZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzaG93VGVhY2hlckluc3RydWN0aW9ucyIsImFsd2F5c1Nob3dDb3JyZWN0IiwibW9kZSIsImRpc2FibGVkIiwiYW5pbWF0aW9uc0Rpc2FibGVkIiwibG9ja0Nob2ljZU9yZGVyIiwiY2hvaWNlc0xheW91dCIsImNob2ljZXMiLCJtYXAiLCJjIiwicmF0aW9uYWxlIiwicmF0aW9uYWxlRW5hYmxlZCIsImhpZGVUaWNrIiwiZmVlZGJhY2siLCJrZXlNb2RlIiwiY2hvaWNlUHJlZml4IiwiTXVsdGlwbGVDaG9pY2VQcmludCIsIl9vcHRpb25zIiwiX21vZGVsIiwiX3Nlc3Npb24iLCJfcmVyZW5kZXIiLCJwcmludE1vZGVsIiwiZWxlbWVudCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIk1haW4iLCJzZXNzaW9uIiwiUmVhY3RET00iLCJyZW5kZXIiLCJsZWFkaW5nIiwidHJhaWxpbmciLCJvIiwicyIsIkhUTUxFbGVtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0sbUNBQU4sQ0FBWjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsQ0FBQ0MsS0FBRCxFQUFRQyxJQUFSLEVBQWlCO0FBQ3pDLE1BQU1DLEtBQUssR0FBR0QsSUFBSSxDQUFDRSxJQUFMLEtBQWMsWUFBNUI7QUFFQUgsRUFBQUEsS0FBSyxDQUFDSSxN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OztrREF2Q3lCYSxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IE1haW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygncGllLWVsZW1lbnQ6bXVsdGlwbGUtY2hvaWNlOnByaW50Jyk7XG5cbi8qKlxuICogTGl2ZSBpbiBzYW1lIHBhY2thZ2UgYXMgbWFpbiBlbGVtZW50IC0gc28gd2UgY2FuIGFjY2VzcyBzb21lIG9mIHRoZSBzaGFyZWQgY29tcHMhXG4gKlxuICogLSB1cGRhdGUgcHNsYiB0byBidWlsZCBwcmludCBpZiBzcmMvcHJpbnQuanMgaXMgdGhlcmVcbiAqIC0gdXBkYXRlIGRlbW8gZWxcbiAqIC0gZ2V0IGNvbmZpZ3VyZS9jb250cm9sbGVyIGJ1aWxkaW5nXG4gKi9cblxuY29uc3QgcHJlcGFyZVByaW50TW9kZWwgPSAobW9kZWwsIG9wdHMpID0+IHtcbiAgY29uc3QgaW5zdHIgPSBvcHRzLnJvbGUgPT09ICdpbnN0cnVjdG9yJztcblxuICBtb2RlbC5wcm9tcHQgPSBtb2RlbC5wcm9tcHRFbmFibGVkICE9PSBmYWxzZSA/IG1vZGVsLnByb21wdCA6IHVuZGVmaW5lZDtcbiAgbW9kZWwudGVhY2hlckluc3RydWN0aW9ucyA9XG4gICAgaW5zdHIgJiYgbW9kZWwudGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQgIT09IGZhbHNlID8gbW9kZWwudGVhY2hlckluc3RydWN0aW9ucyA6IHVuZGVmaW5lZDtcbiAgbW9kZWwuc2hvd1RlYWNoZXJJbnN0cnVjdGlvbnMgPSBpbnN0cjtcbiAgbW9kZWwuYWx3YXlzU2hvd0NvcnJlY3QgPSBpbnN0cjtcbiAgbW9kZWwubW9kZSA9IGluc3RyID8gJ2V2YWx1YXRlJyA6IG1vZGVsLm1vZGU7XG5cbiAgbW9kZWwuZGlzYWJsZWQgPSB0cnVlO1xuICBtb2RlbC5hbmltYXRpb25zRGlzYWJsZWQgPSB0cnVlO1xuICBtb2RlbC5sb2NrQ2hvaWNlT3JkZXIgPSB0cnVlO1xuICBtb2RlbC5jaG9pY2VzTGF5b3V0ID0gbW9kZWwuY2hvaWNlc0xheW91dCB8fCAndmVydGljYWwnO1xuXG4gIGNvbnN0IGNob2ljZXMgPSBjbG9uZURlZXAobW9kZWwuY2hvaWNlcyk7XG5cbiAgbW9kZWwuY2hvaWNlcyA9IGNob2ljZXMubWFwKChjKSA9PiB7XG4gICAgYy5yYXRpb25hbGUgPSBpbnN0ciAmJiBtb2RlbC5yYXRpb25hbGVFbmFibGVkICE9PSBmYWxzZSA/IGMucmF0aW9uYWxlIDogdW5kZWZpbmVkO1xuICAgIGMuaGlkZVRpY2sgPSBpbnN0cjtcbiAgICBjLmZlZWRiYWNrID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBjO1xuICB9KTtcblxuICBtb2RlbC5rZXlNb2RlID0gbW9kZWwuY2hvaWNlUHJlZml4IHx8ICdsZXR0ZXJzJztcblxuICByZXR1cm4gbW9kZWw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aXBsZUNob2ljZVByaW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX29wdGlvbnMgPSBudWxsO1xuICAgIHRoaXMuX21vZGVsID0gbnVsbDtcbiAgICB0aGlzLl9zZXNzaW9uID0gW107XG4gICAgdGhpcy5fcmVyZW5kZXIgPSBkZWJvdW5jZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsICYmIHRoaXMuX3Nlc3Npb24pIHtcbiAgICAgICAgICBjb25zdCBwcmludE1vZGVsID0gcHJlcGFyZVByaW50TW9kZWwodGhpcy5fbW9kZWwsIHRoaXMuX29wdGlvbnMpO1xuXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zICYmXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE1haW4sIHtcbiAgICAgICAgICAgICAgbW9kZWw6IHByaW50TW9kZWwsXG4gICAgICAgICAgICAgIHNlc3Npb246IHt9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBSZWFjdERPTS5yZW5kZXIoZWxlbWVudCwgdGhpcywgKCkgPT4ge1xuICAgICAgICAgICAgbG9nKCdyZW5kZXIgY29tcGxldGUgLSByZW5kZXIgbWF0aCcpO1xuICAgICAgICAgICAgcmVuZGVyTWF0aCh0aGlzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3NraXAnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIDUwLFxuICAgICAgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSxcbiAgICApO1xuICB9XG4gIHNldCBvcHRpb25zKG8pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gbztcbiAgfVxuXG4gIHNldCBtb2RlbChzKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBzO1xuICAgIHRoaXMuX3JlcmVuZGVyKCk7XG4gIH1cblxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHt9XG59XG4iXX0=
129
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","MultipleChoicePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport cloneDeep from 'lodash/cloneDeep';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:multiple-choice:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nexport default class MultipleChoicePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n model: printModel,\n session: {},\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
@@ -45,4 +45,4 @@ function updateSessionMetadata(session, metadata) {
45
45
  session.waitTime = session.audioEndTime - session.audioStartTime;
46
46
  }
47
47
  }
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXNzaW9uLXVwZGF0ZXIuanMiXSwibmFtZXMiOlsidXBkYXRlU2Vzc2lvblZhbHVlIiwic2Vzc2lvbiIsImNob2ljZU1vZGUiLCJkYXRhIiwidmFsdWUiLCJzZWxlY3RlZCIsIkFycmF5IiwiZnJvbSIsIlNldCIsImZpbHRlciIsInYiLCJzZWxlY3RvciIsInVwZGF0ZVNlc3Npb25NZXRhZGF0YSIsIm1ldGFkYXRhIiwiYXVkaW9TdGFydFRpbWUiLCJhdWRpb0VuZFRpbWUiLCJ3YWl0VGltZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0Esa0JBQVQsQ0FBNEJDLE9BQTVCLEVBQXFDQyxVQUFyQyxFQUFpREMsSUFBakQsRUFBdUQ7QUFDNURGLEVBQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQkgsT0FBTyxDQUFDRyxLQUFSLElBQWlCLEVBQWpDOztBQUNBLE1BQUlGLFVBQVUsS0FBSyxVQUFuQixFQUErQjtBQUM3QixRQUFJQyxJQUFJLENBQUNFLFFBQVQsRUFBbUI7QUFDakJKLE1BQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQkUsS0FBSyxDQUFDQyxJQUFOLENBQVcsSUFBSUMsR0FBSiwrQ0FBWVAsT0FBTyxDQUFDRyxLQUFwQixJQUEyQkQsSUFBSSxDQUFDQyxLQUFoQyxHQUFYLENBQWhCO0FBQ0QsS0FGRCxNQUVPO0FBQ0xILE1BQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQkgsT0FBTyxDQUFDRyxLQUFSLENBQWNLLE1BQWQsQ0FBcUIsVUFBQUMsQ0FBQztBQUFBLGVBQUlBLENBQUMsS0FBS1AsSUFBSSxDQUFDQyxLQUFmO0FBQUEsT0FBdEIsQ0FBaEI7QUFDRDtBQUNGOztBQUVELE1BQUlGLFVBQVUsS0FBSyxPQUFuQixFQUE0QjtBQUMxQixRQUFJQyxJQUFJLENBQUNFLFFBQVQsRUFBbUI7QUFDakJKLE1BQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQixDQUFDRCxJQUFJLENBQUNDLEtBQU4sQ0FBaEI7QUFDRCxLQUZELE1BRU87QUFDTEgsTUFBQUEsT0FBTyxDQUFDRyxLQUFSLEdBQWdCLEVBQWhCO0FBQ0Q7QUFDRixHQWhCMkQsQ0FrQjVEOzs7QUFDQUgsRUFBQUEsT0FBTyxDQUFDVSxRQUFSLEdBQW1CUixJQUFJLENBQUNRLFFBQXhCLENBbkI0RCxDQW1CMUI7QUFDbkM7O0FBRU0sU0FBU0MscUJBQVQsQ0FBK0JYLE9BQS9CLEVBQXdDWSxRQUF4QyxFQUFrRDtBQUN2RFosRUFBQUEsT0FBTyxDQUFDYSxjQUFSLEdBQXlCYixPQUFPLENBQUNhLGNBQVIsSUFBMEJELFFBQVEsQ0FBQ0MsY0FBNUQsQ0FEdUQsQ0FDcUI7O0FBQzVFYixFQUFBQSxPQUFPLENBQUNjLFlBQVIsR0FBdUJkLE9BQU8sQ0FBQ2MsWUFBUixJQUF3QkYsUUFBUSxDQUFDRSxZQUF4RCxDQUZ1RCxDQUVlOztBQUV0RSxNQUFHLENBQUNkLE9BQU8sQ0FBQ2UsUUFBVCxJQUFxQmYsT0FBTyxDQUFDYSxjQUE3QixJQUErQ2IsT0FBTyxDQUFDYyxZQUExRCxFQUF3RTtBQUN0RTtBQUNBZCxJQUFBQSxPQUFPLENBQUNlLFFBQVIsR0FBb0JmLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QmQsT0FBTyxDQUFDYSxjQUFuRDtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdXBkYXRlU2Vzc2lvblZhbHVlKHNlc3Npb24sIGNob2ljZU1vZGUsIGRhdGEpIHtcbiAgc2Vzc2lvbi52YWx1ZSA9IHNlc3Npb24udmFsdWUgfHwgW107XG4gIGlmIChjaG9pY2VNb2RlID09PSAnY2hlY2tib3gnKSB7XG4gICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLnNlc3Npb24udmFsdWUsIGRhdGEudmFsdWVdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBzZXNzaW9uLnZhbHVlLmZpbHRlcih2ID0+IHYgIT09IGRhdGEudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaG9pY2VNb2RlID09PSAncmFkaW8nKSB7XG4gICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBbZGF0YS52YWx1ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBbXTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vdXBkYXRlIHNlc3Npb24gdmFsdWUgbWV0YWRhdGFcbiAgc2Vzc2lvbi5zZWxlY3RvciA9IGRhdGEuc2VsZWN0b3I7IC8vdGhlIGlucHV0IG1ldGhvZCB1c2VkIHRvIHNlbGVjdCB0aGUgY2hvaWNlIChlLmcuIG1vdXNlLCBrZXlib2FyZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVNlc3Npb25NZXRhZGF0YShzZXNzaW9uLCBtZXRhZGF0YSkge1xuICBzZXNzaW9uLmF1ZGlvU3RhcnRUaW1lID0gc2Vzc2lvbi5hdWRpb1N0YXJ0VGltZSB8fCBtZXRhZGF0YS5hdWRpb1N0YXJ0VGltZTsgLy90aW1lc3RhbXAgd2hlbiBhdXRvLXBsYXllZCBhdWRpbyBzdGFydGVkIHBsYXlpbmdcbiAgc2Vzc2lvbi5hdWRpb0VuZFRpbWUgPSBzZXNzaW9uLmF1ZGlvRW5kVGltZSB8fCBtZXRhZGF0YS5hdWRpb0VuZFRpbWU7IC8vdGltZXN0YW1wIHdoZW4gYXV0by1wbGF5ZWQgYXVkaW8gY29tcGxldGVkIHBsYXlpbmdcbiAgXG4gIGlmKCFzZXNzaW9uLndhaXRUaW1lICYmIHNlc3Npb24uYXVkaW9TdGFydFRpbWUgJiYgc2Vzc2lvbi5hdWRpb0VuZFRpbWUpIHtcbiAgICAvLyB3YWl0VGltZSBpcyBlbGFwc2VkIHRpbWUgdGhlIHVzZXIgd2FpdGVkIGZvciBhdXRvLXBsYXllZCBhdWRpbyB0byBmaW5pc2hcbiAgICBzZXNzaW9uLndhaXRUaW1lID0gKHNlc3Npb24uYXVkaW9FbmRUaW1lIC0gc2Vzc2lvbi5hdWRpb1N0YXJ0VGltZSk7XG4gIH1cbn1cbiJdfQ==
48
+ //# sourceMappingURL=session-updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/session-updater.js"],"names":["updateSessionValue","session","choiceMode","data","value","selected","Array","from","Set","filter","v","selector","updateSessionMetadata","metadata","audioStartTime","audioEndTime","waitTime"],"mappings":";;;;;;;;;;;;AAAO,SAASA,kBAAT,CAA4BC,OAA5B,EAAqCC,UAArC,EAAiDC,IAAjD,EAAuD;AAC5DF,EAAAA,OAAO,CAACG,KAAR,GAAgBH,OAAO,CAACG,KAAR,IAAiB,EAAjC;;AACA,MAAIF,UAAU,KAAK,UAAnB,EAA+B;AAC7B,QAAIC,IAAI,CAACE,QAAT,EAAmB;AACjBJ,MAAAA,OAAO,CAACG,KAAR,GAAgBE,KAAK,CAACC,IAAN,CAAW,IAAIC,GAAJ,+CAAYP,OAAO,CAACG,KAApB,IAA2BD,IAAI,CAACC,KAAhC,GAAX,CAAhB;AACD,KAFD,MAEO;AACLH,MAAAA,OAAO,CAACG,KAAR,GAAgBH,OAAO,CAACG,KAAR,CAAcK,MAAd,CAAqB,UAAAC,CAAC;AAAA,eAAIA,CAAC,KAAKP,IAAI,CAACC,KAAf;AAAA,OAAtB,CAAhB;AACD;AACF;;AAED,MAAIF,UAAU,KAAK,OAAnB,EAA4B;AAC1B,QAAIC,IAAI,CAACE,QAAT,EAAmB;AACjBJ,MAAAA,OAAO,CAACG,KAAR,GAAgB,CAACD,IAAI,CAACC,KAAN,CAAhB;AACD,KAFD,MAEO;AACLH,MAAAA,OAAO,CAACG,KAAR,GAAgB,EAAhB;AACD;AACF,GAhB2D,CAkB5D;;;AACAH,EAAAA,OAAO,CAACU,QAAR,GAAmBR,IAAI,CAACQ,QAAxB,CAnB4D,CAmB1B;AACnC;;AAEM,SAASC,qBAAT,CAA+BX,OAA/B,EAAwCY,QAAxC,EAAkD;AACvDZ,EAAAA,OAAO,CAACa,cAAR,GAAyBb,OAAO,CAACa,cAAR,IAA0BD,QAAQ,CAACC,cAA5D,CADuD,CACqB;;AAC5Eb,EAAAA,OAAO,CAACc,YAAR,GAAuBd,OAAO,CAACc,YAAR,IAAwBF,QAAQ,CAACE,YAAxD,CAFuD,CAEe;;AAEtE,MAAG,CAACd,OAAO,CAACe,QAAT,IAAqBf,OAAO,CAACa,cAA7B,IAA+Cb,OAAO,CAACc,YAA1D,EAAwE;AACtE;AACAd,IAAAA,OAAO,CAACe,QAAR,GAAoBf,OAAO,CAACc,YAAR,GAAuBd,OAAO,CAACa,cAAnD;AACD;AACF","sourcesContent":["export function updateSessionValue(session, choiceMode, data) {\n session.value = session.value || [];\n if (choiceMode === 'checkbox') {\n if (data.selected) {\n session.value = Array.from(new Set([...session.value, data.value]));\n } else {\n session.value = session.value.filter(v => v !== data.value);\n }\n }\n\n if (choiceMode === 'radio') {\n if (data.selected) {\n session.value = [data.value];\n } else {\n session.value = [];\n }\n }\n \n //update session value metadata\n session.selector = data.selector; //the input method used to select the choice (e.g. mouse, keyboard)\n}\n\nexport function updateSessionMetadata(session, metadata) {\n session.audioStartTime = session.audioStartTime || metadata.audioStartTime; //timestamp when auto-played audio started playing\n session.audioEndTime = session.audioEndTime || metadata.audioEndTime; //timestamp when auto-played audio completed playing\n \n if(!session.waitTime && session.audioStartTime && session.audioEndTime) {\n // waitTime is elapsed time the user waited for auto-played audio to finish\n session.waitTime = (session.audioEndTime - session.audioStartTime);\n }\n}\n"],"file":"session-updater.js"}