@pie-lib/rubric 1.0.0-beta.5 → 1.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/authoring.js CHANGED
@@ -8,38 +8,37 @@ exports["default"] = exports.RubricType = exports.RawAuthoring = exports.PointCo
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
11
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
12
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
16
  var _react = _interopRequireDefault(require("react"));
18
17
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
- var _styles = require("@material-ui/core/styles");
20
- var _classnames = _interopRequireDefault(require("classnames"));
21
- var _OutlinedInput = _interopRequireDefault(require("@material-ui/core/OutlinedInput"));
22
- var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
23
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
24
- var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
25
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
18
+ var _styles = require("@mui/material/styles");
19
+ var _InputLabel = _interopRequireDefault(require("@mui/material/InputLabel"));
20
+ var _OutlinedInput = _interopRequireDefault(require("@mui/material/OutlinedInput"));
21
+ var _Select = _interopRequireDefault(require("@mui/material/Select"));
22
+ var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
23
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
26
24
  var _times = _interopRequireDefault(require("lodash/times"));
27
- var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
28
- var _FormGroup = _interopRequireDefault(require("@material-ui/core/FormGroup"));
29
- var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
30
- var _grey = _interopRequireDefault(require("@material-ui/core/colors/grey"));
31
- var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
32
- var _DragIndicator = _interopRequireDefault(require("@material-ui/icons/DragIndicator"));
33
- var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
34
- var _reactBeautifulDnd = require("react-beautiful-dnd");
25
+ var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
26
+ var _FormGroup = _interopRequireDefault(require("@mui/material/FormGroup"));
27
+ var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormControlLabel"));
28
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
29
+ var _DragIndicator = _interopRequireDefault(require("@mui/icons-material/DragIndicator"));
30
+ var _dnd = require("@hello-pangea/dnd");
35
31
  var _debug = _interopRequireDefault(require("debug"));
36
32
  var _takeRight = _interopRequireDefault(require("lodash/takeRight"));
37
33
  var _pointMenu = _interopRequireDefault(require("./point-menu"));
38
34
  var _range = _interopRequireDefault(require("lodash/range"));
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; }
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; }
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); }; }
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; } }
35
+ var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
36
+ var _configUi = require("@pie-lib/config-ui");
37
+ var _colors = require("@mui/material/colors");
38
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
39
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
40
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
41
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
43
42
  var log = (0, _debug["default"])('pie-lib:rubric:authoring');
44
43
  var reorder = function reorder(list, startIndex, endIndex) {
45
44
  var result = Array.from(list);
@@ -49,134 +48,187 @@ var reorder = function reorder(list, startIndex, endIndex) {
49
48
  result.splice(endIndex, 0, removed);
50
49
  return result;
51
50
  };
52
- var RubricType = _propTypes["default"].shape({
51
+ var RubricType = exports.RubricType = _propTypes["default"].shape({
53
52
  excludeZero: _propTypes["default"].bool,
54
53
  points: _propTypes["default"].arrayOf(_propTypes["default"].string),
55
54
  sampleAnswers: _propTypes["default"].arrayOf(_propTypes["default"].string),
56
- maxPoints: _propTypes["default"].number
55
+ maxPoints: _propTypes["default"].number,
56
+ rubriclessInstruction: _propTypes["default"].string
57
57
  });
58
- exports.RubricType = RubricType;
59
- var MaxPoints = (0, _styles.withStyles)(function (theme) {
60
- return {
61
- formControl: {
62
- minWidth: '120px',
63
- margin: theme.spacing.unit
64
- }
65
- };
66
- })(function (props) {
58
+ var MaxPoints = function MaxPoints(props) {
67
59
  var value = props.value,
68
60
  _onChange = props.onChange,
69
- max = props.max,
70
- classes = props.classes;
61
+ max = props.max;
62
+ var labelId = 'max-points-label';
71
63
  return /*#__PURE__*/_react["default"].createElement(_FormControl["default"], {
72
- className: classes.formControl,
64
+ sx: {
65
+ minWidth: 120,
66
+ m: 1
67
+ },
73
68
  variant: "outlined"
74
69
  }, /*#__PURE__*/_react["default"].createElement(_InputLabel["default"], {
75
- width: 100,
76
- htmlFor: "..."
70
+ id: labelId
77
71
  }, "Max Points"), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
72
+ labelId: labelId,
73
+ label: "Max Points",
78
74
  value: value,
79
75
  onChange: function onChange(e) {
80
76
  return _onChange(e.target.value);
81
77
  },
82
78
  input: /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
83
- labelWidth: 80
84
- })
85
- }, (0, _range["default"])(1, max).map(function (v) {
79
+ label: "Max Points"
80
+ }),
81
+ MenuProps: {
82
+ transitionDuration: {
83
+ enter: 225,
84
+ exit: 195
85
+ }
86
+ }
87
+ }, (0, _range["default"])(1, max + 1).map(function (v) {
86
88
  return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
87
89
  key: "".concat(v),
88
90
  value: v
89
91
  }, v);
90
92
  })));
91
- });
93
+ };
92
94
 
93
95
  // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
94
96
  // if the value is '', the Sample Answer input field will be empty
95
97
  var checkSampleAnswer = function checkSampleAnswer(sampleAnswer) {
96
98
  return sampleAnswer === null || sampleAnswer === 'null';
97
99
  };
98
- var PointConfig = (0, _styles.withStyles)(function (theme) {
100
+ var Row = (0, _styles.styled)('div')(function () {
99
101
  return {
100
- pointConfig: {},
101
- row: {
102
- display: 'flex',
103
- width: '100%',
104
- position: 'relative'
105
- },
106
- editor: {
107
- width: '100%',
108
- backgroundColor: "".concat(theme.palette.common.white, " !important")
109
- },
110
- dragIndicator: {
111
- paddingTop: theme.spacing.unit,
112
- color: _grey["default"][500]
113
- },
114
- pointsLabel: {
115
- color: _grey["default"][500],
116
- paddingBottom: theme.spacing.unit,
117
- textTransform: 'uppercase'
118
- },
119
- sampleAnswersEditor: {
120
- paddingLeft: theme.spacing.unit * 3
121
- },
122
- pointMenu: {
123
- position: 'absolute',
124
- right: 0
125
- }
102
+ display: 'flex',
103
+ width: '100%',
104
+ position: 'relative'
105
+ };
106
+ });
107
+ var EditorDiv = (0, _styles.styled)('div')(function (_ref) {
108
+ var theme = _ref.theme;
109
+ return {
110
+ width: '100%',
111
+ backgroundColor: "".concat(theme.palette.common.white)
126
112
  };
127
- })(function (props) {
113
+ });
114
+ var DragIndicatorStyled = (0, _styles.styled)(_DragIndicator["default"])(function (_ref2) {
115
+ var theme = _ref2.theme;
116
+ return {
117
+ paddingTop: theme.spacing(1),
118
+ color: _colors.grey[500]
119
+ };
120
+ });
121
+ var PointsLabel = (0, _styles.styled)(_Typography["default"])(function (_ref3) {
122
+ var theme = _ref3.theme;
123
+ return {
124
+ color: _colors.grey[500],
125
+ paddingBottom: theme.spacing(1),
126
+ textTransform: 'uppercase'
127
+ };
128
+ });
129
+ var SampleAnswersEditor = (0, _styles.styled)('div')(function (_ref4) {
130
+ var theme = _ref4.theme;
131
+ return {
132
+ paddingLeft: theme.spacing(3)
133
+ };
134
+ });
135
+ var ErrorText = (0, _styles.styled)('div')(function (_ref5) {
136
+ var theme = _ref5.theme;
137
+ return {
138
+ fontSize: theme.typography.fontSize - 2,
139
+ color: theme.palette.error.main,
140
+ paddingLeft: theme.spacing(3),
141
+ paddingTop: theme.spacing(1)
142
+ };
143
+ });
144
+ var PointMenuWrapper = (0, _styles.styled)('div')(function () {
145
+ return {
146
+ position: 'absolute',
147
+ right: 0
148
+ };
149
+ });
150
+ var PointConfig = exports.PointConfig = function PointConfig(props) {
128
151
  var points = props.points,
129
152
  content = props.content,
130
- classes = props.classes,
131
153
  sampleAnswer = props.sampleAnswer,
132
154
  _props$mathMlOptions = props.mathMlOptions,
133
- mathMlOptions = _props$mathMlOptions === void 0 ? {} : _props$mathMlOptions;
155
+ mathMlOptions = _props$mathMlOptions === void 0 ? {} : _props$mathMlOptions,
156
+ error = props.error,
157
+ _props$pluginOpts = props.pluginOpts,
158
+ pluginOpts = _props$pluginOpts === void 0 ? {} : _props$pluginOpts;
134
159
  var pointsLabel = "".concat(points, " ").concat(points <= 1 ? 'pt' : 'pts');
135
160
  var showSampleAnswer = checkSampleAnswer(sampleAnswer);
136
- return /*#__PURE__*/_react["default"].createElement("div", {
137
- className: classes.pointConfig
138
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
139
- variant: "overline",
140
- className: classes.pointsLabel
141
- }, pointsLabel), /*#__PURE__*/_react["default"].createElement("div", {
142
- className: classes.row
143
- }, /*#__PURE__*/_react["default"].createElement(_DragIndicator["default"], {
144
- className: classes.dragIndicator
145
- }), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
146
- className: classes.editor,
161
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(PointsLabel, {
162
+ variant: "overline"
163
+ }, pointsLabel), /*#__PURE__*/_react["default"].createElement(Row, null, /*#__PURE__*/_react["default"].createElement(DragIndicatorStyled, null), /*#__PURE__*/_react["default"].createElement(EditorDiv, null, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
164
+ error: error,
165
+ pluginProps: pluginOpts,
147
166
  markup: content,
148
167
  onChange: props.onChange,
149
168
  mathMlOptions: mathMlOptions
150
- }), /*#__PURE__*/_react["default"].createElement(_pointMenu["default"], {
151
- classes: {
152
- icon: classes.pointMenu
153
- },
169
+ })), /*#__PURE__*/_react["default"].createElement(PointMenuWrapper, null, /*#__PURE__*/_react["default"].createElement(_pointMenu["default"], {
154
170
  showSampleAnswer: showSampleAnswer,
155
171
  onChange: props.onMenuChange
156
- })), !showSampleAnswer && /*#__PURE__*/_react["default"].createElement("div", {
157
- className: classes.sampleAnswersEditor
158
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
159
- variant: "overline",
160
- className: classes.dragIndicator
161
- }, "Sample Response"), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
162
- className: classes.editor,
172
+ }))), error && /*#__PURE__*/_react["default"].createElement(ErrorText, null, error), !showSampleAnswer && /*#__PURE__*/_react["default"].createElement(SampleAnswersEditor, null, /*#__PURE__*/_react["default"].createElement(DragIndicatorStyled, {
173
+ as: _Typography["default"],
174
+ variant: "overline"
175
+ }, "Sample Response"), /*#__PURE__*/_react["default"].createElement(EditorDiv, null, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
163
176
  markup: sampleAnswer,
177
+ pluginProps: pluginOpts,
164
178
  onChange: props.onSampleChange,
165
179
  mathMlOptions: mathMlOptions
166
- })));
180
+ }))));
181
+ };
182
+ var Container = (0, _styles.styled)('div')(function (_ref6) {
183
+ var theme = _ref6.theme;
184
+ return {
185
+ backgroundColor: _colors.grey[200],
186
+ borderWidth: 1,
187
+ borderStyle: 'solid',
188
+ borderColor: _colors.grey[300],
189
+ padding: theme.spacing(2),
190
+ margin: theme.spacing(1)
191
+ };
167
192
  });
168
- exports.PointConfig = PointConfig;
169
- var RawAuthoring = /*#__PURE__*/function (_React$Component) {
170
- (0, _inherits2["default"])(RawAuthoring, _React$Component);
171
- var _super = _createSuper(RawAuthoring);
193
+ var InputContainerWrapper = (0, _styles.styled)('div')(function (_ref7) {
194
+ var theme = _ref7.theme;
195
+ return {
196
+ width: '100%',
197
+ paddingTop: theme.spacing(2),
198
+ marginBottom: theme.spacing(2),
199
+ '& MuiFormControl-root': {
200
+ width: '100%'
201
+ }
202
+ };
203
+ });
204
+ var Rubricless = (0, _styles.styled)('div')(function () {
205
+ return {
206
+ display: 'none'
207
+ };
208
+ });
209
+ var ConfigHolder = (0, _styles.styled)('div')(function (_ref8) {
210
+ var theme = _ref8.theme;
211
+ return {
212
+ paddingTop: theme.spacing(1),
213
+ paddingBottom: theme.spacing(1)
214
+ };
215
+ });
216
+ var RubricTitle = (0, _styles.styled)(_Typography["default"])(function (_ref9) {
217
+ var theme = _ref9.theme;
218
+ return {
219
+ paddingLeft: theme.spacing(1),
220
+ margin: theme.spacing(1)
221
+ };
222
+ });
223
+ var RawAuthoring = exports.RawAuthoring = /*#__PURE__*/function (_React$Component) {
172
224
  function RawAuthoring() {
173
225
  var _this;
174
226
  (0, _classCallCheck2["default"])(this, RawAuthoring);
175
227
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
176
228
  args[_key] = arguments[_key];
177
229
  }
178
- _this = _super.call.apply(_super, [this].concat(args));
179
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragEnd", function (result) {
230
+ _this = _callSuper(this, RawAuthoring, [].concat(args));
231
+ (0, _defineProperty2["default"])(_this, "dragEnd", function (result) {
180
232
  if (!result.destination) {
181
233
  return;
182
234
  }
@@ -190,10 +242,19 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
190
242
  sampleAnswers: sampleAnswers
191
243
  }));
192
244
  });
193
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxPoints", function (maxPoints) {
245
+ (0, _defineProperty2["default"])(_this, "changeRubriclessInstruction", function (input) {
194
246
  var _this$props2 = _this.props,
195
247
  value = _this$props2.value,
196
248
  onChange = _this$props2.onChange;
249
+ onChange(_objectSpread(_objectSpread({}, value), {}, {
250
+ rubriclessInstruction: input
251
+ }));
252
+ });
253
+ (0, _defineProperty2["default"])(_this, "changeMaxPoints", function (maxPoints) {
254
+ var _this$props3 = _this.props,
255
+ value = _this$props3.value,
256
+ onChange = _this$props3.onChange,
257
+ rubricless = _this$props3.rubricless;
197
258
  var currentMax = value.points.length - 1;
198
259
  log('current', currentMax, 'new: ', maxPoints);
199
260
  var points, sampleAnswers;
@@ -210,36 +271,41 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
210
271
  points = (0, _takeRight["default"])(value.points, maxPoints + 1);
211
272
  sampleAnswers = (0, _takeRight["default"])(value.sampleAnswers, maxPoints + 1);
212
273
  }
213
- if (points) {
274
+ if (points && !rubricless) {
214
275
  onChange(_objectSpread(_objectSpread({}, value), {}, {
215
276
  points: points,
216
- sampleAnswers: sampleAnswers
277
+ sampleAnswers: sampleAnswers,
278
+ maxPoints: maxPoints
279
+ }));
280
+ } else {
281
+ onChange(_objectSpread(_objectSpread({}, value), {}, {
282
+ maxPoints: maxPoints
217
283
  }));
218
284
  }
219
285
  });
220
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeContent", function (index, content, type) {
286
+ (0, _defineProperty2["default"])(_this, "changeContent", function (index, content, type) {
221
287
  // type could be 'points' or 'sampleAnswers'
222
288
  log("changeModel[".concat(type, "]:"), index, content);
223
289
  if (type !== 'points' && type !== 'sampleAnswers') {
224
290
  return;
225
291
  }
226
- var _this$props3 = _this.props,
227
- value = _this$props3.value,
228
- onChange = _this$props3.onChange;
292
+ var _this$props4 = _this.props,
293
+ value = _this$props4.value,
294
+ onChange = _this$props4.onChange;
229
295
  var items = value[type] && Array.from(value[type]);
230
296
  items.splice(index, 1, content);
231
297
  log("changeModel[".concat(type, "]:"), items);
232
298
  onChange(_objectSpread(_objectSpread({}, value), {}, (0, _defineProperty2["default"])({}, type, items)));
233
299
  });
234
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "excludeZeros", function () {
235
- var _this$props4 = _this.props,
236
- value = _this$props4.value,
237
- onChange = _this$props4.onChange;
300
+ (0, _defineProperty2["default"])(_this, "excludeZeros", function () {
301
+ var _this$props5 = _this.props,
302
+ value = _this$props5.value,
303
+ onChange = _this$props5.onChange;
238
304
  onChange(_objectSpread(_objectSpread({}, value), {}, {
239
305
  excludeZero: !value.excludeZero
240
306
  }));
241
307
  });
242
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "shouldRenderPoint", function (index, value) {
308
+ (0, _defineProperty2["default"])(_this, "shouldRenderPoint", function (index, value) {
243
309
  if (!value.excludeZero) {
244
310
  return true;
245
311
  } else {
@@ -251,7 +317,7 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
251
317
  return true;
252
318
  }
253
319
  });
254
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPointMenuChange", function (index, clickedItem) {
320
+ (0, _defineProperty2["default"])(_this, "onPointMenuChange", function (index, clickedItem) {
255
321
  if (clickedItem === 'sample') {
256
322
  var value = _this.props.value;
257
323
  var sampleAnswers = Array.from(value.sampleAnswers || []);
@@ -266,63 +332,95 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
266
332
  });
267
333
  return _this;
268
334
  }
269
- (0, _createClass2["default"])(RawAuthoring, [{
335
+ (0, _inherits2["default"])(RawAuthoring, _React$Component);
336
+ return (0, _createClass2["default"])(RawAuthoring, [{
270
337
  key: "render",
271
338
  value: function render() {
272
339
  var _this2 = this;
273
- var _this$props5 = this.props,
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;
340
+ var _this$props6 = this.props,
341
+ value = _this$props6.value,
342
+ _this$props6$mathMlOp = _this$props6.mathMlOptions,
343
+ mathMlOptions = _this$props6$mathMlOp === void 0 ? {} : _this$props6$mathMlOp,
344
+ _this$props6$config = _this$props6.config,
345
+ config = _this$props6$config === void 0 ? {} : _this$props6$config,
346
+ _this$props6$rubricle = _this$props6.rubricless,
347
+ rubricless = _this$props6$rubricle === void 0 ? false : _this$props6$rubricle,
348
+ _this$props6$pluginOp = _this$props6.pluginOpts,
349
+ pluginOpts = _this$props6$pluginOp === void 0 ? {} : _this$props6$pluginOp;
350
+ var _ref0 = value || {},
351
+ _ref0$excludeZeroEnab = _ref0.excludeZeroEnabled,
352
+ excludeZeroEnabled = _ref0$excludeZeroEnab === void 0 ? true : _ref0$excludeZeroEnab,
353
+ _ref0$maxPointsEnable = _ref0.maxPointsEnabled,
354
+ maxPointsEnabled = _ref0$maxPointsEnable === void 0 ? true : _ref0$maxPointsEnable,
355
+ _ref0$errors = _ref0.errors,
356
+ errors = _ref0$errors === void 0 ? {} : _ref0$errors,
357
+ _ref0$rubriclessInstr = _ref0.rubriclessInstructionEnabled,
358
+ rubriclessInstructionEnabled = _ref0$rubriclessInstr === void 0 ? false : _ref0$rubriclessInstr,
359
+ _ref0$maxPoints = _ref0.maxPoints,
360
+ maxPoints = _ref0$maxPoints === void 0 ? 10 : _ref0$maxPoints;
361
+ // rubric will contain a max value for maxPoints
362
+ var _ref1 = config || {},
363
+ _ref1$rubriclessInstr = _ref1.rubriclessInstruction,
364
+ rubriclessInstruction = _ref1$rubriclessInstr === void 0 ? {} : _ref1$rubriclessInstr,
365
+ _ref1$maxMaxPoints = _ref1.maxMaxPoints,
366
+ maxMaxPoints = _ref1$maxMaxPoints === void 0 ? 10 : _ref1$maxMaxPoints;
367
+ var _ref10 = errors || {},
368
+ pointsDescriptorsErrors = _ref10.pointsDescriptorsErrors;
284
369
  if (value && Number.isFinite(value.maxPoints)) {
285
370
  // eslint-disable-next-line no-console
286
371
  console.warn('maxPoints is deprecated - remove from model');
287
372
  }
288
- return /*#__PURE__*/_react["default"].createElement("div", {
289
- className: (0, _classnames["default"])(classes["class"], className)
290
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
291
- variant: "h5",
292
- className: classes.rubricTitle
373
+
374
+ // for rubric value is computed based on points
375
+ var maxPointsValue = !rubricless ? value.points.length - 1 : maxPoints;
376
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(RubricTitle, {
377
+ variant: "h5"
293
378
  }, "Rubric"), /*#__PURE__*/_react["default"].createElement(_FormGroup["default"], {
294
379
  row: true
295
380
  }, maxPointsEnabled && /*#__PURE__*/_react["default"].createElement(MaxPoints, {
296
- max: 10,
297
- value: value.points.length - 1,
298
- onChange: this.changeMaxPoints
381
+ max: maxMaxPoints < 100 ? maxMaxPoints : 100,
382
+ value: maxPointsValue,
383
+ onChange: this.changeMaxPoints,
384
+ pluginOpts: pluginOpts
299
385
  }), excludeZeroEnabled && /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
300
386
  label: "Exclude zeros",
301
387
  control: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
302
388
  checked: value.excludeZero,
303
389
  onChange: this.excludeZeros
304
390
  })
305
- })), /*#__PURE__*/_react["default"].createElement("div", {
306
- className: classes.container
307
- }, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.DragDropContext, {
391
+ })), rubriclessInstructionEnabled && rubricless && /*#__PURE__*/_react["default"].createElement(InputContainerWrapper, null, /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
392
+ label: rubriclessInstruction.label
393
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
394
+ markup: value.rubriclessInstruction || '',
395
+ onChange: this.changeRubriclessInstruction,
396
+ pluginProps: pluginOpts,
397
+ nonEmpty: false,
398
+ disableUnderline: true,
399
+ languageCharactersProps: [{
400
+ language: 'spanish'
401
+ }, {
402
+ language: 'special'
403
+ }],
404
+ mathMlOptions: mathMlOptions
405
+ }))), /*#__PURE__*/_react["default"].createElement("div", null, rubricless ? /*#__PURE__*/_react["default"].createElement(Rubricless, null) : /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(_dnd.DragDropContext, {
308
406
  onDragEnd: this.dragEnd
309
- }, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Droppable, {
407
+ }, /*#__PURE__*/_react["default"].createElement(_dnd.Droppable, {
310
408
  droppableId: "droppable"
311
409
  }, function (provided) {
312
410
  return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, provided.droppableProps, {
313
411
  ref: provided.innerRef
314
412
  }), value.points.map(function (p, index) {
315
- return _this2.shouldRenderPoint(index, value) && /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Draggable, {
413
+ return _this2.shouldRenderPoint(index, value) && /*#__PURE__*/_react["default"].createElement(_dnd.Draggable, {
316
414
  key: "".concat(p.points, "-").concat(index),
317
415
  index: index,
318
416
  draggableId: index.toString()
319
417
  }, function (provided) {
320
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
321
- className: classes.configHolder,
418
+ return /*#__PURE__*/_react["default"].createElement(ConfigHolder, (0, _extends2["default"])({
322
419
  ref: provided.innerRef
323
420
  }, provided.draggableProps, provided.dragHandleProps), /*#__PURE__*/_react["default"].createElement(PointConfig, {
324
421
  points: value.points.length - 1 - index,
325
422
  content: p,
423
+ error: pointsDescriptorsErrors && pointsDescriptorsErrors[value.points.length - 1 - index],
326
424
  sampleAnswer: value.sampleAnswers && value.sampleAnswers[index],
327
425
  onChange: function onChange(content) {
328
426
  return _this2.changeContent(index, content, 'points');
@@ -333,45 +431,31 @@ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
333
431
  onMenuChange: function onMenuChange(clickedItem) {
334
432
  return _this2.onPointMenuChange(index, clickedItem);
335
433
  },
336
- mathMlOptions: mathMlOptions
434
+ mathMlOptions: mathMlOptions,
435
+ pluginOpts: pluginOpts
337
436
  }));
338
437
  });
339
438
  }), provided.placeholder);
340
- }))));
439
+ })))));
341
440
  }
342
441
  }]);
343
- return RawAuthoring;
344
- }(_react["default"].Component);
345
- exports.RawAuthoring = RawAuthoring;
442
+ }(_react["default"].Component); // styles migrated to styled-components above
346
443
  (0, _defineProperty2["default"])(RawAuthoring, "propTypes", {
347
- classes: _propTypes["default"].object.isRequired,
348
- className: _propTypes["default"].string,
349
444
  value: RubricType,
445
+ config: _propTypes["default"].object,
446
+ pluginOpts: _propTypes["default"].object,
447
+ rubricless: _propTypes["default"].bool,
350
448
  onChange: _propTypes["default"].func
351
449
  });
352
450
  (0, _defineProperty2["default"])(RawAuthoring, "defaultProps", {});
353
- var styles = function styles(theme) {
354
- return {
355
- container: {
356
- backgroundColor: _grey["default"][200],
357
- borderWidth: 1,
358
- borderStyle: 'solid',
359
- borderColor: _grey["default"][300],
360
- padding: theme.spacing.unit * 2,
361
- margin: theme.spacing.unit
362
- },
363
- configHolder: {
364
- paddingTop: theme.spacing.unit,
365
- paddingBottom: theme.spacing.unit
366
- },
367
- rubricTitle: {
368
- paddingLeft: theme.spacing.unit,
369
- margin: theme.spacing.unit
370
- }
371
- };
372
- };
373
- var StyledRawAuthoring = (0, _styles.withStyles)(styles)(RawAuthoring);
374
451
  var Reverse = function Reverse(props) {
452
+ var _ref11 = props || {},
453
+ _ref11$rubricless = _ref11.rubricless,
454
+ rubricless = _ref11$rubricless === void 0 ? false : _ref11$rubricless,
455
+ _ref11$config = _ref11.config,
456
+ config = _ref11$config === void 0 ? {} : _ref11$config,
457
+ _ref11$pluginOpts = _ref11.pluginOpts,
458
+ pluginOpts = _ref11$pluginOpts === void 0 ? {} : _ref11$pluginOpts;
375
459
  var points = Array.from(props.value.points || []).reverse();
376
460
  var sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();
377
461
  if (points.length > sampleAnswers.length) {
@@ -389,16 +473,21 @@ var Reverse = function Reverse(props) {
389
473
  sampleAnswers: Array.from(value.sampleAnswers || []).reverse()
390
474
  }));
391
475
  };
392
- return /*#__PURE__*/_react["default"].createElement(StyledRawAuthoring, {
476
+ return /*#__PURE__*/_react["default"].createElement(RawAuthoring, {
393
477
  value: value,
394
- onChange: onChange
478
+ config: config,
479
+ onChange: onChange,
480
+ rubricless: rubricless,
481
+ pluginOpts: pluginOpts
395
482
  });
396
483
  };
397
484
  Reverse.propTypes = {
398
485
  value: RubricType,
486
+ config: _propTypes["default"].object,
487
+ pluginOpts: _propTypes["default"].object,
488
+ rubricless: _propTypes["default"].bool,
399
489
  getIndex: _propTypes["default"].func,
400
490
  onChange: _propTypes["default"].func
401
491
  };
402
- var _default = Reverse;
403
- exports["default"] = _default;
492
+ var _default = exports["default"] = Reverse;
404
493
  //# sourceMappingURL=authoring.js.map