@pie-lib/graphing 2.4.3-next.350 → 2.4.3-next.406

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.
Files changed (103) hide show
  1. package/lib/axis/arrow.js +15 -25
  2. package/lib/axis/arrow.js.map +1 -1
  3. package/lib/axis/axes.js +41 -73
  4. package/lib/axis/axes.js.map +1 -1
  5. package/lib/axis/index.js +1 -1
  6. package/lib/bg.js +20 -31
  7. package/lib/bg.js.map +1 -1
  8. package/lib/container/index.js +27 -41
  9. package/lib/container/index.js.map +1 -1
  10. package/lib/container/reducer.js +2 -2
  11. package/lib/container/reducer.js.map +1 -1
  12. package/lib/coordinates-label.js +5 -5
  13. package/lib/coordinates-label.js.map +1 -1
  14. package/lib/graph-with-controls.js +81 -43
  15. package/lib/graph-with-controls.js.map +1 -1
  16. package/lib/graph.js +45 -69
  17. package/lib/graph.js.map +1 -1
  18. package/lib/grid-setup.js +72 -27
  19. package/lib/grid-setup.js.map +1 -1
  20. package/lib/grid.js +28 -46
  21. package/lib/grid.js.map +1 -1
  22. package/lib/index.js +3 -3
  23. package/lib/index.js.map +1 -1
  24. package/lib/labels.js +22 -38
  25. package/lib/labels.js.map +1 -1
  26. package/lib/mark-label.js +10 -20
  27. package/lib/mark-label.js.map +1 -1
  28. package/lib/toggle-bar.js +22 -33
  29. package/lib/toggle-bar.js.map +1 -1
  30. package/lib/tool-menu.js +21 -32
  31. package/lib/tool-menu.js.map +1 -1
  32. package/lib/tools/circle/bg-circle.js +27 -38
  33. package/lib/tools/circle/bg-circle.js.map +1 -1
  34. package/lib/tools/circle/component.js +36 -54
  35. package/lib/tools/circle/component.js.map +1 -1
  36. package/lib/tools/circle/index.js +5 -5
  37. package/lib/tools/circle/index.js.map +1 -1
  38. package/lib/tools/line/component.js +11 -25
  39. package/lib/tools/line/component.js.map +1 -1
  40. package/lib/tools/line/index.js +2 -2
  41. package/lib/tools/line/index.js.map +1 -1
  42. package/lib/tools/parabola/component.js +2 -2
  43. package/lib/tools/parabola/component.js.map +1 -1
  44. package/lib/tools/parabola/index.js +5 -5
  45. package/lib/tools/parabola/index.js.map +1 -1
  46. package/lib/tools/point/component.js +30 -47
  47. package/lib/tools/point/component.js.map +1 -1
  48. package/lib/tools/point/index.js +5 -5
  49. package/lib/tools/point/index.js.map +1 -1
  50. package/lib/tools/polygon/component.js +59 -107
  51. package/lib/tools/polygon/component.js.map +1 -1
  52. package/lib/tools/polygon/index.js +9 -19
  53. package/lib/tools/polygon/index.js.map +1 -1
  54. package/lib/tools/polygon/line.js +28 -41
  55. package/lib/tools/polygon/line.js.map +1 -1
  56. package/lib/tools/polygon/polygon.js +28 -42
  57. package/lib/tools/polygon/polygon.js.map +1 -1
  58. package/lib/tools/ray/component.js +11 -25
  59. package/lib/tools/ray/component.js.map +1 -1
  60. package/lib/tools/ray/index.js +2 -2
  61. package/lib/tools/ray/index.js.map +1 -1
  62. package/lib/tools/segment/component.js +8 -11
  63. package/lib/tools/segment/component.js.map +1 -1
  64. package/lib/tools/segment/index.js +2 -2
  65. package/lib/tools/segment/index.js.map +1 -1
  66. package/lib/tools/shared/arrow-head.js +2 -2
  67. package/lib/tools/shared/arrow-head.js.map +1 -1
  68. package/lib/tools/shared/line/index.js +43 -66
  69. package/lib/tools/shared/line/index.js.map +1 -1
  70. package/lib/tools/shared/line/line-path.js +29 -42
  71. package/lib/tools/shared/line/line-path.js.map +1 -1
  72. package/lib/tools/shared/line/with-root-edge.js +12 -14
  73. package/lib/tools/shared/line/with-root-edge.js.map +1 -1
  74. package/lib/tools/shared/point/arrow-point.js +24 -39
  75. package/lib/tools/shared/point/arrow-point.js.map +1 -1
  76. package/lib/tools/shared/point/arrow.js +23 -37
  77. package/lib/tools/shared/point/arrow.js.map +1 -1
  78. package/lib/tools/shared/point/base-point.js +24 -38
  79. package/lib/tools/shared/point/base-point.js.map +1 -1
  80. package/lib/tools/shared/point/index.js +6 -6
  81. package/lib/tools/shared/point/index.js.map +1 -1
  82. package/lib/tools/shared/styles.js +7 -5
  83. package/lib/tools/shared/styles.js.map +1 -1
  84. package/lib/tools/shared/types.js +2 -2
  85. package/lib/tools/shared/types.js.map +1 -1
  86. package/lib/tools/sine/component.js +2 -2
  87. package/lib/tools/sine/component.js.map +1 -1
  88. package/lib/tools/sine/index.js +5 -5
  89. package/lib/tools/sine/index.js.map +1 -1
  90. package/lib/tools/vector/component.js +8 -11
  91. package/lib/tools/vector/component.js.map +1 -1
  92. package/lib/tools/vector/index.js +2 -2
  93. package/lib/tools/vector/index.js.map +1 -1
  94. package/lib/undo-redo.js +19 -31
  95. package/lib/undo-redo.js.map +1 -1
  96. package/lib/use-debounce.js +5 -13
  97. package/lib/use-debounce.js.map +1 -1
  98. package/lib/utils.js +2 -2
  99. package/lib/utils.js.map +1 -1
  100. package/package.json +3 -3
  101. package/src/graph-with-controls.jsx +70 -13
  102. package/src/graph.jsx +2 -0
  103. package/src/grid-setup.jsx +155 -88
package/lib/graph.js CHANGED
@@ -1,12 +1,32 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
6
 
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.removeBuildingToolIfCurrentToolDiffers = exports.graphPropTypes = exports["default"] = exports.Graph = void 0;
9
11
 
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
+
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
+
24
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
+
26
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
+
28
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
+
10
30
  var _react = _interopRequireDefault(require("react"));
11
31
 
12
32
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -33,53 +53,21 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
33
53
 
34
54
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
55
 
36
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
37
-
38
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
39
-
40
56
  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
57
 
42
- 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) { _defineProperty(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; }
43
-
44
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
45
-
46
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
47
-
48
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
49
-
50
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
51
-
52
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
53
-
54
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
55
-
56
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
57
-
58
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
58
+ 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; }
59
59
 
60
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
61
-
62
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
63
-
64
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
65
-
66
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
67
-
68
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
69
-
70
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
60
+ 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); }; }
71
61
 
72
62
  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; } }
73
63
 
74
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
75
-
76
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
77
-
78
64
  var log = (0, _debug["default"])('pie-lib:graphing:graph');
79
65
  var graphPropTypes = {
80
66
  axesSettings: _propTypes["default"].shape(_axis.AxisPropTypes),
81
67
  backgroundMarks: _propTypes["default"].array,
82
68
  className: _propTypes["default"].string,
69
+ collapsibleToolbar: _propTypes["default"].bool,
70
+ collapsibleToolbarTitle: _propTypes["default"].string,
83
71
  domain: _plot.types.DomainType,
84
72
  labels: _propTypes["default"].shape(_labels.LabelType),
85
73
  labelModeEnabled: _propTypes["default"].bool,
@@ -129,30 +117,27 @@ var removeBuildingToolIfCurrentToolDiffers = function removeBuildingToolIfCurren
129
117
  exports.removeBuildingToolIfCurrentToolDiffers = removeBuildingToolIfCurrentToolDiffers;
130
118
 
131
119
  var Graph = /*#__PURE__*/function (_React$Component) {
132
- _inherits(Graph, _React$Component);
120
+ (0, _inherits2["default"])(Graph, _React$Component);
133
121
 
134
122
  var _super = _createSuper(Graph);
135
123
 
136
124
  function Graph() {
137
125
  var _this;
138
126
 
139
- _classCallCheck(this, Graph);
127
+ (0, _classCallCheck2["default"])(this, Graph);
140
128
 
141
129
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
142
130
  args[_key] = arguments[_key];
143
131
  }
144
132
 
145
133
  _this = _super.call.apply(_super, [this].concat(args));
146
-
147
- _defineProperty(_assertThisInitialized(_this), "state", {});
148
-
149
- _defineProperty(_assertThisInitialized(_this), "componentDidMount", function () {
134
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {});
135
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "componentDidMount", function () {
150
136
  return _this.setState({
151
137
  labelNode: _this.labelNode
152
138
  });
153
139
  });
154
-
155
- _defineProperty(_assertThisInitialized(_this), "changeMark", function (oldMark, newMark) {
140
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMark", function (oldMark, newMark) {
156
141
  var _this$props = _this.props,
157
142
  onChangeMarks = _this$props.onChangeMarks,
158
143
  marks = _this$props.marks;
@@ -166,8 +151,7 @@ var Graph = /*#__PURE__*/function (_React$Component) {
166
151
  onChangeMarks(newMarks);
167
152
  }
168
153
  });
169
-
170
- _defineProperty(_assertThisInitialized(_this), "completeMark", function (markData) {
154
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "completeMark", function (markData) {
171
155
  var _this$props2 = _this.props,
172
156
  currentTool = _this$props2.currentTool,
173
157
  marks = _this$props2.marks;
@@ -179,8 +163,7 @@ var Graph = /*#__PURE__*/function (_React$Component) {
179
163
 
180
164
  _this.updateMarks(buildingMark, updatedMark);
181
165
  });
182
-
183
- _defineProperty(_assertThisInitialized(_this), "updateMarks", function (existing, update) {
166
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateMarks", function (existing, update) {
184
167
  var addIfMissing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
185
168
  var _this$props3 = _this.props,
186
169
  onChangeMarks = _this$props3.onChangeMarks,
@@ -199,19 +182,17 @@ var Graph = /*#__PURE__*/function (_React$Component) {
199
182
  newMarks.splice(index, 1, update);
200
183
  onChangeMarks(newMarks);
201
184
  } else if (addIfMissing) {
202
- onChangeMarks([].concat(_toConsumableArray(newMarks), [update]));
185
+ onChangeMarks([].concat((0, _toConsumableArray2["default"])(newMarks), [update]));
203
186
  }
204
187
  });
205
-
206
- _defineProperty(_assertThisInitialized(_this), "getComponent", function (mark) {
188
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getComponent", function (mark) {
207
189
  if (!mark) return null;
208
190
  var tool = (_this.props.tools || []).find(function (t) {
209
191
  return t.type === mark.type;
210
192
  });
211
193
  return tool && tool.Component || null;
212
194
  });
213
-
214
- _defineProperty(_assertThisInitialized(_this), "onBgClick", function (point) {
195
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBgClick", function (point) {
215
196
  var x = point.x,
216
197
  y = point.y;
217
198
  var _this$props4 = _this.props,
@@ -243,11 +224,10 @@ var Graph = /*#__PURE__*/function (_React$Component) {
243
224
 
244
225
  _this.updateMarks(buildingMark, updatedMark, true);
245
226
  });
246
-
247
227
  return _this;
248
228
  }
249
229
 
250
- _createClass(Graph, [{
230
+ (0, _createClass2["default"])(Graph, [{
251
231
  key: "render",
252
232
  value: function render() {
253
233
  var _this2 = this;
@@ -276,20 +256,20 @@ var Graph = /*#__PURE__*/function (_React$Component) {
276
256
  marks: marks || [],
277
257
  currentTool: currentTool
278
258
  });
279
- return /*#__PURE__*/_react["default"].createElement(_plot.Root, _extends({
259
+ return /*#__PURE__*/_react["default"].createElement(_plot.Root, (0, _extends2["default"])({
280
260
  rootRef: function rootRef(r) {
281
261
  return _this2.rootNode = r;
282
262
  },
283
263
  title: title
284
- }, common), /*#__PURE__*/_react["default"].createElement(_labels["default"], _extends({
264
+ }, common), /*#__PURE__*/_react["default"].createElement(_labels["default"], (0, _extends2["default"])({
285
265
  value: labels
286
266
  }, common)), /*#__PURE__*/_react["default"].createElement("g", {
287
267
  transform: "translate(".concat(domain.padding, ", ").concat(range.padding, ")")
288
- }, /*#__PURE__*/_react["default"].createElement(_grid["default"], common), /*#__PURE__*/_react["default"].createElement(_axis.Axes, _extends({}, axesSettings, common)), /*#__PURE__*/_react["default"].createElement(_bg["default"], _extends({}, size, {
268
+ }, /*#__PURE__*/_react["default"].createElement(_grid["default"], common), /*#__PURE__*/_react["default"].createElement(_axis.Axes, (0, _extends2["default"])({}, axesSettings, common)), /*#__PURE__*/_react["default"].createElement(_bg["default"], (0, _extends2["default"])({}, size, {
289
269
  onClick: this.onBgClick
290
270
  }, common)), /*#__PURE__*/_react["default"].createElement("mask", {
291
271
  id: "myMask"
292
- }, /*#__PURE__*/_react["default"].createElement("rect", _extends({}, maskSize, {
272
+ }, /*#__PURE__*/_react["default"].createElement("rect", (0, _extends2["default"])({}, maskSize, {
293
273
  fill: "white"
294
274
  })), " "), /*#__PURE__*/_react["default"].createElement("g", {
295
275
  id: "marks",
@@ -298,7 +278,7 @@ var Graph = /*#__PURE__*/function (_React$Component) {
298
278
  var Component = _this2.getComponent(m);
299
279
 
300
280
  var markType = m.type;
301
- return /*#__PURE__*/_react["default"].createElement(Component, _extends({
281
+ return /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
302
282
  key: "".concat(markType, "-").concat(index, "-bg"),
303
283
  mark: _objectSpread(_objectSpread({}, m), {}, {
304
284
  disabled: true,
@@ -310,7 +290,7 @@ var Graph = /*#__PURE__*/function (_React$Component) {
310
290
  var Component = _this2.getComponent(m);
311
291
 
312
292
  var markType = m.type;
313
- return /*#__PURE__*/_react["default"].createElement(Component, _extends({
293
+ return /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
314
294
  key: "".concat(markType, "-").concat(index),
315
295
  mark: m,
316
296
  coordinatesOnHover: coordinatesOnHover,
@@ -322,7 +302,7 @@ var Graph = /*#__PURE__*/function (_React$Component) {
322
302
  labelNode: _this2.state.labelNode,
323
303
  isToolActive: currentTool && markType === currentTool.type
324
304
  }, common));
325
- }), /*#__PURE__*/_react["default"].createElement("foreignObject", _extends({
305
+ }), /*#__PURE__*/_react["default"].createElement("foreignObject", (0, _extends2["default"])({
326
306
  ref: function ref(labelNode) {
327
307
  return _this2.labelNode = labelNode;
328
308
  },
@@ -335,20 +315,16 @@ var Graph = /*#__PURE__*/function (_React$Component) {
335
315
  })))));
336
316
  }
337
317
  }]);
338
-
339
318
  return Graph;
340
319
  }(_react["default"].Component);
341
320
 
342
321
  exports.Graph = Graph;
343
-
344
- _defineProperty(Graph, "propTypes", _objectSpread(_objectSpread({}, graphPropTypes), {}, {
322
+ (0, _defineProperty2["default"])(Graph, "propTypes", _objectSpread(_objectSpread({}, graphPropTypes), {}, {
345
323
  currentTool: _propTypes["default"].object
346
324
  }));
347
-
348
- _defineProperty(Graph, "defaultProps", {
325
+ (0, _defineProperty2["default"])(Graph, "defaultProps", {
349
326
  onChangeMarks: function onChangeMarks() {}
350
327
  });
351
-
352
328
  var _default = Graph;
353
329
  exports["default"] = _default;
354
330
  //# sourceMappingURL=graph.js.map
package/lib/graph.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","names":["log","debug","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","domain","types","DomainType","labels","LabelType","labelModeEnabled","bool","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","cloneDeep","type","index","findIndex","isEqual","splice","Graph","setState","labelNode","oldMark","newMark","props","isDuplicatedMark","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","point","addPoint","undefined","graphProps","createGraphProps","rootNode","maskSize","common","r","padding","onBgClick","map","getComponent","markType","disabled","isBackground","state","changeMark","completeMark","startDrag","stopDrag","pointerEvents","React","object"],"sources":["../src/graph.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\nimport { isDuplicatedMark } from './utils';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -23,\n y: -23,\n width: size.width + 46,\n height: size.height + 46\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0 && !isDuplicatedMark(newMark, marks, oldMark)) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n if (!update.building && isDuplicatedMark(update, marks)) {\n return;\n }\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = point => {\n const { x, y } = point;\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n log('[onBgClick] x,y: ', x, y);\n\n if (labelModeEnabled || !currentTool) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root rootRef={r => (this.rootNode = r)} title={title} {...common}>\n <Labels value={labels} {...common} />\n <g transform={`translate(${domain.padding}, ${range.padding})`}>\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true, isBackground: true }}\n labelNode={this.state.labelNode}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={this.onBgClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","names":["log","debug","graphPropTypes","axesSettings","PropTypes","shape","AxisPropTypes","backgroundMarks","array","className","string","collapsibleToolbar","bool","collapsibleToolbarTitle","domain","types","DomainType","labels","LabelType","labelModeEnabled","coordinatesOnHover","marks","onChangeMarks","func","range","size","width","number","isRequired","height","title","tools","getMaskSize","x","y","removeBuildingToolIfCurrentToolDiffers","currentTool","buildingMark","filter","m","building","newMarks","cloneDeep","type","index","findIndex","isEqual","splice","Graph","setState","labelNode","oldMark","newMark","props","isDuplicatedMark","markData","updatedMark","complete","updateMarks","existing","update","addIfMissing","mark","tool","find","t","Component","point","addPoint","undefined","graphProps","createGraphProps","rootNode","maskSize","common","r","padding","onBgClick","map","getComponent","markType","disabled","isBackground","state","changeMark","completeMark","startDrag","stopDrag","pointerEvents","React","object"],"sources":["../src/graph.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Root, types, createGraphProps } from '@pie-lib/plot';\nimport debug from 'debug';\n\nimport Labels from './labels';\nimport { Axes, AxisPropTypes } from './axis';\nimport Grid from './grid';\nimport { LabelType } from './labels';\nimport Bg from './bg';\nimport { isDuplicatedMark } from './utils';\n\nconst log = debug('pie-lib:graphing:graph');\n\nexport const graphPropTypes = {\n axesSettings: PropTypes.shape(AxisPropTypes),\n backgroundMarks: PropTypes.array,\n className: PropTypes.string,\n collapsibleToolbar: PropTypes.bool,\n collapsibleToolbarTitle: PropTypes.string,\n domain: types.DomainType,\n labels: PropTypes.shape(LabelType),\n labelModeEnabled: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n marks: PropTypes.array,\n onChangeMarks: PropTypes.func,\n range: types.DomainType,\n size: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired\n }),\n title: PropTypes.string,\n tools: PropTypes.array\n};\n\nconst getMaskSize = size => ({\n x: -23,\n y: -23,\n width: size.width + 46,\n height: size.height + 46\n});\n\nexport const removeBuildingToolIfCurrentToolDiffers = ({ marks, currentTool }) => {\n const buildingMark = marks.filter(m => m.building)[0];\n let newMarks = cloneDeep(marks);\n\n if (buildingMark && currentTool && buildingMark.type !== currentTool.type) {\n const index = newMarks.findIndex(m => isEqual(m, buildingMark));\n\n if (index >= 0) {\n newMarks.splice(index, 1);\n }\n }\n\n return newMarks;\n};\n\nexport class Graph extends React.Component {\n static propTypes = {\n ...graphPropTypes,\n currentTool: PropTypes.object\n };\n\n static defaultProps = {\n onChangeMarks: () => {}\n };\n\n state = {};\n\n componentDidMount = () => this.setState({ labelNode: this.labelNode });\n\n changeMark = (oldMark, newMark) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n const index = newMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index >= 0 && !isDuplicatedMark(newMark, marks, oldMark)) {\n newMarks.splice(index, 1, newMark);\n\n onChangeMarks(newMarks);\n }\n };\n\n completeMark = markData => {\n const { currentTool, marks } = this.props;\n const buildingMark = marks.filter(m => m.building)[0];\n\n if (!buildingMark || !currentTool) return;\n\n const updatedMark = currentTool.complete(buildingMark, markData);\n\n this.updateMarks(buildingMark, updatedMark);\n };\n\n updateMarks = (existing, update, addIfMissing = false) => {\n const { onChangeMarks, marks } = this.props;\n let newMarks = cloneDeep(marks);\n\n if (!update.building && isDuplicatedMark(update, marks)) {\n return;\n }\n\n const index = newMarks.findIndex(m => isEqual(m, existing));\n\n if (index >= 0) {\n newMarks.splice(index, 1, update);\n\n onChangeMarks(newMarks);\n } else if (addIfMissing) {\n onChangeMarks([...newMarks, update]);\n }\n };\n\n getComponent = mark => {\n if (!mark) return null;\n\n const tool = (this.props.tools || []).find(t => t.type === mark.type);\n\n return (tool && tool.Component) || null;\n };\n\n onBgClick = point => {\n const { x, y } = point;\n const { labelModeEnabled, currentTool, marks } = this.props;\n\n log('[onBgClick] x,y: ', x, y);\n\n if (labelModeEnabled || !currentTool) {\n return;\n }\n\n const buildingMark = marks.filter(m => m.building)[0];\n let updatedMark;\n\n // if the building mark has a different type, we just replace it\n if (buildingMark && currentTool && buildingMark.type === currentTool.type) {\n updatedMark = currentTool.addPoint({ x, y }, { ...buildingMark });\n } else {\n updatedMark = currentTool.addPoint({ x, y }, undefined);\n }\n\n this.updateMarks(buildingMark, updatedMark, true);\n };\n\n render() {\n const {\n axesSettings,\n currentTool,\n coordinatesOnHover,\n size,\n domain,\n backgroundMarks,\n range,\n title,\n labels,\n labelModeEnabled\n } = this.props;\n let { marks } = this.props;\n\n const graphProps = createGraphProps(domain, range, size, () => this.rootNode);\n const maskSize = getMaskSize(size);\n const common = { graphProps, labelModeEnabled };\n\n marks = removeBuildingToolIfCurrentToolDiffers({ marks: marks || [], currentTool });\n\n return (\n <Root rootRef={r => (this.rootNode = r)} title={title} {...common}>\n <Labels value={labels} {...common} />\n <g transform={`translate(${domain.padding}, ${range.padding})`}>\n <Grid {...common} />\n <Axes {...axesSettings} {...common} />\n <Bg {...size} onClick={this.onBgClick} {...common} />\n <mask id=\"myMask\">\n <rect {...maskSize} fill=\"white\" /> {/* TODO hardcoded color */}\n </mask>\n\n <g id=\"marks\" mask=\"url('#myMask')\">\n {(backgroundMarks || []).map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}-bg`}\n mark={{ ...m, disabled: true, isBackground: true }}\n labelNode={this.state.labelNode}\n {...common}\n />\n );\n })}\n\n {marks.map((m, index) => {\n const Component = this.getComponent(m);\n const markType = m.type;\n\n return (\n <Component\n key={`${markType}-${index}`}\n mark={m}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.changeMark}\n onComplete={this.completeMark}\n onClick={this.onBgClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={this.state.labelNode}\n isToolActive={currentTool && markType === currentTool.type}\n {...common}\n />\n );\n })}\n\n <foreignObject\n ref={labelNode => (this.labelNode = labelNode)}\n x=\"0\"\n y=\"0\"\n {...size}\n style={{ pointerEvents: 'none' }}\n />\n </g>\n </g>\n </Root>\n );\n }\n}\n\nexport default Graph;\n"],"mappings":"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"}
package/lib/grid-setup.js CHANGED
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports["default"] = void 0;
7
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
8
12
  var _react = _interopRequireDefault(require("react"));
9
13
 
10
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -27,27 +31,28 @@ var _configUi = require("@pie-lib/config-ui");
27
31
 
28
32
  var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
29
33
 
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
-
32
34
  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; }
33
35
 
34
- 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) { _defineProperty(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; }
35
-
36
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
36
+ 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; }
37
37
 
38
38
  var GridConfig = function GridConfig(props) {
39
39
  var classes = props.classes,
40
40
  disabled = props.disabled,
41
+ displayedFields = props.displayedFields,
41
42
  labelValue = props.labelValue,
42
43
  labelValues = props.labelValues,
43
44
  gridValue = props.gridValue,
44
45
  gridValues = props.gridValues,
45
46
  _onChange = props.onChange;
47
+ var _displayedFields$labe = displayedFields.labelStep,
48
+ labelStep = _displayedFields$labe === void 0 ? {} : _displayedFields$labe,
49
+ _displayedFields$step = displayedFields.step,
50
+ step = _displayedFields$step === void 0 ? {} : _displayedFields$step;
46
51
  return /*#__PURE__*/_react["default"].createElement("div", {
47
52
  className: classes.columnView
48
- }, /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
53
+ }, step && step.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
49
54
  className: classes.mediumTextField,
50
- label: "Grid Interval",
55
+ label: step.label || '',
51
56
  value: gridValue,
52
57
  customValues: gridValues,
53
58
  variant: "outlined",
@@ -55,9 +60,9 @@ var GridConfig = function GridConfig(props) {
55
60
  onChange: function onChange(e, v) {
56
61
  return _onChange('step', v);
57
62
  }
58
- }), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
63
+ }), labelStep && labelStep.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
59
64
  className: classes.mediumTextField,
60
- label: "Label Interval",
65
+ label: labelStep.label || '',
61
66
  value: labelValue,
62
67
  customValues: labelValues,
63
68
  variant: "outlined",
@@ -71,20 +76,28 @@ var GridConfig = function GridConfig(props) {
71
76
  var AxisConfig = function AxisConfig(props) {
72
77
  var classes = props.classes,
73
78
  disabled = props.disabled,
79
+ displayedFields = props.displayedFields,
80
+ displayHeader = props.displayHeader,
74
81
  label = props.label,
75
82
  maxValue = props.maxValue,
76
83
  minValue = props.minValue,
77
84
  _onChange2 = props.onChange,
78
85
  type = props.type;
86
+ var _displayedFields$axis = displayedFields.axisLabel,
87
+ axisLabel = _displayedFields$axis === void 0 ? {} : _displayedFields$axis,
88
+ _displayedFields$min = displayedFields.min,
89
+ min = _displayedFields$min === void 0 ? {} : _displayedFields$min,
90
+ _displayedFields$max = displayedFields.max,
91
+ max = _displayedFields$max === void 0 ? {} : _displayedFields$max;
79
92
  var activePlugins = ['bold', 'italic', 'underline', 'strikethrough' // 'languageCharacters'
80
93
  ];
81
94
  return /*#__PURE__*/_react["default"].createElement("div", {
82
95
  className: classes.columnView
83
- }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
96
+ }, displayHeader && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
84
97
  variant: "subtitle2"
85
- }, /*#__PURE__*/_react["default"].createElement("i", null, type === 'domain' ? 'x' : 'y'), "-axis"), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
98
+ }, /*#__PURE__*/_react["default"].createElement("i", null, type === 'domain' ? 'x' : 'y'), "-axis"), min && min.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
86
99
  className: classes.mediumTextField,
87
- label: "Min Value",
100
+ label: min.label || '',
88
101
  value: minValue,
89
102
  min: -10000,
90
103
  max: maxValue - 0.01,
@@ -93,9 +106,9 @@ var AxisConfig = function AxisConfig(props) {
93
106
  onChange: function onChange(e, v) {
94
107
  return _onChange2('min', v);
95
108
  }
96
- }), /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
109
+ }), max && max.enabled && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
97
110
  className: classes.mediumTextField,
98
- label: "Max Value",
111
+ label: max.label || '',
99
112
  value: maxValue,
100
113
  min: minValue + 0.01,
101
114
  max: 10000,
@@ -104,8 +117,8 @@ var AxisConfig = function AxisConfig(props) {
104
117
  onChange: function onChange(e, v) {
105
118
  return _onChange2('max', v);
106
119
  }
107
- }), /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
108
- label: "Label",
120
+ }), axisLabel && axisLabel.enabled && /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
121
+ label: axisLabel.label || '',
109
122
  className: classes.mediumTextField
110
123
  }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
111
124
  className: classes.axisLabel,
@@ -121,7 +134,8 @@ var AxisConfig = function AxisConfig(props) {
121
134
  var GridSetup = function GridSetup(props) {
122
135
  var classes = props.classes,
123
136
  domain = props.domain,
124
- dimensionsEnabled = props.dimensionsEnabled,
137
+ _props$displayedField = props.displayedFields,
138
+ displayedFields = _props$displayedField === void 0 ? {} : _props$displayedField,
125
139
  _props$gridValues = props.gridValues,
126
140
  gridValues = _props$gridValues === void 0 ? {} : _props$gridValues,
127
141
  includeAxes = props.includeAxes,
@@ -137,6 +151,32 @@ var GridSetup = function GridSetup(props) {
137
151
  max: 41
138
152
  };
139
153
 
154
+ var _ref = displayedFields || {},
155
+ _ref$axisLabel = _ref.axisLabel,
156
+ axisLabel = _ref$axisLabel === void 0 ? {} : _ref$axisLabel,
157
+ dimensionsEnabled = _ref.dimensionsEnabled,
158
+ includeAxesEnabled = _ref.includeAxesEnabled,
159
+ _ref$labelStep = _ref.labelStep,
160
+ labelStep = _ref$labelStep === void 0 ? {} : _ref$labelStep,
161
+ _ref$min = _ref.min,
162
+ min = _ref$min === void 0 ? {} : _ref$min,
163
+ _ref$max = _ref.max,
164
+ max = _ref$max === void 0 ? {} : _ref$max,
165
+ standardGridEnabled = _ref.standardGridEnabled,
166
+ _ref$step = _ref.step,
167
+ step = _ref$step === void 0 ? {} : _ref$step;
168
+
169
+ var displayAxisType = min.enabled || max.enabled || axisLabel.enabled || step.enabled || labelStep.enabled;
170
+ var gridConfigFields = {
171
+ step: step,
172
+ labelStep: labelStep
173
+ };
174
+ var axisConfigFields = {
175
+ min: min,
176
+ max: max,
177
+ axisLabel: axisLabel
178
+ };
179
+
140
180
  var onIncludeAxes = function onIncludeAxes(includeAxes) {
141
181
  var noAxesConfig = function noAxesConfig(type) {
142
182
  var axis = type === 'domain' ? domain : range;
@@ -176,7 +216,7 @@ var GridSetup = function GridSetup(props) {
176
216
  };
177
217
 
178
218
  var onSizeChanged = function onSizeChanged(key, value) {
179
- var graph = _objectSpread(_objectSpread({}, size), {}, _defineProperty({}, key, value));
219
+ var graph = _objectSpread(_objectSpread({}, size), {}, (0, _defineProperty2["default"])({}, key, value));
180
220
 
181
221
  if (standardGrid) {
182
222
  graph.height = value;
@@ -211,6 +251,8 @@ var GridSetup = function GridSetup(props) {
211
251
  className: classes.rowView
212
252
  }, /*#__PURE__*/_react["default"].createElement(AxisConfig, {
213
253
  classes: classes,
254
+ displayedFields: axisConfigFields,
255
+ displayHeader: displayAxisType,
214
256
  type: "domain",
215
257
  minValue: domain.min,
216
258
  maxValue: domain.max,
@@ -219,6 +261,8 @@ var GridSetup = function GridSetup(props) {
219
261
  onChange: onDomainChanged
220
262
  }), /*#__PURE__*/_react["default"].createElement(AxisConfig, {
221
263
  classes: classes,
264
+ displayedFields: axisConfigFields,
265
+ displayHeader: displayAxisType,
222
266
  type: "range",
223
267
  minValue: range.min,
224
268
  maxValue: range.max,
@@ -226,12 +270,13 @@ var GridSetup = function GridSetup(props) {
226
270
  disabled: standardGrid,
227
271
  includeAxes: includeAxes,
228
272
  onChange: onRangeChanged
229
- })), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
273
+ })), (min.enabled || max.enabled) && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
230
274
  className: classes.text
231
- }, "If you want the axis to be visible, use a zero or negative Min Value, and a positive Max Value"), /*#__PURE__*/_react["default"].createElement("div", {
275
+ }, "If you want the axis to be visible, use a zero or negative Min Value, and a positive Max Value"), (step.enabled || labelStep.enabled) && /*#__PURE__*/_react["default"].createElement("div", {
232
276
  className: classes.rowView
233
277
  }, /*#__PURE__*/_react["default"].createElement(GridConfig, {
234
278
  classes: classes,
279
+ displayedFields: gridConfigFields,
235
280
  gridValue: domain.step,
236
281
  labelValue: domain.labelStep,
237
282
  gridValues: gridValues.domain || [],
@@ -240,16 +285,17 @@ var GridSetup = function GridSetup(props) {
240
285
  }), /*#__PURE__*/_react["default"].createElement(GridConfig, {
241
286
  classes: classes,
242
287
  disabled: standardGrid,
288
+ displayedFields: gridConfigFields,
243
289
  gridValue: range.step,
244
290
  labelValue: range.labelStep,
245
291
  gridValues: gridValues.range || [],
246
292
  labelValues: labelValues.range || [],
247
293
  onChange: onRangeChanged
248
- })), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
294
+ })), labelStep.enabled && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
249
295
  className: classes.text
250
296
  }, "For unnumbered gridlines, enter a label interval of 0"));
251
297
 
252
- var gridlinesConfig = /*#__PURE__*/_react["default"].createElement("div", {
298
+ var gridlinesConfig = max.enabled ? /*#__PURE__*/_react["default"].createElement("div", {
253
299
  className: classes.columnView
254
300
  }, /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextFieldCustom, {
255
301
  className: classes.largeTextField,
@@ -272,8 +318,7 @@ var GridSetup = function GridSetup(props) {
272
318
  onChange: function onChange(e, v) {
273
319
  return onRangeChanged('max', v);
274
320
  }
275
- }));
276
-
321
+ })) : null;
277
322
  return /*#__PURE__*/_react["default"].createElement("div", {
278
323
  className: classes.wrapper
279
324
  }, /*#__PURE__*/_react["default"].createElement(_ExpansionPanel["default"], null, /*#__PURE__*/_react["default"].createElement(_ExpansionPanelSummary["default"], {
@@ -282,11 +327,11 @@ var GridSetup = function GridSetup(props) {
282
327
  variant: "subtitle1"
283
328
  }, "Customize Grid Setup")), /*#__PURE__*/_react["default"].createElement(_ExpansionPanelDetails["default"], null, /*#__PURE__*/_react["default"].createElement("div", {
284
329
  className: classes.content
285
- }, /*#__PURE__*/_react["default"].createElement(_configUi.Toggle, {
330
+ }, includeAxesEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.Toggle, {
286
331
  label: "Include axes and labels?",
287
332
  toggle: onIncludeAxes,
288
333
  checked: includeAxes
289
- }), /*#__PURE__*/_react["default"].createElement(_configUi.Toggle, {
334
+ }), standardGridEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.Toggle, {
290
335
  label: "Constrain to standard coordinate grid?",
291
336
  toggle: onStandardGridChanged,
292
337
  checked: standardGrid
@@ -323,7 +368,7 @@ var GridSetup = function GridSetup(props) {
323
368
  GridSetup.propTypes = {
324
369
  classes: _propTypes["default"].object,
325
370
  domain: _propTypes["default"].object,
326
- dimensionsEnabled: _propTypes["default"].object,
371
+ displayedFields: _propTypes["default"].object,
327
372
  gridValues: _propTypes["default"].object,
328
373
  includeAxes: _propTypes["default"].bool,
329
374
  labelValues: _propTypes["default"].object,