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