@pie-lib/graphing 2.21.0 → 2.23.0

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 (133) hide show
  1. package/CHANGELOG.md +10 -15
  2. package/lib/axis/arrow.js +115 -0
  3. package/lib/axis/arrow.js.map +1 -0
  4. package/lib/axis/axes.js +415 -0
  5. package/lib/axis/axes.js.map +1 -0
  6. package/lib/axis/index.js +26 -0
  7. package/lib/axis/index.js.map +1 -0
  8. package/lib/bg.js +139 -0
  9. package/lib/bg.js.map +1 -0
  10. package/lib/container/actions.js +24 -0
  11. package/lib/container/actions.js.map +1 -0
  12. package/lib/container/index.js +163 -0
  13. package/lib/container/index.js.map +1 -0
  14. package/lib/container/marks.js +27 -0
  15. package/lib/container/marks.js.map +1 -0
  16. package/lib/container/middleware.js +25 -0
  17. package/lib/container/middleware.js.map +1 -0
  18. package/lib/container/reducer.js +25 -0
  19. package/lib/container/reducer.js.map +1 -0
  20. package/lib/coordinates-label.js +109 -0
  21. package/lib/coordinates-label.js.map +1 -0
  22. package/lib/graph-with-controls.js +359 -0
  23. package/lib/graph-with-controls.js.map +1 -0
  24. package/lib/graph.js +371 -0
  25. package/lib/graph.js.map +1 -0
  26. package/lib/grid-setup.js +462 -0
  27. package/lib/grid-setup.js.map +1 -0
  28. package/lib/grid.js +176 -0
  29. package/lib/grid.js.map +1 -0
  30. package/lib/index.js +59 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/key-legend.js +246 -0
  33. package/lib/key-legend.js.map +1 -0
  34. package/lib/label-svg-icon.js +56 -0
  35. package/lib/label-svg-icon.js.map +1 -0
  36. package/lib/labels.js +299 -0
  37. package/lib/labels.js.map +1 -0
  38. package/lib/mark-label.js +321 -0
  39. package/lib/mark-label.js.map +1 -0
  40. package/lib/toggle-bar.js +336 -0
  41. package/lib/toggle-bar.js.map +1 -0
  42. package/lib/tool-menu.js +112 -0
  43. package/lib/tool-menu.js.map +1 -0
  44. package/lib/tools/absolute/component.js +35 -0
  45. package/lib/tools/absolute/component.js.map +1 -0
  46. package/lib/tools/absolute/index.js +63 -0
  47. package/lib/tools/absolute/index.js.map +1 -0
  48. package/lib/tools/circle/bg-circle.js +173 -0
  49. package/lib/tools/circle/bg-circle.js.map +1 -0
  50. package/lib/tools/circle/component.js +406 -0
  51. package/lib/tools/circle/component.js.map +1 -0
  52. package/lib/tools/circle/index.js +51 -0
  53. package/lib/tools/circle/index.js.map +1 -0
  54. package/lib/tools/exponential/component.js +34 -0
  55. package/lib/tools/exponential/component.js.map +1 -0
  56. package/lib/tools/exponential/index.js +71 -0
  57. package/lib/tools/exponential/index.js.map +1 -0
  58. package/lib/tools/index.js +99 -0
  59. package/lib/tools/index.js.map +1 -0
  60. package/lib/tools/line/component.js +103 -0
  61. package/lib/tools/line/component.js.map +1 -0
  62. package/lib/tools/line/index.js +16 -0
  63. package/lib/tools/line/index.js.map +1 -0
  64. package/lib/tools/parabola/component.js +34 -0
  65. package/lib/tools/parabola/component.js.map +1 -0
  66. package/lib/tools/parabola/index.js +63 -0
  67. package/lib/tools/parabola/index.js.map +1 -0
  68. package/lib/tools/point/component.js +186 -0
  69. package/lib/tools/point/component.js.map +1 -0
  70. package/lib/tools/point/index.js +32 -0
  71. package/lib/tools/point/index.js.map +1 -0
  72. package/lib/tools/polygon/component.js +518 -0
  73. package/lib/tools/polygon/component.js.map +1 -0
  74. package/lib/tools/polygon/index.js +106 -0
  75. package/lib/tools/polygon/index.js.map +1 -0
  76. package/lib/tools/polygon/line.js +157 -0
  77. package/lib/tools/polygon/line.js.map +1 -0
  78. package/lib/tools/polygon/polygon.js +165 -0
  79. package/lib/tools/polygon/polygon.js.map +1 -0
  80. package/lib/tools/ray/component.js +102 -0
  81. package/lib/tools/ray/component.js.map +1 -0
  82. package/lib/tools/ray/index.js +16 -0
  83. package/lib/tools/ray/index.js.map +1 -0
  84. package/lib/tools/segment/component.js +75 -0
  85. package/lib/tools/segment/component.js.map +1 -0
  86. package/lib/tools/segment/index.js +16 -0
  87. package/lib/tools/segment/index.js.map +1 -0
  88. package/lib/tools/shared/arrow-head.js +70 -0
  89. package/lib/tools/shared/arrow-head.js.map +1 -0
  90. package/lib/tools/shared/icons/CorrectSVG.js +36 -0
  91. package/lib/tools/shared/icons/CorrectSVG.js.map +1 -0
  92. package/lib/tools/shared/icons/IncorrectSVG.js +36 -0
  93. package/lib/tools/shared/icons/IncorrectSVG.js.map +1 -0
  94. package/lib/tools/shared/icons/MissingSVG.js +35 -0
  95. package/lib/tools/shared/icons/MissingSVG.js.map +1 -0
  96. package/lib/tools/shared/line/index.js +599 -0
  97. package/lib/tools/shared/line/index.js.map +1 -0
  98. package/lib/tools/shared/line/line-path.js +151 -0
  99. package/lib/tools/shared/line/line-path.js.map +1 -0
  100. package/lib/tools/shared/line/with-root-edge.js +155 -0
  101. package/lib/tools/shared/line/with-root-edge.js.map +1 -0
  102. package/lib/tools/shared/point/arrow-point.js +113 -0
  103. package/lib/tools/shared/point/arrow-point.js.map +1 -0
  104. package/lib/tools/shared/point/arrow.js +96 -0
  105. package/lib/tools/shared/point/arrow.js.map +1 -0
  106. package/lib/tools/shared/point/base-point.js +175 -0
  107. package/lib/tools/shared/point/base-point.js.map +1 -0
  108. package/lib/tools/shared/point/index.js +97 -0
  109. package/lib/tools/shared/point/index.js.map +1 -0
  110. package/lib/tools/shared/styles.js +58 -0
  111. package/lib/tools/shared/styles.js.map +1 -0
  112. package/lib/tools/shared/types.js +23 -0
  113. package/lib/tools/shared/types.js.map +1 -0
  114. package/lib/tools/sine/component.js +51 -0
  115. package/lib/tools/sine/component.js.map +1 -0
  116. package/lib/tools/sine/index.js +63 -0
  117. package/lib/tools/sine/index.js.map +1 -0
  118. package/lib/tools/vector/component.js +88 -0
  119. package/lib/tools/vector/component.js.map +1 -0
  120. package/lib/tools/vector/index.js +16 -0
  121. package/lib/tools/vector/index.js.map +1 -0
  122. package/lib/undo-redo.js +123 -0
  123. package/lib/undo-redo.js.map +1 -0
  124. package/lib/use-debounce.js +32 -0
  125. package/lib/use-debounce.js.map +1 -0
  126. package/lib/utils.js +307 -0
  127. package/lib/utils.js.map +1 -0
  128. package/package.json +8 -9
  129. package/src/__tests__/graph-with-controls.test.jsx +1 -1
  130. package/src/__tests__/graph.test.jsx +1 -1
  131. package/src/tools/line/__tests__/component.test.jsx +2 -2
  132. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +2 -2
  133. package/src/tools/shared/point/__tests__/base-point.test.jsx +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/axis/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA","sourcesContent":["import Axes, { AxisPropTypes } from './axes';\nexport { Axes, AxisPropTypes };\n"],"file":"index.js"}
package/lib/bg.js ADDED
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _react = _interopRequireDefault(require("react"));
25
+
26
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
+
28
+ var _d3Selection = require("d3-selection");
29
+
30
+ var _plot = require("@pie-lib/plot");
31
+
32
+ var _utils = require("./utils");
33
+
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); }; }
35
+
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; } }
37
+
38
+ var Bg = /*#__PURE__*/function (_React$Component) {
39
+ (0, _inherits2["default"])(Bg, _React$Component);
40
+
41
+ var _super = _createSuper(Bg);
42
+
43
+ function Bg() {
44
+ var _this;
45
+
46
+ (0, _classCallCheck2["default"])(this, Bg);
47
+
48
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
49
+ args[_key] = arguments[_key];
50
+ }
51
+
52
+ _this = _super.call.apply(_super, [this].concat(args));
53
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getRectPadding", function () {
54
+ var graphProps = _this.props.graphProps;
55
+ return (0, _utils.thinnerShapesNeeded)(graphProps) ? 6 : 10;
56
+ });
57
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRectClick", function (rect) {
58
+ var _this$props = _this.props,
59
+ onClick = _this$props.onClick,
60
+ graphProps = _this$props.graphProps;
61
+ var scale = graphProps.scale;
62
+
63
+ var padding = _this.getRectPadding();
64
+
65
+ var coords = (0, _d3Selection.mouse)(rect._groups[0][0]); // decrease the padding from coordinates to indicate the correct point clicked
66
+
67
+ var x = scale.x.invert(coords[0] - padding);
68
+ var y = scale.y.invert(coords[1] - padding);
69
+ var rowTicks = (0, _utils.getTickValues)(graphProps.range);
70
+ var columnTicks = (0, _utils.getTickValues)(graphProps.domain);
71
+
72
+ var closest = function closest(ticks, value) {
73
+ return ticks.length && ticks.reduce(function (prev, curr) {
74
+ var currentDistance = Math.abs(curr - value);
75
+ var previousDistance = Math.abs(prev - value);
76
+ return currentDistance <= previousDistance ? curr : prev;
77
+ });
78
+ };
79
+
80
+ var snapped = {};
81
+
82
+ if (columnTicks.indexOf(x) >= 0 && rowTicks.indexOf(y) >= 0) {
83
+ snapped.x = x;
84
+ snapped.y = y;
85
+ } else {
86
+ snapped.x = closest(columnTicks, x);
87
+ snapped.y = closest(rowTicks, y);
88
+ }
89
+
90
+ onClick(snapped);
91
+ });
92
+ return _this;
93
+ }
94
+
95
+ (0, _createClass2["default"])(Bg, [{
96
+ key: "componentDidMount",
97
+ value: function componentDidMount() {
98
+ var rect = (0, _d3Selection.select)(this.rect);
99
+ rect.on('click', this.onRectClick.bind(this, rect));
100
+ }
101
+ }, {
102
+ key: "shouldComponentUpdate",
103
+ value: function shouldComponentUpdate(nextProps) {
104
+ return !_plot.utils.isDomainRangeEqual(this.props.graphProps, nextProps.graphProps) || this.props.width !== nextProps.width || this.props.height !== nextProps.height;
105
+ }
106
+ }, {
107
+ key: "render",
108
+ value: function render() {
109
+ var _this2 = this;
110
+
111
+ var _this$props2 = this.props,
112
+ width = _this$props2.width,
113
+ height = _this$props2.height;
114
+ var padding = this.getRectPadding(); // expand the size of clickable area so a small area outside the edges of the grid lines to be clickable
115
+
116
+ return /*#__PURE__*/_react["default"].createElement("rect", {
117
+ ref: function ref(rect) {
118
+ return _this2.rect = rect;
119
+ },
120
+ transform: "translate(-".concat(padding, ", -").concat(padding, ")"),
121
+ fill: "red",
122
+ fillOpacity: "0.0",
123
+ width: width + padding * 2,
124
+ height: height + padding * 2
125
+ });
126
+ }
127
+ }]);
128
+ return Bg;
129
+ }(_react["default"].Component);
130
+
131
+ exports["default"] = Bg;
132
+ (0, _defineProperty2["default"])(Bg, "propTypes", {
133
+ width: _propTypes["default"].number.isRequired,
134
+ height: _propTypes["default"].number.isRequired,
135
+ onClick: _propTypes["default"].func.isRequired,
136
+ graphProps: _plot.types.GraphPropsType.isRequired
137
+ });
138
+ (0, _defineProperty2["default"])(Bg, "defaultProps", {});
139
+ //# sourceMappingURL=bg.js.map
package/lib/bg.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bg.jsx"],"names":["Bg","graphProps","props","rect","onClick","scale","padding","getRectPadding","coords","_groups","x","invert","y","rowTicks","range","columnTicks","domain","closest","ticks","value","length","reduce","prev","curr","currentDistance","Math","abs","previousDistance","snapped","indexOf","on","onRectClick","bind","nextProps","utils","isDomainRangeEqual","width","height","React","Component","PropTypes","number","isRequired","func","types","GraphPropsType"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { select, mouse } from 'd3-selection';\nimport { types, utils } from '@pie-lib/plot';\nimport { getTickValues, thinnerShapesNeeded } from './utils';\n\nexport default class Bg extends React.Component {\n static propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n componentDidMount() {\n const rect = select(this.rect);\n\n rect.on('click', this.onRectClick.bind(this, rect));\n }\n\n shouldComponentUpdate(nextProps) {\n return (\n !utils.isDomainRangeEqual(this.props.graphProps, nextProps.graphProps) ||\n this.props.width !== nextProps.width ||\n this.props.height !== nextProps.height\n );\n }\n\n getRectPadding = () => {\n const { graphProps } = this.props;\n\n return thinnerShapesNeeded(graphProps) ? 6 : 10;\n };\n\n /**\n * Note: we use d3 click + mouse to give us domain values directly.\n * Saves us having to calculate them ourselves from a MouseEvent.\n */\n onRectClick = (rect) => {\n const { onClick, graphProps } = this.props;\n const { scale } = graphProps;\n\n const padding = this.getRectPadding();\n const coords = mouse(rect._groups[0][0]);\n\n // decrease the padding from coordinates to indicate the correct point clicked\n const x = scale.x.invert(coords[0] - padding);\n const y = scale.y.invert(coords[1] - padding);\n\n const rowTicks = getTickValues(graphProps.range);\n const columnTicks = getTickValues(graphProps.domain);\n\n const closest = (ticks, value) => {\n return (\n ticks.length &&\n ticks.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n };\n\n let snapped = {};\n\n if (columnTicks.indexOf(x) >= 0 && rowTicks.indexOf(y) >= 0) {\n snapped.x = x;\n snapped.y = y;\n } else {\n snapped.x = closest(columnTicks, x);\n snapped.y = closest(rowTicks, y);\n }\n\n onClick(snapped);\n };\n\n render() {\n const { width, height } = this.props;\n const padding = this.getRectPadding();\n\n // expand the size of clickable area so a small area outside the edges of the grid lines to be clickable\n return (\n <rect\n ref={(rect) => (this.rect = rect)}\n transform={`translate(-${padding}, -${padding})`}\n fill=\"red\"\n fillOpacity=\"0.0\"\n width={width + padding * 2}\n height={height + padding * 2}\n />\n );\n }\n}\n"],"file":"bg.js"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.changeMarks = exports.addMark = void 0;
7
+
8
+ var addMark = function addMark() {
9
+ return {
10
+ type: 'ADD_MARK'
11
+ };
12
+ };
13
+
14
+ exports.addMark = addMark;
15
+
16
+ var changeMarks = function changeMarks(marks) {
17
+ return {
18
+ type: 'CHANGE_MARKS',
19
+ marks: marks
20
+ };
21
+ };
22
+
23
+ exports.changeMarks = changeMarks;
24
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/container/actions.js"],"names":["addMark","type","changeMarks","marks"],"mappings":";;;;;;;AAAO,IAAMA,OAAO,GAAG,SAAVA,OAAU;AAAA,SAAO;AAC5BC,IAAAA,IAAI,EAAE;AADsB,GAAP;AAAA,CAAhB;;;;AAIA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD;AAAA,SAAY;AACrCF,IAAAA,IAAI,EAAE,cAD+B;AAErCE,IAAAA,KAAK,EAALA;AAFqC,GAAZ;AAAA,CAApB","sourcesContent":["export const addMark = () => ({\n type: 'ADD_MARK',\n});\n\nexport const changeMarks = (marks) => ({\n type: 'CHANGE_MARKS',\n marks,\n});\n"],"file":"actions.js"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.GraphContainer = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
+
28
+ var _reactRedux = require("react-redux");
29
+
30
+ var _react = _interopRequireDefault(require("react"));
31
+
32
+ var _redux = require("redux");
33
+
34
+ var _reducer = _interopRequireDefault(require("./reducer"));
35
+
36
+ var _actions = require("./actions");
37
+
38
+ var _propTypes = _interopRequireDefault(require("prop-types"));
39
+
40
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
41
+
42
+ var _reduxUndo = require("redux-undo");
43
+
44
+ var _graphWithControls = _interopRequireDefault(require("../graph-with-controls"));
45
+
46
+ var _middleware = require("./middleware");
47
+
48
+ var _excluded = ["onChangeMarks", "marks"];
49
+
50
+ 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); }; }
51
+
52
+ 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; } }
53
+
54
+ var mapStateToProps = function mapStateToProps(s) {
55
+ return {
56
+ marks: s.marks.present
57
+ };
58
+ };
59
+
60
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
61
+ return {
62
+ onChangeMarks: function onChangeMarks(m) {
63
+ return dispatch((0, _actions.changeMarks)(m));
64
+ },
65
+ onUndo: function onUndo() {
66
+ return dispatch(_reduxUndo.ActionCreators.undo());
67
+ },
68
+ onRedo: function onRedo() {
69
+ return dispatch(_reduxUndo.ActionCreators.redo());
70
+ },
71
+ onReset: function onReset() {
72
+ return dispatch((0, _actions.changeMarks)([]));
73
+ }
74
+ };
75
+ };
76
+
77
+ var GraphContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_graphWithControls["default"]);
78
+ /**
79
+ * The graph component entry point with undo/redo
80
+ * Redux is an implementation detail, hide it in the react component.
81
+ */
82
+
83
+ exports.GraphContainer = GraphContainer;
84
+
85
+ var Root = /*#__PURE__*/function (_React$Component) {
86
+ (0, _inherits2["default"])(Root, _React$Component);
87
+
88
+ var _super = _createSuper(Root);
89
+
90
+ function Root(props) {
91
+ var _this;
92
+
93
+ (0, _classCallCheck2["default"])(this, Root);
94
+ _this = _super.call(this, props);
95
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onStoreChange", function () {
96
+ var _this$props = _this.props,
97
+ marks = _this$props.marks,
98
+ onChangeMarks = _this$props.onChangeMarks;
99
+
100
+ var storeState = _this.store.getState();
101
+
102
+ if (!(0, _isEqual["default"])(storeState.marks.present, marks)) {
103
+ onChangeMarks(storeState.marks.present);
104
+ }
105
+ });
106
+ var r = (0, _reducer["default"])();
107
+ _this.store = (0, _redux.createStore)(r, {
108
+ marks: props.marks
109
+ }, (0, _redux.applyMiddleware)(_middleware.lastActionMiddleware));
110
+
111
+ _this.store.subscribe(_this.onStoreChange);
112
+
113
+ return _this;
114
+ }
115
+
116
+ (0, _createClass2["default"])(Root, [{
117
+ key: "componentDidUpdate",
118
+ value: function componentDidUpdate(prevProps) {
119
+ var marks = this.props.marks;
120
+ var storeState = this.store.getState();
121
+
122
+ if ((0, _isEqual["default"])(storeState.marks.present, marks)) {
123
+ return;
124
+ }
125
+
126
+ if (!(0, _isEqual["default"])(prevProps.marks, marks)) {
127
+ this.store.dispatch((0, _actions.changeMarks)(marks));
128
+ }
129
+ }
130
+ }, {
131
+ key: "render",
132
+ value: function render() {
133
+ // eslint-disable-next-line no-unused-vars
134
+ var _this$props2 = this.props,
135
+ onChangeMarks = _this$props2.onChangeMarks,
136
+ marks = _this$props2.marks,
137
+ rest = (0, _objectWithoutProperties2["default"])(_this$props2, _excluded);
138
+ var correctnessSet = marks && marks.find(function (m) {
139
+ return m.correctness;
140
+ });
141
+
142
+ if (correctnessSet) {
143
+ return /*#__PURE__*/_react["default"].createElement(_graphWithControls["default"], (0, _extends2["default"])({}, rest, {
144
+ marks: marks,
145
+ disabled: correctnessSet
146
+ }));
147
+ }
148
+
149
+ return /*#__PURE__*/_react["default"].createElement(_reactRedux.Provider, {
150
+ store: this.store
151
+ }, /*#__PURE__*/_react["default"].createElement(GraphContainer, rest));
152
+ }
153
+ }]);
154
+ return Root;
155
+ }(_react["default"].Component);
156
+
157
+ (0, _defineProperty2["default"])(Root, "propTypes", {
158
+ onChangeMarks: _propTypes["default"].func,
159
+ marks: _propTypes["default"].array
160
+ });
161
+ var _default = Root;
162
+ exports["default"] = _default;
163
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/container/index.jsx"],"names":["mapStateToProps","s","marks","present","mapDispatchToProps","dispatch","onChangeMarks","m","onUndo","ActionCreators","undo","onRedo","redo","onReset","GraphContainer","GraphWithControls","Root","props","storeState","store","getState","r","lastActionMiddleware","subscribe","onStoreChange","prevProps","rest","correctnessSet","find","correctness","React","Component","PropTypes","func","array"],"mappings":"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","sourcesContent":["import { connect } from 'react-redux';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { applyMiddleware, createStore } from 'redux';\nimport reducer from './reducer';\nimport { changeMarks } from './actions';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport { ActionCreators } from 'redux-undo';\nimport GraphWithControls from '../graph-with-controls';\nimport { lastActionMiddleware } from './middleware';\n\nconst mapStateToProps = (s) => ({\n marks: s.marks.present,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onChangeMarks: (m) => dispatch(changeMarks(m)),\n onUndo: () => dispatch(ActionCreators.undo()),\n onRedo: () => dispatch(ActionCreators.redo()),\n onReset: () => dispatch(changeMarks([])),\n});\n\nexport const GraphContainer = connect(mapStateToProps, mapDispatchToProps)(GraphWithControls);\n\n/**\n * The graph component entry point with undo/redo\n * Redux is an implementation detail, hide it in the react component.\n */\nclass Root extends React.Component {\n static propTypes = {\n onChangeMarks: PropTypes.func,\n marks: PropTypes.array,\n };\n\n constructor(props) {\n super(props);\n\n const r = reducer();\n this.store = createStore(r, { marks: props.marks }, applyMiddleware(lastActionMiddleware));\n\n this.store.subscribe(this.onStoreChange);\n }\n\n componentDidUpdate(prevProps) {\n const { marks } = this.props;\n const storeState = this.store.getState();\n\n if (isEqual(storeState.marks.present, marks)) {\n return;\n }\n\n if (!isEqual(prevProps.marks, marks)) {\n this.store.dispatch(changeMarks(marks));\n }\n }\n\n onStoreChange = () => {\n const { marks, onChangeMarks } = this.props;\n const storeState = this.store.getState();\n\n if (!isEqual(storeState.marks.present, marks)) {\n onChangeMarks(storeState.marks.present);\n }\n };\n\n render() {\n // eslint-disable-next-line no-unused-vars\n const { onChangeMarks, marks, ...rest } = this.props;\n const correctnessSet = marks && marks.find((m) => m.correctness);\n\n if (correctnessSet) {\n return <GraphWithControls {...rest} marks={marks} disabled={correctnessSet} />;\n }\n\n return (\n <Provider store={this.store}>\n <GraphContainer {...rest} />\n </Provider>\n );\n }\n}\n\nexport default Root;\n"],"file":"index.js"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var marks = function marks() {
9
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
10
+ var action = arguments.length > 1 ? arguments[1] : undefined;
11
+
12
+ switch (action.type) {
13
+ case 'CHANGE_MARKS':
14
+ if (Array.isArray(action.marks)) {
15
+ return action.marks;
16
+ } else {
17
+ throw new Error('marks must be an array');
18
+ }
19
+
20
+ default:
21
+ return state;
22
+ }
23
+ };
24
+
25
+ var _default = marks;
26
+ exports["default"] = _default;
27
+ //# sourceMappingURL=marks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/container/marks.js"],"names":["marks","state","action","type","Array","isArray","Error"],"mappings":";;;;;;;AAAA,IAAMA,KAAK,GAAG,SAARA,KAAQ,GAAwB;AAAA,MAAvBC,KAAuB,uEAAf,EAAe;AAAA,MAAXC,MAAW;;AACpC,UAAQA,MAAM,CAACC,IAAf;AACE,SAAK,cAAL;AACE,UAAIC,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACF,KAArB,CAAJ,EAAiC;AAC/B,eAAOE,MAAM,CAACF,KAAd;AACD,OAFD,MAEO;AACL,cAAM,IAAIM,KAAJ,CAAU,wBAAV,CAAN;AACD;;AACH;AACE,aAAOL,KAAP;AARJ;AAUD,CAXD;;eAaeD,K","sourcesContent":["const marks = (state = [], action) => {\n switch (action.type) {\n case 'CHANGE_MARKS':\n if (Array.isArray(action.marks)) {\n return action.marks;\n } else {\n throw new Error('marks must be an array');\n }\n default:\n return state;\n }\n};\n\nexport default marks;\n"],"file":"marks.js"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.lastActionMiddleware = exports.getLastAction = void 0;
7
+ var lastAction = null;
8
+
9
+ var getLastAction = function getLastAction() {
10
+ return lastAction;
11
+ };
12
+
13
+ exports.getLastAction = getLastAction;
14
+
15
+ var lastActionMiddleware = function lastActionMiddleware() {
16
+ return function (next) {
17
+ return function (action) {
18
+ lastAction = action;
19
+ return next(action);
20
+ };
21
+ };
22
+ };
23
+
24
+ exports.lastActionMiddleware = lastActionMiddleware;
25
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/container/middleware.js"],"names":["lastAction","getLastAction","lastActionMiddleware","next","action"],"mappings":";;;;;;AAAA,IAAIA,UAAU,GAAG,IAAjB;;AACO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB;AAAA,SAAMD,UAAN;AAAA,CAAtB;;;;AAEA,IAAME,oBAAoB,GAAG,SAAvBA,oBAAuB;AAAA,SAAM,UAACC,IAAD;AAAA,WAAU,UAACC,MAAD,EAAY;AAC9DJ,MAAAA,UAAU,GAAGI,MAAb;AACA,aAAOD,IAAI,CAACC,MAAD,CAAX;AACD,KAHyC;AAAA,GAAN;AAAA,CAA7B","sourcesContent":["let lastAction = null;\nexport const getLastAction = () => lastAction;\n\nexport const lastActionMiddleware = () => (next) => (action) => {\n lastAction = action;\n return next(action);\n};\n"],"file":"middleware.js"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _redux = require("redux");
11
+
12
+ var _marks = _interopRequireDefault(require("./marks"));
13
+
14
+ var _reduxUndo = _interopRequireDefault(require("redux-undo"));
15
+
16
+ var _default = function _default() {
17
+ return (0, _redux.combineReducers)({
18
+ marks: (0, _reduxUndo["default"])(_marks["default"], {
19
+ debug: false
20
+ })
21
+ });
22
+ };
23
+
24
+ exports["default"] = _default;
25
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/container/reducer.js"],"names":["marks","debug"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;eAEe;AAAA,SAAM,4BAAgB;AAAEA,IAAAA,KAAK,EAAE,2BAASA,iBAAT,EAAgB;AAAEC,MAAAA,KAAK,EAAE;AAAT,KAAhB;AAAT,GAAhB,CAAN;AAAA,C","sourcesContent":["import { combineReducers } from 'redux';\nimport marks from './marks';\nimport undoable from 'redux-undo';\n\nexport default () => combineReducers({ marks: undoable(marks, { debug: false }) });\n"],"file":"reducer.js"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getLabelPosition = exports["default"] = exports.CoordinatesLabel = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _plot = require("@pie-lib/plot");
17
+
18
+ var _renderUi = require("@pie-lib/render-ui");
19
+
20
+ var _styles = require("@material-ui/core/styles");
21
+
22
+ var _InputBase = _interopRequireDefault(require("@material-ui/core/InputBase"));
23
+
24
+ var _utils = require("./utils");
25
+
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
+
28
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
29
+
30
+ var styles = function styles(theme) {
31
+ return {
32
+ input: {
33
+ fontFamily: theme.typography.fontFamily,
34
+ fontSize: theme.typography.fontSize,
35
+ borderRadius: '8px',
36
+ background: theme.palette.common.white,
37
+ color: _renderUi.color.defaults.PRIMARY_DARK
38
+ },
39
+ inputLabel: {
40
+ padding: 0
41
+ }
42
+ };
43
+ };
44
+
45
+ var getLabelPosition = function getLabelPosition(graphProps, x, y, labelLength) {
46
+ var scale = graphProps.scale,
47
+ domain = graphProps.domain,
48
+ range = graphProps.range; // treat corner cases for maximum and minimum
49
+
50
+ var topShift = y === range.min ? 16 : y === range.max ? 0 : 8;
51
+ var leftShift = 10;
52
+ var rightEdge = scale.x(x) + labelLength + leftShift;
53
+
54
+ if (rightEdge >= scale.x(domain.max)) {
55
+ return {
56
+ left: scale.x(x) - leftShift - labelLength,
57
+ top: scale.y(y) - topShift
58
+ };
59
+ }
60
+
61
+ return {
62
+ left: scale.x(x) + leftShift,
63
+ top: scale.y(y) - topShift
64
+ };
65
+ };
66
+
67
+ exports.getLabelPosition = getLabelPosition;
68
+
69
+ var CoordinatesLabel = function CoordinatesLabel(_ref) {
70
+ var x = _ref.x,
71
+ y = _ref.y,
72
+ graphProps = _ref.graphProps,
73
+ classes = _ref.classes;
74
+ var label = "(".concat((0, _utils.roundNumber)(x), ", ").concat((0, _utils.roundNumber)(y), ")");
75
+ var labelLength = (label.length || 0) * 6;
76
+ var labelPosition = getLabelPosition(graphProps, x, y, labelLength);
77
+
78
+ var style = _objectSpread({
79
+ position: 'absolute',
80
+ pointerEvents: 'auto',
81
+ width: labelLength,
82
+ padding: 0
83
+ }, labelPosition);
84
+
85
+ return /*#__PURE__*/_react["default"].createElement(_InputBase["default"], {
86
+ style: style,
87
+ classes: {
88
+ input: classes.inputLabel
89
+ },
90
+ className: classes.input,
91
+ value: label,
92
+ inputProps: {
93
+ ariaLabel: 'naked'
94
+ }
95
+ });
96
+ };
97
+
98
+ exports.CoordinatesLabel = CoordinatesLabel;
99
+ CoordinatesLabel.propTypes = {
100
+ graphProps: _plot.types.GraphPropsType,
101
+ classes: _propTypes["default"].object,
102
+ x: _propTypes["default"].number,
103
+ y: _propTypes["default"].number
104
+ };
105
+
106
+ var _default = (0, _styles.withStyles)(styles)(CoordinatesLabel);
107
+
108
+ exports["default"] = _default;
109
+ //# sourceMappingURL=coordinates-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/coordinates-label.jsx"],"names":["styles","theme","input","fontFamily","typography","fontSize","borderRadius","background","palette","common","white","color","defaults","PRIMARY_DARK","inputLabel","padding","getLabelPosition","graphProps","x","y","labelLength","scale","domain","range","topShift","min","max","leftShift","rightEdge","left","top","CoordinatesLabel","classes","label","length","labelPosition","style","position","pointerEvents","width","ariaLabel","propTypes","types","GraphPropsType","PropTypes","object","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { types } from '@pie-lib/plot';\nimport { color } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport InputBase from '@material-ui/core/InputBase';\nimport { roundNumber } from './utils';\n\nconst styles = (theme) => ({\n input: {\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.fontSize,\n borderRadius: '8px',\n background: theme.palette.common.white,\n color: color.defaults.PRIMARY_DARK,\n },\n inputLabel: {\n padding: 0,\n },\n});\n\nexport const getLabelPosition = (graphProps, x, y, labelLength) => {\n const { scale, domain, range } = graphProps;\n // treat corner cases for maximum and minimum\n const topShift = y === range.min ? 16 : y === range.max ? 0 : 8;\n const leftShift = 10;\n const rightEdge = scale.x(x) + labelLength + leftShift;\n\n if (rightEdge >= scale.x(domain.max)) {\n return {\n left: scale.x(x) - leftShift - labelLength,\n top: scale.y(y) - topShift,\n };\n }\n\n return {\n left: scale.x(x) + leftShift,\n top: scale.y(y) - topShift,\n };\n};\n\nexport const CoordinatesLabel = ({ x, y, graphProps, classes }) => {\n const label = `(${roundNumber(x)}, ${roundNumber(y)})`;\n const labelLength = (label.length || 0) * 6;\n const labelPosition = getLabelPosition(graphProps, x, y, labelLength);\n\n const style = {\n position: 'absolute',\n pointerEvents: 'auto',\n width: labelLength,\n padding: 0,\n ...labelPosition,\n };\n\n return (\n <InputBase\n style={style}\n classes={{ input: classes.inputLabel }}\n className={classes.input}\n value={label}\n inputProps={{ ariaLabel: 'naked' }}\n />\n );\n};\n\nCoordinatesLabel.propTypes = {\n graphProps: types.GraphPropsType,\n classes: PropTypes.object,\n x: PropTypes.number,\n y: PropTypes.number,\n};\n\nexport default withStyles(styles)(CoordinatesLabel);\n"],"file":"coordinates-label.js"}