@pie-element/graphing 5.13.3-next.0 → 5.13.3-next.10
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.
- package/package.json +2 -2
- package/configure/lib/configure.js +0 -426
- package/configure/lib/configure.js.map +0 -1
- package/configure/lib/correct-response.js +0 -581
- package/configure/lib/correct-response.js.map +0 -1
- package/configure/lib/defaults.js +0 -434
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/graphing-config.js +0 -435
- package/configure/lib/graphing-config.js.map +0 -1
- package/configure/lib/index.js +0 -232
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/utils.js +0 -168
- package/configure/lib/utils.js.map +0 -1
- package/controller/lib/defaults.js +0 -62
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -437
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/utils.js +0 -466
- package/controller/lib/utils.js.map +0 -1
- package/lib/index.js +0 -123
- package/lib/index.js.map +0 -1
- package/lib/main.js +0 -215
- package/lib/main.js.map +0 -1
- package/lib/utils.js +0 -55
- package/lib/utils.js.map +0 -1
|
@@ -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"}
|