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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,435 @@
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
@@ -0,0 +1 @@
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"}