@pie-lib/rubric 1.0.0-beta.3 → 1.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/authoring.js CHANGED
@@ -1,101 +1,60 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = exports.RubricType = exports.RawAuthoring = exports.PointConfig = void 0;
9
-
10
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
11
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
13
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
27
-
28
17
  var _react = _interopRequireDefault(require("react"));
29
-
30
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
-
32
19
  var _styles = require("@material-ui/core/styles");
33
-
34
20
  var _classnames = _interopRequireDefault(require("classnames"));
35
-
36
21
  var _OutlinedInput = _interopRequireDefault(require("@material-ui/core/OutlinedInput"));
37
-
38
22
  var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
39
-
40
23
  var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
41
-
42
24
  var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
43
-
44
25
  var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
45
-
46
26
  var _times = _interopRequireDefault(require("lodash/times"));
47
-
48
27
  var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
49
-
50
28
  var _FormGroup = _interopRequireDefault(require("@material-ui/core/FormGroup"));
51
-
52
29
  var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
53
-
54
30
  var _grey = _interopRequireDefault(require("@material-ui/core/colors/grey"));
55
-
56
31
  var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
57
-
58
32
  var _DragIndicator = _interopRequireDefault(require("@material-ui/icons/DragIndicator"));
59
-
60
33
  var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
61
-
62
34
  var _reactBeautifulDnd = require("react-beautiful-dnd");
63
-
64
35
  var _debug = _interopRequireDefault(require("debug"));
65
-
66
36
  var _takeRight = _interopRequireDefault(require("lodash/takeRight"));
67
-
68
37
  var _pointMenu = _interopRequireDefault(require("./point-menu"));
69
-
70
38
  var _range = _interopRequireDefault(require("lodash/range"));
71
-
72
39
  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; }
73
-
74
40
  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; }
75
-
76
41
  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); }; }
77
-
78
42
  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; } }
79
-
80
43
  var log = (0, _debug["default"])('pie-lib:rubric:authoring');
81
-
82
44
  var reorder = function reorder(list, startIndex, endIndex) {
83
45
  var result = Array.from(list);
84
-
85
46
  var _result$splice = result.splice(startIndex, 1),
86
- _result$splice2 = (0, _slicedToArray2["default"])(_result$splice, 1),
87
- removed = _result$splice2[0];
88
-
47
+ _result$splice2 = (0, _slicedToArray2["default"])(_result$splice, 1),
48
+ removed = _result$splice2[0];
89
49
  result.splice(endIndex, 0, removed);
90
50
  return result;
91
51
  };
92
-
93
52
  var RubricType = _propTypes["default"].shape({
94
53
  excludeZero: _propTypes["default"].bool,
95
54
  points: _propTypes["default"].arrayOf(_propTypes["default"].string),
96
- sampleAnswers: _propTypes["default"].arrayOf(_propTypes["default"].string)
55
+ sampleAnswers: _propTypes["default"].arrayOf(_propTypes["default"].string),
56
+ maxPoints: _propTypes["default"].number
97
57
  });
98
-
99
58
  exports.RubricType = RubricType;
100
59
  var MaxPoints = (0, _styles.withStyles)(function (theme) {
101
60
  return {
@@ -106,9 +65,9 @@ var MaxPoints = (0, _styles.withStyles)(function (theme) {
106
65
  };
107
66
  })(function (props) {
108
67
  var value = props.value,
109
- _onChange = props.onChange,
110
- max = props.max,
111
- classes = props.classes;
68
+ _onChange = props.onChange,
69
+ max = props.max,
70
+ classes = props.classes;
112
71
  return /*#__PURE__*/_react["default"].createElement(_FormControl["default"], {
113
72
  className: classes.formControl,
114
73
  variant: "outlined"
@@ -129,13 +88,13 @@ var MaxPoints = (0, _styles.withStyles)(function (theme) {
129
88
  value: v
130
89
  }, v);
131
90
  })));
132
- }); // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
133
- // if the value is '', the Sample Answer input field will be empty
91
+ });
134
92
 
93
+ // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
94
+ // if the value is '', the Sample Answer input field will be empty
135
95
  var checkSampleAnswer = function checkSampleAnswer(sampleAnswer) {
136
96
  return sampleAnswer === null || sampleAnswer === 'null';
137
97
  };
138
-
139
98
  var PointConfig = (0, _styles.withStyles)(function (theme) {
140
99
  return {
141
100
  pointConfig: {},
@@ -146,7 +105,7 @@ var PointConfig = (0, _styles.withStyles)(function (theme) {
146
105
  },
147
106
  editor: {
148
107
  width: '100%',
149
- backgroundColor: 'white !important'
108
+ backgroundColor: "".concat(theme.palette.common.white, " !important")
150
109
  },
151
110
  dragIndicator: {
152
111
  paddingTop: theme.spacing.unit,
@@ -167,9 +126,11 @@ var PointConfig = (0, _styles.withStyles)(function (theme) {
167
126
  };
168
127
  })(function (props) {
169
128
  var points = props.points,
170
- content = props.content,
171
- classes = props.classes,
172
- sampleAnswer = props.sampleAnswer;
129
+ content = props.content,
130
+ classes = props.classes,
131
+ sampleAnswer = props.sampleAnswer,
132
+ _props$mathMlOptions = props.mathMlOptions,
133
+ mathMlOptions = _props$mathMlOptions === void 0 ? {} : _props$mathMlOptions;
173
134
  var pointsLabel = "".concat(points, " ").concat(points <= 1 ? 'pt' : 'pts');
174
135
  var showSampleAnswer = checkSampleAnswer(sampleAnswer);
175
136
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -184,7 +145,8 @@ var PointConfig = (0, _styles.withStyles)(function (theme) {
184
145
  }), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
185
146
  className: classes.editor,
186
147
  markup: content,
187
- onChange: props.onChange
148
+ onChange: props.onChange,
149
+ mathMlOptions: mathMlOptions
188
150
  }), /*#__PURE__*/_react["default"].createElement(_pointMenu["default"], {
189
151
  classes: {
190
152
  icon: classes.pointMenu
@@ -199,34 +161,28 @@ var PointConfig = (0, _styles.withStyles)(function (theme) {
199
161
  }, "Sample Response"), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
200
162
  className: classes.editor,
201
163
  markup: sampleAnswer,
202
- onChange: props.onSampleChange
164
+ onChange: props.onSampleChange,
165
+ mathMlOptions: mathMlOptions
203
166
  })));
204
167
  });
205
168
  exports.PointConfig = PointConfig;
206
-
207
169
  var RawAuthoring = /*#__PURE__*/function (_React$Component) {
208
170
  (0, _inherits2["default"])(RawAuthoring, _React$Component);
209
-
210
171
  var _super = _createSuper(RawAuthoring);
211
-
212
172
  function RawAuthoring() {
213
173
  var _this;
214
-
215
174
  (0, _classCallCheck2["default"])(this, RawAuthoring);
216
-
217
175
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
218
176
  args[_key] = arguments[_key];
219
177
  }
220
-
221
178
  _this = _super.call.apply(_super, [this].concat(args));
222
179
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragEnd", function (result) {
223
180
  if (!result.destination) {
224
181
  return;
225
182
  }
226
-
227
183
  var _this$props = _this.props,
228
- value = _this$props.value,
229
- onChange = _this$props.onChange;
184
+ value = _this$props.value,
185
+ onChange = _this$props.onChange;
230
186
  var points = reorder(value.points, result.source.index, result.destination.index);
231
187
  var sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);
232
188
  onChange(_objectSpread(_objectSpread({}, value), {}, {
@@ -236,12 +192,11 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
236
192
  });
237
193
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxPoints", function (maxPoints) {
238
194
  var _this$props2 = _this.props,
239
- value = _this$props2.value,
240
- onChange = _this$props2.onChange;
195
+ value = _this$props2.value,
196
+ onChange = _this$props2.onChange;
241
197
  var currentMax = value.points.length - 1;
242
198
  log('current', currentMax, 'new: ', maxPoints);
243
199
  var points, sampleAnswers;
244
-
245
200
  if (maxPoints > currentMax) {
246
201
  points = (0, _times["default"])(maxPoints - currentMax).map(function () {
247
202
  return '';
@@ -250,13 +205,11 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
250
205
  return null;
251
206
  }).concat(value.sampleAnswers);
252
207
  }
253
-
254
208
  if (maxPoints < currentMax) {
255
209
  log('less than');
256
210
  points = (0, _takeRight["default"])(value.points, maxPoints + 1);
257
211
  sampleAnswers = (0, _takeRight["default"])(value.sampleAnswers, maxPoints + 1);
258
212
  }
259
-
260
213
  if (points) {
261
214
  onChange(_objectSpread(_objectSpread({}, value), {}, {
262
215
  points: points,
@@ -267,14 +220,12 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
267
220
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeContent", function (index, content, type) {
268
221
  // type could be 'points' or 'sampleAnswers'
269
222
  log("changeModel[".concat(type, "]:"), index, content);
270
-
271
223
  if (type !== 'points' && type !== 'sampleAnswers') {
272
224
  return;
273
225
  }
274
-
275
226
  var _this$props3 = _this.props,
276
- value = _this$props3.value,
277
- onChange = _this$props3.onChange;
227
+ value = _this$props3.value,
228
+ onChange = _this$props3.onChange;
278
229
  var items = value[type] && Array.from(value[type]);
279
230
  items.splice(index, 1, content);
280
231
  log("changeModel[".concat(type, "]:"), items);
@@ -282,8 +233,8 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
282
233
  });
283
234
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "excludeZeros", function () {
284
235
  var _this$props4 = _this.props,
285
- value = _this$props4.value,
286
- onChange = _this$props4.onChange;
236
+ value = _this$props4.value,
237
+ onChange = _this$props4.onChange;
287
238
  onChange(_objectSpread(_objectSpread({}, value), {}, {
288
239
  excludeZero: !value.excludeZero
289
240
  }));
@@ -297,7 +248,6 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
297
248
  } else if (index === value.points.length - 1) {
298
249
  return false;
299
250
  }
300
-
301
251
  return true;
302
252
  }
303
253
  });
@@ -305,7 +255,6 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
305
255
  if (clickedItem === 'sample') {
306
256
  var value = _this.props.value;
307
257
  var sampleAnswers = Array.from(value.sampleAnswers || []);
308
-
309
258
  if (checkSampleAnswer(sampleAnswers[index])) {
310
259
  // an empty string will display an empty Sample Answer input field
311
260
  _this.changeContent(index, '', 'sampleAnswers');
@@ -317,22 +266,25 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
317
266
  });
318
267
  return _this;
319
268
  }
320
-
321
269
  (0, _createClass2["default"])(RawAuthoring, [{
322
270
  key: "render",
323
271
  value: function render() {
324
272
  var _this2 = this;
325
-
326
273
  var _this$props5 = this.props,
327
- classes = _this$props5.classes,
328
- className = _this$props5.className,
329
- value = _this$props5.value;
330
-
274
+ classes = _this$props5.classes,
275
+ className = _this$props5.className,
276
+ value = _this$props5.value,
277
+ _this$props5$mathMlOp = _this$props5.mathMlOptions,
278
+ mathMlOptions = _this$props5$mathMlOp === void 0 ? {} : _this$props5$mathMlOp;
279
+ var _ref = value || {},
280
+ _ref$excludeZeroEnabl = _ref.excludeZeroEnabled,
281
+ excludeZeroEnabled = _ref$excludeZeroEnabl === void 0 ? true : _ref$excludeZeroEnabl,
282
+ _ref$maxPointsEnabled = _ref.maxPointsEnabled,
283
+ maxPointsEnabled = _ref$maxPointsEnabled === void 0 ? true : _ref$maxPointsEnabled;
331
284
  if (value && Number.isFinite(value.maxPoints)) {
332
285
  // eslint-disable-next-line no-console
333
286
  console.warn('maxPoints is deprecated - remove from model');
334
287
  }
335
-
336
288
  return /*#__PURE__*/_react["default"].createElement("div", {
337
289
  className: (0, _classnames["default"])(classes["class"], className)
338
290
  }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
@@ -340,11 +292,11 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
340
292
  className: classes.rubricTitle
341
293
  }, "Rubric"), /*#__PURE__*/_react["default"].createElement(_FormGroup["default"], {
342
294
  row: true
343
- }, /*#__PURE__*/_react["default"].createElement(MaxPoints, {
295
+ }, maxPointsEnabled && /*#__PURE__*/_react["default"].createElement(MaxPoints, {
344
296
  max: 10,
345
297
  value: value.points.length - 1,
346
298
  onChange: this.changeMaxPoints
347
- }), /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
299
+ }), excludeZeroEnabled && /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
348
300
  label: "Exclude zeros",
349
301
  control: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
350
302
  checked: value.excludeZero,
@@ -380,7 +332,8 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
380
332
  },
381
333
  onMenuChange: function onMenuChange(clickedItem) {
382
334
  return _this2.onPointMenuChange(index, clickedItem);
383
- }
335
+ },
336
+ mathMlOptions: mathMlOptions
384
337
  }));
385
338
  });
386
339
  }), provided.placeholder);
@@ -389,7 +342,6 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
389
342
  }]);
390
343
  return RawAuthoring;
391
344
  }(_react["default"].Component);
392
-
393
345
  exports.RawAuthoring = RawAuthoring;
394
346
  (0, _defineProperty2["default"])(RawAuthoring, "propTypes", {
395
347
  classes: _propTypes["default"].object.isRequired,
@@ -398,7 +350,6 @@ exports.RawAuthoring = RawAuthoring;
398
350
  onChange: _propTypes["default"].func
399
351
  });
400
352
  (0, _defineProperty2["default"])(RawAuthoring, "defaultProps", {});
401
-
402
353
  var styles = function styles(theme) {
403
354
  return {
404
355
  container: {
@@ -419,37 +370,30 @@ var styles = function styles(theme) {
419
370
  }
420
371
  };
421
372
  };
422
-
423
373
  var StyledRawAuthoring = (0, _styles.withStyles)(styles)(RawAuthoring);
424
-
425
374
  var Reverse = function Reverse(props) {
426
375
  var points = Array.from(props.value.points || []).reverse();
427
376
  var sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();
428
-
429
377
  if (points.length > sampleAnswers.length) {
430
378
  sampleAnswers = (0, _times["default"])(points.length - sampleAnswers.length).map(function () {
431
379
  return null;
432
380
  }).concat(sampleAnswers);
433
381
  }
434
-
435
382
  var value = _objectSpread(_objectSpread({}, props.value), {}, {
436
383
  points: points,
437
384
  sampleAnswers: sampleAnswers
438
385
  });
439
-
440
386
  var onChange = function onChange(value) {
441
387
  props.onChange(_objectSpread(_objectSpread({}, value), {}, {
442
388
  points: Array.from(value.points || []).reverse(),
443
389
  sampleAnswers: Array.from(value.sampleAnswers || []).reverse()
444
390
  }));
445
391
  };
446
-
447
392
  return /*#__PURE__*/_react["default"].createElement(StyledRawAuthoring, {
448
393
  value: value,
449
394
  onChange: onChange
450
395
  });
451
396
  };
452
-
453
397
  Reverse.propTypes = {
454
398
  value: RubricType,
455
399
  getIndex: _propTypes["default"].func,
@@ -457,4 +401,4 @@ Reverse.propTypes = {
457
401
  };
458
402
  var _default = Reverse;
459
403
  exports["default"] = _default;
460
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsInJlb3JkZXIiLCJsaXN0Iiwic3RhcnRJbmRleCIsImVuZEluZGV4IiwicmVzdWx0IiwiQXJyYXkiLCJmcm9tIiwic3BsaWNlIiwicmVtb3ZlZCIsIlJ1YnJpY1R5cGUiLCJQcm9wVHlwZXMiLCJzaGFwZSIsImV4Y2x1ZGVaZXJvIiwiYm9vbCIsInBvaW50cyIsImFycmF5T2YiLCJzdHJpbmciLCJzYW1wbGVBbnN3ZXJzIiwiTWF4UG9pbnRzIiwid2l0aFN0eWxlcyIsInRoZW1lIiwiZm9ybUNvbnRyb2wiLCJtaW5XaWR0aCIsIm1hcmdpbiIsInNwYWNpbmciLCJ1bml0IiwicHJvcHMiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwibWF4IiwiY2xhc3NlcyIsImUiLCJ0YXJnZXQiLCJyYW5nZSIsIm1hcCIsInYiLCJjaGVja1NhbXBsZUFuc3dlciIsInNhbXBsZUFuc3dlciIsIlBvaW50Q29uZmlnIiwicG9pbnRDb25maWciLCJyb3ciLCJkaXNwbGF5Iiwid2lkdGgiLCJwb3NpdGlvbiIsImVkaXRvciIsImJhY2tncm91bmRDb2xvciIsImRyYWdJbmRpY2F0b3IiLCJwYWRkaW5nVG9wIiwiY29sb3IiLCJncmV5IiwicG9pbnRzTGFiZWwiLCJwYWRkaW5nQm90dG9tIiwidGV4dFRyYW5zZm9ybSIsInNhbXBsZUFuc3dlcnNFZGl0b3IiLCJwYWRkaW5nTGVmdCIsInBvaW50TWVudSIsInJpZ2h0IiwiY29udGVudCIsInNob3dTYW1wbGVBbnN3ZXIiLCJpY29uIiwib25NZW51Q2hhbmdlIiwib25TYW1wbGVDaGFuZ2UiLCJSYXdBdXRob3JpbmciLCJkZXN0aW5hdGlvbiIsInNvdXJjZSIsImluZGV4IiwibWF4UG9pbnRzIiwiY3VycmVudE1heCIsImxlbmd0aCIsInRpbWVzIiwiY29uY2F0IiwidGFrZVJpZ2h0IiwidHlwZSIsIml0ZW1zIiwiY2xpY2tlZEl0ZW0iLCJjaGFuZ2VDb250ZW50IiwiY2xhc3NOYW1lIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJjb25zb2xlIiwid2FybiIsImNsYXNzTmFtZXMiLCJydWJyaWNUaXRsZSIsImNoYW5nZU1heFBvaW50cyIsImV4Y2x1ZGVaZXJvcyIsImNvbnRhaW5lciIsImRyYWdFbmQiLCJwcm92aWRlZCIsImRyb3BwYWJsZVByb3BzIiwiaW5uZXJSZWYiLCJwIiwic2hvdWxkUmVuZGVyUG9pbnQiLCJ0b1N0cmluZyIsImNvbmZpZ0hvbGRlciIsImRyYWdnYWJsZVByb3BzIiwiZHJhZ0hhbmRsZVByb3BzIiwib25Qb2ludE1lbnVDaGFuZ2UiLCJwbGFjZWhvbGRlciIsIlJlYWN0IiwiQ29tcG9uZW50Iiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJzdHlsZXMiLCJib3JkZXJXaWR0aCIsImJvcmRlclN0eWxlIiwiYm9yZGVyQ29sb3IiLCJwYWRkaW5nIiwiU3R5bGVkUmF3QXV0aG9yaW5nIiwiUmV2ZXJzZSIsInJldmVyc2UiLCJwcm9wVHlwZXMiLCJnZXRJbmRleCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hdXRob3JpbmcuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBPdXRsaW5lZElucHV0IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL091dGxpbmVkSW5wdXQnO1xuaW1wb3J0IElucHV0TGFiZWwgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvSW5wdXRMYWJlbCc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1NlbGVjdCc7XG5pbXBvcnQgRm9ybUNvbnRyb2wgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRm9ybUNvbnRyb2wnO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL01lbnVJdGVtJztcbmltcG9ydCB0aW1lcyBmcm9tICdsb2Rhc2gvdGltZXMnO1xuaW1wb3J0IENoZWNrYm94IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0NoZWNrYm94JztcbmltcG9ydCBGb3JtR3JvdXAgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRm9ybUdyb3VwJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0Zvcm1Db250cm9sTGFiZWwnO1xuaW1wb3J0IGdyZXkgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvY29sb3JzL2dyZXknO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVHlwb2dyYXBoeSc7XG5pbXBvcnQgRHJhZ0luZGljYXRvciBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRHJhZ0luZGljYXRvcic7XG5pbXBvcnQgRWRpdGFibGVIdG1sIGZyb20gJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwnO1xuaW1wb3J0IHsgRHJhZ0Ryb3BDb250ZXh0LCBEcm9wcGFibGUsIERyYWdnYWJsZSB9IGZyb20gJ3JlYWN0LWJlYXV0aWZ1bC1kbmQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0YWtlUmlnaHQgZnJvbSAnbG9kYXNoL3Rha2VSaWdodCc7XG5pbXBvcnQgUG9pbnRNZW51IGZyb20gJy4vcG9pbnQtbWVudSc7XG5cbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gvcmFuZ2UnO1xuY29uc3QgbG9nID0gZGVidWcoJ3BpZS1saWI6cnVicmljOmF1dGhvcmluZycpO1xuXG5jb25zdCByZW9yZGVyID0gKGxpc3QsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IEFycmF5LmZyb20obGlzdCk7XG4gIGNvbnN0IFtyZW1vdmVkXSA9IHJlc3VsdC5zcGxpY2Uoc3RhcnRJbmRleCwgMSk7XG5cbiAgcmVzdWx0LnNwbGljZShlbmRJbmRleCwgMCwgcmVtb3ZlZCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBSdWJyaWNUeXBlID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgZXhjbHVkZVplcm86IFByb3BUeXBlcy5ib29sLFxuICBwb2ludHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICBzYW1wbGVBbnN3ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKVxufSk7XG5cbmNvbnN0IE1heFBvaW50cyA9IHdpdGhTdHlsZXModGhlbWUgPT4gKHtcbiAgZm9ybUNvbnRyb2w6IHtcbiAgICBtaW5XaWR0aDogJzEyMHB4JyxcbiAgICBtYXJnaW46IHRoZW1lLnNwYWNpbmcudW5pdFxuICB9XG59KSkocHJvcHMgPT4ge1xuICBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSwgbWF4LCBjbGFzc2VzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxGb3JtQ29udHJvbCBjbGFzc05hbWU9e2NsYXNzZXMuZm9ybUNvbnRyb2x9IHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgPElucHV0TGFiZWwgd2lkdGg9ezEwMH0gaHRtbEZvcj1cIi4uLlwiPlxuICAgICAgICBNYXggUG9pbnRzXG4gICAgICA8L0lucHV0TGFiZWw+XG4gICAgICA8U2VsZWN0XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgb25DaGFuZ2U9e2UgPT4gb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICBpbnB1dD17PE91dGxpbmVkSW5wdXQgbGFiZWxXaWR0aD17ODB9IC8+fVxuICAgICAgPlxuICAgICAgICB7cmFuZ2UoMSwgbWF4KS5tYXAodiA9PiAoXG4gICAgICAgICAgPE1lbnVJdGVtIGtleT17YCR7dn1gfSB2YWx1ZT17dn0+XG4gICAgICAgICAgICB7dn1cbiAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvU2VsZWN0PlxuICAgIDwvRm9ybUNvbnRyb2w+XG4gICk7XG59KTtcblxuLy8gaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgJ251bGwnLCB0aGUgU2FtcGxlIEFuc3dlciBpbnB1dCBmaWVsZCBmb3IgdGhhdCBwb2ludCB3aWxsIG5vdCBiZSBkaXNwYWx5ZWRcbi8vIGlmIHRoZSB2YWx1ZSBpcyAnJywgdGhlIFNhbXBsZSBBbnN3ZXIgaW5wdXQgZmllbGQgd2lsbCBiZSBlbXB0eVxuY29uc3QgY2hlY2tTYW1wbGVBbnN3ZXIgPSBzYW1wbGVBbnN3ZXIgPT4gc2FtcGxlQW5zd2VyID09PSBudWxsIHx8IHNhbXBsZUFuc3dlciA9PT0gJ251bGwnO1xuXG5leHBvcnQgY29uc3QgUG9pbnRDb25maWcgPSB3aXRoU3R5bGVzKHRoZW1lID0+ICh7XG4gIHBvaW50Q29uZmlnOiB7fSxcbiAgcm93OiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgfSxcbiAgZWRpdG9yOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZSAhaW1wb3J0YW50J1xuICB9LFxuICBkcmFnSW5kaWNhdG9yOiB7XG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIGNvbG9yOiBncmV5WzUwMF1cbiAgfSxcbiAgcG9pbnRzTGFiZWw6IHtcbiAgICBjb2xvcjogZ3JleVs1MDBdLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xuICB9LFxuICBzYW1wbGVBbnN3ZXJzRWRpdG9yOiB7XG4gICAgcGFkZGluZ0xlZnQ6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDNcbiAgfSxcbiAgcG9pbnRNZW51OiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgcmlnaHQ6IDBcbiAgfVxufSkpKHByb3BzID0+IHtcbiAgY29uc3QgeyBwb2ludHMsIGNvbnRlbnQsIGNsYXNzZXMsIHNhbXBsZUFuc3dlciB9ID0gcHJvcHM7XG4gIGNvbnN0IHBvaW50c0xhYmVsID0gYCR7cG9pbnRzfSAke3BvaW50cyA8PSAxID8gJ3B0JyA6ICdwdHMnfWA7XG4gIGNvbnN0IHNob3dTYW1wbGVBbnN3ZXIgPSBjaGVja1NhbXBsZUFuc3dlcihzYW1wbGVBbnN3ZXIpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucG9pbnRDb25maWd9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cIm92ZXJsaW5lXCIgY2xhc3NOYW1lPXtjbGFzc2VzLnBvaW50c0xhYmVsfT5cbiAgICAgICAge3BvaW50c0xhYmVsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucm93fT5cbiAgICAgICAgPERyYWdJbmRpY2F0b3IgY2xhc3NOYW1lPXtjbGFzc2VzLmRyYWdJbmRpY2F0b3J9IC8+XG4gICAgICAgIDxFZGl0YWJsZUh0bWwgY2xhc3NOYW1lPXtjbGFzc2VzLmVkaXRvcn0gbWFya3VwPXtjb250ZW50fSBvbkNoYW5nZT17cHJvcHMub25DaGFuZ2V9IC8+XG4gICAgICAgIDxQb2ludE1lbnVcbiAgICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgICBpY29uOiBjbGFzc2VzLnBvaW50TWVudVxuICAgICAgICAgIH19XG4gICAgICAgICAgc2hvd1NhbXBsZUFuc3dlcj17c2hvd1NhbXBsZUFuc3dlcn1cbiAgICAgICAgICBvbkNoYW5nZT17cHJvcHMub25NZW51Q2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICB7IXNob3dTYW1wbGVBbnN3ZXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5zYW1wbGVBbnN3ZXJzRWRpdG9yfT5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwib3ZlcmxpbmVcIiBjbGFzc05hbWU9e2NsYXNzZXMuZHJhZ0luZGljYXRvcn0+XG4gICAgICAgICAgICBTYW1wbGUgUmVzcG9uc2VcbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmVkaXRvcn1cbiAgICAgICAgICAgIG1hcmt1cD17c2FtcGxlQW5zd2VyfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3Byb3BzLm9uU2FtcGxlQ2hhbmdlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgUmF3QXV0aG9yaW5nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHZhbHVlOiBSdWJyaWNUeXBlLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuY1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7fTtcblxuICBkcmFnRW5kID0gcmVzdWx0ID0+IHtcbiAgICBpZiAoIXJlc3VsdC5kZXN0aW5hdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgdmFsdWUsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgcG9pbnRzID0gcmVvcmRlcih2YWx1ZS5wb2ludHMsIHJlc3VsdC5zb3VyY2UuaW5kZXgsIHJlc3VsdC5kZXN0aW5hdGlvbi5pbmRleCk7XG4gICAgY29uc3Qgc2FtcGxlQW5zd2VycyA9IHJlb3JkZXIoXG4gICAgICB2YWx1ZS5zYW1wbGVBbnN3ZXJzLFxuICAgICAgcmVzdWx0LnNvdXJjZS5pbmRleCxcbiAgICAgIHJlc3VsdC5kZXN0aW5hdGlvbi5pbmRleFxuICAgICk7XG5cbiAgICBvbkNoYW5nZSh7IC4uLnZhbHVlLCBwb2ludHMsIHNhbXBsZUFuc3dlcnMgfSk7XG4gIH07XG5cbiAgY2hhbmdlTWF4UG9pbnRzID0gbWF4UG9pbnRzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjdXJyZW50TWF4ID0gdmFsdWUucG9pbnRzLmxlbmd0aCAtIDE7XG5cbiAgICBsb2coJ2N1cnJlbnQnLCBjdXJyZW50TWF4LCAnbmV3OiAnLCBtYXhQb2ludHMpO1xuXG4gICAgbGV0IHBvaW50cywgc2FtcGxlQW5zd2VycztcbiAgICBpZiAobWF4UG9pbnRzID4gY3VycmVudE1heCkge1xuICAgICAgcG9pbnRzID0gdGltZXMobWF4UG9pbnRzIC0gY3VycmVudE1heClcbiAgICAgICAgLm1hcCgoKSA9PiAnJylcbiAgICAgICAgLmNvbmNhdCh2YWx1ZS5wb2ludHMpO1xuICAgICAgc2FtcGxlQW5zd2VycyA9IHRpbWVzKG1heFBvaW50cyAtIGN1cnJlbnRNYXgpXG4gICAgICAgIC5tYXAoKCkgPT4gbnVsbClcbiAgICAgICAgLmNvbmNhdCh2YWx1ZS5zYW1wbGVBbnN3ZXJzKTtcbiAgICB9XG5cbiAgICBpZiAobWF4UG9pbnRzIDwgY3VycmVudE1heCkge1xuICAgICAgbG9nKCdsZXNzIHRoYW4nKTtcbiAgICAgIHBvaW50cyA9IHRha2VSaWdodCh2YWx1ZS5wb2ludHMsIG1heFBvaW50cyArIDEpO1xuICAgICAgc2FtcGxlQW5zd2VycyA9IHRha2VSaWdodCh2YWx1ZS5zYW1wbGVBbnN3ZXJzLCBtYXhQb2ludHMgKyAxKTtcbiAgICB9XG5cbiAgICBpZiAocG9pbnRzKSB7XG4gICAgICBvbkNoYW5nZSh7IC4uLnZhbHVlLCBwb2ludHMsIHNhbXBsZUFuc3dlcnMgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNoYW5nZUNvbnRlbnQgPSAoaW5kZXgsIGNvbnRlbnQsIHR5cGUpID0+IHtcbiAgICAvLyB0eXBlIGNvdWxkIGJlICdwb2ludHMnIG9yICdzYW1wbGVBbnN3ZXJzJ1xuICAgIGxvZyhgY2hhbmdlTW9kZWxbJHt0eXBlfV06YCwgaW5kZXgsIGNvbnRlbnQpO1xuXG4gICAgaWYgKHR5cGUgIT09ICdwb2ludHMnICYmIHR5cGUgIT09ICdzYW1wbGVBbnN3ZXJzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgdmFsdWUsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGl0ZW1zID0gdmFsdWVbdHlwZV0gJiYgQXJyYXkuZnJvbSh2YWx1ZVt0eXBlXSk7XG5cbiAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEsIGNvbnRlbnQpO1xuICAgIGxvZyhgY2hhbmdlTW9kZWxbJHt0eXBlfV06YCwgaXRlbXMpO1xuXG4gICAgb25DaGFuZ2UoeyAuLi52YWx1ZSwgW3R5cGVdOiBpdGVtcyB9KTtcbiAgfTtcblxuICBleGNsdWRlWmVyb3MgPSAoKSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSwgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBvbkNoYW5nZSh7IC4uLnZhbHVlLCBleGNsdWRlWmVybzogIXZhbHVlLmV4Y2x1ZGVaZXJvIH0pO1xuICB9O1xuXG4gIHNob3VsZFJlbmRlclBvaW50ID0gKGluZGV4LCB2YWx1ZSkgPT4ge1xuICAgIGlmICghdmFsdWUuZXhjbHVkZVplcm8pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaW5kZXggPCB2YWx1ZS5wb2ludHMubGVuZ3RoIC0gMSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IHZhbHVlLnBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9O1xuXG4gIG9uUG9pbnRNZW51Q2hhbmdlID0gKGluZGV4LCBjbGlja2VkSXRlbSkgPT4ge1xuICAgIGlmIChjbGlja2VkSXRlbSA9PT0gJ3NhbXBsZScpIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBzYW1wbGVBbnN3ZXJzID0gQXJyYXkuZnJvbSh2YWx1ZS5zYW1wbGVBbnN3ZXJzIHx8IFtdKTtcblxuICAgICAgaWYgKGNoZWNrU2FtcGxlQW5zd2VyKHNhbXBsZUFuc3dlcnNbaW5kZXhdKSkge1xuICAgICAgICAvLyBhbiBlbXB0eSBzdHJpbmcgd2lsbCBkaXNwbGF5IGFuIGVtcHR5IFNhbXBsZSBBbnN3ZXIgaW5wdXQgZmllbGRcbiAgICAgICAgdGhpcy5jaGFuZ2VDb250ZW50KGluZGV4LCAnJywgJ3NhbXBsZUFuc3dlcnMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHdoZW4gdGhlIGNvbnRlbnQgaXMgbnVsbCBvciAnbnVsbCcsIHRoZSBTYW1wbGUgQW5zd2VyIGlucHV0IGZpZWxkIHdpbGwgbm90IGJlIGRpc3BsYXllZFxuICAgICAgICB0aGlzLmNoYW5nZUNvbnRlbnQoaW5kZXgsIG51bGwsICdzYW1wbGVBbnN3ZXJzJyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzZXMsIGNsYXNzTmFtZSwgdmFsdWUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAodmFsdWUgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlLm1heFBvaW50cykpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oJ21heFBvaW50cyBpcyBkZXByZWNhdGVkIC0gcmVtb3ZlIGZyb20gbW9kZWwnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5jbGFzcywgY2xhc3NOYW1lKX0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGNsYXNzTmFtZT17Y2xhc3Nlcy5ydWJyaWNUaXRsZX0+XG4gICAgICAgICAgUnVicmljXG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPEZvcm1Hcm91cCByb3c+XG4gICAgICAgICAgPE1heFBvaW50cyBtYXg9ezEwfSB2YWx1ZT17dmFsdWUucG9pbnRzLmxlbmd0aCAtIDF9IG9uQ2hhbmdlPXt0aGlzLmNoYW5nZU1heFBvaW50c30gLz5cbiAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgbGFiZWw9XCJFeGNsdWRlIHplcm9zXCJcbiAgICAgICAgICAgIGNvbnRyb2w9ezxDaGVja2JveCBjaGVja2VkPXt2YWx1ZS5leGNsdWRlWmVyb30gb25DaGFuZ2U9e3RoaXMuZXhjbHVkZVplcm9zfSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVyfT5cbiAgICAgICAgICA8RHJhZ0Ryb3BDb250ZXh0IG9uRHJhZ0VuZD17dGhpcy5kcmFnRW5kfT5cbiAgICAgICAgICAgIDxEcm9wcGFibGUgZHJvcHBhYmxlSWQ9XCJkcm9wcGFibGVcIj5cbiAgICAgICAgICAgICAge3Byb3ZpZGVkID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm92aWRlZC5kcm9wcGFibGVQcm9wc30gcmVmPXtwcm92aWRlZC5pbm5lclJlZn0+XG4gICAgICAgICAgICAgICAgICB7dmFsdWUucG9pbnRzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHAsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkUmVuZGVyUG9pbnQoaW5kZXgsIHZhbHVlKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJhZ2dhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7cC5wb2ludHN9LSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGVJZD17aW5kZXgudG9TdHJpbmcoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3ZpZGVkID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY29uZmlnSG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtwcm92aWRlZC5pbm5lclJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm92aWRlZC5kcmFnZ2FibGVQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm92aWRlZC5kcmFnSGFuZGxlUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvaW50Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cz17dmFsdWUucG9pbnRzLmxlbmd0aCAtIDEgLSBpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD17cH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQW5zd2VyPXt2YWx1ZS5zYW1wbGVBbnN3ZXJzICYmIHZhbHVlLnNhbXBsZUFuc3dlcnNbaW5kZXhdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17Y29udGVudCA9PiB0aGlzLmNoYW5nZUNvbnRlbnQoaW5kZXgsIGNvbnRlbnQsICdwb2ludHMnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TYW1wbGVDaGFuZ2U9e2NvbnRlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNvbnRlbnQoaW5kZXgsIGNvbnRlbnQsICdzYW1wbGVBbnN3ZXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVDaGFuZ2U9e2NsaWNrZWRJdGVtID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblBvaW50TWVudUNoYW5nZShpbmRleCwgY2xpY2tlZEl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0RyYWdnYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3Byb3ZpZGVkLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Ecm9wcGFibGU+XG4gICAgICAgICAgPC9EcmFnRHJvcENvbnRleHQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICBjb250YWluZXI6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGdyZXlbMjAwXSxcbiAgICBib3JkZXJXaWR0aDogMSxcbiAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJDb2xvcjogZ3JleVszMDBdLFxuICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgbWFyZ2luOiB0aGVtZS5zcGFjaW5nLnVuaXRcbiAgfSxcbiAgY29uZmlnSG9sZGVyOiB7XG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdFxuICB9LFxuICBydWJyaWNUaXRsZToge1xuICAgIHBhZGRpbmdMZWZ0OiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgbWFyZ2luOiB0aGVtZS5zcGFjaW5nLnVuaXRcbiAgfVxufSk7XG5cbmNvbnN0IFN0eWxlZFJhd0F1dGhvcmluZyA9IHdpdGhTdHlsZXMoc3R5bGVzKShSYXdBdXRob3JpbmcpO1xuXG5jb25zdCBSZXZlcnNlID0gcHJvcHMgPT4ge1xuICBjb25zdCBwb2ludHMgPSBBcnJheS5mcm9tKHByb3BzLnZhbHVlLnBvaW50cyB8fCBbXSkucmV2ZXJzZSgpO1xuICBsZXQgc2FtcGxlQW5zd2VycyA9IEFycmF5LmZyb20ocHJvcHMudmFsdWUuc2FtcGxlQW5zd2VycyB8fCBbXSkucmV2ZXJzZSgpO1xuXG4gIGlmIChwb2ludHMubGVuZ3RoID4gc2FtcGxlQW5zd2Vycy5sZW5ndGgpIHtcbiAgICBzYW1wbGVBbnN3ZXJzID0gdGltZXMocG9pbnRzLmxlbmd0aCAtIHNhbXBsZUFuc3dlcnMubGVuZ3RoKVxuICAgICAgLm1hcCgoKSA9PiBudWxsKVxuICAgICAgLmNvbmNhdChzYW1wbGVBbnN3ZXJzKTtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0geyAuLi5wcm9wcy52YWx1ZSwgcG9pbnRzLCBzYW1wbGVBbnN3ZXJzIH07XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSB2YWx1ZSA9PiB7XG4gICAgcHJvcHMub25DaGFuZ2Uoe1xuICAgICAgLi4udmFsdWUsXG4gICAgICBwb2ludHM6IEFycmF5LmZyb20odmFsdWUucG9pbnRzIHx8IFtdKS5yZXZlcnNlKCksXG4gICAgICBzYW1wbGVBbnN3ZXJzOiBBcnJheS5mcm9tKHZhbHVlLnNhbXBsZUFuc3dlcnMgfHwgW10pLnJldmVyc2UoKVxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiA8U3R5bGVkUmF3QXV0aG9yaW5nIHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPjtcbn07XG5cblJldmVyc2UucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUnVicmljVHlwZSxcbiAgZ2V0SW5kZXg6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJldmVyc2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7Ozs7O0FBQ0EsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0sMEJBQU4sQ0FBWjs7QUFFQSxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDQyxJQUFELEVBQU9DLFVBQVAsRUFBbUJDLFFBQW5CLEVBQWdDO0VBQzlDLElBQU1DLE1BQU0sR0FBR0MsS0FBSyxDQUFDQyxJQUFOLENBQVdMLElBQVgsQ0FBZjs7RUFDQSxxQkFBa0JHLE1BQU0sQ0FBQ0csTUFBUCxDQUFjTCxVQUFkLEVBQTBCLENBQTFCLENBQWxCO0VBQUE7RUFBQSxJQUFPTSxPQUFQOztFQUVBSixNQUFNLENBQUNHLE1BQVAsQ0FBY0osUUFBZCxFQUF3QixDQUF4QixFQUEyQkssT0FBM0I7RUFFQSxPQUFPSixNQUFQO0FBQ0QsQ0FQRDs7QUFTTyxJQUFNSyxVQUFVLEdBQUdDLHFCQUFBLENBQVVDLEtBQVYsQ0FBZ0I7RUFDeENDLFdBQVcsRUFBRUYscUJBQUEsQ0FBVUcsSUFEaUI7RUFFeENDLE1BQU0sRUFBRUoscUJBQUEsQ0FBVUssT0FBVixDQUFrQkwscUJBQUEsQ0FBVU0sTUFBNUIsQ0FGZ0M7RUFHeENDLGFBQWEsRUFBRVAscUJBQUEsQ0FBVUssT0FBVixDQUFrQkwscUJBQUEsQ0FBVU0sTUFBNUI7QUFIeUIsQ0FBaEIsQ0FBbkI7OztBQU1QLElBQU1FLFNBQVMsR0FBRyxJQUFBQyxrQkFBQSxFQUFX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
404
+ //# sourceMappingURL=authoring.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.js","names":["log","debug","reorder","list","startIndex","endIndex","result","Array","from","splice","removed","RubricType","PropTypes","shape","excludeZero","bool","points","arrayOf","string","sampleAnswers","MaxPoints","withStyles","theme","formControl","minWidth","margin","spacing","unit","props","value","onChange","max","classes","e","target","range","map","v","checkSampleAnswer","sampleAnswer","PointConfig","pointConfig","row","display","width","position","editor","backgroundColor","dragIndicator","paddingTop","color","grey","pointsLabel","paddingBottom","textTransform","sampleAnswersEditor","paddingLeft","pointMenu","right","content","showSampleAnswer","icon","onMenuChange","onSampleChange","RawAuthoring","destination","source","index","maxPoints","currentMax","length","times","concat","takeRight","type","items","clickedItem","changeContent","className","Number","isFinite","console","warn","classNames","rubricTitle","changeMaxPoints","excludeZeros","container","dragEnd","provided","droppableProps","innerRef","p","shouldRenderPoint","toString","configHolder","draggableProps","dragHandleProps","onPointMenuChange","placeholder","React","Component","object","isRequired","func","styles","borderWidth","borderStyle","borderColor","padding","StyledRawAuthoring","Reverse","reverse","propTypes","getIndex"],"sources":["../src/authoring.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport FormControl from '@material-ui/core/FormControl';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport times from 'lodash/times';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport grey from '@material-ui/core/colors/grey';\nimport Typography from '@material-ui/core/Typography';\nimport DragIndicator from '@material-ui/icons/DragIndicator';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\nimport debug from 'debug';\nimport takeRight from 'lodash/takeRight';\nimport PointMenu from './point-menu';\n\nimport range from 'lodash/range';\nconst log = debug('pie-lib:rubric:authoring');\n\nconst reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n\n result.splice(endIndex, 0, removed);\n\n return result;\n};\n\nexport const RubricType = PropTypes.shape({\n excludeZero: PropTypes.bool,\n points: PropTypes.arrayOf(PropTypes.string),\n sampleAnswers: PropTypes.arrayOf(PropTypes.string)\n});\n\nconst MaxPoints = withStyles(theme => ({\n formControl: {\n minWidth: '120px',\n margin: theme.spacing.unit\n }\n}))(props => {\n const { value, onChange, max, classes } = props;\n\n return (\n <FormControl className={classes.formControl} variant=\"outlined\">\n <InputLabel width={100} htmlFor=\"...\">\n Max Points\n </InputLabel>\n <Select\n value={value}\n onChange={e => onChange(e.target.value)}\n input={<OutlinedInput labelWidth={80} />}\n >\n {range(1, max).map(v => (\n <MenuItem key={`${v}`} value={v}>\n {v}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n});\n\n// if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed\n// if the value is '', the Sample Answer input field will be empty\nconst checkSampleAnswer = sampleAnswer => sampleAnswer === null || sampleAnswer === 'null';\n\nexport const PointConfig = withStyles(theme => ({\n pointConfig: {},\n row: {\n display: 'flex',\n width: '100%',\n position: 'relative'\n },\n editor: {\n width: '100%',\n backgroundColor: 'white !important'\n },\n dragIndicator: {\n paddingTop: theme.spacing.unit,\n color: grey[500]\n },\n pointsLabel: {\n color: grey[500],\n paddingBottom: theme.spacing.unit,\n textTransform: 'uppercase'\n },\n sampleAnswersEditor: {\n paddingLeft: theme.spacing.unit * 3\n },\n pointMenu: {\n position: 'absolute',\n right: 0\n }\n}))(props => {\n const { points, content, classes, sampleAnswer } = props;\n const pointsLabel = `${points} ${points <= 1 ? 'pt' : 'pts'}`;\n const showSampleAnswer = checkSampleAnswer(sampleAnswer);\n\n return (\n <div className={classes.pointConfig}>\n <Typography variant=\"overline\" className={classes.pointsLabel}>\n {pointsLabel}\n </Typography>\n <div className={classes.row}>\n <DragIndicator className={classes.dragIndicator} />\n <EditableHtml className={classes.editor} markup={content} onChange={props.onChange} />\n <PointMenu\n classes={{\n icon: classes.pointMenu\n }}\n showSampleAnswer={showSampleAnswer}\n onChange={props.onMenuChange}\n />\n </div>\n {!showSampleAnswer && (\n <div className={classes.sampleAnswersEditor}>\n <Typography variant=\"overline\" className={classes.dragIndicator}>\n Sample Response\n </Typography>\n <EditableHtml\n className={classes.editor}\n markup={sampleAnswer}\n onChange={props.onSampleChange}\n />\n </div>\n )}\n </div>\n );\n});\n\nexport class RawAuthoring extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n value: RubricType,\n onChange: PropTypes.func\n };\n\n static defaultProps = {};\n\n dragEnd = result => {\n if (!result.destination) {\n return;\n }\n\n const { value, onChange } = this.props;\n\n const points = reorder(value.points, result.source.index, result.destination.index);\n const sampleAnswers = reorder(\n value.sampleAnswers,\n result.source.index,\n result.destination.index\n );\n\n onChange({ ...value, points, sampleAnswers });\n };\n\n changeMaxPoints = maxPoints => {\n const { value, onChange } = this.props;\n const currentMax = value.points.length - 1;\n\n log('current', currentMax, 'new: ', maxPoints);\n\n let points, sampleAnswers;\n if (maxPoints > currentMax) {\n points = times(maxPoints - currentMax)\n .map(() => '')\n .concat(value.points);\n sampleAnswers = times(maxPoints - currentMax)\n .map(() => null)\n .concat(value.sampleAnswers);\n }\n\n if (maxPoints < currentMax) {\n log('less than');\n points = takeRight(value.points, maxPoints + 1);\n sampleAnswers = takeRight(value.sampleAnswers, maxPoints + 1);\n }\n\n if (points) {\n onChange({ ...value, points, sampleAnswers });\n }\n };\n\n changeContent = (index, content, type) => {\n // type could be 'points' or 'sampleAnswers'\n log(`changeModel[${type}]:`, index, content);\n\n if (type !== 'points' && type !== 'sampleAnswers') {\n return;\n }\n\n const { value, onChange } = this.props;\n const items = value[type] && Array.from(value[type]);\n\n items.splice(index, 1, content);\n log(`changeModel[${type}]:`, items);\n\n onChange({ ...value, [type]: items });\n };\n\n excludeZeros = () => {\n const { value, onChange } = this.props;\n\n onChange({ ...value, excludeZero: !value.excludeZero });\n };\n\n shouldRenderPoint = (index, value) => {\n if (!value.excludeZero) {\n return true;\n } else {\n if (index < value.points.length - 1) {\n return true;\n } else if (index === value.points.length - 1) {\n return false;\n }\n\n return true;\n }\n };\n\n onPointMenuChange = (index, clickedItem) => {\n if (clickedItem === 'sample') {\n const { value } = this.props;\n const sampleAnswers = Array.from(value.sampleAnswers || []);\n\n if (checkSampleAnswer(sampleAnswers[index])) {\n // an empty string will display an empty Sample Answer input field\n this.changeContent(index, '', 'sampleAnswers');\n } else {\n // when the content is null or 'null', the Sample Answer input field will not be displayed\n this.changeContent(index, null, 'sampleAnswers');\n }\n }\n };\n\n render() {\n const { classes, className, value } = this.props;\n\n if (value && Number.isFinite(value.maxPoints)) {\n // eslint-disable-next-line no-console\n console.warn('maxPoints is deprecated - remove from model');\n }\n\n return (\n <div className={classNames(classes.class, className)}>\n <Typography variant=\"h5\" className={classes.rubricTitle}>\n Rubric\n </Typography>\n <FormGroup row>\n <MaxPoints max={10} value={value.points.length - 1} onChange={this.changeMaxPoints} />\n <FormControlLabel\n label=\"Exclude zeros\"\n control={<Checkbox checked={value.excludeZero} onChange={this.excludeZeros} />}\n />\n </FormGroup>\n <div className={classes.container}>\n <DragDropContext onDragEnd={this.dragEnd}>\n <Droppable droppableId=\"droppable\">\n {provided => (\n <div {...provided.droppableProps} ref={provided.innerRef}>\n {value.points.map(\n (p, index) =>\n this.shouldRenderPoint(index, value) && (\n <Draggable\n key={`${p.points}-${index}`}\n index={index}\n draggableId={index.toString()}\n >\n {provided => (\n <div\n className={classes.configHolder}\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <PointConfig\n points={value.points.length - 1 - index}\n content={p}\n sampleAnswer={value.sampleAnswers && value.sampleAnswers[index]}\n onChange={content => this.changeContent(index, content, 'points')}\n onSampleChange={content =>\n this.changeContent(index, content, 'sampleAnswers')\n }\n onMenuChange={clickedItem =>\n this.onPointMenuChange(index, clickedItem)\n }\n />\n </div>\n )}\n </Draggable>\n )\n )}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n container: {\n backgroundColor: grey[200],\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: grey[300],\n padding: theme.spacing.unit * 2,\n margin: theme.spacing.unit\n },\n configHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit\n },\n rubricTitle: {\n paddingLeft: theme.spacing.unit,\n margin: theme.spacing.unit\n }\n});\n\nconst StyledRawAuthoring = withStyles(styles)(RawAuthoring);\n\nconst Reverse = props => {\n const points = Array.from(props.value.points || []).reverse();\n let sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();\n\n if (points.length > sampleAnswers.length) {\n sampleAnswers = times(points.length - sampleAnswers.length)\n .map(() => null)\n .concat(sampleAnswers);\n }\n\n const value = { ...props.value, points, sampleAnswers };\n\n const onChange = value => {\n props.onChange({\n ...value,\n points: Array.from(value.points || []).reverse(),\n sampleAnswers: Array.from(value.sampleAnswers || []).reverse()\n });\n };\n\n return <StyledRawAuthoring value={value} onChange={onChange} />;\n};\n\nReverse.propTypes = {\n value: RubricType,\n getIndex: PropTypes.func,\n onChange: PropTypes.func\n};\n\nexport default Reverse;\n"],"mappings":"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"}
1
+ {"version":3,"file":"authoring.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_classnames","_OutlinedInput","_InputLabel","_Select","_FormControl","_MenuItem","_times","_Checkbox","_FormGroup","_FormControlLabel","_grey","_Typography","_DragIndicator","_editableHtml","_reactBeautifulDnd","_debug","_takeRight","_pointMenu","_range","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","log","debug","reorder","list","startIndex","endIndex","Array","from","_result$splice","splice","_result$splice2","_slicedToArray2","removed","RubricType","PropTypes","shape","excludeZero","bool","points","arrayOf","string","sampleAnswers","maxPoints","number","exports","MaxPoints","withStyles","theme","formControl","minWidth","margin","spacing","unit","props","value","onChange","max","classes","createElement","className","variant","width","htmlFor","input","labelWidth","range","map","v","concat","checkSampleAnswer","sampleAnswer","PointConfig","pointConfig","row","display","position","editor","backgroundColor","palette","common","white","dragIndicator","paddingTop","color","grey","pointsLabel","paddingBottom","textTransform","sampleAnswersEditor","paddingLeft","pointMenu","right","content","_props$mathMlOptions","mathMlOptions","showSampleAnswer","markup","icon","onMenuChange","onSampleChange","RawAuthoring","_React$Component","_inherits2","_super","_this","_classCallCheck2","_len","args","_key","_assertThisInitialized2","destination","_this$props","index","_this$props2","currentMax","times","takeRight","type","_this$props3","items","_this$props4","clickedItem","changeContent","_createClass2","render","_this2","_this$props5","_this$props5$mathMlOp","_ref","_ref$excludeZeroEnabl","excludeZeroEnabled","_ref$maxPointsEnabled","maxPointsEnabled","Number","isFinite","console","warn","classNames","rubricTitle","changeMaxPoints","label","control","checked","excludeZeros","container","DragDropContext","onDragEnd","dragEnd","Droppable","droppableId","provided","_extends2","droppableProps","ref","innerRef","p","shouldRenderPoint","Draggable","draggableId","toString","configHolder","draggableProps","dragHandleProps","onPointMenuChange","placeholder","React","Component","isRequired","func","styles","borderWidth","borderStyle","borderColor","padding","StyledRawAuthoring","Reverse","reverse","propTypes","getIndex","_default"],"sources":["../src/authoring.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport FormControl from '@material-ui/core/FormControl';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport times from 'lodash/times';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport grey from '@material-ui/core/colors/grey';\nimport Typography from '@material-ui/core/Typography';\nimport DragIndicator from '@material-ui/icons/DragIndicator';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\nimport debug from 'debug';\nimport takeRight from 'lodash/takeRight';\nimport PointMenu from './point-menu';\n\nimport range from 'lodash/range';\nconst log = debug('pie-lib:rubric:authoring');\n\nconst reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n\n result.splice(endIndex, 0, removed);\n\n return result;\n};\n\nexport const RubricType = PropTypes.shape({\n excludeZero: PropTypes.bool,\n points: PropTypes.arrayOf(PropTypes.string),\n sampleAnswers: PropTypes.arrayOf(PropTypes.string),\n maxPoints: PropTypes.number,\n});\n\nconst MaxPoints = withStyles((theme) => ({\n formControl: {\n minWidth: '120px',\n margin: theme.spacing.unit,\n },\n}))((props) => {\n const { value, onChange, max, classes } = props;\n\n return (\n <FormControl className={classes.formControl} variant=\"outlined\">\n <InputLabel width={100} htmlFor=\"...\">\n Max Points\n </InputLabel>\n <Select value={value} onChange={(e) => onChange(e.target.value)} input={<OutlinedInput labelWidth={80} />}>\n {range(1, max).map((v) => (\n <MenuItem key={`${v}`} value={v}>\n {v}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n});\n\n// if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed\n// if the value is '', the Sample Answer input field will be empty\nconst checkSampleAnswer = (sampleAnswer) => sampleAnswer === null || sampleAnswer === 'null';\n\nexport const PointConfig = withStyles((theme) => ({\n pointConfig: {},\n row: {\n display: 'flex',\n width: '100%',\n position: 'relative',\n },\n editor: {\n width: '100%',\n backgroundColor: `${theme.palette.common.white} !important`,\n },\n dragIndicator: {\n paddingTop: theme.spacing.unit,\n color: grey[500],\n },\n pointsLabel: {\n color: grey[500],\n paddingBottom: theme.spacing.unit,\n textTransform: 'uppercase',\n },\n sampleAnswersEditor: {\n paddingLeft: theme.spacing.unit * 3,\n },\n pointMenu: {\n position: 'absolute',\n right: 0,\n },\n}))((props) => {\n const { points, content, classes, sampleAnswer, mathMlOptions = {} } = props;\n const pointsLabel = `${points} ${points <= 1 ? 'pt' : 'pts'}`;\n const showSampleAnswer = checkSampleAnswer(sampleAnswer);\n\n return (\n <div className={classes.pointConfig}>\n <Typography variant=\"overline\" className={classes.pointsLabel}>\n {pointsLabel}\n </Typography>\n\n <div className={classes.row}>\n <DragIndicator className={classes.dragIndicator} />\n <EditableHtml\n className={classes.editor}\n markup={content}\n onChange={props.onChange}\n mathMlOptions={mathMlOptions}\n />\n <PointMenu\n classes={{\n icon: classes.pointMenu,\n }}\n showSampleAnswer={showSampleAnswer}\n onChange={props.onMenuChange}\n />\n </div>\n\n {!showSampleAnswer && (\n <div className={classes.sampleAnswersEditor}>\n <Typography variant=\"overline\" className={classes.dragIndicator}>\n Sample Response\n </Typography>\n <EditableHtml\n className={classes.editor}\n markup={sampleAnswer}\n onChange={props.onSampleChange}\n mathMlOptions={mathMlOptions}\n />\n </div>\n )}\n </div>\n );\n});\n\nexport class RawAuthoring extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n value: RubricType,\n onChange: PropTypes.func,\n };\n\n static defaultProps = {};\n\n dragEnd = (result) => {\n if (!result.destination) {\n return;\n }\n\n const { value, onChange } = this.props;\n\n const points = reorder(value.points, result.source.index, result.destination.index);\n const sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);\n\n onChange({ ...value, points, sampleAnswers });\n };\n\n changeMaxPoints = (maxPoints) => {\n const { value, onChange } = this.props;\n const currentMax = value.points.length - 1;\n\n log('current', currentMax, 'new: ', maxPoints);\n\n let points, sampleAnswers;\n if (maxPoints > currentMax) {\n points = times(maxPoints - currentMax)\n .map(() => '')\n .concat(value.points);\n sampleAnswers = times(maxPoints - currentMax)\n .map(() => null)\n .concat(value.sampleAnswers);\n }\n\n if (maxPoints < currentMax) {\n log('less than');\n points = takeRight(value.points, maxPoints + 1);\n sampleAnswers = takeRight(value.sampleAnswers, maxPoints + 1);\n }\n\n if (points) {\n onChange({ ...value, points, sampleAnswers });\n }\n };\n\n changeContent = (index, content, type) => {\n // type could be 'points' or 'sampleAnswers'\n log(`changeModel[${type}]:`, index, content);\n\n if (type !== 'points' && type !== 'sampleAnswers') {\n return;\n }\n\n const { value, onChange } = this.props;\n const items = value[type] && Array.from(value[type]);\n\n items.splice(index, 1, content);\n log(`changeModel[${type}]:`, items);\n\n onChange({ ...value, [type]: items });\n };\n\n excludeZeros = () => {\n const { value, onChange } = this.props;\n\n onChange({ ...value, excludeZero: !value.excludeZero });\n };\n\n shouldRenderPoint = (index, value) => {\n if (!value.excludeZero) {\n return true;\n } else {\n if (index < value.points.length - 1) {\n return true;\n } else if (index === value.points.length - 1) {\n return false;\n }\n\n return true;\n }\n };\n\n onPointMenuChange = (index, clickedItem) => {\n if (clickedItem === 'sample') {\n const { value } = this.props;\n const sampleAnswers = Array.from(value.sampleAnswers || []);\n\n if (checkSampleAnswer(sampleAnswers[index])) {\n // an empty string will display an empty Sample Answer input field\n this.changeContent(index, '', 'sampleAnswers');\n } else {\n // when the content is null or 'null', the Sample Answer input field will not be displayed\n this.changeContent(index, null, 'sampleAnswers');\n }\n }\n };\n\n render() {\n const { classes, className, value, mathMlOptions = {} } = this.props;\n let { excludeZeroEnabled = true, maxPointsEnabled = true } = value || {};\n\n if (value && Number.isFinite(value.maxPoints)) {\n // eslint-disable-next-line no-console\n console.warn('maxPoints is deprecated - remove from model');\n }\n\n return (\n <div className={classNames(classes.class, className)}>\n <Typography variant=\"h5\" className={classes.rubricTitle}>\n Rubric\n </Typography>\n <FormGroup row>\n {maxPointsEnabled && <MaxPoints max={10} value={value.points.length - 1} onChange={this.changeMaxPoints} />}\n {excludeZeroEnabled && (\n <FormControlLabel\n label=\"Exclude zeros\"\n control={<Checkbox checked={value.excludeZero} onChange={this.excludeZeros} />}\n />\n )}\n </FormGroup>\n\n <div className={classes.container}>\n <DragDropContext onDragEnd={this.dragEnd}>\n <Droppable droppableId=\"droppable\">\n {(provided) => (\n <div {...provided.droppableProps} ref={provided.innerRef}>\n {value.points.map(\n (p, index) =>\n this.shouldRenderPoint(index, value) && (\n <Draggable key={`${p.points}-${index}`} index={index} draggableId={index.toString()}>\n {(provided) => (\n <div\n className={classes.configHolder}\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <PointConfig\n points={value.points.length - 1 - index}\n content={p}\n sampleAnswer={value.sampleAnswers && value.sampleAnswers[index]}\n onChange={(content) => this.changeContent(index, content, 'points')}\n onSampleChange={(content) => this.changeContent(index, content, 'sampleAnswers')}\n onMenuChange={(clickedItem) => this.onPointMenuChange(index, clickedItem)}\n mathMlOptions={mathMlOptions}\n />\n </div>\n )}\n </Draggable>\n ),\n )}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n container: {\n backgroundColor: grey[200],\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: grey[300],\n padding: theme.spacing.unit * 2,\n margin: theme.spacing.unit,\n },\n configHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n },\n rubricTitle: {\n paddingLeft: theme.spacing.unit,\n margin: theme.spacing.unit,\n },\n});\n\nconst StyledRawAuthoring = withStyles(styles)(RawAuthoring);\n\nconst Reverse = (props) => {\n const points = Array.from(props.value.points || []).reverse();\n let sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();\n\n if (points.length > sampleAnswers.length) {\n sampleAnswers = times(points.length - sampleAnswers.length)\n .map(() => null)\n .concat(sampleAnswers);\n }\n\n const value = { ...props.value, points, sampleAnswers };\n\n const onChange = (value) => {\n props.onChange({\n ...value,\n points: Array.from(value.points || []).reverse(),\n sampleAnswers: Array.from(value.sampleAnswers || []).reverse(),\n });\n };\n\n return <StyledRawAuthoring value={value} onChange={onChange} />;\n};\n\nReverse.propTypes = {\n value: RubricType,\n getIndex: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default Reverse;\n"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -12,12 +11,10 @@ Object.defineProperty(exports, "Authoring", {
12
11
  }
13
12
  });
14
13
  exports.RUBRIC_TYPES = void 0;
15
-
16
14
  var _authoring = _interopRequireDefault(require("./authoring"));
17
-
18
15
  var RUBRIC_TYPES = {
19
16
  SIMPLE_RUBRIC: 'simpleRubric',
20
17
  MULTI_TRAIT_RUBRIC: 'multiTraitRubric'
21
18
  };
22
19
  exports.RUBRIC_TYPES = RUBRIC_TYPES;
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSVUJSSUNfVFlQRVMiLCJTSU1QTEVfUlVCUklDIiwiTVVMVElfVFJBSVRfUlVCUklDIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBdXRob3JpbmcgZnJvbSAnLi9hdXRob3JpbmcnO1xuXG5jb25zdCBSVUJSSUNfVFlQRVMgPSB7XG4gIFNJTVBMRV9SVUJSSUM6ICdzaW1wbGVSdWJyaWMnLFxuICBNVUxUSV9UUkFJVF9SVUJSSUM6ICdtdWx0aVRyYWl0UnVicmljJ1xufTtcblxuZXhwb3J0IHsgQXV0aG9yaW5nLCBSVUJSSUNfVFlQRVMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUEsSUFBTUEsWUFBWSxHQUFHO0VBQ25CQyxhQUFhLEVBQUUsY0FESTtFQUVuQkMsa0JBQWtCLEVBQUU7QUFGRCxDQUFyQiJ9
20
+ //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC"],"sources":["../src/index.js"],"sourcesContent":["import Authoring from './authoring';\n\nconst RUBRIC_TYPES = {\n SIMPLE_RUBRIC: 'simpleRubric',\n MULTI_TRAIT_RUBRIC: 'multiTraitRubric'\n};\n\nexport { Authoring, RUBRIC_TYPES };\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,YAAY,GAAG;EACnBC,aAAa,EAAE,cADI;EAEnBC,kBAAkB,EAAE;AAFD,CAArB"}
1
+ {"version":3,"file":"index.js","names":["_authoring","_interopRequireDefault","require","RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC","exports"],"sources":["../src/index.js"],"sourcesContent":["import Authoring from './authoring';\n\nconst RUBRIC_TYPES = {\n SIMPLE_RUBRIC: 'simpleRubric',\n MULTI_TRAIT_RUBRIC: 'multiTraitRubric',\n};\n\nexport { Authoring, RUBRIC_TYPES };\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAMC,YAAY,GAAG;EACnBC,aAAa,EAAE,cAAc;EAC7BC,kBAAkB,EAAE;AACtB,CAAC;AAACC,OAAA,CAAAH,YAAA,GAAAA,YAAA"}