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