@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.
@@ -1,435 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports["default"] = exports.GraphingConfig = void 0;
11
-
12
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
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 React = _interopRequireWildcard(require("react"));
29
-
30
- var _propTypes = _interopRequireDefault(require("prop-types"));
31
-
32
- var _graphing = require("@pie-lib/pie-toolbox/graphing");
33
-
34
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
35
-
36
- var _core = require("@material-ui/core");
37
-
38
- var _styles = require("@material-ui/core/styles");
39
-
40
- var _utils = require("./utils");
41
-
42
- var _lodash = require("lodash");
43
-
44
- 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); }
45
-
46
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
47
-
48
- 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; }
49
-
50
- 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; }
51
-
52
- 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); }; }
53
-
54
- 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; } }
55
-
56
- var styles = function styles(theme) {
57
- return {
58
- container: {
59
- display: 'flex',
60
- flexWrap: 'wrap',
61
- marginBottom: theme.spacing.unit * 2.5
62
- },
63
- gridConfigWrapper: {
64
- display: 'flex',
65
- flexDirection: 'column',
66
- marginRight: theme.spacing.unit * 3,
67
- marginBottom: theme.spacing.unit * 2.5
68
- },
69
- graphConfig: {
70
- display: 'flex',
71
- flexDirection: 'column'
72
- },
73
- subtitleText: {
74
- marginTop: theme.spacing.unit * 1.5,
75
- marginBottom: theme.spacing.unit
76
- },
77
- gridConfig: {
78
- display: 'flex',
79
- flexWrap: 'wrap',
80
- alignItems: 'center',
81
- width: '100%',
82
- marginBottom: theme.spacing.unit * 2.5
83
- },
84
- gridConfigLabel: {
85
- padding: "0 ".concat(theme.spacing.unit, "px")
86
- },
87
- gridConfigSelect: {
88
- flex: '1'
89
- }
90
- };
91
- };
92
-
93
- var GraphingConfig = /*#__PURE__*/function (_React$Component) {
94
- (0, _inherits2["default"])(GraphingConfig, _React$Component);
95
-
96
- var _super = _createSuper(GraphingConfig);
97
-
98
- function GraphingConfig(props) {
99
- var _this;
100
-
101
- (0, _classCallCheck2["default"])(this, GraphingConfig);
102
- _this = _super.call(this, props);
103
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeBackgroundMarks", function (backgroundMarks) {
104
- var model = _objectSpread(_objectSpread({}, _this.props.model), {}, {
105
- backgroundMarks: backgroundMarks
106
- });
107
-
108
- _this.props.onChange(model);
109
- });
110
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeLabels", function (labels) {
111
- var _this$props = _this.props,
112
- model = _this$props.model,
113
- onChange = _this$props.onChange;
114
- onChange(_objectSpread(_objectSpread({}, model), {}, {
115
- labels: labels
116
- }));
117
- });
118
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeTitle", function (title) {
119
- var _this$props2 = _this.props,
120
- model = _this$props2.model,
121
- onChange = _this$props2.onChange;
122
- onChange(_objectSpread(_objectSpread({}, model), {}, {
123
- title: title
124
- }));
125
- });
126
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onConfigChange", function (config, newSelectedGrid) {
127
- var _this$props3 = _this.props,
128
- model = _this$props3.model,
129
- onChange = _this$props3.onChange;
130
- var _model$defaultGridCon = model.defaultGridConfiguration,
131
- oldSelectedGrid = _model$defaultGridCon === void 0 ? 0 : _model$defaultGridCon;
132
- var _this$state = _this.state,
133
- oldGridValues = _this$state.gridValues,
134
- oldLabelValues = _this$state.labelValues,
135
- oldDomain = _this$state.domain,
136
- oldRange = _this$state.range;
137
-
138
- var updatedModel = _objectSpread(_objectSpread({}, model), config);
139
-
140
- var answers = updatedModel.answers,
141
- domain = updatedModel.domain,
142
- includeAxes = updatedModel.includeAxes,
143
- graph = updatedModel.graph,
144
- range = updatedModel.range,
145
- standardGrid = updatedModel.standardGrid;
146
- var gridValues = {
147
- domain: [],
148
- range: []
149
- };
150
- var labelValues = {
151
- domain: [],
152
- range: []
153
- };
154
- var selectedGrid = newSelectedGrid >= 0 ? newSelectedGrid : oldSelectedGrid;
155
-
156
- if (includeAxes) {
157
- var domainConstraints = (0, _utils.applyConstraints)(domain, graph.width, oldGridValues.domain, oldLabelValues.domain);
158
- gridValues.domain = domainConstraints.gridValues || [];
159
- labelValues.domain = domainConstraints.labelValues || [];
160
- }
161
-
162
- if (standardGrid) {
163
- gridValues.range = gridValues.domain;
164
- labelValues.range = labelValues.domain;
165
- range.step = domain.step;
166
- range.labelStep = domain.labelStep;
167
- } else {
168
- if (includeAxes) {
169
- var rangeConstraints = (0, _utils.applyConstraints)(range, graph.height, oldGridValues.range, oldLabelValues.range);
170
- gridValues.range = rangeConstraints.gridValues || [];
171
- labelValues.range = rangeConstraints.labelValues || [];
172
- }
173
- }
174
-
175
- var plotableAnswers = (0, _utils.filterPlotableMarks)(domain, range, answers);
176
-
177
- if (!(0, _lodash.isEqual)(answers, plotableAnswers)) {
178
- _this.setState({
179
- dialog: {
180
- isOpened: true,
181
- onClose: function onClose() {
182
- return _this.setState({
183
- dialog: {
184
- isOpened: false
185
- }
186
- }, onChange(_objectSpread(_objectSpread({}, model), {}, {
187
- domain: oldDomain,
188
- range: oldRange
189
- })));
190
- },
191
- onConfirm: function onConfirm() {
192
- _this.setState({
193
- gridValues: gridValues,
194
- labelValues: labelValues,
195
- dialog: {
196
- isOpened: false
197
- },
198
- domain: _objectSpread({}, domain),
199
- range: _objectSpread({}, range)
200
- }, onChange(_objectSpread(_objectSpread({}, updatedModel), {}, {
201
- answers: plotableAnswers,
202
- defaultGridConfiguration: selectedGrid
203
- })));
204
- }
205
- }
206
- });
207
-
208
- return;
209
- }
210
-
211
- _this.setState({
212
- gridValues: gridValues,
213
- labelValues: labelValues,
214
- domain: _objectSpread({}, domain),
215
- range: _objectSpread({}, range)
216
- });
217
-
218
- onChange(_objectSpread(_objectSpread({}, updatedModel), {}, {
219
- defaultGridConfiguration: selectedGrid
220
- }));
221
- });
222
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChangeView", function (event, expanded) {
223
- var _this$props$graphDime = _this.props.graphDimensions;
224
- _this$props$graphDime = _this$props$graphDime === void 0 ? {} : _this$props$graphDime;
225
- var enabled = _this$props$graphDime.enabled;
226
-
227
- if (enabled) {
228
- _this.setState({
229
- showPixelGuides: expanded
230
- });
231
- }
232
- });
233
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeGridConfiguration", function (event) {
234
- var gridConfigurations = _this.props.gridConfigurations;
235
- var value = event.target.value;
236
-
237
- _this.onConfigChange((gridConfigurations === null || gridConfigurations === void 0 ? void 0 : gridConfigurations[value]) || {}, value);
238
- });
239
-
240
- var _ref = props.model || {},
241
- _domain = _ref.domain,
242
- _range = _ref.range,
243
- _graph = _ref.graph;
244
-
245
- var _gridValues = {
246
- domain: (0, _utils.getGridValues)(_domain, _graph.width, true),
247
- range: (0, _utils.getGridValues)(_range, _graph.height, true)
248
- };
249
- var _labelValues = {
250
- domain: (0, _utils.getLabelValues)(_domain.step),
251
- range: (0, _utils.getLabelValues)(_range.step)
252
- };
253
- _this.state = {
254
- gridValues: _gridValues,
255
- labelValues: _labelValues,
256
- showPixelGuides: false,
257
- dialog: {
258
- isOpened: false
259
- },
260
- domain: _objectSpread({}, _domain),
261
- range: _objectSpread({}, _range)
262
- };
263
- return _this;
264
- }
265
-
266
- (0, _createClass2["default"])(GraphingConfig, [{
267
- key: "render",
268
- value: function render() {
269
- var _this$props4 = this.props,
270
- _this$props4$authorin = _this$props4.authoring,
271
- authoring = _this$props4$authorin === void 0 ? {} : _this$props4$authorin,
272
- _this$props4$availabl = _this$props4.availableTools,
273
- availableTools = _this$props4$availabl === void 0 ? [] : _this$props4$availabl,
274
- classes = _this$props4.classes,
275
- _this$props4$gridConf = _this$props4.gridConfigurations,
276
- gridConfigurations = _this$props4$gridConf === void 0 ? [] : _this$props4$gridConf,
277
- _this$props4$graphDim = _this$props4.graphDimensions,
278
- graphDimensions = _this$props4$graphDim === void 0 ? {} : _this$props4$graphDim,
279
- labelsPlaceholders = _this$props4.labelsPlaceholders,
280
- model = _this$props4.model,
281
- showLabels = _this$props4.showLabels,
282
- dimensionsEnabled = _this$props4.dimensionsEnabled,
283
- showTitle = _this$props4.showTitle,
284
- titlePlaceholder = _this$props4.titlePlaceholder,
285
- _this$props4$mathMlOp = _this$props4.mathMlOptions,
286
- mathMlOptions = _this$props4$mathMlOp === void 0 ? {} : _this$props4$mathMlOp,
287
- removeIncompleteTool = _this$props4.removeIncompleteTool;
288
-
289
- var _ref2 = model || {},
290
- arrows = _ref2.arrows,
291
- backgroundMarks = _ref2.backgroundMarks,
292
- coordinatesOnHover = _ref2.coordinatesOnHover,
293
- defaultGridConfiguration = _ref2.defaultGridConfiguration,
294
- domain = _ref2.domain,
295
- includeAxes = _ref2.includeAxes,
296
- labels = _ref2.labels,
297
- range = _ref2.range,
298
- standardGrid = _ref2.standardGrid,
299
- title = _ref2.title;
300
-
301
- var graph = (model || {}).graph || {};
302
-
303
- var _ref3 = graphDimensions || {},
304
- min = _ref3.min,
305
- max = _ref3.max,
306
- step = _ref3.step;
307
-
308
- var _this$state2 = this.state,
309
- _this$state2$dialog = _this$state2.dialog,
310
- dialog = _this$state2$dialog === void 0 ? {} : _this$state2$dialog,
311
- gridValues = _this$state2.gridValues,
312
- labelValues = _this$state2.labelValues,
313
- showPixelGuides = _this$state2.showPixelGuides;
314
- var sizeConstraints = {
315
- min: Math.max(150, min),
316
- max: Math.min(800, max),
317
- step: step >= 1 ? Math.min(200, step) : 20
318
- };
319
- var displayedFields = {
320
- axisLabel: authoring.axisLabel,
321
- dimensionsEnabled: dimensionsEnabled,
322
- includeAxesEnabled: authoring.includeAxesEnabled,
323
- labelStep: authoring.labelStep,
324
- min: authoring.min,
325
- max: authoring.max,
326
- standardGridEnabled: authoring.standardGridEnabled,
327
- step: authoring.step
328
- };
329
- var displayGridSetup = authoring.enabled && Object.values(displayedFields).some(function (field) {
330
- return (0, _typeof2["default"])(field) === 'object' ? field.enabled : field;
331
- });
332
- return /*#__PURE__*/React.createElement("div", {
333
- className: classes.container
334
- }, /*#__PURE__*/React.createElement("div", {
335
- className: classes.gridConfigWrapper
336
- }, gridConfigurations && gridConfigurations.length ? /*#__PURE__*/React.createElement("div", {
337
- className: classes.gridConfig
338
- }, /*#__PURE__*/React.createElement(_core.Typography, {
339
- component: "div",
340
- variant: "subheading",
341
- className: classes.gridConfigLabel
342
- }, "Grid Configuration"), /*#__PURE__*/React.createElement(_core.Select, {
343
- input: /*#__PURE__*/React.createElement(_core.OutlinedInput, null),
344
- className: classes.gridConfigSelect,
345
- displayEmpty: true,
346
- onChange: this.changeGridConfiguration,
347
- value: defaultGridConfiguration
348
- }, (gridConfigurations || []).map(function (config, index) {
349
- return /*#__PURE__*/React.createElement(_core.MenuItem, {
350
- key: index,
351
- value: index
352
- }, config.label);
353
- }))) : null, displayGridSetup && /*#__PURE__*/React.createElement(_graphing.GridSetup, {
354
- displayedFields: displayedFields,
355
- domain: domain,
356
- gridValues: gridValues,
357
- includeAxes: includeAxes,
358
- labelValues: labelValues,
359
- range: range,
360
- size: graph,
361
- sizeConstraints: sizeConstraints,
362
- standardGrid: standardGrid,
363
- onChange: this.onConfigChange,
364
- onChangeView: this.onChangeView
365
- })), /*#__PURE__*/React.createElement("div", {
366
- className: classes.graphConfig,
367
- key: "graph"
368
- }, /*#__PURE__*/React.createElement(_core.Typography, {
369
- component: "div",
370
- variant: "subheading"
371
- }, "Define Graph Attributes"), /*#__PURE__*/React.createElement(_core.Typography, {
372
- component: "div",
373
- variant: "body1",
374
- className: classes.subtitleText
375
- }, "Use this interface to add/edit a title and/or labels, and to set background shapes"), /*#__PURE__*/React.createElement(_graphing.GraphContainer, {
376
- axesSettings: {
377
- includeArrows: arrows
378
- },
379
- backgroundMarks: [],
380
- coordinatesOnHover: coordinatesOnHover,
381
- collapsibleToolbar: true,
382
- collapsibleToolbarTitle: 'Add Background Shapes to Graph',
383
- domain: domain,
384
- key: "graphing-config",
385
- labels: labels,
386
- labelsPlaceholders: labelsPlaceholders,
387
- marks: backgroundMarks,
388
- onChangeLabels: this.changeLabels,
389
- onChangeMarks: this.changeBackgroundMarks,
390
- onChangeTitle: this.changeTitle,
391
- range: range,
392
- showLabels: showLabels,
393
- showPixelGuides: showPixelGuides,
394
- showTitle: showTitle,
395
- size: {
396
- width: graph.width,
397
- height: graph.height
398
- },
399
- title: title,
400
- titlePlaceholder: titlePlaceholder,
401
- toolbarTools: availableTools,
402
- mathMlOptions: mathMlOptions,
403
- removeIncompleteTool: removeIncompleteTool
404
- })), /*#__PURE__*/React.createElement(_configUi.AlertDialog, {
405
- open: dialog.isOpened,
406
- title: "Warning",
407
- text: "This change would make it impossible for students to plot one or more graph objects in the current correct answers. If you proceed, all such graph objects will be removed from the correct answers.",
408
- onClose: dialog.onClose,
409
- onConfirm: dialog.onConfirm
410
- }));
411
- }
412
- }]);
413
- return GraphingConfig;
414
- }(React.Component);
415
-
416
- exports.GraphingConfig = GraphingConfig;
417
- (0, _defineProperty2["default"])(GraphingConfig, "propTypes", {
418
- availableTools: _propTypes["default"].array,
419
- classes: _propTypes["default"].object.isRequired,
420
- authoring: _propTypes["default"].object,
421
- dimensionsEnabled: _propTypes["default"].bool,
422
- graphDimensions: _propTypes["default"].object,
423
- gridConfigurations: _propTypes["default"].array,
424
- labelsPlaceholders: _propTypes["default"].object,
425
- model: _propTypes["default"].object.isRequired,
426
- onChange: _propTypes["default"].func.isRequired,
427
- showLabels: _propTypes["default"].bool,
428
- showTitle: _propTypes["default"].bool,
429
- titlePlaceholder: _propTypes["default"].string
430
- });
431
-
432
- var _default = (0, _styles.withStyles)(styles)(GraphingConfig);
433
-
434
- exports["default"] = _default;
435
- //# sourceMappingURL=graphing-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/graphing-config.jsx"],"names":["styles","theme","container","display","flexWrap","marginBottom","spacing","unit","gridConfigWrapper","flexDirection","marginRight","graphConfig","subtitleText","marginTop","gridConfig","alignItems","width","gridConfigLabel","padding","gridConfigSelect","flex","GraphingConfig","props","backgroundMarks","model","onChange","labels","title","config","newSelectedGrid","defaultGridConfiguration","oldSelectedGrid","state","oldGridValues","gridValues","oldLabelValues","labelValues","oldDomain","domain","oldRange","range","updatedModel","answers","includeAxes","graph","standardGrid","selectedGrid","domainConstraints","step","labelStep","rangeConstraints","height","plotableAnswers","setState","dialog","isOpened","onClose","onConfirm","event","expanded","graphDimensions","enabled","showPixelGuides","gridConfigurations","value","target","onConfigChange","authoring","availableTools","classes","labelsPlaceholders","showLabels","dimensionsEnabled","showTitle","titlePlaceholder","mathMlOptions","removeIncompleteTool","arrows","coordinatesOnHover","min","max","sizeConstraints","Math","displayedFields","axisLabel","includeAxesEnabled","standardGridEnabled","displayGridSetup","Object","values","some","field","length","changeGridConfiguration","map","index","label","onChangeView","includeArrows","changeLabels","changeBackgroundMarks","changeTitle","React","Component","PropTypes","array","object","isRequired","bool","func","string"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GraphContainer, GridSetup } from '@pie-lib/pie-toolbox/graphing';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport { MenuItem, Select, Typography, OutlinedInput } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { applyConstraints, filterPlotableMarks, getGridValues, getLabelValues } from './utils';\nimport { isEqual } from 'lodash';\n\nconst styles = (theme) => ({\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: theme.spacing.unit * 2.5,\n },\n gridConfigWrapper: {\n display: 'flex',\n flexDirection: 'column',\n marginRight: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit * 2.5,\n },\n graphConfig: {\n display: 'flex',\n flexDirection: 'column',\n },\n subtitleText: {\n marginTop: theme.spacing.unit * 1.5,\n marginBottom: theme.spacing.unit,\n },\n gridConfig: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n width: '100%',\n marginBottom: theme.spacing.unit * 2.5,\n },\n gridConfigLabel: {\n padding: `0 ${theme.spacing.unit}px`,\n },\n gridConfigSelect: {\n flex: '1',\n },\n});\n\nexport class GraphingConfig extends React.Component {\n static propTypes = {\n availableTools: PropTypes.array,\n classes: PropTypes.object.isRequired,\n authoring: PropTypes.object,\n dimensionsEnabled: PropTypes.bool,\n graphDimensions: PropTypes.object,\n gridConfigurations: PropTypes.array,\n labelsPlaceholders: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n showLabels: PropTypes.bool,\n showTitle: PropTypes.bool,\n titlePlaceholder: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const { domain, range, graph } = props.model || {};\n\n const gridValues = {\n domain: getGridValues(domain, graph.width, true),\n range: getGridValues(range, graph.height, true),\n };\n const labelValues = {\n domain: getLabelValues(domain.step),\n range: getLabelValues(range.step),\n };\n\n this.state = {\n gridValues,\n labelValues,\n showPixelGuides: false,\n dialog: { isOpened: false },\n domain: { ...domain },\n range: { ...range },\n };\n }\n\n changeBackgroundMarks = (backgroundMarks) => {\n const model = { ...this.props.model, backgroundMarks };\n\n this.props.onChange(model);\n };\n\n changeLabels = (labels) => {\n const { model, onChange } = this.props;\n\n onChange({ ...model, labels });\n };\n\n changeTitle = (title) => {\n const { model, onChange } = this.props;\n\n onChange({ ...model, title });\n };\n\n onConfigChange = (config, newSelectedGrid) => {\n const { model, onChange } = this.props;\n const { defaultGridConfiguration: oldSelectedGrid = 0 } = model;\n const { gridValues: oldGridValues, labelValues: oldLabelValues, domain: oldDomain, range: oldRange } = this.state;\n const updatedModel = { ...model, ...config };\n const { answers, domain, includeAxes, graph, range, standardGrid } = updatedModel;\n const gridValues = { domain: [], range: [] };\n const labelValues = { domain: [], range: [] };\n const selectedGrid = newSelectedGrid >= 0 ? newSelectedGrid : oldSelectedGrid;\n\n if (includeAxes) {\n const domainConstraints = applyConstraints(domain, graph.width, oldGridValues.domain, oldLabelValues.domain);\n\n gridValues.domain = domainConstraints.gridValues || [];\n labelValues.domain = domainConstraints.labelValues || [];\n }\n\n if (standardGrid) {\n gridValues.range = gridValues.domain;\n labelValues.range = labelValues.domain;\n range.step = domain.step;\n range.labelStep = domain.labelStep;\n } else {\n if (includeAxes) {\n const rangeConstraints = applyConstraints(range, graph.height, oldGridValues.range, oldLabelValues.range);\n\n gridValues.range = rangeConstraints.gridValues || [];\n labelValues.range = rangeConstraints.labelValues || [];\n }\n }\n\n const plotableAnswers = filterPlotableMarks(domain, range, answers);\n\n if (!isEqual(answers, plotableAnswers)) {\n this.setState({\n dialog: {\n isOpened: true,\n onClose: () =>\n this.setState({ dialog: { isOpened: false } }, onChange({ ...model, domain: oldDomain, range: oldRange })),\n onConfirm: () => {\n this.setState(\n {\n gridValues,\n labelValues,\n dialog: { isOpened: false },\n domain: { ...domain },\n range: { ...range },\n },\n onChange({ ...updatedModel, answers: plotableAnswers, defaultGridConfiguration: selectedGrid }),\n );\n },\n },\n });\n\n return;\n }\n\n this.setState({ gridValues, labelValues, domain: { ...domain }, range: { ...range } });\n onChange({ ...updatedModel, defaultGridConfiguration: selectedGrid });\n };\n\n onChangeView = (event, expanded) => {\n const { graphDimensions: { enabled } = {} } = this.props;\n\n if (enabled) {\n this.setState({ showPixelGuides: expanded });\n }\n };\n\n changeGridConfiguration = (event) => {\n const { gridConfigurations } = this.props;\n const { value } = event.target;\n\n this.onConfigChange(gridConfigurations?.[value] || {}, value);\n };\n\n render() {\n const {\n authoring = {},\n availableTools = [],\n classes,\n gridConfigurations = [],\n graphDimensions = {},\n labelsPlaceholders,\n model,\n showLabels,\n dimensionsEnabled,\n showTitle,\n titlePlaceholder,\n mathMlOptions = {},\n removeIncompleteTool,\n } = this.props;\n const {\n arrows,\n backgroundMarks,\n coordinatesOnHover,\n defaultGridConfiguration,\n domain,\n includeAxes,\n labels,\n range,\n standardGrid,\n title,\n } = model || {};\n const graph = (model || {}).graph || {};\n const { min, max, step } = graphDimensions || {};\n const { dialog = {}, gridValues, labelValues, showPixelGuides } = this.state;\n\n const sizeConstraints = {\n min: Math.max(150, min),\n max: Math.min(800, max),\n step: step >= 1 ? Math.min(200, step) : 20,\n };\n\n const displayedFields = {\n axisLabel: authoring.axisLabel,\n dimensionsEnabled,\n includeAxesEnabled: authoring.includeAxesEnabled,\n labelStep: authoring.labelStep,\n min: authoring.min,\n max: authoring.max,\n standardGridEnabled: authoring.standardGridEnabled,\n step: authoring.step,\n };\n\n const displayGridSetup =\n authoring.enabled &&\n Object.values(displayedFields).some((field) => (typeof field === 'object' ? field.enabled : field));\n\n return (\n <div className={classes.container}>\n <div className={classes.gridConfigWrapper}>\n {gridConfigurations && gridConfigurations.length ? (\n <div className={classes.gridConfig}>\n <Typography component=\"div\" variant=\"subheading\" className={classes.gridConfigLabel}>\n Grid Configuration\n </Typography>\n\n <Select\n input={<OutlinedInput />}\n className={classes.gridConfigSelect}\n displayEmpty\n onChange={this.changeGridConfiguration}\n value={defaultGridConfiguration}\n >\n {(gridConfigurations || []).map((config, index) => (\n <MenuItem key={index} value={index}>\n {config.label}\n </MenuItem>\n ))}\n </Select>\n </div>\n ) : null}\n\n {displayGridSetup && (\n <GridSetup\n displayedFields={displayedFields}\n domain={domain}\n gridValues={gridValues}\n includeAxes={includeAxes}\n labelValues={labelValues}\n range={range}\n size={graph}\n sizeConstraints={sizeConstraints}\n standardGrid={standardGrid}\n onChange={this.onConfigChange}\n onChangeView={this.onChangeView}\n />\n )}\n </div>\n\n <div className={classes.graphConfig} key=\"graph\">\n <Typography component=\"div\" variant=\"subheading\">\n Define Graph Attributes\n </Typography>\n\n <Typography component=\"div\" variant=\"body1\" className={classes.subtitleText}>\n Use this interface to add/edit a title and/or labels, and to set background shapes\n </Typography>\n\n <GraphContainer\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={[]}\n coordinatesOnHover={coordinatesOnHover}\n collapsibleToolbar={true}\n collapsibleToolbarTitle={'Add Background Shapes to Graph'}\n domain={domain}\n key=\"graphing-config\"\n labels={labels}\n labelsPlaceholders={labelsPlaceholders}\n marks={backgroundMarks}\n onChangeLabels={this.changeLabels}\n onChangeMarks={this.changeBackgroundMarks}\n onChangeTitle={this.changeTitle}\n range={range}\n showLabels={showLabels}\n showPixelGuides={showPixelGuides}\n showTitle={showTitle}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n titlePlaceholder={titlePlaceholder}\n toolbarTools={availableTools}\n mathMlOptions={mathMlOptions}\n removeIncompleteTool={removeIncompleteTool}\n />\n </div>\n\n <AlertDialog\n open={dialog.isOpened}\n title=\"Warning\"\n text=\"This change would make it impossible for students to plot one or more graph objects in the current correct answers. If you proceed, all such graph objects will be removed from the correct answers.\"\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(GraphingConfig);\n"],"file":"graphing-config.js"}