@pie-lib/rubric 0.6.9-next.53 → 0.6.9-next.54

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,59 +1,101 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = exports.RubricType = exports.RawAuthoring = exports.PointConfig = void 0;
9
+
8
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
9
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
10
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
11
16
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
12
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
13
20
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
14
22
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
15
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
16
26
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
27
+
17
28
  var _react = _interopRequireDefault(require("react"));
29
+
18
30
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
19
32
  var _styles = require("@material-ui/core/styles");
33
+
20
34
  var _classnames = _interopRequireDefault(require("classnames"));
35
+
21
36
  var _OutlinedInput = _interopRequireDefault(require("@material-ui/core/OutlinedInput"));
37
+
22
38
  var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
39
+
23
40
  var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
41
+
24
42
  var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
43
+
25
44
  var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
45
+
26
46
  var _times = _interopRequireDefault(require("lodash/times"));
47
+
27
48
  var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
49
+
28
50
  var _FormGroup = _interopRequireDefault(require("@material-ui/core/FormGroup"));
51
+
29
52
  var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
53
+
30
54
  var _grey = _interopRequireDefault(require("@material-ui/core/colors/grey"));
55
+
31
56
  var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
57
+
32
58
  var _DragIndicator = _interopRequireDefault(require("@material-ui/icons/DragIndicator"));
59
+
33
60
  var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
61
+
34
62
  var _reactBeautifulDnd = require("react-beautiful-dnd");
63
+
35
64
  var _debug = _interopRequireDefault(require("debug"));
65
+
36
66
  var _takeRight = _interopRequireDefault(require("lodash/takeRight"));
67
+
37
68
  var _pointMenu = _interopRequireDefault(require("./point-menu"));
69
+
38
70
  var _range = _interopRequireDefault(require("lodash/range"));
71
+
39
72
  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
+
40
74
  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
+
41
76
  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
+
42
78
  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
+
43
80
  var log = (0, _debug["default"])('pie-lib:rubric:authoring');
81
+
44
82
  var reorder = function reorder(list, startIndex, endIndex) {
45
83
  var result = Array.from(list);
84
+
46
85
  var _result$splice = result.splice(startIndex, 1),
47
- _result$splice2 = (0, _slicedToArray2["default"])(_result$splice, 1),
48
- removed = _result$splice2[0];
86
+ _result$splice2 = (0, _slicedToArray2["default"])(_result$splice, 1),
87
+ removed = _result$splice2[0];
88
+
49
89
  result.splice(endIndex, 0, removed);
50
90
  return result;
51
91
  };
92
+
52
93
  var RubricType = _propTypes["default"].shape({
53
94
  excludeZero: _propTypes["default"].bool,
54
95
  points: _propTypes["default"].arrayOf(_propTypes["default"].string),
55
96
  sampleAnswers: _propTypes["default"].arrayOf(_propTypes["default"].string)
56
97
  });
98
+
57
99
  exports.RubricType = RubricType;
58
100
  var MaxPoints = (0, _styles.withStyles)(function (theme) {
59
101
  return {
@@ -64,9 +106,9 @@ var MaxPoints = (0, _styles.withStyles)(function (theme) {
64
106
  };
65
107
  })(function (props) {
66
108
  var value = props.value,
67
- _onChange = props.onChange,
68
- max = props.max,
69
- classes = props.classes;
109
+ _onChange = props.onChange,
110
+ max = props.max,
111
+ classes = props.classes;
70
112
  return /*#__PURE__*/_react["default"].createElement(_FormControl["default"], {
71
113
  className: classes.formControl,
72
114
  variant: "outlined"
@@ -87,13 +129,13 @@ var MaxPoints = (0, _styles.withStyles)(function (theme) {
87
129
  value: v
88
130
  }, v);
89
131
  })));
90
- });
91
-
92
- // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
132
+ }); // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
93
133
  // if the value is '', the Sample Answer input field will be empty
134
+
94
135
  var checkSampleAnswer = function checkSampleAnswer(sampleAnswer) {
95
136
  return sampleAnswer === null || sampleAnswer === 'null';
96
137
  };
138
+
97
139
  var PointConfig = (0, _styles.withStyles)(function (theme) {
98
140
  return {
99
141
  pointConfig: {},
@@ -125,9 +167,9 @@ var PointConfig = (0, _styles.withStyles)(function (theme) {
125
167
  };
126
168
  })(function (props) {
127
169
  var points = props.points,
128
- content = props.content,
129
- classes = props.classes,
130
- sampleAnswer = props.sampleAnswer;
170
+ content = props.content,
171
+ classes = props.classes,
172
+ sampleAnswer = props.sampleAnswer;
131
173
  var pointsLabel = "".concat(points, " ").concat(points <= 1 ? 'pt' : 'pts');
132
174
  var showSampleAnswer = checkSampleAnswer(sampleAnswer);
133
175
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -161,23 +203,30 @@ var PointConfig = (0, _styles.withStyles)(function (theme) {
161
203
  })));
162
204
  });
163
205
  exports.PointConfig = PointConfig;
206
+
164
207
  var RawAuthoring = /*#__PURE__*/function (_React$Component) {
165
208
  (0, _inherits2["default"])(RawAuthoring, _React$Component);
209
+
166
210
  var _super = _createSuper(RawAuthoring);
211
+
167
212
  function RawAuthoring() {
168
213
  var _this;
214
+
169
215
  (0, _classCallCheck2["default"])(this, RawAuthoring);
216
+
170
217
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
171
218
  args[_key] = arguments[_key];
172
219
  }
220
+
173
221
  _this = _super.call.apply(_super, [this].concat(args));
174
222
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragEnd", function (result) {
175
223
  if (!result.destination) {
176
224
  return;
177
225
  }
226
+
178
227
  var _this$props = _this.props,
179
- value = _this$props.value,
180
- onChange = _this$props.onChange;
228
+ value = _this$props.value,
229
+ onChange = _this$props.onChange;
181
230
  var points = reorder(value.points, result.source.index, result.destination.index);
182
231
  var sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);
183
232
  onChange(_objectSpread(_objectSpread({}, value), {}, {
@@ -187,11 +236,12 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
187
236
  });
188
237
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxPoints", function (maxPoints) {
189
238
  var _this$props2 = _this.props,
190
- value = _this$props2.value,
191
- onChange = _this$props2.onChange;
239
+ value = _this$props2.value,
240
+ onChange = _this$props2.onChange;
192
241
  var currentMax = value.points.length - 1;
193
242
  log('current', currentMax, 'new: ', maxPoints);
194
243
  var points, sampleAnswers;
244
+
195
245
  if (maxPoints > currentMax) {
196
246
  points = (0, _times["default"])(maxPoints - currentMax).map(function () {
197
247
  return '';
@@ -200,11 +250,13 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
200
250
  return null;
201
251
  }).concat(value.sampleAnswers);
202
252
  }
253
+
203
254
  if (maxPoints < currentMax) {
204
255
  log('less than');
205
256
  points = (0, _takeRight["default"])(value.points, maxPoints + 1);
206
257
  sampleAnswers = (0, _takeRight["default"])(value.sampleAnswers, maxPoints + 1);
207
258
  }
259
+
208
260
  if (points) {
209
261
  onChange(_objectSpread(_objectSpread({}, value), {}, {
210
262
  points: points,
@@ -215,12 +267,14 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
215
267
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeContent", function (index, content, type) {
216
268
  // type could be 'points' or 'sampleAnswers'
217
269
  log("changeModel[".concat(type, "]:"), index, content);
270
+
218
271
  if (type !== 'points' && type !== 'sampleAnswers') {
219
272
  return;
220
273
  }
274
+
221
275
  var _this$props3 = _this.props,
222
- value = _this$props3.value,
223
- onChange = _this$props3.onChange;
276
+ value = _this$props3.value,
277
+ onChange = _this$props3.onChange;
224
278
  var items = value[type] && Array.from(value[type]);
225
279
  items.splice(index, 1, content);
226
280
  log("changeModel[".concat(type, "]:"), items);
@@ -228,8 +282,8 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
228
282
  });
229
283
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "excludeZeros", function () {
230
284
  var _this$props4 = _this.props,
231
- value = _this$props4.value,
232
- onChange = _this$props4.onChange;
285
+ value = _this$props4.value,
286
+ onChange = _this$props4.onChange;
233
287
  onChange(_objectSpread(_objectSpread({}, value), {}, {
234
288
  excludeZero: !value.excludeZero
235
289
  }));
@@ -243,6 +297,7 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
243
297
  } else if (index === value.points.length - 1) {
244
298
  return false;
245
299
  }
300
+
246
301
  return true;
247
302
  }
248
303
  });
@@ -250,6 +305,7 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
250
305
  if (clickedItem === 'sample') {
251
306
  var value = _this.props.value;
252
307
  var sampleAnswers = Array.from(value.sampleAnswers || []);
308
+
253
309
  if (checkSampleAnswer(sampleAnswers[index])) {
254
310
  // an empty string will display an empty Sample Answer input field
255
311
  _this.changeContent(index, '', 'sampleAnswers');
@@ -261,23 +317,28 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
261
317
  });
262
318
  return _this;
263
319
  }
320
+
264
321
  (0, _createClass2["default"])(RawAuthoring, [{
265
322
  key: "render",
266
323
  value: function render() {
267
324
  var _this2 = this;
325
+
268
326
  var _this$props5 = this.props,
269
- classes = _this$props5.classes,
270
- className = _this$props5.className,
271
- value = _this$props5.value;
327
+ classes = _this$props5.classes,
328
+ className = _this$props5.className,
329
+ value = _this$props5.value;
330
+
272
331
  var _ref = value || {},
273
- _ref$excludeZeroEnabl = _ref.excludeZeroEnabled,
274
- excludeZeroEnabled = _ref$excludeZeroEnabl === void 0 ? true : _ref$excludeZeroEnabl,
275
- _ref$maxPointsEnabled = _ref.maxPointsEnabled,
276
- maxPointsEnabled = _ref$maxPointsEnabled === void 0 ? true : _ref$maxPointsEnabled;
332
+ _ref$excludeZeroEnabl = _ref.excludeZeroEnabled,
333
+ excludeZeroEnabled = _ref$excludeZeroEnabl === void 0 ? true : _ref$excludeZeroEnabl,
334
+ _ref$maxPointsEnabled = _ref.maxPointsEnabled,
335
+ maxPointsEnabled = _ref$maxPointsEnabled === void 0 ? true : _ref$maxPointsEnabled;
336
+
277
337
  if (value && Number.isFinite(value.maxPoints)) {
278
338
  // eslint-disable-next-line no-console
279
339
  console.warn('maxPoints is deprecated - remove from model');
280
340
  }
341
+
281
342
  return /*#__PURE__*/_react["default"].createElement("div", {
282
343
  className: (0, _classnames["default"])(classes["class"], className)
283
344
  }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
@@ -334,6 +395,7 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
334
395
  }]);
335
396
  return RawAuthoring;
336
397
  }(_react["default"].Component);
398
+
337
399
  exports.RawAuthoring = RawAuthoring;
338
400
  (0, _defineProperty2["default"])(RawAuthoring, "propTypes", {
339
401
  classes: _propTypes["default"].object.isRequired,
@@ -342,6 +404,7 @@ exports.RawAuthoring = RawAuthoring;
342
404
  onChange: _propTypes["default"].func
343
405
  });
344
406
  (0, _defineProperty2["default"])(RawAuthoring, "defaultProps", {});
407
+
345
408
  var styles = function styles(theme) {
346
409
  return {
347
410
  container: {
@@ -362,30 +425,37 @@ var styles = function styles(theme) {
362
425
  }
363
426
  };
364
427
  };
428
+
365
429
  var StyledRawAuthoring = (0, _styles.withStyles)(styles)(RawAuthoring);
430
+
366
431
  var Reverse = function Reverse(props) {
367
432
  var points = Array.from(props.value.points || []).reverse();
368
433
  var sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();
434
+
369
435
  if (points.length > sampleAnswers.length) {
370
436
  sampleAnswers = (0, _times["default"])(points.length - sampleAnswers.length).map(function () {
371
437
  return null;
372
438
  }).concat(sampleAnswers);
373
439
  }
440
+
374
441
  var value = _objectSpread(_objectSpread({}, props.value), {}, {
375
442
  points: points,
376
443
  sampleAnswers: sampleAnswers
377
444
  });
445
+
378
446
  var onChange = function onChange(value) {
379
447
  props.onChange(_objectSpread(_objectSpread({}, value), {}, {
380
448
  points: Array.from(value.points || []).reverse(),
381
449
  sampleAnswers: Array.from(value.sampleAnswers || []).reverse()
382
450
  }));
383
451
  };
452
+
384
453
  return /*#__PURE__*/_react["default"].createElement(StyledRawAuthoring, {
385
454
  value: value,
386
455
  onChange: onChange
387
456
  });
388
457
  };
458
+
389
459
  Reverse.propTypes = {
390
460
  value: RubricType,
391
461
  getIndex: _propTypes["default"].func,
@@ -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","excludeZeroEnabled","maxPointsEnabled","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 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: '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 className={classes.editor} markup={sampleAnswer} onChange={props.onSampleChange} />\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 } = 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 <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 />\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,"sources":["../src/authoring.jsx"],"names":["log","reorder","list","startIndex","endIndex","result","Array","from","splice","removed","RubricType","PropTypes","shape","excludeZero","bool","points","arrayOf","string","sampleAnswers","MaxPoints","theme","formControl","minWidth","margin","spacing","unit","props","value","onChange","max","classes","e","target","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","concat","type","items","clickedItem","changeContent","className","excludeZeroEnabled","maxPointsEnabled","Number","isFinite","console","warn","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"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\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 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: '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 className={classes.editor} markup={sampleAnswer} onChange={props.onSampleChange} />\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 } = 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 <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 />\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"],"file":"authoring.js"}
package/lib/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -11,7 +12,9 @@ Object.defineProperty(exports, "Authoring", {
11
12
  }
12
13
  });
13
14
  exports.RUBRIC_TYPES = void 0;
15
+
14
16
  var _authoring = _interopRequireDefault(require("./authoring"));
17
+
15
18
  var RUBRIC_TYPES = {
16
19
  SIMPLE_RUBRIC: 'simpleRubric',
17
20
  MULTI_TRAIT_RUBRIC: 'multiTraitRubric'
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,cAAc;EAC7BC,kBAAkB,EAAE;AACtB,CAAC;AAAC"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,aAAa,EAAE,cADI;AAEnBC,EAAAA,kBAAkB,EAAE;AAFD,CAArB","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"],"file":"index.js"}
package/lib/point-menu.js CHANGED
@@ -1,31 +1,52 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = exports.IconMenu = void 0;
9
+
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
9
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
11
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
12
18
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
13
20
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
14
22
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
15
24
  var _Menu = _interopRequireDefault(require("@material-ui/core/Menu"));
25
+
16
26
  var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
27
+
17
28
  var _MoreVert = _interopRequireDefault(require("@material-ui/icons/MoreVert"));
29
+
18
30
  var _MoreHoriz = _interopRequireDefault(require("@material-ui/icons/MoreHoriz"));
31
+
19
32
  var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
33
+
20
34
  var _propTypes = _interopRequireDefault(require("prop-types"));
35
+
21
36
  var _react = _interopRequireDefault(require("react"));
37
+
22
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); }; }
39
+
23
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; } }
41
+
24
42
  var IconMenu = /*#__PURE__*/function (_React$Component) {
25
43
  (0, _inherits2["default"])(IconMenu, _React$Component);
44
+
26
45
  var _super = _createSuper(IconMenu);
46
+
27
47
  function IconMenu(props) {
28
48
  var _this;
49
+
29
50
  (0, _classCallCheck2["default"])(this, IconMenu);
30
51
  _this = _super.call(this, props);
31
52
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClick", function (event) {
@@ -45,24 +66,29 @@ var IconMenu = /*#__PURE__*/function (_React$Component) {
45
66
  };
46
67
  return _this;
47
68
  }
69
+
48
70
  (0, _createClass2["default"])(IconMenu, [{
49
71
  key: "render",
50
72
  value: function render() {
51
73
  var _this2 = this;
74
+
52
75
  var _this$props = this.props,
53
- opts = _this$props.opts,
54
- onClick = _this$props.onClick,
55
- classes = _this$props.classes;
76
+ opts = _this$props.opts,
77
+ onClick = _this$props.onClick,
78
+ classes = _this$props.classes;
56
79
  var _this$state = this.state,
57
- open = _this$state.open,
58
- anchorEl = _this$state.anchorEl;
80
+ open = _this$state.open,
81
+ anchorEl = _this$state.anchorEl;
59
82
  var keys = Object.keys(opts) || [];
83
+
60
84
  var handleMenuClick = function handleMenuClick(key) {
61
85
  return function () {
62
86
  onClick(key);
87
+
63
88
  _this2.handleRequestClose();
64
89
  };
65
90
  };
91
+
66
92
  var iconColor = open ? 'inherit' : 'disabled';
67
93
  return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
68
94
  onClick: this.handleClick
@@ -94,26 +120,31 @@ var IconMenu = /*#__PURE__*/function (_React$Component) {
94
120
  }]);
95
121
  return IconMenu;
96
122
  }(_react["default"].Component);
123
+
97
124
  exports.IconMenu = IconMenu;
98
125
  (0, _defineProperty2["default"])(IconMenu, "propTypes", {
99
126
  opts: _propTypes["default"].object,
100
127
  onClick: _propTypes["default"].func.isRequired,
101
128
  classes: _propTypes["default"].object.isRequired
102
129
  });
130
+
103
131
  var PointMenu = /*#__PURE__*/function (_React$Component2) {
104
132
  (0, _inherits2["default"])(PointMenu, _React$Component2);
133
+
105
134
  var _super2 = _createSuper(PointMenu);
135
+
106
136
  function PointMenu() {
107
137
  (0, _classCallCheck2["default"])(this, PointMenu);
108
138
  return _super2.apply(this, arguments);
109
139
  }
140
+
110
141
  (0, _createClass2["default"])(PointMenu, [{
111
142
  key: "render",
112
143
  value: function render() {
113
144
  var _this$props2 = this.props,
114
- onChange = _this$props2.onChange,
115
- classes = _this$props2.classes,
116
- showSampleAnswer = _this$props2.showSampleAnswer;
145
+ onChange = _this$props2.onChange,
146
+ classes = _this$props2.classes,
147
+ showSampleAnswer = _this$props2.showSampleAnswer;
117
148
  var sampleText = showSampleAnswer ? 'Provide Sample Response' : 'Remove Sample Response';
118
149
  return /*#__PURE__*/_react["default"].createElement(IconMenu, {
119
150
  onClick: function onClick(key) {
@@ -128,6 +159,7 @@ var PointMenu = /*#__PURE__*/function (_React$Component2) {
128
159
  }]);
129
160
  return PointMenu;
130
161
  }(_react["default"].Component);
162
+
131
163
  exports["default"] = PointMenu;
132
164
  (0, _defineProperty2["default"])(PointMenu, "propTypes", {
133
165
  onChange: _propTypes["default"].func.isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"point-menu.js","names":["IconMenu","props","event","setState","open","anchorEl","currentTarget","state","undefined","opts","onClick","classes","keys","Object","handleMenuClick","key","handleRequestClose","iconColor","handleClick","icon","transform","vertical","horizontal","map","k","index","React","Component","PropTypes","object","func","isRequired","PointMenu","onChange","showSampleAnswer","sampleText","sample","bool"],"sources":["../src/point-menu.jsx"],"sourcesContent":["import Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz';\nimport IconButton from '@material-ui/core/IconButton';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport class IconMenu extends React.Component {\n static propTypes = {\n opts: PropTypes.object,\n onClick: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: undefined,\n open: false,\n };\n }\n\n handleClick = (event) => this.setState({ open: true, anchorEl: event.currentTarget });\n\n handleRequestClose = () => this.setState({ open: false });\n\n render() {\n const { opts, onClick, classes } = this.props;\n const { open, anchorEl } = this.state;\n const keys = Object.keys(opts) || [];\n\n const handleMenuClick = (key) => () => {\n onClick(key);\n this.handleRequestClose();\n };\n\n const iconColor = open ? 'inherit' : 'disabled';\n\n return (\n <div>\n <div onClick={this.handleClick}>\n <IconButton className={classes.icon}>\n {open ? <MoreVertIcon color={iconColor} /> : <MoreHorizIcon color={iconColor} />}\n </IconButton>\n </div>\n <Menu\n id=\"point-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={this.handleRequestClose}\n style={{ transform: 'translate(-15px, -15px)' }}\n transformOrigin={{\n vertical: 'center',\n horizontal: 'right',\n }}\n >\n {keys.map((k, index) => (\n <MenuItem key={index} onClick={handleMenuClick(k)}>\n {opts[k]}\n </MenuItem>\n ))}\n </Menu>\n </div>\n );\n }\n}\n\nexport default class PointMenu extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n showSampleAnswer: PropTypes.bool.isRequired,\n };\n\n static defaultProps = {\n classes: {},\n };\n\n render() {\n const { onChange, classes, showSampleAnswer } = this.props;\n const sampleText = showSampleAnswer ? 'Provide Sample Response' : 'Remove Sample Response';\n\n return (\n <IconMenu\n onClick={(key) => onChange(key)}\n opts={{\n sample: sampleText,\n }}\n classes={classes}\n />\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/point-menu.jsx"],"names":["IconMenu","props","event","setState","open","anchorEl","currentTarget","state","undefined","opts","onClick","classes","keys","Object","handleMenuClick","key","handleRequestClose","iconColor","handleClick","icon","transform","vertical","horizontal","map","k","index","React","Component","PropTypes","object","func","isRequired","PointMenu","onChange","showSampleAnswer","sampleText","sample","bool"],"mappings":"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","sourcesContent":["import Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz';\nimport IconButton from '@material-ui/core/IconButton';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport class IconMenu extends React.Component {\n static propTypes = {\n opts: PropTypes.object,\n onClick: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: undefined,\n open: false,\n };\n }\n\n handleClick = (event) => this.setState({ open: true, anchorEl: event.currentTarget });\n\n handleRequestClose = () => this.setState({ open: false });\n\n render() {\n const { opts, onClick, classes } = this.props;\n const { open, anchorEl } = this.state;\n const keys = Object.keys(opts) || [];\n\n const handleMenuClick = (key) => () => {\n onClick(key);\n this.handleRequestClose();\n };\n\n const iconColor = open ? 'inherit' : 'disabled';\n\n return (\n <div>\n <div onClick={this.handleClick}>\n <IconButton className={classes.icon}>\n {open ? <MoreVertIcon color={iconColor} /> : <MoreHorizIcon color={iconColor} />}\n </IconButton>\n </div>\n <Menu\n id=\"point-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={this.handleRequestClose}\n style={{ transform: 'translate(-15px, -15px)' }}\n transformOrigin={{\n vertical: 'center',\n horizontal: 'right',\n }}\n >\n {keys.map((k, index) => (\n <MenuItem key={index} onClick={handleMenuClick(k)}>\n {opts[k]}\n </MenuItem>\n ))}\n </Menu>\n </div>\n );\n }\n}\n\nexport default class PointMenu extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n showSampleAnswer: PropTypes.bool.isRequired,\n };\n\n static defaultProps = {\n classes: {},\n };\n\n render() {\n const { onChange, classes, showSampleAnswer } = this.props;\n const sampleText = showSampleAnswer ? 'Provide Sample Response' : 'Remove Sample Response';\n\n return (\n <IconMenu\n onClick={(key) => onChange(key)}\n opts={{\n sample: sampleText,\n }}\n classes={classes}\n />\n );\n }\n}\n"],"file":"point-menu.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/rubric",
3
- "version": "0.6.9-next.53+cbb2d706",
3
+ "version": "0.6.9-next.54+390d28c4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.3",
11
11
  "@material-ui/icons": "^3.0.2",
12
- "@pie-lib/editable-html": "^9.3.1-next.53+cbb2d706",
12
+ "@pie-lib/editable-html": "^9.3.1-next.54+390d28c4",
13
13
  "debug": "^4.1.1",
14
14
  "editable-html": "npm:@pie-lib/editable-html@^7.21.0",
15
15
  "lodash": "^4.17.11",
@@ -18,5 +18,5 @@
18
18
  "react-beautiful-dnd": "^11.0.2",
19
19
  "react-dom": "^16.9.0"
20
20
  },
21
- "gitHead": "cbb2d70637263fd7d0bf2a0a7d0b4b75e2a7370c"
21
+ "gitHead": "390d28c479452d58978984c961ed56716f156f91"
22
22
  }