@pie-element/complex-rubric 2.10.1-next.10 → 2.10.1-next.11

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 (105) hide show
  1. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.json +1 -0
  2. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.md +1383 -0
  3. package/configure/node_modules/@pie-element/multi-trait-rubric/LICENSE.md +5 -0
  4. package/configure/node_modules/@pie-element/multi-trait-rubric/README.md +55 -0
  5. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.json +1 -0
  6. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.md +1270 -0
  7. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js +584 -0
  8. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js.map +1 -0
  9. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js +143 -0
  10. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js.map +1 -0
  11. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js +204 -0
  12. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js.map +1 -0
  13. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js +602 -0
  14. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js.map +1 -0
  15. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js +361 -0
  16. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js.map +1 -0
  17. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js +556 -0
  18. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js.map +1 -0
  19. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js +380 -0
  20. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js.map +1 -0
  21. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js +296 -0
  22. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js.map +1 -0
  23. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js +14 -0
  24. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js.map +1 -0
  25. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/package.json +18 -0
  26. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.json +1 -0
  27. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.md +544 -0
  28. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js +94 -0
  29. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js.map +1 -0
  30. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js +215 -0
  31. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js.map +1 -0
  32. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js +13 -0
  33. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js.map +1 -0
  34. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/package.json +15 -0
  35. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json +803 -0
  36. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json.md +602 -0
  37. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/config.js +8 -0
  38. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/generate.js +180 -0
  39. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/index.html +1 -0
  40. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/session.js +6 -0
  41. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json +531 -0
  42. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json.md +374 -0
  43. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js +85 -0
  44. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js.map +1 -0
  45. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js +161 -0
  46. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js.map +1 -0
  47. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js +330 -0
  48. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js.map +1 -0
  49. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js +103 -0
  50. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js.map +1 -0
  51. package/configure/node_modules/@pie-element/multi-trait-rubric/package.json +24 -0
  52. package/configure/node_modules/@pie-element/rubric/CHANGELOG.json +257 -0
  53. package/configure/node_modules/@pie-element/rubric/CHANGELOG.md +1640 -0
  54. package/configure/node_modules/@pie-element/rubric/LICENSE.md +5 -0
  55. package/configure/node_modules/@pie-element/rubric/README.md +3 -0
  56. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.json +197 -0
  57. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.md +1471 -0
  58. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js +59 -0
  59. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js.map +1 -0
  60. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js +194 -0
  61. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js.map +1 -0
  62. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js +160 -0
  63. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js.map +1 -0
  64. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/authoring.js +555 -0
  65. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/authoring.js.map +1 -0
  66. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/index.js +24 -0
  67. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/index.js.map +1 -0
  68. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/point-menu.js +172 -0
  69. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/point-menu.js.map +1 -0
  70. package/configure/node_modules/@pie-element/rubric/configure/package.json +17 -0
  71. package/configure/node_modules/@pie-element/rubric/configure/src/__tests__/index.test.jsx +173 -0
  72. package/configure/node_modules/@pie-element/rubric/configure/src/defaults.js +39 -0
  73. package/configure/node_modules/@pie-element/rubric/configure/src/index.js +127 -0
  74. package/configure/node_modules/@pie-element/rubric/configure/src/main.jsx +87 -0
  75. package/configure/node_modules/@pie-element/rubric/configure/src/pie-toolbox-rubric/authoring.jsx +427 -0
  76. package/configure/node_modules/@pie-element/rubric/configure/src/pie-toolbox-rubric/index.js +9 -0
  77. package/configure/node_modules/@pie-element/rubric/configure/src/pie-toolbox-rubric/point-menu.jsx +94 -0
  78. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.json +17 -0
  79. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.md +536 -0
  80. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js +51 -0
  81. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js.map +1 -0
  82. package/configure/node_modules/@pie-element/rubric/controller/package.json +13 -0
  83. package/configure/node_modules/@pie-element/rubric/controller/src/__tests__/index.test.js +31 -0
  84. package/configure/node_modules/@pie-element/rubric/controller/src/index.js +42 -0
  85. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json +382 -0
  86. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json.md +292 -0
  87. package/configure/node_modules/@pie-element/rubric/docs/demo/config.js +8 -0
  88. package/configure/node_modules/@pie-element/rubric/docs/demo/generate.js +8 -0
  89. package/configure/node_modules/@pie-element/rubric/docs/demo/index.html +2 -0
  90. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json +226 -0
  91. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json.md +161 -0
  92. package/configure/node_modules/@pie-element/rubric/lib/index.js +88 -0
  93. package/configure/node_modules/@pie-element/rubric/lib/index.js.map +1 -0
  94. package/configure/node_modules/@pie-element/rubric/lib/main.js +187 -0
  95. package/configure/node_modules/@pie-element/rubric/lib/main.js.map +1 -0
  96. package/configure/node_modules/@pie-element/rubric/lib/print.js +114 -0
  97. package/configure/node_modules/@pie-element/rubric/lib/print.js.map +1 -0
  98. package/configure/node_modules/@pie-element/rubric/package.json +26 -0
  99. package/configure/node_modules/@pie-element/rubric/src/__tests__/__snapshots__/rubric-view.test.jsx.snap +23003 -0
  100. package/configure/node_modules/@pie-element/rubric/src/__tests__/rubric-view.test.jsx +50 -0
  101. package/configure/node_modules/@pie-element/rubric/src/index.js +34 -0
  102. package/configure/node_modules/@pie-element/rubric/src/main.jsx +136 -0
  103. package/configure/node_modules/@pie-element/rubric/src/print.js +63 -0
  104. package/configure/package.json +2 -2
  105. package/package.json +4 -4
@@ -0,0 +1,555 @@
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/pie-toolbox/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/pie-toolbox/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
+ 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
+ }), /*#__PURE__*/_react["default"].createElement(_pointMenu["default"], {
212
+ classes: {
213
+ icon: classes.pointMenu
214
+ },
215
+ showSampleAnswer: showSampleAnswer,
216
+ onChange: props.onMenuChange
217
+ })), error && /*#__PURE__*/_react["default"].createElement("div", {
218
+ className: classes.errorText
219
+ }, error), !showSampleAnswer && /*#__PURE__*/_react["default"].createElement("div", {
220
+ className: classes.sampleAnswersEditor
221
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
222
+ variant: "overline",
223
+ className: classes.dragIndicator
224
+ }, "Sample Response"), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
225
+ className: classes.editor,
226
+ markup: sampleAnswer,
227
+ pluginProps: pluginOpts,
228
+ onChange: props.onSampleChange,
229
+ mathMlOptions: mathMlOptions,
230
+ imageSupport: imageSupport
231
+ })));
232
+ });
233
+ exports.PointConfig = PointConfig;
234
+
235
+ var RawAuthoring = /*#__PURE__*/function (_React$Component) {
236
+ (0, _inherits2["default"])(RawAuthoring, _React$Component);
237
+
238
+ var _super = _createSuper(RawAuthoring);
239
+
240
+ function RawAuthoring() {
241
+ var _this;
242
+
243
+ (0, _classCallCheck2["default"])(this, RawAuthoring);
244
+
245
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
246
+ args[_key] = arguments[_key];
247
+ }
248
+
249
+ _this = _super.call.apply(_super, [this].concat(args));
250
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragEnd", function (result) {
251
+ if (!result.destination) {
252
+ return;
253
+ }
254
+
255
+ var _this$props = _this.props,
256
+ value = _this$props.value,
257
+ onChange = _this$props.onChange;
258
+ var points = reorder(value.points, result.source.index, result.destination.index);
259
+ var sampleAnswers = reorder(value.sampleAnswers, result.source.index, result.destination.index);
260
+ onChange(_objectSpread(_objectSpread({}, value), {}, {
261
+ points: points,
262
+ sampleAnswers: sampleAnswers
263
+ }));
264
+ });
265
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeRubriclessInstruction", function (input) {
266
+ var _this$props2 = _this.props,
267
+ value = _this$props2.value,
268
+ onChange = _this$props2.onChange;
269
+ onChange(_objectSpread(_objectSpread({}, value), {}, {
270
+ rubriclessInstruction: input
271
+ }));
272
+ });
273
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxPoints", function (maxPoints) {
274
+ var _this$props3 = _this.props,
275
+ value = _this$props3.value,
276
+ onChange = _this$props3.onChange;
277
+ onChange(_objectSpread(_objectSpread({}, value), {}, {
278
+ maxPoints: maxPoints
279
+ }));
280
+ });
281
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeContent", function (index, content, type) {
282
+ // type could be 'points' or 'sampleAnswers'
283
+ log("changeModel[".concat(type, "]:"), index, content);
284
+
285
+ if (type !== 'points' && type !== 'sampleAnswers') {
286
+ return;
287
+ }
288
+
289
+ var _this$props4 = _this.props,
290
+ value = _this$props4.value,
291
+ onChange = _this$props4.onChange;
292
+ var items = value[type] && Array.from(value[type]);
293
+ items.splice(index, 1, content);
294
+ log("changeModel[".concat(type, "]:"), items);
295
+ onChange(_objectSpread(_objectSpread({}, value), {}, (0, _defineProperty2["default"])({}, type, items)));
296
+ });
297
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "excludeZeros", function () {
298
+ var _this$props5 = _this.props,
299
+ value = _this$props5.value,
300
+ onChange = _this$props5.onChange;
301
+ onChange(_objectSpread(_objectSpread({}, value), {}, {
302
+ excludeZero: !value.excludeZero
303
+ }));
304
+ });
305
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPointMenuChange", function (index, clickedItem) {
306
+ if (clickedItem === 'sample') {
307
+ var value = _this.props.value;
308
+ var sampleAnswers = Array.from(value.sampleAnswers || []);
309
+
310
+ if (checkSampleAnswer(sampleAnswers[index])) {
311
+ // an empty string will display an empty Sample Answer input field
312
+ _this.changeContent(index, '', 'sampleAnswers');
313
+ } else {
314
+ // when the content is null or 'null', the Sample Answer input field will not be displayed
315
+ _this.changeContent(index, null, 'sampleAnswers');
316
+ }
317
+ }
318
+ });
319
+ return _this;
320
+ }
321
+
322
+ (0, _createClass2["default"])(RawAuthoring, [{
323
+ key: "render",
324
+ value: function render() {
325
+ var _this2 = this;
326
+
327
+ var _this$props6 = this.props,
328
+ classes = _this$props6.classes,
329
+ className = _this$props6.className,
330
+ value = _this$props6.value,
331
+ _this$props6$mathMlOp = _this$props6.mathMlOptions,
332
+ mathMlOptions = _this$props6$mathMlOp === void 0 ? {} : _this$props6$mathMlOp,
333
+ _this$props6$config = _this$props6.config,
334
+ config = _this$props6$config === void 0 ? {} : _this$props6$config,
335
+ _this$props6$rubricle = _this$props6.rubricless,
336
+ rubricless = _this$props6$rubricle === void 0 ? false : _this$props6$rubricle,
337
+ _this$props6$pluginOp = _this$props6.pluginOpts,
338
+ pluginOpts = _this$props6$pluginOp === void 0 ? {} : _this$props6$pluginOp,
339
+ _this$props6$imageSup = _this$props6.imageSupport,
340
+ imageSupport = _this$props6$imageSup === void 0 ? {} : _this$props6$imageSup;
341
+
342
+ var _ref = value || {},
343
+ _ref$excludeZeroEnabl = _ref.excludeZeroEnabled,
344
+ excludeZeroEnabled = _ref$excludeZeroEnabl === void 0 ? true : _ref$excludeZeroEnabl,
345
+ _ref$maxPointsEnabled = _ref.maxPointsEnabled,
346
+ maxPointsEnabled = _ref$maxPointsEnabled === void 0 ? true : _ref$maxPointsEnabled,
347
+ _ref$errors = _ref.errors,
348
+ errors = _ref$errors === void 0 ? {} : _ref$errors,
349
+ _ref$rubriclessInstru = _ref.rubriclessInstructionEnabled,
350
+ rubriclessInstructionEnabled = _ref$rubriclessInstru === void 0 ? false : _ref$rubriclessInstru,
351
+ _ref$maxPoints = _ref.maxPoints,
352
+ maxPoints = _ref$maxPoints === void 0 ? 10 : _ref$maxPoints; // rubric will contain a max value for maxPoints
353
+
354
+
355
+ var _ref2 = config || {},
356
+ _ref2$rubriclessInstr = _ref2.rubriclessInstruction,
357
+ rubriclessInstruction = _ref2$rubriclessInstr === void 0 ? {} : _ref2$rubriclessInstr,
358
+ _ref2$maxMaxPoints = _ref2.maxMaxPoints,
359
+ maxMaxPoints = _ref2$maxMaxPoints === void 0 ? 10 : _ref2$maxMaxPoints;
360
+
361
+ var _ref3 = errors || {},
362
+ pointsDescriptorsErrors = _ref3.pointsDescriptorsErrors;
363
+
364
+ if (value && Number.isFinite(value.maxPoints)) {
365
+ // eslint-disable-next-line no-console
366
+ console.warn('maxPoints is deprecated - remove from model');
367
+ } // for rubric value is computed based on points
368
+
369
+
370
+ var maxPointsValue = maxPoints;
371
+ return /*#__PURE__*/_react["default"].createElement("div", {
372
+ className: (0, _classnames["default"])(classes["class"], className)
373
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
374
+ variant: "h5",
375
+ className: classes.rubricTitle
376
+ }, "Rubric"), /*#__PURE__*/_react["default"].createElement(_FormGroup["default"], {
377
+ row: true
378
+ }, maxPointsEnabled && /*#__PURE__*/_react["default"].createElement(MaxPoints, {
379
+ max: maxMaxPoints < 100 ? maxMaxPoints : 100,
380
+ value: maxPointsValue,
381
+ onChange: this.changeMaxPoints,
382
+ pluginOpts: pluginOpts,
383
+ imageSupport: imageSupport
384
+ }), excludeZeroEnabled && /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
385
+ label: "Exclude zeros",
386
+ control: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
387
+ checked: value.excludeZero,
388
+ onChange: this.excludeZeros
389
+ })
390
+ })), rubriclessInstructionEnabled && rubricless && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
391
+ label: rubriclessInstruction.label,
392
+ className: classes.inputContainer
393
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
394
+ className: classes.input,
395
+ markup: value.rubriclessInstruction || '',
396
+ onChange: this.changeRubriclessInstruction,
397
+ pluginProps: pluginOpts,
398
+ nonEmpty: false,
399
+ disableUnderline: true,
400
+ languageCharactersProps: [{
401
+ language: 'spanish'
402
+ }, {
403
+ language: 'special'
404
+ }],
405
+ mathMlOptions: mathMlOptions,
406
+ imageSupport: imageSupport
407
+ })), /*#__PURE__*/_react["default"].createElement("div", {
408
+ className: rubricless ? classes.rubricless : classes.container
409
+ }, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.DragDropContext, {
410
+ onDragEnd: this.dragEnd
411
+ }, /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Droppable, {
412
+ droppableId: "droppable"
413
+ }, function (provided) {
414
+ return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, provided.droppableProps, {
415
+ ref: provided.innerRef
416
+ }), value.points.map(function (p, index) {
417
+ return /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.Draggable, {
418
+ key: "".concat(p.points, "-").concat(index),
419
+ index: index,
420
+ draggableId: index.toString()
421
+ }, function (provided) {
422
+ return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
423
+ className: classes.configHolder,
424
+ ref: provided.innerRef
425
+ }, provided.draggableProps, provided.dragHandleProps), /*#__PURE__*/_react["default"].createElement(PointConfig, {
426
+ points: value.points.length - 1 - index,
427
+ content: p,
428
+ error: pointsDescriptorsErrors && pointsDescriptorsErrors[value.points.length - 1 - index],
429
+ sampleAnswer: value.sampleAnswers && value.sampleAnswers[index],
430
+ onChange: function onChange(content) {
431
+ return _this2.changeContent(index, content, 'points');
432
+ },
433
+ onSampleChange: function onSampleChange(content) {
434
+ return _this2.changeContent(index, content, 'sampleAnswers');
435
+ },
436
+ onMenuChange: function onMenuChange(clickedItem) {
437
+ return _this2.onPointMenuChange(index, clickedItem);
438
+ },
439
+ mathMlOptions: mathMlOptions,
440
+ pluginOpts: pluginOpts,
441
+ imageSupport: imageSupport,
442
+ excludeZero: value.excludeZero
443
+ }));
444
+ });
445
+ }), provided.placeholder);
446
+ }))));
447
+ }
448
+ }]);
449
+ return RawAuthoring;
450
+ }(_react["default"].Component);
451
+
452
+ exports.RawAuthoring = RawAuthoring;
453
+ (0, _defineProperty2["default"])(RawAuthoring, "propTypes", {
454
+ classes: _propTypes["default"].object.isRequired,
455
+ className: _propTypes["default"].string,
456
+ value: RubricType,
457
+ config: _propTypes["default"].object,
458
+ pluginOpts: _propTypes["default"].object,
459
+ rubricless: _propTypes["default"].bool,
460
+ onChange: _propTypes["default"].func,
461
+ imageSupport: _propTypes["default"].shape({
462
+ add: _propTypes["default"].func.isRequired,
463
+ "delete": _propTypes["default"].func.isRequired
464
+ })
465
+ });
466
+ (0, _defineProperty2["default"])(RawAuthoring, "defaultProps", {});
467
+
468
+ var styles = function styles(theme) {
469
+ return {
470
+ container: {
471
+ backgroundColor: _grey["default"][200],
472
+ borderWidth: 1,
473
+ borderStyle: 'solid',
474
+ borderColor: _grey["default"][300],
475
+ padding: theme.spacing.unit * 2,
476
+ margin: theme.spacing.unit
477
+ },
478
+ inputContainer: {
479
+ width: '100%',
480
+ paddingTop: theme.spacing.unit * 2,
481
+ marginBottom: theme.spacing.unit * 2
482
+ },
483
+ rubricless: {
484
+ display: 'none'
485
+ },
486
+ configHolder: {
487
+ paddingTop: theme.spacing.unit,
488
+ paddingBottom: theme.spacing.unit
489
+ },
490
+ rubricTitle: {
491
+ paddingLeft: theme.spacing.unit,
492
+ margin: theme.spacing.unit
493
+ }
494
+ };
495
+ };
496
+
497
+ var StyledRawAuthoring = (0, _styles.withStyles)(styles)(RawAuthoring);
498
+
499
+ var Reverse = function Reverse(props) {
500
+ var _ref4 = props || {},
501
+ _ref4$rubricless = _ref4.rubricless,
502
+ rubricless = _ref4$rubricless === void 0 ? false : _ref4$rubricless,
503
+ _ref4$config = _ref4.config,
504
+ config = _ref4$config === void 0 ? {} : _ref4$config,
505
+ _ref4$pluginOpts = _ref4.pluginOpts,
506
+ pluginOpts = _ref4$pluginOpts === void 0 ? {} : _ref4$pluginOpts,
507
+ _ref4$imageSupport = _ref4.imageSupport,
508
+ imageSupport = _ref4$imageSupport === void 0 ? {} : _ref4$imageSupport;
509
+
510
+ var points = Array.from(props.value.points || []).reverse();
511
+ var sampleAnswers = Array.from(props.value.sampleAnswers || []).reverse();
512
+
513
+ if (points.length > sampleAnswers.length) {
514
+ sampleAnswers = (0, _times["default"])(points.length - sampleAnswers.length).map(function () {
515
+ return null;
516
+ }).concat(sampleAnswers);
517
+ }
518
+
519
+ var value = _objectSpread(_objectSpread({}, props.value), {}, {
520
+ points: points,
521
+ sampleAnswers: sampleAnswers
522
+ });
523
+
524
+ var onChange = function onChange(value) {
525
+ props.onChange(_objectSpread(_objectSpread({}, value), {}, {
526
+ points: Array.from(value.points || []).reverse(),
527
+ sampleAnswers: Array.from(value.sampleAnswers || []).reverse()
528
+ }));
529
+ };
530
+
531
+ return /*#__PURE__*/_react["default"].createElement(StyledRawAuthoring, {
532
+ value: value,
533
+ config: config,
534
+ onChange: onChange,
535
+ rubricless: rubricless,
536
+ pluginOpts: pluginOpts,
537
+ imageSupport: imageSupport
538
+ });
539
+ };
540
+
541
+ Reverse.propTypes = {
542
+ value: RubricType,
543
+ config: _propTypes["default"].object,
544
+ pluginOpts: _propTypes["default"].object,
545
+ rubricless: _propTypes["default"].bool,
546
+ getIndex: _propTypes["default"].func,
547
+ onChange: _propTypes["default"].func,
548
+ imageSupport: _propTypes["default"].shape({
549
+ add: _propTypes["default"].func.isRequired,
550
+ "delete": _propTypes["default"].func.isRequired
551
+ })
552
+ };
553
+ var _default = Reverse;
554
+ exports["default"] = _default;
555
+ //# sourceMappingURL=authoring.js.map
@@ -0,0 +1 @@
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","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","excludeZeros","label","inputContainer","changeRubriclessInstruction","language","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","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/pie-toolbox/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/pie-toolbox/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 = {}, excludeZero, imageSupport = {}, } = 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 />\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 />\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\n onChange({ ...value, maxPoints });\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={<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 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(\n (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 )}\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 = {}, 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"}
@@ -0,0 +1,24 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/pie-toolbox-rubric/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"}