@pie-element/rubric 3.8.2-next.0 → 3.8.2-next.1

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.
@@ -1,535 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = exports.RubricType = exports.RawAuthoring = exports.PointConfig = void 0;
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
27
-
28
- var _react = _interopRequireDefault(require("react"));
29
-
30
- var _propTypes = _interopRequireDefault(require("prop-types"));
31
-
32
- var _styles = require("@material-ui/core/styles");
33
-
34
- var _classnames = _interopRequireDefault(require("classnames"));
35
-
36
- var _OutlinedInput = _interopRequireDefault(require("@material-ui/core/OutlinedInput"));
37
-
38
- var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
39
-
40
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
41
-
42
- var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
43
-
44
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
45
-
46
- var _times = _interopRequireDefault(require("lodash/times"));
47
-
48
- var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
49
-
50
- var _FormGroup = _interopRequireDefault(require("@material-ui/core/FormGroup"));
51
-
52
- var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
53
-
54
- var _grey = _interopRequireDefault(require("@material-ui/core/colors/grey"));
55
-
56
- var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
57
-
58
- var _DragIndicator = _interopRequireDefault(require("@material-ui/icons/DragIndicator"));
59
-
60
- var _editableHtml = _interopRequireDefault(require("@pie-lib/pie-toolbox/editable-html"));
61
-
62
- var _reactBeautifulDnd = require("react-beautiful-dnd");
63
-
64
- var _debug = _interopRequireDefault(require("debug"));
65
-
66
- var _takeRight = _interopRequireDefault(require("lodash/takeRight"));
67
-
68
- var _pointMenu = _interopRequireDefault(require("./point-menu"));
69
-
70
- var _range = _interopRequireDefault(require("lodash/range"));
71
-
72
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
73
-
74
- 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; }
75
-
76
- 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; }
77
-
78
- 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); }; }
79
-
80
- 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; } }
81
-
82
- var log = (0, _debug["default"])('pie-lib:rubric:authoring');
83
-
84
- var reorder = function reorder(list, startIndex, endIndex) {
85
- var result = Array.from(list);
86
-
87
- var _result$splice = result.splice(startIndex, 1),
88
- _result$splice2 = (0, _slicedToArray2["default"])(_result$splice, 1),
89
- removed = _result$splice2[0];
90
-
91
- result.splice(endIndex, 0, removed);
92
- return result;
93
- };
94
-
95
- var RubricType = _propTypes["default"].shape({
96
- excludeZero: _propTypes["default"].bool,
97
- points: _propTypes["default"].arrayOf(_propTypes["default"].string),
98
- sampleAnswers: _propTypes["default"].arrayOf(_propTypes["default"].string),
99
- maxPoints: _propTypes["default"].number,
100
- rubriclessInstruction: _propTypes["default"].string
101
- });
102
-
103
- exports.RubricType = RubricType;
104
- var MaxPoints = (0, _styles.withStyles)(function (theme) {
105
- return {
106
- formControl: {
107
- minWidth: '120px',
108
- margin: theme.spacing.unit
109
- }
110
- };
111
- })(function (props) {
112
- var value = props.value,
113
- _onChange = props.onChange,
114
- max = props.max,
115
- classes = props.classes;
116
- return /*#__PURE__*/_react["default"].createElement(_FormControl["default"], {
117
- className: classes.formControl,
118
- variant: "outlined"
119
- }, /*#__PURE__*/_react["default"].createElement(_InputLabel["default"], {
120
- width: 100,
121
- htmlFor: "..."
122
- }, "Max Points"), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
123
- value: value,
124
- onChange: function onChange(e) {
125
- return _onChange(e.target.value);
126
- },
127
- input: /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
128
- labelWidth: 80
129
- })
130
- }, (0, _range["default"])(1, max + 1).map(function (v) {
131
- return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
132
- key: "".concat(v),
133
- value: v
134
- }, v);
135
- })));
136
- }); // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
137
- // if the value is '', the Sample Answer input field will be empty
138
-
139
- var checkSampleAnswer = function checkSampleAnswer(sampleAnswer) {
140
- return sampleAnswer === null || sampleAnswer === 'null';
141
- };
142
-
143
- var PointConfig = (0, _styles.withStyles)(function (theme) {
144
- return {
145
- pointConfig: {},
146
- row: {
147
- display: 'flex',
148
- width: '100%',
149
- position: 'relative'
150
- },
151
- editor: {
152
- width: '100%',
153
- backgroundColor: "".concat(theme.palette.common.white, " !important")
154
- },
155
- dragIndicator: {
156
- paddingTop: theme.spacing.unit,
157
- color: _grey["default"][500]
158
- },
159
- pointsLabel: {
160
- color: _grey["default"][500],
161
- paddingBottom: theme.spacing.unit,
162
- textTransform: 'uppercase'
163
- },
164
- sampleAnswersEditor: {
165
- paddingLeft: theme.spacing.unit * 3
166
- },
167
- pointMenu: {
168
- position: 'absolute',
169
- right: 0
170
- },
171
- errorText: {
172
- fontSize: theme.typography.fontSize - 2,
173
- color: theme.palette.error.main,
174
- paddingLeft: theme.spacing.unit * 3,
175
- paddingTop: theme.spacing.unit
176
- }
177
- };
178
- })(function (props) {
179
- var points = props.points,
180
- content = props.content,
181
- classes = props.classes,
182
- sampleAnswer = props.sampleAnswer,
183
- _props$mathMlOptions = props.mathMlOptions,
184
- mathMlOptions = _props$mathMlOptions === void 0 ? {} : _props$mathMlOptions,
185
- error = props.error,
186
- _props$pluginOpts = props.pluginOpts,
187
- pluginOpts = _props$pluginOpts === void 0 ? {} : _props$pluginOpts,
188
- excludeZero = props.excludeZero;
189
- var pointsCount = excludeZero ? points + 1 : points;
190
- var pointsLabel = "".concat(pointsCount, " ").concat(pointsCount <= 1 ? 'pt' : 'pts');
191
- var showSampleAnswer = checkSampleAnswer(sampleAnswer);
192
- return /*#__PURE__*/_react["default"].createElement("div", {
193
- className: classes.pointConfig
194
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
195
- variant: "overline",
196
- className: classes.pointsLabel
197
- }, pointsLabel), /*#__PURE__*/_react["default"].createElement("div", {
198
- className: classes.row
199
- }, /*#__PURE__*/_react["default"].createElement(_DragIndicator["default"], {
200
- className: classes.dragIndicator
201
- }), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
202
- className: classes.editor,
203
- error: error,
204
- pluginProps: pluginOpts,
205
- markup: content,
206
- onChange: props.onChange,
207
- mathMlOptions: mathMlOptions
208
- }), /*#__PURE__*/_react["default"].createElement(_pointMenu["default"], {
209
- classes: {
210
- icon: classes.pointMenu
211
- },
212
- showSampleAnswer: showSampleAnswer,
213
- onChange: props.onMenuChange
214
- })), error && /*#__PURE__*/_react["default"].createElement("div", {
215
- className: classes.errorText
216
- }, error), !showSampleAnswer && /*#__PURE__*/_react["default"].createElement("div", {
217
- className: classes.sampleAnswersEditor
218
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
219
- variant: "overline",
220
- className: classes.dragIndicator
221
- }, "Sample Response"), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
222
- className: classes.editor,
223
- markup: sampleAnswer,
224
- pluginProps: pluginOpts,
225
- onChange: props.onSampleChange,
226
- mathMlOptions: mathMlOptions
227
- })));
228
- });
229
- exports.PointConfig = PointConfig;
230
-
231
- var RawAuthoring = /*#__PURE__*/function (_React$Component) {
232
- (0, _inherits2["default"])(RawAuthoring, _React$Component);
233
-
234
- var _super = _createSuper(RawAuthoring);
235
-
236
- function RawAuthoring() {
237
- var _this;
238
-
239
- (0, _classCallCheck2["default"])(this, RawAuthoring);
240
-
241
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
242
- args[_key] = arguments[_key];
243
- }
244
-
245
- _this = _super.call.apply(_super, [this].concat(args));
246
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragEnd", function (result) {
247
- if (!result.destination) {
248
- return;
249
- }
250
-
251
- var _this$props = _this.props,
252
- value = _this$props.value,
253
- onChange = _this$props.onChange;
254
- var points = reorder(value.points, result.source.index, result.destination.index);
255
- var sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);
256
- onChange(_objectSpread(_objectSpread({}, value), {}, {
257
- points: points,
258
- sampleAnswers: sampleAnswers
259
- }));
260
- });
261
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeRubriclessInstruction", function (input) {
262
- var _this$props2 = _this.props,
263
- value = _this$props2.value,
264
- onChange = _this$props2.onChange;
265
- onChange(_objectSpread(_objectSpread({}, value), {}, {
266
- rubriclessInstruction: input
267
- }));
268
- });
269
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxPoints", function (maxPoints) {
270
- var _this$props3 = _this.props,
271
- value = _this$props3.value,
272
- onChange = _this$props3.onChange;
273
- onChange(_objectSpread(_objectSpread({}, value), {}, {
274
- maxPoints: maxPoints
275
- }));
276
- });
277
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeContent", function (index, content, type) {
278
- // type could be 'points' or 'sampleAnswers'
279
- log("changeModel[".concat(type, "]:"), index, content);
280
-
281
- if (type !== 'points' && type !== 'sampleAnswers') {
282
- return;
283
- }
284
-
285
- var _this$props4 = _this.props,
286
- value = _this$props4.value,
287
- onChange = _this$props4.onChange;
288
- var items = value[type] && Array.from(value[type]);
289
- items.splice(index, 1, content);
290
- log("changeModel[".concat(type, "]:"), items);
291
- onChange(_objectSpread(_objectSpread({}, value), {}, (0, _defineProperty2["default"])({}, type, items)));
292
- });
293
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "excludeZeros", function () {
294
- var _this$props5 = _this.props,
295
- value = _this$props5.value,
296
- onChange = _this$props5.onChange;
297
- onChange(_objectSpread(_objectSpread({}, value), {}, {
298
- excludeZero: !value.excludeZero
299
- }));
300
- });
301
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPointMenuChange", function (index, clickedItem) {
302
- if (clickedItem === 'sample') {
303
- var value = _this.props.value;
304
- var sampleAnswers = Array.from(value.sampleAnswers || []);
305
-
306
- if (checkSampleAnswer(sampleAnswers[index])) {
307
- // an empty string will display an empty Sample Answer input field
308
- _this.changeContent(index, '', 'sampleAnswers');
309
- } else {
310
- // when the content is null or 'null', the Sample Answer input field will not be displayed
311
- _this.changeContent(index, null, 'sampleAnswers');
312
- }
313
- }
314
- });
315
- return _this;
316
- }
317
-
318
- (0, _createClass2["default"])(RawAuthoring, [{
319
- key: "render",
320
- value: function render() {
321
- var _this2 = this;
322
-
323
- var _this$props6 = this.props,
324
- classes = _this$props6.classes,
325
- className = _this$props6.className,
326
- value = _this$props6.value,
327
- _this$props6$mathMlOp = _this$props6.mathMlOptions,
328
- mathMlOptions = _this$props6$mathMlOp === void 0 ? {} : _this$props6$mathMlOp,
329
- _this$props6$config = _this$props6.config,
330
- config = _this$props6$config === void 0 ? {} : _this$props6$config,
331
- _this$props6$rubricle = _this$props6.rubricless,
332
- rubricless = _this$props6$rubricle === void 0 ? false : _this$props6$rubricle,
333
- _this$props6$pluginOp = _this$props6.pluginOpts,
334
- pluginOpts = _this$props6$pluginOp === void 0 ? {} : _this$props6$pluginOp;
335
-
336
- var _ref = value || {},
337
- _ref$excludeZeroEnabl = _ref.excludeZeroEnabled,
338
- excludeZeroEnabled = _ref$excludeZeroEnabl === void 0 ? true : _ref$excludeZeroEnabl,
339
- _ref$maxPointsEnabled = _ref.maxPointsEnabled,
340
- maxPointsEnabled = _ref$maxPointsEnabled === void 0 ? true : _ref$maxPointsEnabled,
341
- _ref$errors = _ref.errors,
342
- errors = _ref$errors === void 0 ? {} : _ref$errors,
343
- _ref$rubriclessInstru = _ref.rubriclessInstructionEnabled,
344
- rubriclessInstructionEnabled = _ref$rubriclessInstru === void 0 ? false : _ref$rubriclessInstru,
345
- _ref$maxPoints = _ref.maxPoints,
346
- maxPoints = _ref$maxPoints === void 0 ? 10 : _ref$maxPoints; // rubric will contain a max value for maxPoints
347
-
348
-
349
- var _ref2 = config || {},
350
- _ref2$rubriclessInstr = _ref2.rubriclessInstruction,
351
- rubriclessInstruction = _ref2$rubriclessInstr === void 0 ? {} : _ref2$rubriclessInstr,
352
- _ref2$maxMaxPoints = _ref2.maxMaxPoints,
353
- maxMaxPoints = _ref2$maxMaxPoints === void 0 ? 10 : _ref2$maxMaxPoints;
354
-
355
- var _ref3 = errors || {},
356
- pointsDescriptorsErrors = _ref3.pointsDescriptorsErrors;
357
-
358
- if (value && Number.isFinite(value.maxPoints)) {
359
- // eslint-disable-next-line no-console
360
- console.warn('maxPoints is deprecated - remove from model');
361
- } // for rubric value is computed based on points
362
-
363
-
364
- var maxPointsValue = maxPoints;
365
- return /*#__PURE__*/_react["default"].createElement("div", {
366
- className: (0, _classnames["default"])(classes["class"], className)
367
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
368
- variant: "h5",
369
- className: classes.rubricTitle
370
- }, "Rubric"), /*#__PURE__*/_react["default"].createElement(_FormGroup["default"], {
371
- row: true
372
- }, maxPointsEnabled && /*#__PURE__*/_react["default"].createElement(MaxPoints, {
373
- max: maxMaxPoints < 100 ? maxMaxPoints : 100,
374
- value: maxPointsValue,
375
- onChange: this.changeMaxPoints,
376
- pluginOpts: pluginOpts
377
- }), excludeZeroEnabled && /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
378
- label: "Exclude zeros",
379
- control: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
380
- checked: value.excludeZero,
381
- onChange: this.excludeZeros
382
- })
383
- })), rubriclessInstructionEnabled && rubricless && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
384
- label: rubriclessInstruction.label,
385
- className: classes.inputContainer
386
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
387
- className: classes.input,
388
- markup: value.rubriclessInstruction || '',
389
- onChange: this.changeRubriclessInstruction,
390
- pluginProps: pluginOpts,
391
- nonEmpty: false,
392
- disableUnderline: true,
393
- languageCharactersProps: [{
394
- language: 'spanish'
395
- }, {
396
- language: 'special'
397
- }],
398
- mathMlOptions: mathMlOptions
399
- })), /*#__PURE__*/_react["default"].createElement("div", {
400
- className: rubricless ? classes.rubricless : classes.container
401
- }, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.DragDropContext, {
402
- onDragEnd: this.dragEnd
403
- }, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Droppable, {
404
- droppableId: "droppable"
405
- }, function (provided) {
406
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, provided.droppableProps, {
407
- ref: provided.innerRef
408
- }), value.points.map(function (p, index) {
409
- return /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Draggable, {
410
- key: "".concat(p.points, "-").concat(index),
411
- index: index,
412
- draggableId: index.toString()
413
- }, function (provided) {
414
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
415
- className: classes.configHolder,
416
- ref: provided.innerRef
417
- }, provided.draggableProps, provided.dragHandleProps), /*#__PURE__*/_react["default"].createElement(PointConfig, {
418
- points: value.points.length - 1 - index,
419
- content: p,
420
- error: pointsDescriptorsErrors && pointsDescriptorsErrors[value.points.length - 1 - index],
421
- sampleAnswer: value.sampleAnswers && value.sampleAnswers[index],
422
- onChange: function onChange(content) {
423
- return _this2.changeContent(index, content, 'points');
424
- },
425
- onSampleChange: function onSampleChange(content) {
426
- return _this2.changeContent(index, content, 'sampleAnswers');
427
- },
428
- onMenuChange: function onMenuChange(clickedItem) {
429
- return _this2.onPointMenuChange(index, clickedItem);
430
- },
431
- mathMlOptions: mathMlOptions,
432
- pluginOpts: pluginOpts,
433
- excludeZero: value.excludeZero
434
- }));
435
- });
436
- }), provided.placeholder);
437
- }))));
438
- }
439
- }]);
440
- return RawAuthoring;
441
- }(_react["default"].Component);
442
-
443
- exports.RawAuthoring = RawAuthoring;
444
- (0, _defineProperty2["default"])(RawAuthoring, "propTypes", {
445
- classes: _propTypes["default"].object.isRequired,
446
- className: _propTypes["default"].string,
447
- value: RubricType,
448
- config: _propTypes["default"].object,
449
- pluginOpts: _propTypes["default"].object,
450
- rubricless: _propTypes["default"].bool,
451
- onChange: _propTypes["default"].func
452
- });
453
- (0, _defineProperty2["default"])(RawAuthoring, "defaultProps", {});
454
-
455
- var styles = function styles(theme) {
456
- return {
457
- container: {
458
- backgroundColor: _grey["default"][200],
459
- borderWidth: 1,
460
- borderStyle: 'solid',
461
- borderColor: _grey["default"][300],
462
- padding: theme.spacing.unit * 2,
463
- margin: theme.spacing.unit
464
- },
465
- inputContainer: {
466
- width: '100%',
467
- paddingTop: theme.spacing.unit * 2,
468
- marginBottom: theme.spacing.unit * 2
469
- },
470
- rubricless: {
471
- display: 'none'
472
- },
473
- configHolder: {
474
- paddingTop: theme.spacing.unit,
475
- paddingBottom: theme.spacing.unit
476
- },
477
- rubricTitle: {
478
- paddingLeft: theme.spacing.unit,
479
- margin: theme.spacing.unit
480
- }
481
- };
482
- };
483
-
484
- var StyledRawAuthoring = (0, _styles.withStyles)(styles)(RawAuthoring);
485
-
486
- var Reverse = function Reverse(props) {
487
- var _ref4 = props || {},
488
- _ref4$rubricless = _ref4.rubricless,
489
- rubricless = _ref4$rubricless === void 0 ? false : _ref4$rubricless,
490
- _ref4$config = _ref4.config,
491
- config = _ref4$config === void 0 ? {} : _ref4$config,
492
- _ref4$pluginOpts = _ref4.pluginOpts,
493
- pluginOpts = _ref4$pluginOpts === void 0 ? {} : _ref4$pluginOpts;
494
-
495
- var points = Array.from(props.value.points || []).reverse();
496
- var sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();
497
-
498
- if (points.length > sampleAnswers.length) {
499
- sampleAnswers = (0, _times["default"])(points.length - sampleAnswers.length).map(function () {
500
- return null;
501
- }).concat(sampleAnswers);
502
- }
503
-
504
- var value = _objectSpread(_objectSpread({}, props.value), {}, {
505
- points: points,
506
- sampleAnswers: sampleAnswers
507
- });
508
-
509
- var onChange = function onChange(value) {
510
- props.onChange(_objectSpread(_objectSpread({}, value), {}, {
511
- points: Array.from(value.points || []).reverse(),
512
- sampleAnswers: Array.from(value.sampleAnswers || []).reverse()
513
- }));
514
- };
515
-
516
- return /*#__PURE__*/_react["default"].createElement(StyledRawAuthoring, {
517
- value: value,
518
- config: config,
519
- onChange: onChange,
520
- rubricless: rubricless,
521
- pluginOpts: pluginOpts
522
- });
523
- };
524
-
525
- Reverse.propTypes = {
526
- value: RubricType,
527
- config: _propTypes["default"].object,
528
- pluginOpts: _propTypes["default"].object,
529
- rubricless: _propTypes["default"].bool,
530
- getIndex: _propTypes["default"].func,
531
- onChange: _propTypes["default"].func
532
- };
533
- var _default = Reverse;
534
- exports["default"] = _default;
535
- //# sourceMappingURL=authoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/pie-toolbox-rubric/authoring.jsx"],"names":["log","reorder","list","startIndex","endIndex","result","Array","from","splice","removed","RubricType","PropTypes","shape","excludeZero","bool","points","arrayOf","string","sampleAnswers","maxPoints","number","rubriclessInstruction","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","palette","common","white","dragIndicator","paddingTop","color","grey","pointsLabel","paddingBottom","textTransform","sampleAnswersEditor","paddingLeft","pointMenu","right","errorText","fontSize","typography","error","main","content","mathMlOptions","pluginOpts","pointsCount","showSampleAnswer","icon","onMenuChange","onSampleChange","RawAuthoring","destination","source","index","input","type","items","clickedItem","changeContent","className","config","rubricless","excludeZeroEnabled","maxPointsEnabled","errors","rubriclessInstructionEnabled","maxMaxPoints","pointsDescriptorsErrors","Number","isFinite","console","warn","maxPointsValue","rubricTitle","changeMaxPoints","excludeZeros","label","inputContainer","changeRubriclessInstruction","language","container","dragEnd","provided","droppableProps","innerRef","p","toString","configHolder","draggableProps","dragHandleProps","length","onPointMenuChange","placeholder","React","Component","object","isRequired","func","styles","borderWidth","borderStyle","borderColor","padding","marginBottom","StyledRawAuthoring","Reverse","reverse","concat","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/pie-toolbox/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';\nimport { InputContainer } from '@pie-lib/pie-toolbox/config-ui';\n\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 rubriclessInstruction: 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 + 1).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 errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingLeft: theme.spacing.unit * 3,\n paddingTop: theme.spacing.unit,\n },\n}))((props) => {\n const { points, content, classes, sampleAnswer, mathMlOptions = {}, error, pluginOpts = {}, excludeZero } = props;\n const pointsCount = excludeZero ? points + 1 : points;\n const pointsLabel = `${pointsCount} ${pointsCount <= 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 error={error}\n pluginProps={pluginOpts}\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 {error && <div className={classes.errorText}>{error}</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 pluginProps={pluginOpts}\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 config: PropTypes.object,\n pluginOpts: PropTypes.object,\n rubricless: PropTypes.bool,\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 changeRubriclessInstruction = (input) => {\n const { value, onChange } = this.props;\n onChange({ ...value, rubriclessInstruction: input });\n };\n\n changeMaxPoints = (maxPoints) => {\n const { value, onChange } = this.props;\n\n onChange({ ...value, maxPoints });\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 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 {\n classes,\n className,\n value,\n mathMlOptions = {},\n config = {},\n rubricless = false,\n pluginOpts = {},\n } = this.props;\n let {\n excludeZeroEnabled = true,\n maxPointsEnabled = true,\n errors = {},\n rubriclessInstructionEnabled = false,\n maxPoints = 10,\n } = value || {};\n // rubric will contain a max value for maxPoints\n const { rubriclessInstruction = {}, maxMaxPoints = 10 } = config || {};\n const { pointsDescriptorsErrors } = errors || {};\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 // for rubric value is computed based on points\n const maxPointsValue = maxPoints;\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 && (\n <MaxPoints\n max={maxMaxPoints < 100 ? maxMaxPoints : 100}\n value={maxPointsValue}\n onChange={this.changeMaxPoints}\n pluginOpts={pluginOpts}\n />\n )}\n {excludeZeroEnabled && (\n <FormControlLabel\n label=\"Exclude zeros\"\n control={<Checkbox checked={value.excludeZero} onChange={this.excludeZeros} />}\n />\n )}\n </FormGroup>\n\n {rubriclessInstructionEnabled && rubricless && (\n <InputContainer label={rubriclessInstruction.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={value.rubriclessInstruction || ''}\n onChange={this.changeRubriclessInstruction}\n pluginProps={pluginOpts}\n nonEmpty={false}\n disableUnderline\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n <div className={rubricless ? classes.rubricless : 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 return (\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 error={\n pointsDescriptorsErrors && pointsDescriptorsErrors[value.points.length - 1 - index]\n }\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 pluginOpts={pluginOpts}\n excludeZero={value.excludeZero}\n />\n </div>\n )}\n </Draggable>\n );\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 inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n rubricless: {\n display: 'none',\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 { rubricless = false, config = {}, pluginOpts = {} } = 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 (\n <StyledRawAuthoring\n value={value}\n config={config}\n onChange={onChange}\n rubricless={rubricless}\n pluginOpts={pluginOpts}\n />\n );\n};\n\nReverse.propTypes = {\n value: RubricType,\n config: PropTypes.object,\n pluginOpts: PropTypes.object,\n rubricless: PropTypes.bool,\n getIndex: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default Reverse;\n"],"file":"authoring.js"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "Authoring", {
9
- enumerable: true,
10
- get: function get() {
11
- return _authoring["default"];
12
- }
13
- });
14
- exports.RUBRIC_TYPES = void 0;
15
-
16
- var _authoring = _interopRequireDefault(require("./authoring"));
17
-
18
- var RUBRIC_TYPES = {
19
- SIMPLE_RUBRIC: 'simpleRubric',
20
- MULTI_TRAIT_RUBRIC: 'multiTraitRubric',
21
- RUBRICLESS: 'rubricless'
22
- };
23
- exports.RUBRIC_TYPES = RUBRIC_TYPES;
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/pie-toolbox-rubric/index.js"],"names":["RUBRIC_TYPES","SIMPLE_RUBRIC","MULTI_TRAIT_RUBRIC","RUBRICLESS"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAEA,IAAMA,YAAY,GAAG;AACnBC,EAAAA,aAAa,EAAE,cADI;AAEnBC,EAAAA,kBAAkB,EAAE,kBAFD;AAGnBC,EAAAA,UAAU,EAAE;AAHO,CAArB","sourcesContent":["import Authoring from './authoring';\n\nconst RUBRIC_TYPES = {\n SIMPLE_RUBRIC: 'simpleRubric',\n MULTI_TRAIT_RUBRIC: 'multiTraitRubric',\n RUBRICLESS: 'rubricless',\n};\n\nexport { Authoring, RUBRIC_TYPES };\n"],"file":"index.js"}