@pie-element/graphing 5.15.1-next.0 → 5.15.1-next.1

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.
@@ -1,581 +0,0 @@
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
@@ -1 +0,0 @@
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"}