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

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 (115) hide show
  1. package/configure/package.json +2 -2
  2. package/controller/package.json +1 -1
  3. package/module/configure.js +233613 -0
  4. package/module/controller.js +379 -0
  5. package/module/demo.js +221 -0
  6. package/module/element.js +231245 -0
  7. package/module/index.html +21 -0
  8. package/module/manifest.json +14 -0
  9. package/module/print-demo.js +259 -0
  10. package/module/print.html +18 -0
  11. package/module/print.js +231217 -0
  12. package/package.json +4 -4
  13. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.json +0 -1
  14. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.md +0 -1383
  15. package/configure/node_modules/@pie-element/multi-trait-rubric/LICENSE.md +0 -5
  16. package/configure/node_modules/@pie-element/multi-trait-rubric/README.md +0 -55
  17. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.json +0 -1
  18. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.md +0 -1270
  19. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js +0 -584
  20. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js.map +0 -1
  21. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js +0 -143
  22. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js.map +0 -1
  23. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js +0 -204
  24. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js.map +0 -1
  25. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js +0 -602
  26. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js.map +0 -1
  27. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js +0 -361
  28. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js.map +0 -1
  29. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js +0 -556
  30. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js.map +0 -1
  31. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js +0 -380
  32. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js.map +0 -1
  33. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js +0 -296
  34. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js.map +0 -1
  35. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js +0 -14
  36. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js.map +0 -1
  37. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/package.json +0 -18
  38. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.json +0 -1
  39. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.md +0 -544
  40. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js +0 -94
  41. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js.map +0 -1
  42. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js +0 -215
  43. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js.map +0 -1
  44. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js +0 -13
  45. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js.map +0 -1
  46. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/package.json +0 -15
  47. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json +0 -803
  48. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json.md +0 -602
  49. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/config.js +0 -8
  50. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/generate.js +0 -180
  51. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/index.html +0 -1
  52. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/session.js +0 -6
  53. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json +0 -531
  54. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json.md +0 -374
  55. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js +0 -85
  56. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js.map +0 -1
  57. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js +0 -161
  58. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js.map +0 -1
  59. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js +0 -330
  60. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js.map +0 -1
  61. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js +0 -103
  62. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js.map +0 -1
  63. package/configure/node_modules/@pie-element/multi-trait-rubric/package.json +0 -24
  64. package/configure/node_modules/@pie-element/rubric/CHANGELOG.json +0 -257
  65. package/configure/node_modules/@pie-element/rubric/CHANGELOG.md +0 -1640
  66. package/configure/node_modules/@pie-element/rubric/LICENSE.md +0 -5
  67. package/configure/node_modules/@pie-element/rubric/README.md +0 -3
  68. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.json +0 -197
  69. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.md +0 -1471
  70. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js +0 -59
  71. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js.map +0 -1
  72. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js +0 -194
  73. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js.map +0 -1
  74. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js +0 -160
  75. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js.map +0 -1
  76. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/authoring.js +0 -555
  77. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/authoring.js.map +0 -1
  78. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/index.js +0 -24
  79. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/index.js.map +0 -1
  80. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/point-menu.js +0 -172
  81. package/configure/node_modules/@pie-element/rubric/configure/lib/pie-toolbox-rubric/point-menu.js.map +0 -1
  82. package/configure/node_modules/@pie-element/rubric/configure/package.json +0 -17
  83. package/configure/node_modules/@pie-element/rubric/configure/src/__tests__/index.test.jsx +0 -173
  84. package/configure/node_modules/@pie-element/rubric/configure/src/defaults.js +0 -39
  85. package/configure/node_modules/@pie-element/rubric/configure/src/index.js +0 -127
  86. package/configure/node_modules/@pie-element/rubric/configure/src/main.jsx +0 -87
  87. package/configure/node_modules/@pie-element/rubric/configure/src/pie-toolbox-rubric/authoring.jsx +0 -427
  88. package/configure/node_modules/@pie-element/rubric/configure/src/pie-toolbox-rubric/index.js +0 -9
  89. package/configure/node_modules/@pie-element/rubric/configure/src/pie-toolbox-rubric/point-menu.jsx +0 -94
  90. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.json +0 -17
  91. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.md +0 -536
  92. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js +0 -51
  93. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js.map +0 -1
  94. package/configure/node_modules/@pie-element/rubric/controller/package.json +0 -13
  95. package/configure/node_modules/@pie-element/rubric/controller/src/__tests__/index.test.js +0 -31
  96. package/configure/node_modules/@pie-element/rubric/controller/src/index.js +0 -42
  97. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json +0 -382
  98. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json.md +0 -292
  99. package/configure/node_modules/@pie-element/rubric/docs/demo/config.js +0 -8
  100. package/configure/node_modules/@pie-element/rubric/docs/demo/generate.js +0 -8
  101. package/configure/node_modules/@pie-element/rubric/docs/demo/index.html +0 -2
  102. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json +0 -226
  103. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json.md +0 -161
  104. package/configure/node_modules/@pie-element/rubric/lib/index.js +0 -88
  105. package/configure/node_modules/@pie-element/rubric/lib/index.js.map +0 -1
  106. package/configure/node_modules/@pie-element/rubric/lib/main.js +0 -187
  107. package/configure/node_modules/@pie-element/rubric/lib/main.js.map +0 -1
  108. package/configure/node_modules/@pie-element/rubric/lib/print.js +0 -114
  109. package/configure/node_modules/@pie-element/rubric/lib/print.js.map +0 -1
  110. package/configure/node_modules/@pie-element/rubric/package.json +0 -26
  111. package/configure/node_modules/@pie-element/rubric/src/__tests__/__snapshots__/rubric-view.test.jsx.snap +0 -23003
  112. package/configure/node_modules/@pie-element/rubric/src/__tests__/rubric-view.test.jsx +0 -50
  113. package/configure/node_modules/@pie-element/rubric/src/index.js +0 -34
  114. package/configure/node_modules/@pie-element/rubric/src/main.jsx +0 -136
  115. package/configure/node_modules/@pie-element/rubric/src/print.js +0 -63
@@ -1,555 +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/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
@@ -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","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"}
@@ -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
@@ -1 +0,0 @@
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"}