@pie-lib/graphing 3.1.0-next.0 → 3.1.0-next.2

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 (162) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/package.json +8 -8
  3. package/lib/__tests__/graph-with-controls.test.js +0 -226
  4. package/lib/__tests__/graph.test.js +0 -187
  5. package/lib/__tests__/grid.test.js +0 -29
  6. package/lib/__tests__/labels.test.js +0 -61
  7. package/lib/__tests__/mark-label.test.js +0 -133
  8. package/lib/__tests__/toggle-bar.test.js +0 -150
  9. package/lib/__tests__/tool-menu.test.js +0 -101
  10. package/lib/__tests__/undo-redo.test.js +0 -31
  11. package/lib/__tests__/use-debounce.test.js +0 -24
  12. package/lib/__tests__/utils.js +0 -70
  13. package/lib/__tests__/utils.test.js +0 -123
  14. package/lib/axis/__tests__/arrow.test.js +0 -60
  15. package/lib/axis/__tests__/axes.test.js +0 -195
  16. package/lib/axis/arrow.js +0 -79
  17. package/lib/axis/arrow.js.map +0 -1
  18. package/lib/axis/axes.js +0 -327
  19. package/lib/axis/axes.js.map +0 -1
  20. package/lib/axis/index.js +0 -21
  21. package/lib/axis/index.js.map +0 -1
  22. package/lib/bg.js +0 -111
  23. package/lib/bg.js.map +0 -1
  24. package/lib/container/actions.js +0 -18
  25. package/lib/container/actions.js.map +0 -1
  26. package/lib/container/index.js +0 -118
  27. package/lib/container/index.js.map +0 -1
  28. package/lib/container/marks.js +0 -22
  29. package/lib/container/marks.js.map +0 -1
  30. package/lib/container/middleware.js +0 -19
  31. package/lib/container/middleware.js.map +0 -1
  32. package/lib/container/reducer.js +0 -18
  33. package/lib/container/reducer.js.map +0 -1
  34. package/lib/coordinates-label.js +0 -79
  35. package/lib/coordinates-label.js.map +0 -1
  36. package/lib/graph-with-controls.js +0 -295
  37. package/lib/graph-with-controls.js.map +0 -1
  38. package/lib/graph.js +0 -314
  39. package/lib/graph.js.map +0 -1
  40. package/lib/grid-setup.js +0 -406
  41. package/lib/grid-setup.js.map +0 -1
  42. package/lib/grid.js +0 -131
  43. package/lib/grid.js.map +0 -1
  44. package/lib/index.js +0 -47
  45. package/lib/index.js.map +0 -1
  46. package/lib/key-legend.js +0 -201
  47. package/lib/key-legend.js.map +0 -1
  48. package/lib/label-svg-icon.js +0 -50
  49. package/lib/label-svg-icon.js.map +0 -1
  50. package/lib/labels.js +0 -243
  51. package/lib/labels.js.map +0 -1
  52. package/lib/mark-label.js +0 -278
  53. package/lib/mark-label.js.map +0 -1
  54. package/lib/toggle-bar.js +0 -248
  55. package/lib/toggle-bar.js.map +0 -1
  56. package/lib/tool-menu.js +0 -78
  57. package/lib/tool-menu.js.map +0 -1
  58. package/lib/tools/absolute/__tests__/component.test.js +0 -67
  59. package/lib/tools/absolute/component.js +0 -29
  60. package/lib/tools/absolute/component.js.map +0 -1
  61. package/lib/tools/absolute/index.js +0 -50
  62. package/lib/tools/absolute/index.js.map +0 -1
  63. package/lib/tools/circle/__tests__/bg-circle.test.js +0 -33
  64. package/lib/tools/circle/__tests__/component.test.js +0 -68
  65. package/lib/tools/circle/bg-circle.js +0 -123
  66. package/lib/tools/circle/bg-circle.js.map +0 -1
  67. package/lib/tools/circle/component.js +0 -319
  68. package/lib/tools/circle/component.js.map +0 -1
  69. package/lib/tools/circle/index.js +0 -41
  70. package/lib/tools/circle/index.js.map +0 -1
  71. package/lib/tools/exponential/__tests__/component.test.js +0 -66
  72. package/lib/tools/exponential/component.js +0 -28
  73. package/lib/tools/exponential/component.js.map +0 -1
  74. package/lib/tools/exponential/index.js +0 -56
  75. package/lib/tools/exponential/index.js.map +0 -1
  76. package/lib/tools/index.js +0 -86
  77. package/lib/tools/index.js.map +0 -1
  78. package/lib/tools/line/__tests__/component.test.js +0 -45
  79. package/lib/tools/line/component.js +0 -82
  80. package/lib/tools/line/component.js.map +0 -1
  81. package/lib/tools/line/index.js +0 -11
  82. package/lib/tools/line/index.js.map +0 -1
  83. package/lib/tools/parabola/__tests__/component.test.js +0 -66
  84. package/lib/tools/parabola/component.js +0 -28
  85. package/lib/tools/parabola/component.js.map +0 -1
  86. package/lib/tools/parabola/index.js +0 -50
  87. package/lib/tools/parabola/index.js.map +0 -1
  88. package/lib/tools/point/__tests__/component.test.js +0 -50
  89. package/lib/tools/point/component.js +0 -139
  90. package/lib/tools/point/component.js.map +0 -1
  91. package/lib/tools/point/index.js +0 -24
  92. package/lib/tools/point/index.js.map +0 -1
  93. package/lib/tools/polygon/__tests__/component.test.js +0 -85
  94. package/lib/tools/polygon/__tests__/index.test.js +0 -92
  95. package/lib/tools/polygon/__tests__/line.test.js +0 -29
  96. package/lib/tools/polygon/__tests__/polygon.test.js +0 -59
  97. package/lib/tools/polygon/component.js +0 -417
  98. package/lib/tools/polygon/component.js.map +0 -1
  99. package/lib/tools/polygon/index.js +0 -89
  100. package/lib/tools/polygon/index.js.map +0 -1
  101. package/lib/tools/polygon/line.js +0 -114
  102. package/lib/tools/polygon/line.js.map +0 -1
  103. package/lib/tools/polygon/polygon.js +0 -132
  104. package/lib/tools/polygon/polygon.js.map +0 -1
  105. package/lib/tools/ray/__tests__/component.test.js +0 -35
  106. package/lib/tools/ray/component.js +0 -83
  107. package/lib/tools/ray/component.js.map +0 -1
  108. package/lib/tools/ray/index.js +0 -11
  109. package/lib/tools/ray/index.js.map +0 -1
  110. package/lib/tools/segment/__tests__/component.test.js +0 -35
  111. package/lib/tools/segment/component.js +0 -57
  112. package/lib/tools/segment/component.js.map +0 -1
  113. package/lib/tools/segment/index.js +0 -11
  114. package/lib/tools/segment/index.js.map +0 -1
  115. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  116. package/lib/tools/shared/arrow-head.js +0 -111
  117. package/lib/tools/shared/arrow-head.js.map +0 -1
  118. package/lib/tools/shared/icons/CorrectSVG.js +0 -40
  119. package/lib/tools/shared/icons/CorrectSVG.js.map +0 -1
  120. package/lib/tools/shared/icons/IncorrectSVG.js +0 -40
  121. package/lib/tools/shared/icons/IncorrectSVG.js.map +0 -1
  122. package/lib/tools/shared/icons/MissingSVG.js +0 -39
  123. package/lib/tools/shared/icons/MissingSVG.js.map +0 -1
  124. package/lib/tools/shared/line/__tests__/index.test.js +0 -124
  125. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -62
  126. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -91
  127. package/lib/tools/shared/line/index.js +0 -546
  128. package/lib/tools/shared/line/index.js.map +0 -1
  129. package/lib/tools/shared/line/line-path.js +0 -120
  130. package/lib/tools/shared/line/line-path.js.map +0 -1
  131. package/lib/tools/shared/line/with-root-edge.js +0 -121
  132. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  133. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  134. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  135. package/lib/tools/shared/point/arrow-point.js +0 -72
  136. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  137. package/lib/tools/shared/point/arrow.js +0 -67
  138. package/lib/tools/shared/point/arrow.js.map +0 -1
  139. package/lib/tools/shared/point/base-point.js +0 -157
  140. package/lib/tools/shared/point/base-point.js.map +0 -1
  141. package/lib/tools/shared/point/index.js +0 -62
  142. package/lib/tools/shared/point/index.js.map +0 -1
  143. package/lib/tools/shared/styles.js +0 -30
  144. package/lib/tools/shared/styles.js.map +0 -1
  145. package/lib/tools/shared/types.js +0 -16
  146. package/lib/tools/shared/types.js.map +0 -1
  147. package/lib/tools/sine/__tests__/component.test.js +0 -72
  148. package/lib/tools/sine/component.js +0 -40
  149. package/lib/tools/sine/component.js.map +0 -1
  150. package/lib/tools/sine/index.js +0 -50
  151. package/lib/tools/sine/index.js.map +0 -1
  152. package/lib/tools/vector/__tests__/component.test.js +0 -32
  153. package/lib/tools/vector/component.js +0 -68
  154. package/lib/tools/vector/component.js.map +0 -1
  155. package/lib/tools/vector/index.js +0 -11
  156. package/lib/tools/vector/index.js.map +0 -1
  157. package/lib/undo-redo.js +0 -83
  158. package/lib/undo-redo.js.map +0 -1
  159. package/lib/use-debounce.js +0 -25
  160. package/lib/use-debounce.js.map +0 -1
  161. package/lib/utils.js +0 -230
  162. package/lib/utils.js.map +0 -1
package/lib/undo-redo.js DELETED
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = exports.UndoRedo = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
- var _react = _interopRequireDefault(require("react"));
15
- var _propTypes = _interopRequireDefault(require("prop-types"));
16
- var _classnames = _interopRequireDefault(require("classnames"));
17
- var _Button = _interopRequireDefault(require("@mui/material/Button"));
18
- var _styles = require("@mui/material/styles");
19
- var _renderUi = require("@pie-lib/render-ui");
20
- var _translator = _interopRequireDefault(require("@pie-lib/translator"));
21
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
22
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
23
- var translator = _translator["default"].translator;
24
- var StyledButton = (0, _styles.styled)(_Button["default"])(function (_ref) {
25
- var theme = _ref.theme;
26
- return {
27
- color: _renderUi.color.text(),
28
- fontWeight: 'bold',
29
- marginBottom: theme.spacing(0.5),
30
- '&:not(:last-of-type)': {
31
- marginRight: theme.spacing(0.5)
32
- }
33
- };
34
- });
35
- var UndoRedo = exports.UndoRedo = /*#__PURE__*/function (_React$Component) {
36
- function UndoRedo() {
37
- (0, _classCallCheck2["default"])(this, UndoRedo);
38
- return _callSuper(this, UndoRedo, arguments);
39
- }
40
- (0, _inherits2["default"])(UndoRedo, _React$Component);
41
- return (0, _createClass2["default"])(UndoRedo, [{
42
- key: "render",
43
- value: function render() {
44
- var _this$props = this.props,
45
- className = _this$props.className,
46
- onUndo = _this$props.onUndo,
47
- onRedo = _this$props.onRedo,
48
- onReset = _this$props.onReset,
49
- language = _this$props.language;
50
- return /*#__PURE__*/_react["default"].createElement("div", {
51
- className: (0, _classnames["default"])(className)
52
- }, /*#__PURE__*/_react["default"].createElement(StyledButton, {
53
- onClick: function onClick() {
54
- return onUndo(true);
55
- }
56
- }, translator.t('common:undo', {
57
- lng: language
58
- })), /*#__PURE__*/_react["default"].createElement(StyledButton, {
59
- onClick: function onClick() {
60
- return onRedo(true);
61
- }
62
- }, translator.t('graphing.redo', {
63
- lng: language
64
- })), /*#__PURE__*/_react["default"].createElement(StyledButton, {
65
- onClick: function onClick() {
66
- return onReset();
67
- }
68
- }, translator.t('graphing.reset', {
69
- lng: language
70
- })));
71
- }
72
- }]);
73
- }(_react["default"].Component);
74
- (0, _defineProperty2["default"])(UndoRedo, "propTypes", {
75
- className: _propTypes["default"].string,
76
- onUndo: _propTypes["default"].func.isRequired,
77
- onRedo: _propTypes["default"].func.isRequired,
78
- onReset: _propTypes["default"].func.isRequired,
79
- language: _propTypes["default"].string
80
- });
81
- (0, _defineProperty2["default"])(UndoRedo, "defaultProps", {});
82
- var _default = exports["default"] = UndoRedo;
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfY2xhc3NuYW1lcyIsIl9CdXR0b24iLCJfc3R5bGVzIiwiX3JlbmRlclVpIiwiX3RyYW5zbGF0b3IiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsInRyYW5zbGF0b3IiLCJUcmFuc2xhdG9yIiwiU3R5bGVkQnV0dG9uIiwic3R5bGVkIiwiQnV0dG9uIiwiX3JlZiIsInRoZW1lIiwiY29sb3IiLCJ0ZXh0IiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsInNwYWNpbmciLCJtYXJnaW5SaWdodCIsIlVuZG9SZWRvIiwiZXhwb3J0cyIsIl9SZWFjdCRDb21wb25lbnQiLCJfY2xhc3NDYWxsQ2hlY2syIiwiYXJndW1lbnRzIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsInJlbmRlciIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJvblVuZG8iLCJvblJlZG8iLCJvblJlc2V0IiwibGFuZ3VhZ2UiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lcyIsIm9uQ2xpY2siLCJsbmciLCJSZWFjdCIsIkNvbXBvbmVudCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwiaXNSZXF1aXJlZCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3VuZG8tcmVkby5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHsgY29sb3IgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuaW1wb3J0IFRyYW5zbGF0b3IgZnJvbSAnQHBpZS1saWIvdHJhbnNsYXRvcic7XG5cbmNvbnN0IHsgdHJhbnNsYXRvciB9ID0gVHJhbnNsYXRvcjtcblxuY29uc3QgU3R5bGVkQnV0dG9uID0gc3R5bGVkKEJ1dHRvbikoKHsgdGhlbWUgfSkgPT4gKHtcbiAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxuICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcoMC41KSxcbiAgJyY6bm90KDpsYXN0LW9mLXR5cGUpJzoge1xuICAgIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nKDAuNSksXG4gIH0sXG59KSk7XG5cbmV4cG9ydCBjbGFzcyBVbmRvUmVkbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uVW5kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblJlZG86IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBsYW5ndWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgfTtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHt9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgb25VbmRvLCBvblJlZG8sIG9uUmVzZXQsIGxhbmd1YWdlIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc05hbWUpfT5cbiAgICAgICAgPFN0eWxlZEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBvblVuZG8odHJ1ZSl9PlxuICAgICAgICAgIHt0cmFuc2xhdG9yLnQoJ2NvbW1vbjp1bmRvJywgeyBsbmc6IGxhbmd1YWdlIH0pfVxuICAgICAgICA8L1N0eWxlZEJ1dHRvbj5cbiAgICAgICAgPFN0eWxlZEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBvblJlZG8odHJ1ZSl9PlxuICAgICAgICAgIHt0cmFuc2xhdG9yLnQoJ2dyYXBoaW5nLnJlZG8nLCB7IGxuZzogbGFuZ3VhZ2UgfSl9XG4gICAgICAgIDwvU3R5bGVkQnV0dG9uPlxuICAgICAgICA8U3R5bGVkQnV0dG9uIG9uQ2xpY2s9eygpID0+IG9uUmVzZXQoKX0+XG4gICAgICAgICAge3RyYW5zbGF0b3IudCgnZ3JhcGhpbmcucmVzZXQnLCB7IGxuZzogbGFuZ3VhZ2UgfSl9XG4gICAgICAgIDwvU3R5bGVkQnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBVbmRvUmVkbztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUE2QyxTQUFBTyxXQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE9BQUFFLGdCQUFBLGFBQUFGLENBQUEsT0FBQUcsMkJBQUEsYUFBQUosQ0FBQSxF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
@@ -1 +0,0 @@
1
- {"version":3,"file":"undo-redo.js","names":["_react","_interopRequireDefault","require","_propTypes","_classnames","_Button","_styles","_renderUi","_translator","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","translator","Translator","StyledButton","styled","Button","_ref","theme","color","text","fontWeight","marginBottom","spacing","marginRight","UndoRedo","exports","_React$Component","_classCallCheck2","arguments","_inherits2","_createClass2","key","value","render","_this$props","props","className","onUndo","onRedo","onReset","language","createElement","classNames","onClick","lng","React","Component","_defineProperty2","PropTypes","string","func","isRequired","_default"],"sources":["../src/undo-redo.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport { color } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst StyledButton = styled(Button)(({ theme }) => ({\n color: color.text(),\n fontWeight: 'bold',\n marginBottom: theme.spacing(0.5),\n '&:not(:last-of-type)': {\n marginRight: theme.spacing(0.5),\n },\n}));\n\nexport class UndoRedo extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n onUndo: PropTypes.func.isRequired,\n onRedo: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired,\n language: PropTypes.string,\n };\n static defaultProps = {};\n\n render() {\n const { className, onUndo, onRedo, onReset, language } = this.props;\n return (\n <div className={classNames(className)}>\n <StyledButton onClick={() => onUndo(true)}>\n {translator.t('common:undo', { lng: language })}\n </StyledButton>\n <StyledButton onClick={() => onRedo(true)}>\n {translator.t('graphing.redo', { lng: language })}\n </StyledButton>\n <StyledButton onClick={() => onReset()}>\n {translator.t('graphing.reset', { lng: language })}\n </StyledButton>\n </div>\n );\n }\n}\n\nexport default UndoRedo;\n"],"mappings":"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","ignoreList":[]}
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useDebounce = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
- var _react = require("react");
10
- var useDebounce = exports.useDebounce = function useDebounce(value, delay) {
11
- var _useState = (0, _react.useState)(value),
12
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
13
- debouncedValue = _useState2[0],
14
- setDebouncedValue = _useState2[1];
15
- (0, _react.useEffect)(function () {
16
- var handler = setTimeout(function () {
17
- setDebouncedValue(value);
18
- }, delay);
19
- return function () {
20
- return clearTimeout(handler);
21
- };
22
- }, [value]);
23
- return debouncedValue;
24
- };
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlRGVib3VuY2UiLCJleHBvcnRzIiwidmFsdWUiLCJkZWxheSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImRlYm91bmNlZFZhbHVlIiwic2V0RGVib3VuY2VkVmFsdWUiLCJ1c2VFZmZlY3QiLCJoYW5kbGVyIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCJdLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtZGVib3VuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IHVzZURlYm91bmNlID0gKHZhbHVlLCBkZWxheSkgPT4ge1xuICBjb25zdCBbZGVib3VuY2VkVmFsdWUsIHNldERlYm91bmNlZFZhbHVlXSA9IHVzZVN0YXRlKHZhbHVlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldERlYm91bmNlZFZhbHVlKHZhbHVlKTtcbiAgICB9LCBkZWxheSk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dChoYW5kbGVyKTtcbiAgfSwgW3ZhbHVlXSk7XG4gIHJldHVybiBkZWJvdW5jZWRWYWx1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRU8sSUFBTUMsV0FBVyxHQUFBQyxPQUFBLENBQUFELFdBQUEsR0FBRyxTQUFkQSxXQUFXQSxDQUFJRSxLQUFLLEVBQUVDLEtBQUssRUFBSztFQUMzQyxJQUFBQyxTQUFBLEdBQTRDLElBQUFDLGVBQVEsRUFBQ0gsS0FBSyxDQUFDO0lBQUFJLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQXBESSxjQUFjLEdBQUFGLFVBQUE7SUFBRUcsaUJBQWlCLEdBQUFILFVBQUE7RUFFeEMsSUFBQUksZ0JBQVMsRUFBQyxZQUFNO0lBQ2QsSUFBTUMsT0FBTyxHQUFHQyxVQUFVLENBQUMsWUFBTTtNQUMvQkgsaUJBQWlCLENBQUNQLEtBQUssQ0FBQztJQUMxQixDQUFDLEVBQUVDLEtBQUssQ0FBQztJQUNULE9BQU87TUFBQSxPQUFNVSxZQUFZLENBQUNGLE9BQU8sQ0FBQztJQUFBO0VBQ3BDLENBQUMsRUFBRSxDQUFDVCxLQUFLLENBQUMsQ0FBQztFQUNYLE9BQU9NLGNBQWM7QUFDdkIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-debounce.js","names":["_react","require","useDebounce","exports","value","delay","_useState","useState","_useState2","_slicedToArray2","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,IAAAA,MAAA,GAAAC,OAAA;AAEO,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,SAAdA,WAAWA,CAAIE,KAAK,EAAEC,KAAK,EAAK;EAC3C,IAAAC,SAAA,GAA4C,IAAAC,eAAQ,EAACH,KAAK,CAAC;IAAAI,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAApDI,cAAc,GAAAF,UAAA;IAAEG,iBAAiB,GAAAH,UAAA;EAExC,IAAAI,gBAAS,EAAC,YAAM;IACd,IAAMC,OAAO,GAAGC,UAAU,CAAC,YAAM;MAC/BH,iBAAiB,CAACP,KAAK,CAAC;IAC1B,CAAC,EAAEC,KAAK,CAAC;IACT,OAAO;MAAA,OAAMU,YAAY,CAACF,OAAO,CAAC;IAAA;EACpC,CAAC,EAAE,CAACT,KAAK,CAAC,CAAC;EACX,OAAOM,cAAc;AACvB,CAAC","ignoreList":[]}
package/lib/utils.js DELETED
@@ -1,230 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.tickCount = exports.thinnerShapesNeeded = exports.sameAxes = exports.roundNumber = exports.polygonToArea = exports.pointsToArea = exports.point = exports.lineToArea = exports.isDuplicatedMark = exports.isDomainRangeEqual = exports.getTickValues = exports.getRightestPoints = exports.getMiddleOfTwoPoints = exports.getDistanceBetweenTwoPoints = exports.getAngleDeg = exports.getAdjustedGraphLimits = exports.findLongestWord = exports.equalPoints = exports.countWords = exports.bounds = exports.arrowDimensions = exports.amountToIncreaseWidth = void 0;
8
- var _head = _interopRequireDefault(require("lodash/head"));
9
- var _tail = _interopRequireDefault(require("lodash/tail"));
10
- var _plot = require("@pie-lib/plot");
11
- var _invariant = _interopRequireDefault(require("invariant"));
12
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
13
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
14
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
15
- var tickCount = exports.tickCount = _plot.utils.tickCount;
16
- var bounds = exports.bounds = _plot.utils.bounds;
17
- var point = exports.point = _plot.utils.point;
18
-
19
- //TODO: This can be removed?
20
- var getAngleDeg = exports.getAngleDeg = function getAngleDeg() {
21
- return 0;
22
- };
23
- //TODO: This can be removed?
24
- var arrowDimensions = exports.arrowDimensions = function arrowDimensions() {
25
- return 0;
26
- };
27
- var getTickValues = exports.getTickValues = function getTickValues(prop) {
28
- var tickValues = [];
29
- var tickVal = 0;
30
- while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {
31
- tickValues.push(tickVal);
32
- tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;
33
- }
34
- tickVal = Math.round(prop.step * 10000) / 10000;
35
- while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {
36
- tickValues.push(tickVal);
37
- tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;
38
- }
39
-
40
- // return only ticks that are inside the min-max interval
41
- if (tickValues) {
42
- return tickValues.filter(function (tV) {
43
- return tV >= prop.min && tV <= prop.max;
44
- });
45
- }
46
- return [];
47
- };
48
- var countWords = exports.countWords = function countWords(label) {
49
- if (label == null || (0, _isEmpty["default"])(label)) {
50
- return 1;
51
- }
52
- var words = label.split(' ');
53
- return words.length;
54
- };
55
-
56
- // findLongestWord is also used in plot
57
- var findLongestWord = exports.findLongestWord = function findLongestWord(label) {
58
- var longestWord = (label || '').replace(/<[^>]+>/g, '').split(' ').sort(function (a, b) {
59
- return b.length - a.length;
60
- });
61
- return longestWord[0].length;
62
- };
63
-
64
- // amountToIncreaseWidth is also used in plot
65
- var amountToIncreaseWidth = exports.amountToIncreaseWidth = function amountToIncreaseWidth(longestWord) {
66
- if (!longestWord) {
67
- return 0;
68
- }
69
- return longestWord * 10;
70
- };
71
- var polygonToArea = exports.polygonToArea = function polygonToArea(points) {
72
- var h = (0, _head["default"])(points);
73
- var area = {
74
- left: h.x,
75
- top: h.y,
76
- bottom: h.y,
77
- right: h.x
78
- };
79
- return (0, _tail["default"])(points).reduce(function (a, p) {
80
- a.left = Math.min(a.left, p.x);
81
- a.top = Math.max(a.top, p.y);
82
- a.bottom = Math.min(a.bottom, p.y);
83
- a.right = Math.max(a.right, p.x);
84
- return a;
85
- }, area);
86
- };
87
- var lineToArea = exports.lineToArea = function lineToArea(from, to) {
88
- return pointsToArea(from, to);
89
- };
90
- var pointsToArea = exports.pointsToArea = function pointsToArea(a, b) {
91
- (0, _invariant["default"])(!!a && !!b, 'a or b is undefined');
92
- var left = Math.min(a.x, b.x);
93
- var top = Math.max(a.y, b.y);
94
- var bottom = Math.min(a.y, b.y);
95
- var right = Math.max(a.x, b.x);
96
- return {
97
- left: left,
98
- top: top,
99
- bottom: bottom,
100
- right: right
101
- };
102
- };
103
- var isDomainRangeEqual = exports.isDomainRangeEqual = function isDomainRangeEqual(graphProps, nextGraphProps) {
104
- return (0, _isEqual["default"])(graphProps.domain, nextGraphProps.domain) && (0, _isEqual["default"])(graphProps.range, nextGraphProps.range);
105
- };
106
- var getRightestPoints = exports.getRightestPoints = function getRightestPoints(points) {
107
- var sortedPoints = (0, _cloneDeep["default"])(points);
108
- sortedPoints.sort(function (a, b) {
109
- return b.x - a.x;
110
- });
111
- return {
112
- a: sortedPoints[0],
113
- b: sortedPoints[1]
114
- };
115
- };
116
- var getMiddleOfTwoPoints = exports.getMiddleOfTwoPoints = function getMiddleOfTwoPoints(a, b) {
117
- return {
118
- x: (a.x + b.x) / 2,
119
- y: (a.y + b.y) / 2
120
- };
121
- };
122
- var roundNumber = exports.roundNumber = function roundNumber(number) {
123
- return parseFloat(number.toFixed(4));
124
- };
125
- var sameAxes = exports.sameAxes = function sameAxes(p1, p2) {
126
- return p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));
127
- };
128
- var equalPoints = exports.equalPoints = function equalPoints(p1, p2) {
129
- return p1 && p2 && (0, _isEqual["default"])({
130
- x: roundNumber(p1.x),
131
- y: roundNumber(p1.y)
132
- }, {
133
- x: roundNumber(p2.x),
134
- y: roundNumber(p2.y)
135
- });
136
- };
137
- var getDistanceBetweenTicks = function getDistanceBetweenTicks(axis, size) {
138
- var min = axis.min,
139
- max = axis.max,
140
- step = axis.step;
141
- var nbOfTicks = (max - min) / step;
142
- return size / nbOfTicks;
143
- };
144
- var thinnerShapesNeeded = exports.thinnerShapesNeeded = function thinnerShapesNeeded(graphProps) {
145
- var domain = graphProps.domain,
146
- range = graphProps.range,
147
- _graphProps$size = graphProps.size,
148
- width = _graphProps$size.width,
149
- height = _graphProps$size.height;
150
-
151
- // 14 is the default width of a point
152
- return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;
153
- };
154
- var getAdjustedGraphLimits = exports.getAdjustedGraphLimits = function getAdjustedGraphLimits(graphProps) {
155
- var domain = graphProps.domain,
156
- range = graphProps.range,
157
- _graphProps$size2 = graphProps.size,
158
- width = _graphProps$size2.width,
159
- height = _graphProps$size2.height;
160
- var domainTicksDistance = getDistanceBetweenTicks(domain, width);
161
- var rangeTicksDistance = getDistanceBetweenTicks(range, height);
162
-
163
- // 15 is the distance required for the arrow to extend the graph
164
- var domainPadding = domain.step / (domainTicksDistance / 15);
165
- var rangePadding = range.step / (rangeTicksDistance / 15);
166
- return {
167
- domain: {
168
- min: domain.min - domainPadding,
169
- max: domain.max + domainPadding
170
- },
171
- range: {
172
- min: range.min - rangePadding,
173
- max: range.max + rangePadding
174
- }
175
- };
176
- };
177
- var getDistanceBetweenTwoPoints = exports.getDistanceBetweenTwoPoints = function getDistanceBetweenTwoPoints(a, b) {
178
- return Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
179
- };
180
- var sortPoints = function sortPoints(array) {
181
- return (array || []).sort(function (a, b) {
182
- return a.x - b.x || a.y - b.y;
183
- });
184
- };
185
-
186
- // check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)
187
- var checkCollinearity = function checkCollinearity(a, b, c) {
188
- return (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);
189
- };
190
-
191
- // 2 lines are overlapping if all 4 points are collinear
192
- var isSameLine = function isSameLine(markA, markB) {
193
- return checkCollinearity(markA.from, markB.from, markB.to) && checkCollinearity(markA.to, markB.from, markB.to);
194
- };
195
- var isSameCircle = function isSameCircle(markA, markB) {
196
- return equalPoints(markA.root, markB.root) && getDistanceBetweenTwoPoints(markB.root, markB.edge) === getDistanceBetweenTwoPoints(markA.root, markA.edge);
197
- };
198
- var isDuplicatedMark = exports.isDuplicatedMark = function isDuplicatedMark(mark, marks, oldMark) {
199
- var type = mark.type,
200
- building = mark.building;
201
- if (building) {
202
- return false;
203
- }
204
- var filteredMarks = (marks || []).filter(function (m) {
205
- return m.type === type && !m.building;
206
- });
207
- var index = filteredMarks.findIndex(function (m) {
208
- return (0, _isEqual["default"])(m, oldMark);
209
- });
210
- if (index !== -1) {
211
- filteredMarks.splice(index, 1);
212
- }
213
- var duplicated = filteredMarks.find(function (m) {
214
- if (type === 'circle' || type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') {
215
- var root = mark.root,
216
- edge = mark.edge;
217
- return equalPoints(root, m.root) && equalPoints(edge, m.edge) || type === 'circle' && isSameCircle(m, mark);
218
- } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {
219
- var from = mark.from,
220
- to = mark.to;
221
- return equalPoints(from, m.from) && equalPoints(to, m.to) || equalPoints(from, m.to) && equalPoints(to, m.from) || type === 'line' && isSameLine(m, mark);
222
- } else if (type === 'polygon') {
223
- return (0, _isEqual["default"])(sortPoints((0, _cloneDeep["default"])(mark.points)), sortPoints((0, _cloneDeep["default"])(m.points)));
224
- } else if (type === 'point') {
225
- return equalPoints(m, mark);
226
- }
227
- });
228
- return !!duplicated;
229
- };
230
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVhZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3RhaWwiLCJfcGxvdCIsIl9pbnZhcmlhbnQiLCJfaXNFcXVhbCIsIl9pc0VtcHR5IiwiX2Nsb25lRGVlcCIsInRpY2tDb3VudCIsImV4cG9ydHMiLCJ1dGlscyIsImJvdW5kcyIsInBvaW50IiwiZ2V0QW5nbGVEZWciLCJhcnJvd0RpbWVuc2lvbnMiLCJnZXRUaWNrVmFsdWVzIiwicHJvcCIsInRpY2tWYWx1ZXMiLCJ0aWNrVmFsIiwibWluIiwiaW5kZXhPZiIsInB1c2giLCJNYXRoIiwicm91bmQiLCJzdGVwIiwibWF4IiwiZmlsdGVyIiwidFYiLCJjb3VudFdvcmRzIiwibGFiZWwiLCJpc0VtcHR5Iiwid29yZHMiLCJzcGxpdCIsImxlbmd0aCIsImZpbmRMb25nZXN0V29yZCIsImxvbmdlc3RXb3JkIiwicmVwbGFjZSIsInNvcnQiLCJhIiwiYiIsImFtb3VudFRvSW5jcmVhc2VXaWR0aCIsInBvbHlnb25Ub0FyZWEiLCJwb2ludHMiLCJoIiwiaGVhZCIsImFyZWEiLCJsZWZ0IiwieCIsInRvcCIsInkiLCJib3R0b20iLCJyaWdodCIsInRhaWwiLCJyZWR1Y2UiLCJwIiwibGluZVRvQXJlYSIsImZyb20iLCJ0byIsInBvaW50c1RvQXJlYSIsImludmFyaWFudCIsImlzRG9tYWluUmFuZ2VFcXVhbCIsImdyYXBoUHJvcHMiLCJuZXh0R3JhcGhQcm9wcyIsImlzRXF1YWwiLCJkb21haW4iLCJyYW5nZSIsImdldFJpZ2h0ZXN0UG9pbnRzIiwic29ydGVkUG9pbnRzIiwiY2xvbmVEZWVwIiwiZ2V0TWlkZGxlT2ZUd29Qb2ludHMiLCJyb3VuZE51bWJlciIsIm51bWJlciIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwic2FtZUF4ZXMiLCJwMSIsInAyIiwiZXF1YWxQb2ludHMiLCJnZXREaXN0YW5jZUJldHdlZW5UaWNrcyIsImF4aXMiLCJzaXplIiwibmJPZlRpY2tzIiwidGhpbm5lclNoYXBlc05lZWRlZCIsIl9ncmFwaFByb3BzJHNpemUiLCJ3aWR0aCIsImhlaWdodCIsImdldEFkanVzdGVkR3JhcGhMaW1pdHMiLCJfZ3JhcGhQcm9wcyRzaXplMiIsImRvbWFpblRpY2tzRGlzdGFuY2UiLCJyYW5nZVRpY2tzRGlzdGFuY2UiLCJkb21haW5QYWRkaW5nIiwicmFuZ2VQYWRkaW5nIiwiZ2V0RGlzdGFuY2VCZXR3ZWVuVHdvUG9pbnRzIiwic3FydCIsInNvcnRQb2ludHMiLCJhcnJheSIsImNoZWNrQ29sbGluZWFyaXR5IiwiYyIsImlzU2FtZUxpbmUiLCJtYXJrQSIsIm1hcmtCIiwiaXNTYW1lQ2lyY2xlIiwicm9vdCIsImVkZ2UiLCJpc0R1cGxpY2F0ZWRNYXJrIiwibWFyayIsIm1hcmtzIiwib2xkTWFyayIsInR5cGUiLCJidWlsZGluZyIsImZpbHRlcmVkTWFya3MiLCJtIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJzcGxpY2UiLCJkdXBsaWNhdGVkIiwiZmluZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaGVhZCBmcm9tICdsb2Rhc2gvaGVhZCc7XG5pbXBvcnQgdGFpbCBmcm9tICdsb2Rhc2gvdGFpbCc7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BwaWUtbGliL3Bsb3QnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcblxuZXhwb3J0IGNvbnN0IHRpY2tDb3VudCA9IHV0aWxzLnRpY2tDb3VudDtcbmV4cG9ydCBjb25zdCBib3VuZHMgPSB1dGlscy5ib3VuZHM7XG5leHBvcnQgY29uc3QgcG9pbnQgPSB1dGlscy5wb2ludDtcblxuLy9UT0RPOiBUaGlzIGNhbiBiZSByZW1vdmVkP1xuZXhwb3J0IGNvbnN0IGdldEFuZ2xlRGVnID0gKCkgPT4gMDtcbi8vVE9ETzogVGhpcyBjYW4gYmUgcmVtb3ZlZD9cbmV4cG9ydCBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSAoKSA9PiAwO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja1ZhbHVlcyA9IChwcm9wKSA9PiB7XG4gIGNvbnN0IHRpY2tWYWx1ZXMgPSBbXTtcbiAgbGV0IHRpY2tWYWwgPSAwO1xuXG4gIHdoaWxlICh0aWNrVmFsID49IHByb3AubWluICYmIHRpY2tWYWx1ZXMuaW5kZXhPZih0aWNrVmFsKSA8IDApIHtcbiAgICB0aWNrVmFsdWVzLnB1c2godGlja1ZhbCk7XG4gICAgdGlja1ZhbCA9IE1hdGgucm91bmQoKHRpY2tWYWwgLSBwcm9wLnN0ZXApICogMTAwMDApIC8gMTAwMDA7XG4gIH1cblxuICB0aWNrVmFsID0gTWF0aC5yb3VuZChwcm9wLnN0ZXAgKiAxMDAwMCkgLyAxMDAwMDtcblxuICB3aGlsZSAodGlja1ZhbCA8PSBwcm9wLm1heCAmJiB0aWNrVmFsdWVzLmluZGV4T2YodGlja1ZhbCkgPCAwKSB7XG4gICAgdGlja1ZhbHVlcy5wdXNoKHRpY2tWYWwpO1xuICAgIHRpY2tWYWwgPSBNYXRoLnJvdW5kKCh0aWNrVmFsICsgcHJvcC5zdGVwKSAqIDEwMDAwKSAvIDEwMDAwO1xuICB9XG5cbiAgLy8gcmV0dXJuIG9ubHkgdGlja3MgdGhhdCBhcmUgaW5zaWRlIHRoZSBtaW4tbWF4IGludGVydmFsXG4gIGlmICh0aWNrVmFsdWVzKSB7XG4gICAgcmV0dXJuIHRpY2tWYWx1ZXMuZmlsdGVyKCh0VikgPT4gdFYgPj0gcHJvcC5taW4gJiYgdFYgPD0gcHJvcC5tYXgpO1xuICB9XG5cbiAgcmV0dXJuIFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvdW50V29yZHMgPSAobGFiZWwpID0+IHtcbiAgaWYgKGxhYmVsID09IG51bGwgfHwgaXNFbXB0eShsYWJlbCkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IHdvcmRzID0gbGFiZWwuc3BsaXQoJyAnKTtcbiAgcmV0dXJuIHdvcmRzLmxlbmd0aDtcbn07XG5cbi8vIGZpbmRMb25nZXN0V29yZCBpcyBhbHNvIHVzZWQgaW4gcGxvdFxuZXhwb3J0IGNvbnN0IGZpbmRMb25nZXN0V29yZCA9IChsYWJlbCkgPT4ge1xuICBsZXQgbG9uZ2VzdFdvcmQgPSAobGFiZWwgfHwgJycpXG4gICAgLnJlcGxhY2UoLzxbXj5dKz4vZywgJycpXG4gICAgLnNwbGl0KCcgJylcbiAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG5cbiAgcmV0dXJuIGxvbmdlc3RXb3JkWzBdLmxlbmd0aDtcbn07XG5cbi8vIGFtb3VudFRvSW5jcmVhc2VXaWR0aCBpcyBhbHNvIHVzZWQgaW4gcGxvdFxuZXhwb3J0IGNvbnN0IGFtb3VudFRvSW5jcmVhc2VXaWR0aCA9IChsb25nZXN0V29yZCkgPT4ge1xuICBpZiAoIWxvbmdlc3RXb3JkKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gbG9uZ2VzdFdvcmQgKiAxMDtcbn07XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9BcmVhID0gKHBvaW50cykgPT4ge1xuICBjb25zdCBoID0gaGVhZChwb2ludHMpO1xuICBjb25zdCBhcmVhID0ge1xuICAgIGxlZnQ6IGgueCxcbiAgICB0b3A6IGgueSxcbiAgICBib3R0b206IGgueSxcbiAgICByaWdodDogaC54LFxuICB9O1xuICByZXR1cm4gdGFpbChwb2ludHMpLnJlZHVjZSgoYSwgcCkgPT4ge1xuICAgIGEubGVmdCA9IE1hdGgubWluKGEubGVmdCwgcC54KTtcbiAgICBhLnRvcCA9IE1hdGgubWF4KGEudG9wLCBwLnkpO1xuICAgIGEuYm90dG9tID0gTWF0aC5taW4oYS5ib3R0b20sIHAueSk7XG4gICAgYS5yaWdodCA9IE1hdGgubWF4KGEucmlnaHQsIHAueCk7XG4gICAgcmV0dXJuIGE7XG4gIH0sIGFyZWEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbmVUb0FyZWEgPSAoZnJvbSwgdG8pID0+IHBvaW50c1RvQXJlYShmcm9tLCB0byk7XG5cbmV4cG9ydCBjb25zdCBwb2ludHNUb0FyZWEgPSAoYSwgYikgPT4ge1xuICBpbnZhcmlhbnQoISFhICYmICEhYiwgJ2Egb3IgYiBpcyB1bmRlZmluZWQnKTtcbiAgY29uc3QgbGVmdCA9IE1hdGgubWluKGEueCwgYi54KTtcbiAgY29uc3QgdG9wID0gTWF0aC5tYXgoYS55LCBiLnkpO1xuICBjb25zdCBib3R0b20gPSBNYXRoLm1pbihhLnksIGIueSk7XG4gIGNvbnN0IHJpZ2h0ID0gTWF0aC5tYXgoYS54LCBiLngpO1xuICByZXR1cm4geyBsZWZ0LCB0b3AsIGJvdHRvbSwgcmlnaHQgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RvbWFpblJhbmdlRXF1YWwgPSAoZ3JhcGhQcm9wcywgbmV4dEdyYXBoUHJvcHMpID0+IHtcbiAgcmV0dXJuIGlzRXF1YWwoZ3JhcGhQcm9wcy5kb21haW4sIG5leHRHcmFwaFByb3BzLmRvbWFpbikgJiYgaXNFcXVhbChncmFwaFByb3BzLnJhbmdlLCBuZXh0R3JhcGhQcm9wcy5yYW5nZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmlnaHRlc3RQb2ludHMgPSAocG9pbnRzKSA9PiB7XG4gIGNvbnN0IHNvcnRlZFBvaW50cyA9IGNsb25lRGVlcChwb2ludHMpO1xuICBzb3J0ZWRQb2ludHMuc29ydCgoYSwgYikgPT4gYi54IC0gYS54KTtcblxuICByZXR1cm4geyBhOiBzb3J0ZWRQb2ludHNbMF0sIGI6IHNvcnRlZFBvaW50c1sxXSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pZGRsZU9mVHdvUG9pbnRzID0gKGEsIGIpID0+ICh7XG4gIHg6IChhLnggKyBiLngpIC8gMixcbiAgeTogKGEueSArIGIueSkgLyAyLFxufSk7XG5cbmV4cG9ydCBjb25zdCByb3VuZE51bWJlciA9IChudW1iZXIpID0+IHBhcnNlRmxvYXQobnVtYmVyLnRvRml4ZWQoNCkpO1xuXG5leHBvcnQgY29uc3Qgc2FtZUF4ZXMgPSAocDEsIHAyKSA9PlxuICBwMSAmJiBwMiAmJiAocm91bmROdW1iZXIocDEueCkgPT09IHJvdW5kTnVtYmVyKHAyLngpIHx8IHJvdW5kTnVtYmVyKHAxLnkpID09PSByb3VuZE51bWJlcihwMi55KSk7XG5cbmV4cG9ydCBjb25zdCBlcXVhbFBvaW50cyA9IChwMSwgcDIpID0+XG4gIHAxICYmXG4gIHAyICYmXG4gIGlzRXF1YWwoXG4gICAge1xuICAgICAgeDogcm91bmROdW1iZXIocDEueCksXG4gICAgICB5OiByb3VuZE51bWJlcihwMS55KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHg6IHJvdW5kTnVtYmVyKHAyLngpLFxuICAgICAgeTogcm91bmROdW1iZXIocDIueSksXG4gICAgfSxcbiAgKTtcblxuY29uc3QgZ2V0RGlzdGFuY2VCZXR3ZWVuVGlja3MgPSAoYXhpcywgc2l6ZSkgPT4ge1xuICBjb25zdCB7IG1pbiwgbWF4LCBzdGVwIH0gPSBheGlzO1xuICBjb25zdCBuYk9mVGlja3MgPSAobWF4IC0gbWluKSAvIHN0ZXA7XG5cbiAgcmV0dXJuIHNpemUgLyBuYk9mVGlja3M7XG59O1xuXG5leHBvcnQgY29uc3QgdGhpbm5lclNoYXBlc05lZWRlZCA9IChncmFwaFByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBkb21haW4sXG4gICAgcmFuZ2UsXG4gICAgc2l6ZTogeyB3aWR0aCwgaGVpZ2h0IH0sXG4gIH0gPSBncmFwaFByb3BzO1xuXG4gIC8vIDE0IGlzIHRoZSBkZWZhdWx0IHdpZHRoIG9mIGEgcG9pbnRcbiAgcmV0dXJuIGdldERpc3RhbmNlQmV0d2VlblRpY2tzKGRvbWFpbiwgd2lkdGgpIDwgMTQgfHwgZ2V0RGlzdGFuY2VCZXR3ZWVuVGlja3MocmFuZ2UsIGhlaWdodCkgPCAxNDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBZGp1c3RlZEdyYXBoTGltaXRzID0gKGdyYXBoUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGRvbWFpbixcbiAgICByYW5nZSxcbiAgICBzaXplOiB7IHdpZHRoLCBoZWlnaHQgfSxcbiAgfSA9IGdyYXBoUHJvcHM7XG4gIGNvbnN0IGRvbWFpblRpY2tzRGlzdGFuY2UgPSBnZXREaXN0YW5jZUJldHdlZW5UaWNrcyhkb21haW4sIHdpZHRoKTtcbiAgY29uc3QgcmFuZ2VUaWNrc0Rpc3RhbmNlID0gZ2V0RGlzdGFuY2VCZXR3ZWVuVGlja3MocmFuZ2UsIGhlaWdodCk7XG5cbiAgLy8gMTUgaXMgdGhlIGRpc3RhbmNlIHJlcXVpcmVkIGZvciB0aGUgYXJyb3cgdG8gZXh0ZW5kIHRoZSBncmFwaFxuICBjb25zdCBkb21haW5QYWRkaW5nID0gZG9tYWluLnN0ZXAgLyAoZG9tYWluVGlja3NEaXN0YW5jZSAvIDE1KTtcbiAgY29uc3QgcmFuZ2VQYWRkaW5nID0gcmFuZ2Uuc3RlcCAvIChyYW5nZVRpY2tzRGlzdGFuY2UgLyAxNSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkb21haW46IHtcbiAgICAgIG1pbjogZG9tYWluLm1pbiAtIGRvbWFpblBhZGRpbmcsXG4gICAgICBtYXg6IGRvbWFpbi5tYXggKyBkb21haW5QYWRkaW5nLFxuICAgIH0sXG4gICAgcmFuZ2U6IHtcbiAgICAgIG1pbjogcmFuZ2UubWluIC0gcmFuZ2VQYWRkaW5nLFxuICAgICAgbWF4OiByYW5nZS5tYXggKyByYW5nZVBhZGRpbmcsXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXN0YW5jZUJldHdlZW5Ud29Qb2ludHMgPSAoYSwgYikgPT4gTWF0aC5zcXJ0KChiLnggLSBhLngpICogKGIueCAtIGEueCkgKyAoYi55IC0gYS55KSAqIChiLnkgLSBhLnkpKTtcblxuY29uc3Qgc29ydFBvaW50cyA9IChhcnJheSkgPT4gKGFycmF5IHx8IFtdKS5zb3J0KChhLCBiKSA9PiBhLnggLSBiLnggfHwgYS55IC0gYi55KTtcblxuLy8gY2hlY2sgY29sbGluaWFyaXR5IG9mIDMgcG9pbnRzIChzb3VyY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL3Byb2dyYW0tY2hlY2stdGhyZWUtcG9pbnRzLWNvbGxpbmVhci8pXG5jb25zdCBjaGVja0NvbGxpbmVhcml0eSA9IChhLCBiLCBjKSA9PiAoYS54IC0gYi54KSAqIChjLnkgLSBiLnkpID09PSAoYy54IC0gYi54KSAqIChhLnkgLSBiLnkpO1xuXG4vLyAyIGxpbmVzIGFyZSBvdmVybGFwcGluZyBpZiBhbGwgNCBwb2ludHMgYXJlIGNvbGxpbmVhclxuY29uc3QgaXNTYW1lTGluZSA9IChtYXJrQSwgbWFya0IpID0+XG4gIGNoZWNrQ29sbGluZWFyaXR5KG1hcmtBLmZyb20sIG1hcmtCLmZyb20sIG1hcmtCLnRvKSAmJiBjaGVja0NvbGxpbmVhcml0eShtYXJrQS50bywgbWFya0IuZnJvbSwgbWFya0IudG8pO1xuXG5jb25zdCBpc1NhbWVDaXJjbGUgPSAobWFya0EsIG1hcmtCKSA9PlxuICBlcXVhbFBvaW50cyhtYXJrQS5yb290LCBtYXJrQi5yb290KSAmJlxuICBnZXREaXN0YW5jZUJldHdlZW5Ud29Qb2ludHMobWFya0Iucm9vdCwgbWFya0IuZWRnZSkgPT09IGdldERpc3RhbmNlQmV0d2VlblR3b1BvaW50cyhtYXJrQS5yb290LCBtYXJrQS5lZGdlKTtcblxuZXhwb3J0IGNvbnN0IGlzRHVwbGljYXRlZE1hcmsgPSAobWFyaywgbWFya3MsIG9sZE1hcmspID0+IHtcbiAgY29uc3QgeyB0eXBlLCBidWlsZGluZyB9ID0gbWFyaztcblxuICBpZiAoYnVpbGRpbmcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJlZE1hcmtzID0gKG1hcmtzIHx8IFtdKS5maWx0ZXIoKG0pID0+IG0udHlwZSA9PT0gdHlwZSAmJiAhbS5idWlsZGluZyk7XG4gIGNvbnN0IGluZGV4ID0gZmlsdGVyZWRNYXJrcy5maW5kSW5kZXgoKG0pID0+IGlzRXF1YWwobSwgb2xkTWFyaykpO1xuXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBmaWx0ZXJlZE1hcmtzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBjb25zdCBkdXBsaWNhdGVkID0gZmlsdGVyZWRNYXJrcy5maW5kKChtKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnIHx8IHR5cGUgPT09ICdwYXJhYm9sYScgfHwgdHlwZSA9PT0gJ3NpbmUnIHx8IHR5cGUgPT09ICdhYnNvbHV0ZScgfHwgdHlwZSA9PT0gJ2V4cG9uZW50aWFsJykge1xuICAgICAgY29uc3QgeyByb290LCBlZGdlIH0gPSBtYXJrO1xuXG4gICAgICByZXR1cm4gKGVxdWFsUG9pbnRzKHJvb3QsIG0ucm9vdCkgJiYgZXF1YWxQb2ludHMoZWRnZSwgbS5lZGdlKSkgfHwgKHR5cGUgPT09ICdjaXJjbGUnICYmIGlzU2FtZUNpcmNsZShtLCBtYXJrKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbGluZScgfHwgdHlwZSA9PT0gJ3JheScgfHwgdHlwZSA9PT0gJ3NlZ21lbnQnIHx8IHR5cGUgPT09ICd2ZWN0b3InKSB7XG4gICAgICBjb25zdCB7IGZyb20sIHRvIH0gPSBtYXJrO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoZXF1YWxQb2ludHMoZnJvbSwgbS5mcm9tKSAmJiBlcXVhbFBvaW50cyh0bywgbS50bykpIHx8XG4gICAgICAgIChlcXVhbFBvaW50cyhmcm9tLCBtLnRvKSAmJiBlcXVhbFBvaW50cyh0bywgbS5mcm9tKSkgfHxcbiAgICAgICAgKHR5cGUgPT09ICdsaW5lJyAmJiBpc1NhbWVMaW5lKG0sIG1hcmspKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwb2x5Z29uJykge1xuICAgICAgcmV0dXJuIGlzRXF1YWwoc29ydFBvaW50cyhjbG9uZURlZXAobWFyay5wb2ludHMpKSwgc29ydFBvaW50cyhjbG9uZURlZXAobS5wb2ludHMpKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncG9pbnQnKSB7XG4gICAgICByZXR1cm4gZXF1YWxQb2ludHMobSwgbWFyayk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gISFk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QVFOLElBQUksR0FBV0csSUFBSSxDQUFuQkgsSUFBSTtRQUFFQyxJQUFJLEdBQUtFLElBQUksQ0FBYkYsSUFBSTtNQUVsQixPQUFRMUIsV0FBVyxDQUFDeUIsSUFBSSxFQUFFUyxDQUFDLENBQUNULElBQUksQ0FBQyxJQUFJekIsV0FBVyxDQUFDMEIsSUFBSSxFQUFFUSxDQUFDLENBQUNSLElBQUksQ0FBQyxJQUFNSyxJQUFJLEtBQUssUUFBUSxJQUFJUCxZQUFZLENBQUNVLENBQUMsRUFBRU4sSUFBSSxDQUFFO0lBQ2pILENBQUMsTUFBTSxJQUFJRyxJQUFJLEtBQUssTUFBTSxJQUFJQSxJQUFJLEtBQUssS0FBSyxJQUFJQSxJQUFJLEtBQUssU0FBUyxJQUFJQSxJQUFJLEtBQUssUUFBUSxFQUFFO01BQ3ZGLElBQVFwRCxJQUFJLEdBQVNpRCxJQUFJLENBQWpCakQsSUFBSTtRQUFFQyxFQUFFLEdBQUtnRCxJQUFJLENBQVhoRCxFQUFFO01BRWhCLE9BQ0dvQixXQUFXLENBQUNyQixJQUFJLEVBQUV1RCxDQUFDLENBQUN2RCxJQUFJLENBQUMsSUFBSXFCLFdBQVcsQ0FBQ3BCLEVBQUUsRUFBRXNELENBQUMsQ0FBQ3RELEVBQUUsQ0FBQyxJQUNsRG9CLFdBQVcsQ0FBQ3JCLElBQUksRUFBRXVELENBQUMsQ0FBQ3RELEVBQUUsQ0FBQyxJQUFJb0IsV0FBVyxDQUFDcEIsRUFBRSxFQUFFc0QsQ0FBQyxDQUFDdkQsSUFBSSxDQUFFLElBQ25Eb0QsSUFBSSxLQUFLLE1BQU0sSUFBSVYsVUFBVSxDQUFDYSxDQUFDLEVBQUVOLElBQUksQ0FBRTtJQUU1QyxDQUFDLE1BQU0sSUFBSUcsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUM3QixPQUFPLElBQUE3QyxtQkFBTyxFQUFDK0IsVUFBVSxDQUFDLElBQUExQixxQkFBUyxFQUFDcUMsSUFBSSxDQUFDL0QsTUFBTSxDQUFDLENBQUMsRUFBRW9ELFVBQVUsQ0FBQyxJQUFBMUIscUJBQVMsRUFBQzJDLENBQUMsQ0FBQ3JFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQyxNQUFNLElBQUlrRSxJQUFJLEtBQUssT0FBTyxFQUFFO01BQzNCLE9BQU8vQixXQUFXLENBQUNrQyxDQUFDLEVBQUVOLElBQUksQ0FBQztJQUM3QjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU8sQ0FBQyxDQUFDVSxVQUFVO0FBQ3JCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
package/lib/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["_head","_interopRequireDefault","require","_tail","_plot","_invariant","_isEqual","_isEmpty","_cloneDeep","tickCount","exports","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","_graphProps$size","width","height","getAdjustedGraphLimits","_graphProps$size2","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 isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\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) => 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) && checkCollinearity(markA.to, markB.from, markB.to);\n\nconst isSameCircle = (markA, markB) =>\n equalPoints(markA.root, markB.root) &&\n getDistanceBetweenTwoPoints(markB.root, markB.edge) === 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' || type === 'absolute' || type === 'exponential') {\n const { root, edge } = mark;\n\n return (equalPoints(root, m.root) && equalPoints(edge, m.edge)) || (type === 'circle' && isSameCircle(m, mark));\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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","ignoreList":[]}