@pie-element/multiple-choice 9.18.0 → 9.19.0-beta.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 +8 -0
  2. package/configure/CHANGELOG.md +8 -0
  3. package/configure/lib/__tests__/root.test.js +271 -0
  4. package/configure/lib/defaults.js +1 -1
  5. package/configure/lib/index.js +2 -2
  6. package/configure/lib/main.js +7 -7
  7. package/configure/lib/utils.js +1 -1
  8. package/configure/package.json +4 -2
  9. package/controller/CHANGELOG.md +8 -0
  10. package/controller/lib/__tests__/index.test.js +867 -0
  11. package/controller/lib/__tests__/utils.test.js +8 -0
  12. package/controller/lib/defaults.js +1 -1
  13. package/controller/lib/index.js +2 -2
  14. package/controller/lib/utils.js +1 -1
  15. package/controller/package.json +2 -2
  16. package/docs/demo/pie.manifest.json +11 -0
  17. package/lib/__tests__/choice-input-test.js +131 -0
  18. package/lib/__tests__/index-test.js +183 -0
  19. package/lib/__tests__/key-events-test.js +98 -0
  20. package/lib/__tests__/multiple-choice-test.js +235 -0
  21. package/lib/__tests__/session-updater-test.js +72 -0
  22. package/lib/choice-input.js +2 -2
  23. package/lib/choice.js +1 -1
  24. package/lib/feedback-tick.js +2 -2
  25. package/lib/index.js +3 -3
  26. package/lib/main.js +2 -2
  27. package/lib/multiple-choice.js +5 -5
  28. package/lib/print.js +2 -2
  29. package/lib/session-updater.js +1 -1
  30. package/package.json +6 -3
  31. package/configure/lib/defaults.js.map +0 -1
  32. package/configure/lib/index.js.map +0 -1
  33. package/configure/lib/main.js.map +0 -1
  34. package/configure/lib/utils.js.map +0 -1
  35. package/controller/lib/defaults.js.map +0 -1
  36. package/controller/lib/index.js.map +0 -1
  37. package/controller/lib/utils.js.map +0 -1
  38. package/lib/choice-input.js.map +0 -1
  39. package/lib/choice.js.map +0 -1
  40. package/lib/feedback-tick.js.map +0 -1
  41. package/lib/index.js.map +0 -1
  42. package/lib/main.js.map +0 -1
  43. package/lib/multiple-choice.js.map +0 -1
  44. package/lib/print.js.map +0 -1
  45. package/lib/session-updater.js.map +0 -1
  46. package/module/configure.js +0 -11070
  47. package/module/controller.js +0 -3601
  48. package/module/demo.js +0 -86
  49. package/module/element.js +0 -13448
  50. package/module/index.html +0 -21
  51. package/module/manifest.json +0 -14
  52. package/module/print-demo.js +0 -124
  53. package/module/print.html +0 -18
  54. package/module/print.js +0 -13204
@@ -25,15 +25,15 @@ var _react = _interopRequireDefault(require("react"));
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
- var _correctAnswerToggle = require("@pie-lib/pie-toolbox/correct-answer-toggle");
28
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/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/pie-toolbox/render-ui");
34
+ var _renderUi = require("@pie-lib/render-ui");
35
35
 
36
- var _translator = _interopRequireDefault(require("@pie-lib/pie-toolbox/translator"));
36
+ var _translator = _interopRequireDefault(require("@pie-lib/translator"));
37
37
 
38
38
  var _choice = _interopRequireDefault(require("./choice"));
39
39
 
@@ -364,7 +364,7 @@ var MultipleChoice = /*#__PURE__*/function (_React$Component) {
364
364
  tagName: 'legend',
365
365
  autoplayAudioEnabled: autoplayAudioEnabled,
366
366
  customAudioButton: customAudioButton
367
- }), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle.CorrectAnswerToggle, {
367
+ }), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
368
368
  show: showCorrectAnswerToggle,
369
369
  toggled: showCorrect,
370
370
  onToggle: this.onToggle.bind(this),
@@ -448,4 +448,4 @@ MultipleChoice.defaultProps = {
448
448
  var _default = (0, _styles.withStyles)(styles)(MultipleChoice);
449
449
 
450
450
  exports["default"] = _default;
451
- //# sourceMappingURL=multiple-choice.js.map
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==
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/pie-toolbox/math-rendering");
34
+ var _mathRendering = require("@pie-lib/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=print.js.map
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmludC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJwcmVwYXJlUHJpbnRNb2RlbCIsIm1vZGVsIiwib3B0cyIsImluc3RyIiwicm9sZSIsInByb21wdCIsInByb21wdEVuYWJsZWQiLCJ1bmRlZmluZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzaG93VGVhY2hlckluc3RydWN0aW9ucyIsImFsd2F5c1Nob3dDb3JyZWN0IiwibW9kZSIsImRpc2FibGVkIiwiYW5pbWF0aW9uc0Rpc2FibGVkIiwibG9ja0Nob2ljZU9yZGVyIiwiY2hvaWNlc0xheW91dCIsImNob2ljZXMiLCJtYXAiLCJjIiwicmF0aW9uYWxlIiwicmF0aW9uYWxlRW5hYmxlZCIsImhpZGVUaWNrIiwiZmVlZGJhY2siLCJrZXlNb2RlIiwiY2hvaWNlUHJlZml4IiwiTXVsdGlwbGVDaG9pY2VQcmludCIsIl9vcHRpb25zIiwiX21vZGVsIiwiX3Nlc3Npb24iLCJfcmVyZW5kZXIiLCJwcmludE1vZGVsIiwiZWxlbWVudCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIk1haW4iLCJzZXNzaW9uIiwiUmVhY3RET00iLCJyZW5kZXIiLCJsZWFkaW5nIiwidHJhaWxpbmciLCJvIiwicyIsIkhUTUxFbGVtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0sbUNBQU4sQ0FBWjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsQ0FBQ0MsS0FBRCxFQUFRQyxJQUFSLEVBQWlCO0FBQ3pDLE1BQU1DLEtBQUssR0FBR0QsSUFBSSxDQUFDRSxJQUFMLEtBQWMsWUFBNUI7QUFFQUgsRUFBQUEsS0FBSyxDQUFDSSxN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OztrREF2Q3lCYSxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IE1haW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygncGllLWVsZW1lbnQ6bXVsdGlwbGUtY2hvaWNlOnByaW50Jyk7XG5cbi8qKlxuICogTGl2ZSBpbiBzYW1lIHBhY2thZ2UgYXMgbWFpbiBlbGVtZW50IC0gc28gd2UgY2FuIGFjY2VzcyBzb21lIG9mIHRoZSBzaGFyZWQgY29tcHMhXG4gKlxuICogLSB1cGRhdGUgcHNsYiB0byBidWlsZCBwcmludCBpZiBzcmMvcHJpbnQuanMgaXMgdGhlcmVcbiAqIC0gdXBkYXRlIGRlbW8gZWxcbiAqIC0gZ2V0IGNvbmZpZ3VyZS9jb250cm9sbGVyIGJ1aWxkaW5nXG4gKi9cblxuY29uc3QgcHJlcGFyZVByaW50TW9kZWwgPSAobW9kZWwsIG9wdHMpID0+IHtcbiAgY29uc3QgaW5zdHIgPSBvcHRzLnJvbGUgPT09ICdpbnN0cnVjdG9yJztcblxuICBtb2RlbC5wcm9tcHQgPSBtb2RlbC5wcm9tcHRFbmFibGVkICE9PSBmYWxzZSA/IG1vZGVsLnByb21wdCA6IHVuZGVmaW5lZDtcbiAgbW9kZWwudGVhY2hlckluc3RydWN0aW9ucyA9XG4gICAgaW5zdHIgJiYgbW9kZWwudGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQgIT09IGZhbHNlID8gbW9kZWwudGVhY2hlckluc3RydWN0aW9ucyA6IHVuZGVmaW5lZDtcbiAgbW9kZWwuc2hvd1RlYWNoZXJJbnN0cnVjdGlvbnMgPSBpbnN0cjtcbiAgbW9kZWwuYWx3YXlzU2hvd0NvcnJlY3QgPSBpbnN0cjtcbiAgbW9kZWwubW9kZSA9IGluc3RyID8gJ2V2YWx1YXRlJyA6IG1vZGVsLm1vZGU7XG5cbiAgbW9kZWwuZGlzYWJsZWQgPSB0cnVlO1xuICBtb2RlbC5hbmltYXRpb25zRGlzYWJsZWQgPSB0cnVlO1xuICBtb2RlbC5sb2NrQ2hvaWNlT3JkZXIgPSB0cnVlO1xuICBtb2RlbC5jaG9pY2VzTGF5b3V0ID0gbW9kZWwuY2hvaWNlc0xheW91dCB8fCAndmVydGljYWwnO1xuXG4gIGNvbnN0IGNob2ljZXMgPSBjbG9uZURlZXAobW9kZWwuY2hvaWNlcyk7XG5cbiAgbW9kZWwuY2hvaWNlcyA9IGNob2ljZXMubWFwKChjKSA9PiB7XG4gICAgYy5yYXRpb25hbGUgPSBpbnN0ciAmJiBtb2RlbC5yYXRpb25hbGVFbmFibGVkICE9PSBmYWxzZSA/IGMucmF0aW9uYWxlIDogdW5kZWZpbmVkO1xuICAgIGMuaGlkZVRpY2sgPSBpbnN0cjtcbiAgICBjLmZlZWRiYWNrID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBjO1xuICB9KTtcblxuICBtb2RlbC5rZXlNb2RlID0gbW9kZWwuY2hvaWNlUHJlZml4IHx8ICdsZXR0ZXJzJztcblxuICByZXR1cm4gbW9kZWw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aXBsZUNob2ljZVByaW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX29wdGlvbnMgPSBudWxsO1xuICAgIHRoaXMuX21vZGVsID0gbnVsbDtcbiAgICB0aGlzLl9zZXNzaW9uID0gW107XG4gICAgdGhpcy5fcmVyZW5kZXIgPSBkZWJvdW5jZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsICYmIHRoaXMuX3Nlc3Npb24pIHtcbiAgICAgICAgICBjb25zdCBwcmludE1vZGVsID0gcHJlcGFyZVByaW50TW9kZWwodGhpcy5fbW9kZWwsIHRoaXMuX29wdGlvbnMpO1xuXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zICYmXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE1haW4sIHtcbiAgICAgICAgICAgICAgbW9kZWw6IHByaW50TW9kZWwsXG4gICAgICAgICAgICAgIHNlc3Npb246IHt9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBSZWFjdERPTS5yZW5kZXIoZWxlbWVudCwgdGhpcywgKCkgPT4ge1xuICAgICAgICAgICAgbG9nKCdyZW5kZXIgY29tcGxldGUgLSByZW5kZXIgbWF0aCcpO1xuICAgICAgICAgICAgcmVuZGVyTWF0aCh0aGlzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3NraXAnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIDUwLFxuICAgICAgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSxcbiAgICApO1xuICB9XG4gIHNldCBvcHRpb25zKG8pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gbztcbiAgfVxuXG4gIHNldCBtb2RlbChzKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBzO1xuICAgIHRoaXMuX3JlcmVuZGVyKCk7XG4gIH1cblxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHt9XG59XG4iXX0=
@@ -45,4 +45,4 @@ function updateSessionMetadata(session, metadata) {
45
45
  session.waitTime = session.audioEndTime - session.audioStartTime;
46
46
  }
47
47
  }
48
- //# sourceMappingURL=session-updater.js.map
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXNzaW9uLXVwZGF0ZXIuanMiXSwibmFtZXMiOlsidXBkYXRlU2Vzc2lvblZhbHVlIiwic2Vzc2lvbiIsImNob2ljZU1vZGUiLCJkYXRhIiwidmFsdWUiLCJzZWxlY3RlZCIsIkFycmF5IiwiZnJvbSIsIlNldCIsImZpbHRlciIsInYiLCJzZWxlY3RvciIsInVwZGF0ZVNlc3Npb25NZXRhZGF0YSIsIm1ldGFkYXRhIiwiYXVkaW9TdGFydFRpbWUiLCJhdWRpb0VuZFRpbWUiLCJ3YWl0VGltZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0Esa0JBQVQsQ0FBNEJDLE9BQTVCLEVBQXFDQyxVQUFyQyxFQUFpREMsSUFBakQsRUFBdUQ7QUFDNURGLEVBQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQkgsT0FBTyxDQUFDRyxLQUFSLElBQWlCLEVBQWpDOztBQUNBLE1BQUlGLFVBQVUsS0FBSyxVQUFuQixFQUErQjtBQUM3QixRQUFJQyxJQUFJLENBQUNFLFFBQVQsRUFBbUI7QUFDakJKLE1BQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQkUsS0FBSyxDQUFDQyxJQUFOLENBQVcsSUFBSUMsR0FBSiwrQ0FBWVAsT0FBTyxDQUFDRyxLQUFwQixJQUEyQkQsSUFBSSxDQUFDQyxLQUFoQyxHQUFYLENBQWhCO0FBQ0QsS0FGRCxNQUVPO0FBQ0xILE1BQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQkgsT0FBTyxDQUFDRyxLQUFSLENBQWNLLE1BQWQsQ0FBcUIsVUFBQUMsQ0FBQztBQUFBLGVBQUlBLENBQUMsS0FBS1AsSUFBSSxDQUFDQyxLQUFmO0FBQUEsT0FBdEIsQ0FBaEI7QUFDRDtBQUNGOztBQUVELE1BQUlGLFVBQVUsS0FBSyxPQUFuQixFQUE0QjtBQUMxQixRQUFJQyxJQUFJLENBQUNFLFFBQVQsRUFBbUI7QUFDakJKLE1BQUFBLE9BQU8sQ0FBQ0csS0FBUixHQUFnQixDQUFDRCxJQUFJLENBQUNDLEtBQU4sQ0FBaEI7QUFDRCxLQUZELE1BRU87QUFDTEgsTUFBQUEsT0FBTyxDQUFDRyxLQUFSLEdBQWdCLEVBQWhCO0FBQ0Q7QUFDRixHQWhCMkQsQ0FrQjVEOzs7QUFDQUgsRUFBQUEsT0FBTyxDQUFDVSxRQUFSLEdBQW1CUixJQUFJLENBQUNRLFFBQXhCLENBbkI0RCxDQW1CMUI7QUFDbkM7O0FBRU0sU0FBU0MscUJBQVQsQ0FBK0JYLE9BQS9CLEVBQXdDWSxRQUF4QyxFQUFrRDtBQUN2RFosRUFBQUEsT0FBTyxDQUFDYSxjQUFSLEdBQXlCYixPQUFPLENBQUNhLGNBQVIsSUFBMEJELFFBQVEsQ0FBQ0MsY0FBNUQsQ0FEdUQsQ0FDcUI7O0FBQzVFYixFQUFBQSxPQUFPLENBQUNjLFlBQVIsR0FBdUJkLE9BQU8sQ0FBQ2MsWUFBUixJQUF3QkYsUUFBUSxDQUFDRSxZQUF4RCxDQUZ1RCxDQUVlOztBQUV0RSxNQUFHLENBQUNkLE9BQU8sQ0FBQ2UsUUFBVCxJQUFxQmYsT0FBTyxDQUFDYSxjQUE3QixJQUErQ2IsT0FBTyxDQUFDYyxZQUExRCxFQUF3RTtBQUN0RTtBQUNBZCxJQUFBQSxPQUFPLENBQUNlLFFBQVIsR0FBb0JmLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QmQsT0FBTyxDQUFDYSxjQUFuRDtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdXBkYXRlU2Vzc2lvblZhbHVlKHNlc3Npb24sIGNob2ljZU1vZGUsIGRhdGEpIHtcbiAgc2Vzc2lvbi52YWx1ZSA9IHNlc3Npb24udmFsdWUgfHwgW107XG4gIGlmIChjaG9pY2VNb2RlID09PSAnY2hlY2tib3gnKSB7XG4gICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLnNlc3Npb24udmFsdWUsIGRhdGEudmFsdWVdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBzZXNzaW9uLnZhbHVlLmZpbHRlcih2ID0+IHYgIT09IGRhdGEudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaG9pY2VNb2RlID09PSAncmFkaW8nKSB7XG4gICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBbZGF0YS52YWx1ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlc3Npb24udmFsdWUgPSBbXTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vdXBkYXRlIHNlc3Npb24gdmFsdWUgbWV0YWRhdGFcbiAgc2Vzc2lvbi5zZWxlY3RvciA9IGRhdGEuc2VsZWN0b3I7IC8vdGhlIGlucHV0IG1ldGhvZCB1c2VkIHRvIHNlbGVjdCB0aGUgY2hvaWNlIChlLmcuIG1vdXNlLCBrZXlib2FyZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVNlc3Npb25NZXRhZGF0YShzZXNzaW9uLCBtZXRhZGF0YSkge1xuICBzZXNzaW9uLmF1ZGlvU3RhcnRUaW1lID0gc2Vzc2lvbi5hdWRpb1N0YXJ0VGltZSB8fCBtZXRhZGF0YS5hdWRpb1N0YXJ0VGltZTsgLy90aW1lc3RhbXAgd2hlbiBhdXRvLXBsYXllZCBhdWRpbyBzdGFydGVkIHBsYXlpbmdcbiAgc2Vzc2lvbi5hdWRpb0VuZFRpbWUgPSBzZXNzaW9uLmF1ZGlvRW5kVGltZSB8fCBtZXRhZGF0YS5hdWRpb0VuZFRpbWU7IC8vdGltZXN0YW1wIHdoZW4gYXV0by1wbGF5ZWQgYXVkaW8gY29tcGxldGVkIHBsYXlpbmdcbiAgXG4gIGlmKCFzZXNzaW9uLndhaXRUaW1lICYmIHNlc3Npb24uYXVkaW9TdGFydFRpbWUgJiYgc2Vzc2lvbi5hdWRpb0VuZFRpbWUpIHtcbiAgICAvLyB3YWl0VGltZSBpcyBlbGFwc2VkIHRpbWUgdGhlIHVzZXIgd2FpdGVkIGZvciBhdXRvLXBsYXllZCBhdWRpbyB0byBmaW5pc2hcbiAgICBzZXNzaW9uLndhaXRUaW1lID0gKHNlc3Npb24uYXVkaW9FbmRUaW1lIC0gc2Vzc2lvbi5hdWRpb1N0YXJ0VGltZSk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,14 +1,17 @@
1
1
  {
2
2
  "name": "@pie-element/multiple-choice",
3
3
  "repository": "pie-framework/pie-elements",
4
- "version": "9.18.0",
4
+ "version": "9.19.0-beta.0",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
8
  "dependencies": {
9
9
  "@material-ui/core": "^3.9.2",
10
10
  "@pie-framework/pie-player-events": "^0.1.0",
11
- "@pie-lib/pie-toolbox": "2.22.0",
11
+ "@pie-lib/correct-answer-toggle": "^2.7.0-beta.0",
12
+ "@pie-lib/math-rendering": "^3.4.0-beta.0",
13
+ "@pie-lib/render-ui": "^4.17.0-beta.0",
14
+ "@pie-lib/translator": "^2.5.0-beta.0",
12
15
  "classnames": "^2.2.5",
13
16
  "debug": "^4.1.1",
14
17
  "enzyme-to-json": "^3.3.3",
@@ -19,7 +22,7 @@
19
22
  "react-test-renderer": "^16.3.2",
20
23
  "react-transition-group": "^2.3.1"
21
24
  },
22
- "gitHead": "dd63ede533364a1b0ff314c56027404314877feb",
25
+ "gitHead": "0ec7c6b8d1c811b20dbf32671d032f1e5bee1fb6",
23
26
  "scripts": {
24
27
  "postpublish": "../../scripts/postpublish"
25
28
  },
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","choicesLayout","feedbackEnabled","gridColumns","lockChoiceOrder","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","selectedAnswerBackgroundColor","keyboardEventsEnabled","configuration","baseInputConfiguration","audio","disabled","video","image","textAlign","showParagraphs","separateParagraphs","inputConfiguration","spellCheck","label","settings","enabled","answerChoiceCount","addChoiceButton","deleteChoice","feedback","required","studentInstructions","minAnswerChoices","maxAnswerChoices","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":"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","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n choiceMode: 'checkbox',\n choicePrefix: 'letters',\n choices: [],\n choicesLayout: 'vertical',\n feedbackEnabled: false,\n gridColumns: 2,\n lockChoiceOrder: true,\n partialScoring: true,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n selectedAnswerBackgroundColor: 'initial',\n keyboardEventsEnabled: false,\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n textAlign: { disabled: true },\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: true },\n },\n choices: {\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n answerChoiceCount: 0,\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels',\n },\n deleteChoice: {\n settings: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n inputConfiguration: {\n audio: { disabled: true },\n video: { disabled: true },\n image: { disabled: false },\n },\n required: false,\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n minAnswerChoices: 2,\n maxAnswerChoices: 5,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 636,\n choices: 900,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n choices: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"file":"defaults.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","newConfiguration","language","enabled","languageChoices","options","settings","find","option","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel","utils","normalizeChoices","choicesLayout","verticalMode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: '',\n },\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices(\n (model && model.choices) || [],\n configuration && configuration.answerChoiceCount,\n ),\n },\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || []),\n });\n\n // This is used for offering support for old models which have the property \"verticalMode\"\n normalizedModel.choicesLayout =\n model.choicesLayout || (model.verticalMode === false && 'horizontal') || sensibleDefaults.model.choicesLayout;\n\n return normalizedModel;\n };\n\n constructor() {\n super();\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n\n const newConfiguration = {\n ...sensibleDefaults.configuration,\n ...info.configuration,\n };\n this._configuration = newConfiguration;\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this._render();\n\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","radio","dropdown","MAX_CHOICES","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","rationaleHolder","flex","marginTop","marginLeft","choiceConfigurationHolder","display","flexDirection","choiceConfiguration","switchElement","justifyContent","margin","addButton","disableButton","cursor","pointerEvents","backgroundColor","color","disabled","flexContainer","alignItems","titleText","fontSize","typography","marginRight","tooltip","whiteSpace","maxWidth","errorText","palette","error","main","Design","props","classes","model","configuration","onPromptChanged","onChoiceChanged","onRemoveChoice","onAddChoice","imageSupport","uploadSoundSupport","onChangeModel","onConfigurationChanged","onTeacherInstructionsChanged","addChoiceButton","contentDimensions","feedback","deleteChoice","choiceMode","choicePrefix","partialScoring","lockChoiceOrder","teacherInstructions","studentInstructions","rationale","scoringType","sequentialChoiceLabels","settingsPanelDisabled","choicesLayout","spellCheck","gridColumns","maxImageWidth","maxImageHeight","prompt","withRubric","mathMlOptions","language","languageChoices","maxAnswerChoices","limitChoicesNumber","teacherInstructionsEnabled","rationaleEnabled","feedbackEnabled","promptEnabled","spellCheckEnabled","choices","errors","toolbarEditorPosition","extraCSSRules","answerChoicesError","answerChoices","choicesErrors","correctResponseError","correctResponse","promptError","rationaleErrors","teacherInstructionsError","nrOfColumnsAvailable","length","Array","from","_","i","baseInputConfiguration","toolbarOpts","position","getPluginProps","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","addChoiceButtonTooltip","panelSettings","label","enabled","options","panelProperties","studentInstructionsEnabled","rubricEnabled","Settings","Properties","inputConfiguration","map","choice","index","c","value","root","Main","showWarning","onModelChanged","minAnswerChoices","setState","splice","push","utils","firstAvailableIndex","type","correct","key","correctFound","state","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport {\n AlertDialog,\n InputContainer,\n ChoiceConfiguration,\n settings,\n layout,\n choiceUtils as utils,\n} from '@pie-lib/pie-toolbox/config-ui';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport merge from 'lodash/merge';\nimport { generateValidationMessage } from './utils';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst MAX_CHOICES = 9;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n rationaleHolder: {\n flex: 1,\n marginTop: theme.spacing.unit * 1.5,\n paddingTop: theme.spacing.unit * 2,\n marginLeft: theme.spacing.unit * 3.5,\n },\n choiceConfigurationHolder: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: theme.spacing.unit,\n },\n choiceConfiguration: {\n width: '100%',\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n marginTop: theme.spacing.unit,\n float: 'right',\n },\n disableButton: {\n cursor: 'not-allowed',\n pointerEvents: 'all',\n backgroundColor: color.disabled(),\n '&:hover': {\n backgroundColor: color.disabled(),\n },\n '&:focus': {\n backgroundColor: color.disabled(),\n },\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n titleText: {\n fontSize: theme.typography.fontSize + 2,\n marginRight: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nconst Design = withStyles(styles)((props) => {\n const {\n classes,\n model,\n configuration,\n onPromptChanged,\n onChoiceChanged,\n onRemoveChoice,\n onAddChoice,\n imageSupport,\n uploadSoundSupport,\n onChangeModel,\n onConfigurationChanged,\n onTeacherInstructionsChanged,\n } = props;\n\n const {\n addChoiceButton = {},\n contentDimensions = {},\n feedback = {},\n deleteChoice = {},\n choiceMode = {},\n choicePrefix = {},\n partialScoring = {},\n lockChoiceOrder = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n scoringType = {},\n sequentialChoiceLabels = {},\n settingsPanelDisabled,\n choicesLayout,\n spellCheck = {},\n gridColumns,\n maxImageWidth = {},\n maxImageHeight = {},\n prompt = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n let { maxAnswerChoices } = configuration || {};\n const {\n limitChoicesNumber,\n teacherInstructionsEnabled,\n rationaleEnabled,\n feedbackEnabled,\n promptEnabled,\n spellCheckEnabled,\n choices,\n errors,\n toolbarEditorPosition,\n extraCSSRules,\n } = model || {};\n\n const {\n answerChoices: answerChoicesError,\n choices: choicesErrors,\n correctResponse: correctResponseError,\n prompt: promptError,\n rationale: rationaleErrors,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const nrOfColumnsAvailable = choices?.length ? Array.from({ length: choices.length }, (_, i) => `${i + 1}`) : [];\n\n const { baseInputConfiguration = {} } = configuration;\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n // if old property is used, set maxAnswerChoices to 9\n if (limitChoicesNumber) {\n maxAnswerChoices = MAX_CHOICES;\n }\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n const validationMessage = generateValidationMessage(configuration);\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n const addChoiceButtonTooltip =\n maxAnswerChoices && choices?.length >= maxAnswerChoices ? `Only ${maxAnswerChoices} allowed maximum` : '';\n\n const panelSettings = {\n choiceMode: choiceMode.settings && radio(choiceMode.label, ['checkbox', 'radio']),\n 'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),\n choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),\n gridColumns:\n choicesLayout.settings &&\n model.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.length > 0 &&\n dropdown(gridColumns.label, nrOfColumnsAvailable),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n extraCSSRules={extraCSSRules}\n settings={\n <Panel\n model={model}\n onChangeModel={onChangeModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.titleText} component={'div'}>Choices</Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n {choices.map((choice, index) => (\n <div key={`choice-${index}`} className={classes.choiceConfigurationHolder}>\n <ChoiceConfiguration\n key={index}\n index={index + 1}\n useLetterOrdering={model.choicePrefix === 'letters'}\n className={classes.choiceConfiguration}\n mode={model.choiceMode}\n data={choice}\n defaultFeedback={{}}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onDelete={() => onRemoveChoice(index)}\n onChange={(c) => onChoiceChanged(index, c)}\n allowFeedBack={feedbackEnabled}\n allowDelete={deleteChoice.settings}\n noLabels\n pluginOpts={getPluginProps(configuration?.choices?.inputConfiguration)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n error={choicesErrors?.[choice.value] || null}\n noCorrectAnswerError={correctResponseError}\n maxImageWidth={(maxImageWidth && maxImageWidth.choices) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choices) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n\n {rationaleEnabled && (\n <InputContainer key={`rationale-${index}`} label={rationale.label} className={classes.rationaleHolder}>\n <EditableHtml\n className={classes.rationale}\n markup={choice.rationale || ''}\n onChange={(c) => onChoiceChanged(index, { ...choice, rationale: c })}\n imageSupport={imageSupport}\n error={rationaleErrors?.[choice.value] || null}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleErrors?.[choice.value] && (\n <div className={classes.errorText}>{rationaleErrors?.[choice.value]}</div>\n )}\n </InputContainer>\n )}\n </div>\n ))}\n\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n {answerChoicesError && <div className={classes.errorText}>{answerChoicesError}</div>}\n\n {addChoiceButton.settings && (\n <Tooltip title={addChoiceButtonTooltip} classes={{ tooltip: classes.tooltip }}>\n <Button\n classes={{ root: maxAnswerChoices && choices?.length >= maxAnswerChoices && classes.disableButton }}\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={onAddChoice}\n >\n {addChoiceButton.label}\n </Button>\n </Tooltip>\n )}\n </layout.ConfigLayout>\n );\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n state = { showWarning: false };\n\n onRemoveChoice = (index) => {\n const { model, configuration, onModelChanged } = this.props;\n const { minAnswerChoices } = configuration || {};\n\n if (minAnswerChoices && model.choices.length === minAnswerChoices) {\n this.setState({ showWarning: true });\n\n return;\n }\n\n model.choices.splice(index, 1);\n onModelChanged(model);\n };\n\n onAddChoice = () => {\n const { model, configuration, onModelChanged } = this.props;\n let { maxAnswerChoices } = configuration || {};\n const { limitChoicesNumber } = model || {};\n\n // if old property is used, set maxAnswerChoices to 9\n if (limitChoicesNumber) {\n maxAnswerChoices = MAX_CHOICES;\n }\n\n if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {\n return;\n }\n\n model.choices.push({\n label: '',\n value: utils.firstAvailableIndex(\n model.choices.map((c) => c.value),\n 0,\n ),\n feedback: { type: 'none' },\n });\n\n onModelChanged(model);\n };\n\n onChoiceChanged = (index, choice) => {\n const { model, onModelChanged } = this.props;\n\n if (choice.correct && model.choiceMode === 'radio') {\n model.choices = model.choices.map((c) => merge({}, c, { correct: false }));\n }\n\n model.choices.splice(index, 1, choice);\n onModelChanged(model);\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({\n ...this.props.model,\n prompt,\n });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({\n ...this.props.model,\n teacherInstructions,\n });\n };\n\n onModelChanged = (model, key) => {\n const { onModelChanged } = this.props;\n\n switch (key) {\n case 'choiceMode': {\n let value = model.choiceMode;\n\n if (value === 'radio') {\n let correctFound = false;\n\n model.choices = model.choices.map((c) => {\n if (correctFound) {\n c.correct = false;\n\n return c;\n }\n\n if (c.correct) {\n correctFound = true;\n }\n\n return c;\n });\n }\n\n onModelChanged(model, true);\n break;\n }\n\n default:\n onModelChanged(model);\n break;\n }\n };\n\n render() {\n const { configuration: { minAnswerChoices } = {} } = this.props;\n const { showWarning } = this.state;\n\n return (\n <React.Fragment>\n <AlertDialog\n open={showWarning}\n title=\"Warning\"\n text={`There can't be less than ${minAnswerChoices || 0} choices.`}\n onConfirm={() => this.setState({ showWarning: false })}\n />\n <Design\n {...this.props}\n onChangeModel={this.onModelChanged}\n onRemoveChoice={this.onRemoveChoice}\n onChoiceChanged={this.onChoiceChanged}\n onAddChoice={this.onAddChoice}\n onPromptChanged={this.onPromptChanged}\n onTeacherInstructionsChanged={this.onTeacherInstructionsChanged}\n />\n </React.Fragment>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["generateValidationMessage","config","minAnswerChoices","maxAnswerChoices","answerChoicesMessage","correctAnswerMessage","message"],"mappings":";;;;;;;AAAO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACC,MAAD,EAAY;AACnD,MAAQC,gBAAR,GAA+CD,MAA/C,CAAQC,gBAAR;AAAA,MAA0BC,gBAA1B,GAA+CF,MAA/C,CAA0BE,gBAA1B;AAEA,MAAMC,oBAAoB,GACxB,qCAA8BF,gBAA9B,UACCC,gBAAgB,yBAAkBA,gBAAlB,SAAwC,EADzD,IAEA,yBAFA,GAGA,uDAJF;AAMA,MAAME,oBAAoB,GAAG,qCAA7B;AAEA,MAAMC,OAAO,GAAG,6BAA6BF,oBAA7B,GAAoDC,oBAApE;AAEA,SAAOC,OAAP;AACD,CAdM","sourcesContent":["export const generateValidationMessage = (config) => {\n const { minAnswerChoices, maxAnswerChoices } = config;\n\n const answerChoicesMessage =\n `\\nThere should be at least ${minAnswerChoices} ` +\n (maxAnswerChoices ? `and at most ${maxAnswerChoices} ` : '') +\n 'answer choices defined.' +\n '\\nEvery answer choice should be non-blank and unique.';\n\n const correctAnswerMessage = '\\nA correct answer must be defined.';\n\n const message = 'Validation requirements:' + answerChoicesMessage + correctAnswerMessage;\n\n return message;\n};\n"],"file":"utils.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["choiceMode","choicePrefix","choices","choicesLayout","feedbackEnabled","gridColumns","lockChoiceOrder","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","selectedAnswerBackgroundColor","keyboardEventsEnabled"],"mappings":";;;;;;eAAe;AACbA,EAAAA,UAAU,EAAE,UADC;AAEbC,EAAAA,YAAY,EAAE,SAFD;AAGbC,EAAAA,OAAO,EAAE,EAHI;AAIbC,EAAAA,aAAa,EAAE,UAJF;AAKbC,EAAAA,eAAe,EAAE,KALJ;AAMbC,EAAAA,WAAW,EAAE,CANA;AAObC,EAAAA,eAAe,EAAE,IAPJ;AAQbC,EAAAA,cAAc,EAAE,IARH;AASbC,EAAAA,MAAM,EAAE,EATK;AAUbC,EAAAA,aAAa,EAAE,IAVF;AAWbC,EAAAA,SAAS,EAAE,EAXE;AAYbC,EAAAA,gBAAgB,EAAE,IAZL;AAabC,EAAAA,WAAW,EAAE,MAbA;AAcbC,EAAAA,0BAA0B,EAAE,IAdf;AAebC,EAAAA,mBAAmB,EAAE,EAfR;AAgBbC,EAAAA,0BAA0B,EAAE,IAhBf;AAiBbC,EAAAA,qBAAqB,EAAE,QAjBV;AAkBbC,EAAAA,6BAA6B,EAAE,SAlBlB;AAmBbC,EAAAA,qBAAqB,EAAE;AAnBV,C","sourcesContent":["export default {\n choiceMode: 'checkbox',\n choicePrefix: 'letters',\n choices: [],\n choicesLayout: 'vertical',\n feedbackEnabled: false,\n gridColumns: 2,\n lockChoiceOrder: true,\n partialScoring: true,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n selectedAnswerBackgroundColor: 'initial',\n keyboardEventsEnabled: false,\n};\n"],"file":"defaults.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["prepareChoice","model","env","defaultFeedback","choice","role","mode","out","label","value","rationale","rationaleEnabled","correct","feedbackEnabled","feedbackType","feedback","type","createDefaultModel","Promise","resolve","defaults","normalize","question","verticalMode","choicesLayout","questionProps","session","updateSession","normalizedQuestion","Object","assign","incorrect","choices","map","lockChoiceOrder","disabled","prompt","promptEnabled","gridColumns","choiceMode","keyMode","choicePrefix","responseCorrect","undefined","language","extraCSSRules","fontSizeFactor","isSelectionButtonBelow","selectedAnswerBackgroundColor","minSelections","maxSelections","keyboardEventsEnabled","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","teacherInstructions","teacherInstructionsEnabled","getScore","config","selectedChoices","correctChoices","filter","ch","score","reduce","acc","selectedChoice","find","length","str","parseFloat","toFixed","outcome","empty","partialScoringEnabled","partialScoring","enabled","createCorrectResponseSession","id","c","getInnerText","html","replaceAll","getContent","replace","validate","minAnswerChoices","maxAnswerChoices","reversedChoices","reverse","choicesErrors","rationaleErrors","errors","forEach","field","required","hasCorrectResponse","index","identicalAnswer","slice","some","nbOfChoices","answerChoices","correctResponse"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQC,GAAR,EAAaC,eAAb;AAAA,SAAiC,UAACC,MAAD,EAAY;AACjE,eAAuBF,GAAG,IAAI,EAA9B;AAAA,QAAQG,IAAR,QAAQA,IAAR;AAAA,QAAcC,IAAd,QAAcA,IAAd;;AACA,QAAMC,GAAG,GAAG;AACVC,MAAAA,KAAK,EAAEJ,MAAM,CAACI,KADJ;AAEVC,MAAAA,KAAK,EAAEL,MAAM,CAACK;AAFJ,KAAZ;;AAKA,QAAIJ,IAAI,KAAK,YAAT,KAA0BC,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,UAAtD,CAAJ,EAAuE;AACrEC,MAAAA,GAAG,CAACG,SAAJ,GAAgBT,KAAK,CAACU,gBAAN,GAAyBP,MAAM,CAACM,SAAhC,GAA4C,IAA5D;AACD,KAFD,MAEO;AACLH,MAAAA,GAAG,CAACG,SAAJ,GAAgB,IAAhB;AACD;;AAED,QAAIJ,IAAI,KAAK,UAAb,EAAyB;AACvBC,MAAAA,GAAG,CAACK,OAAJ,GAAc,CAAC,CAACR,MAAM,CAACQ,OAAvB;;AAEA,UAAIX,KAAK,CAACY,eAAV,EAA2B;AACzB,YAAMC,YAAY,GAAIV,MAAM,CAACW,QAAP,IAAmBX,MAAM,CAACW,QAAP,CAAgBC,IAApC,IAA6C,MAAlE;;AAEA,YAAIF,YAAY,KAAK,SAArB,EAAgC;AAC9BP,UAAAA,GAAG,CAACQ,QAAJ,GAAeZ,eAAe,CAACC,MAAM,CAACQ,OAAP,GAAiB,SAAjB,GAA6B,WAA9B,CAA9B;AACD,SAFD,MAEO,IAAIE,YAAY,KAAK,QAArB,EAA+B;AACpCP,UAAAA,GAAG,CAACQ,QAAJ,GAAeX,MAAM,CAACW,QAAP,CAAgBN,KAA/B;AACD;AACF;AACF;;AAED,WAAOF,GAAP;AACD,GA5BqB;AAAA,CAAtB;;AA8BO,SAASU,kBAAT,GAAwC;AAAA,MAAZhB,KAAY,uEAAJ,EAAI;AAC7C,SAAO,IAAIiB,OAAJ,CAAY,UAACC,OAAD;AAAA,WAAaA,OAAO,iCAAMC,oBAAN,GAAmBnB,KAAnB,EAApB;AAAA,GAAZ,CAAP;AACD;;AAEM,IAAMoB,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD,EAAc;AACrC,cAA0DA,QAAQ,IAAI,EAAtE;AAAA,MAAQC,YAAR,SAAQA,YAAR;AAAA,MAAsBC,aAAtB,SAAsBA,aAAtB;AAAA,MAAwCC,aAAxC;;AAEA,uDACKL,oBADL,GAEKK,aAFL;AAGE;AACA;AACAD,IAAAA,aAAa,EAAEA,aAAa,IAAKD,YAAY,KAAK,KAAjB,IAA0B,YAA5C,IAA6DH,qBAASI;AALvF;AAOD,CAVM;AAYP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;SACsBvB,K;;;;;yFAAf,iBAAqBqB,QAArB,EAA+BI,OAA/B,EAAwCxB,GAAxC,EAA6CyB,aAA7C;AAAA;;AAAA;AAAA;AAAA;AAAA;AACCC,YAAAA,kBADD,GACsBP,SAAS,CAACC,QAAD,CAD/B;AAGCnB,YAAAA,eAHD,GAGmB0B,MAAM,CAACC,MAAP,CACtB;AAAElB,cAAAA,OAAO,EAAE,SAAX;AAAsBmB,cAAAA,SAAS,EAAE;AAAjC,aADsB,EAEtBH,kBAAkB,CAACzB,eAFG,CAHnB;AAQD6B,YAAAA,OARC,GAQS,CAACJ,kBAAkB,CAACI,OAAnB,IAA8B,EAA/B,EAAmCC,GAAnC,CAAuCjC,aAAa,CAAC4B,kBAAD,EAAqB1B,GAArB,EAA0BC,eAA1B,CAApD,CART;AAUC+B,YAAAA,eAVD,GAUmB,kCAAYN,kBAAZ,EAAgCF,OAAhC,EAAyCxB,GAAzC,CAVnB;;AAAA,gBAYAgC,eAZA;AAAA;AAAA;AAAA;;AAAA;AAAA,mBAaa,yCAAmBF,OAAnB,EAA4BN,OAA5B,EAAqCC,aAArC,EAAoD,OAApD,CAbb;;AAAA;AAaHK,YAAAA,OAbG;;AAAA;AAgBCzB,YAAAA,GAhBD,GAgBO;AACV4B,cAAAA,QAAQ,EAAEjC,GAAG,CAACI,IAAJ,KAAa,QADb;AAEVA,cAAAA,IAAI,EAAEJ,GAAG,CAACI,IAFA;AAGV8B,cAAAA,MAAM,EAAER,kBAAkB,CAACS,aAAnB,GAAmCT,kBAAkB,CAACQ,MAAtD,GAA+D,IAH7D;AAIVZ,cAAAA,aAAa,EAAEI,kBAAkB,CAACJ,aAJxB;AAKVc,cAAAA,WAAW,EAAEV,kBAAkB,CAACU,WALtB;AAMVC,cAAAA,UAAU,EAAEX,kBAAkB,CAACW,UANrB;AAOVC,cAAAA,OAAO,EAAEZ,kBAAkB,CAACa,YAPlB;AAQVT,cAAAA,OAAO,EAAPA,OARU;AASVU,cAAAA,eAAe,EAAExC,GAAG,CAACI,IAAJ,KAAa,UAAb,GAA0B,8BAAkBsB,kBAAlB,EAAsCF,OAAtC,CAA1B,GAA2EiB,SATlF;AAUVC,cAAAA,QAAQ,EAAEhB,kBAAkB,CAACgB,QAVnB;AAWVC,cAAAA,aAAa,EAAEjB,kBAAkB,CAACiB,aAXxB;AAYVC,cAAAA,cAAc,EAAElB,kBAAkB,CAACkB,cAZzB;AAaVC,cAAAA,sBAAsB,EAAEnB,kBAAkB,CAACmB,sBAbjC;AAcVC,cAAAA,6BAA6B,EAAEpB,kBAAkB,CAACoB,6BAAnB,IAAoD,SAdzE;AAeVC,cAAAA,aAAa,EAAErB,kBAAkB,CAACqB,aAfxB;AAgBVC,cAAAA,aAAa,EAAEtB,kBAAkB,CAACsB,aAhBxB;AAiBVC,cAAAA,qBAAqB,EAAEvB,kBAAkB,CAACuB,qBAjBhC;AAkBVC,cAAAA,oBAAoB,EAAExB,kBAAkB,CAACwB,oBAlB/B;AAmBVC,cAAAA,oBAAoB,EAAEzB,kBAAkB,CAACyB,oBAnB/B;AAoBVC,cAAAA,iBAAiB,EAAE1B,kBAAkB,CAAC0B;AApB5B,aAhBP;AAAA,oBAuCkBpD,GAAG,IAAI,EAvCzB,EAuCGG,IAvCH,SAuCGA,IAvCH,EAuCSC,IAvCT,SAuCSA,IAvCT;;AAyCL,gBAAID,IAAI,KAAK,YAAT,KAA0BC,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,UAAtD,CAAJ,EAAuE;AACrEC,cAAAA,GAAG,CAACgD,mBAAJ,GAA0B3B,kBAAkB,CAAC4B,0BAAnB,GACtB5B,kBAAkB,CAAC2B,mBADG,GAEtB,IAFJ;AAGD,aAJD,MAIO;AACLhD,cAAAA,GAAG,CAACgD,mBAAJ,GAA0B,IAA1B;AACD;;AA/CI,6CAiDEhD,GAjDF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAoDA,IAAMkD,QAAQ,GAAG,SAAXA,QAAW,CAACC,MAAD,EAAShC,OAAT,EAAqB;AAC3C,MAAI,CAACA,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChC,WAAO,CAAP;AACD;;AAED,MAAMiC,eAAe,GAAGjC,OAAO,CAACjB,KAAR,IAAiB,EAAzC;AACA,MAAMmD,cAAc,GAAG,CAACF,MAAM,CAAC1B,OAAP,IAAkB,EAAnB,EAAuB6B,MAAvB,CAA8B,UAACC,EAAD;AAAA,WAAQA,EAAE,CAAClD,OAAX;AAAA,GAA9B,CAAvB;AAEA,MAAImD,KAAK,GAAGJ,eAAe,CAACK,MAAhB,CACV,UAACC,GAAD,EAAMC,cAAN;AAAA,WAAyBD,GAAG,IAAIL,cAAc,CAACO,IAAf,CAAoB,UAACL,EAAD;AAAA,aAAQA,EAAE,CAACrD,KAAH,KAAayD,cAArB;AAAA,KAApB,IAA2D,CAA3D,GAA+D,CAAnE,CAA5B;AAAA,GADU,EAEV,CAFU,CAAZ;;AAKA,MAAIN,cAAc,CAACQ,MAAf,GAAwBT,eAAe,CAACS,MAA5C,EAAoD;AAClDL,IAAAA,KAAK,IAAIJ,eAAe,CAACS,MAAhB,GAAyBR,cAAc,CAACQ,MAAjD;;AAEA,QAAIL,KAAK,GAAG,CAAZ,EAAe;AACbA,MAAAA,KAAK,GAAG,CAAR;AACD;AACF;;AAED,MAAMM,GAAG,GAAGT,cAAc,CAACQ,MAAf,GAAwBL,KAAK,GAAGH,cAAc,CAACQ,MAA/C,GAAwD,CAApE;AAEA,SAAOE,UAAU,CAACD,GAAG,CAACE,OAAJ,CAAY,CAAZ,CAAD,CAAjB;AACD,CAxBM;AA0BP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASC,OAAT,CAAiBvE,KAAjB,EAAwByB,OAAxB,EAAiCxB,GAAjC,EAAsC;AAC3C,SAAO,IAAIgB,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI,CAACO,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChCP,MAAAA,OAAO,CAAC;AAAE4C,QAAAA,KAAK,EAAE,CAAT;AAAYU,QAAAA,KAAK,EAAE;AAAnB,OAAD,CAAP;AACD,KAFD,MAEO;AACL,UAAMC,qBAAqB,GAAGC,gCAAeC,OAAf,CAAuB3E,KAAvB,EAA8BC,GAA9B,KAAsCD,KAAK,CAACsC,UAAN,KAAqB,OAAzF;AACA,UAAMwB,KAAK,GAAGN,QAAQ,CAACxD,KAAD,EAAQyB,OAAR,CAAtB;AAEAP,MAAAA,OAAO,CAAC;AAAE4C,QAAAA,KAAK,EAAEW,qBAAqB,GAAGX,KAAH,GAAWA,KAAK,KAAK,CAAV,GAAc,CAAd,GAAkB,CAA3D;AAA8DU,QAAAA,KAAK,EAAE;AAArE,OAAD,CAAP;AACD;AACF,GATM,CAAP;AAUD;;AAEM,IAAMI,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACvD,QAAD,EAAWpB,GAAX,EAAmB;AAC7D,SAAO,IAAIgB,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAIjB,GAAG,CAACI,IAAJ,KAAa,UAAb,IAA2BJ,GAAG,CAACG,IAAJ,KAAa,YAA5C,EAA0D;AACxD,kBAAoBiB,QAAQ,IAAI;AAAEU,QAAAA,OAAO,EAAE;AAAX,OAAhC;AAAA,UAAQA,OAAR,SAAQA,OAAR;;AAEAb,MAAAA,OAAO,CAAC;AACN2D,QAAAA,EAAE,EAAE,GADE;AAENrE,QAAAA,KAAK,EAAEuB,OAAO,CAAC6B,MAAR,CAAe,UAACkB,CAAD;AAAA,iBAAOA,CAAC,CAACnE,OAAT;AAAA,SAAf,EAAiCqB,GAAjC,CAAqC,UAAC8C,CAAD;AAAA,iBAAOA,CAAC,CAACtE,KAAT;AAAA,SAArC;AAFD,OAAD,CAAP;AAID,KAPD,MAOO;AACLU,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;AACF,GAXM,CAAP;AAYD,CAbM,C,CAeP;;;;;AACA,IAAM6D,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaC,UAAb,CAAwB,UAAxB,EAAoC,EAApC,CAAV;AAAA,CAArB,C,CAEA;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACF,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaG,OAAb,CAAqB,oCAArB,EAA2D,EAA3D,CAAV;AAAA,CAAnB;;AAEO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5BpF,KAA4B,uEAApB,EAAoB;AAAA,MAAhByD,MAAgB,uEAAP,EAAO;AACnD,MAAQ1B,OAAR,GAAoB/B,KAApB,CAAQ+B,OAAR;AACA,8BAAmD0B,MAAnD,CAAQ4B,gBAAR;AAAA,MAAQA,gBAAR,sCAA2B,CAA3B;AAAA,MAA8BC,gBAA9B,GAAmD7B,MAAnD,CAA8B6B,gBAA9B;AACA,MAAMC,eAAe,GAAG,oCAAKxD,OAAO,IAAI,EAAhB,EAAqByD,OAArB,EAAxB;AACA,MAAMC,aAAa,GAAG,EAAtB;AACA,MAAMC,eAAe,GAAG,EAAxB;AACA,MAAMC,MAAM,GAAG,EAAf;AAEA,GAAC,qBAAD,EAAwB,QAAxB,EAAkCC,OAAlC,CAA0C,UAACC,KAAD,EAAW;AAAA;;AACnD,QAAI,iBAAApC,MAAM,CAACoC,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACZ,UAAU,CAAClF,KAAK,CAAC6F,KAAD,CAAN,CAA1C,EAA0D;AACxDF,MAAAA,MAAM,CAACE,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;AAMA,MAAIE,kBAAkB,GAAG,KAAzB;AAEAR,EAAAA,eAAe,CAACK,OAAhB,CAAwB,UAACzF,MAAD,EAAS6F,KAAT,EAAmB;AAAA;;AACzC,QAAQrF,OAAR,GAA6CR,MAA7C,CAAQQ,OAAR;AAAA,QAAiBH,KAAjB,GAA6CL,MAA7C,CAAiBK,KAAjB;AAAA,QAAwBD,KAAxB,GAA6CJ,MAA7C,CAAwBI,KAAxB;AAAA,QAA+BE,SAA/B,GAA6CN,MAA7C,CAA+BM,SAA/B;;AAEA,QAAIE,OAAJ,EAAa;AACXoF,MAAAA,kBAAkB,GAAG,IAArB;AACD;;AAED,QAAI,CAACb,UAAU,CAAC3E,KAAD,CAAf,EAAwB;AACtBkF,MAAAA,aAAa,CAACjF,KAAD,CAAb,GAAuB,8BAAvB;AACD,KAFD,MAEO;AACL,UAAMyF,eAAe,GAAGV,eAAe,CAACW,KAAhB,CAAsBF,KAAK,GAAG,CAA9B,EAAiCG,IAAjC,CAAsC,UAACrB,CAAD;AAAA,eAAOA,CAAC,CAACvE,KAAF,KAAYA,KAAnB;AAAA,OAAtC,CAAxB;;AAEA,UAAI0F,eAAJ,EAAqB;AACnBR,QAAAA,aAAa,CAACjF,KAAD,CAAb,GAAuB,2BAAvB;AACD;AACF;;AAED,QAAI,qBAAAiD,MAAM,CAAChD,SAAP,gEAAkBqF,QAAlB,IAA8B,CAACZ,UAAU,CAACzE,SAAD,CAA7C,EAA0D;AACxDiF,MAAAA,eAAe,CAAClF,KAAD,CAAf,GAAyB,yBAAzB;AACD;AACF,GApBD;AAsBA,MAAM4F,WAAW,GAAG,CAACrE,OAAO,IAAI,EAAZ,EAAgBoC,MAApC;;AAEA,MAAIiC,WAAW,GAAGf,gBAAlB,EAAoC;AAClCM,IAAAA,MAAM,CAACU,aAAP,sCAAmDhB,gBAAnD;AACD,GAFD,MAEO,IAAIe,WAAW,GAAGd,gBAAlB,EAAoC;AACzCK,IAAAA,MAAM,CAACU,aAAP,0BAAuCf,gBAAvC;AACD;;AAED,MAAI,CAACS,kBAAL,EAAyB;AACvBJ,IAAAA,MAAM,CAACW,eAAP,GAAyB,8BAAzB;AACD;;AAED,MAAI,CAAC,yBAAQb,aAAR,CAAL,EAA6B;AAC3BE,IAAAA,MAAM,CAAC5D,OAAP,GAAiB0D,aAAjB;AACD;;AAED,MAAI,CAAC,yBAAQC,eAAR,CAAL,EAA+B;AAC7BC,IAAAA,MAAM,CAAClF,SAAP,GAAmBiF,eAAnB;AACD;;AAED,SAAOC,MAAP;AACD,CA3DM","sourcesContent":["/* eslint-disable no-console */\nimport isEmpty from 'lodash/isEmpty';\nimport { isResponseCorrect } from './utils';\nimport defaults from './defaults';\nimport { lockChoices, partialScoring, getShuffledChoices } from '@pie-lib/pie-toolbox/controller-utils';\n\nconst prepareChoice = (model, env, defaultFeedback) => (choice) => {\n const { role, mode } = env || {};\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = model.rationaleEnabled ? choice.rationale : null;\n } else {\n out.rationale = null;\n }\n\n if (mode === 'evaluate') {\n out.correct = !!choice.correct;\n\n if (model.feedbackEnabled) {\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback[choice.correct ? 'correct' : 'incorrect'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n }\n\n return out;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => resolve({ ...defaults, ...model }));\n}\n\nexport const normalize = (question) => {\n const { verticalMode, choicesLayout, ...questionProps } = question || {};\n\n return {\n ...defaults,\n ...questionProps,\n // This is used for offering support for old models which have the property verticalMode\n // Same thing is set in authoring : packages/multiple-choice/configure/src/index.jsx - createDefaultModel\n choicesLayout: choicesLayout || (verticalMode === false && 'horizontal') || defaults.choicesLayout,\n };\n};\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n normalizedQuestion.defaultFeedback,\n );\n\n let choices = (normalizedQuestion.choices || []).map(prepareChoice(normalizedQuestion, env, defaultFeedback));\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'value');\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n choicesLayout: normalizedQuestion.choicesLayout,\n gridColumns: normalizedQuestion.gridColumns,\n choiceMode: normalizedQuestion.choiceMode,\n keyMode: normalizedQuestion.choicePrefix,\n choices,\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(normalizedQuestion, session) : undefined,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n fontSizeFactor: normalizedQuestion.fontSizeFactor,\n isSelectionButtonBelow: normalizedQuestion.isSelectionButtonBelow,\n selectedAnswerBackgroundColor: normalizedQuestion.selectedAnswerBackgroundColor || 'initial',\n minSelections: normalizedQuestion.minSelections,\n maxSelections: normalizedQuestion.maxSelections,\n keyboardEventsEnabled: normalizedQuestion.keyboardEventsEnabled,\n autoplayAudioEnabled: normalizedQuestion.autoplayAudioEnabled,\n completeAudioEnabled: normalizedQuestion.completeAudioEnabled,\n customAudioButton: normalizedQuestion.customAudioButton,\n };\n\n const { role, mode } = env || {};\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n return out;\n}\n\nexport const getScore = (config, session) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n const selectedChoices = session.value || [];\n const correctChoices = (config.choices || []).filter((ch) => ch.correct);\n\n let score = selectedChoices.reduce(\n (acc, selectedChoice) => acc + (correctChoices.find((ch) => ch.value === selectedChoice) ? 1 : 0),\n 0,\n );\n\n if (correctChoices.length < selectedChoices.length) {\n score -= selectedChoices.length - correctChoices.length;\n\n if (score < 0) {\n score = 0;\n }\n }\n\n const str = correctChoices.length ? score / correctChoices.length : 0;\n\n return parseFloat(str.toFixed(2));\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring = false. the value in `env` will\n * override the value in `model`.\n * @param {Object} model - the main model\n * @param {*} session\n * @param {Object} env\n */\nexport function outcome(model, session, env) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const partialScoringEnabled = partialScoring.enabled(model, env) && model.choiceMode !== 'radio';\n const score = getScore(model, session);\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0, empty: false });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question || { choices: [] };\n\n resolve({\n id: '1',\n value: choices.filter((c) => c.correct).map((c) => c.value),\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { choices } = model;\n const { minAnswerChoices = 2, maxAnswerChoices } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const choicesErrors = {};\n const rationaleErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n let hasCorrectResponse = false;\n\n reversedChoices.forEach((choice, index) => {\n const { correct, value, label, rationale } = choice;\n\n if (correct) {\n hasCorrectResponse = true;\n }\n\n if (!getContent(label)) {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n\n if (config.rationale?.required && !getContent(rationale)) {\n rationaleErrors[value] = 'This field is required.';\n }\n });\n\n const nbOfChoices = (choices || []).length;\n\n if (nbOfChoices < minAnswerChoices) {\n errors.answerChoices = `There should be at least ${minAnswerChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.answerChoices = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (!hasCorrectResponse) {\n errors.correctResponse = 'No correct response defined.';\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choices = choicesErrors;\n }\n\n if (!isEmpty(rationaleErrors)) {\n errors.rationale = rationaleErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["getCorrectResponse","choices","filter","c","correct","map","value","sort","isResponseCorrect","question","session","correctResponse"],"mappings":";;;;;;;;;AAAA;;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,OAAD;AAAA,SAChCA,OAAO,CACJC,MADH,CACU,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,OAAT;AAAA,GADV,EAEGC,GAFH,CAEO,UAACF,CAAD;AAAA,WAAOA,CAAC,CAACG,KAAT;AAAA,GAFP,EAGGC,IAHH,EADgC;AAAA,CAA3B;;;;AAMA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,QAAD,EAAWC,OAAX,EAAuB;AACtD,MAAIC,eAAe,GAAGX,kBAAkB,CAACS,QAAQ,CAACR,OAAV,CAAxC;AACA,SAAOS,OAAO,IAAI,yBAAQ,CAACA,OAAO,CAACJ,KAAR,IAAiB,EAAlB,EAAsBC,IAAtB,EAAR,EAAsCI,eAAtC,CAAlB;AACD,CAHM","sourcesContent":["import isEqual from 'lodash/isEqual';\n\nexport const getCorrectResponse = (choices) =>\n choices\n .filter((c) => c.correct)\n .map((c) => c.value)\n .sort();\n\nexport const isResponseCorrect = (question, session) => {\n let correctResponse = getCorrectResponse(question.choices);\n return session && isEqual((session.value || []).sort(), correctResponse);\n};\n"],"file":"utils.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/choice-input.jsx"],"names":["CLASS_NAME","styleSheet","theme","row","display","alignItems","backgroundColor","color","background","checkboxHolder","flex","text","fontSize","horizontalLayout","padding","spacing","unit","margin","belowLayout","belowLayoutCenter","justifyContent","belowSelectionComponent","marginLeft","srOnly","position","left","top","width","height","overflow","formStyleSheet","label","letterSpacing","disabled","cursor","StyledFormControlLabel","name","props","classes","colorStyle","varName","fallback","inputStyles","correct","incorrect","root","primaryLight","checked","primary","opacity","pointerEvents","focusVisibleUnchecked","outline","focusUncheckedBorder","focusUnchecked","focusVisibleChecked","focusCheckedBorder","focusChecked","StyledCheckbox","correctness","onChange","value","id","onKeyDown","inputRef","key","k","resolved","miniProps","StyledRadio","tagName","ChoiceInput","event","choiceMode","isArrowDown","isArrowUp","preventDefault","currentEl","document","getElementById","choiceId","fieldset","closest","groupCheckboxes","Array","from","querySelectorAll","currentIndex","findIndex","el","nextIndex","nextEl","focus","onToggleChoice","bind","generateChoiceId","descId","Math","random","toFixed","displayKey","feedback","className","rationale","hideTick","isEvaluateMode","choicesLayout","isSelectionButtonBelow","Tag","classSuffix","holderClassNames","choicelabel","screenReaderLabel","tagProps","handleKeyDown","hasMathOrImage","includes","control","autoFocusRef","undefined","React","Component","PropTypes","oneOf","string","bool","isRequired","func","object"],"mappings":"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","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nimport FeedbackTick from './feedback-tick';\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst styleSheet = (theme) => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n '& > span': {\n fontSize: 'inherit',\n },\n },\n },\n horizontalLayout: {\n [`& .${CLASS_NAME}`]: {\n // visually reduce right padding, but maintain accessibility padding for checkbox indicators to be circles\n // add margin to the top, left and bottom of the checkbox to keep the same spacing as before\n padding: theme.spacing.unit,\n margin: `${theme.spacing.unit / 2}px 0 ${theme.spacing.unit / 2}px ${theme.spacing.unit / 2}px`,\n },\n },\n belowLayout: {\n '& > label': {\n alignItems: 'flex-start',\n },\n },\n belowLayoutCenter: {\n justifyContent: 'center',\n '& > label': {\n alignItems: 'center',\n },\n },\n belowSelectionComponent: {\n display: 'flex',\n alignItems: 'center',\n '& > span': {\n // visually reduce right padding, but maintain accessibility padding for checkbox indicators to be circles\n marginLeft: `-${theme.spacing.unit}px`,\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n letterSpacing: 'normal',\n },\n disabled: {\n // apply to all children\n '& *': {\n cursor: 'not-allowed !important',\n },\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => (\n <FormControlLabel {...props} classes={{ label: props.classes.label, disabled: props.classes.disabled }} />\n));\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle('incorrect-disabled-color', color.disabled()),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n focusVisibleUnchecked: {\n outline: `2px solid ${color.focusUncheckedBorder()}`,\n backgroundColor: color.focusUnchecked(),\n },\n focusVisibleChecked: {\n outline: `2px solid ${color.focusCheckedBorder()}`,\n backgroundColor: color.focusChecked(),\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, value, id, onKeyDown, inputRef } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled, value };\n\n return (\n <Checkbox\n id={id}\n inputRef={inputRef}\n aria-checked={checked}\n onKeyDown={onKeyDown}\n focusVisibleClassName={checked ? classes.focusVisibleChecked : classes.focusVisibleUnchecked}\n disableRipple\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled, value, id, tagName, inputRef } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled, value };\n\n return (\n <Radio\n id={id}\n inputRef={inputRef}\n aria-checked={checked}\n focusVisibleClassName={checked ? classes.focusVisibleChecked : classes.focusVisibleUnchecked}\n disableRipple\n {...miniProps}\n className={CLASS_NAME}\n name={tagName}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: `${correctness ? '' : resolved.disabled}`,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n tagName: PropTypes.string,\n hideTick: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n isSelectionButtonBelow: PropTypes.bool,\n };\n\n static defaultProps = {\n rationale: null,\n checked: false,\n isEvaluateMode: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n this.choiceId = this.generateChoiceId();\n this.descId = `${this.choiceId}-desc`;\n }\n\n onToggleChoice(event) {\n this.props.onChange(event);\n }\n\n generateChoiceId() {\n return 'choice-' + (Math.random() * 10000).toFixed();\n }\n\n handleKeyDown = (event) => {\n const { choiceMode } = this.props;\n\n if (choiceMode !== 'checkbox') return;\n\n const isArrowDown = event.key === 'ArrowDown';\n const isArrowUp = event.key === 'ArrowUp';\n\n if (!isArrowDown && !isArrowUp) return;\n\n event.preventDefault();\n\n const currentEl = document.getElementById(this.choiceId);\n if (!currentEl) return;\n\n const fieldset = currentEl.closest('fieldset');\n if (!fieldset) return;\n\n const groupCheckboxes = Array.from(fieldset.querySelectorAll('input[type=\"checkbox\"]'));\n\n const currentIndex = groupCheckboxes.findIndex((el) => el === currentEl);\n if (currentIndex === -1) return;\n\n const nextIndex = isArrowDown ? currentIndex + 1 : currentIndex - 1;\n const nextEl = groupCheckboxes[nextIndex];\n\n if (nextEl) {\n nextEl.focus();\n }\n };\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n correctness,\n classes,\n className,\n rationale,\n hideTick,\n isEvaluateMode,\n choicesLayout,\n value,\n checked,\n tagName,\n isSelectionButtonBelow,\n } = this.props;\n\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n const holderClassNames = classNames(classes.checkboxHolder, {\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n [classes.belowLayout]: isSelectionButtonBelow && choicesLayout !== 'grid',\n [classes.belowLayoutCenter]: isSelectionButtonBelow && choicesLayout === 'grid',\n });\n\n const choicelabel = (\n <>\n {displayKey && !isSelectionButtonBelow ? (\n <span className={classes.row}>\n {displayKey}.{'\\u00A0'}\n <PreviewPrompt className=\"label\" prompt={label} tagName=\"span\" />\n </span>\n ) : (\n <PreviewPrompt className=\"label\" prompt={label} tagName=\"span\" />\n )}\n </>\n );\n\n const screenReaderLabel = (\n <span id={this.descId} className={classes.srOnly}>\n {choiceMode === 'checkbox' ? 'Checkbox to select the answer below' : 'Radio button to select the answer below'}\n </span>\n );\n\n const tagProps = {\n disabled,\n checked,\n correctness,\n tagName,\n value,\n id: this.choiceId,\n onChange: this.onToggleChoice,\n onKeyDown: this.handleKeyDown,\n 'aria-describedby': this.descId,\n };\n\n const hasMathOrImage =\n typeof label === 'string' &&\n (label.includes('<math') ||\n label.includes('\\\\(') ||\n label.includes('\\\\[') ||\n label.includes('<img') ||\n label.includes('data-latex') ||\n label.includes('data-raw') ||\n label.includes('<mjx-container'));\n\n const control = isSelectionButtonBelow ? (\n <span className={classes.belowSelectionComponent}>\n {hasMathOrImage && screenReaderLabel}\n <Tag {...tagProps} style={{ padding: 0 }} />\n {displayKey ? `${displayKey}.` : ''}\n </span>\n ) : (\n <>\n {hasMathOrImage && screenReaderLabel}\n <Tag {...tagProps} inputRef={this.props.autoFocusRef} />\n </>\n );\n\n return (\n <div className={classNames(className, 'corespring-' + classSuffix, 'choice-input')}>\n <div className={classes.row}>\n {!hideTick && isEvaluateMode && <FeedbackTick correctness={correctness} />}\n <div className={classNames(holderClassNames, 'checkbox-holder')}>\n <StyledFormControlLabel\n label={choicelabel}\n value={value}\n htmlFor={this.choiceId}\n labelPlacement={isSelectionButtonBelow ? 'top' : undefined}\n control={control}\n />\n </div>\n </div>\n {rationale && <PreviewPrompt className=\"rationale\" defaultClassName=\"rationale\" prompt={rationale} />}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}
package/lib/choice.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/choice.jsx"],"names":["Choice","choice","props","disabled","onChoiceChanged","index","choicesLength","showCorrect","isEvaluateMode","choiceMode","checked","correctness","displayKey","classes","choicesLayout","gridColumns","isSelectionButtonBelow","selectedAnswerBackgroundColor","autoFocusRef","tagName","choiceClass","feedback","choiceProps","onChange","names","noBorder","horizontalLayout","choiceBackground","backgroundColor","React","Component","propTypes","PropTypes","oneOf","object","bool","isRequired","func","number","string","theme","paddingTop","spacing","unit","paddingBottom","paddingLeft","paddingRight","borderBottom","palette","grey","marginRight"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport ChoiceInput from './choice-input';\n\nexport class Choice extends React.Component {\n static propTypes = {};\n\n onChange = (choice) => {\n const { disabled, onChoiceChanged } = this.props;\n\n if (!disabled) {\n onChoiceChanged(choice);\n }\n };\n\n render() {\n const {\n choice,\n index,\n choicesLength,\n showCorrect,\n isEvaluateMode,\n choiceMode,\n disabled,\n checked,\n correctness,\n displayKey,\n classes,\n choicesLayout,\n gridColumns,\n isSelectionButtonBelow,\n selectedAnswerBackgroundColor,\n autoFocusRef,\n tagName\n } = this.props;\n const choiceClass = 'choice' + (index === choicesLength - 1 ? ' last' : '');\n\n const feedback = !isEvaluateMode || showCorrect ? '' : choice.feedback;\n\n const choiceProps = {\n ...choice,\n checked,\n choiceMode,\n disabled,\n feedback,\n correctness,\n displayKey,\n index,\n choicesLayout,\n gridColumns,\n onChange: this.onChange,\n isEvaluateMode,\n isSelectionButtonBelow,\n tagName,\n };\n\n const names = classNames(classes.choice, {\n [classes.noBorder]: index === choicesLength - 1 || choicesLayout !== 'vertical',\n [classes.horizontalLayout]: choicesLayout === 'horizontal',\n });\n\n const choiceBackground = selectedAnswerBackgroundColor && checked ? selectedAnswerBackgroundColor : 'initial';\n\n return (\n <div className={choiceClass} key={index} style={{ backgroundColor: choiceBackground }}>\n <ChoiceInput {...choiceProps} className={names} autoFocusRef={autoFocusRef} />\n </div>\n );\n }\n}\n\nChoice.propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n choice: PropTypes.object,\n disabled: PropTypes.bool.isRequired,\n onChoiceChanged: PropTypes.func,\n classes: PropTypes.object.isRequired,\n index: PropTypes.number,\n choicesLength: PropTypes.number,\n showCorrect: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n checked: PropTypes.bool,\n correctness: PropTypes.string,\n displayKey: PropTypes.string,\n choicesLayout: PropTypes.oneOf(['vertical', 'grid', 'horizontal']),\n gridColumns: PropTypes.string,\n selectedAnswerBackgroundColor: PropTypes.string,\n tagName: PropTypes.string,\n isSelectionButtonBelow: PropTypes.bool,\n autoFocusRef: PropTypes.object,\n};\n\nexport default withStyles((theme) => ({\n choice: {\n paddingTop: theme.spacing.unit * 2.5,\n paddingBottom: theme.spacing.unit + 2,\n paddingLeft: theme.spacing.unit + 2,\n paddingRight: theme.spacing.unit + 2,\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\n },\n noBorder: {\n borderBottom: 'none',\n },\n horizontalLayout: {\n paddingRight: theme.spacing.unit * 2.5,\n '& label': {\n marginRight: theme.spacing.unit,\n // '& span:first-child': {\n // paddingRight: 0\n // }\n },\n },\n}))(Choice);\n"],"file":"choice.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/feedback-tick.jsx"],"names":["stylesheet","incorrect","fill","color","correct","feedbackTick","width","height","position","display","verticalAlign","feedbackTickEnter","opacity","left","feedbackTickEnterActive","transition","feedbackTickLeave","feedbackTickLeaveActive","FeedbackTick","props","incorrectIcon","enableBackground","classes","correctIcon","correctness","icon","enter","enterActive","exit","exitActive","React","Component","PropTypes","object","isRequired","string","name"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nconst stylesheet = {\n incorrect: {\n fill: `var(--feedback-incorrect-bg-color, ${color.incorrect()})`,\n },\n correct: {\n fill: `var(--feedback-correct-bg-color, ${color.correct()})`,\n },\n feedbackTick: {\n width: '33px',\n height: '33px',\n '& svg': {\n position: 'absolute',\n display: 'inline-block',\n width: '33px',\n height: '33px',\n verticalAlign: 'middle',\n '& hide': {\n display: 'none',\n },\n },\n },\n feedbackTickEnter: {\n opacity: '0',\n left: '-50px',\n },\n feedbackTickEnterActive: {\n opacity: '1',\n left: '0px',\n transition: 'left 500ms ease-in 200ms, opacity 500ms linear 200ms',\n },\n feedbackTickLeave: {\n opacity: '1',\n left: '0px',\n },\n feedbackTickLeaveActive: {\n opacity: '0',\n left: '-50px',\n transition: 'left 300ms ease-in, opacity 300ms',\n },\n};\n\nclass FeedbackTick extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctness: PropTypes.string,\n };\n constructor(props) {\n super(props);\n this.incorrectIcon = (\n <svg\n key=\"1\"\n preserveAspectRatio=\"xMinYMin meet\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 44 40\"\n style={{ enableBackground: 'new 0 0 44 40' }}\n >\n <g>\n <rect\n x=\"11\"\n y=\"17.3\"\n transform=\"matrix(0.7071 -0.7071 0.7071 0.7071 -7.852 19.2507)\"\n className={this.props.classes.incorrect}\n width=\"16.6\"\n height=\"3.7\"\n />\n <rect\n x=\"17.4\"\n y=\"10.7\"\n transform=\"matrix(0.7071 -0.7071 0.7071 0.7071 -7.8175 19.209)\"\n className={this.props.classes.incorrect}\n width=\"3.7\"\n height=\"16.6\"\n />\n </g>\n </svg>\n );\n\n this.correctIcon = (\n <svg\n key=\"2\"\n preserveAspectRatio=\"xMinYMin meet\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 44 40\"\n style={{ enableBackground: 'new 0 0 44 40' }}\n >\n <polygon\n className={this.props.classes.correct}\n points=\"19.1,28.6 11.8,22.3 14.4,19.2 17.9,22.1 23.9,11.4 27.5,13.4\"\n />\n </svg>\n );\n }\n\n render() {\n const { correctness, classes } = this.props;\n\n const icon = (() => {\n if (correctness === 'incorrect') {\n return this.incorrectIcon;\n } else if (correctness === 'correct') {\n return this.correctIcon;\n }\n })();\n\n return (\n <div className={classes.feedbackTick}>\n <TransitionGroup>\n {correctness && (\n <CSSTransition\n classNames={{\n enter: classes.feedbackTickEnter,\n enterActive: classes.feedbackTickEnterActive,\n exit: classes.feedbackTickLeave,\n exitActive: classes.feedbackTickLeaveActive,\n }}\n timeout={{ enter: 700, exit: 300 }}\n >\n {icon}\n </CSSTransition>\n )}\n </TransitionGroup>\n </div>\n );\n }\n}\n\nexport default withStyles(stylesheet, { name: 'FeedbackTick' })(FeedbackTick);\n"],"file":"feedback-tick.js"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","isComplete","session","model","audioComplete","autoplayAudioEnabled","completeAudioEnabled","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","audio","querySelector","isInsidePrompt","closest","_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","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) => {\n const { autoplayAudioEnabled, completeAudioEnabled } = model || {};\n\n if (autoplayAudioEnabled && completeAudioEnabled && !audioComplete) {\n return false;\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)),\n );\n });\n\n this._dispatchModelSet = debounce(\n () => {\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n isComplete(this._session, this._model),\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 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.map DELETED
@@ -1 +0,0 @@
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"}