@pie-element/inline-dropdown 3.10.4 → 3.10.6-next.2

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.
@@ -73,9 +73,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
73
73
 
74
74
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
75
75
 
76
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
76
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
77
77
 
78
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
78
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
79
79
 
80
80
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
81
81
 
@@ -155,6 +155,12 @@ var styles = function styles(theme) {
155
155
  },
156
156
  panelDetails: {
157
157
  display: 'block'
158
+ },
159
+ errorText: {
160
+ fontSize: '12px',
161
+ color: 'red',
162
+ paddingTop: '5px',
163
+ marginTop: '8px'
158
164
  }
159
165
  };
160
166
  };
@@ -429,14 +435,21 @@ var Main = /*#__PURE__*/function (_React$Component) {
429
435
  _ref2$choiceRationale = _ref2.choiceRationale,
430
436
  choiceRationale = _ref2$choiceRationale === void 0 ? {} : _ref2$choiceRationale,
431
437
  _ref2$teacherInstruct = _ref2.teacherInstructions,
432
- teacherInstructions = _ref2$teacherInstruct === void 0 ? {} : _ref2$teacherInstruct;
438
+ teacherInstructions = _ref2$teacherInstruct === void 0 ? {} : _ref2$teacherInstruct,
439
+ _ref2$spellCheck = _ref2.spellCheck,
440
+ spellCheck = _ref2$spellCheck === void 0 ? {} : _ref2$spellCheck;
433
441
 
434
442
  var _ref3 = model || {},
435
443
  rationaleEnabled = _ref3.rationaleEnabled,
436
444
  choiceRationaleEnabled = _ref3.choiceRationaleEnabled,
437
445
  promptEnabled = _ref3.promptEnabled,
438
446
  teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
439
- choices = _ref3.choices;
447
+ choices = _ref3.choices,
448
+ spellCheckEnabled = _ref3.spellCheckEnabled,
449
+ errors = _ref3.errors;
450
+
451
+ var _ref4 = errors || {},
452
+ responseAreasError = _ref4.responseAreasError;
440
453
 
441
454
  var renderChoiceRationale = function renderChoiceRationale() {
442
455
  return (Object.keys(choices) || []).map(function (key) {
@@ -462,6 +475,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
462
475
  }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
463
476
  className: classes.prompt,
464
477
  markup: choice.rationale || '',
478
+ spellCheck: spellCheckEnabled,
465
479
  onChange: function onChange(c) {
466
480
  return _this2.onChoiceRationaleChanged(key, _objectSpread(_objectSpread({}, choice), {}, {
467
481
  rationale: c
@@ -506,7 +520,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
506
520
  teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
507
521
  rationaleEnabled: rationale.settings && toggle(rationale.label),
508
522
  choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),
509
- promptEnabled: prompt.settings && toggle(prompt.label)
523
+ promptEnabled: prompt.settings && toggle(prompt.label),
524
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label)
510
525
  }
511
526
  }
512
527
  })
@@ -519,7 +534,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
519
534
  onChange: this.onTeacherInstructionsChanged,
520
535
  imageSupport: imageSupport,
521
536
  nonEmpty: false,
522
- toolbarOpts: toolbarOpts
537
+ toolbarOpts: toolbarOpts,
538
+ spellCheck: spellCheckEnabled
523
539
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
524
540
  label: prompt.label,
525
541
  className: classes.promptHolder
@@ -530,7 +546,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
530
546
  imageSupport: imageSupport,
531
547
  nonEmpty: false,
532
548
  disableUnderline: true,
533
- toolbarOpts: toolbarOpts
549
+ toolbarOpts: toolbarOpts,
550
+ spellCheck: spellCheckEnabled
534
551
  })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
535
552
  label: rationale.label,
536
553
  className: classes.promptHolder
@@ -539,10 +556,13 @@ var Main = /*#__PURE__*/function (_React$Component) {
539
556
  markup: model.rationale || '',
540
557
  onChange: this.onRationaleChanged,
541
558
  imageSupport: imageSupport,
542
- toolbarOpts: toolbarOpts
559
+ toolbarOpts: toolbarOpts,
560
+ spellCheck: spellCheckEnabled
543
561
  })), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
544
562
  className: classes.text
545
- }, "Define Template, Choices, and Correct Responses"), /*#__PURE__*/_react["default"].createElement(InfoDialog, {
563
+ }, "Define Template, Choices, and Correct Responses"), responseAreasError && /*#__PURE__*/_react["default"].createElement("div", {
564
+ className: classes.errorText
565
+ }, responseAreasError), /*#__PURE__*/_react["default"].createElement(InfoDialog, {
546
566
  open: dialog.open,
547
567
  title: dialog.message,
548
568
  onCancel: dialog.onCancel,
@@ -572,18 +592,21 @@ var Main = /*#__PURE__*/function (_React$Component) {
572
592
  node: node,
573
593
  value: value,
574
594
  onToolbarDone: onToolbarDone,
575
- choices: respAreaChoices[node.data.get('index')]
595
+ choices: respAreaChoices[node.data.get('index')],
596
+ spellCheck: spellCheckEnabled
576
597
  });
577
598
  };
578
599
  }
579
600
  },
601
+ spellCheck: spellCheckEnabled,
580
602
  className: classes.markup,
581
603
  markup: model.slateMarkup || '',
582
604
  onChange: this.onChange,
583
605
  imageSupport: imageSupport,
584
606
  onBlur: this.onBlur,
585
607
  disabled: false,
586
- highlightShape: false
608
+ highlightShape: false,
609
+ error: responseAreasError
587
610
  }), /*#__PURE__*/_react["default"].createElement("br", null), choiceRationaleEnabled && renderChoiceRationale())));
588
611
  }
589
612
  }]);
@@ -606,4 +629,4 @@ exports.Main = Main;
606
629
  var Styled = (0, _styles.withStyles)(styles)(Main);
607
630
  var _default = Styled;
608
631
  exports["default"] = _default;
609
- //# sourceMappingURL=main.js.map
632
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJ0b2dnbGUiLCJzZXR0aW5ncyIsIlBhbmVsIiwiSW5mb0RpYWxvZyIsIm9wZW4iLCJvbkNhbmNlbCIsIm9uT2siLCJ0aXRsZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwic3R5bGVzIiwidGhlbWUiLCJwcm9tcHRIb2xkZXIiLCJ3aWR0aCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsIm1hcmdpbkJvdHRvbSIsInByb21wdCIsInBhZGRpbmdUb3AiLCJtYXJrdXAiLCJtaW5IZWlnaHQiLCJkZXNpZ24iLCJjaG9pY2VDb25maWd1cmF0aW9uIiwic3dpdGNoRWxlbWVudCIsImp1c3RpZnlDb250ZW50IiwibWFyZ2luIiwiYWRkQnV0dG9uIiwidGV4dCIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJjb2xvciIsInJhdGlvbmFsZUxhYmVsIiwiZGlzcGxheSIsIndoaXRlU3BhY2UiLCJyYXRpb25hbGVDaG9pY2VzIiwibWFyZ2luVG9wIiwicGFuZWxEZXRhaWxzIiwiZXJyb3JUZXh0IiwiY3JlYXRlRWxlbWVudEZyb21IVE1MIiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJwcmVwYXJlVmFsIiwiaHRtbCIsInRtcCIsInZhbHVlIiwidGV4dENvbnRlbnQiLCJpbm5lclRleHQiLCJNYWluIiwiZGlhbG9nIiwibmV3VmFsIiwicHJvcHMiLCJvbk1vZGVsQ2hhbmdlZCIsIm1vZGVsIiwib25Nb2RlbENoYW5nZSIsInJhdGlvbmFsZSIsImluZGV4IiwiY2hvaWNlIiwiaW5kZXhPZkNob2ljZSIsImNob2ljZXMiLCJmaW5kSW5kZXgiLCJlbGVtIiwibGFiZWwiLCJzcGxpY2UiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwic2xhdGVNYXJrdXAiLCJjYWxsYmFjayIsInNldFN0YXRlIiwibWVzc2FnZSIsInJlc3BBcmVhQ2hvaWNlcyIsInN0YXRlIiwiZG9tTWFya3VwIiwiYWxsUmVzcEFyZWFzIiwicXVlcnlTZWxlY3RvckFsbCIsImFsbENob2ljZXMiLCJmb3JFYWNoIiwiZWwiLCJkYXRhc2V0IiwiZXhpc3RpbmdSZXNwQXJlYUNob2ljZXMiLCJvYmoiLCJrZXkiLCJuZXdSZXNwQXJlYUNob2ljZXMiLCJzaG91bGRXYXJuIiwibmV3Q2hvaWNlcyIsImxlbmd0aCIsImZpbmQiLCJjIiwiY29ycmVjdCIsInJlbW92ZSIsInIiLCJtYXAiLCJwYXJzZUludCIsImZpbHRlciIsInZhbCIsImlzTmFOIiwicHVzaCIsInJlc3BJbmRleCIsInNlbGVjdGVkSW5kZXgiLCJjaCIsIm5Qcm9wcyIsIm5ld1N0YXRlIiwiZG9tTm9kZSIsIlJlYWN0RE9NIiwiZmluZERPTU5vZGUiLCJjbGFzc2VzIiwiY29uZmlndXJhdGlvbiIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJpbWFnZVN1cHBvcnQiLCJwYXJ0aWFsU2NvcmluZyIsImxvY2tDaG9pY2VPcmRlciIsImNob2ljZVJhdGlvbmFsZSIsInNwZWxsQ2hlY2siLCJyYXRpb25hbGVFbmFibGVkIiwiY2hvaWNlUmF0aW9uYWxlRW5hYmxlZCIsInByb21wdEVuYWJsZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInNwZWxsQ2hlY2tFbmFibGVkIiwiZXJyb3JzIiwicmVzcG9uc2VBcmVhc0Vycm9yIiwicmVuZGVyQ2hvaWNlUmF0aW9uYWxlIiwiT2JqZWN0Iiwia2V5cyIsIl9faHRtbCIsIm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCIsInRvb2xiYXJPcHRzIiwidG9vbGJhckVkaXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJTZXR0aW5ncyIsIlByb3BlcnRpZXMiLCJvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkIiwib25Qcm9tcHRDaGFuZ2VkIiwib25SYXRpb25hbGVDaGFuZ2VkIiwiQUxMX1BMVUdJTlMiLCJ0eXBlIiwib3B0aW9ucyIsImR1cGxpY2F0ZXMiLCJyZXNwQXJlYVRvb2xiYXIiLCJub2RlIiwib25Ub29sYmFyRG9uZSIsIm9uQWRkQ2hvaWNlIiwib25DaGVjayIsIm9uUmVtb3ZlQ2hvaWNlIiwiZGF0YSIsImdldCIsIm9uU2VsZWN0Q2hvaWNlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJkaXNhYmxlU2lkZVBhbmVsIiwic2hhcGUiLCJhZGQiLCJTdHlsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxNQUFSLEdBQTBCQyxrQkFBMUIsQ0FBUUQsTUFBUjtBQUFBLElBQWdCRSxLQUFoQixHQUEwQkQsa0JBQTFCLENBQWdCQyxLQUFoQjs7QUFFQSxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYTtBQUFBLE1BQUdDLElBQUgsUUFBR0EsSUFBSDtBQUFBLE1BQVNDLFFBQVQsUUFBU0EsUUFBVDtBQUFBLE1BQW1CQyxJQUFuQixRQUFtQkEsSUFBbkI7QUFBQSxNQUF5QkMsS0FBekIsUUFBeUJBLEtBQXpCO0FBQUEsc0JBQ2pCLGdDQUFDLGtCQUFEO0FBQVEsSUFBQSxJQUFJLEVBQUVIO0FBQWQsa0JBQ0UsZ0NBQUMsdUJBQUQsUUFBY0csS0FBZCxDQURGLGVBRUUsZ0NBQUMseUJBQUQsUUFDR0QsSUFBSSxpQkFDSCxnQ0FBQyxrQkFBRDtBQUFRLElBQUEsT0FBTyxFQUFFQSxJQUFqQjtBQUF1QixJQUFBLEtBQUssRUFBQztBQUE3QixVQUZKLEVBTUdELFFBQVEsaUJBQ1AsZ0NBQUMsa0JBQUQ7QUFBUSxJQUFBLE9BQU8s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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBFZGl0YWJsZUh0bWwsIHsgQUxMX1BMVUdJTlMgfSBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7IElucHV0Q29udGFpbmVyLCBsYXlvdXQsIHNldHRpbmdzIH0gZnJvbSAnQHBpZS1saWIvY29uZmlnLXVpJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gJ2xvZGFzaC9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0J1dHRvbic7XG5pbXBvcnQgRGlhbG9nIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZyc7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nVGl0bGUnO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQWN0aW9ucyc7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UeXBvZ3JhcGh5JztcbmltcG9ydCBFeHBhbnNpb25QYW5lbCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9FeHBhbnNpb25QYW5lbCc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxTdW1tYXJ5IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsU3VtbWFyeSc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxEZXRhaWxzIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsRGV0YWlscyc7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0V4cGFuZE1vcmUnO1xuaW1wb3J0IElubGluZURyb3Bkb3duVG9vbGJhciBmcm9tICcuL2lubGluZS1kcm9wZG93bi10b29sYmFyJztcbmltcG9ydCBtYXggZnJvbSAnbG9kYXNoL21heCc7XG5cbmNvbnN0IHsgdG9nZ2xlLCBQYW5lbCB9ID0gc2V0dGluZ3M7XG5cbmNvbnN0IEluZm9EaWFsb2cgPSAoeyBvcGVuLCBvbkNhbmNlbCwgb25PaywgdGl0bGUgfSkgPT4gKFxuICA8RGlhbG9nIG9wZW49e29wZW59PlxuICAgIDxEaWFsb2dUaXRsZT57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgIHtvbk9rICYmIChcbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbk9rfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBPS1xuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7b25DYW5jZWwgJiYgKFxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2FuY2VsfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgPC9EaWFsb2c+XG4pO1xuXG5JbmZvRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25PazogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5jb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICBwcm9tcHRIb2xkZXI6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyXG4gIH0sXG4gIHByb21wdDoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9LFxuICBtYXJrdXA6IHtcbiAgICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgICcmIFtkYXRhLXNsYXRlLWVkaXRvcj1cInRydWVcIl0nOiB7XG4gICAgICBtaW5IZWlnaHQ6ICcxMDBweCdcbiAgICB9XG4gIH0sXG4gIGRlc2lnbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDNcbiAgfSxcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMlxuICB9LFxuICBzd2l0Y2hFbGVtZW50OiB7XG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtYXJnaW46IDBcbiAgfSxcbiAgYWRkQnV0dG9uOiB7XG4gICAgZmxvYXQ6ICdyaWdodCdcbiAgfSxcbiAgdGV4dDoge1xuICAgIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgbGluZUhlaWdodDogJzE5cHgnLFxuICAgIGNvbG9yOiAnIzQ5NUI4RidcbiAgfSxcbiAgcmF0aW9uYWxlTGFiZWw6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2hpdGVTcGFjZTogJ2JyZWFrLXNwYWNlcydcbiAgfSxcbiAgcmF0aW9uYWxlQ2hvaWNlczoge1xuICAgIG1hcmdpblRvcDogJzE2cHgnXG4gIH0sXG4gIHBhbmVsRGV0YWlsczoge1xuICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9LFxuICBlcnJvclRleHQ6IHtcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGNvbG9yOiAncmVkJyxcbiAgICBwYWRkaW5nVG9wOiAnNXB4JyxcbiAgICBtYXJnaW5Ub3A6ICc4cHgnXG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVFbGVtZW50RnJvbUhUTUwgPSBodG1sU3RyaW5nID0+IHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgZGl2LmlubmVySFRNTCA9IChodG1sU3RyaW5nIHx8ICcnKS50cmltKCk7XG5cbiAgcmV0dXJuIGRpdjtcbn07XG5cbmNvbnN0IHByZXBhcmVWYWwgPSBodG1sID0+IHtcbiAgY29uc3QgdG1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cbiAgdG1wLmlubmVySFRNTCA9IGh0bWw7XG5cbiAgY29uc3QgdmFsdWUgPSB0bXAudGV4dENvbnRlbnQgfHwgdG1wLmlubmVyVGV4dCB8fCAnJztcblxuICByZXR1cm4gdmFsdWUudHJpbSgpO1xufTtcblxuZXhwb3J0IGNsYXNzIE1haW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBtb2RlbDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVTaWRlUGFuZWw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uTW9kZWxDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGltYWdlU3VwcG9ydDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGFkZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIGRlbGV0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH0pXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgZGlhbG9nOiB7XG4gICAgICBvcGVuOiBmYWxzZVxuICAgIH1cbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbDogeyBjaG9pY2VzIH1cbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIHRoaXMuc2V0U3RhdGUoeyByZXNwQXJlYUNob2ljZXM6IGNsb25lRGVlcChjaG9pY2VzKSB9KTtcbiAgfVxuXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5Qcm9wcykge1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge307XG5cbiAgICBpZiAoXG4gICAgICAhaXNFcXVhbChuUHJvcHMubW9kZWwuY2hvaWNlcywgdGhpcy5wcm9wcy5tb2RlbC5jaG9pY2VzKSB8fFxuICAgICAgIWlzRXF1YWwoblByb3BzLm1vZGVsLmNob2ljZXMsIHRoaXMuc3RhdGUucmVzcEFyZWFDaG9pY2VzKVxuICAgICkge1xuICAgICAgbmV3U3RhdGUucmVzcEFyZWFDaG9pY2VzID0gY2xvbmVEZWVwKG5Qcm9wcy5tb2RlbC5jaG9pY2VzKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzRW1wdHkobmV3U3RhdGUpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCBkb21Ob2RlID0gUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG5cbiAgICByZW5kZXJNYXRoKGRvbU5vZGUpO1xuICB9XG5cbiAgb25Nb2RlbENoYW5nZSA9IG5ld1ZhbCA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7XG4gICAgICAuLi50aGlzLnByb3BzLm1vZGVsLFxuICAgICAgLi4ubmV3VmFsXG4gICAgfSk7XG4gIH07XG5cbiAgb25Qcm9tcHRDaGFuZ2VkID0gcHJvbXB0ID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBwcm9tcHQgfSk7XG4gIH07XG5cbiAgb25SYXRpb25hbGVDaGFuZ2VkID0gcmF0aW9uYWxlID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyByYXRpb25hbGUgfSk7XG4gIH07XG5cbiAgb25DaG9pY2VSYXRpb25hbGVDaGFuZ2VkID0gKGluZGV4LCBjaG9pY2UpID0+IHtcbiAgICBjb25zdCB7IG1vZGVsIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGluZGV4T2ZDaG9pY2UgPSBtb2RlbC5jaG9pY2VzICYmIG1vZGVsLmNob2ljZXNbaW5kZXhdICYmIG1vZGVsLmNob2ljZXNbaW5kZXhdXG4gICAgICAuZmluZEluZGV4KGVsZW0gPT4gZWxlbS5sYWJlbCA9PT0gY2hvaWNlLmxhYmVsICYmIGVsZW0udmFsdWUgPT09IGNob2ljZS52YWx1ZSk7XG5cbiAgICBtb2RlbC5jaG9pY2VzW2luZGV4XSAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XS5zcGxpY2UoaW5kZXhPZkNob2ljZSwgMSwgY2hvaWNlKTtcblxuICAgIHRoaXMub25Nb2RlbENoYW5nZShtb2RlbCk7XG4gIH07XG5cbiAgb25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCA9IHRlYWNoZXJJbnN0cnVjdGlvbnMgPT4ge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSh7IHRlYWNoZXJJbnN0cnVjdGlvbnMgfSk7XG4gIH07XG5cbiAgb25NYXJrdXBDaGFuZ2VkID0gc2xhdGVNYXJrdXAgPT4ge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSh7IHNsYXRlTWFya3VwIH0pO1xuICB9O1xuXG4gIG9uQ2hlY2sgPSBjYWxsYmFjayA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBkaWFsb2c6IHtcbiAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnUmVzcG9uc2UgYXJlYXMgd2l0aCB1bmRlciAyIG9wdGlvbnMgb3Igd2l0aCBubyBjb3JyZWN0IGFuc3dlcnMgd2lsbCBiZSBkaXNjYXJkZWQnLFxuICAgICAgICBvbk9rOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25DYW5jZWw6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIG9uQ2hhbmdlID0gbWFya3VwID0+IHtcbiAgICBjb25zdCB7IHJlc3BBcmVhQ2hvaWNlcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBkb21NYXJrdXAgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwobWFya3VwKTtcbiAgICBjb25zdCBhbGxSZXNwQXJlYXMgPSBkb21NYXJrdXAucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICdbZGF0YS10eXBlPVwiaW5saW5lX2Ryb3Bkb3duXCJdJ1xuICAgICk7XG5cbiAgICBjb25zdCBhbGxDaG9pY2VzID0ge307XG5cbiAgICBhbGxSZXNwQXJlYXMuZm9yRWFjaChlbCA9PiB7XG4gICAgICBhbGxDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdID0gZWwuZGF0YXNldC52YWx1ZSB8fCAnJztcbiAgICB9KTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzID0gcmVkdWNlKFxuICAgICAgcmVzcEFyZWFDaG9pY2VzLFxuICAgICAgKG9iaiwgY2hvaWNlcywga2V5KSA9PiB7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoYWxsQ2hvaWNlc1trZXldKSkge1xuICAgICAgICAgIG9ialtrZXldID0gcmVzcEFyZWFDaG9pY2VzW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IG5ld1Jlc3BBcmVhQ2hvaWNlcyA9IHt9O1xuICAgIGxldCBzaG91bGRXYXJuID0gZmFsc2U7XG5cbiAgICBhbGxSZXNwQXJlYXMuZm9yRWFjaCgoZWwsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuZXdDaG9pY2VzID0gZXhpc3RpbmdSZXNwQXJlYUNob2ljZXNbZWwuZGF0YXNldC5pbmRleF0gfHwgW107XG5cbiAgICAgIGlmIChuZXdDaG9pY2VzLmxlbmd0aCA8IDIgfHwgIW5ld0Nob2ljZXMuZmluZChjID0+IGMuY29ycmVjdCkpIHtcbiAgICAgICAgZWwucmVtb3ZlKCk7XG4gICAgICAgIHNob3VsZFdhcm4gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UmVzcEFyZWFDaG9pY2VzW2luZGV4XSA9XG4gICAgICAgICAgZXhpc3RpbmdSZXNwQXJlYUNob2ljZXNbZWwuZGF0YXNldC5pbmRleF0gfHwgW107XG4gICAgICAgIGVsLmRhdGFzZXQuaW5kZXggPSBpbmRleDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzaG91bGRXYXJuKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgJ1Jlc3BvbnNlIGFyZWFzIHdpdGggdW5kZXIgMiBvcHRpb25zIG9yIHdpdGggbm8gY29ycmVjdCBhbnN3ZXJzIHdpbGwgYmUgZGlzY2FyZGVkJyxcbiAgICAgICAgICBvbk9rOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uoe1xuICAgICAgICAgICAgICAgICAgY2hvaWNlczogY2xvbmVEZWVwKG5ld1Jlc3BBcmVhQ2hvaWNlcyksXG4gICAgICAgICAgICAgICAgICBzbGF0ZU1hcmt1cDogZG9tTWFya3VwLmlubmVySFRNTFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25DYW5jZWw6ICgpID0+XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh7XG4gICAgICAgIGNob2ljZXM6IGNsb25lRGVlcChuZXdSZXNwQXJlYUNob2ljZXMpLFxuICAgICAgICBzbGF0ZU1hcmt1cDogZG9tTWFya3VwLmlubmVySFRNTFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIG9uQWRkQ2hvaWNlID0gKGluZGV4LCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgaWYgKCFyZXNwQXJlYUNob2ljZXNbaW5kZXhdKSB7XG4gICAgICByZXNwQXJlYUNob2ljZXNbaW5kZXhdID0gW107XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0gfHwgW10pLmZpbmQoXG4gICAgICAgIHIgPT4gcHJlcGFyZVZhbChyLmxhYmVsKSA9PT0gcHJlcGFyZVZhbChsYWJlbClcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICBvcGVuOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6ICdEdXBsaWNhdGUgYW5zd2VycyBhcmUgbm90IGFsbG93ZWQuJyxcbiAgICAgICAgICBvbk9rOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gKHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0gJiYgbWF4KHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0ubWFwKGMgPT4gcGFyc2VJbnQoYy52YWx1ZSkpLmZpbHRlcih2YWwgPT4gIWlzTmFOKHZhbCkpKSkgfHwgMDtcblxuICAgIHJlc3BBcmVhQ2hvaWNlc1tpbmRleF0ucHVzaCh7XG4gICAgICBsYWJlbCxcbiAgICAgIHZhbHVlOiBgJHt2YWx1ZSArIDF9YCxcbiAgICAgIGNvcnJlY3Q6IGZhbHNlXG4gICAgfSk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBjaG9pY2VzOiBjbG9uZURlZXAocmVzcEFyZWFDaG9pY2VzKSB9KTtcbiAgfTtcblxuICBvblJlbW92ZUNob2ljZSA9IChyZXNwSW5kZXgsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeyByZXNwQXJlYUNob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXNwQXJlYUNob2ljZXNbcmVzcEluZGV4XS5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgb25TZWxlY3RDaG9pY2UgPSAocmVzcEluZGV4LCBzZWxlY3RlZEluZGV4KSA9PiB7XG4gICAgY29uc3QgeyByZXNwQXJlYUNob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXNwQXJlYUNob2ljZXNbcmVzcEluZGV4XSA9IHJlc3BBcmVhQ2hvaWNlc1tyZXNwSW5kZXhdLm1hcChcbiAgICAgIChjaCwgaW5kZXgpID0+ICh7IC4uLmNoLCBjb3JyZWN0OiBpbmRleCA9PT0gc2VsZWN0ZWRJbmRleCB9KVxuICAgICk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBjaG9pY2VzOiBjbG9uZURlZXAocmVzcEFyZWFDaG9pY2VzKSB9KTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBkaWFsb2cgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge1xuICAgICAgY2xhc3NlcyxcbiAgICAgIG1vZGVsLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQsXG4gICAgICBpbWFnZVN1cHBvcnRcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7XG4gICAgICBwcm9tcHQgPSB7fSxcbiAgICAgIHBhcnRpYWxTY29yaW5nID0ge30sXG4gICAgICBsb2NrQ2hvaWNlT3JkZXIgPSB7fSxcbiAgICAgIHJhdGlvbmFsZSA9IHt9LFxuICAgICAgY2hvaWNlUmF0aW9uYWxlID0ge30sXG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0ge30sXG4gICAgICBzcGVsbENoZWNrID0ge30sXG4gICAgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG4gICAgY29uc3Qge1xuICAgICAgcmF0aW9uYWxlRW5hYmxlZCxcbiAgICAgIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQsXG4gICAgICBwcm9tcHRFbmFibGVkLFxuICAgICAgdGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQsXG4gICAgICBjaG9pY2VzLFxuICAgICAgc3BlbGxDaGVja0VuYWJsZWQsXG4gICAgICBlcnJvcnNcbiAgICB9ID1cbiAgICBtb2RlbCB8fCB7fTtcbiAgICBjb25zdCB7IHJlc3BvbnNlQXJlYXNFcnJvciB9ID0gZXJyb3JzIHx8IHt9O1xuXG4gICAgY29uc3QgcmVuZGVyQ2hvaWNlUmF0aW9uYWxlID0gKCkgPT4gKE9iamVjdC5rZXlzKGNob2ljZXMpIHx8IFtdKS5tYXAoa2V5ID0+XG4gICAgICA8ZGl2IGtleT17a2V5fSBjbGFzc05hbWU9e2NsYXNzZXMucmF0aW9uYWxlQ2hvaWNlc30+XG4gICAgICAgIDxFeHBhbnNpb25QYW5lbD5cbiAgICAgICAgICA8RXhwYW5zaW9uUGFuZWxTdW1tYXJ5IGV4cGFuZEljb249ezxFeHBhbmRNb3JlSWNvbi8+fT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNsYXNzTmFtZT17Y2xhc3Nlcy50ZXh0fT5cbiAgICAgICAgICAgICAge2BSYXRpb25hbGUgZm9yIHJlc3BvbnNlIGFyZWEgIyR7cGFyc2VJbnQoa2V5KSArIDF9YH1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L0V4cGFuc2lvblBhbmVsU3VtbWFyeT5cbiAgICAgICAgICA8RXhwYW5zaW9uUGFuZWxEZXRhaWxzIGNsYXNzTmFtZT17Y2xhc3Nlcy5wYW5lbERldGFpbHN9PlxuICAgICAgICAgICAgeyhjaG9pY2VzW2tleV0gfHwgW10pLm1hcChjaG9pY2UgPT5cbiAgICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtjaG9pY2UubGFiZWx9XG4gICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJhdGlvbmFsZUxhYmVsfVxuICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICAgICAgICAgIF9faHRtbDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke3JhdGlvbmFsZS5sYWJlbH0gZm9yICR7Y2hvaWNlLmxhYmVsfSAoJHtjaG9pY2UuY29ycmVjdCA/ICdjb3JyZWN0JyA6ICdpbmNvcnJlY3QnfSlgXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17Y2hvaWNlLnJhdGlvbmFsZSB8fCAnJ31cbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2MgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNob2ljZVJhdGlvbmFsZUNoYW5nZWQoa2V5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2hvaWNlLFxuICAgICAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZTogY1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9FeHBhbnNpb25QYW5lbERldGFpbHM+XG4gICAgICAgIDwvRXhwYW5zaW9uUGFuZWw+XG4gICAgICA8L2Rpdj5cbiAgICApXG5cbiAgICBjb25zdCB0b29sYmFyT3B0cyA9IHt9O1xuXG4gICAgc3dpdGNoIChtb2RlbC50b29sYmFyRWRpdG9yUG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHRvb2xiYXJPcHRzLnBvc2l0aW9uID0gJ3RvcCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdG9vbGJhck9wdHMucG9zaXRpb24gPSAnYm90dG9tJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmRlc2lnbn0+XG4gICAgICAgIDxsYXlvdXQuQ29uZmlnTGF5b3V0XG4gICAgICAgICAgc2V0dGluZ3M9e1xuICAgICAgICAgICAgPFBhbmVsXG4gICAgICAgICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj17Y29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgb25DaGFuZ2VNb2RlbD17bW9kZWwgPT4gdGhpcy5vbk1vZGVsQ2hhbmdlKG1vZGVsKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2VDb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9uID0+XG4gICAgICAgICAgICAgICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZChjb25maWd1cmF0aW9uLCB0cnVlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGdyb3Vwcz17e1xuICAgICAgICAgICAgICAgIFNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICBwYXJ0aWFsU2NvcmluZzpcbiAgICAgICAgICAgICAgICAgICAgcGFydGlhbFNjb3Jpbmcuc2V0dGluZ3MgJiYgdG9nZ2xlKHBhcnRpYWxTY29yaW5nLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIGxvY2tDaG9pY2VPcmRlcjpcbiAgICAgICAgICAgICAgICAgICAgbG9ja0Nob2ljZU9yZGVyLnNldHRpbmdzICYmIHRvZ2dsZShsb2NrQ2hvaWNlT3JkZXIubGFiZWwpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgICAgdGVhY2hlckluc3RydWN0aW9ucy5zZXR0aW5ncyAmJlxuICAgICAgICAgICAgICAgICAgICB0b2dnbGUodGVhY2hlckluc3RydWN0aW9ucy5sYWJlbCksXG4gICAgICAgICAgICAgICAgICByYXRpb25hbGVFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICByYXRpb25hbGUuc2V0dGluZ3MgJiYgdG9nZ2xlKHJhdGlvbmFsZS5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBjaG9pY2VSYXRpb25hbGVFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICBjaG9pY2VSYXRpb25hbGUuc2V0dGluZ3MgJiYgdG9nZ2xlKGNob2ljZVJhdGlvbmFsZS5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBwcm9tcHRFbmFibGVkOiBwcm9tcHQuc2V0dGluZ3MgJiYgdG9nZ2xlKHByb21wdC5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2suc2V0dGluZ3MgJiYgdG9nZ2xlKHNwZWxsQ2hlY2subGFiZWwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge3RlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9e3RlYWNoZXJJbnN0cnVjdGlvbnMubGFiZWx9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnRlYWNoZXJJbnN0cnVjdGlvbnMgfHwgJyd9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkfVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgICBub25FbXB0eT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Byb21wdEVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBsYWJlbD17cHJvbXB0LmxhYmVsfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHRIb2xkZXJ9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0fVxuICAgICAgICAgICAgICAgICAgbWFya3VwPXttb2RlbC5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblByb21wdENoYW5nZWR9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVVbmRlcmxpbmVcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7cmF0aW9uYWxlRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICAgIGxhYmVsPXtyYXRpb25hbGUubGFiZWx9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnJhdGlvbmFsZSB8fCAnJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uUmF0aW9uYWxlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNsYXNzTmFtZT17Y2xhc3Nlcy50ZXh0fT5cbiAgICAgICAgICAgICAgRGVmaW5lIFRlbXBsYXRlLCBDaG9pY2VzLCBhbmQgQ29ycmVjdCBSZXNwb25zZXNcbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIHtyZXNwb25zZUFyZWFzRXJyb3IgJiYgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZXJyb3JUZXh0fT57cmVzcG9uc2VBcmVhc0Vycm9yfTwvZGl2Pn1cbiAgICAgICAgICAgIDxJbmZvRGlhbG9nXG4gICAgICAgICAgICAgIG9wZW49e2RpYWxvZy5vcGVufVxuICAgICAgICAgICAgICB0aXRsZT17ZGlhbG9nLm1lc3NhZ2V9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtkaWFsb2cub25DYW5jZWx9XG4gICAgICAgICAgICAgIG9uT2s9e2RpYWxvZy5vbk9rfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgYWN0aXZlUGx1Z2lucz17QUxMX1BMVUdJTlN9XG4gICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt7IHBvc2l0aW9uOiAndG9wJyB9fVxuICAgICAgICAgICAgICByZXNwb25zZUFyZWFQcm9wcz17e1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbmxpbmUtZHJvcGRvd24nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXM6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlc3BBcmVhVG9vbGJhcjogKG5vZGUsIHZhbHVlLCBvblRvb2xiYXJEb25lKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB7IHJlc3BBcmVhQ2hvaWNlcyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZURyb3Bkb3duVG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgIG9uQWRkQ2hvaWNlPXt0aGlzLm9uQWRkQ2hvaWNlfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hlY2s9e3RoaXMub25DaGVja31cbiAgICAgICAgICAgICAgICAgICAgICBvblJlbW92ZUNob2ljZT17aW5kZXggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmVDaG9pY2Uobm9kZS5kYXRhLmdldCgnaW5kZXgnKSwgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0Q2hvaWNlPXtpbmRleCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdENob2ljZShub2RlLmRhdGEuZ2V0KCdpbmRleCcpLCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgbm9kZT17bm9kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgb25Ub29sYmFyRG9uZT17b25Ub29sYmFyRG9uZX1cbiAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPXtyZXNwQXJlYUNob2ljZXNbbm9kZS5kYXRhLmdldCgnaW5kZXgnKV19XG4gICAgICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5tYXJrdXB9XG4gICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwuc2xhdGVNYXJrdXAgfHwgJyd9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLm9uQmx1cn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICBoaWdobGlnaHRTaGFwZT17ZmFsc2V9XG4gICAgICAgICAgICAgIGVycm9yPXtyZXNwb25zZUFyZWFzRXJyb3J9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7Y2hvaWNlUmF0aW9uYWxlRW5hYmxlZCAmJiByZW5kZXJDaG9pY2VSYXRpb25hbGUoKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9sYXlvdXQuQ29uZmlnTGF5b3V0PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBTdHlsZWQgPSB3aXRoU3R5bGVzKHN0eWxlcykoTWFpbik7XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxlZDtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","choiceRationale","rationaleEnabled","choiceRationaleEnabled","promptEnabled","teacherInstructionsEnabled","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","toolbarEditorPosition","position","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport max from 'lodash/max';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F'\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces'\n },\n rationaleChoices: {\n marginTop: '16px'\n },\n panelDetails: {\n display: 'block'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice = model.choices && model.choices[index] && model.choices[index]\n .findIndex(elem => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n choiceRationale = {},\n teacherInstructions = {}\n } = configuration || {};\n const {\n rationaleEnabled,\n choiceRationaleEnabled,\n promptEnabled,\n teacherInstructionsEnabled,\n choices\n } =\n model || {};\n\n const renderChoiceRationale = () => (Object.keys(choices) || []).map(key =>\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon/>}>\n <Typography className={classes.text}>\n {`Rationale for response area #${parseInt(key) + 1}`}\n </Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map(choice =>\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html:\n `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n onChange={c =>\n this.onChoiceRationaleChanged(key, {\n ...choice,\n rationale: c\n })\n }\n imageSupport={imageSupport}\n />\n </InputContainer>\n )}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n )\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled:\n choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label)\n }\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n />\n );\n }\n }}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n />\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","errorText","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","choiceRationale","spellCheck","rationaleEnabled","choiceRationaleEnabled","promptEnabled","teacherInstructionsEnabled","spellCheckEnabled","errors","responseAreasError","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","toolbarEditorPosition","position","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport max from 'lodash/max';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F'\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces'\n },\n rationaleChoices: {\n marginTop: '16px'\n },\n panelDetails: {\n display: 'block'\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n paddingTop: '5px',\n marginTop: '8px'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice = model.choices && model.choices[index] && model.choices[index]\n .findIndex(elem => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n choiceRationale = {},\n teacherInstructions = {},\n spellCheck = {},\n } = configuration || {};\n const {\n rationaleEnabled,\n choiceRationaleEnabled,\n promptEnabled,\n teacherInstructionsEnabled,\n choices,\n spellCheckEnabled,\n errors\n } =\n model || {};\n const { responseAreasError } = errors || {};\n\n const renderChoiceRationale = () => (Object.keys(choices) || []).map(key =>\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon/>}>\n <Typography className={classes.text}>\n {`Rationale for response area #${parseInt(key) + 1}`}\n </Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map(choice =>\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html:\n `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={c =>\n this.onChoiceRationaleChanged(key, {\n ...choice,\n rationale: c\n })\n }\n imageSupport={imageSupport}\n />\n </InputContainer>\n )}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n )\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled:\n choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label)\n }\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n />\n );\n }\n }}\n spellCheck={spellCheckEnabled}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n />\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createSlateMarkup = exports.processMarkup = exports.createElementFromHTML = exports.removeUnwantedCharacters = void 0;
8
+ exports.removeUnwantedCharacters = exports.processMarkup = exports.createSlateMarkup = exports.createElementFromHTML = void 0;
9
9
 
10
10
  var _escape = _interopRequireDefault(require("lodash/escape"));
11
11
 
@@ -67,4 +67,4 @@ var createSlateMarkup = function createSlateMarkup(markup, choices) {
67
67
  };
68
68
 
69
69
  exports.createSlateMarkup = createSlateMarkup;
70
- //# sourceMappingURL=markupUtils.js.map
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXJrdXBVdGlscy5qcyJdLCJuYW1lcyI6WyJ0U3ltYm9scyIsIm5TeW1ib2xzIiwibWF0Y2hUYWJBbmROZXdMaW5lIiwiUmVnRXhwIiwicmVtb3ZlVW53YW50ZWRDaGFyYWN0ZXJzIiwibWFya3VwIiwicmVwbGFjZSIsImNyZWF0ZUVsZW1lbnRGcm9tSFRNTCIsImh0bWxTdHJpbmciLCJkaXYiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJ0cmltIiwicHJvY2Vzc01hcmt1cCIsIm5ld01hcmt1cCIsInNsYXRlTWFya3VwIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJzIiwicmVwbGFjZVdpdGgiLCJkYXRhc2V0IiwiaW5kZXgiLCJSRUdFWCIsImNyZWF0ZVNsYXRlTWFya3VwIiwiY2hvaWNlcyIsImNyZWF0ZVNlbGVjdCIsImNvcnJlY3RDaG9pY2UiLCJmaW5kIiwiYyIsImNvcnJlY3QiLCJ2YWx1ZSIsImlkIiwibGFiZWwiLCJtYXRjaCIsImciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBO0FBQ0EsSUFBTUEsUUFBUSxHQUFHLCtCQUFqQixDLENBQ0E7O0FBQ0EsSUFBTUMsUUFBUSxHQUFHLHNDQUFqQixDLENBQ0E7O0FBQ0EsSUFBTUMsa0JBQWtCLEdBQUcsSUFBSUMsTUFBSixrQkFBcUJILFFBQXJCLHVCQUEwQ0MsUUFBMUMseUJBQWlFRCxRQUFqRSx5QkFBd0ZDLFFBQXhGLFNBQXNHLEdBQXRHLENBQTNCOztBQUVPLElBQU1HLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBMkIsQ0FBQUMsTUFBTTtBQUFBLFNBQzVDQSxNQUFNLENBQUNDLE9BQVAsQ0FBZUosa0JBQWYsRUFBbUMsRUFBbkMsRUFBdUNJLE9BQXZDLENBQStDLE1BQS9DLEVBQXVELEdBQXZELEVBQTREQSxPQUE1RCxDQUFvRSxPQUFwRSxFQUE2RSxHQUE3RSxDQUQ0QztBQUFBLENBQXZDOzs7O0FBR0EsSUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixDQUFBQyxVQUFVLEVBQUk7QUFDakQsTUFBTUMsR0FBRyxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBWjtBQUVBRixFQUFBQSxHQUFHLENBQUNHLFNBQUosR0FBZ0JKLFVBQVUsQ0FBQ0ssSUFBWCxFQUFoQjtBQUVBLFNBQU9KLEdBQVA7QUFDRCxDQU5NOzs7O0FBUUEsSUFBTUssYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFBVCxNQUFNLEVBQUk7QUFDckMsTUFBTVUsU0FBUyxHQUFHWCx3QkFBd0IsQ0FBQ0MsTUFBRCxDQUExQztBQUNBLE1BQU1XLFdBQVcsR0FBR1QscUJBQXFCLENBQUNRLFNBQUQsQ0FBekM7QUFFQUMsRUFBQUEsV0FBVyxDQUFDQyxnQkFBWixDQUE2QiwrQkFBN0IsRUFBOERDLE9BQTlELENBQXNFLFVBQUFDLENBQUMsRUFBSTtBQUN6RUEsSUFBQUEsQ0FBQyxDQUFDQyxXQUFGLGFBQW1CRCxDQUFDLENBQUNFLE9BQUYsQ0FBVUMsS0FBN0I7QUFDRCxHQUZEO0FBSUEsU0FBT04sV0FBVyxDQUFDSixTQUFuQjtBQUNELENBVE07OztBQVdQLElBQU1XLEtBQUssR0FBRyxnQkFBZDs7QUFFTyxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQUNuQixNQUFELEVBQVNvQixPQUFULEVBQXFCO0FBQ3BELE1BQU1WLFNBQVMsR0FBR1gsd0JBQXdCLENBQUNDLE1BQUQsQ0FBMUM7O0FBQ0EsTUFBTXFCLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUFKLEtBQUssRUFBSTtBQUM1QixRQUFJSyxhQUFhLEdBQUdGLE9BQU8sQ0FBQ0gsS0FBRCxDQUFQLElBQWtCRyxPQUFPLENBQUNILEtBQUQsQ0FBUCxDQUFlTSxJQUFmLENBQW9CLFVBQUFDLENBQUM7QUFBQSxhQUFJQSxDQUFDLENBQUNDLE9BQU47QUFBQSxLQUFyQixDQUF0Qzs7QUFFQSxRQUFJLENBQUNILGFBQUQsSUFBa0IsQ0FBQ0EsYUFBYSxDQUFDSSxLQUFyQyxFQUE0QztBQUMxQ0osTUFBQUEsYUFBYSxHQUFHO0FBQ2RLLFFBQUFBLEVBQUUsRUFBRSxFQURVO0FBRWRELFFBQUFBLEtBQUssRUFBRSxFQUZPO0FBR2RFLFFBQUFBLEtBQUssRUFBRTtBQUhPLE9BQWhCO0FBS0Q7O0FBRUQsc0VBQXdEWCxLQUF4RCw2QkFBOEUsd0JBQU9LLGFBQWEsQ0FBQ00sS0FBckIsQ0FBOUU7QUFDRCxHQVpEOztBQWNBLFNBQU9sQixTQUFTLENBQUNULE9BQVYsQ0FBa0JpQixLQUFsQixFQUF5QixVQUFDVyxLQUFELEVBQVFDLENBQVIsRUFBYztBQUM1QyxXQUFPVCxZQUFZLENBQUNTLENBQUQsQ0FBbkI7QUFDRCxHQUZNLENBQVA7QUFHRCxDQW5CTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlc2NhcGUgZnJvbSAnbG9kYXNoL2VzY2FwZSc7XG5cbi8vIGRvIG5vdCByZW1vdmUgXFx0IGZyb20gXFx0aW1lcywgXFx0cmlhbmdsZSwgXFx0YW4sIFxcdGhldGEgb3IgXFx0aGVyZWZvcmVcbmNvbnN0IHRTeW1ib2xzID0gJ2ltZXN8cmlhbmdsZXxhbnxoZXRhfGhlcmVmb3JlJztcbi8vIGRvIG5vdCByZW1vdmUgXFxuIGZyb20gXFxudGhyb290LCBcXG5wYXJhbGxlbCwgXFxuY29uZywgXFxuYXBwcm94LCBcXG5lcSwgXFxuZSBvciBcXG5zaW1cbmNvbnN0IG5TeW1ib2xzID0gJ3Rocm9vdHxwYXJhbGxlbHxjb25nfGFwcHJveHxlcXxlfHNpbSc7XG4vLyBtYXRjaCBhbGwgXFx0IGFuZCBcXG4gdGhhdCBhcmUgbm90IHBhcnQgb2YgbWF0aCBzeW1ib2xzIHRoYXQgc3RhcnRzIHdpdGggXFx0IG9yIFxcblxuY29uc3QgbWF0Y2hUYWJBbmROZXdMaW5lID0gbmV3IFJlZ0V4cChgKFxcXFx0KD8hJHt0U3ltYm9sc30pKXwoXFxcXG4oPyEke25TeW1ib2xzfSkpfChcXFxcXFxcXHQoPyEke3RTeW1ib2xzfSkpfChcXFxcXFxcXG4oPyEke25TeW1ib2xzfSkpYCwgJ2cnKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVVud2FudGVkQ2hhcmFjdGVycyA9IG1hcmt1cCA9PlxuICBtYXJrdXAucmVwbGFjZShtYXRjaFRhYkFuZE5ld0xpbmUsICcnKS5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJykucmVwbGFjZSgvXFxcXFxcLy9nLCAnLycpO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRWxlbWVudEZyb21IVE1MID0gaHRtbFN0cmluZyA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pbm5lckhUTUwgPSBodG1sU3RyaW5nLnRyaW0oKTtcblxuICByZXR1cm4gZGl2O1xufTtcblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NNYXJrdXAgPSBtYXJrdXAgPT4ge1xuICBjb25zdCBuZXdNYXJrdXAgPSByZW1vdmVVbndhbnRlZENoYXJhY3RlcnMobWFya3VwKTtcbiAgY29uc3Qgc2xhdGVNYXJrdXAgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwobmV3TWFya3VwKTtcblxuICBzbGF0ZU1hcmt1cC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS10eXBlPVwiaW5saW5lX2Ryb3Bkb3duXCJdJykuZm9yRWFjaChzID0+IHtcbiAgICBzLnJlcGxhY2VXaXRoKGB7eyR7cy5kYXRhc2V0LmluZGV4fX19YCk7XG4gIH0pO1xuXG4gIHJldHVybiBzbGF0ZU1hcmt1cC5pbm5lckhUTUw7XG59O1xuXG5jb25zdCBSRUdFWCA9IC9cXHtcXHsoXFxkKylcXH1cXH0vZztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNsYXRlTWFya3VwID0gKG1hcmt1cCwgY2hvaWNlcykgPT4ge1xuICBjb25zdCBuZXdNYXJrdXAgPSByZW1vdmVVbndhbnRlZENoYXJhY3RlcnMobWFya3VwKTtcbiAgY29uc3QgY3JlYXRlU2VsZWN0ID0gaW5kZXggPT4ge1xuICAgIGxldCBjb3JyZWN0Q2hvaWNlID0gY2hvaWNlc1tpbmRleF0gJiYgY2hvaWNlc1tpbmRleF0uZmluZChjID0+IGMuY29ycmVjdCk7XG5cbiAgICBpZiAoIWNvcnJlY3RDaG9pY2UgfHwgIWNvcnJlY3RDaG9pY2UudmFsdWUpIHtcbiAgICAgIGNvcnJlY3RDaG9pY2UgPSB7XG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICBsYWJlbDogJydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGA8c3BhbiBkYXRhLXR5cGU9XCJpbmxpbmVfZHJvcGRvd25cIiBkYXRhLWluZGV4PVwiJHtpbmRleH1cIiBkYXRhLXZhbHVlPVwiJHtlc2NhcGUoY29ycmVjdENob2ljZS5sYWJlbCl9XCI+PC9zcGFuPmA7XG4gIH07XG5cbiAgcmV0dXJuIG5ld01hcmt1cC5yZXBsYWNlKFJFR0VYLCAobWF0Y2gsIGcpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlU2VsZWN0KGcpO1xuICB9KTtcbn07XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/inline-dropdown-configure",
3
- "version": "3.6.13",
3
+ "version": "3.6.8",
4
4
  "private": true,
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -8,9 +8,9 @@
8
8
  "@material-ui/core": "^3.9.2",
9
9
  "@material-ui/icons": "^3.0.1",
10
10
  "@pie-framework/pie-configure-events": "^1.2.0",
11
- "@pie-lib/config-ui": "^10.10.23",
12
- "@pie-lib/editable-html": "^7.19.2",
13
- "@pie-lib/math-rendering": "^2.3.12",
11
+ "@pie-lib/config-ui": "^10.10.24",
12
+ "@pie-lib/editable-html": "^7.19.3",
13
+ "@pie-lib/math-rendering": "^2.3.13",
14
14
  "classnames": "^2.2.6",
15
15
  "debug": "^3.1.0",
16
16
  "lodash": "^4.17.15",
@@ -3,14 +3,6 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [3.3.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.3.3...@pie-element/inline-dropdown-controller@3.3.4) (2022-03-08)
7
-
8
- **Note:** Version bump only for package @pie-element/inline-dropdown-controller
9
-
10
-
11
-
12
-
13
-
14
6
  # [3.3.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.2.17...@pie-element/inline-dropdown-controller@3.3.0) (2021-09-20)
15
7
 
16
8