@pie-element/rubric 1.6.3-next.1205 → 1.6.3-next.1217
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/configure/node_modules/@pie-lib/rubric/CHANGELOG.json +407 -0
- package/configure/node_modules/@pie-lib/rubric/CHANGELOG.md +924 -0
- package/configure/node_modules/@pie-lib/rubric/LICENSE.md +5 -0
- package/configure/node_modules/@pie-lib/rubric/lib/authoring.js +460 -0
- package/configure/node_modules/@pie-lib/rubric/lib/authoring.js.map +1 -0
- package/configure/node_modules/@pie-lib/rubric/lib/index.js +23 -0
- package/configure/node_modules/@pie-lib/rubric/lib/index.js.map +1 -0
- package/configure/node_modules/@pie-lib/rubric/lib/point-menu.js +172 -0
- package/configure/node_modules/@pie-lib/rubric/lib/point-menu.js.map +1 -0
- package/configure/node_modules/@pie-lib/rubric/package.json +22 -0
- package/configure/node_modules/@pie-lib/rubric/src/authoring.jsx +361 -0
- package/configure/node_modules/@pie-lib/rubric/src/index.js +8 -0
- package/configure/node_modules/@pie-lib/rubric/src/point-menu.jsx +94 -0
- package/package.json +2 -2
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Copyright 2019 CoreSpring Inc
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
4
|
+
|
|
5
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -0,0 +1,460 @@
|
|
|
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
|
+
});
|
|
98
|
+
|
|
99
|
+
exports.RubricType = RubricType;
|
|
100
|
+
var MaxPoints = (0, _styles.withStyles)(function (theme) {
|
|
101
|
+
return {
|
|
102
|
+
formControl: {
|
|
103
|
+
minWidth: '120px',
|
|
104
|
+
margin: theme.spacing.unit
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
})(function (props) {
|
|
108
|
+
var value = props.value,
|
|
109
|
+
_onChange = props.onChange,
|
|
110
|
+
max = props.max,
|
|
111
|
+
classes = props.classes;
|
|
112
|
+
return /*#__PURE__*/_react["default"].createElement(_FormControl["default"], {
|
|
113
|
+
className: classes.formControl,
|
|
114
|
+
variant: "outlined"
|
|
115
|
+
}, /*#__PURE__*/_react["default"].createElement(_InputLabel["default"], {
|
|
116
|
+
width: 100,
|
|
117
|
+
htmlFor: "..."
|
|
118
|
+
}, "Max Points"), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
|
|
119
|
+
value: value,
|
|
120
|
+
onChange: function onChange(e) {
|
|
121
|
+
return _onChange(e.target.value);
|
|
122
|
+
},
|
|
123
|
+
input: /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
|
|
124
|
+
labelWidth: 80
|
|
125
|
+
})
|
|
126
|
+
}, (0, _range["default"])(1, max).map(function (v) {
|
|
127
|
+
return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
|
|
128
|
+
key: "".concat(v),
|
|
129
|
+
value: v
|
|
130
|
+
}, v);
|
|
131
|
+
})));
|
|
132
|
+
}); // if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed
|
|
133
|
+
// if the value is '', the Sample Answer input field will be empty
|
|
134
|
+
|
|
135
|
+
var checkSampleAnswer = function checkSampleAnswer(sampleAnswer) {
|
|
136
|
+
return sampleAnswer === null || sampleAnswer === 'null';
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
var PointConfig = (0, _styles.withStyles)(function (theme) {
|
|
140
|
+
return {
|
|
141
|
+
pointConfig: {},
|
|
142
|
+
row: {
|
|
143
|
+
display: 'flex',
|
|
144
|
+
width: '100%',
|
|
145
|
+
position: 'relative'
|
|
146
|
+
},
|
|
147
|
+
editor: {
|
|
148
|
+
width: '100%',
|
|
149
|
+
backgroundColor: 'white !important'
|
|
150
|
+
},
|
|
151
|
+
dragIndicator: {
|
|
152
|
+
paddingTop: theme.spacing.unit,
|
|
153
|
+
color: _grey["default"][500]
|
|
154
|
+
},
|
|
155
|
+
pointsLabel: {
|
|
156
|
+
color: _grey["default"][500],
|
|
157
|
+
paddingBottom: theme.spacing.unit,
|
|
158
|
+
textTransform: 'uppercase'
|
|
159
|
+
},
|
|
160
|
+
sampleAnswersEditor: {
|
|
161
|
+
paddingLeft: theme.spacing.unit * 3
|
|
162
|
+
},
|
|
163
|
+
pointMenu: {
|
|
164
|
+
position: 'absolute',
|
|
165
|
+
right: 0
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
})(function (props) {
|
|
169
|
+
var points = props.points,
|
|
170
|
+
content = props.content,
|
|
171
|
+
classes = props.classes,
|
|
172
|
+
sampleAnswer = props.sampleAnswer;
|
|
173
|
+
var pointsLabel = "".concat(points, " ").concat(points <= 1 ? 'pt' : 'pts');
|
|
174
|
+
var showSampleAnswer = checkSampleAnswer(sampleAnswer);
|
|
175
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
176
|
+
className: classes.pointConfig
|
|
177
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
178
|
+
variant: "overline",
|
|
179
|
+
className: classes.pointsLabel
|
|
180
|
+
}, pointsLabel), /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
|
+
className: classes.row
|
|
182
|
+
}, /*#__PURE__*/_react["default"].createElement(_DragIndicator["default"], {
|
|
183
|
+
className: classes.dragIndicator
|
|
184
|
+
}), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
185
|
+
className: classes.editor,
|
|
186
|
+
markup: content,
|
|
187
|
+
onChange: props.onChange
|
|
188
|
+
}), /*#__PURE__*/_react["default"].createElement(_pointMenu["default"], {
|
|
189
|
+
classes: {
|
|
190
|
+
icon: classes.pointMenu
|
|
191
|
+
},
|
|
192
|
+
showSampleAnswer: showSampleAnswer,
|
|
193
|
+
onChange: props.onMenuChange
|
|
194
|
+
})), !showSampleAnswer && /*#__PURE__*/_react["default"].createElement("div", {
|
|
195
|
+
className: classes.sampleAnswersEditor
|
|
196
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
197
|
+
variant: "overline",
|
|
198
|
+
className: classes.dragIndicator
|
|
199
|
+
}, "Sample Response"), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
200
|
+
className: classes.editor,
|
|
201
|
+
markup: sampleAnswer,
|
|
202
|
+
onChange: props.onSampleChange
|
|
203
|
+
})));
|
|
204
|
+
});
|
|
205
|
+
exports.PointConfig = PointConfig;
|
|
206
|
+
|
|
207
|
+
var RawAuthoring = /*#__PURE__*/function (_React$Component) {
|
|
208
|
+
(0, _inherits2["default"])(RawAuthoring, _React$Component);
|
|
209
|
+
|
|
210
|
+
var _super = _createSuper(RawAuthoring);
|
|
211
|
+
|
|
212
|
+
function RawAuthoring() {
|
|
213
|
+
var _this;
|
|
214
|
+
|
|
215
|
+
(0, _classCallCheck2["default"])(this, RawAuthoring);
|
|
216
|
+
|
|
217
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
218
|
+
args[_key] = arguments[_key];
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
222
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragEnd", function (result) {
|
|
223
|
+
if (!result.destination) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
var _this$props = _this.props,
|
|
228
|
+
value = _this$props.value,
|
|
229
|
+
onChange = _this$props.onChange;
|
|
230
|
+
var points = reorder(value.points, result.source.index, result.destination.index);
|
|
231
|
+
var sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);
|
|
232
|
+
onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
233
|
+
points: points,
|
|
234
|
+
sampleAnswers: sampleAnswers
|
|
235
|
+
}));
|
|
236
|
+
});
|
|
237
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxPoints", function (maxPoints) {
|
|
238
|
+
var _this$props2 = _this.props,
|
|
239
|
+
value = _this$props2.value,
|
|
240
|
+
onChange = _this$props2.onChange;
|
|
241
|
+
var currentMax = value.points.length - 1;
|
|
242
|
+
log('current', currentMax, 'new: ', maxPoints);
|
|
243
|
+
var points, sampleAnswers;
|
|
244
|
+
|
|
245
|
+
if (maxPoints > currentMax) {
|
|
246
|
+
points = (0, _times["default"])(maxPoints - currentMax).map(function () {
|
|
247
|
+
return '';
|
|
248
|
+
}).concat(value.points);
|
|
249
|
+
sampleAnswers = (0, _times["default"])(maxPoints - currentMax).map(function () {
|
|
250
|
+
return null;
|
|
251
|
+
}).concat(value.sampleAnswers);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (maxPoints < currentMax) {
|
|
255
|
+
log('less than');
|
|
256
|
+
points = (0, _takeRight["default"])(value.points, maxPoints + 1);
|
|
257
|
+
sampleAnswers = (0, _takeRight["default"])(value.sampleAnswers, maxPoints + 1);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if (points) {
|
|
261
|
+
onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
262
|
+
points: points,
|
|
263
|
+
sampleAnswers: sampleAnswers
|
|
264
|
+
}));
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeContent", function (index, content, type) {
|
|
268
|
+
// type could be 'points' or 'sampleAnswers'
|
|
269
|
+
log("changeModel[".concat(type, "]:"), index, content);
|
|
270
|
+
|
|
271
|
+
if (type !== 'points' && type !== 'sampleAnswers') {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
var _this$props3 = _this.props,
|
|
276
|
+
value = _this$props3.value,
|
|
277
|
+
onChange = _this$props3.onChange;
|
|
278
|
+
var items = value[type] && Array.from(value[type]);
|
|
279
|
+
items.splice(index, 1, content);
|
|
280
|
+
log("changeModel[".concat(type, "]:"), items);
|
|
281
|
+
onChange(_objectSpread(_objectSpread({}, value), {}, (0, _defineProperty2["default"])({}, type, items)));
|
|
282
|
+
});
|
|
283
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "excludeZeros", function () {
|
|
284
|
+
var _this$props4 = _this.props,
|
|
285
|
+
value = _this$props4.value,
|
|
286
|
+
onChange = _this$props4.onChange;
|
|
287
|
+
onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
288
|
+
excludeZero: !value.excludeZero
|
|
289
|
+
}));
|
|
290
|
+
});
|
|
291
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "shouldRenderPoint", function (index, value) {
|
|
292
|
+
if (!value.excludeZero) {
|
|
293
|
+
return true;
|
|
294
|
+
} else {
|
|
295
|
+
if (index < value.points.length - 1) {
|
|
296
|
+
return true;
|
|
297
|
+
} else if (index === value.points.length - 1) {
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPointMenuChange", function (index, clickedItem) {
|
|
305
|
+
if (clickedItem === 'sample') {
|
|
306
|
+
var value = _this.props.value;
|
|
307
|
+
var sampleAnswers = Array.from(value.sampleAnswers || []);
|
|
308
|
+
|
|
309
|
+
if (checkSampleAnswer(sampleAnswers[index])) {
|
|
310
|
+
// an empty string will display an empty Sample Answer input field
|
|
311
|
+
_this.changeContent(index, '', 'sampleAnswers');
|
|
312
|
+
} else {
|
|
313
|
+
// when the content is null or 'null', the Sample Answer input field will not be displayed
|
|
314
|
+
_this.changeContent(index, null, 'sampleAnswers');
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
return _this;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
(0, _createClass2["default"])(RawAuthoring, [{
|
|
322
|
+
key: "render",
|
|
323
|
+
value: function render() {
|
|
324
|
+
var _this2 = this;
|
|
325
|
+
|
|
326
|
+
var _this$props5 = this.props,
|
|
327
|
+
classes = _this$props5.classes,
|
|
328
|
+
className = _this$props5.className,
|
|
329
|
+
value = _this$props5.value;
|
|
330
|
+
|
|
331
|
+
if (value && Number.isFinite(value.maxPoints)) {
|
|
332
|
+
// eslint-disable-next-line no-console
|
|
333
|
+
console.warn('maxPoints is deprecated - remove from model');
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
337
|
+
className: (0, _classnames["default"])(classes["class"], className)
|
|
338
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
339
|
+
variant: "h5",
|
|
340
|
+
className: classes.rubricTitle
|
|
341
|
+
}, "Rubric"), /*#__PURE__*/_react["default"].createElement(_FormGroup["default"], {
|
|
342
|
+
row: true
|
|
343
|
+
}, /*#__PURE__*/_react["default"].createElement(MaxPoints, {
|
|
344
|
+
max: 10,
|
|
345
|
+
value: value.points.length - 1,
|
|
346
|
+
onChange: this.changeMaxPoints
|
|
347
|
+
}), /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
|
|
348
|
+
label: "Exclude zeros",
|
|
349
|
+
control: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
350
|
+
checked: value.excludeZero,
|
|
351
|
+
onChange: this.excludeZeros
|
|
352
|
+
})
|
|
353
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
354
|
+
className: classes.container
|
|
355
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.DragDropContext, {
|
|
356
|
+
onDragEnd: this.dragEnd
|
|
357
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Droppable, {
|
|
358
|
+
droppableId: "droppable"
|
|
359
|
+
}, function (provided) {
|
|
360
|
+
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, provided.droppableProps, {
|
|
361
|
+
ref: provided.innerRef
|
|
362
|
+
}), value.points.map(function (p, index) {
|
|
363
|
+
return _this2.shouldRenderPoint(index, value) && /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Draggable, {
|
|
364
|
+
key: "".concat(p.points, "-").concat(index),
|
|
365
|
+
index: index,
|
|
366
|
+
draggableId: index.toString()
|
|
367
|
+
}, function (provided) {
|
|
368
|
+
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
369
|
+
className: classes.configHolder,
|
|
370
|
+
ref: provided.innerRef
|
|
371
|
+
}, provided.draggableProps, provided.dragHandleProps), /*#__PURE__*/_react["default"].createElement(PointConfig, {
|
|
372
|
+
points: value.points.length - 1 - index,
|
|
373
|
+
content: p,
|
|
374
|
+
sampleAnswer: value.sampleAnswers && value.sampleAnswers[index],
|
|
375
|
+
onChange: function onChange(content) {
|
|
376
|
+
return _this2.changeContent(index, content, 'points');
|
|
377
|
+
},
|
|
378
|
+
onSampleChange: function onSampleChange(content) {
|
|
379
|
+
return _this2.changeContent(index, content, 'sampleAnswers');
|
|
380
|
+
},
|
|
381
|
+
onMenuChange: function onMenuChange(clickedItem) {
|
|
382
|
+
return _this2.onPointMenuChange(index, clickedItem);
|
|
383
|
+
}
|
|
384
|
+
}));
|
|
385
|
+
});
|
|
386
|
+
}), provided.placeholder);
|
|
387
|
+
}))));
|
|
388
|
+
}
|
|
389
|
+
}]);
|
|
390
|
+
return RawAuthoring;
|
|
391
|
+
}(_react["default"].Component);
|
|
392
|
+
|
|
393
|
+
exports.RawAuthoring = RawAuthoring;
|
|
394
|
+
(0, _defineProperty2["default"])(RawAuthoring, "propTypes", {
|
|
395
|
+
classes: _propTypes["default"].object.isRequired,
|
|
396
|
+
className: _propTypes["default"].string,
|
|
397
|
+
value: RubricType,
|
|
398
|
+
onChange: _propTypes["default"].func
|
|
399
|
+
});
|
|
400
|
+
(0, _defineProperty2["default"])(RawAuthoring, "defaultProps", {});
|
|
401
|
+
|
|
402
|
+
var styles = function styles(theme) {
|
|
403
|
+
return {
|
|
404
|
+
container: {
|
|
405
|
+
backgroundColor: _grey["default"][200],
|
|
406
|
+
borderWidth: 1,
|
|
407
|
+
borderStyle: 'solid',
|
|
408
|
+
borderColor: _grey["default"][300],
|
|
409
|
+
padding: theme.spacing.unit * 2,
|
|
410
|
+
margin: theme.spacing.unit
|
|
411
|
+
},
|
|
412
|
+
configHolder: {
|
|
413
|
+
paddingTop: theme.spacing.unit,
|
|
414
|
+
paddingBottom: theme.spacing.unit
|
|
415
|
+
},
|
|
416
|
+
rubricTitle: {
|
|
417
|
+
paddingLeft: theme.spacing.unit,
|
|
418
|
+
margin: theme.spacing.unit
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
var StyledRawAuthoring = (0, _styles.withStyles)(styles)(RawAuthoring);
|
|
424
|
+
|
|
425
|
+
var Reverse = function Reverse(props) {
|
|
426
|
+
var points = Array.from(props.value.points || []).reverse();
|
|
427
|
+
var sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();
|
|
428
|
+
|
|
429
|
+
if (points.length > sampleAnswers.length) {
|
|
430
|
+
sampleAnswers = (0, _times["default"])(points.length - sampleAnswers.length).map(function () {
|
|
431
|
+
return null;
|
|
432
|
+
}).concat(sampleAnswers);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
var value = _objectSpread(_objectSpread({}, props.value), {}, {
|
|
436
|
+
points: points,
|
|
437
|
+
sampleAnswers: sampleAnswers
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
var onChange = function onChange(value) {
|
|
441
|
+
props.onChange(_objectSpread(_objectSpread({}, value), {}, {
|
|
442
|
+
points: Array.from(value.points || []).reverse(),
|
|
443
|
+
sampleAnswers: Array.from(value.sampleAnswers || []).reverse()
|
|
444
|
+
}));
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
return /*#__PURE__*/_react["default"].createElement(StyledRawAuthoring, {
|
|
448
|
+
value: value,
|
|
449
|
+
onChange: onChange
|
|
450
|
+
});
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
Reverse.propTypes = {
|
|
454
|
+
value: RubricType,
|
|
455
|
+
getIndex: _propTypes["default"].func,
|
|
456
|
+
onChange: _propTypes["default"].func
|
|
457
|
+
};
|
|
458
|
+
var _default = Reverse;
|
|
459
|
+
exports["default"] = _default;
|
|
460
|
+
//# sourceMappingURL=authoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/authoring.jsx"],"names":["log","reorder","list","startIndex","endIndex","result","Array","from","splice","removed","RubricType","PropTypes","shape","excludeZero","bool","points","arrayOf","string","sampleAnswers","MaxPoints","theme","formControl","minWidth","margin","spacing","unit","props","value","onChange","max","classes","e","target","map","v","checkSampleAnswer","sampleAnswer","PointConfig","pointConfig","row","display","width","position","editor","backgroundColor","dragIndicator","paddingTop","color","grey","pointsLabel","paddingBottom","textTransform","sampleAnswersEditor","paddingLeft","pointMenu","right","content","showSampleAnswer","icon","onMenuChange","onSampleChange","RawAuthoring","destination","source","index","maxPoints","currentMax","length","concat","type","items","clickedItem","changeContent","className","Number","isFinite","console","warn","rubricTitle","changeMaxPoints","excludeZeros","container","dragEnd","provided","droppableProps","innerRef","p","shouldRenderPoint","toString","configHolder","draggableProps","dragHandleProps","onPointMenuChange","placeholder","React","Component","object","isRequired","func","styles","borderWidth","borderStyle","borderColor","padding","StyledRawAuthoring","Reverse","reverse","propTypes","getIndex"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport FormControl from '@material-ui/core/FormControl';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport times from 'lodash/times';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport grey from '@material-ui/core/colors/grey';\nimport Typography from '@material-ui/core/Typography';\nimport DragIndicator from '@material-ui/icons/DragIndicator';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\nimport debug from 'debug';\nimport takeRight from 'lodash/takeRight';\nimport PointMenu from './point-menu';\n\nimport range from 'lodash/range';\nconst log = debug('pie-lib:rubric:authoring');\n\nconst reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n\n result.splice(endIndex, 0, removed);\n\n return result;\n};\n\nexport const RubricType = PropTypes.shape({\n excludeZero: PropTypes.bool,\n points: PropTypes.arrayOf(PropTypes.string),\n sampleAnswers: PropTypes.arrayOf(PropTypes.string)\n});\n\nconst MaxPoints = withStyles(theme => ({\n formControl: {\n minWidth: '120px',\n margin: theme.spacing.unit\n }\n}))(props => {\n const { value, onChange, max, classes } = props;\n\n return (\n <FormControl className={classes.formControl} variant=\"outlined\">\n <InputLabel width={100} htmlFor=\"...\">\n Max Points\n </InputLabel>\n <Select\n value={value}\n onChange={e => onChange(e.target.value)}\n input={<OutlinedInput labelWidth={80} />}\n >\n {range(1, max).map(v => (\n <MenuItem key={`${v}`} value={v}>\n {v}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n});\n\n// if the value is null or 'null', the Sample Answer input field for that point will not be dispalyed\n// if the value is '', the Sample Answer input field will be empty\nconst checkSampleAnswer = sampleAnswer => sampleAnswer === null || sampleAnswer === 'null';\n\nexport const PointConfig = withStyles(theme => ({\n pointConfig: {},\n row: {\n display: 'flex',\n width: '100%',\n position: 'relative'\n },\n editor: {\n width: '100%',\n backgroundColor: 'white !important'\n },\n dragIndicator: {\n paddingTop: theme.spacing.unit,\n color: grey[500]\n },\n pointsLabel: {\n color: grey[500],\n paddingBottom: theme.spacing.unit,\n textTransform: 'uppercase'\n },\n sampleAnswersEditor: {\n paddingLeft: theme.spacing.unit * 3\n },\n pointMenu: {\n position: 'absolute',\n right: 0\n }\n}))(props => {\n const { points, content, classes, sampleAnswer } = props;\n const pointsLabel = `${points} ${points <= 1 ? 'pt' : 'pts'}`;\n const showSampleAnswer = checkSampleAnswer(sampleAnswer);\n\n return (\n <div className={classes.pointConfig}>\n <Typography variant=\"overline\" className={classes.pointsLabel}>\n {pointsLabel}\n </Typography>\n <div className={classes.row}>\n <DragIndicator className={classes.dragIndicator} />\n <EditableHtml className={classes.editor} markup={content} onChange={props.onChange} />\n <PointMenu\n classes={{\n icon: classes.pointMenu\n }}\n showSampleAnswer={showSampleAnswer}\n onChange={props.onMenuChange}\n />\n </div>\n {!showSampleAnswer && (\n <div className={classes.sampleAnswersEditor}>\n <Typography variant=\"overline\" className={classes.dragIndicator}>\n Sample Response\n </Typography>\n <EditableHtml\n className={classes.editor}\n markup={sampleAnswer}\n onChange={props.onSampleChange}\n />\n </div>\n )}\n </div>\n );\n});\n\nexport class RawAuthoring extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n value: RubricType,\n onChange: PropTypes.func\n };\n\n static defaultProps = {};\n\n dragEnd = result => {\n if (!result.destination) {\n return;\n }\n\n const { value, onChange } = this.props;\n\n const points = reorder(value.points, result.source.index, result.destination.index);\n const sampleAnswers = reorder(\n value.sampleAnswers,\n result.source.index,\n result.destination.index\n );\n\n onChange({ ...value, points, sampleAnswers });\n };\n\n changeMaxPoints = maxPoints => {\n const { value, onChange } = this.props;\n const currentMax = value.points.length - 1;\n\n log('current', currentMax, 'new: ', maxPoints);\n\n let points, sampleAnswers;\n if (maxPoints > currentMax) {\n points = times(maxPoints - currentMax)\n .map(() => '')\n .concat(value.points);\n sampleAnswers = times(maxPoints - currentMax)\n .map(() => null)\n .concat(value.sampleAnswers);\n }\n\n if (maxPoints < currentMax) {\n log('less than');\n points = takeRight(value.points, maxPoints + 1);\n sampleAnswers = takeRight(value.sampleAnswers, maxPoints + 1);\n }\n\n if (points) {\n onChange({ ...value, points, sampleAnswers });\n }\n };\n\n changeContent = (index, content, type) => {\n // type could be 'points' or 'sampleAnswers'\n log(`changeModel[${type}]:`, index, content);\n\n if (type !== 'points' && type !== 'sampleAnswers') {\n return;\n }\n\n const { value, onChange } = this.props;\n const items = value[type] && Array.from(value[type]);\n\n items.splice(index, 1, content);\n log(`changeModel[${type}]:`, items);\n\n onChange({ ...value, [type]: items });\n };\n\n excludeZeros = () => {\n const { value, onChange } = this.props;\n\n onChange({ ...value, excludeZero: !value.excludeZero });\n };\n\n shouldRenderPoint = (index, value) => {\n if (!value.excludeZero) {\n return true;\n } else {\n if (index < value.points.length - 1) {\n return true;\n } else if (index === value.points.length - 1) {\n return false;\n }\n\n return true;\n }\n };\n\n onPointMenuChange = (index, clickedItem) => {\n if (clickedItem === 'sample') {\n const { value } = this.props;\n const sampleAnswers = Array.from(value.sampleAnswers || []);\n\n if (checkSampleAnswer(sampleAnswers[index])) {\n // an empty string will display an empty Sample Answer input field\n this.changeContent(index, '', 'sampleAnswers');\n } else {\n // when the content is null or 'null', the Sample Answer input field will not be displayed\n this.changeContent(index, null, 'sampleAnswers');\n }\n }\n };\n\n render() {\n const { classes, className, value } = this.props;\n\n if (value && Number.isFinite(value.maxPoints)) {\n // eslint-disable-next-line no-console\n console.warn('maxPoints is deprecated - remove from model');\n }\n\n return (\n <div className={classNames(classes.class, className)}>\n <Typography variant=\"h5\" className={classes.rubricTitle}>\n Rubric\n </Typography>\n <FormGroup row>\n <MaxPoints max={10} value={value.points.length - 1} onChange={this.changeMaxPoints} />\n <FormControlLabel\n label=\"Exclude zeros\"\n control={<Checkbox checked={value.excludeZero} onChange={this.excludeZeros} />}\n />\n </FormGroup>\n <div className={classes.container}>\n <DragDropContext onDragEnd={this.dragEnd}>\n <Droppable droppableId=\"droppable\">\n {provided => (\n <div {...provided.droppableProps} ref={provided.innerRef}>\n {value.points.map(\n (p, index) =>\n this.shouldRenderPoint(index, value) && (\n <Draggable\n key={`${p.points}-${index}`}\n index={index}\n draggableId={index.toString()}\n >\n {provided => (\n <div\n className={classes.configHolder}\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <PointConfig\n points={value.points.length - 1 - index}\n content={p}\n sampleAnswer={value.sampleAnswers && value.sampleAnswers[index]}\n onChange={content => this.changeContent(index, content, 'points')}\n onSampleChange={content =>\n this.changeContent(index, content, 'sampleAnswers')\n }\n onMenuChange={clickedItem =>\n this.onPointMenuChange(index, clickedItem)\n }\n />\n </div>\n )}\n </Draggable>\n )\n )}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n container: {\n backgroundColor: grey[200],\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: grey[300],\n padding: theme.spacing.unit * 2,\n margin: theme.spacing.unit\n },\n configHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit\n },\n rubricTitle: {\n paddingLeft: theme.spacing.unit,\n margin: theme.spacing.unit\n }\n});\n\nconst StyledRawAuthoring = withStyles(styles)(RawAuthoring);\n\nconst Reverse = props => {\n const points = Array.from(props.value.points || []).reverse();\n let sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();\n\n if (points.length > sampleAnswers.length) {\n sampleAnswers = times(points.length - sampleAnswers.length)\n .map(() => null)\n .concat(sampleAnswers);\n }\n\n const value = { ...props.value, points, sampleAnswers };\n\n const onChange = value => {\n props.onChange({\n ...value,\n points: Array.from(value.points || []).reverse(),\n sampleAnswers: Array.from(value.sampleAnswers || []).reverse()\n });\n };\n\n return <StyledRawAuthoring value={value} onChange={onChange} />;\n};\n\nReverse.propTypes = {\n value: RubricType,\n getIndex: PropTypes.func,\n onChange: PropTypes.func\n};\n\nexport default Reverse;\n"],"file":"authoring.js"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|