@pie-lib/rubric 0.8.32-next.0 → 0.9.1-beta.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/CHANGELOG.md +10 -110
- package/NEXT.CHANGELOG.json +1 -0
- package/package.json +5 -3
- package/src/__tests__/__snapshots__/rubric.test.jsx.snap +48 -0
- package/src/__tests__/rubric.test.jsx +91 -0
- package/src/authoring.jsx +99 -12
- package/src/index.js +1 -0
- package/lib/authoring.js +0 -474
- package/lib/authoring.js.map +0 -1
- package/lib/index.js +0 -23
- package/lib/index.js.map +0 -1
- package/lib/point-menu.js +0 -172
- package/lib/point-menu.js.map +0 -1
package/lib/authoring.js
DELETED
|
@@ -1,474 +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/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
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
73
|
-
|
|
74
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
75
|
-
|
|
76
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
77
|
-
|
|
78
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
79
|
-
|
|
80
|
-
var log = (0, _debug["default"])('pie-lib:rubric:authoring');
|
|
81
|
-
|
|
82
|
-
var reorder = function reorder(list, startIndex, endIndex) {
|
|
83
|
-
var result = Array.from(list);
|
|
84
|
-
|
|
85
|
-
var _result$splice = result.splice(startIndex, 1),
|
|
86
|
-
_result$splice2 = (0, _slicedToArray2["default"])(_result$splice, 1),
|
|
87
|
-
removed = _result$splice2[0];
|
|
88
|
-
|
|
89
|
-
result.splice(endIndex, 0, removed);
|
|
90
|
-
return result;
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
var RubricType = _propTypes["default"].shape({
|
|
94
|
-
excludeZero: _propTypes["default"].bool,
|
|
95
|
-
points: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
96
|
-
sampleAnswers: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
97
|
-
maxPoints: _propTypes["default"].number
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
exports.RubricType = RubricType;
|
|
101
|
-
var MaxPoints = (0, _styles.withStyles)(function (theme) {
|
|
102
|
-
return {
|
|
103
|
-
formControl: {
|
|
104
|
-
minWidth: '120px',
|
|
105
|
-
margin: theme.spacing.unit
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
})(function (props) {
|
|
109
|
-
var value = props.value,
|
|
110
|
-
_onChange = props.onChange,
|
|
111
|
-
max = props.max,
|
|
112
|
-
classes = props.classes;
|
|
113
|
-
return /*#__PURE__*/_react["default"].createElement(_FormControl["default"], {
|
|
114
|
-
className: classes.formControl,
|
|
115
|
-
variant: "outlined"
|
|
116
|
-
}, /*#__PURE__*/_react["default"].createElement(_InputLabel["default"], {
|
|
117
|
-
width: 100,
|
|
118
|
-
htmlFor: "..."
|
|
119
|
-
}, "Max Points"), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
|
|
120
|
-
value: value,
|
|
121
|
-
onChange: function onChange(e) {
|
|
122
|
-
return _onChange(e.target.value);
|
|
123
|
-
},
|
|
124
|
-
input: /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
|
|
125
|
-
labelWidth: 80
|
|
126
|
-
})
|
|
127
|
-
}, (0, _range["default"])(1, max).map(function (v) {
|
|
128
|
-
return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
|
|
129
|
-
key: "".concat(v),
|
|
130
|
-
value: v
|
|
131
|
-
}, v);
|
|
132
|
-
})));
|
|
133
|
-
}); // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
|
|
134
|
-
// if the value is '', the Sample Answer input field will be empty
|
|
135
|
-
|
|
136
|
-
var checkSampleAnswer = function checkSampleAnswer(sampleAnswer) {
|
|
137
|
-
return sampleAnswer === null || sampleAnswer === 'null';
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
var PointConfig = (0, _styles.withStyles)(function (theme) {
|
|
141
|
-
return {
|
|
142
|
-
pointConfig: {},
|
|
143
|
-
row: {
|
|
144
|
-
display: 'flex',
|
|
145
|
-
width: '100%',
|
|
146
|
-
position: 'relative'
|
|
147
|
-
},
|
|
148
|
-
editor: {
|
|
149
|
-
width: '100%',
|
|
150
|
-
backgroundColor: "".concat(theme.palette.common.white, " !important")
|
|
151
|
-
},
|
|
152
|
-
dragIndicator: {
|
|
153
|
-
paddingTop: theme.spacing.unit,
|
|
154
|
-
color: _grey["default"][500]
|
|
155
|
-
},
|
|
156
|
-
pointsLabel: {
|
|
157
|
-
color: _grey["default"][500],
|
|
158
|
-
paddingBottom: theme.spacing.unit,
|
|
159
|
-
textTransform: 'uppercase'
|
|
160
|
-
},
|
|
161
|
-
sampleAnswersEditor: {
|
|
162
|
-
paddingLeft: theme.spacing.unit * 3
|
|
163
|
-
},
|
|
164
|
-
pointMenu: {
|
|
165
|
-
position: 'absolute',
|
|
166
|
-
right: 0
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
})(function (props) {
|
|
170
|
-
var points = props.points,
|
|
171
|
-
content = props.content,
|
|
172
|
-
classes = props.classes,
|
|
173
|
-
sampleAnswer = props.sampleAnswer,
|
|
174
|
-
_props$mathMlOptions = props.mathMlOptions,
|
|
175
|
-
mathMlOptions = _props$mathMlOptions === void 0 ? {} : _props$mathMlOptions;
|
|
176
|
-
var pointsLabel = "".concat(points, " ").concat(points <= 1 ? 'pt' : 'pts');
|
|
177
|
-
var showSampleAnswer = checkSampleAnswer(sampleAnswer);
|
|
178
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
179
|
-
className: classes.pointConfig
|
|
180
|
-
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
181
|
-
variant: "overline",
|
|
182
|
-
className: classes.pointsLabel
|
|
183
|
-
}, pointsLabel), /*#__PURE__*/_react["default"].createElement("div", {
|
|
184
|
-
className: classes.row
|
|
185
|
-
}, /*#__PURE__*/_react["default"].createElement(_DragIndicator["default"], {
|
|
186
|
-
className: classes.dragIndicator
|
|
187
|
-
}), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
188
|
-
className: classes.editor,
|
|
189
|
-
markup: content,
|
|
190
|
-
onChange: props.onChange,
|
|
191
|
-
mathMlOptions: mathMlOptions
|
|
192
|
-
}), /*#__PURE__*/_react["default"].createElement(_pointMenu["default"], {
|
|
193
|
-
classes: {
|
|
194
|
-
icon: classes.pointMenu
|
|
195
|
-
},
|
|
196
|
-
showSampleAnswer: showSampleAnswer,
|
|
197
|
-
onChange: props.onMenuChange
|
|
198
|
-
})), !showSampleAnswer && /*#__PURE__*/_react["default"].createElement("div", {
|
|
199
|
-
className: classes.sampleAnswersEditor
|
|
200
|
-
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
201
|
-
variant: "overline",
|
|
202
|
-
className: classes.dragIndicator
|
|
203
|
-
}, "Sample Response"), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
204
|
-
className: classes.editor,
|
|
205
|
-
markup: sampleAnswer,
|
|
206
|
-
onChange: props.onSampleChange,
|
|
207
|
-
mathMlOptions: mathMlOptions
|
|
208
|
-
})));
|
|
209
|
-
});
|
|
210
|
-
exports.PointConfig = PointConfig;
|
|
211
|
-
|
|
212
|
-
var RawAuthoring = /*#__PURE__*/function (_React$Component) {
|
|
213
|
-
(0, _inherits2["default"])(RawAuthoring, _React$Component);
|
|
214
|
-
|
|
215
|
-
var _super = _createSuper(RawAuthoring);
|
|
216
|
-
|
|
217
|
-
function RawAuthoring() {
|
|
218
|
-
var _this;
|
|
219
|
-
|
|
220
|
-
(0, _classCallCheck2["default"])(this, RawAuthoring);
|
|
221
|
-
|
|
222
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
223
|
-
args[_key] = arguments[_key];
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
227
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragEnd", function (result) {
|
|
228
|
-
if (!result.destination) {
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
var _this$props = _this.props,
|
|
233
|
-
value = _this$props.value,
|
|
234
|
-
onChange = _this$props.onChange;
|
|
235
|
-
var points = reorder(value.points, result.source.index, result.destination.index);
|
|
236
|
-
var sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);
|
|
237
|
-
onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
238
|
-
points: points,
|
|
239
|
-
sampleAnswers: sampleAnswers
|
|
240
|
-
}));
|
|
241
|
-
});
|
|
242
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxPoints", function (maxPoints) {
|
|
243
|
-
var _this$props2 = _this.props,
|
|
244
|
-
value = _this$props2.value,
|
|
245
|
-
onChange = _this$props2.onChange;
|
|
246
|
-
var currentMax = value.points.length - 1;
|
|
247
|
-
log('current', currentMax, 'new: ', maxPoints);
|
|
248
|
-
var points, sampleAnswers;
|
|
249
|
-
|
|
250
|
-
if (maxPoints > currentMax) {
|
|
251
|
-
points = (0, _times["default"])(maxPoints - currentMax).map(function () {
|
|
252
|
-
return '';
|
|
253
|
-
}).concat(value.points);
|
|
254
|
-
sampleAnswers = (0, _times["default"])(maxPoints - currentMax).map(function () {
|
|
255
|
-
return null;
|
|
256
|
-
}).concat(value.sampleAnswers);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
if (maxPoints < currentMax) {
|
|
260
|
-
log('less than');
|
|
261
|
-
points = (0, _takeRight["default"])(value.points, maxPoints + 1);
|
|
262
|
-
sampleAnswers = (0, _takeRight["default"])(value.sampleAnswers, maxPoints + 1);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
if (points) {
|
|
266
|
-
onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
267
|
-
points: points,
|
|
268
|
-
sampleAnswers: sampleAnswers
|
|
269
|
-
}));
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeContent", function (index, content, type) {
|
|
273
|
-
// type could be 'points' or 'sampleAnswers'
|
|
274
|
-
log("changeModel[".concat(type, "]:"), index, content);
|
|
275
|
-
|
|
276
|
-
if (type !== 'points' && type !== 'sampleAnswers') {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
var _this$props3 = _this.props,
|
|
281
|
-
value = _this$props3.value,
|
|
282
|
-
onChange = _this$props3.onChange;
|
|
283
|
-
var items = value[type] && Array.from(value[type]);
|
|
284
|
-
items.splice(index, 1, content);
|
|
285
|
-
log("changeModel[".concat(type, "]:"), items);
|
|
286
|
-
onChange(_objectSpread(_objectSpread({}, value), {}, (0, _defineProperty2["default"])({}, type, items)));
|
|
287
|
-
});
|
|
288
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "excludeZeros", function () {
|
|
289
|
-
var _this$props4 = _this.props,
|
|
290
|
-
value = _this$props4.value,
|
|
291
|
-
onChange = _this$props4.onChange;
|
|
292
|
-
onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
293
|
-
excludeZero: !value.excludeZero
|
|
294
|
-
}));
|
|
295
|
-
});
|
|
296
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "shouldRenderPoint", function (index, value) {
|
|
297
|
-
if (!value.excludeZero) {
|
|
298
|
-
return true;
|
|
299
|
-
} else {
|
|
300
|
-
if (index < value.points.length - 1) {
|
|
301
|
-
return true;
|
|
302
|
-
} else if (index === value.points.length - 1) {
|
|
303
|
-
return false;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
return true;
|
|
307
|
-
}
|
|
308
|
-
});
|
|
309
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPointMenuChange", function (index, clickedItem) {
|
|
310
|
-
if (clickedItem === 'sample') {
|
|
311
|
-
var value = _this.props.value;
|
|
312
|
-
var sampleAnswers = Array.from(value.sampleAnswers || []);
|
|
313
|
-
|
|
314
|
-
if (checkSampleAnswer(sampleAnswers[index])) {
|
|
315
|
-
// an empty string will display an empty Sample Answer input field
|
|
316
|
-
_this.changeContent(index, '', 'sampleAnswers');
|
|
317
|
-
} else {
|
|
318
|
-
// when the content is null or 'null', the Sample Answer input field will not be displayed
|
|
319
|
-
_this.changeContent(index, null, 'sampleAnswers');
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
return _this;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
(0, _createClass2["default"])(RawAuthoring, [{
|
|
327
|
-
key: "render",
|
|
328
|
-
value: function render() {
|
|
329
|
-
var _this2 = this;
|
|
330
|
-
|
|
331
|
-
var _this$props5 = this.props,
|
|
332
|
-
classes = _this$props5.classes,
|
|
333
|
-
className = _this$props5.className,
|
|
334
|
-
value = _this$props5.value,
|
|
335
|
-
_this$props5$mathMlOp = _this$props5.mathMlOptions,
|
|
336
|
-
mathMlOptions = _this$props5$mathMlOp === void 0 ? {} : _this$props5$mathMlOp;
|
|
337
|
-
|
|
338
|
-
var _ref = value || {},
|
|
339
|
-
_ref$excludeZeroEnabl = _ref.excludeZeroEnabled,
|
|
340
|
-
excludeZeroEnabled = _ref$excludeZeroEnabl === void 0 ? true : _ref$excludeZeroEnabl,
|
|
341
|
-
_ref$maxPointsEnabled = _ref.maxPointsEnabled,
|
|
342
|
-
maxPointsEnabled = _ref$maxPointsEnabled === void 0 ? true : _ref$maxPointsEnabled;
|
|
343
|
-
|
|
344
|
-
if (value && Number.isFinite(value.maxPoints)) {
|
|
345
|
-
// eslint-disable-next-line no-console
|
|
346
|
-
console.warn('maxPoints is deprecated - remove from model');
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
350
|
-
className: (0, _classnames["default"])(classes["class"], className)
|
|
351
|
-
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
352
|
-
variant: "h5",
|
|
353
|
-
className: classes.rubricTitle
|
|
354
|
-
}, "Rubric"), /*#__PURE__*/_react["default"].createElement(_FormGroup["default"], {
|
|
355
|
-
row: true
|
|
356
|
-
}, maxPointsEnabled && /*#__PURE__*/_react["default"].createElement(MaxPoints, {
|
|
357
|
-
max: 10,
|
|
358
|
-
value: value.points.length - 1,
|
|
359
|
-
onChange: this.changeMaxPoints
|
|
360
|
-
}), excludeZeroEnabled && /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
|
|
361
|
-
label: "Exclude zeros",
|
|
362
|
-
control: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
363
|
-
checked: value.excludeZero,
|
|
364
|
-
onChange: this.excludeZeros
|
|
365
|
-
})
|
|
366
|
-
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
367
|
-
className: classes.container
|
|
368
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.DragDropContext, {
|
|
369
|
-
onDragEnd: this.dragEnd
|
|
370
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Droppable, {
|
|
371
|
-
droppableId: "droppable"
|
|
372
|
-
}, function (provided) {
|
|
373
|
-
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, provided.droppableProps, {
|
|
374
|
-
ref: provided.innerRef
|
|
375
|
-
}), value.points.map(function (p, index) {
|
|
376
|
-
return _this2.shouldRenderPoint(index, value) && /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Draggable, {
|
|
377
|
-
key: "".concat(p.points, "-").concat(index),
|
|
378
|
-
index: index,
|
|
379
|
-
draggableId: index.toString()
|
|
380
|
-
}, function (provided) {
|
|
381
|
-
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
382
|
-
className: classes.configHolder,
|
|
383
|
-
ref: provided.innerRef
|
|
384
|
-
}, provided.draggableProps, provided.dragHandleProps), /*#__PURE__*/_react["default"].createElement(PointConfig, {
|
|
385
|
-
points: value.points.length - 1 - index,
|
|
386
|
-
content: p,
|
|
387
|
-
sampleAnswer: value.sampleAnswers && value.sampleAnswers[index],
|
|
388
|
-
onChange: function onChange(content) {
|
|
389
|
-
return _this2.changeContent(index, content, 'points');
|
|
390
|
-
},
|
|
391
|
-
onSampleChange: function onSampleChange(content) {
|
|
392
|
-
return _this2.changeContent(index, content, 'sampleAnswers');
|
|
393
|
-
},
|
|
394
|
-
onMenuChange: function onMenuChange(clickedItem) {
|
|
395
|
-
return _this2.onPointMenuChange(index, clickedItem);
|
|
396
|
-
},
|
|
397
|
-
mathMlOptions: mathMlOptions
|
|
398
|
-
}));
|
|
399
|
-
});
|
|
400
|
-
}), provided.placeholder);
|
|
401
|
-
}))));
|
|
402
|
-
}
|
|
403
|
-
}]);
|
|
404
|
-
return RawAuthoring;
|
|
405
|
-
}(_react["default"].Component);
|
|
406
|
-
|
|
407
|
-
exports.RawAuthoring = RawAuthoring;
|
|
408
|
-
(0, _defineProperty2["default"])(RawAuthoring, "propTypes", {
|
|
409
|
-
classes: _propTypes["default"].object.isRequired,
|
|
410
|
-
className: _propTypes["default"].string,
|
|
411
|
-
value: RubricType,
|
|
412
|
-
onChange: _propTypes["default"].func
|
|
413
|
-
});
|
|
414
|
-
(0, _defineProperty2["default"])(RawAuthoring, "defaultProps", {});
|
|
415
|
-
|
|
416
|
-
var styles = function styles(theme) {
|
|
417
|
-
return {
|
|
418
|
-
container: {
|
|
419
|
-
backgroundColor: _grey["default"][200],
|
|
420
|
-
borderWidth: 1,
|
|
421
|
-
borderStyle: 'solid',
|
|
422
|
-
borderColor: _grey["default"][300],
|
|
423
|
-
padding: theme.spacing.unit * 2,
|
|
424
|
-
margin: theme.spacing.unit
|
|
425
|
-
},
|
|
426
|
-
configHolder: {
|
|
427
|
-
paddingTop: theme.spacing.unit,
|
|
428
|
-
paddingBottom: theme.spacing.unit
|
|
429
|
-
},
|
|
430
|
-
rubricTitle: {
|
|
431
|
-
paddingLeft: theme.spacing.unit,
|
|
432
|
-
margin: theme.spacing.unit
|
|
433
|
-
}
|
|
434
|
-
};
|
|
435
|
-
};
|
|
436
|
-
|
|
437
|
-
var StyledRawAuthoring = (0, _styles.withStyles)(styles)(RawAuthoring);
|
|
438
|
-
|
|
439
|
-
var Reverse = function Reverse(props) {
|
|
440
|
-
var points = Array.from(props.value.points || []).reverse();
|
|
441
|
-
var sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();
|
|
442
|
-
|
|
443
|
-
if (points.length > sampleAnswers.length) {
|
|
444
|
-
sampleAnswers = (0, _times["default"])(points.length - sampleAnswers.length).map(function () {
|
|
445
|
-
return null;
|
|
446
|
-
}).concat(sampleAnswers);
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
var value = _objectSpread(_objectSpread({}, props.value), {}, {
|
|
450
|
-
points: points,
|
|
451
|
-
sampleAnswers: sampleAnswers
|
|
452
|
-
});
|
|
453
|
-
|
|
454
|
-
var onChange = function onChange(value) {
|
|
455
|
-
props.onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
456
|
-
points: Array.from(value.points || []).reverse(),
|
|
457
|
-
sampleAnswers: Array.from(value.sampleAnswers || []).reverse()
|
|
458
|
-
}));
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
return /*#__PURE__*/_react["default"].createElement(StyledRawAuthoring, {
|
|
462
|
-
value: value,
|
|
463
|
-
onChange: onChange
|
|
464
|
-
});
|
|
465
|
-
};
|
|
466
|
-
|
|
467
|
-
Reverse.propTypes = {
|
|
468
|
-
value: RubricType,
|
|
469
|
-
getIndex: _propTypes["default"].func,
|
|
470
|
-
onChange: _propTypes["default"].func
|
|
471
|
-
};
|
|
472
|
-
var _default = Reverse;
|
|
473
|
-
exports["default"] = _default;
|
|
474
|
-
//# sourceMappingURL=authoring.js.map
|
package/lib/authoring.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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","number","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","content","mathMlOptions","showSampleAnswer","icon","onMenuChange","onSampleChange","RawAuthoring","destination","source","index","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 maxPoints: PropTypes.number,\n});\n\nconst MaxPoints = withStyles((theme) => ({\n formControl: {\n minWidth: '120px',\n margin: theme.spacing.unit,\n },\n}))((props) => {\n const { value, onChange, max, classes } = props;\n\n return (\n <FormControl className={classes.formControl} variant=\"outlined\">\n <InputLabel width={100} htmlFor=\"...\">\n Max Points\n </InputLabel>\n <Select value={value} onChange={(e) => onChange(e.target.value)} input={<OutlinedInput labelWidth={80} />}>\n {range(1, max).map((v) => (\n <MenuItem key={`${v}`} value={v}>\n {v}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n});\n\n// if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed\n// if the value is '', the Sample Answer input field will be empty\nconst checkSampleAnswer = (sampleAnswer) => sampleAnswer === null || sampleAnswer === 'null';\n\nexport const PointConfig = withStyles((theme) => ({\n pointConfig: {},\n row: {\n display: 'flex',\n width: '100%',\n position: 'relative',\n },\n editor: {\n width: '100%',\n backgroundColor: `${theme.palette.common.white} !important`,\n },\n dragIndicator: {\n paddingTop: theme.spacing.unit,\n color: grey[500],\n },\n pointsLabel: {\n color: grey[500],\n paddingBottom: theme.spacing.unit,\n textTransform: 'uppercase',\n },\n sampleAnswersEditor: {\n paddingLeft: theme.spacing.unit * 3,\n },\n pointMenu: {\n position: 'absolute',\n right: 0,\n },\n}))((props) => {\n const { points, content, classes, sampleAnswer, mathMlOptions = {} } = props;\n const pointsLabel = `${points} ${points <= 1 ? 'pt' : 'pts'}`;\n const showSampleAnswer = checkSampleAnswer(sampleAnswer);\n\n return (\n <div className={classes.pointConfig}>\n <Typography variant=\"overline\" className={classes.pointsLabel}>\n {pointsLabel}\n </Typography>\n\n <div className={classes.row}>\n <DragIndicator className={classes.dragIndicator} />\n <EditableHtml\n className={classes.editor}\n markup={content}\n onChange={props.onChange}\n mathMlOptions={mathMlOptions}\n />\n <PointMenu\n classes={{\n icon: classes.pointMenu,\n }}\n showSampleAnswer={showSampleAnswer}\n onChange={props.onMenuChange}\n />\n </div>\n\n {!showSampleAnswer && (\n <div className={classes.sampleAnswersEditor}>\n <Typography variant=\"overline\" className={classes.dragIndicator}>\n Sample Response\n </Typography>\n <EditableHtml\n className={classes.editor}\n markup={sampleAnswer}\n onChange={props.onSampleChange}\n mathMlOptions={mathMlOptions}\n />\n </div>\n )}\n </div>\n );\n});\n\nexport class RawAuthoring extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n value: RubricType,\n onChange: PropTypes.func,\n };\n\n static defaultProps = {};\n\n dragEnd = (result) => {\n if (!result.destination) {\n return;\n }\n\n const { value, onChange } = this.props;\n\n const points = reorder(value.points, result.source.index, result.destination.index);\n const sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);\n\n onChange({ ...value, points, sampleAnswers });\n };\n\n changeMaxPoints = (maxPoints) => {\n const { value, onChange } = this.props;\n const currentMax = value.points.length - 1;\n\n log('current', currentMax, 'new: ', maxPoints);\n\n let points, sampleAnswers;\n if (maxPoints > currentMax) {\n points = times(maxPoints - currentMax)\n .map(() => '')\n .concat(value.points);\n sampleAnswers = times(maxPoints - currentMax)\n .map(() => null)\n .concat(value.sampleAnswers);\n }\n\n if (maxPoints < currentMax) {\n log('less than');\n points = takeRight(value.points, maxPoints + 1);\n sampleAnswers = takeRight(value.sampleAnswers, maxPoints + 1);\n }\n\n if (points) {\n onChange({ ...value, points, sampleAnswers });\n }\n };\n\n changeContent = (index, content, type) => {\n // type could be 'points' or 'sampleAnswers'\n log(`changeModel[${type}]:`, index, content);\n\n if (type !== 'points' && type !== 'sampleAnswers') {\n return;\n }\n\n const { value, onChange } = this.props;\n const items = value[type] && Array.from(value[type]);\n\n items.splice(index, 1, content);\n log(`changeModel[${type}]:`, items);\n\n onChange({ ...value, [type]: items });\n };\n\n excludeZeros = () => {\n const { value, onChange } = this.props;\n\n onChange({ ...value, excludeZero: !value.excludeZero });\n };\n\n shouldRenderPoint = (index, value) => {\n if (!value.excludeZero) {\n return true;\n } else {\n if (index < value.points.length - 1) {\n return true;\n } else if (index === value.points.length - 1) {\n return false;\n }\n\n return true;\n }\n };\n\n onPointMenuChange = (index, clickedItem) => {\n if (clickedItem === 'sample') {\n const { value } = this.props;\n const sampleAnswers = Array.from(value.sampleAnswers || []);\n\n if (checkSampleAnswer(sampleAnswers[index])) {\n // an empty string will display an empty Sample Answer input field\n this.changeContent(index, '', 'sampleAnswers');\n } else {\n // when the content is null or 'null', the Sample Answer input field will not be displayed\n this.changeContent(index, null, 'sampleAnswers');\n }\n }\n };\n\n render() {\n const { classes, className, value, mathMlOptions = {} } = this.props;\n let { excludeZeroEnabled = true, maxPointsEnabled = true } = value || {};\n\n if (value && Number.isFinite(value.maxPoints)) {\n // eslint-disable-next-line no-console\n console.warn('maxPoints is deprecated - remove from model');\n }\n\n return (\n <div className={classNames(classes.class, className)}>\n <Typography variant=\"h5\" className={classes.rubricTitle}>\n Rubric\n </Typography>\n <FormGroup row>\n {maxPointsEnabled && <MaxPoints max={10} value={value.points.length - 1} onChange={this.changeMaxPoints} />}\n {excludeZeroEnabled && (\n <FormControlLabel\n label=\"Exclude zeros\"\n control={<Checkbox checked={value.excludeZero} onChange={this.excludeZeros} />}\n />\n )}\n </FormGroup>\n\n <div className={classes.container}>\n <DragDropContext onDragEnd={this.dragEnd}>\n <Droppable droppableId=\"droppable\">\n {(provided) => (\n <div {...provided.droppableProps} ref={provided.innerRef}>\n {value.points.map(\n (p, index) =>\n this.shouldRenderPoint(index, value) && (\n <Draggable key={`${p.points}-${index}`} index={index} draggableId={index.toString()}>\n {(provided) => (\n <div\n className={classes.configHolder}\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <PointConfig\n points={value.points.length - 1 - index}\n content={p}\n sampleAnswer={value.sampleAnswers && value.sampleAnswers[index]}\n onChange={(content) => this.changeContent(index, content, 'points')}\n onSampleChange={(content) => this.changeContent(index, content, 'sampleAnswers')}\n onMenuChange={(clickedItem) => this.onPointMenuChange(index, clickedItem)}\n mathMlOptions={mathMlOptions}\n />\n </div>\n )}\n </Draggable>\n ),\n )}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n container: {\n backgroundColor: grey[200],\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: grey[300],\n padding: theme.spacing.unit * 2,\n margin: theme.spacing.unit,\n },\n configHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n },\n rubricTitle: {\n paddingLeft: theme.spacing.unit,\n margin: theme.spacing.unit,\n },\n});\n\nconst StyledRawAuthoring = withStyles(styles)(RawAuthoring);\n\nconst Reverse = (props) => {\n const points = Array.from(props.value.points || []).reverse();\n let sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();\n\n if (points.length > sampleAnswers.length) {\n sampleAnswers = times(points.length - sampleAnswers.length)\n .map(() => null)\n .concat(sampleAnswers);\n }\n\n const value = { ...props.value, points, sampleAnswers };\n\n const onChange = (value) => {\n props.onChange({\n ...value,\n points: Array.from(value.points || []).reverse(),\n sampleAnswers: Array.from(value.sampleAnswers || []).reverse(),\n });\n };\n\n return <StyledRawAuthoring value={value} onChange={onChange} />;\n};\n\nReverse.propTypes = {\n value: RubricType,\n getIndex: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default Reverse;\n"],"file":"authoring.js"}
|
package/lib/index.js
DELETED
|
@@ -1,23 +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
|
-
};
|
|
22
|
-
exports.RUBRIC_TYPES = RUBRIC_TYPES;
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|