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