@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
@@ -1,5 +1,7 @@
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
  });
@@ -9,8 +11,6 @@ var _component = _interopRequireDefault(require("./component"));
9
11
 
10
12
  var _line = require("../shared/line");
11
13
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
-
14
14
  var tool = (0, _line.lineTool)('vector', _component["default"]);
15
15
  exports.tool = tool;
16
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["tool","lineTool","Vector"],"sources":["../../../src/tools/vector/index.js"],"sourcesContent":["import Vector from './component';\nimport { lineTool } from '../shared/line';\n\nexport const tool = lineTool('vector', Vector);\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEO,IAAMA,IAAI,GAAG,IAAAC,cAAA,EAAS,QAAT,EAAmBC,qBAAnB,CAAb"}
1
+ {"version":3,"file":"index.js","names":["tool","lineTool","Vector"],"sources":["../../../src/tools/vector/index.js"],"sourcesContent":["import Vector from './component';\nimport { lineTool } from '../shared/line';\n\nexport const tool = lineTool('vector', Vector);\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEO,IAAMA,IAAI,GAAG,IAAAC,cAAA,EAAS,QAAT,EAAmBC,qBAAnB,CAAb"}
package/lib/undo-redo.js CHANGED
@@ -1,60 +1,51 @@
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
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports["default"] = exports.UndoRedo = void 0;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
-
14
- var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
11
 
16
- var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
13
 
18
- var _core = require("@material-ui/core");
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
15
 
20
- var _renderUi = require("@pie-lib/render-ui");
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
17
 
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
19
 
24
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
21
 
26
- 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); } }
22
+ var _react = _interopRequireDefault(require("react"));
27
23
 
28
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
25
 
30
- 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); }
26
+ var _classnames = _interopRequireDefault(require("classnames"));
31
27
 
32
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
28
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
33
29
 
34
- 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); }; }
30
+ var _core = require("@material-ui/core");
35
31
 
36
- 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); }
32
+ var _renderUi = require("@pie-lib/render-ui");
37
33
 
38
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
34
+ 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); }; }
39
35
 
40
36
  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; } }
41
37
 
42
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
43
-
44
- 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; }
45
-
46
38
  var UndoRedo = /*#__PURE__*/function (_React$Component) {
47
- _inherits(UndoRedo, _React$Component);
39
+ (0, _inherits2["default"])(UndoRedo, _React$Component);
48
40
 
49
41
  var _super = _createSuper(UndoRedo);
50
42
 
51
43
  function UndoRedo() {
52
- _classCallCheck(this, UndoRedo);
53
-
44
+ (0, _classCallCheck2["default"])(this, UndoRedo);
54
45
  return _super.apply(this, arguments);
55
46
  }
56
47
 
57
- _createClass(UndoRedo, [{
48
+ (0, _createClass2["default"])(UndoRedo, [{
58
49
  key: "render",
59
50
  value: function render() {
60
51
  var _this$props = this.props,
@@ -83,21 +74,18 @@ var UndoRedo = /*#__PURE__*/function (_React$Component) {
83
74
  }, "Reset"));
84
75
  }
85
76
  }]);
86
-
87
77
  return UndoRedo;
88
78
  }(_react["default"].Component);
89
79
 
90
80
  exports.UndoRedo = UndoRedo;
91
-
92
- _defineProperty(UndoRedo, "propTypes", {
81
+ (0, _defineProperty2["default"])(UndoRedo, "propTypes", {
93
82
  classes: _propTypes["default"].object,
94
83
  className: _propTypes["default"].string,
95
84
  onUndo: _propTypes["default"].func.isRequired,
96
85
  onRedo: _propTypes["default"].func.isRequired,
97
86
  onReset: _propTypes["default"].func.isRequired
98
87
  });
99
-
100
- _defineProperty(UndoRedo, "defaultProps", {});
88
+ (0, _defineProperty2["default"])(UndoRedo, "defaultProps", {});
101
89
 
102
90
  var styles = function styles(theme) {
103
91
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"undo-redo.js","names":["UndoRedo","props","classes","className","onUndo","onRedo","onReset","classNames","root","button","React","Component","PropTypes","object","string","func","isRequired","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit","marginRight","primary","withStyles"],"sources":["../src/undo-redo.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/render-ui';\n\nexport class UndoRedo extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n onUndo: PropTypes.func.isRequired,\n onRedo: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired\n };\n static defaultProps = {};\n render() {\n const { classes, className, onUndo, onRedo, onReset } = this.props;\n return (\n <div className={classNames(className)}>\n <Button classes={{ root: classes.button }} onClick={onUndo}>\n Undo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onRedo}>\n Redo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onReset}>\n Reset\n </Button>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n button: {\n color: color.text(),\n backgroundColor: color.background(),\n marginBottom: theme.spacing.unit / 2,\n '&:not(:last-of-type)': {\n marginRight: theme.spacing.unit / 2\n },\n '&:hover': {\n backgroundColor: color.primary()\n }\n }\n});\n\nexport default withStyles(styles)(UndoRedo);\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,Q;;;;;;;;;;;;;WASX,kBAAS;MACP,kBAAwD,KAAKC,KAA7D;MAAA,IAAQC,OAAR,eAAQA,OAAR;MAAA,IAAiBC,SAAjB,eAAiBA,SAAjB;MAAA,IAA4BC,MAA5B,eAA4BA,MAA5B;MAAA,IAAoCC,MAApC,eAAoCA,MAApC;MAAA,IAA4CC,OAA5C,eAA4CA,OAA5C;MACA,oBACE;QAAK,SAAS,EAAE,IAAAC,sBAAA,EAAWJ,SAAX;MAAhB,gBACE,gCAAC,kBAAD;QAAQ,OAAO,EAAE;UAAEK,IAAI,EAAEN,OAAO,CAACO;QAAhB,CAAjB;QAA2C,OAAO,EAAEL;MAApD,UADF,eAIE,gCAAC,kBAAD;QAAQ,OAAO,EAAE;UAAEI,IAAI,EAAEN,OAAO,CAACO;QAAhB,CAAjB;QAA2C,OAAO,EAAEJ;MAApD,UAJF,eAOE,gCAAC,kBAAD;QAAQ,OAAO,EAAE;UAAEG,IAAI,EAAEN,OAAO,CAACO;QAAhB,CAAjB;QAA2C,OAAO,EAAEH;MAApD,WAPF,CADF;IAaD;;;;EAxB2BI,iBAAA,CAAMC,S;;;;gBAAvBX,Q,eACQ;EACjBE,OAAO,EAAEU,qBAAA,CAAUC,MADF;EAEjBV,SAAS,EAAES,qBAAA,CAAUE,MAFJ;EAGjBV,MAAM,EAAEQ,qBAAA,CAAUG,IAAV,CAAeC,UAHN;EAIjBX,MAAM,EAAEO,qBAAA,CAAUG,IAAV,CAAeC,UAJN;EAKjBV,OAAO,EAAEM,qBAAA,CAAUG,IAAV,CAAeC;AALP,C;;gBADRhB,Q,kBAQW,E;;AAmBxB,IAAMiB,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;EAAA,OAAK;IACvBT,MAAM,EAAE;MACNU,KAAK,EAAEA,eAAA,CAAMC,IAAN,EADD;MAENC,eAAe,EAAEF,eAAA,CAAMG,UAAN,EAFX;MAGNC,YAAY,EAAEL,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB,CAH7B;MAIN,wBAAwB;QACtBC,WAAW,EAAER,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB;MADZ,CAJlB;MAON,WAAW;QACTJ,eAAe,EAAEF,eAAA,CAAMQ,OAAN;MADR;IAPL;EADe,CAAL;AAAA,CAApB;;eAce,IAAAC,gBAAA,EAAWX,MAAX,EAAmBjB,QAAnB,C"}
1
+ {"version":3,"file":"undo-redo.js","names":["UndoRedo","props","classes","className","onUndo","onRedo","onReset","classNames","root","button","React","Component","PropTypes","object","string","func","isRequired","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit","marginRight","primary","withStyles"],"sources":["../src/undo-redo.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/render-ui';\n\nexport class UndoRedo extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n onUndo: PropTypes.func.isRequired,\n onRedo: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired\n };\n static defaultProps = {};\n render() {\n const { classes, className, onUndo, onRedo, onReset } = this.props;\n return (\n <div className={classNames(className)}>\n <Button classes={{ root: classes.button }} onClick={onUndo}>\n Undo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onRedo}>\n Redo\n </Button>\n <Button classes={{ root: classes.button }} onClick={onReset}>\n Reset\n </Button>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n button: {\n color: color.text(),\n backgroundColor: color.background(),\n marginBottom: theme.spacing.unit / 2,\n '&:not(:last-of-type)': {\n marginRight: theme.spacing.unit / 2\n },\n '&:hover': {\n backgroundColor: color.primary()\n }\n }\n});\n\nexport default withStyles(styles)(UndoRedo);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,Q;;;;;;;;;;;;WASX,kBAAS;MACP,kBAAwD,KAAKC,KAA7D;MAAA,IAAQC,OAAR,eAAQA,OAAR;MAAA,IAAiBC,SAAjB,eAAiBA,SAAjB;MAAA,IAA4BC,MAA5B,eAA4BA,MAA5B;MAAA,IAAoCC,MAApC,eAAoCA,MAApC;MAAA,IAA4CC,OAA5C,eAA4CA,OAA5C;MACA,oBACE;QAAK,SAAS,EAAE,IAAAC,sBAAA,EAAWJ,SAAX;MAAhB,gBACE,gCAAC,kBAAD;QAAQ,OAAO,EAAE;UAAEK,IAAI,EAAEN,OAAO,CAACO;QAAhB,CAAjB;QAA2C,OAAO,EAAEL;MAApD,UADF,eAIE,gCAAC,kBAAD;QAAQ,OAAO,EAAE;UAAEI,IAAI,EAAEN,OAAO,CAACO;QAAhB,CAAjB;QAA2C,OAAO,EAAEJ;MAApD,UAJF,eAOE,gCAAC,kBAAD;QAAQ,OAAO,EAAE;UAAEG,IAAI,EAAEN,OAAO,CAACO;QAAhB,CAAjB;QAA2C,OAAO,EAAEH;MAApD,WAPF,CADF;IAaD;;;EAxB2BI,iBAAA,CAAMC,S;;;iCAAvBX,Q,eACQ;EACjBE,OAAO,EAAEU,qBAAA,CAAUC,MADF;EAEjBV,SAAS,EAAES,qBAAA,CAAUE,MAFJ;EAGjBV,MAAM,EAAEQ,qBAAA,CAAUG,IAAV,CAAeC,UAHN;EAIjBX,MAAM,EAAEO,qBAAA,CAAUG,IAAV,CAAeC,UAJN;EAKjBV,OAAO,EAAEM,qBAAA,CAAUG,IAAV,CAAeC;AALP,C;iCADRhB,Q,kBAQW,E;;AAmBxB,IAAMiB,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;EAAA,OAAK;IACvBT,MAAM,EAAE;MACNU,KAAK,EAAEA,eAAA,CAAMC,IAAN,EADD;MAENC,eAAe,EAAEF,eAAA,CAAMG,UAAN,EAFX;MAGNC,YAAY,EAAEL,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB,CAH7B;MAIN,wBAAwB;QACtBC,WAAW,EAAER,KAAK,CAACM,OAAN,CAAcC,IAAd,GAAqB;MADZ,CAJlB;MAON,WAAW;QACTJ,eAAe,EAAEF,eAAA,CAAMQ,OAAN;MADR;IAPL;EADe,CAAL;AAAA,CAApB;;eAce,IAAAC,gBAAA,EAAWX,MAAX,EAAmBjB,QAAnB,C"}
@@ -1,27 +1,19 @@
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.useDebounce = void 0;
7
9
 
8
- var _react = require("react");
9
-
10
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
11
-
12
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
11
 
14
- 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); }
15
-
16
- 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; }
17
-
18
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
19
-
20
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
+ var _react = require("react");
21
13
 
22
14
  var useDebounce = function useDebounce(value, delay) {
23
15
  var _useState = (0, _react.useState)(value),
24
- _useState2 = _slicedToArray(_useState, 2),
16
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
25
17
  debouncedValue = _useState2[0],
26
18
  setDebouncedValue = _useState2[1];
27
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"use-debounce.js","names":["useDebounce","value","delay","useState","debouncedValue","setDebouncedValue","useEffect","handler","setTimeout","clearTimeout"],"sources":["../src/use-debounce.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nexport const useDebounce = (value, delay) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n return () => clearTimeout(handler);\n }, [value]);\n return debouncedValue;\n};\n"],"mappings":";;;;;;;AAAA;;;;;;;;;;;;;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAQC,KAAR,EAAkB;EAC3C,gBAA4C,IAAAC,eAAA,EAASF,KAAT,CAA5C;EAAA;EAAA,IAAOG,cAAP;EAAA,IAAuBC,iBAAvB;;EAEA,IAAAC,gBAAA,EAAU,YAAM;IACd,IAAMC,OAAO,GAAGC,UAAU,CAAC,YAAM;MAC/BH,iBAAiB,CAACJ,KAAD,CAAjB;IACD,CAFyB,EAEvBC,KAFuB,CAA1B;IAGA,OAAO;MAAA,OAAMO,YAAY,CAACF,OAAD,CAAlB;IAAA,CAAP;EACD,CALD,EAKG,CAACN,KAAD,CALH;EAMA,OAAOG,cAAP;AACD,CAVM"}
1
+ {"version":3,"file":"use-debounce.js","names":["useDebounce","value","delay","useState","debouncedValue","setDebouncedValue","useEffect","handler","setTimeout","clearTimeout"],"sources":["../src/use-debounce.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nexport const useDebounce = (value, delay) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n return () => clearTimeout(handler);\n }, [value]);\n return debouncedValue;\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAQC,KAAR,EAAkB;EAC3C,gBAA4C,IAAAC,eAAA,EAASF,KAAT,CAA5C;EAAA;EAAA,IAAOG,cAAP;EAAA,IAAuBC,iBAAvB;;EAEA,IAAAC,gBAAA,EAAU,YAAM;IACd,IAAMC,OAAO,GAAGC,UAAU,CAAC,YAAM;MAC/BH,iBAAiB,CAACJ,KAAD,CAAjB;IACD,CAFyB,EAEvBC,KAFuB,CAA1B;IAGA,OAAO;MAAA,OAAMO,YAAY,CAACF,OAAD,CAAlB;IAAA,CAAP;EACD,CALD,EAKG,CAACN,KAAD,CALH;EAMA,OAAOG,cAAP;AACD,CAVM"}
package/lib/utils.js CHANGED
@@ -1,5 +1,7 @@
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
  });
@@ -19,8 +21,6 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
19
21
 
20
22
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
21
23
 
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
-
24
24
  var tickCount = _plot.utils.tickCount;
25
25
  exports.tickCount = tickCount;
26
26
  var bounds = _plot.utils.bounds;
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["tickCount","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","label","isEmpty","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","head","area","left","x","top","y","bottom","right","tail","reduce","p","lineToArea","from","to","pointsToArea","invariant","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","domain","range","getRightestPoints","sortedPoints","cloneDeep","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints","getDistanceBetweenTicks","axis","size","nbOfTicks","thinnerShapesNeeded","width","height","getAdjustedGraphLimits","domainTicksDistance","rangeTicksDistance","domainPadding","rangePadding","getDistanceBetweenTwoPoints","sqrt","sortPoints","array","checkCollinearity","c","isSameLine","markA","markB","isSameCircle","root","edge","isDuplicatedMark","mark","marks","oldMark","type","building","filteredMarks","m","index","findIndex","splice","duplicated","find"],"sources":["../src/utils.js"],"sourcesContent":["import head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = prop => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n\n tickVal = Math.round(prop.step * 10000) / 10000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter(tV => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = label => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = label => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = longestWord => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = points => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return (\n isEqual(graphProps.domain, nextGraphProps.domain) &&\n isEqual(graphProps.range, nextGraphProps.range)\n );\n};\n\nexport const getRightestPoints = points => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2\n});\n\nexport const roundNumber = number => parseFloat(number.toFixed(4));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y)\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y)\n }\n );\n\nconst getDistanceBetweenTicks = (axis, size) => {\n const { min, max, step } = axis;\n const nbOfTicks = (max - min) / step;\n\n return size / nbOfTicks;\n};\n\nexport const thinnerShapesNeeded = graphProps => {\n const {\n domain,\n range,\n size: { width, height }\n } = graphProps;\n\n // 14 is the default width of a point\n return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;\n};\n\nexport const getAdjustedGraphLimits = graphProps => {\n const {\n domain,\n range,\n size: { width, height }\n } = graphProps;\n const domainTicksDistance = getDistanceBetweenTicks(domain, width);\n const rangeTicksDistance = getDistanceBetweenTicks(range, height);\n\n // 15 is the distance required for the arrow to extend the graph\n const domainPadding = domain.step / (domainTicksDistance / 15);\n const rangePadding = range.step / (rangeTicksDistance / 15);\n\n return {\n domain: {\n min: domain.min - domainPadding,\n max: domain.max + domainPadding\n },\n range: {\n min: range.min - rangePadding,\n max: range.max + rangePadding\n }\n };\n};\n\nexport const getDistanceBetweenTwoPoints = (a, b) =>\n Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));\n\nconst sortPoints = array => (array || []).sort((a, b) => a.x - b.x || a.y - b.y);\n\n// check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)\nconst checkCollinearity = (a, b, c) => (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);\n\n// 2 lines are overlapping if all 4 points are collinear\nconst isSameLine = (markA, markB) =>\n checkCollinearity(markA.from, markB.from, markB.to) &&\n checkCollinearity(markA.to, markB.from, markB.to);\n\nconst isSameCircle = (markA, markB) =>\n equalPoints(markA.root, markB.root) &&\n getDistanceBetweenTwoPoints(markB.root, markB.edge) ===\n getDistanceBetweenTwoPoints(markA.root, markA.edge);\n\nexport const isDuplicatedMark = (mark, marks, oldMark) => {\n const { type, building } = mark;\n\n if (building) {\n return false;\n }\n\n const filteredMarks = (marks || []).filter(m => m.type === type && !m.building);\n const index = filteredMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index !== -1) {\n filteredMarks.splice(index, 1);\n }\n\n const duplicated = filteredMarks.find(m => {\n if (type === 'circle' || type === 'parabola' || type === 'sine') {\n const { root, edge } = mark;\n\n return (\n (equalPoints(root, m.root) && equalPoints(edge, m.edge)) ||\n (type === 'circle' && isSameCircle(m, mark))\n );\n } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {\n const { from, to } = mark;\n\n return (\n (equalPoints(from, m.from) && equalPoints(to, m.to)) ||\n (equalPoints(from, m.to) && equalPoints(to, m.from)) ||\n (type === 'line' && isSameLine(m, mark))\n );\n } else if (type === 'polygon') {\n return isEqual(sortPoints(cloneDeep(mark.points)), sortPoints(cloneDeep(m.points)));\n } else if (type === 'point') {\n return equalPoints(m, mark);\n }\n });\n\n return !!duplicated;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["tickCount","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","label","isEmpty","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","head","area","left","x","top","y","bottom","right","tail","reduce","p","lineToArea","from","to","pointsToArea","invariant","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","domain","range","getRightestPoints","sortedPoints","cloneDeep","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints","getDistanceBetweenTicks","axis","size","nbOfTicks","thinnerShapesNeeded","width","height","getAdjustedGraphLimits","domainTicksDistance","rangeTicksDistance","domainPadding","rangePadding","getDistanceBetweenTwoPoints","sqrt","sortPoints","array","checkCollinearity","c","isSameLine","markA","markB","isSameCircle","root","edge","isDuplicatedMark","mark","marks","oldMark","type","building","filteredMarks","m","index","findIndex","splice","duplicated","find"],"sources":["../src/utils.js"],"sourcesContent":["import head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = prop => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n\n tickVal = Math.round(prop.step * 10000) / 10000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter(tV => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = label => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = label => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = longestWord => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = points => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return (\n isEqual(graphProps.domain, nextGraphProps.domain) &&\n isEqual(graphProps.range, nextGraphProps.range)\n );\n};\n\nexport const getRightestPoints = points => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2\n});\n\nexport const roundNumber = number => parseFloat(number.toFixed(4));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y)\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y)\n }\n );\n\nconst getDistanceBetweenTicks = (axis, size) => {\n const { min, max, step } = axis;\n const nbOfTicks = (max - min) / step;\n\n return size / nbOfTicks;\n};\n\nexport const thinnerShapesNeeded = graphProps => {\n const {\n domain,\n range,\n size: { width, height }\n } = graphProps;\n\n // 14 is the default width of a point\n return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;\n};\n\nexport const getAdjustedGraphLimits = graphProps => {\n const {\n domain,\n range,\n size: { width, height }\n } = graphProps;\n const domainTicksDistance = getDistanceBetweenTicks(domain, width);\n const rangeTicksDistance = getDistanceBetweenTicks(range, height);\n\n // 15 is the distance required for the arrow to extend the graph\n const domainPadding = domain.step / (domainTicksDistance / 15);\n const rangePadding = range.step / (rangeTicksDistance / 15);\n\n return {\n domain: {\n min: domain.min - domainPadding,\n max: domain.max + domainPadding\n },\n range: {\n min: range.min - rangePadding,\n max: range.max + rangePadding\n }\n };\n};\n\nexport const getDistanceBetweenTwoPoints = (a, b) =>\n Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));\n\nconst sortPoints = array => (array || []).sort((a, b) => a.x - b.x || a.y - b.y);\n\n// check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)\nconst checkCollinearity = (a, b, c) => (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);\n\n// 2 lines are overlapping if all 4 points are collinear\nconst isSameLine = (markA, markB) =>\n checkCollinearity(markA.from, markB.from, markB.to) &&\n checkCollinearity(markA.to, markB.from, markB.to);\n\nconst isSameCircle = (markA, markB) =>\n equalPoints(markA.root, markB.root) &&\n getDistanceBetweenTwoPoints(markB.root, markB.edge) ===\n getDistanceBetweenTwoPoints(markA.root, markA.edge);\n\nexport const isDuplicatedMark = (mark, marks, oldMark) => {\n const { type, building } = mark;\n\n if (building) {\n return false;\n }\n\n const filteredMarks = (marks || []).filter(m => m.type === type && !m.building);\n const index = filteredMarks.findIndex(m => isEqual(m, oldMark));\n\n if (index !== -1) {\n filteredMarks.splice(index, 1);\n }\n\n const duplicated = filteredMarks.find(m => {\n if (type === 'circle' || type === 'parabola' || type === 'sine') {\n const { root, edge } = mark;\n\n return (\n (equalPoints(root, m.root) && equalPoints(edge, m.edge)) ||\n (type === 'circle' && isSameCircle(m, mark))\n );\n } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {\n const { from, to } = mark;\n\n return (\n (equalPoints(from, m.from) && equalPoints(to, m.to)) ||\n (equalPoints(from, m.to) && equalPoints(to, m.from)) ||\n (type === 'line' && isSameLine(m, mark))\n );\n } else if (type === 'polygon') {\n return isEqual(sortPoints(cloneDeep(mark.points)), sortPoints(cloneDeep(m.points)));\n } else if (type === 'point') {\n return equalPoints(m, mark);\n }\n });\n\n return !!duplicated;\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.4.3-next.350+b185c466",
6
+ "version": "2.4.3-next.406+228a661c",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -20,7 +20,7 @@
20
20
  "@material-ui/core": "^3.8.3",
21
21
  "@pie-lib/graphing-utils": "^1.1.20",
22
22
  "@pie-lib/plot": "^2.2.0",
23
- "@pie-lib/render-ui": "^4.12.8",
23
+ "@pie-lib/render-ui": "^4.12.1-next.406+228a661c",
24
24
  "@vx/axis": "^0.0.189",
25
25
  "@vx/clip-path": "^0.0.189",
26
26
  "@vx/event": "^0.0.189",
@@ -43,6 +43,6 @@
43
43
  "peerDependencies": {
44
44
  "react": "^16.8.1"
45
45
  },
46
- "gitHead": "b185c466fab76384eca91a7edc4d9f823cca6638",
46
+ "gitHead": "228a661c685a881574451ea70b3c8a45b7ce03f2",
47
47
  "scripts": {}
48
48
  }
@@ -10,6 +10,13 @@ import ToolMenu from './tool-menu';
10
10
  import Graph, { graphPropTypes } from './graph';
11
11
  import UndoRedo from './undo-redo';
12
12
  import { allTools, toolsArr } from './tools';
13
+ import {
14
+ ExpansionPanel,
15
+ ExpansionPanelDetails,
16
+ ExpansionPanelSummary,
17
+ Typography
18
+ } from '@material-ui/core';
19
+ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
13
20
 
14
21
  export const setToolbarAvailability = toolbarTools =>
15
22
  toolsArr.map(tA => ({ ...tA, toolbar: !!toolbarTools.find(t => t === tA.type) })) || [];
@@ -27,6 +34,26 @@ export const filterByVisibleToolTypes = (toolbarTools, marks) =>
27
34
 
28
35
  const getDefaultCurrentTool = toolType => toolsArr.find(tool => tool.type === toolType) || null;
29
36
 
37
+ const Collapsible = ({ classes, children, title }) => (
38
+ <ExpansionPanel
39
+ elevation={0}
40
+ className={classes.expansionPanel}
41
+ disabledGutters={true}
42
+ square={true}
43
+ >
44
+ <ExpansionPanelSummary
45
+ classes={{
46
+ root: classes.summaryRoot,
47
+ content: classes.summaryContent
48
+ }}
49
+ expandIcon={<ExpandMoreIcon />}
50
+ >
51
+ <Typography variant="subheading">{title}</Typography>
52
+ </ExpansionPanelSummary>
53
+ <ExpansionPanelDetails className={classes.details}>{children}</ExpansionPanelDetails>
54
+ </ExpansionPanel>
55
+ );
56
+
30
57
  export class GraphWithControls extends React.Component {
31
58
  static propTypes = {
32
59
  ...graphPropTypes,
@@ -36,7 +63,11 @@ export class GraphWithControls extends React.Component {
36
63
  toolbarTools: PropTypes.arrayOf(PropTypes.string) // array of tool types that have to be displayed in the toolbar, same shape as 'allTools'
37
64
  };
38
65
 
39
- static defaultProps = { toolbarTools: [] };
66
+ static defaultProps = {
67
+ collapsibleToolbar: false,
68
+ collapsibleToolbarTitle: '',
69
+ toolbarTools: []
70
+ };
40
71
 
41
72
  constructor(props) {
42
73
  super(props);
@@ -64,12 +95,13 @@ export class GraphWithControls extends React.Component {
64
95
 
65
96
  render() {
66
97
  let { currentTool, labelModeEnabled } = this.state;
67
-
68
98
  const {
69
99
  axesSettings,
70
100
  classes,
71
101
  className,
72
102
  coordinatesOnHover,
103
+ collapsibleToolbar,
104
+ collapsibleToolbarTitle,
73
105
  disabled,
74
106
  domain,
75
107
  labels,
@@ -81,7 +113,6 @@ export class GraphWithControls extends React.Component {
81
113
  size,
82
114
  title
83
115
  } = this.props;
84
-
85
116
  let { backgroundMarks, marks, toolbarTools } = this.props;
86
117
 
87
118
  // make sure only valid tool types are kept (string) and without duplicates
@@ -100,19 +131,31 @@ export class GraphWithControls extends React.Component {
100
131
  currentTool = getAvailableTool(tools);
101
132
  }
102
133
 
134
+ const graphActions = (
135
+ <React.Fragment>
136
+ <ToolMenu
137
+ currentToolType={currentTool && currentTool.type}
138
+ disabled={!!disabled}
139
+ labelModeEnabled={labelModeEnabled}
140
+ onChange={tool => this.changeCurrentTool(tool, tools)}
141
+ onToggleLabelMode={this.toggleLabelMode}
142
+ toolbarTools={toolbarTools}
143
+ />
144
+
145
+ {!disabled && <UndoRedo onUndo={onUndo} onRedo={onRedo} onReset={onReset} />}
146
+ </React.Fragment>
147
+ );
148
+
103
149
  return (
104
150
  <div className={classNames(classes.graphWithControls, className)}>
105
151
  <div className={classes.controls}>
106
- <ToolMenu
107
- currentToolType={currentTool && currentTool.type}
108
- disabled={!!disabled}
109
- labelModeEnabled={labelModeEnabled}
110
- onChange={tool => this.changeCurrentTool(tool, tools)}
111
- onToggleLabelMode={this.toggleLabelMode}
112
- toolbarTools={toolbarTools}
113
- />
114
-
115
- {!disabled && <UndoRedo onUndo={onUndo} onRedo={onRedo} onReset={onReset} />}
152
+ {collapsibleToolbar ? (
153
+ <Collapsible classes={classes} title={collapsibleToolbarTitle}>
154
+ {graphActions}
155
+ </Collapsible>
156
+ ) : (
157
+ graphActions
158
+ )}
116
159
  </div>
117
160
 
118
161
  <div ref={r => (this.labelNode = r)} />
@@ -153,6 +196,20 @@ const styles = theme => ({
153
196
  '& button': {
154
197
  fontSize: theme.typography.fontSize
155
198
  }
199
+ },
200
+ expansionPanel: {
201
+ backgroundColor: color.primaryLight()
202
+ },
203
+ summaryRoot: {
204
+ padding: `0 ${theme.spacing.unit}px`,
205
+ minHeight: '32px !important'
206
+ },
207
+ summaryContent: {
208
+ margin: '4px 0 !important'
209
+ },
210
+ details: {
211
+ padding: 0,
212
+ marginTop: theme.spacing.unit
156
213
  }
157
214
  });
158
215
 
package/src/graph.jsx CHANGED
@@ -18,6 +18,8 @@ export const graphPropTypes = {
18
18
  axesSettings: PropTypes.shape(AxisPropTypes),
19
19
  backgroundMarks: PropTypes.array,
20
20
  className: PropTypes.string,
21
+ collapsibleToolbar: PropTypes.bool,
22
+ collapsibleToolbarTitle: PropTypes.string,
21
23
  domain: types.DomainType,
22
24
  labels: PropTypes.shape(LabelType),
23
25
  labelModeEnabled: PropTypes.bool,