@pie-element/explicit-constructed-response 3.9.2 → 3.9.3-next.1016

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 (40) hide show
  1. package/CHANGELOG.md +204 -0
  2. package/configure/CHANGELOG.md +176 -0
  3. package/configure/lib/alternateResponses.js +45 -12
  4. package/configure/lib/alternateResponses.js.map +1 -1
  5. package/configure/lib/alternateSection.js +116 -19
  6. package/configure/lib/alternateSection.js.map +1 -1
  7. package/configure/lib/defaults.js +30 -0
  8. package/configure/lib/defaults.js.map +1 -1
  9. package/configure/lib/ecr-toolbar.js +19 -7
  10. package/configure/lib/ecr-toolbar.js.map +1 -1
  11. package/configure/lib/index.js +3 -3
  12. package/configure/lib/main.js +250 -42
  13. package/configure/lib/main.js.map +1 -1
  14. package/configure/lib/markupUtils.js +29 -3
  15. package/configure/lib/markupUtils.js.map +1 -1
  16. package/configure/lib/utils.js +15 -0
  17. package/configure/lib/utils.js.map +1 -0
  18. package/configure/package.json +3 -3
  19. package/controller/CHANGELOG.md +61 -0
  20. package/controller/lib/index.js +99 -6
  21. package/controller/lib/index.js.map +1 -1
  22. package/controller/package.json +1 -1
  23. package/docs/config-schema.json +116 -0
  24. package/docs/config-schema.json.md +89 -1
  25. package/docs/demo/generate.js +3 -1
  26. package/docs/pie-schema.json +57 -0
  27. package/docs/pie-schema.json.md +45 -0
  28. package/lib/index.js +5 -1
  29. package/lib/index.js.map +1 -1
  30. package/lib/main.js +75 -24
  31. package/lib/main.js.map +1 -1
  32. package/lib/print.js +115 -0
  33. package/lib/print.js.map +1 -0
  34. package/package.json +11 -7
  35. package/module/configure.js +0 -2121
  36. package/module/controller.js +0 -20840
  37. package/module/demo.js +0 -44
  38. package/module/element.js +0 -240
  39. package/module/index.html +0 -16
  40. package/module/manifest.json +0 -10
@@ -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["default"] = exports.AlternateSection = exports.Choice = void 0;
8
+ exports["default"] = exports.Choice = exports.AlternateSection = void 0;
9
9
 
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
 
@@ -43,17 +43,23 @@ var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
43
43
 
44
44
  var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
45
45
 
46
+ var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
47
+
46
48
  var _styles = require("@material-ui/core/styles");
47
49
 
48
50
  var _max = _interopRequireDefault(require("lodash/max"));
49
51
 
50
- 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; }
52
+ var _classnames = _interopRequireDefault(require("classnames"));
53
+
54
+ var _markupUtils = require("./markupUtils");
51
55
 
52
- 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; }
56
+ 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; }
57
+
58
+ 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; }
53
59
 
54
60
  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); }; }
55
61
 
56
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
62
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
63
 
58
64
  var styles = function styles() {
59
65
  return {
@@ -75,10 +81,27 @@ var styles = function styles() {
75
81
  fill: 'gray'
76
82
  },
77
83
  selectContainer: {
78
- alignItems: 'center',
84
+ alignItems: 'flex-end',
79
85
  display: 'flex',
80
86
  justifyContent: 'space-between',
81
87
  width: '100%'
88
+ },
89
+ rightContainer: {
90
+ alignItems: 'center',
91
+ display: 'flex'
92
+ },
93
+ lengthField: {
94
+ width: '230px',
95
+ marginRight: '20px'
96
+ },
97
+ errorText: {
98
+ fontSize: '12px',
99
+ color: 'red',
100
+ paddingTop: '5px'
101
+ },
102
+ inputError: {
103
+ border: '2px solid red',
104
+ borderRadius: '6px'
82
105
  }
83
106
  };
84
107
  };
@@ -115,29 +138,43 @@ var Choice = /*#__PURE__*/function (_React$Component) {
115
138
  }
116
139
 
117
140
  (0, _createClass2["default"])(Choice, [{
141
+ key: "UNSAFE_componentWillReceiveProps",
142
+ value: function UNSAFE_componentWillReceiveProps(nextProps) {
143
+ if (nextProps.markup) {
144
+ this.setState({
145
+ value: nextProps.markup
146
+ });
147
+ }
148
+ }
149
+ }, {
118
150
  key: "render",
119
151
  value: function render() {
120
152
  var value = this.state.value;
121
153
  var _this$props = this.props,
122
154
  classes = _this$props.classes,
123
- onDelete = _this$props.onDelete;
124
- return /*#__PURE__*/_react["default"].createElement("div", {
155
+ onDelete = _this$props.onDelete,
156
+ spellCheck = _this$props.spellCheck,
157
+ error = _this$props.error;
158
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
125
159
  style: {
126
160
  alignItems: 'center',
127
161
  display: 'flex',
128
162
  justifyContent: 'space-between'
129
163
  }
130
164
  }, /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
131
- className: classes.choice,
165
+ className: (0, _classnames["default"])(classes.choice, error && classes.inputError),
132
166
  value: value,
133
167
  onChange: this.onChange,
134
168
  labelWidth: 0,
135
- disableUnderline: true
169
+ disableUnderline: true,
170
+ spellCheck: spellCheck
136
171
  }), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
137
172
  "aria-label": "delete",
138
173
  className: classes.deleteBtn,
139
174
  onClick: onDelete
140
- }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)));
175
+ }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null))), error && /*#__PURE__*/_react["default"].createElement("div", {
176
+ className: classes.errorText
177
+ }, error));
141
178
  }
142
179
  }]);
143
180
  return Choice;
@@ -202,16 +239,51 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
202
239
  });
203
240
  }
204
241
  });
205
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onChoiceChanged", function (choice, value) {
206
- var choiceChanged = _this2.props.choiceChanged;
242
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onChoiceChanged", function (choice, value, index) {
243
+ var _this2$props2 = _this2.props,
244
+ choiceChanged = _this2$props2.choiceChanged,
245
+ lengthChanged = _this2$props2.lengthChanged,
246
+ maxLength = _this2$props2.maxLength,
247
+ choices = _this2$props2.choices;
248
+ var labelLengthsArr = choices.map(function (choice) {
249
+ return (choice.label || '').length;
250
+ });
251
+ labelLengthsArr[index] = value.length;
252
+ var newLength = Math.max.apply(Math, (0, _toConsumableArray2["default"])(labelLengthsArr));
207
253
  choiceChanged(_objectSpread(_objectSpread({}, choice), {}, {
208
254
  label: value
209
255
  }));
256
+
257
+ if (newLength > maxLength || newLength + 10 <= maxLength) {
258
+ lengthChanged((0, _markupUtils.getAdjustedLength)(newLength));
259
+ }
210
260
  });
211
261
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRemoveChoice", function (choice) {
212
262
  var choiceRemoved = _this2.props.choiceRemoved;
213
263
  choiceRemoved(choice.value);
214
264
  });
265
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "getChoicesMaxLength", function () {
266
+ var choices = _this2.state.choices;
267
+
268
+ if (!choices) {
269
+ return 1;
270
+ }
271
+
272
+ var labelLengthsArr = choices.map(function (choice) {
273
+ return (choice.label || '').length;
274
+ });
275
+ return Math.max.apply(Math, (0, _toConsumableArray2["default"])(labelLengthsArr));
276
+ });
277
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "changeLength", function (event) {
278
+ var lengthChanged = _this2.props.lengthChanged;
279
+ var numberValue = parseInt(event.target.value, 10);
280
+
281
+ var minLength = _this2.getChoicesMaxLength();
282
+
283
+ if (numberValue && numberValue >= minLength && numberValue <= minLength + 10) {
284
+ lengthChanged(numberValue);
285
+ }
286
+ });
215
287
  return _this2;
216
288
  }
217
289
 
@@ -233,8 +305,13 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
233
305
  var _this$props2 = this.props,
234
306
  classes = _this$props2.classes,
235
307
  selectChoices = _this$props2.selectChoices,
236
- value = _this$props2.value;
308
+ maxLength = _this$props2.maxLength,
309
+ showMaxLength = _this$props2.showMaxLength,
310
+ value = _this$props2.value,
311
+ spellCheck = _this$props2.spellCheck,
312
+ errors = _this$props2.errors;
237
313
  var choices = this.state.choices;
314
+ var minLength = this.getChoicesMaxLength();
238
315
  return /*#__PURE__*/_react["default"].createElement("div", {
239
316
  className: classes.design
240
317
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -243,7 +320,8 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
243
320
  className: classes.select,
244
321
  displayEmpty: true,
245
322
  onChange: this.handleSelect,
246
- value: value || ''
323
+ value: value || '',
324
+ readOnly: showMaxLength
247
325
  }, /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
248
326
  value: ""
249
327
  }, /*#__PURE__*/_react["default"].createElement("em", null, value ? 'Remove selection' : 'Select a response')), selectChoices.map(function (c, index) {
@@ -251,12 +329,26 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
251
329
  key: index,
252
330
  value: c.value
253
331
  }, c.label);
254
- })), choices && choices.length > 0 && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
332
+ })), choices && choices.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
333
+ className: classes.rightContainer
334
+ }, maxLength && showMaxLength && /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
335
+ className: classes.lengthField,
336
+ label: "Maximum length (characters)",
337
+ type: "number",
338
+ inputProps: {
339
+ min: minLength,
340
+ max: minLength + 10
341
+ },
342
+ value: maxLength,
343
+ onChange: this.changeLength
344
+ }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
255
345
  className: classes.addButton,
256
346
  variant: "contained",
257
347
  color: "primary",
258
348
  onClick: this.onAddChoice
259
- }, "Add")), /*#__PURE__*/_react["default"].createElement("div", {
349
+ }, "Add"))), errors && errors[0] && /*#__PURE__*/_react["default"].createElement("div", {
350
+ className: classes.errorText
351
+ }, errors[0]), /*#__PURE__*/_react["default"].createElement("div", {
260
352
  className: classes.altChoices
261
353
  }, choices && choices.map(function (c, index) {
262
354
  return index > 0 && /*#__PURE__*/_react["default"].createElement(Choice, {
@@ -264,11 +356,13 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
264
356
  classes: classes,
265
357
  markup: c.label,
266
358
  onChange: function onChange(val) {
267
- return _this3.onChoiceChanged(c, val);
359
+ return _this3.onChoiceChanged(c, val, index);
268
360
  },
269
361
  onDelete: function onDelete() {
270
362
  return _this3.onRemoveChoice(c);
271
- }
363
+ },
364
+ spellCheck: spellCheck,
365
+ error: errors && errors[index]
272
366
  });
273
367
  })));
274
368
  }
@@ -283,8 +377,11 @@ exports.AlternateSection = AlternateSection;
283
377
  classes: _propTypes["default"].object.isRequired,
284
378
  onSelect: _propTypes["default"].func.isRequired,
285
379
  choiceChanged: _propTypes["default"].func.isRequired,
380
+ lengthChanged: _propTypes["default"].func,
286
381
  choiceRemoved: _propTypes["default"].func.isRequired,
287
- value: _propTypes["default"].string
382
+ value: _propTypes["default"].string,
383
+ maxLength: _propTypes["default"].number,
384
+ showMaxLength: _propTypes["default"].bool
288
385
  });
289
386
  var Styled = (0, _styles.withStyles)(styles)(AlternateSection);
290
387
  var _default = Styled;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/alternateSection.jsx"],"names":["styles","altChoices","alignItems","flexDirection","display","padding","marginBottom","width","choice","flex","marginRight","deleteBtn","fill","selectContainer","justifyContent","Choice","value","props","markup","onChange","e","target","setState","updateText","state","classes","onDelete","React","Component","PropTypes","object","string","func","isRequired","AlternateSection","choices","onSelect","selectChoices","find","c","length","label","map","parseInt","filter","id","isNaN","choiceChanged","choiceRemoved","nextProps","updateChoicesIfNeeded","design","select","handleSelect","index","addButton","onAddChoice","val","onChoiceChanged","onRemoveChoice","array","Styled"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBC,IAAAA,UAAU,EAAE;AACVC,MAAAA,UAAU,EAAE,YADF;AAEVC,MAAAA,aAAa,EAAE,QAFL;AAGVC,MAAAA,OAAO,EAAE,MAHC;AAIVC,MAAAA,OAAO,EAAE,YAJC;AAKV,eAAS;AACPC,QAAAA,YAAY,EAAE,MADP;AAEPC,QAAAA,KAAK,EAAE;AAFA;AALC,KADQ;AAWpBC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAE,GADA;AAENC,MAAAA,WAAW,EAAE;AAFP,KAXY;AAepBC,IAAAA,SAAS,EAAE;AACTC,MAAAA,IAAI,EAAE;AADG,KAfS;AAkBpBC,IAAAA,eAAe,EAAE;AACfX,MAAAA,UAAU,EAAE,QADG;AAEfE,MAAAA,OAAO,EAAE,MAFM;AAGfU,MAAAA,cAAc,EAAE,eAHD;AAIfP,MAAAA,KAAK,EAAE;AAJQ;AAlBG,GAAP;AAAA,CAAf;;IA0BaQ,M;;;;;;;;;;;;;;;8FASH;AACNC,MAAAA,KAAK,EAAE,MAAKC,KAAL,CAAWC;AADZ,K;mGAIK,0BAAS,MAAKD,KAAL,CAAWE,QAApB,EAA8B,GAA9B,C;iGAEF,UAACC,CAAD,EAAO;AAAA,UACRJ,KADQ,GACEI,CAAC,CAACC,MADJ,CACRL,KADQ;;AAGhB,YAAKM,QAAL,CAAc;AAAEN,QAAAA,KAAK,EAALA;AAAF,OAAd;;AACA,YAAKO,UAAL,CAAgBP,KAAhB;AACD,K;;;;;;WAED,kBAAS;AAAA,UACCA,KADD,GACW,KAAKQ,KADhB,CACCR,KADD;AAAA,wBAEuB,KAAKC,KAF5B;AAAA,UAECQ,OAFD,eAECA,OAFD;AAAA,UAEUC,QAFV,eAEUA,QAFV;AAIP,0BACE;AACE,QAAA,KAAK,EAAE;AACLxB,UAAAA,UAAU,EAAE,QADP;AAELE,UAAAA,OAAO,EAAE,MAFJ;AAGLU,UAAAA,cAAc,EAAE;AAHX;AADT,sBAOE,gCAAC,yBAAD;AACE,QAAA,SAAS,EAAEW,OAAO,CAACjB,MADrB;AAEE,QAAA,KAAK,EAAEQ,KAFT;AAGE,QAAA,QAAQ,EAAE,KAAKG,QAHjB;AAIE,QAAA,UAAU,EAAE,CAJd;AAKE,QAAA,gBAAgB;AALlB,QAPF,eAcE,gCAAC,sBAAD;AACE,sBAAW,QADb;AAEE,QAAA,SAAS,EAAEM,OAAO,CAACd,SAFrB;AAGE,QAAA,OAAO,EAAEe;AAHX,sBAKE,gCAAC,kBAAD,OALF,CAdF,CADF;AAwBD;;;EAlDyBC,kBAAMC,S;;;iCAArBb,M,eACQ;AACjBU,EAAAA,OAAO,EAAEI,sBAAUC,MADF;AAEjBZ,EAAAA,MAAM,EAAEW,sBAAUE,MAFD;AAGjBZ,EAAAA,QAAQ,EAAEU,sBAAUG,IAAV,CAAeC,UAHR;AAIjBP,EAAAA,QAAQ,EAAEG,sBAAUG,IAAV,CAAeC,UAJR;AAKjBjB,EAAAA,KAAK,EAAEa,sBAAUE;AALA,C;;IAoDRG,gB;;;;;;;;;;;;;;;+FAWH,E;+GAUgB,UAAAjB,KAAK,EAAI;AAC/B,UAAI,CAAC,OAAKO,KAAL,CAAWW,OAAZ,IACC,CAAC,yBAAQlB,KAAK,CAACkB,OAAd,EAAuB,OAAKX,KAAL,CAAWW,OAAlC,CADF,IAEC,CAAC,yBAAQlB,KAAK,CAACkB,OAAd,EAAuB,OAAKlB,KAAL,CAAWkB,OAAlC,CAFN,EAGE;AACA,eAAKb,QAAL,CAAc;AACZa,UAAAA,OAAO,EAAElB,KAAK,CAACkB;AADH,SAAd;AAGD;AACF,K;sGAEc,UAAAf,CAAC,EAAI;AAAA,yBACkB,OAAKH,KADvB;AAAA,UACVmB,QADU,gBACVA,QADU;AAAA,UACAC,aADA,gBACAA,aADA;AAAA,UAEVrB,KAFU,GAEAI,CAAC,CAACC,MAFF,CAEVL,KAFU;AAIlBoB,MAAAA,QAAQ,CAACC,aAAa,CAACC,IAAd,CAAmB,UAAAC,CAAC;AAAA,eAAIA,CAAC,CAACvB,KAAF,KAAYA,KAAhB;AAAA,OAApB,CAAD,CAAR;AACD,K;qGAEa,YAAM;AAAA,UACVmB,OADU,GACE,OAAKX,KADP,CACVW,OADU;;AAGlB,UAAIA,OAAO,CAACK,MAAR,IAAkBL,OAAO,CAACA,OAAO,CAACK,MAAR,GAAiB,CAAlB,CAAP,CAA4BC,KAA5B,KAAsC,EAA5D,EAAgE;AAC9D,YAAMzB,KAAK,GAAG,qBAAImB,OAAO,CAACO,GAAR,CAAY,UAAAH,CAAC;AAAA,iBAAII,QAAQ,CAACJ,CAAC,CAACvB,KAAH,CAAZ;AAAA,SAAb,EAAoC4B,MAApC,CAA2C,UAAAC,EAAE;AAAA,iBAAI,CAACC,KAAK,CAACD,EAAD,CAAV;AAAA,SAA7C,CAAJ,KAAqE,CAAnF;;AAEA,eAAKvB,QAAL,CAAc;AACZa,UAAAA,OAAO,gDACFA,OADE,IAEL;AACEnB,YAAAA,KAAK,YAAKA,KAAK,GAAG,CAAb,CADP;AAEEyB,YAAAA,KAAK,EAAE;AAFT,WAFK;AADK,SAAd;AASD;AACF,K;yGAEiB,UAACjC,MAAD,EAASQ,KAAT,EAAmB;AAAA,UAC3B+B,aAD2B,GACT,OAAK9B,KADI,CAC3B8B,aAD2B;AAGnCA,MAAAA,aAAa,iCACRvC,MADQ;AAEXiC,QAAAA,KAAK,EAAEzB;AAFI,SAAb;AAID,K;wGAEgB,UAAAR,MAAM,EAAI;AAAA,UACjBwC,aADiB,GACC,OAAK/B,KADN,CACjB+B,aADiB;AAGzBA,MAAAA,aAAa,CAACxC,MAAM,CAACQ,KAAR,CAAb;AACD,K;;;;;;WAzDD,0CAAiCiC,SAAjC,EAA4C;AAC1C,WAAKC,qBAAL,CAA2BD,SAA3B;AACD;;;WAED,6BAAoB;AAClB,WAAKC,qBAAL,CAA2B,KAAKjC,KAAhC;AACD;;;WAqDD,kBAAS;AAAA;;AAAA,yBAKH,KAAKA,KALF;AAAA,UAELQ,OAFK,gBAELA,OAFK;AAAA,UAGLY,aAHK,gBAGLA,aAHK;AAAA,UAILrB,KAJK,gBAILA,KAJK;AAAA,UAMCmB,OAND,GAMa,KAAKX,KANlB,CAMCW,OAND;AAQP,0BACE;AAAK,QAAA,SAAS,EAAEV,OAAO,CAAC0B;AAAxB,sBACE;AACE,QAAA,SAAS,EAAE1B,OAAO,CAACZ;AADrB,sBAGE,gCAAC,kBAAD;AACE,QAAA,SAAS,EAAEY,OAAO,CAAC2B,MADrB;AAEE,QAAA,YAAY,MAFd;AAGE,QAAA,QAAQ,EAAE,KAAKC,YAHjB;AAIE,QAAA,KAAK,EAAErC,KAAK,IAAI;AAJlB,sBAME,gCAAC,oBAAD;AAAU,QAAA,KAAK,EAAC;AAAhB,sBACE,4CACGA,KAAK,GAAG,kBAAH,GAAwB,mBADhC,CADF,CANF,EAWGqB,aAAa,CAACK,GAAd,CAAkB,UAACH,CAAD,EAAIe,KAAJ;AAAA,4BAAc,gCAAC,oBAAD;AAAU,UAAA,GAAG,EAAEA,KAAf;AAAsB,UAAA,KAAK,EAAEf,CAAC,CAACvB;AAA/B,WAAuCuB,CAAC,CAACE,KAAzC,CAAd;AAAA,OAAlB,CAXH,CAHF,EAiBIN,OAAO,IAAIA,OAAO,CAACK,MAAR,GAAiB,CAA5B,iBACA,gCAAC,kBAAD;AACE,QAAA,SAAS,EAAEf,OAAO,CAAC8B,SADrB;AAEE,QAAA,OAAO,EAAC,WAFV;AAGE,QAAA,KAAK,EAAC,SAHR;AAIE,QAAA,OAAO,EAAE,KAAKC;AAJhB,eAlBJ,CADF,eA6BE;AACE,QAAA,SAAS,EAAE/B,OAAO,CAACxB;AADrB,SAIIkC,OAAO,IACPA,OAAO,CAACO,GAAR,CAAY,UAACH,CAAD,EAAIe,KAAJ;AAAA,eAAcA,KAAK,GAAG,CAAR,iBACxB,gCAAC,MAAD;AACE,UAAA,GAAG,EAAEA,KADP;AAEE,UAAA,OAAO,EAAE7B,OAFX;AAGE,UAAA,MAAM,EAAEc,CAAC,CAACE,KAHZ;AAIE,UAAA,QAAQ,EAAE,kBAAAgB,GAAG;AAAA,mBAAI,MAAI,CAACC,eAAL,CAAqBnB,CAArB,EAAwBkB,GAAxB,CAAJ;AAAA,WAJf;AAKE,UAAA,QAAQ,EAAE;AAAA,mBAAM,MAAI,CAACE,cAAL,CAAoBpB,CAApB,CAAN;AAAA;AALZ,UADU;AAAA,OAAZ,CALJ,CA7BF,CADF;AAgDD;;;EAhImCZ,kBAAMC,S;;;iCAA/BM,gB,eACQ;AACjBC,EAAAA,OAAO,EAAEN,sBAAU+B,KADF;AAEjBvB,EAAAA,aAAa,EAAER,sBAAU+B,KAAV,CAAgB3B,UAFd;AAGjBR,EAAAA,OAAO,EAAEI,sBAAUC,MAAV,CAAiBG,UAHT;AAIjBG,EAAAA,QAAQ,EAAEP,sBAAUG,IAAV,CAAeC,UAJR;AAKjBc,EAAAA,aAAa,EAAElB,sBAAUG,IAAV,CAAeC,UALb;AAMjBe,EAAAA,aAAa,EAAEnB,sBAAUG,IAAV,CAAeC,UANb;AAOjBjB,EAAAA,KAAK,EAAEa,sBAAUE;AAPA,C;AAkIrB,IAAM8B,MAAM,GAAG,wBAAW7D,MAAX,EAAmBkC,gBAAnB,CAAf;eAEe2B,M","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport Button from '@material-ui/core/Button';\nimport Delete from '@material-ui/icons/Delete';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport { withStyles } from '@material-ui/core/styles';\nimport max from 'lodash/max';\n\nconst styles = () => ({\n altChoices: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n display: 'flex',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px',\n width: '100%'\n }\n },\n choice: {\n flex: '1',\n marginRight: '20px'\n },\n deleteBtn: {\n fill: 'gray'\n },\n selectContainer: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%'\n }\n});\n\nexport class Choice extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n markup: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n value: PropTypes.string\n };\n\n state = {\n value: this.props.markup\n };\n\n updateText = debounce(this.props.onChange, 300);\n\n onChange = (e) => {\n const { value } = e.target;\n\n this.setState({ value });\n this.updateText(value);\n };\n\n render() {\n const { value } = this.state;\n const { classes, onDelete } = this.props;\n\n return (\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between'\n }}\n >\n <OutlinedInput\n className={classes.choice}\n value={value}\n onChange={this.onChange}\n labelWidth={0}\n disableUnderline\n />\n <IconButton\n aria-label=\"delete\"\n className={classes.deleteBtn}\n onClick={onDelete}\n >\n <Delete />\n </IconButton>\n </div>\n );\n }\n}\n\nexport class AlternateSection extends React.Component {\n static propTypes = {\n choices: PropTypes.array,\n selectChoices: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired,\n onSelect: PropTypes.func.isRequired,\n choiceChanged: PropTypes.func.isRequired,\n choiceRemoved: PropTypes.func.isRequired,\n value: PropTypes.string\n };\n\n state = {};\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateChoicesIfNeeded(nextProps);\n }\n\n componentDidMount() {\n this.updateChoicesIfNeeded(this.props);\n }\n\n updateChoicesIfNeeded = props => {\n if (!this.state.choices\n || !isEqual(props.choices, this.state.choices)\n || !isEqual(props.choices, this.props.choices)\n ) {\n this.setState({\n choices: props.choices\n });\n }\n };\n\n handleSelect = e => {\n const { onSelect, selectChoices } = this.props;\n const { value } = e.target;\n\n onSelect(selectChoices.find(c => c.value === value));\n };\n\n onAddChoice = () => {\n const { choices } = this.state;\n\n if (choices.length && choices[choices.length - 1].label !== '') {\n const value = max(choices.map(c => parseInt(c.value)).filter(id => !isNaN(id))) || 0;\n\n this.setState({\n choices: [\n ...choices,\n {\n value: `${value + 1}`,\n label: ''\n }\n ]\n });\n }\n };\n\n onChoiceChanged = (choice, value) => {\n const { choiceChanged } = this.props;\n\n choiceChanged({\n ...choice,\n label: value\n });\n };\n\n onRemoveChoice = choice => {\n const { choiceRemoved } = this.props;\n\n choiceRemoved(choice.value);\n };\n\n render() {\n const {\n classes,\n selectChoices,\n value\n } = this.props;\n const { choices } = this.state;\n\n return (\n <div className={classes.design}>\n <div\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n displayEmpty\n onChange={this.handleSelect}\n value={value || ''}\n >\n <MenuItem value=\"\">\n <em>\n {value ? 'Remove selection' : 'Select a response'}\n </em>\n </MenuItem>\n {selectChoices.map((c, index) => <MenuItem key={index} value={c.value}>{c.label}</MenuItem>)}\n </Select>\n {\n choices && choices.length > 0 &&\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n >\n Add\n </Button>\n }\n </div>\n <div\n className={classes.altChoices}\n >\n {\n choices &&\n choices.map((c, index) => index > 0 && (\n <Choice\n key={index}\n classes={classes}\n markup={c.label}\n onChange={val => this.onChoiceChanged(c, val)}\n onDelete={() => this.onRemoveChoice(c)}\n />\n ))\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(AlternateSection);\n\nexport default Styled;\n"],"file":"alternateSection.js"}
1
+ {"version":3,"sources":["../src/alternateSection.jsx"],"names":["styles","altChoices","alignItems","flexDirection","display","padding","marginBottom","width","choice","flex","marginRight","deleteBtn","fill","selectContainer","justifyContent","rightContainer","lengthField","errorText","fontSize","color","paddingTop","inputError","border","borderRadius","Choice","value","props","markup","onChange","e","target","setState","updateText","nextProps","state","classes","onDelete","spellCheck","error","React","Component","PropTypes","object","string","func","isRequired","AlternateSection","choices","onSelect","selectChoices","find","c","length","label","map","parseInt","filter","id","isNaN","index","choiceChanged","lengthChanged","maxLength","labelLengthsArr","newLength","Math","max","choiceRemoved","event","numberValue","minLength","getChoicesMaxLength","updateChoicesIfNeeded","showMaxLength","errors","design","select","handleSelect","min","changeLength","addButton","onAddChoice","val","onChoiceChanged","onRemoveChoice","array","number","bool","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport Button from '@material-ui/core/Button';\nimport Delete from '@material-ui/icons/Delete';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport TextField from '@material-ui/core/TextField';\nimport { withStyles } from '@material-ui/core/styles';\nimport max from 'lodash/max';\nimport classnames from 'classnames';\n\nimport { getAdjustedLength } from './markupUtils';\n\nconst styles = () => ({\n altChoices: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n display: 'flex',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px',\n width: '100%'\n }\n },\n choice: {\n flex: '1',\n marginRight: '20px'\n },\n deleteBtn: {\n fill: 'gray'\n },\n selectContainer: {\n alignItems: 'flex-end',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%'\n },\n rightContainer: {\n alignItems: 'center',\n display: 'flex',\n },\n lengthField: {\n width: '230px',\n marginRight: '20px'\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n paddingTop: '5px'\n },\n inputError: {\n border: '2px solid red',\n borderRadius: '6px'\n }\n});\n\nexport class Choice extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n markup: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n value: PropTypes.string\n };\n\n state = {\n value: this.props.markup\n };\n\n updateText = debounce(this.props.onChange, 300);\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.markup) {\n this.setState({ value: nextProps.markup });\n }\n }\n\n onChange = (e) => {\n const { value } = e.target;\n\n this.setState({ value });\n this.updateText(value);\n };\n\n render() {\n const { value } = this.state;\n const { classes, onDelete, spellCheck, error } = this.props;\n\n return (\n <>\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between'\n }}\n >\n <OutlinedInput\n className={classnames(classes.choice, error && classes.inputError)}\n value={value}\n onChange={this.onChange}\n labelWidth={0}\n disableUnderline\n spellCheck={spellCheck}\n />\n <IconButton\n aria-label=\"delete\"\n className={classes.deleteBtn}\n onClick={onDelete}\n >\n <Delete/>\n </IconButton>\n </div>\n {error && <div className={classes.errorText}>{error}</div>}\n </>\n );\n }\n}\n\nexport class AlternateSection extends React.Component {\n static propTypes = {\n choices: PropTypes.array,\n selectChoices: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired,\n onSelect: PropTypes.func.isRequired,\n choiceChanged: PropTypes.func.isRequired,\n lengthChanged: PropTypes.func,\n choiceRemoved: PropTypes.func.isRequired,\n value: PropTypes.string,\n maxLength: PropTypes.number,\n showMaxLength: PropTypes.bool\n };\n\n state = {};\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateChoicesIfNeeded(nextProps);\n }\n\n componentDidMount() {\n this.updateChoicesIfNeeded(this.props);\n }\n\n updateChoicesIfNeeded = props => {\n if (!this.state.choices\n || !isEqual(props.choices, this.state.choices)\n || !isEqual(props.choices, this.props.choices)\n ) {\n this.setState({\n choices: props.choices\n });\n }\n };\n\n handleSelect = e => {\n const { onSelect, selectChoices } = this.props;\n const { value } = e.target;\n\n onSelect(selectChoices.find(c => c.value === value));\n };\n\n onAddChoice = () => {\n const { choices } = this.state;\n\n if (choices.length && choices[choices.length - 1].label !== '') {\n const value = max(choices.map(c => parseInt(c.value)).filter(id => !isNaN(id))) || 0;\n\n this.setState({\n choices: [\n ...choices,\n {\n value: `${value + 1}`,\n label: ''\n }\n ]\n });\n }\n };\n\n onChoiceChanged = (choice, value, index) => {\n const { choiceChanged, lengthChanged, maxLength, choices } = this.props;\n\n const labelLengthsArr = choices.map(choice => (choice.label || '').length);\n labelLengthsArr[index] = value.length;\n\n const newLength = Math.max(...labelLengthsArr);\n\n choiceChanged({\n ...choice,\n label: value\n });\n\n if (newLength > maxLength || newLength + 10 <= maxLength) {\n lengthChanged(getAdjustedLength(newLength));\n }\n };\n\n onRemoveChoice = choice => {\n const { choiceRemoved } = this.props;\n\n choiceRemoved(choice.value);\n };\n\n getChoicesMaxLength = () => {\n const { choices } = this.state;\n\n if (!choices) {\n return 1;\n }\n\n const labelLengthsArr = choices.map(choice => (choice.label || '').length);\n\n return Math.max(...labelLengthsArr);\n };\n\n changeLength = event => {\n const { lengthChanged } = this.props;\n const numberValue = parseInt(event.target.value, 10);\n const minLength = this.getChoicesMaxLength();\n\n if (numberValue && numberValue >= minLength && numberValue <= minLength + 10) {\n lengthChanged(numberValue);\n }\n };\n\n render() {\n const {\n classes,\n selectChoices,\n maxLength,\n showMaxLength,\n value,\n spellCheck,\n errors\n } = this.props;\n const { choices } = this.state;\n const minLength = this.getChoicesMaxLength();\n\n return (\n <div className={classes.design}>\n <div\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n displayEmpty\n onChange={this.handleSelect}\n value={value || ''}\n readOnly={showMaxLength}\n >\n <MenuItem value=\"\">\n <em>\n {value ? 'Remove selection' : 'Select a response'}\n </em>\n </MenuItem>\n {selectChoices.map((c, index) => <MenuItem key={index} value={c.value}>{c.label}</MenuItem>)}\n </Select>\n {\n choices && choices.length > 0 &&\n <div className={classes.rightContainer}>\n {maxLength && showMaxLength && (\n <TextField\n className={classes.lengthField}\n label=\"Maximum length (characters)\"\n type=\"number\"\n inputProps={{\n min: minLength,\n max: minLength + 10\n }}\n value={maxLength}\n onChange={this.changeLength}\n />\n )}\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n >\n Add\n </Button>\n </div>\n }\n </div>\n {errors && errors[0] && <div className={classes.errorText}>{errors[0]}</div>}\n <div\n className={classes.altChoices}\n >\n {\n choices &&\n choices.map((c, index) => index > 0 && (\n <Choice\n key={index}\n classes={classes}\n markup={c.label}\n onChange={val => this.onChoiceChanged(c, val, index)}\n onDelete={() => this.onRemoveChoice(c)}\n spellCheck = {spellCheck}\n error={errors && errors[index]}\n />\n ))\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(AlternateSection);\n\nexport default Styled;\n"],"file":"alternateSection.js"}
@@ -11,6 +11,10 @@ var _default = {
11
11
  prompt: 'Use the inputs to complete the sentence',
12
12
  shuffle: true,
13
13
  markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',
14
+ toolbarEditorPosition: 'bottom',
15
+ displayType: 'block',
16
+ spellCheckEnabled: true,
17
+ playerSpellCheckEnabled: true,
14
18
  choices: {
15
19
  0: [{
16
20
  label: 'cow',
@@ -44,6 +48,7 @@ var _default = {
44
48
  value: '3'
45
49
  }]
46
50
  },
51
+ maxLengthPerChoiceEnabled: true,
47
52
  rationaleEnabled: true,
48
53
  promptEnabled: true,
49
54
  teacherInstructionsEnabled: true,
@@ -62,9 +67,34 @@ var _default = {
62
67
  settings: true,
63
68
  label: 'Rationale'
64
69
  },
70
+ spellCheck: {
71
+ label: 'Spellcheck',
72
+ settings: false,
73
+ enabled: true
74
+ },
75
+ playerSpellCheck: {
76
+ label: 'Student Spellcheck',
77
+ settings: true,
78
+ enabled: true
79
+ },
65
80
  teacherInstructions: {
66
81
  settings: true,
67
82
  label: 'Teacher Instructions'
83
+ },
84
+ maxLengthPerChoice: {
85
+ settings: true,
86
+ label: 'Maximum Length Per Choice'
87
+ },
88
+ maxResponseAreas: 10,
89
+ maxImageWidth: {
90
+ teacherInstructions: 300,
91
+ prompt: 300,
92
+ rationale: 300
93
+ },
94
+ maxImageHeight: {
95
+ teacherInstructions: 300,
96
+ prompt: 300,
97
+ rationale: 300
68
98
  }
69
99
  }
70
100
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","disabled","mode","prompt","shuffle","markup","choices","label","value","correct","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","settings","partialScoring","rationale","teacherInstructions"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAE,KADL;AAELC,IAAAA,IAAI,EAAE,QAFD;AAGLC,IAAAA,MAAM,EAAE,yCAHH;AAILC,IAAAA,OAAO,EAAE,IAJJ;AAKLC,IAAAA,MAAM,EAAE,yCALH;AAMLC,IAAAA,OAAO,EAAE;AACP,SAAG,CACD;AACEC,QAAAA,KAAK,EAAE,KADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OADC,EAKD;AACED,QAAAA,KAAK,EAAE,QADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OALC,EASD;AACED,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE,GAFT;AAGEC,QAAAA,OAAO,EAAE;AAHX,OATC,CADI;AAgBP,SAAG,CACD;AACEF,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OADC,EAKD;AACED,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OALC,EASD;AACED,QAAAA,KAAK,EAAE,QADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OATC,CAhBI;AA8BP,SAAG,CACD;AACED,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OADC,EAKD;AACED,QAAAA,KAAK,EAAE,WADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OALC,EASD;AACED,QAAAA,KAAK,EAAE,QADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OATC;AA9BI,KANJ;AAmDLE,IAAAA,gBAAgB,EAAE,IAnDb;AAoDLC,IAAAA,aAAa,EAAE,IApDV;AAqDLC,IAAAA,0BAA0B,EAAE,IArDvB;AAsDLC,IAAAA,0BAA0B,EAAE;AAtDvB,GADM;AAyDbC,EAAAA,aAAa,EAAE;AACbX,IAAAA,MAAM,EAAE;AACNY,MAAAA,QAAQ,EAAE,IADJ;AAENR,MAAAA,KAAK,EAAE;AAFD,KADK;AAKbS,IAAAA,cAAc,EAAE;AACdD,MAAAA,QAAQ,EAAE,KADI;AAEdR,MAAAA,KAAK,EAAE;AAFO,KALH;AASbU,IAAAA,SAAS,EAAE;AACTF,MAAAA,QAAQ,EAAE,IADD;AAETR,MAAAA,KAAK,EAAE;AAFE,KATE;AAabW,IAAAA,mBAAmB,EAAE;AACnBH,MAAAA,QAAQ,EAAE,IADS;AAEnBR,MAAAA,KAAK,EAAE;AAFY;AAbR;AAzDF,C","sourcesContent":["export default {\n model: {\n disabled: false,\n mode: 'gather',\n prompt: 'Use the inputs to complete the sentence',\n shuffle: true,\n markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',\n choices: {\n 0: [\n {\n label: 'cow',\n value: '0'\n },\n {\n label: 'cattle',\n value: '1'\n },\n {\n label: 'calf',\n value: '2',\n correct: false\n }\n ],\n 1: [\n {\n label: 'over',\n value: '0'\n },\n {\n label: 'past',\n value: '1'\n },\n {\n label: 'beyond',\n value: '2'\n }\n ],\n 2: [\n {\n label: 'moon',\n value: '0'\n },\n {\n label: 'satellite',\n value: '2'\n },\n {\n label: 'house ',\n value: '3'\n }\n ]\n },\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true\n },\n configuration: {\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n }\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","disabled","mode","prompt","shuffle","markup","toolbarEditorPosition","displayType","spellCheckEnabled","playerSpellCheckEnabled","choices","label","value","correct","maxLengthPerChoiceEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","settings","partialScoring","rationale","spellCheck","enabled","playerSpellCheck","teacherInstructions","maxLengthPerChoice","maxResponseAreas","maxImageWidth","maxImageHeight"],"mappings":"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","sourcesContent":["export default {\n model: {\n disabled: false,\n mode: 'gather',\n prompt: 'Use the inputs to complete the sentence',\n shuffle: true,\n markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',\n toolbarEditorPosition: 'bottom',\n displayType: 'block',\n spellCheckEnabled:true,\n playerSpellCheckEnabled:true,\n choices: {\n 0: [\n {\n label: 'cow',\n value: '0'\n },\n {\n label: 'cattle',\n value: '1'\n },\n {\n label: 'calf',\n value: '2',\n correct: false\n }\n ],\n 1: [\n {\n label: 'over',\n value: '0'\n },\n {\n label: 'past',\n value: '1'\n },\n {\n label: 'beyond',\n value: '2'\n }\n ],\n 2: [\n {\n label: 'moon',\n value: '0'\n },\n {\n label: 'satellite',\n value: '2'\n },\n {\n label: 'house ',\n value: '3'\n }\n ]\n },\n maxLengthPerChoiceEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true\n },\n configuration: {\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n playerSpellCheck: {\n label: 'Student Spellcheck',\n settings:true,\n enabled:true\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n maxLengthPerChoice: {\n settings: true,\n label: 'Maximum Length Per Choice'\n },\n maxResponseAreas: 10,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n }\n }\n};\n"],"file":"defaults.js"}
@@ -29,13 +29,15 @@ var _styles = require("@material-ui/core/styles");
29
29
 
30
30
  var _OutlinedInput = _interopRequireDefault(require("@material-ui/core/OutlinedInput"));
31
31
 
32
- 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; }
32
+ var _classnames = _interopRequireDefault(require("classnames"));
33
33
 
34
- 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; }
34
+ 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; }
35
+
36
+ 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; }
35
37
 
36
38
  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); }; }
37
39
 
38
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
40
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
41
 
40
42
  var findSlateNode = function findSlateNode(key) {
41
43
  return window.document.querySelector('[data-key="' + key + '"]');
@@ -56,7 +58,9 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
56
58
  }
57
59
 
58
60
  _this = _super.call.apply(_super, [this].concat(args));
59
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {});
61
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
62
+ markup: ''
63
+ });
60
64
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDone", function () {
61
65
  var newValue = _this.state.markup;
62
66
  var _this$props = _this.props,
@@ -74,7 +78,7 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
74
78
  });
75
79
  var nextText = value.document.getNextText(node.key);
76
80
  change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
77
- onToolbarDone(change, false);
81
+ onToolbarDone(change, true);
78
82
  onChangeResponse(newValue);
79
83
  });
80
84
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) {
@@ -115,7 +119,9 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
115
119
  }, {
116
120
  key: "render",
117
121
  value: function render() {
118
- var classes = this.props.classes;
122
+ var _this$props3 = this.props,
123
+ classes = _this$props3.classes,
124
+ error = _this$props3.error;
119
125
  var _this$state = this.state,
120
126
  markup = _this$state.markup,
121
127
  toolbarStyle = _this$state.toolbarStyle;
@@ -124,6 +130,9 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
124
130
  backgroundColor: '#E0E1E6'
125
131
  })
126
132
  }, /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
133
+ style: {
134
+ width: '100%'
135
+ },
127
136
  autoFocus: true,
128
137
  labelWidth: 0,
129
138
  classes: {
@@ -131,7 +140,7 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
131
140
  },
132
141
  onChange: this.onChange,
133
142
  onBlur: this.onDone,
134
- value: markup
143
+ value: markup || ''
135
144
  }));
136
145
  }
137
146
  }]);
@@ -160,6 +169,9 @@ var StyledECRToolbar = (0, _styles.withStyles)({
160
169
  input: {
161
170
  backgroundColor: '#fff',
162
171
  padding: '10px 20px 10px 10px'
172
+ },
173
+ errorInput: {
174
+ border: '2px solid red'
163
175
  }
164
176
  })(ECRToolbar);
165
177
  var _default = StyledECRToolbar;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ecr-toolbar.jsx"],"names":["findSlateNode","key","window","document","querySelector","ECRToolbar","newValue","state","markup","props","node","value","onToolbarDone","onChangeResponse","update","data","toJSON","change","setNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","e","setState","target","correctChoice","choice","domNode","domNodeRect","getBoundingClientRect","editor","closest","editorRect","top","left","label","toolbarStyle","position","height","width","classes","backgroundColor","input","onChange","onDone","React","Component","PropTypes","object","func","isRequired","shape","StyledECRToolbar","respArea","padding"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAAAC,GAAG,EAAI;AAC3B,SAAOC,MAAM,CAACC,QAAP,CAAgBC,aAAhB,CAA8B,gBAAgBH,GAAhB,GAAsB,IAApD,CAAP;AACD,CAFD;;IAIaI,U;;;;;;;;;;;;;;;8FAgBH,E;+FA4BC,YAAM;AAAA,UACGC,QADH,GACgB,MAAKC,KADrB,CACLC,MADK;AAAA,wBAE4C,MAAKC,KAFjD;AAAA,UAELC,IAFK,eAELA,IAFK;AAAA,UAECC,KAFD,eAECA,KAFD;AAAA,UAEQC,aAFR,eAEQA,aAFR;AAAA,UAEuBC,gBAFvB,eAEuBA,gBAFvB;;AAGb,UAAMC,MAAM,mCAAQJ,IAAI,CAACK,IAAL,CAAUC,MAAV,EAAR;AAA4BL,QAAAA,KAAK,EAAEL;AAAnC,QAAZ;;AACA,UAAMW,MAAM,GAAGN,KAAK,CAACM,MAAN,GAAeC,YAAf,CAA4BR,IAAI,CAACT,GAAjC,EAAsC;AAAEc,QAAAA,IAAI,EAAED;AAAR,OAAtC,CAAf;AAEA,UAAMK,QAAQ,GAAGR,KAAK,CAACR,QAAN,CAAeiB,WAAf,CAA2BV,IAAI,CAACT,GAAhC,CAAjB;AAEAgB,MAAAA,MAAM,CAACI,WAAP,CAAmBF,QAAQ,CAAClB,GAA5B,EAAiC,CAAjC,EAAoCqB,YAApC,CAAiDH,QAAQ,CAAClB,GAA1D,EAA+D,CAA/D;AAEAW,MAAAA,aAAa,CAACK,MAAD,EAAS,KAAT,CAAb;AACAJ,MAAAA,gBAAgB,CAACP,QAAD,CAAhB;AACD,K;iGAEU,UAAAiB,CAAC;AAAA,aAAI,MAAKC,QAAL,CAAc;AAAEhB,QAAAA,MAAM,EAAEe,CAAC,CAACE,MAAF,CAASd;AAAnB,OAAd,CAAJ;AAAA,K;;;;;;WAxCZ,6BAAoB;AAAA,yBACc,KAAKF,KADnB;AAAA,UACViB,aADU,gBACVA,aADU;AAAA,UACKhB,IADL,gBACKA,IADL;AAElB,UAAMiB,MAAM,GAAGD,aAAa,IAAI,EAAhC;AAEA,UAAME,OAAO,GAAG5B,aAAa,CAACU,IAAI,CAACT,GAAN,CAA7B;;AAEA,UAAI2B,OAAJ,EAAa;AACX;AACA,YAAMC,WAAW,GAAGD,OAAO,CAACE,qBAAR,EAApB;AACA,YAAMC,MAAM,GAAGH,OAAO,CAACI,OAAR,CAAgB,qBAAhB,CAAf;AACA,YAAMC,UAAU,GAAGF,MAAM,CAACD,qBAAP,EAAnB;AACA,YAAMI,GAAG,GAAGL,WAAW,CAACK,GAAZ,GAAkBD,UAAU,CAACC,GAAzC;AACA,YAAMC,IAAI,GAAGN,WAAW,CAACM,IAAZ,GAAmBF,UAAU,CAACE,IAA3C;AAEA,aAAKX,QAAL,CAAc;AACZhB,UAAAA,MAAM,EAAEmB,MAAM,CAACS,KADH;AAEZC,UAAAA,YAAY,EAAE;AACZC,YAAAA,QAAQ,EAAE,UADE;AAEZJ,YAAAA,GAAG,YAAKA,GAAG,GAAGL,WAAW,CAACU,MAAlB,GAA2B,EAAhC,OAFS;AAGZJ,YAAAA,IAAI,YAAKA,IAAI,GAAG,EAAZ,OAHQ;AAIZK,YAAAA,KAAK,EAAEX,WAAW,CAACW;AAJP;AAFF,SAAd;AASD;AACF;;;WAkBD,kBAAS;AAAA,UACCC,OADD,GACa,KAAKhC,KADlB,CACCgC,OADD;AAAA,wBAE0B,KAAKlC,KAF/B;AAAA,UAECC,MAFD,eAECA,MAFD;AAAA,UAES6B,YAFT,eAESA,YAFT;AAIP,0BACE;AACE,QAAA,KAAK,kCACAA,YADA;AAEHK,UAAAA,eAAe,EAAE;AAFd;AADP,sBAME,gCAAC,yBAAD;AACE,QAAA,SAAS,MADX;AAEE,QAAA,UAAU,EAAE,CAFd;AAGE,QAAA,OAAO,EAAE;AACPC,UAAAA,KAAK,EAAEF,OAAO,CAACE;AADR,SAHX;AAME,QAAA,QAAQ,EAAE,KAAKC,QANjB;AAOE,QAAA,MAAM,EAAE,KAAKC,MAPf;AAQE,QAAA,KAAK,EAAErC;AART,QANF,CADF;AAmBD;;;EAnF6BsC,kBAAMC,S;;;iCAAzB1C,U,eACQ;AACjBqB,EAAAA,aAAa,EAAEsB,sBAAUC,MADR;AAEjBR,EAAAA,OAAO,EAAEO,sBAAUC,MAFF;AAGjBvC,EAAAA,IAAI,EAAEsC,sBAAUC,MAHC;AAIjBJ,EAAAA,MAAM,EAAEG,sBAAUE,IAJD;AAKjBrC,EAAAA,gBAAgB,EAAEmC,sBAAUE,IAAV,CAAeC,UALhB;AAMjBvC,EAAAA,aAAa,EAAEoC,sBAAUE,IAAV,CAAeC,UANb;AAOjBxC,EAAAA,KAAK,EAAEqC,sBAAUI,KAAV,CAAgB;AACrBnC,IAAAA,MAAM,EAAE+B,sBAAUE,IAAV,CAAeC,UADF;AAErBhD,IAAAA,QAAQ,EAAE6C,sBAAUI,KAAV,CAAgB;AACxBhC,MAAAA,WAAW,EAAE4B,sBAAUE,IAAV,CAAeC;AADJ,KAAhB;AAFW,GAAhB;AAPU,C;AAqFrB,IAAME,gBAAgB,GAAG,wBAAW;AAClCC,EAAAA,QAAQ,EAAE;AACRZ,IAAAA,eAAe,EAAE;AADT,GADwB;AAIlCC,EAAAA,KAAK,EAAE;AACLD,IAAAA,eAAe,EAAE,MADZ;AAELa,IAAAA,OAAO,EAAE;AAFJ;AAJ2B,CAAX,EAQtBlD,UARsB,CAAzB;eAUegD,gB","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\n\nconst findSlateNode = key => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nexport class ECRToolbar extends React.Component {\n static propTypes = {\n correctChoice: PropTypes.object,\n classes: PropTypes.object,\n node: PropTypes.object,\n onDone: PropTypes.func,\n onChangeResponse: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n value: PropTypes.shape({\n change: PropTypes.func.isRequired,\n document: PropTypes.shape({\n getNextText: PropTypes.func.isRequired\n })\n })\n };\n\n state = {};\n\n componentDidMount() {\n const { correctChoice, node } = this.props;\n const choice = correctChoice || {};\n\n const domNode = findSlateNode(node.key);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n markup: choice.label,\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 20}px`,\n left: `${left + 20}px`,\n width: domNodeRect.width\n }\n });\n }\n }\n\n onDone = () => {\n const { markup: newValue } = this.state;\n const { node, value, onToolbarDone, onChangeResponse } = this.props;\n const update = { ...node.data.toJSON(), value: newValue };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n onToolbarDone(change, false);\n onChangeResponse(newValue);\n };\n\n onChange = e => this.setState({ markup: e.target.value });\n\n render() {\n const { classes } = this.props;\n const { markup, toolbarStyle } = this.state;\n\n return (\n <div\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6'\n }}\n >\n <OutlinedInput\n autoFocus\n labelWidth={0}\n classes={{\n input: classes.input\n }}\n onChange={this.onChange}\n onBlur={this.onDone}\n value={markup}\n />\n </div>\n );\n }\n}\n\nconst StyledECRToolbar = withStyles({\n respArea: {\n backgroundColor: '#fff'\n },\n input: {\n backgroundColor: '#fff',\n padding: '10px 20px 10px 10px'\n }\n})(ECRToolbar);\n\nexport default StyledECRToolbar;\n"],"file":"ecr-toolbar.js"}
1
+ {"version":3,"sources":["../src/ecr-toolbar.jsx"],"names":["findSlateNode","key","window","document","querySelector","ECRToolbar","markup","newValue","state","props","node","value","onToolbarDone","onChangeResponse","update","data","toJSON","change","setNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","e","setState","target","correctChoice","choice","domNode","domNodeRect","getBoundingClientRect","editor","closest","editorRect","top","left","label","toolbarStyle","position","height","width","classes","error","backgroundColor","input","onChange","onDone","React","Component","PropTypes","object","func","isRequired","shape","StyledECRToolbar","respArea","padding","errorInput","border"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport classNames from 'classnames';\n\nconst findSlateNode = key => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nexport class ECRToolbar extends React.Component {\n static propTypes = {\n correctChoice: PropTypes.object,\n classes: PropTypes.object,\n node: PropTypes.object,\n onDone: PropTypes.func,\n onChangeResponse: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n value: PropTypes.shape({\n change: PropTypes.func.isRequired,\n document: PropTypes.shape({\n getNextText: PropTypes.func.isRequired\n })\n })\n };\n\n state = {\n markup: ''\n };\n\n componentDidMount() {\n const { correctChoice, node } = this.props;\n const choice = correctChoice || {};\n\n const domNode = findSlateNode(node.key);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n markup: choice.label,\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 20}px`,\n left: `${left + 20}px`,\n width: domNodeRect.width\n }\n });\n }\n }\n\n onDone = () => {\n const { markup: newValue } = this.state;\n const { node, value, onToolbarDone, onChangeResponse } = this.props;\n const update = { ...node.data.toJSON(), value: newValue };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n onToolbarDone(change, true);\n onChangeResponse(newValue);\n };\n\n onChange = e => this.setState({ markup: e.target.value });\n\n render() {\n const { classes, error } = this.props;\n const { markup, toolbarStyle } = this.state;\n\n return (\n <div\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6'\n }}\n >\n <OutlinedInput\n style={{ width: '100%' }}\n autoFocus\n labelWidth={0}\n classes={{\n input: classes.input\n }}\n onChange={this.onChange}\n onBlur={this.onDone}\n value={markup || ''}\n />\n </div>\n );\n }\n}\n\nconst StyledECRToolbar = withStyles({\n respArea: {\n backgroundColor: '#fff'\n },\n input: {\n backgroundColor: '#fff',\n padding: '10px 20px 10px 10px'\n },\n errorInput: {\n border: '2px solid red'\n }\n})(ECRToolbar);\n\nexport default StyledECRToolbar;\n"],"file":"ecr-toolbar.js"}
@@ -41,13 +41,13 @@ var _defaults2 = _interopRequireDefault(require("./defaults"));
41
41
 
42
42
  var _markupUtils = require("./markupUtils");
43
43
 
44
- 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; }
44
+ 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; }
45
45
 
46
- 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; }
46
+ 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; }
47
47
 
48
48
  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); }; }
49
49
 
50
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
50
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
51
51
 
52
52
  var log = (0, _debug["default"])('explicit-constructed-response:configure');
53
53