@pie-element/graphing 5.13.2-next.1 → 5.13.2-next.4

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.
@@ -0,0 +1,581 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = exports.Tools = exports.CorrectResponse = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
+
28
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
29
+
30
+ var React = _interopRequireWildcard(require("react"));
31
+
32
+ var _classnames = _interopRequireDefault(require("classnames"));
33
+
34
+ var _propTypes = _interopRequireDefault(require("prop-types"));
35
+
36
+ var _styles = require("@material-ui/core/styles");
37
+
38
+ var _graphing = require("@pie-lib/pie-toolbox/graphing");
39
+
40
+ var _configUi = require("@pie-lib/pie-toolbox/config-ui");
41
+
42
+ var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
43
+
44
+ var _lodash = require("lodash");
45
+
46
+ var _core = require("@material-ui/core");
47
+
48
+ var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
49
+
50
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
+
52
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
53
+
54
+ 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; }
55
+
56
+ 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; }
57
+
58
+ 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); }; }
59
+
60
+ 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; } }
61
+
62
+ var styles = function styles(theme) {
63
+ return {
64
+ column: {
65
+ flex: 1
66
+ },
67
+ graphingTools: {
68
+ color: theme.palette.grey['A200']
69
+ },
70
+ availableTools: {
71
+ marginTop: theme.spacing.unit,
72
+ display: 'flex',
73
+ flexWrap: 'wrap'
74
+ },
75
+ availableTool: {
76
+ cursor: 'pointer',
77
+ margin: theme.spacing.unit,
78
+ padding: theme.spacing.unit,
79
+ border: "2px solid ".concat(theme.palette.common.white),
80
+ textTransform: 'capitalize',
81
+ '&:hover': {
82
+ color: theme.palette.grey[800]
83
+ }
84
+ },
85
+ selectedTool: {
86
+ background: theme.palette.grey['A100'],
87
+ border: "2px solid ".concat(theme.palette.grey['A200'])
88
+ },
89
+ container: {
90
+ border: "2px solid ".concat(theme.palette.grey['A200']),
91
+ borderRadius: '4px',
92
+ padding: "0 ".concat(theme.spacing.unit * 4, "px ").concat(theme.spacing.unit * 2, "px"),
93
+ background: theme.palette.grey[50]
94
+ },
95
+ button: {
96
+ margin: "".concat(theme.spacing.unit * 2.5, "px 0"),
97
+ cursor: 'pointer',
98
+ background: theme.palette.grey[200],
99
+ padding: theme.spacing.unit * 1.5,
100
+ width: 'fit-content',
101
+ borderRadius: '4px',
102
+ '&:hover': {
103
+ background: theme.palette.grey['A100']
104
+ }
105
+ },
106
+ responseTitle: {
107
+ display: 'flex',
108
+ alignItems: 'center',
109
+ marginTop: theme.spacing.unit * 2.5
110
+ },
111
+ iconButton: {
112
+ marginLeft: '6px',
113
+ color: theme.palette.grey[600],
114
+ '&:hover': {
115
+ cursor: 'pointer',
116
+ color: theme.palette.common.black
117
+ }
118
+ },
119
+ name: {
120
+ marginBottom: theme.spacing.unit / 2
121
+ },
122
+ tooltip: {
123
+ fontSize: theme.typography.fontSize - 2,
124
+ whiteSpace: 'pre',
125
+ maxWidth: '500px'
126
+ },
127
+ subtitleText: {
128
+ marginTop: theme.spacing.unit * 1.5,
129
+ marginBottom: theme.spacing.unit
130
+ },
131
+ toolsHeader: {
132
+ display: 'flex',
133
+ alignItems: 'center',
134
+ justifyContent: 'space-between'
135
+ },
136
+ defaultTool: {
137
+ display: 'flex',
138
+ alignItems: 'center',
139
+ width: '300px'
140
+ },
141
+ defaultToolSelect: {
142
+ marginLeft: theme.spacing.unit,
143
+ textTransform: 'uppercase',
144
+ color: theme.palette.grey[800]
145
+ },
146
+ menuItem: {
147
+ textTransform: 'uppercase'
148
+ },
149
+ noDefaultTool: {
150
+ padding: theme.spacing.unit / 2
151
+ },
152
+ error: {
153
+ color: theme.palette.error.main
154
+ },
155
+ errorMessage: {
156
+ fontSize: theme.typography.fontSize - 2,
157
+ color: theme.palette.error.main,
158
+ marginTop: theme.spacing.unit
159
+ },
160
+ graphError: {
161
+ border: "2px solid ".concat(theme.palette.error.main)
162
+ }
163
+ };
164
+ };
165
+
166
+ var Tools = function Tools(_ref) {
167
+ var classes = _ref.classes,
168
+ availableTools = _ref.availableTools,
169
+ defaultTool = _ref.defaultTool,
170
+ hasErrors = _ref.hasErrors,
171
+ toolbarTools = _ref.toolbarTools,
172
+ toggleToolBarTool = _ref.toggleToolBarTool,
173
+ onDefaultToolChange = _ref.onDefaultToolChange;
174
+ var allTools = availableTools || [];
175
+ var isLabelAvailable = allTools.includes('label');
176
+ var toolbarToolsNoLabel = (toolbarTools || []).filter(function (tool) {
177
+ return tool !== 'label';
178
+ });
179
+
180
+ if (isLabelAvailable) {
181
+ // label has to be placed at the end of the list
182
+ var allToolsNoLabel = allTools.filter(function (tool) {
183
+ return tool !== 'label';
184
+ });
185
+ allTools = [].concat((0, _toConsumableArray2["default"])(allToolsNoLabel), ['label']);
186
+ }
187
+
188
+ return /*#__PURE__*/React.createElement("div", {
189
+ className: classes.graphingTools
190
+ }, /*#__PURE__*/React.createElement("div", {
191
+ className: classes.toolsHeader
192
+ }, /*#__PURE__*/React.createElement("span", null, "GRAPHING TOOLS"), toolbarToolsNoLabel.length > 0 && /*#__PURE__*/React.createElement("div", {
193
+ className: classes.defaultTool
194
+ }, /*#__PURE__*/React.createElement("span", null, "Default graphing tool:"), /*#__PURE__*/React.createElement(_core.Select, {
195
+ className: classes.defaultToolSelect,
196
+ onChange: onDefaultToolChange,
197
+ value: defaultTool,
198
+ disableUnderline: true
199
+ }, toolbarToolsNoLabel.map(function (tool, index) {
200
+ return /*#__PURE__*/React.createElement(_core.MenuItem, {
201
+ key: index,
202
+ className: classes.menuItem,
203
+ value: tool
204
+ }, tool);
205
+ })))), /*#__PURE__*/React.createElement("div", {
206
+ className: classes.availableTools
207
+ }, allTools.map(function (tool) {
208
+ var selected = toolbarTools.find(function (t) {
209
+ return t === tool;
210
+ });
211
+ return /*#__PURE__*/React.createElement("div", {
212
+ key: tool,
213
+ className: (0, _classnames["default"])(classes.availableTool, selected && classes.selectedTool, hasErrors && tool !== 'label' && classes.error),
214
+ onClick: function onClick() {
215
+ return toggleToolBarTool(tool);
216
+ }
217
+ }, tool.toUpperCase());
218
+ })));
219
+ };
220
+
221
+ exports.Tools = Tools;
222
+ Tools.propTypes = {
223
+ classes: _propTypes["default"].object.isRequired,
224
+ toolbarTools: _propTypes["default"].arrayOf(_propTypes["default"].string),
225
+ toggleToolBarTool: _propTypes["default"].func,
226
+ availableTools: _propTypes["default"].array,
227
+ defaultTool: _propTypes["default"].string,
228
+ hasErrors: _propTypes["default"].number,
229
+ onDefaultToolChange: _propTypes["default"].func
230
+ };
231
+
232
+ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
233
+ (0, _inherits2["default"])(CorrectResponse, _React$Component);
234
+
235
+ var _super = _createSuper(CorrectResponse);
236
+
237
+ function CorrectResponse() {
238
+ var _this;
239
+
240
+ (0, _classCallCheck2["default"])(this, CorrectResponse);
241
+
242
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
243
+ args[_key] = arguments[_key];
244
+ }
245
+
246
+ _this = _super.call.apply(_super, [this].concat(args));
247
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
248
+ dialog: {
249
+ open: false
250
+ }
251
+ });
252
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleAlertDialog", function (open, callback) {
253
+ return _this.setState({
254
+ dialog: {
255
+ open: open
256
+ }
257
+ }, callback);
258
+ });
259
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMarks", function (key, marks) {
260
+ var _this$props = _this.props,
261
+ model = _this$props.model,
262
+ onChange = _this$props.onChange;
263
+ (0, _lodash.set)(model, "answers.".concat(key, ".marks"), marks);
264
+ onChange(model);
265
+ });
266
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "filterMarks", function (tool) {
267
+ var answers = _this.props.model.answers;
268
+ return Object.entries(answers || {}).reduce(function (object, _ref2) {
269
+ var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
270
+ key = _ref3[0],
271
+ answer = _ref3[1];
272
+
273
+ object[key] = _objectSpread(_objectSpread({}, answer), {}, {
274
+ marks: (answer.marks || []).filter(function (mark) {
275
+ return mark.type !== tool;
276
+ })
277
+ });
278
+ return object;
279
+ }, {});
280
+ });
281
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeToolbarTools", function (toolbarTools) {
282
+ var _this$props2 = _this.props,
283
+ model = _this$props2.model,
284
+ onChange = _this$props2.onChange;
285
+ model.toolbarTools = toolbarTools;
286
+ onChange(model);
287
+ });
288
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateModel", function (props) {
289
+ var _this$props3 = _this.props,
290
+ model = _this$props3.model,
291
+ onChange = _this$props3.onChange;
292
+ onChange(_objectSpread(_objectSpread({}, model), props));
293
+ });
294
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleToolBarTool", function (tool) {
295
+ var _this$props$model = _this.props.model,
296
+ defaultTool = _this$props$model.defaultTool,
297
+ toolbarTools = _this$props$model.toolbarTools,
298
+ _this$props$model$ans = _this$props$model.answers,
299
+ answers = _this$props$model$ans === void 0 ? {} : _this$props$model$ans;
300
+ var updatedToolbarTools = (0, _toConsumableArray2["default"])(toolbarTools);
301
+ var newDefaultTool = defaultTool;
302
+ var index = toolbarTools.findIndex(function (t) {
303
+ return tool === t;
304
+ });
305
+
306
+ if (index >= 0) {
307
+ var updatedAnswers = _this.filterMarks(tool);
308
+
309
+ updatedToolbarTools.splice(index, 1);
310
+
311
+ if (tool === defaultTool) {
312
+ var toolbarToolsNoLabel = (updatedToolbarTools || []).filter(function (tool) {
313
+ return tool !== 'label';
314
+ });
315
+ newDefaultTool = toolbarToolsNoLabel.length && toolbarToolsNoLabel[0] || '';
316
+ }
317
+
318
+ if (!(0, _lodash.isEqual)(answers, updatedAnswers)) {
319
+ _this.setState({
320
+ dialog: {
321
+ open: true,
322
+ title: 'Warning',
323
+ text: "Correct answer includes one or more ".concat(tool, " objects and all of them will be deleted."),
324
+ onConfirm: function onConfirm() {
325
+ return _this.handleAlertDialog(false, _this.updateModel({
326
+ toolbarTools: updatedToolbarTools,
327
+ answers: updatedAnswers,
328
+ defaultTool: newDefaultTool
329
+ }));
330
+ },
331
+ onClose: function onClose() {
332
+ return _this.handleAlertDialog(false);
333
+ }
334
+ }
335
+ });
336
+
337
+ return;
338
+ }
339
+ } else {
340
+ updatedToolbarTools.push(tool);
341
+
342
+ if (defaultTool === '' && tool !== 'label') {
343
+ newDefaultTool = tool;
344
+ }
345
+ }
346
+
347
+ _this.updateModel({
348
+ toolbarTools: updatedToolbarTools,
349
+ defaultTool: newDefaultTool
350
+ });
351
+ });
352
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDefaultToolChange", function (event) {
353
+ var value = event.target.value;
354
+
355
+ _this.updateModel({
356
+ defaultTool: value
357
+ });
358
+ });
359
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addAlternateResponse", function () {
360
+ var _this$props4 = _this.props,
361
+ model = _this$props4.model,
362
+ onChange = _this$props4.onChange;
363
+
364
+ var _ref4 = model || {},
365
+ answers = _ref4.answers;
366
+
367
+ var answersKeys = Object.keys(answers || {});
368
+ (0, _lodash.set)(model, "answers.".concat("alternate".concat(answersKeys.length)), {
369
+ name: "Alternate ".concat(answersKeys.length),
370
+ marks: []
371
+ });
372
+ onChange(model);
373
+ });
374
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "deleteAlternateResponse", function (answerKey, answer) {
375
+ var _this$props5 = _this.props,
376
+ model = _this$props5.model,
377
+ onChange = _this$props5.onChange;
378
+
379
+ var _ref5 = model || {},
380
+ answers = _ref5.answers;
381
+
382
+ var _ref6 = answer || {},
383
+ _ref6$marks = _ref6.marks,
384
+ marks = _ref6$marks === void 0 ? [] : _ref6$marks,
385
+ name = _ref6.name;
386
+
387
+ var deleteAnswer = function deleteAnswer() {
388
+ delete answers[answerKey]; // rebuild answers based on new alternate positions after deletion
389
+
390
+ var newAnswers = Object.entries(answers).reduce(function (acc, currentValue, index) {
391
+ var _currentValue = (0, _slicedToArray2["default"])(currentValue, 2),
392
+ key = _currentValue[0],
393
+ value = _currentValue[1];
394
+
395
+ var newAnswer = key === 'correctAnswer' ? _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, key, value)) : _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, 'alternate' + index, _objectSpread(_objectSpread({}, value), {}, {
396
+ name: "Alternate ".concat(index)
397
+ })));
398
+ return newAnswer;
399
+ }, {});
400
+ onChange(_objectSpread(_objectSpread({}, model), {}, {
401
+ answers: newAnswers
402
+ }));
403
+ };
404
+
405
+ if (marks.length) {
406
+ _this.setState({
407
+ dialog: {
408
+ open: true,
409
+ title: 'Warning',
410
+ text: "".concat(name, " includes one or more shapes and the entire response will be deleted."),
411
+ onConfirm: function onConfirm() {
412
+ return _this.handleAlertDialog(false, deleteAnswer);
413
+ },
414
+ onClose: function onClose() {
415
+ return _this.handleAlertDialog(false);
416
+ }
417
+ }
418
+ });
419
+
420
+ return;
421
+ }
422
+
423
+ deleteAnswer();
424
+ });
425
+ return _this;
426
+ }
427
+
428
+ (0, _createClass2["default"])(CorrectResponse, [{
429
+ key: "render",
430
+ value: function render() {
431
+ var _this2 = this;
432
+
433
+ var _this$props6 = this.props,
434
+ availableTools = _this$props6.availableTools,
435
+ classes = _this$props6.classes,
436
+ errors = _this$props6.errors,
437
+ model = _this$props6.model,
438
+ _this$props6$mathMlOp = _this$props6.mathMlOptions,
439
+ mathMlOptions = _this$props6$mathMlOp === void 0 ? {} : _this$props6$mathMlOp,
440
+ removeIncompleteTool = _this$props6.removeIncompleteTool;
441
+ var dialog = this.state.dialog;
442
+
443
+ var _ref7 = model || {},
444
+ _ref7$answers = _ref7.answers,
445
+ answers = _ref7$answers === void 0 ? {} : _ref7$answers,
446
+ arrows = _ref7.arrows,
447
+ backgroundMarks = _ref7.backgroundMarks,
448
+ coordinatesOnHover = _ref7.coordinatesOnHover,
449
+ defaultTool = _ref7.defaultTool,
450
+ domain = _ref7.domain,
451
+ _ref7$graph = _ref7.graph,
452
+ graph = _ref7$graph === void 0 ? {} : _ref7$graph,
453
+ labels = _ref7.labels,
454
+ labelsEnabled = _ref7.labelsEnabled,
455
+ range = _ref7.range,
456
+ title = _ref7.title,
457
+ titleEnabled = _ref7.titleEnabled,
458
+ toolbarTools = _ref7.toolbarTools;
459
+
460
+ var _ref8 = errors || {},
461
+ _ref8$correctAnswerEr = _ref8.correctAnswerErrors,
462
+ correctAnswerErrors = _ref8$correctAnswerEr === void 0 ? {} : _ref8$correctAnswerEr,
463
+ toolbarToolsError = _ref8.toolbarToolsError;
464
+
465
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_core.Typography, {
466
+ component: "div",
467
+ variant: "subheading"
468
+ }, "Define Tool Set and Correct Response"), /*#__PURE__*/React.createElement(_core.Typography, {
469
+ component: "div",
470
+ variant: "body1",
471
+ className: classes.subtitleText
472
+ }, "Use this interface to choose which graphing tools students will be able to use, and to define the correct answer"), /*#__PURE__*/React.createElement(Tools, {
473
+ classes: classes,
474
+ availableTools: availableTools,
475
+ defaultTool: defaultTool,
476
+ hasErrors: !!toolbarToolsError,
477
+ onDefaultToolChange: this.onDefaultToolChange,
478
+ toggleToolBarTool: this.toggleToolBarTool,
479
+ toolbarTools: toolbarTools
480
+ }), toolbarToolsError && /*#__PURE__*/React.createElement("div", {
481
+ className: classes.errorMessage
482
+ }, toolbarToolsError), Object.entries(answers || {}).map(function (_ref9) {
483
+ var _ref10 = (0, _slicedToArray2["default"])(_ref9, 2),
484
+ key = _ref10[0],
485
+ answer = _ref10[1];
486
+
487
+ var _ref11 = answer || {},
488
+ _ref11$marks = _ref11.marks,
489
+ marks = _ref11$marks === void 0 ? [] : _ref11$marks,
490
+ name = _ref11.name;
491
+
492
+ return /*#__PURE__*/React.createElement(React.Fragment, {
493
+ key: "correct-response-graph-".concat(name)
494
+ }, /*#__PURE__*/React.createElement("div", {
495
+ className: classes.responseTitle
496
+ }, /*#__PURE__*/React.createElement("div", {
497
+ className: classes.name
498
+ }, name), key === 'correctAnswer' && /*#__PURE__*/React.createElement(_core.Tooltip, {
499
+ classes: {
500
+ tooltip: classes.tooltip
501
+ },
502
+ disableFocusListener: true,
503
+ disableTouchListener: true,
504
+ placement: 'right',
505
+ title: 'At least 1 graph object should be defined.'
506
+ }, /*#__PURE__*/React.createElement(_Info["default"], {
507
+ fontSize: 'small',
508
+ color: 'primary',
509
+ style: {
510
+ marginLeft: '8px',
511
+ marginBottom: 'auto'
512
+ }
513
+ })), key !== 'correctAnswer' && /*#__PURE__*/React.createElement(_Delete["default"], {
514
+ className: classes.iconButton,
515
+ onClick: function onClick() {
516
+ return _this2.deleteAlternateResponse(key, answer);
517
+ }
518
+ })), /*#__PURE__*/React.createElement(_graphing.GraphContainer, {
519
+ className: correctAnswerErrors[key] && classes.graphError,
520
+ axesSettings: {
521
+ includeArrows: arrows
522
+ },
523
+ backgroundMarks: backgroundMarks,
524
+ coordinatesOnHover: coordinatesOnHover,
525
+ disabledLabels: true,
526
+ disabledTitle: true,
527
+ domain: domain,
528
+ draggableTools: key === 'correctAnswer',
529
+ labels: labels,
530
+ marks: marks,
531
+ onChangeMarks: function onChangeMarks(newMarks) {
532
+ return _this2.changeMarks(key, newMarks);
533
+ },
534
+ range: range,
535
+ showLabels: labelsEnabled,
536
+ showTitle: titleEnabled,
537
+ size: {
538
+ width: graph.width,
539
+ height: graph.height
540
+ },
541
+ title: title,
542
+ toolbarTools: toolbarTools,
543
+ onChangeTools: function onChangeTools(toolbarTools) {
544
+ return _this2.updateModel({
545
+ toolbarTools: toolbarTools
546
+ });
547
+ },
548
+ mathMlOptions: mathMlOptions,
549
+ removeIncompleteTool: removeIncompleteTool
550
+ }), correctAnswerErrors[key] && /*#__PURE__*/React.createElement("div", {
551
+ className: classes.errorMessage
552
+ }, correctAnswerErrors[key]));
553
+ }), /*#__PURE__*/React.createElement("div", {
554
+ className: classes.button,
555
+ onClick: this.addAlternateResponse
556
+ }, "ADD ALTERNATE"), /*#__PURE__*/React.createElement(_configUi.AlertDialog, {
557
+ open: dialog.open,
558
+ title: dialog.title,
559
+ text: dialog.text,
560
+ onClose: dialog.onClose,
561
+ onConfirm: dialog.onConfirm
562
+ }));
563
+ }
564
+ }]);
565
+ return CorrectResponse;
566
+ }(React.Component);
567
+
568
+ exports.CorrectResponse = CorrectResponse;
569
+ (0, _defineProperty2["default"])(CorrectResponse, "propTypes", {
570
+ availableTools: _propTypes["default"].array,
571
+ classes: _propTypes["default"].object.isRequired,
572
+ errors: _propTypes["default"].object,
573
+ model: _propTypes["default"].object.isRequired,
574
+ onChange: _propTypes["default"].func.isRequired,
575
+ toolbarTools: _propTypes["default"].arrayOf(_propTypes["default"].String)
576
+ });
577
+
578
+ var _default = (0, _styles.withStyles)(styles)(CorrectResponse);
579
+
580
+ exports["default"] = _default;
581
+ //# sourceMappingURL=correct-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/correct-response.jsx"],"names":["styles","theme","column","flex","graphingTools","color","palette","grey","availableTools","marginTop","spacing","unit","display","flexWrap","availableTool","cursor","margin","padding","border","common","white","textTransform","selectedTool","background","container","borderRadius","button","width","responseTitle","alignItems","iconButton","marginLeft","black","name","marginBottom","tooltip","fontSize","typography","whiteSpace","maxWidth","subtitleText","toolsHeader","justifyContent","defaultTool","defaultToolSelect","menuItem","noDefaultTool","error","main","errorMessage","graphError","Tools","classes","hasErrors","toolbarTools","toggleToolBarTool","onDefaultToolChange","allTools","isLabelAvailable","includes","toolbarToolsNoLabel","filter","tool","allToolsNoLabel","length","map","index","selected","find","t","toUpperCase","propTypes","PropTypes","object","isRequired","arrayOf","string","func","array","number","CorrectResponse","dialog","open","callback","setState","key","marks","props","model","onChange","answers","Object","entries","reduce","answer","mark","type","updatedToolbarTools","newDefaultTool","findIndex","updatedAnswers","filterMarks","splice","title","text","onConfirm","handleAlertDialog","updateModel","onClose","push","event","value","target","answersKeys","keys","answerKey","deleteAnswer","newAnswers","acc","currentValue","newAnswer","errors","mathMlOptions","removeIncompleteTool","state","arrows","backgroundMarks","coordinatesOnHover","domain","graph","labels","labelsEnabled","range","titleEnabled","correctAnswerErrors","toolbarToolsError","deleteAlternateResponse","includeArrows","newMarks","changeMarks","height","addAlternateResponse","React","Component","String"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { GraphContainer as Graph } from '@pie-lib/pie-toolbox/graphing';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Delete from '@material-ui/icons/Delete';\nimport { set, isEqual } from 'lodash';\nimport { MenuItem, Select, Tooltip, Typography } from '@material-ui/core';\nimport Info from '@material-ui/icons/Info';\n\nconst styles = (theme) => ({\n column: {\n flex: 1,\n },\n graphingTools: {\n color: theme.palette.grey['A200'],\n },\n availableTools: {\n marginTop: theme.spacing.unit,\n display: 'flex',\n flexWrap: 'wrap',\n },\n availableTool: {\n cursor: 'pointer',\n margin: theme.spacing.unit,\n padding: theme.spacing.unit,\n border: `2px solid ${theme.palette.common.white}`,\n textTransform: 'capitalize',\n '&:hover': {\n color: theme.palette.grey[800],\n },\n },\n selectedTool: {\n background: theme.palette.grey['A100'],\n border: `2px solid ${theme.palette.grey['A200']}`,\n },\n container: {\n border: `2px solid ${theme.palette.grey['A200']}`,\n borderRadius: '4px',\n padding: `0 ${theme.spacing.unit * 4}px ${theme.spacing.unit * 2}px`,\n background: theme.palette.grey[50],\n },\n button: {\n margin: `${theme.spacing.unit * 2.5}px 0`,\n cursor: 'pointer',\n background: theme.palette.grey[200],\n padding: theme.spacing.unit * 1.5,\n width: 'fit-content',\n borderRadius: '4px',\n '&:hover': {\n background: theme.palette.grey['A100'],\n },\n },\n responseTitle: {\n display: 'flex',\n alignItems: 'center',\n marginTop: theme.spacing.unit * 2.5,\n },\n iconButton: {\n marginLeft: '6px',\n color: theme.palette.grey[600],\n '&:hover': {\n cursor: 'pointer',\n color: theme.palette.common.black,\n },\n },\n name: {\n marginBottom: theme.spacing.unit / 2,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n subtitleText: {\n marginTop: theme.spacing.unit * 1.5,\n marginBottom: theme.spacing.unit,\n },\n toolsHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n defaultTool: {\n display: 'flex',\n alignItems: 'center',\n width: '300px',\n },\n defaultToolSelect: {\n marginLeft: theme.spacing.unit,\n textTransform: 'uppercase',\n color: theme.palette.grey[800],\n },\n menuItem: {\n textTransform: 'uppercase',\n },\n noDefaultTool: {\n padding: theme.spacing.unit / 2,\n },\n error: {\n color: theme.palette.error.main,\n },\n errorMessage: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n marginTop: theme.spacing.unit,\n },\n graphError: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n});\n\nexport const Tools = ({\n classes,\n availableTools,\n defaultTool,\n hasErrors,\n toolbarTools,\n toggleToolBarTool,\n onDefaultToolChange,\n}) => {\n let allTools = availableTools || [];\n const isLabelAvailable = allTools.includes('label');\n const toolbarToolsNoLabel = (toolbarTools || []).filter((tool) => tool !== 'label');\n\n if (isLabelAvailable) {\n // label has to be placed at the end of the list\n const allToolsNoLabel = allTools.filter((tool) => tool !== 'label');\n allTools = [...allToolsNoLabel, 'label'];\n }\n\n return (\n <div className={classes.graphingTools}>\n <div className={classes.toolsHeader}>\n <span>GRAPHING TOOLS</span>\n {toolbarToolsNoLabel.length > 0 && (\n <div className={classes.defaultTool}>\n <span>Default graphing tool:</span>\n <Select\n className={classes.defaultToolSelect}\n onChange={onDefaultToolChange}\n value={defaultTool}\n disableUnderline\n >\n {toolbarToolsNoLabel.map((tool, index) => (\n <MenuItem key={index} className={classes.menuItem} value={tool}>\n {tool}\n </MenuItem>\n ))}\n </Select>\n </div>\n )}\n </div>\n <div className={classes.availableTools}>\n {allTools.map((tool) => {\n const selected = toolbarTools.find((t) => t === tool);\n\n return (\n <div\n key={tool}\n className={classnames(\n classes.availableTool,\n selected && classes.selectedTool,\n hasErrors && tool !== 'label' && classes.error,\n )}\n onClick={() => toggleToolBarTool(tool)}\n >\n {tool.toUpperCase()}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nTools.propTypes = {\n classes: PropTypes.object.isRequired,\n toolbarTools: PropTypes.arrayOf(PropTypes.string),\n toggleToolBarTool: PropTypes.func,\n availableTools: PropTypes.array,\n defaultTool: PropTypes.string,\n hasErrors: PropTypes.number,\n onDefaultToolChange: PropTypes.func,\n};\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n availableTools: PropTypes.array,\n classes: PropTypes.object.isRequired,\n errors: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n toolbarTools: PropTypes.arrayOf(PropTypes.String),\n };\n\n state = {\n dialog: {\n open: false,\n },\n };\n\n handleAlertDialog = (open, callback) =>\n this.setState(\n {\n dialog: { open },\n },\n callback,\n );\n\n changeMarks = (key, marks) => {\n const { model, onChange } = this.props;\n\n set(model, `answers.${key}.marks`, marks);\n onChange(model);\n };\n\n filterMarks = (tool) => {\n const {\n model: { answers },\n } = this.props;\n\n return Object.entries(answers || {}).reduce((object, [key, answer]) => {\n object[key] = {\n ...answer,\n marks: (answer.marks || []).filter((mark) => mark.type !== tool),\n };\n\n return object;\n }, {});\n };\n\n changeToolbarTools = (toolbarTools) => {\n const { model, onChange } = this.props;\n model.toolbarTools = toolbarTools;\n\n onChange(model);\n };\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n ...props,\n });\n };\n\n toggleToolBarTool = (tool) => {\n const {\n model: { defaultTool, toolbarTools, answers = {} },\n } = this.props;\n const updatedToolbarTools = [...toolbarTools];\n let newDefaultTool = defaultTool;\n\n const index = toolbarTools.findIndex((t) => tool === t);\n\n if (index >= 0) {\n const updatedAnswers = this.filterMarks(tool);\n updatedToolbarTools.splice(index, 1);\n\n if (tool === defaultTool) {\n const toolbarToolsNoLabel = (updatedToolbarTools || []).filter((tool) => tool !== 'label');\n newDefaultTool = (toolbarToolsNoLabel.length && toolbarToolsNoLabel[0]) || '';\n }\n\n if (!isEqual(answers, updatedAnswers)) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `Correct answer includes one or more ${tool} objects and all of them will be deleted.`,\n onConfirm: () =>\n this.handleAlertDialog(\n false,\n this.updateModel({\n toolbarTools: updatedToolbarTools,\n answers: updatedAnswers,\n defaultTool: newDefaultTool,\n }),\n ),\n onClose: () => this.handleAlertDialog(false),\n },\n });\n\n return;\n }\n } else {\n updatedToolbarTools.push(tool);\n\n if (defaultTool === '' && tool !== 'label') {\n newDefaultTool = tool;\n }\n }\n\n this.updateModel({\n toolbarTools: updatedToolbarTools,\n defaultTool: newDefaultTool,\n });\n };\n\n onDefaultToolChange = (event) => {\n const { value } = event.target;\n\n this.updateModel({ defaultTool: value });\n };\n\n addAlternateResponse = () => {\n const { model, onChange } = this.props;\n const { answers } = model || {};\n const answersKeys = Object.keys(answers || {});\n\n set(model, `answers.${`alternate${answersKeys.length}`}`, {\n name: `Alternate ${answersKeys.length}`,\n marks: [],\n });\n onChange(model);\n };\n\n deleteAlternateResponse = (answerKey, answer) => {\n const { model, onChange } = this.props;\n const { answers } = model || {};\n const { marks = [], name } = answer || {};\n\n const deleteAnswer = () => {\n delete answers[answerKey];\n // rebuild answers based on new alternate positions after deletion\n const newAnswers = Object.entries(answers).reduce((acc, currentValue, index) => {\n const [key, value] = currentValue;\n const newAnswer =\n key === 'correctAnswer'\n ? { ...acc, [key]: value }\n : { ...acc, ['alternate' + index]: { ...value, name: `Alternate ${index}` } };\n return newAnswer;\n }, {});\n\n onChange({ ...model, answers: newAnswers });\n };\n\n if (marks.length) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `${name} includes one or more shapes and the entire response will be deleted.`,\n onConfirm: () => this.handleAlertDialog(false, deleteAnswer),\n onClose: () => this.handleAlertDialog(false),\n },\n });\n\n return;\n }\n\n deleteAnswer();\n };\n\n render() {\n const { availableTools, classes, errors, model, mathMlOptions = {}, removeIncompleteTool } = this.props;\n const { dialog } = this.state;\n const {\n answers = {},\n arrows,\n backgroundMarks,\n coordinatesOnHover,\n defaultTool,\n domain,\n graph = {},\n labels,\n labelsEnabled,\n range,\n title,\n titleEnabled,\n toolbarTools,\n } = model || {};\n const { correctAnswerErrors = {}, toolbarToolsError } = errors || {};\n\n return (\n <div>\n <Typography component=\"div\" variant=\"subheading\">\n Define Tool Set and Correct Response\n </Typography>\n\n <Typography component=\"div\" variant=\"body1\" className={classes.subtitleText}>\n Use this interface to choose which graphing tools students will be able to use, and to define the correct\n answer\n </Typography>\n\n <Tools\n classes={classes}\n availableTools={availableTools}\n defaultTool={defaultTool}\n hasErrors={!!toolbarToolsError}\n onDefaultToolChange={this.onDefaultToolChange}\n toggleToolBarTool={this.toggleToolBarTool}\n toolbarTools={toolbarTools}\n />\n\n {toolbarToolsError && <div className={classes.errorMessage}>{toolbarToolsError}</div>}\n\n {Object.entries(answers || {}).map(([key, answer]) => {\n const { marks = [], name } = answer || {};\n\n return (\n <React.Fragment key={`correct-response-graph-${name}`}>\n <div className={classes.responseTitle}>\n <div className={classes.name}>{name}</div>\n {key === 'correctAnswer' && (\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={'At least 1 graph object should be defined.'}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '8px', marginBottom: 'auto' }} />\n </Tooltip>\n )}\n {key !== 'correctAnswer' && (\n <Delete className={classes.iconButton} onClick={() => this.deleteAlternateResponse(key, answer)} />\n )}\n </div>\n\n <Graph\n className={correctAnswerErrors[key] && classes.graphError}\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={backgroundMarks}\n coordinatesOnHover={coordinatesOnHover}\n disabledLabels={true}\n disabledTitle={true}\n domain={domain}\n draggableTools={key === 'correctAnswer'}\n labels={labels}\n marks={marks}\n onChangeMarks={(newMarks) => this.changeMarks(key, newMarks)}\n range={range}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n toolbarTools={toolbarTools}\n onChangeTools={(toolbarTools) => this.updateModel({ toolbarTools })}\n mathMlOptions={mathMlOptions}\n removeIncompleteTool={removeIncompleteTool}\n />\n\n {correctAnswerErrors[key] && <div className={classes.errorMessage}>{correctAnswerErrors[key]}</div>}\n </React.Fragment>\n );\n })}\n\n <div className={classes.button} onClick={this.addAlternateResponse}>\n ADD ALTERNATE\n </div>\n\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(CorrectResponse);\n"],"file":"correct-response.js"}