@pie-element/graphing 3.7.20 → 3.7.23

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.
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports["default"] = exports.GraphingConfig = exports.AuthoringColumn = void 0;
10
+ exports["default"] = exports.GraphingConfig = void 0;
11
11
 
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
 
@@ -25,21 +25,15 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
25
25
 
26
26
  var React = _interopRequireWildcard(require("react"));
27
27
 
28
- var _classnames = _interopRequireDefault(require("classnames"));
29
-
30
28
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
29
 
32
- var _configUi = require("@pie-lib/config-ui");
33
-
34
30
  var _graphing = require("@pie-lib/graphing");
35
31
 
36
32
  var _core = require("@material-ui/core");
37
33
 
38
34
  var _styles = require("@material-ui/core/styles");
39
35
 
40
- var _lodash = require("lodash");
41
-
42
- var _this = void 0;
36
+ var _utils = require("./utils");
43
37
 
44
38
  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
39
 
@@ -56,108 +50,28 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
56
50
  var _tools$allTools = _graphing.tools.allTools,
57
51
  allTools = _tools$allTools === void 0 ? [] : _tools$allTools;
58
52
 
59
- var AuthoringColumn = function AuthoringColumn(_ref) {
60
- var columnKey = _ref.columnKey,
61
- axis = _ref.axis,
62
- classes = _ref.classes,
63
- model = _ref.model;
64
- var rows = [{
65
- key: '${columnKey}-min-max',
66
- inputs: [{
67
- key: "".concat(columnKey, ".min"),
68
- label: 'Min value',
69
- className: classes.smallInput
70
- }, {
71
- key: "".concat(columnKey, ".max"),
72
- label: 'Max value',
73
- className: classes.smallInput
74
- }]
75
- }, {
76
- key: "".concat(columnKey, "-tick-frequency"),
77
- inputs: [{
78
- key: "".concat(columnKey, ".step"),
79
- label: 'Tick frequency'
80
- }]
81
- }, {
82
- key: "".concat(columnKey, "-tick-label-frequency"),
83
- inputs: [{
84
- key: "".concat(columnKey, ".labelStep"),
85
- label: 'Tick label frequency'
86
- }]
87
- }, {
88
- key: "".concat(columnKey, "-axis-label"),
89
- inputs: [{
90
- type: 'text',
91
- key: "".concat(axis, "-axis-label-input"),
92
- label: "".concat(axis, " Axis Label")
93
- }]
94
- }];
95
- return /*#__PURE__*/React.createElement("div", {
96
- className: classes.column,
97
- key: columnKey
98
- }, "".concat(columnKey.toUpperCase(), " (").concat(axis.toUpperCase(), ")"), rows.map(function (row) {
99
- return /*#__PURE__*/React.createElement("div", {
100
- className: classes.row,
101
- key: row.key
102
- }, row.inputs.map(function (input) {
103
- if (input.type === 'text') {
104
- return /*#__PURE__*/React.createElement(_core.TextField, {
105
- className: classes.input,
106
- label: input.label.toUpperCase(),
107
- value: model["".concat(axis, "AxisLabel")],
108
- onChange: function onChange(_ref2) {
109
- var target = _ref2.target;
110
- return _this.onChangeInputValue("".concat(axis, "AxisLabel"), target.value);
111
- }
112
- });
113
- }
114
-
115
- return /*#__PURE__*/React.createElement(_core.TextField, {
116
- type: "number",
117
- key: input.key,
118
- label: input.label.toUpperCase(),
119
- onChange: function onChange(event, value) {
120
- return _this.onChangeInputValue(input.key, value);
121
- },
122
- value: (0, _lodash.get)(model, input.key),
123
- className: input.className || classes.input
124
- });
125
- }));
126
- }));
127
- };
128
-
129
- exports.AuthoringColumn = AuthoringColumn;
130
- AuthoringColumn.propTypes = {
131
- axis: _propTypes["default"].String,
132
- classes: _propTypes["default"].object,
133
- columnKey: _propTypes["default"].String,
134
- model: _propTypes["default"].object
135
- };
136
-
137
53
  var styles = function styles(theme) {
138
54
  return {
139
55
  container: {
140
- marginTop: theme.spacing.unit * 3,
141
- marginBottom: theme.spacing.unit * 3,
142
56
  display: 'flex',
143
- flex: 1
57
+ flexWrap: 'wrap',
58
+ marginBottom: theme.spacing.unit * 7
144
59
  },
145
- column: {
146
- flex: 1
147
- },
148
- row: {
149
- marginTop: theme.spacing.unit * 2,
150
- flex: 1
60
+ gridConfig: {
61
+ display: 'flex',
62
+ flexDirection: 'column',
63
+ marginRight: theme.spacing.unit * 4,
64
+ marginBottom: theme.spacing.unit * 3
151
65
  },
152
- settings: {
66
+ graphConfig: {
153
67
  display: 'flex',
154
- flexDirection: 'row'
68
+ flexDirection: 'column'
155
69
  },
156
- input: {
157
- width: 'calc(100% - 32px)'
70
+ subheading: {
71
+ marginBottom: theme.spacing.unit * 2
158
72
  },
159
- smallInput: {
160
- width: 'calc(50% - 32px)'
73
+ body: {
74
+ marginBottom: theme.spacing.unit
161
75
  }
162
76
  };
163
77
  };
@@ -167,94 +81,151 @@ var GraphingConfig = /*#__PURE__*/function (_React$Component) {
167
81
 
168
82
  var _super = _createSuper(GraphingConfig);
169
83
 
170
- function GraphingConfig() {
171
- var _this2;
84
+ function GraphingConfig(props) {
85
+ var _this;
172
86
 
173
87
  (0, _classCallCheck2["default"])(this, GraphingConfig);
88
+ _this = _super.call(this, props);
89
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeBackgroundMarks", function (backgroundMarks) {
90
+ var model = _objectSpread(_objectSpread({}, _this.props.model), {}, {
91
+ backgroundMarks: backgroundMarks
92
+ });
174
93
 
175
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
176
- args[_key] = arguments[_key];
177
- }
94
+ _this.props.onChange(model);
95
+ });
96
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onConfigChange", function (config) {
97
+ var _this$props = _this.props,
98
+ model = _this$props.model,
99
+ onChange = _this$props.onChange;
100
+ var _this$state = _this.state,
101
+ oldGridValues = _this$state.gridValues,
102
+ oldLabelValues = _this$state.labelValues;
103
+
104
+ var updatedModel = _objectSpread(_objectSpread({}, model), config);
105
+
106
+ var domain = updatedModel.domain,
107
+ includeAxes = updatedModel.includeAxes,
108
+ graph = updatedModel.graph,
109
+ range = updatedModel.range,
110
+ standardGrid = updatedModel.standardGrid;
111
+ var gridValues = {
112
+ domain: [],
113
+ range: []
114
+ };
115
+ var labelValues = {
116
+ domain: [],
117
+ range: []
118
+ };
119
+
120
+ if (includeAxes) {
121
+ var domainConstraints = (0, _utils.applyConstraints)(domain, graph.width, oldGridValues.domain, oldLabelValues.domain);
122
+ gridValues.domain = domainConstraints.gridValues || [];
123
+ labelValues.domain = domainConstraints.labelValues || [];
124
+ }
178
125
 
179
- _this2 = _super.call.apply(_super, [this].concat(args));
180
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onChangeInputValue", function (key, value) {
181
- var model = _this2.props.model;
182
- (0, _lodash.set)(model, key, value);
126
+ if (standardGrid) {
127
+ gridValues.range = gridValues.domain;
128
+ labelValues.range = labelValues.domain;
129
+ range.step = domain.step;
130
+ range.labelStep = domain.labelStep;
131
+ } else {
132
+ if (includeAxes) {
133
+ var rangeConstraints = (0, _utils.applyConstraints)(range, graph.height, oldGridValues.range, oldLabelValues.range);
134
+ gridValues.range = rangeConstraints.gridValues || [];
135
+ labelValues.range = rangeConstraints.labelValues || [];
136
+ }
137
+ }
183
138
 
184
- _this2.props.onChange(model);
185
- });
186
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "renderInput", function (key, label, className) {
187
- var _this2$props = _this2.props,
188
- classes = _this2$props.classes,
189
- model = _this2$props.model;
190
- return /*#__PURE__*/React.createElement(_configUi.NumberTextField, {
191
- key: key,
192
- label: label.toUpperCase(),
193
- onChange: function onChange(event, value) {
194
- return _this2.onChangeInputValue(key, value);
195
- },
196
- value: (0, _lodash.get)(model, key),
197
- className: className || classes.input
198
- });
199
- });
200
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "renderRow", function (key, content) {
201
- var classes = _this2.props.classes;
202
- return /*#__PURE__*/React.createElement("div", {
203
- className: classes.row,
204
- key: key
205
- }, content);
206
- });
207
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "changeBackgroundMarks", function (backgroundMarks) {
208
- var model = _objectSpread(_objectSpread({}, _this2.props.model), {}, {
209
- backgroundMarks: backgroundMarks
139
+ _this.setState({
140
+ gridValues: gridValues,
141
+ labelValues: labelValues
210
142
  });
211
143
 
212
- _this2.props.onChange(model);
144
+ onChange(updatedModel);
213
145
  });
214
- return _this2;
146
+
147
+ var _ref = props.model || {},
148
+ _domain = _ref.domain,
149
+ _range = _ref.range,
150
+ _graph = _ref.graph;
151
+
152
+ var _gridValues = {
153
+ domain: (0, _utils.getGridValues)(_domain, _graph.width, true),
154
+ range: (0, _utils.getGridValues)(_range, _graph.height, true)
155
+ };
156
+ var _labelValues = {
157
+ domain: (0, _utils.getLabelValues)(_domain.step),
158
+ range: (0, _utils.getLabelValues)(_range.step)
159
+ };
160
+ _this.state = {
161
+ gridValues: _gridValues,
162
+ labelValues: _labelValues
163
+ };
164
+ return _this;
215
165
  }
216
166
 
217
167
  (0, _createClass2["default"])(GraphingConfig, [{
218
168
  key: "render",
219
169
  value: function render() {
220
- var _this$props = this.props,
221
- classes = _this$props.classes,
222
- model = _this$props.model,
223
- authoringEnabled = _this$props.authoringEnabled;
224
-
225
- var _ref3 = model || {},
226
- arrows = _ref3.arrows,
227
- backgroundMarks = _ref3.backgroundMarks,
228
- coordinatesOnHover = _ref3.coordinatesOnHover,
229
- domain = _ref3.domain,
230
- _ref3$graph = _ref3.graph,
231
- graph = _ref3$graph === void 0 ? {} : _ref3$graph,
232
- labels = _ref3.labels,
233
- range = _ref3.range,
234
- title = _ref3.title;
235
-
236
- return /*#__PURE__*/React.createElement("div", null, "Define Graph Attributes", /*#__PURE__*/React.createElement("div", {
170
+ var _this$props2 = this.props,
171
+ classes = _this$props2.classes,
172
+ model = _this$props2.model,
173
+ graphDimensions = _this$props2.graphDimensions;
174
+
175
+ var _ref2 = model || {},
176
+ arrows = _ref2.arrows,
177
+ backgroundMarks = _ref2.backgroundMarks,
178
+ coordinatesOnHover = _ref2.coordinatesOnHover,
179
+ domain = _ref2.domain,
180
+ includeAxes = _ref2.includeAxes,
181
+ labels = _ref2.labels,
182
+ range = _ref2.range,
183
+ standardGrid = _ref2.standardGrid,
184
+ title = _ref2.title;
185
+
186
+ var graph = (model || {}).graph || {};
187
+
188
+ var _ref3 = graphDimensions || {},
189
+ enabled = _ref3.enabled,
190
+ min = _ref3.min,
191
+ max = _ref3.max,
192
+ step = _ref3.step;
193
+
194
+ var _this$state2 = this.state,
195
+ gridValues = _this$state2.gridValues,
196
+ labelValues = _this$state2.labelValues;
197
+ var sizeConstraints = {
198
+ min: Math.max(150, min),
199
+ max: Math.min(800, max),
200
+ step: step >= 1 ? Math.min(200, step) : 20
201
+ };
202
+ return /*#__PURE__*/React.createElement("div", {
237
203
  className: classes.container
238
- }, authoringEnabled && /*#__PURE__*/React.createElement("div", {
239
- className: (0, _classnames["default"])(classes.column, classes.settings),
240
- key: "settings"
241
- }, /*#__PURE__*/React.createElement(AuthoringColumn, {
242
- columnKey: "domain",
243
- axis: "x",
244
- classes: classes,
245
- model: model
246
- }), /*#__PURE__*/React.createElement(AuthoringColumn, {
247
- columnKey: "range",
248
- axis: "y",
249
- classes: classes,
250
- model: model
204
+ }, /*#__PURE__*/React.createElement("div", {
205
+ className: classes.gridConfig
206
+ }, /*#__PURE__*/React.createElement(_graphing.GridSetup, {
207
+ domain: domain,
208
+ dimensionsEnabled: enabled,
209
+ gridValues: gridValues,
210
+ includeAxes: includeAxes,
211
+ labelValues: labelValues,
212
+ range: range,
213
+ size: graph,
214
+ sizeConstraints: sizeConstraints,
215
+ standardGrid: standardGrid,
216
+ onChange: this.onConfigChange
251
217
  })), /*#__PURE__*/React.createElement("div", {
252
- className: classes.column,
218
+ className: classes.graphConfig,
253
219
  key: "graph"
254
220
  }, /*#__PURE__*/React.createElement(_core.Typography, {
255
221
  component: "div",
256
- type: "body1"
257
- }, /*#__PURE__*/React.createElement("span", null, "Use the tools below to set background shapes")), /*#__PURE__*/React.createElement(_graphing.GraphContainer, {
222
+ variant: "subheading2",
223
+ className: classes.subheading
224
+ }, /*#__PURE__*/React.createElement("span", null, "Define Graph Attributes")), /*#__PURE__*/React.createElement(_core.Typography, {
225
+ component: "div",
226
+ variant: "body1",
227
+ className: classes.body
228
+ }, /*#__PURE__*/React.createElement("span", null, "Use this interface to add/edit a title and/or labels, and to set background shapes")), /*#__PURE__*/React.createElement(_graphing.GraphContainer, {
258
229
  axesSettings: {
259
230
  includeArrows: arrows
260
231
  },
@@ -272,7 +243,7 @@ var GraphingConfig = /*#__PURE__*/function (_React$Component) {
272
243
  },
273
244
  title: title,
274
245
  toolbarTools: allTools
275
- }))));
246
+ })));
276
247
  }
277
248
  }]);
278
249
  return GraphingConfig;
@@ -281,9 +252,10 @@ var GraphingConfig = /*#__PURE__*/function (_React$Component) {
281
252
  exports.GraphingConfig = GraphingConfig;
282
253
  (0, _defineProperty2["default"])(GraphingConfig, "propTypes", {
283
254
  classes: _propTypes["default"].object.isRequired,
255
+ authoringEnabled: _propTypes["default"].bool,
256
+ graphDimensions: _propTypes["default"].object,
284
257
  model: _propTypes["default"].object.isRequired,
285
- onChange: _propTypes["default"].func.isRequired,
286
- authoringEnabled: _propTypes["default"].bool
258
+ onChange: _propTypes["default"].func.isRequired
287
259
  });
288
260
  ;
289
261
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphing-config.jsx"],"names":["tools","allTools","AuthoringColumn","columnKey","axis","classes","model","rows","key","inputs","label","className","smallInput","type","column","toUpperCase","map","row","input","target","onChangeInputValue","value","event","propTypes","PropTypes","String","object","styles","theme","container","marginTop","spacing","unit","marginBottom","display","flex","settings","flexDirection","width","GraphingConfig","props","onChange","content","backgroundMarks","authoringEnabled","arrows","coordinatesOnHover","domain","graph","labels","range","title","includeArrows","changeBackgroundMarks","height","React","Component","isRequired","func","bool"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { NumberTextField } from '@pie-lib/config-ui';\nimport { GraphContainer, tools } from '@pie-lib/graphing';\nimport { TextField, Typography } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { get, set } from 'lodash';\n\nconst { allTools = [] } = tools;\n\nexport const AuthoringColumn = ({ columnKey, axis, classes, model }) => {\n const rows = [{\n key: '${columnKey}-min-max',\n inputs: [\n {\n key: `${columnKey}.min`,\n label: 'Min value',\n className: classes.smallInput\n },\n {\n key: `${columnKey}.max`,\n label: 'Max value',\n className: classes.smallInput\n }\n ]\n }, {\n key: `${columnKey}-tick-frequency`,\n inputs: [\n {\n key: `${columnKey}.step`,\n label: 'Tick frequency'\n }\n ]\n },\n {\n key: `${columnKey}-tick-label-frequency`,\n inputs: [\n {\n key: `${columnKey}.labelStep`,\n label: 'Tick label frequency'\n }\n ]\n },\n {\n key: `${columnKey}-axis-label`,\n inputs: [\n {\n type: 'text',\n key: `${axis}-axis-label-input`,\n label: `${axis} Axis Label`\n }\n ]\n }\n ];\n\n return (\n <div className={classes.column} key={columnKey}>\n {`${columnKey.toUpperCase()} (${axis.toUpperCase()})`}\n\n {rows.map(row => (\n <div className={classes.row} key={row.key}>\n {row.inputs.map(input => {\n if (input.type === 'text') {\n return (\n <TextField\n className={classes.input}\n label={input.label.toUpperCase()}\n value={model[`${axis}AxisLabel`]}\n onChange={({ target }) => this.onChangeInputValue(`${axis}AxisLabel`, target.value)}\n />\n );\n }\n\n return (\n <TextField\n type=\"number\"\n key={input.key}\n label={input.label.toUpperCase()}\n onChange={(event, value) => this.onChangeInputValue(input.key, value)}\n value={get(model, input.key)}\n className={input.className || classes.input}\n />\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n\nAuthoringColumn.propTypes = {\n axis: PropTypes.String,\n classes: PropTypes.object,\n columnKey: PropTypes.String,\n model: PropTypes.object,\n};\n\nconst styles = theme => ({\n container: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit * 3,\n display: 'flex',\n flex: 1,\n },\n column: {\n flex: 1\n },\n row: {\n marginTop: theme.spacing.unit * 2,\n flex: 1\n },\n settings: {\n display: 'flex',\n flexDirection: 'row'\n },\n input: {\n width: 'calc(100% - 32px)'\n },\n smallInput: {\n width: 'calc(50% - 32px)'\n }\n});\n\nexport class GraphingConfig extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n authoringEnabled: PropTypes.bool,\n };\n\n onChangeInputValue = (key, value) => {\n const { model } = this.props;\n\n set(model, key, value);\n this.props.onChange(model);\n };\n\n renderInput = (key, label, className) => {\n const { classes, model } = this.props;\n\n return (\n <NumberTextField\n key={key}\n label={label.toUpperCase()}\n onChange={(event, value) => this.onChangeInputValue(key, value)}\n value={get(model, key)}\n className={className || classes.input}\n />\n )\n };\n\n renderRow = (key, content) => {\n const { classes } = this.props;\n\n return (\n <div className={classes.row} key={key}>\n {content}\n </div>\n );\n };\n\n changeBackgroundMarks = backgroundMarks => {\n const model = { ...this.props.model, backgroundMarks };\n this.props.onChange(model);\n };\n\n render() {\n const { classes, model, authoringEnabled } = this.props;\n const { arrows, backgroundMarks, coordinatesOnHover, domain, graph = {}, labels, range, title } = model || {};\n\n return (\n <div>\n Define Graph Attributes\n\n <div className={classes.container}>\n {authoringEnabled && (\n <div className={classnames(classes.column, classes.settings)} key=\"settings\">\n <AuthoringColumn columnKey=\"domain\" axis=\"x\" classes={classes} model={model} />\n <AuthoringColumn columnKey=\"range\" axis=\"y\" classes={classes} model={model} />\n </div>\n )}\n\n <div className={classes.column} key=\"graph\">\n <Typography component=\"div\" type=\"body1\">\n <span>Use the tools below to set background shapes</span>\n </Typography>\n\n <GraphContainer\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={[]}\n coordinatesOnHover={coordinatesOnHover}\n domain={domain}\n key=\"graphing-config\"\n labels={labels}\n marks={backgroundMarks}\n onChangeMarks={this.changeBackgroundMarks}\n range={range}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n toolbarTools={allTools}\n />\n </div>\n\n </div>\n </div>\n );\n }\n};\n\nexport default withStyles(styles)(GraphingConfig);\n"],"file":"graphing-config.js"}
1
+ {"version":3,"sources":["../src/graphing-config.jsx"],"names":["tools","allTools","styles","theme","container","display","flexWrap","marginBottom","spacing","unit","gridConfig","flexDirection","marginRight","graphConfig","subheading","body","GraphingConfig","props","backgroundMarks","model","onChange","config","state","oldGridValues","gridValues","oldLabelValues","labelValues","updatedModel","domain","includeAxes","graph","range","standardGrid","domainConstraints","width","step","labelStep","rangeConstraints","height","setState","classes","graphDimensions","arrows","coordinatesOnHover","labels","title","enabled","min","max","sizeConstraints","Math","onConfigChange","includeArrows","changeBackgroundMarks","React","Component","PropTypes","object","isRequired","authoringEnabled","bool","func"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GraphContainer, GridSetup, tools } from '@pie-lib/graphing';\nimport { Typography } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { applyConstraints, getGridValues, getLabelValues } from './utils';\n\nconst { allTools = [] } = tools;\n\nconst styles = theme => ({\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: theme.spacing.unit * 7\n },\n gridConfig: {\n display: 'flex',\n flexDirection: 'column',\n marginRight: theme.spacing.unit * 4,\n marginBottom: theme.spacing.unit * 3\n },\n graphConfig: {\n display: 'flex',\n flexDirection: 'column'\n },\n subheading: {\n marginBottom: theme.spacing.unit * 2\n },\n body: {\n marginBottom: theme.spacing.unit\n }\n});\n\nexport class GraphingConfig extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n authoringEnabled: PropTypes.bool,\n graphDimensions: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\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 = { gridValues, labelValues };\n };\n\n changeBackgroundMarks = backgroundMarks => {\n const model = { ...this.props.model, backgroundMarks };\n\n this.props.onChange(model);\n };\n\n onConfigChange = config => {\n const { model, onChange } = this.props;\n const { gridValues: oldGridValues, labelValues: oldLabelValues } = this.state;\n const updatedModel = { ...model, ...config };\n const { domain, includeAxes, graph, range, standardGrid } = updatedModel;\n const gridValues = { domain: [], range: [] };\n const labelValues = { domain: [], range: [] };\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 this.setState({ gridValues, labelValues });\n onChange(updatedModel);\n };\n\n render() {\n const { classes, model, graphDimensions } = this.props;\n const {\n arrows,\n backgroundMarks,\n coordinatesOnHover,\n domain,\n includeAxes,\n labels,\n range,\n standardGrid,\n title\n } = model || {};\n const graph = (model || {}).graph || {};\n const { enabled, min, max, step } = graphDimensions || {};\n const { gridValues, labelValues } = 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 return (\n <div className={classes.container}>\n <div className={classes.gridConfig}>\n <GridSetup\n domain={domain}\n dimensionsEnabled={enabled}\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 />\n </div>\n\n <div className={classes.graphConfig} key=\"graph\">\n <Typography component=\"div\" variant=\"subheading2\" className={classes.subheading}>\n <span>Define Graph Attributes</span>\n </Typography>\n\n <Typography component=\"div\" variant=\"body1\" className={classes.body}>\n <span>Use this interface to add/edit a title and/or labels, and to set background shapes</span>\n </Typography>\n\n <GraphContainer\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={[]}\n coordinatesOnHover={coordinatesOnHover}\n domain={domain}\n key=\"graphing-config\"\n labels={labels}\n marks={backgroundMarks}\n onChangeMarks={this.changeBackgroundMarks}\n range={range}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n toolbarTools={allTools}\n />\n </div>\n </div>\n );\n }\n};\n\nexport default withStyles(styles)(GraphingConfig);\n"],"file":"graphing-config.js"}
@@ -35,8 +35,6 @@ var _debug = _interopRequireDefault(require("debug"));
35
35
 
36
36
  var _defaults = _interopRequireDefault(require("./defaults"));
37
37
 
38
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
39
-
40
38
  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; }
41
39
 
42
40
  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; }
@@ -45,13 +43,14 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
45
43
 
46
44
  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; } }
47
45
 
48
- var log = (0, _debug["default"])('pie-elements:graphing:configure');
46
+ var log = (0, _debug["default"])('pie-elements:graphing:configure'); // this function is implemented in controller as well
49
47
 
50
- // this function is implemented in controller as well
51
48
  var sortedAnswers = function sortedAnswers(answers) {
52
- answers = answers || {};
53
- return Object.keys(answers).sort().reduce(function (result, key) {
54
- result[key] = answers[key];
49
+ return Object.keys(answers || {}).sort().reduce(function (result, key) {
50
+ if (key !== 'correctAnswer') {
51
+ result[key] = answers[key];
52
+ }
53
+
55
54
  return result;
56
55
  }, {});
57
56
  };
@@ -130,13 +129,31 @@ var GraphLinesConfigure = /*#__PURE__*/function (_HTMLElement) {
130
129
  exports["default"] = GraphLinesConfigure;
131
130
  (0, _defineProperty2["default"])(GraphLinesConfigure, "createDefaultModel", function () {
132
131
  var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
133
-
134
- if (!(0, _isEmpty["default"])(model.answers) && model.answers.hasOwnProperty('correctAnswer')) {
135
- model.answers = Object.assign({
136
- correctAnswer: model.answers.correctAnswer
137
- }, sortedAnswers(model.answers));
138
- }
139
-
140
- return _objectSpread(_objectSpread({}, _defaults["default"].model), model);
132
+ var _model$answers = model.answers,
133
+ answers = _model$answers === void 0 ? {} : _model$answers,
134
+ _model$domain = model.domain,
135
+ domain = _model$domain === void 0 ? {} : _model$domain,
136
+ _model$graph = model.graph,
137
+ graph = _model$graph === void 0 ? {} : _model$graph,
138
+ _model$range = model.range,
139
+ range = _model$range === void 0 ? {} : _model$range,
140
+ standardGrid = model.standardGrid;
141
+
142
+ var normalizedModel = _objectSpread(_objectSpread(_objectSpread({}, _defaults["default"].model), model), {}, {
143
+ answers: answers && answers.correctAnswer && _objectSpread({
144
+ correctAnswer: answers.correctAnswer
145
+ }, sortedAnswers(answers)) || answers,
146
+ range: standardGrid && _objectSpread(_objectSpread({}, range), {}, {
147
+ min: domain.min,
148
+ max: domain.max,
149
+ step: domain.step,
150
+ labelStep: domain.labelStep
151
+ }) || range,
152
+ graph: standardGrid && _objectSpread(_objectSpread({}, graph), {}, {
153
+ height: graph.width
154
+ }) || graph
155
+ });
156
+
157
+ return normalizedModel;
141
158
  });
142
159
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","sortedAnswers","answers","Object","keys","sort","reduce","result","key","GraphLinesConfigure","model","_model","_render","dispatchEvent","ModelUpdatedEvent","config","_configuration","handler","InsertImageEvent","src","done","DeleteImageEvent","createDefaultModel","defaultValues","configuration","m","c","el","React","createElement","Configure","onModelChanged","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement","hasOwnProperty","assign","correctAnswer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAGA;;;;;;;;;;AADA,IAAMA,GAAG,GAAG,uBAAM,iCAAN,CAAZ;;AAGA;AACA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,OAAD,EAAa;AACjCA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;AAEA,SAAOC,MAAM,CAACC,IAAP,CAAYF,OAAZ,EAAqBG,IAArB,GAA4BC,MAA5B,CAAmC,UAACC,MAAD,EAASC,GAAT,EAAiB;AACzDD,IAAAA,MAAM,CAACC,GAAD,CAAN,GAAcN,OAAO,CAACM,GAAD,CAArB;AAEA,WAAOD,MAAP;AACD,GAJM,EAIJ,EAJI,CAAP;AAKD,CARD;;IAUqBE,mB;;;;;AAUnB,iCAAc;AAAA;;AAAA;AACZ;AADY,uGAgBG,UAACC,KAAD,EAAW;AAC1B,YAAKC,MAAL,GAAcD,KAAd;;AACA,YAAKE,OAAL;;AAEAZ,MAAAA,GAAG,CAAC,oBAAD,EAAuB,MAAKW,MAA5B,CAAH;;AAEA,YAAKE,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,MAAKH,MAA3B,CAAnB;AACD,KAvBa;AAAA,+GAyBW,UAACI,MAAD,EAAY;AACnC,YAAKC,cAAL,GAAsBD,MAAtB;;AACA,YAAKH,OAAL;AACD,KA5Ba;AAAA,oGA8BA,UAACK,OAAD,EAAa;AACzB,YAAKJ,aAAL,CAAmB,IAAIK,oCAAJ,CAAqBD,OAArB,CAAnB;AACD,KAhCa;AAAA,sGAkCE,UAACE,GAAD,EAAMC,IAAN,EAAe;AAC7B,YAAKP,aAAL,CAAmB,IAAIQ,oCAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB;AACD,KApCa;AAEZ,UAAKT,MAAL,GAAcF,mBAAmB,CAACa,kBAApB,EAAd;AACA,UAAKN,cAAL,GAAsBO,qBAAcC,aAApC;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcF,mBAAmB,CAACa,kBAApB,CAAuCG,CAAvC,CAAd;;AACA,WAAKb,OAAL;AACD;;;SAED,aAAkBc,CAAlB,EAAqB;AACnB,WAAKV,cAAL,GAAsBU,CAAtB;;AACA,WAAKd,OAAL;AACD;;;WAwBD,mBAAU;AACR,UAAI,KAAKD,MAAT,EAAiB;AACf,YAAMgB,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,qBAApB,EAA+B;AACxCC,UAAAA,cAAc,EAAE,KAAKA,cADmB;AAExCC,UAAAA,sBAAsB,EAAE,KAAKA,sBAFW;AAGxCtB,UAAAA,KAAK,EAAE,KAAKC,MAH4B;AAIxCa,UAAAA,aAAa,EAAE,KAAKR,cAJoB;AAKxCiB,UAAAA,YAAY,EAAE;AACZC,YAAAA,GAAG,EAAE,KAAKC,WADE;AAEZ,sBAAQ,KAAKC;AAFD;AAL0B,SAA/B,CAAX;;AAUAC,6BAASC,MAAT,CAAgBX,EAAhB,EAAoB,IAApB;AACD;AACF;;;kDA9D8CY,W;;;iCAA5B9B,mB,wBACS,YAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;;AAE1C,MAAI,CAAC,yBAAQA,KAAK,CAACR,OAAd,CAAD,IAA2BQ,KAAK,CAACR,OAAN,CAAcsC,cAAd,CAA6B,eAA7B,CAA/B,EAA8E;AAC1E9B,IAAAA,KAAK,CAACR,OAAN,GAAgBC,MAAM,CAACsC,MAAP,CAAc;AAAEC,MAAAA,aAAa,EAAEhC,KAAK,CAACR,OAAN,CAAcwC;AAA/B,KAAd,EAA8DzC,aAAa,CAACS,KAAK,CAACR,OAAP,CAA3E,CAAhB;AACH;;AAED,yCAAYqB,qBAAcb,KAA1B,GAAoCA,KAApC;AACD,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Configure from './configure';\nimport { DeleteImageEvent, InsertImageEvent, ModelUpdatedEvent } from '@pie-framework/pie-configure-events';\nimport debug from 'debug';\n\nimport defaultValues from './defaults';\n\nconst log = debug('pie-elements:graphing:configure');\nimport isEmpty from 'lodash/isEmpty';\n\n// this function is implemented in controller as well\nconst sortedAnswers = (answers) => {\n answers = answers || {};\n\n return Object.keys(answers).sort().reduce((result, key) => {\n result[key] = answers[key];\n\n return result;\n }, {});\n};\n\nexport default class GraphLinesConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n\n if (!isEmpty(model.answers) && model.answers.hasOwnProperty('correctAnswer')) {\n model.answers = Object.assign({ correctAnswer: model.answers.correctAnswer }, sortedAnswers(model.answers));\n }\n\n return { ...defaultValues.model, ...model }\n };\n\n constructor() {\n super();\n this._model = GraphLinesConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = GraphLinesConfigure.createDefaultModel(m);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this._render();\n }\n\n onModelChanged = (model) => {\n this._model = model;\n this._render();\n\n log('[onModelChanged]: ', this._model);\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n };\n\n onConfigurationChanged = (config) => {\n this._configuration = config;\n this._render();\n };\n\n insertImage = (handler) => {\n this.dispatchEvent(new InsertImageEvent(handler));\n };\n\n onDeleteImage = (src, done) => {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n };\n\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage,\n delete: this.onDeleteImage,\n }\n });\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","sortedAnswers","answers","Object","keys","sort","reduce","result","key","GraphLinesConfigure","model","_model","_render","dispatchEvent","ModelUpdatedEvent","config","_configuration","handler","InsertImageEvent","src","done","DeleteImageEvent","createDefaultModel","defaultValues","configuration","m","c","el","React","createElement","Configure","onModelChanged","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement","domain","graph","range","standardGrid","normalizedModel","correctAnswer","min","max","step","labelStep","height","width"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Configure from './configure';\nimport { DeleteImageEvent, InsertImageEvent, ModelUpdatedEvent } from '@pie-framework/pie-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults';\n\nconst log = debug('pie-elements:graphing:configure');\n\n// this function is implemented in controller as well\nconst sortedAnswers = answers => Object.keys(answers || {}).sort().reduce((result, key) => {\n if (key !== 'correctAnswer') {\n result[key] = answers[key];\n }\n\n return result;\n}, {});\n\nexport default class GraphLinesConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const { answers = {}, domain = {}, graph = {}, range = {}, standardGrid } = model;\n const normalizedModel = {\n ...defaultValues.model,\n ...model,\n answers: answers && answers.correctAnswer && {\n correctAnswer: answers.correctAnswer,\n ...sortedAnswers(answers)\n } || answers,\n range: standardGrid && {\n ...range,\n min: domain.min,\n max: domain.max,\n step: domain.step,\n labelStep: domain.labelStep\n } || range,\n graph: standardGrid && { ...graph, height: graph.width } || graph\n };\n\n return normalizedModel;\n };\n\n constructor() {\n super();\n this._model = GraphLinesConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = GraphLinesConfigure.createDefaultModel(m);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this._render();\n }\n\n onModelChanged = (model) => {\n this._model = model;\n this._render();\n\n log('[onModelChanged]: ', this._model);\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n };\n\n onConfigurationChanged = (config) => {\n this._configuration = config;\n this._render();\n };\n\n insertImage = (handler) => {\n this.dispatchEvent(new InsertImageEvent(handler));\n };\n\n onDeleteImage = (src, done) => {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n };\n\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage,\n delete: this.onDeleteImage,\n }\n });\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getLabelValues = exports.getGridValues = exports.applyConstraints = exports.VALID_LABEL_VALUES = void 0;
9
+
10
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
11
+
12
+ var VALID_GRID_VALUES = [0.01, 0.02, 0.04, 0.05, 0.0625, 0.1, 0.125, 0.2, 0.25, 0.5, 1, 2, 3, 4, 5, 8, 10, 12, 15, 20, 40, 50, 64, 100, 500, 1000]; // same as VALID_GRID_VALUES but next values are excluded: 0.04, 0.0625, 0.125, 3, 4, 8, 12, 15, 40, 64
13
+
14
+ var PREFERRED_VALID_GRID_VALUES = [0.01, 0.02, 0.05, 0.1, 0.2, 0.25, 0.5, 1, 2, 5, 10, 20, 50, 100, 500, 1000];
15
+ var VALID_LABEL_VALUES = {
16
+ '0.01': [0, 0.01, 0.02, 0.04, 0.05, 0.1],
17
+ '0.02': [0, 0.02, 0.04, 0.1],
18
+ '0.04': [0, 0.04, 0.08, 0.16, 0.2],
19
+ '0.05': [0, 0.05, 0.1, 0.2, 0.25],
20
+ '0.0625': [0, 0.0625, 0.125, 0.25, 0.5],
21
+ '0.1': [0, 0.1, 0.2, 0.4, 0.5, 1],
22
+ '0.125': [0, 0.125, 0.25, 0.5, 1],
23
+ '0.2': [0, 0.2, 0.5, 0.1],
24
+ '0.25': [0, 0.25, 0.5, 1, 2],
25
+ '0.5': [0, 0.5, 1, 2],
26
+ '1': [0, 1, 2, 4, 5, 10],
27
+ '2': [0, 2, 4, 8, 10],
28
+ '3': [0, 3, 6, 12, 15],
29
+ '4': [0, 4, 8, 16, 20],
30
+ '5': [0, 5, 10, 20, 25],
31
+ '8': [0, 8, 16, 32, 40, 64],
32
+ '10': [0, 10, 20, 40, 50, 100],
33
+ '12': [0, 12, 24],
34
+ '15': [0, 15, 30, 60],
35
+ '20': [0, 20, 40, 80, 100],
36
+ '40': [0, 40, 80, 160, 200],
37
+ '50': [0, 50, 100, 200, 250],
38
+ '64': [0, 64, 128],
39
+ '100': [0, 100, 200, 400, 500],
40
+ '500': [0, 500, 1000, 2500],
41
+ '1000': [0, 1000, 2000, 4000, 5000]
42
+ };
43
+ exports.VALID_LABEL_VALUES = VALID_LABEL_VALUES;
44
+
45
+ var getGridValues = function getGridValues(axis, size) {
46
+ var prefferedValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
47
+ var minValue = 10 * (axis.max - axis.min) / size;
48
+ var maxValue = minValue * 10;
49
+ var values = prefferedValues ? PREFERRED_VALID_GRID_VALUES : VALID_GRID_VALUES;
50
+ return values.filter(function (value) {
51
+ return value >= minValue && value <= maxValue;
52
+ });
53
+ };
54
+
55
+ exports.getGridValues = getGridValues;
56
+
57
+ var getLabelValues = function getLabelValues(value) {
58
+ return VALID_LABEL_VALUES[value] || [];
59
+ };
60
+
61
+ exports.getLabelValues = getLabelValues;
62
+
63
+ var applyConstraints = function applyConstraints(axis, size, oldGridValues, oldLabelValues) {
64
+ var gridValues = getGridValues(axis, size);
65
+ var labelValues = getLabelValues(axis.step);
66
+
67
+ if (!(0, _isEqual["default"])(oldGridValues, gridValues) && !gridValues.includes(axis.step)) {
68
+ var preferredValues = getGridValues(axis, size, true);
69
+ var lowestValue = preferredValues[0] || 1;
70
+ axis.step = lowestValue;
71
+ labelValues = getLabelValues(lowestValue);
72
+
73
+ if (!labelValues.includes(axis.labelStep)) {
74
+ axis.labelStep = lowestValue;
75
+ }
76
+
77
+ return {
78
+ gridValues: gridValues,
79
+ labelValues: labelValues
80
+ };
81
+ }
82
+
83
+ if (!(0, _isEqual["default"])(oldLabelValues, labelValues) && !labelValues.includes(axis.labelStep)) {
84
+ axis.labelStep = axis.step;
85
+ }
86
+
87
+ return {
88
+ gridValues: gridValues,
89
+ labelValues: labelValues
90
+ };
91
+ };
92
+
93
+ exports.applyConstraints = applyConstraints;
94
+ //# sourceMappingURL=utils.js.map