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