@pie-lib/graphing 4.1.0-beta.7 → 4.1.0-beta.9

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 (145) hide show
  1. package/package.json +3 -3
  2. package/lib/__tests__/bg.test.js +0 -282
  3. package/lib/__tests__/bg.test.js.map +0 -1
  4. package/lib/__tests__/coordinates-label.test.js +0 -276
  5. package/lib/__tests__/coordinates-label.test.js.map +0 -1
  6. package/lib/__tests__/graph-with-controls.test.js +0 -275
  7. package/lib/__tests__/graph-with-controls.test.js.map +0 -1
  8. package/lib/__tests__/graph.test.js +0 -927
  9. package/lib/__tests__/graph.test.js.map +0 -1
  10. package/lib/__tests__/grid-setup.test.js +0 -729
  11. package/lib/__tests__/grid-setup.test.js.map +0 -1
  12. package/lib/__tests__/grid.test.js +0 -29
  13. package/lib/__tests__/grid.test.js.map +0 -1
  14. package/lib/__tests__/key-legend.test.js +0 -321
  15. package/lib/__tests__/key-legend.test.js.map +0 -1
  16. package/lib/__tests__/label-svg-icon.test.js +0 -373
  17. package/lib/__tests__/label-svg-icon.test.js.map +0 -1
  18. package/lib/__tests__/labels.test.js +0 -61
  19. package/lib/__tests__/labels.test.js.map +0 -1
  20. package/lib/__tests__/mark-label.test.js +0 -133
  21. package/lib/__tests__/mark-label.test.js.map +0 -1
  22. package/lib/__tests__/toggle-bar.test.js +0 -197
  23. package/lib/__tests__/toggle-bar.test.js.map +0 -1
  24. package/lib/__tests__/tool-menu.test.js +0 -151
  25. package/lib/__tests__/tool-menu.test.js.map +0 -1
  26. package/lib/__tests__/undo-redo.test.js +0 -31
  27. package/lib/__tests__/undo-redo.test.js.map +0 -1
  28. package/lib/__tests__/use-debounce.test.js +0 -24
  29. package/lib/__tests__/use-debounce.test.js.map +0 -1
  30. package/lib/__tests__/utils.js +0 -70
  31. package/lib/__tests__/utils.js.map +0 -1
  32. package/lib/__tests__/utils.test.js +0 -123
  33. package/lib/__tests__/utils.test.js.map +0 -1
  34. package/lib/axis/__tests__/arrow.test.js +0 -60
  35. package/lib/axis/__tests__/arrow.test.js.map +0 -1
  36. package/lib/axis/__tests__/axes.test.js +0 -195
  37. package/lib/axis/__tests__/axes.test.js.map +0 -1
  38. package/lib/container/__tests__/actions.test.js +0 -108
  39. package/lib/container/__tests__/actions.test.js.map +0 -1
  40. package/lib/container/__tests__/index.test.js +0 -503
  41. package/lib/container/__tests__/index.test.js.map +0 -1
  42. package/lib/container/__tests__/marks.test.js +0 -259
  43. package/lib/container/__tests__/marks.test.js.map +0 -1
  44. package/lib/container/__tests__/middleware.test.js +0 -244
  45. package/lib/container/__tests__/middleware.test.js.map +0 -1
  46. package/lib/container/__tests__/reducer.test.js +0 -450
  47. package/lib/container/__tests__/reducer.test.js.map +0 -1
  48. package/lib/tools/absolute/__tests__/component.test.js +0 -65
  49. package/lib/tools/absolute/__tests__/component.test.js.map +0 -1
  50. package/lib/tools/circle/__tests__/bg-circle.test.js +0 -33
  51. package/lib/tools/circle/__tests__/bg-circle.test.js.map +0 -1
  52. package/lib/tools/circle/__tests__/component.test.js +0 -615
  53. package/lib/tools/circle/__tests__/component.test.js.map +0 -1
  54. package/lib/tools/circle/__tests__/index.test.js +0 -576
  55. package/lib/tools/circle/__tests__/index.test.js.map +0 -1
  56. package/lib/tools/exponential/__tests__/component.test.js +0 -64
  57. package/lib/tools/exponential/__tests__/component.test.js.map +0 -1
  58. package/lib/tools/exponential/__tests__/index.test.js +0 -828
  59. package/lib/tools/exponential/__tests__/index.test.js.map +0 -1
  60. package/lib/tools/line/__tests__/component.test.js +0 -45
  61. package/lib/tools/line/__tests__/component.test.js.map +0 -1
  62. package/lib/tools/parabola/__tests__/component.test.js +0 -64
  63. package/lib/tools/parabola/__tests__/component.test.js.map +0 -1
  64. package/lib/tools/parabola/__tests__/index.test.js +0 -564
  65. package/lib/tools/parabola/__tests__/index.test.js.map +0 -1
  66. package/lib/tools/point/__tests__/component.test.js +0 -434
  67. package/lib/tools/point/__tests__/component.test.js.map +0 -1
  68. package/lib/tools/point/__tests__/index.test.js +0 -262
  69. package/lib/tools/point/__tests__/index.test.js.map +0 -1
  70. package/lib/tools/polygon/__tests__/component.test.js +0 -485
  71. package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
  72. package/lib/tools/polygon/__tests__/index.test.js +0 -303
  73. package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
  74. package/lib/tools/polygon/__tests__/line.test.js +0 -50
  75. package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
  76. package/lib/tools/polygon/__tests__/polygon.test.js +0 -85
  77. package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
  78. package/lib/tools/ray/__tests__/component.test.js +0 -35
  79. package/lib/tools/ray/__tests__/component.test.js.map +0 -1
  80. package/lib/tools/segment/__tests__/component.test.js +0 -35
  81. package/lib/tools/segment/__tests__/component.test.js.map +0 -1
  82. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  83. package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
  84. package/lib/tools/shared/line/__tests__/index.test.js +0 -124
  85. package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
  86. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -62
  87. package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
  88. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -90
  89. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
  90. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  91. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
  92. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  93. package/lib/tools/shared/point/__tests__/base-point.test.js.map +0 -1
  94. package/lib/tools/sine/__tests__/component.test.js +0 -72
  95. package/lib/tools/sine/__tests__/component.test.js.map +0 -1
  96. package/lib/tools/vector/__tests__/component.test.js +0 -32
  97. package/lib/tools/vector/__tests__/component.test.js.map +0 -1
  98. package/src/__tests__/bg.test.jsx +0 -250
  99. package/src/__tests__/coordinates-label.test.jsx +0 -243
  100. package/src/__tests__/graph-with-controls.test.jsx +0 -198
  101. package/src/__tests__/graph.test.jsx +0 -721
  102. package/src/__tests__/grid-setup.test.jsx +0 -645
  103. package/src/__tests__/grid.test.jsx +0 -22
  104. package/src/__tests__/key-legend.test.jsx +0 -260
  105. package/src/__tests__/label-svg-icon.test.jsx +0 -278
  106. package/src/__tests__/labels.test.jsx +0 -55
  107. package/src/__tests__/mark-label.test.jsx +0 -63
  108. package/src/__tests__/toggle-bar.test.jsx +0 -146
  109. package/src/__tests__/tool-menu.test.jsx +0 -115
  110. package/src/__tests__/undo-redo.test.jsx +0 -24
  111. package/src/__tests__/use-debounce.test.js +0 -21
  112. package/src/__tests__/utils.js +0 -41
  113. package/src/__tests__/utils.test.js +0 -105
  114. package/src/axis/__tests__/arrow.test.jsx +0 -38
  115. package/src/axis/__tests__/axes.test.jsx +0 -216
  116. package/src/container/__tests__/actions.test.js +0 -105
  117. package/src/container/__tests__/index.test.jsx +0 -319
  118. package/src/container/__tests__/marks.test.js +0 -172
  119. package/src/container/__tests__/middleware.test.js +0 -235
  120. package/src/container/__tests__/reducer.test.js +0 -324
  121. package/src/tools/absolute/__tests__/component.test.jsx +0 -53
  122. package/src/tools/circle/__tests__/bg-circle.test.jsx +0 -26
  123. package/src/tools/circle/__tests__/component.test.jsx +0 -494
  124. package/src/tools/circle/__tests__/index.test.js +0 -480
  125. package/src/tools/exponential/__tests__/component.test.jsx +0 -53
  126. package/src/tools/exponential/__tests__/index.test.js +0 -729
  127. package/src/tools/line/__tests__/component.test.jsx +0 -37
  128. package/src/tools/parabola/__tests__/component.test.jsx +0 -48
  129. package/src/tools/parabola/__tests__/index.test.js +0 -470
  130. package/src/tools/point/__tests__/component.test.jsx +0 -349
  131. package/src/tools/point/__tests__/index.test.js +0 -241
  132. package/src/tools/polygon/__tests__/component.test.jsx +0 -471
  133. package/src/tools/polygon/__tests__/index.test.js +0 -294
  134. package/src/tools/polygon/__tests__/line.test.jsx +0 -35
  135. package/src/tools/polygon/__tests__/polygon.test.jsx +0 -61
  136. package/src/tools/ray/__tests__/component.test.jsx +0 -29
  137. package/src/tools/segment/__tests__/component.test.jsx +0 -28
  138. package/src/tools/shared/__tests__/arrow-head.test.jsx +0 -31
  139. package/src/tools/shared/line/__tests__/index.test.jsx +0 -109
  140. package/src/tools/shared/line/__tests__/line-path.test.jsx +0 -53
  141. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +0 -73
  142. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +0 -91
  143. package/src/tools/shared/point/__tests__/base-point.test.jsx +0 -87
  144. package/src/tools/sine/__tests__/component.test.jsx +0 -51
  145. package/src/tools/vector/__tests__/component.test.jsx +0 -25
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "4.1.0-beta.7",
6
+ "version": "4.1.0-beta.9",
7
7
  "description": "Graphing components",
8
8
  "keywords": [
9
9
  "react",
@@ -23,9 +23,9 @@
23
23
  "@mui/icons-material": "^7.3.4",
24
24
  "@mui/material": "^7.3.4",
25
25
  "@pie-lib/drag": "^4.0.2",
26
- "@pie-lib/editable-html-tip-tap": "^2.2.0-beta.7",
26
+ "@pie-lib/editable-html-tip-tap": "^2.2.0-beta.9",
27
27
  "@pie-lib/graphing-utils": "^3.0.2",
28
- "@pie-lib/plot": "^4.1.0-beta.7",
28
+ "@pie-lib/plot": "^4.1.0-beta.9",
29
29
  "@pie-lib/render-ui": "^6.1.0",
30
30
  "@pie-lib/translator": "^4.0.2",
31
31
  "@visx/axis": "^3.0.0",
@@ -1,282 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
- var _react = _interopRequireDefault(require("react"));
6
- var _testUtils = require("@pie-lib/test-utils");
7
- var _d3Selection = require("d3-selection");
8
- var _bg = _interopRequireDefault(require("../bg"));
9
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- jest.mock('d3-selection', function () {
12
- return {
13
- select: jest.fn(),
14
- pointer: jest.fn(function () {
15
- return [50, 50];
16
- })
17
- };
18
- });
19
- describe('Bg', function () {
20
- var defaultProps;
21
- var mockRect;
22
- var clickHandler;
23
- beforeEach(function () {
24
- clickHandler = null;
25
- mockRect = {
26
- on: jest.fn(function (event, handler) {
27
- if (event === 'click') {
28
- clickHandler = handler;
29
- }
30
- }),
31
- node: jest.fn(function () {
32
- return {};
33
- })
34
- };
35
- _d3Selection.select.mockReturnValue(mockRect);
36
- defaultProps = {
37
- width: 500,
38
- height: 400,
39
- onClick: jest.fn(),
40
- graphProps: {
41
- domain: {
42
- min: -10,
43
- max: 10,
44
- step: 1,
45
- label: 'x',
46
- axisLabel: 'X'
47
- },
48
- range: {
49
- min: -10,
50
- max: 10,
51
- step: 1,
52
- label: 'y',
53
- axisLabel: 'Y'
54
- },
55
- size: {
56
- width: 500,
57
- height: 400
58
- },
59
- scale: {
60
- x: {
61
- invert: jest.fn(function (val) {
62
- return val / 10;
63
- })
64
- },
65
- y: {
66
- invert: jest.fn(function (val) {
67
- return val / 10;
68
- })
69
- }
70
- }
71
- }
72
- };
73
- });
74
- describe('rendering', function () {
75
- it('renders without crashing', function () {
76
- var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
77
- container = _render.container;
78
- expect(container).toBeTruthy();
79
- });
80
- it('renders a rect element', function () {
81
- var _render2 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
82
- container = _render2.container;
83
- var rect = container.querySelector('rect');
84
- expect(rect).toBeTruthy();
85
- });
86
- it('applies correct dimensions', function () {
87
- var _render3 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
88
- container = _render3.container;
89
- var rect = container.querySelector('rect');
90
-
91
- // Width and height should be expanded by padding * 2
92
- var padding = 10; // default padding
93
- expect(rect.getAttribute('width')).toBe(String(defaultProps.width + padding * 2));
94
- expect(rect.getAttribute('height')).toBe(String(defaultProps.height + padding * 2));
95
- });
96
- it('applies correct transform', function () {
97
- var _render4 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
98
- container = _render4.container;
99
- var rect = container.querySelector('rect');
100
- var padding = 10;
101
- expect(rect.getAttribute('transform')).toBe("translate(-".concat(padding, ", -").concat(padding, ")"));
102
- });
103
- it('sets fill opacity to make it invisible', function () {
104
- var _render5 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
105
- container = _render5.container;
106
- var rect = container.querySelector('rect');
107
- expect(rect.getAttribute('fill-opacity')).toBe('0.0');
108
- });
109
- });
110
- describe('componentDidMount', function () {
111
- it('attaches click handler to rect', function () {
112
- (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps));
113
- expect(_d3Selection.select).toHaveBeenCalled();
114
- expect(mockRect.on).toHaveBeenCalledWith('click', expect.any(Function));
115
- });
116
- });
117
- describe('getRectPadding', function () {
118
- it('returns 10 for normal graphs', function () {
119
- var _render6 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
120
- container = _render6.container;
121
- var rect = container.querySelector('rect');
122
- var padding = 10;
123
- expect(rect.getAttribute('width')).toBe(String(defaultProps.width + padding * 2));
124
- });
125
- it('returns 6 for graphs with thinner shapes', function () {
126
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
127
- graphProps: _objectSpread(_objectSpread({}, defaultProps.graphProps), {}, {
128
- domain: {
129
- min: -100,
130
- max: 100,
131
- step: 1,
132
- label: 'x',
133
- axisLabel: 'X'
134
- }
135
- })
136
- });
137
- var _render7 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], props)),
138
- container = _render7.container;
139
- var rect = container.querySelector('rect');
140
- var padding = 6;
141
- expect(rect.getAttribute('width')).toBe(String(props.width + padding * 2));
142
- });
143
- });
144
- describe('onRectClick', function () {
145
- it('calls onClick with snapped coordinates', function () {
146
- var _require = require('d3-selection'),
147
- pointer = _require.pointer;
148
- pointer.mockReturnValue([100, 100]);
149
- (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps));
150
- var event = new MouseEvent('click');
151
- clickHandler(event);
152
- expect(defaultProps.onClick).toHaveBeenCalled();
153
- var calledWith = defaultProps.onClick.mock.calls[0][0];
154
- expect(calledWith).toHaveProperty('x');
155
- expect(calledWith).toHaveProperty('y');
156
- });
157
- it('snaps coordinates to nearest tick', function () {
158
- var _require2 = require('d3-selection'),
159
- pointer = _require2.pointer;
160
- (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps));
161
- var event = new MouseEvent('click');
162
- clickHandler(event);
163
- expect(defaultProps.onClick).toHaveBeenCalled();
164
- var _defaultProps$onClick = defaultProps.onClick.mock.calls[0][0],
165
- x = _defaultProps$onClick.x,
166
- y = _defaultProps$onClick.y;
167
- expect(Number.isInteger(x) || x.toString().length <= 4).toBe(true);
168
- expect(Number.isInteger(y) || y.toString().length <= 4).toBe(true);
169
- });
170
- it('accounts for padding when converting coordinates', function () {
171
- var _require3 = require('d3-selection'),
172
- pointer = _require3.pointer;
173
- var coords = [50, 50];
174
- pointer.mockReturnValue(coords);
175
- (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps));
176
- var event = new MouseEvent('click');
177
- clickHandler(event);
178
- expect(defaultProps.graphProps.scale.x.invert).toHaveBeenCalled();
179
- expect(defaultProps.graphProps.scale.y.invert).toHaveBeenCalled();
180
- });
181
- });
182
- describe('shouldComponentUpdate', function () {
183
- it('returns true when width changes', function () {
184
- var _render8 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
185
- rerender = _render8.rerender;
186
- var newProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
187
- width: 600,
188
- graphProps: _objectSpread(_objectSpread({}, defaultProps.graphProps), {}, {
189
- size: {
190
- width: 600,
191
- height: defaultProps.height
192
- }
193
- })
194
- });
195
- expect(function () {
196
- rerender(/*#__PURE__*/_react["default"].createElement(_bg["default"], newProps));
197
- }).not.toThrow();
198
- });
199
- it('returns true when height changes', function () {
200
- var _render9 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
201
- rerender = _render9.rerender;
202
- var newProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
203
- height: 500,
204
- graphProps: _objectSpread(_objectSpread({}, defaultProps.graphProps), {}, {
205
- size: {
206
- width: defaultProps.width,
207
- height: 500
208
- }
209
- })
210
- });
211
- expect(function () {
212
- rerender(/*#__PURE__*/_react["default"].createElement(_bg["default"], newProps));
213
- }).not.toThrow();
214
- });
215
- it('returns true when graphProps domain/range changes', function () {
216
- var _render0 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], defaultProps)),
217
- rerender = _render0.rerender;
218
- var newProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
219
- graphProps: _objectSpread(_objectSpread({}, defaultProps.graphProps), {}, {
220
- domain: {
221
- min: -5,
222
- max: 5,
223
- step: 1,
224
- label: 'x',
225
- axisLabel: 'X'
226
- }
227
- })
228
- });
229
- expect(function () {
230
- rerender(/*#__PURE__*/_react["default"].createElement(_bg["default"], newProps));
231
- }).not.toThrow();
232
- });
233
- });
234
- describe('edge cases', function () {
235
- it('handles zero dimensions', function () {
236
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
237
- width: 0,
238
- height: 0
239
- });
240
- var _render1 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], props)),
241
- container = _render1.container;
242
- var rect = container.querySelector('rect');
243
- expect(rect).toBeTruthy();
244
- });
245
- it('handles large dimensions', function () {
246
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
247
- width: 10000,
248
- height: 10000
249
- });
250
- var _render10 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], props)),
251
- container = _render10.container;
252
- var rect = container.querySelector('rect');
253
- expect(rect).toBeTruthy();
254
- expect(rect.getAttribute('width')).toBe('10020');
255
- expect(rect.getAttribute('height')).toBe('10020');
256
- });
257
- it('handles negative coordinates in domain/range', function () {
258
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
259
- graphProps: _objectSpread(_objectSpread({}, defaultProps.graphProps), {}, {
260
- domain: {
261
- min: -100,
262
- max: -10,
263
- step: 1,
264
- label: 'x',
265
- axisLabel: 'X'
266
- },
267
- range: {
268
- min: -100,
269
- max: -10,
270
- step: 1,
271
- label: 'y',
272
- axisLabel: 'Y'
273
- }
274
- })
275
- });
276
- var _render11 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_bg["default"], props)),
277
- container = _render11.container;
278
- expect(container.querySelector('rect')).toBeTruthy();
279
- });
280
- });
281
- });
282
- //# sourceMappingURL=bg.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bg.test.js","names":["_react","_interopRequireDefault","require","_testUtils","_d3Selection","_bg","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","select","fn","pointer","describe","defaultProps","mockRect","clickHandler","beforeEach","on","event","handler","node","mockReturnValue","width","height","onClick","graphProps","domain","min","max","step","label","axisLabel","range","size","scale","x","invert","val","y","it","_render","render","createElement","container","expect","toBeTruthy","_render2","rect","querySelector","_render3","padding","getAttribute","toBe","String","_render4","concat","_render5","toHaveBeenCalled","toHaveBeenCalledWith","any","Function","_render6","props","_render7","_require","MouseEvent","calledWith","calls","toHaveProperty","_require2","_defaultProps$onClick","Number","isInteger","toString","_require3","coords","_render8","rerender","newProps","not","toThrow","_render9","_render0","_render1","_render10","_render11"],"sources":["../../src/__tests__/bg.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@pie-lib/test-utils';\nimport { select } from 'd3-selection';\nimport Bg from '../bg';\n\njest.mock('d3-selection', () => ({\n select: jest.fn(),\n pointer: jest.fn(() => [50, 50]),\n}));\n\ndescribe('Bg', () => {\n let defaultProps;\n let mockRect;\n let clickHandler;\n\n beforeEach(() => {\n clickHandler = null;\n mockRect = {\n on: jest.fn((event, handler) => {\n if (event === 'click') {\n clickHandler = handler;\n }\n }),\n node: jest.fn(() => ({})),\n };\n\n select.mockReturnValue(mockRect);\n\n defaultProps = {\n width: 500,\n height: 400,\n onClick: jest.fn(),\n graphProps: {\n domain: { min: -10, max: 10, step: 1, label: 'x', axisLabel: 'X' },\n range: { min: -10, max: 10, step: 1, label: 'y', axisLabel: 'Y' },\n size: { width: 500, height: 400 },\n scale: {\n x: {\n invert: jest.fn((val) => val / 10),\n },\n y: {\n invert: jest.fn((val) => val / 10),\n },\n },\n },\n };\n });\n\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = render(<Bg {...defaultProps} />);\n expect(container).toBeTruthy();\n });\n\n it('renders a rect element', () => {\n const { container } = render(<Bg {...defaultProps} />);\n const rect = container.querySelector('rect');\n expect(rect).toBeTruthy();\n });\n\n it('applies correct dimensions', () => {\n const { container } = render(<Bg {...defaultProps} />);\n const rect = container.querySelector('rect');\n\n // Width and height should be expanded by padding * 2\n const padding = 10; // default padding\n expect(rect.getAttribute('width')).toBe(String(defaultProps.width + padding * 2));\n expect(rect.getAttribute('height')).toBe(String(defaultProps.height + padding * 2));\n });\n\n it('applies correct transform', () => {\n const { container } = render(<Bg {...defaultProps} />);\n const rect = container.querySelector('rect');\n const padding = 10;\n\n expect(rect.getAttribute('transform')).toBe(`translate(-${padding}, -${padding})`);\n });\n\n it('sets fill opacity to make it invisible', () => {\n const { container } = render(<Bg {...defaultProps} />);\n const rect = container.querySelector('rect');\n\n expect(rect.getAttribute('fill-opacity')).toBe('0.0');\n });\n });\n\n describe('componentDidMount', () => {\n it('attaches click handler to rect', () => {\n render(<Bg {...defaultProps} />);\n\n expect(select).toHaveBeenCalled();\n expect(mockRect.on).toHaveBeenCalledWith('click', expect.any(Function));\n });\n });\n\n describe('getRectPadding', () => {\n it('returns 10 for normal graphs', () => {\n const { container } = render(<Bg {...defaultProps} />);\n const rect = container.querySelector('rect');\n const padding = 10;\n\n expect(rect.getAttribute('width')).toBe(String(defaultProps.width + padding * 2));\n });\n\n it('returns 6 for graphs with thinner shapes', () => {\n const props = {\n ...defaultProps,\n graphProps: {\n ...defaultProps.graphProps,\n domain: { min: -100, max: 100, step: 1, label: 'x', axisLabel: 'X' },\n },\n };\n\n const { container } = render(<Bg {...props} />);\n const rect = container.querySelector('rect');\n const padding = 6;\n\n expect(rect.getAttribute('width')).toBe(String(props.width + padding * 2));\n });\n });\n\n describe('onRectClick', () => {\n it('calls onClick with snapped coordinates', () => {\n const { pointer } = require('d3-selection');\n pointer.mockReturnValue([100, 100]);\n\n render(<Bg {...defaultProps} />);\n\n const event = new MouseEvent('click');\n clickHandler(event);\n\n expect(defaultProps.onClick).toHaveBeenCalled();\n const calledWith = defaultProps.onClick.mock.calls[0][0];\n expect(calledWith).toHaveProperty('x');\n expect(calledWith).toHaveProperty('y');\n });\n\n it('snaps coordinates to nearest tick', () => {\n const { pointer } = require('d3-selection');\n\n render(<Bg {...defaultProps} />);\n\n const event = new MouseEvent('click');\n clickHandler(event);\n\n expect(defaultProps.onClick).toHaveBeenCalled();\n const { x, y } = defaultProps.onClick.mock.calls[0][0];\n\n expect(Number.isInteger(x) || x.toString().length <= 4).toBe(true);\n expect(Number.isInteger(y) || y.toString().length <= 4).toBe(true);\n });\n\n it('accounts for padding when converting coordinates', () => {\n const { pointer } = require('d3-selection');\n const coords = [50, 50];\n pointer.mockReturnValue(coords);\n\n render(<Bg {...defaultProps} />);\n\n const event = new MouseEvent('click');\n clickHandler(event);\n\n expect(defaultProps.graphProps.scale.x.invert).toHaveBeenCalled();\n expect(defaultProps.graphProps.scale.y.invert).toHaveBeenCalled();\n });\n });\n\n describe('shouldComponentUpdate', () => {\n it('returns true when width changes', () => {\n const { rerender } = render(<Bg {...defaultProps} />);\n const newProps = {\n ...defaultProps,\n width: 600,\n graphProps: {\n ...defaultProps.graphProps,\n size: { width: 600, height: defaultProps.height },\n },\n };\n\n expect(() => {\n rerender(<Bg {...newProps} />);\n }).not.toThrow();\n });\n\n it('returns true when height changes', () => {\n const { rerender } = render(<Bg {...defaultProps} />);\n const newProps = {\n ...defaultProps,\n height: 500,\n graphProps: {\n ...defaultProps.graphProps,\n size: { width: defaultProps.width, height: 500 },\n },\n };\n\n expect(() => {\n rerender(<Bg {...newProps} />);\n }).not.toThrow();\n });\n\n it('returns true when graphProps domain/range changes', () => {\n const { rerender } = render(<Bg {...defaultProps} />);\n const newProps = {\n ...defaultProps,\n graphProps: {\n ...defaultProps.graphProps,\n domain: { min: -5, max: 5, step: 1, label: 'x', axisLabel: 'X' },\n },\n };\n\n expect(() => {\n rerender(<Bg {...newProps} />);\n }).not.toThrow();\n });\n });\n\n describe('edge cases', () => {\n it('handles zero dimensions', () => {\n const props = { ...defaultProps, width: 0, height: 0 };\n const { container } = render(<Bg {...props} />);\n const rect = container.querySelector('rect');\n\n expect(rect).toBeTruthy();\n });\n\n it('handles large dimensions', () => {\n const props = { ...defaultProps, width: 10000, height: 10000 };\n const { container } = render(<Bg {...props} />);\n const rect = container.querySelector('rect');\n\n expect(rect).toBeTruthy();\n expect(rect.getAttribute('width')).toBe('10020');\n expect(rect.getAttribute('height')).toBe('10020');\n });\n\n it('handles negative coordinates in domain/range', () => {\n const props = {\n ...defaultProps,\n graphProps: {\n ...defaultProps.graphProps,\n domain: { min: -100, max: -10, step: 1, label: 'x', axisLabel: 'X' },\n range: { min: -100, max: -10, step: 1, label: 'y', axisLabel: 'Y' },\n },\n };\n\n const { container } = render(<Bg {...props} />);\n expect(container.querySelector('rect')).toBeTruthy();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,276 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
5
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
- var _react = _interopRequireDefault(require("react"));
7
- var _testUtils = require("@pie-lib/test-utils");
8
- var _coordinatesLabel = require("../coordinates-label");
9
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- describe('CoordinatesLabel', function () {
12
- var defaultProps;
13
- var graphProps;
14
- beforeEach(function () {
15
- graphProps = {
16
- domain: {
17
- min: -10,
18
- max: 10,
19
- step: 1,
20
- label: 'x',
21
- axisLabel: 'X'
22
- },
23
- range: {
24
- min: -10,
25
- max: 10,
26
- step: 1,
27
- label: 'y',
28
- axisLabel: 'Y'
29
- },
30
- scale: {
31
- x: jest.fn(function (val) {
32
- return (val + 10) * 20;
33
- }),
34
- y: jest.fn(function (val) {
35
- return (10 - val) * 20;
36
- })
37
- }
38
- };
39
- defaultProps = {
40
- x: 5,
41
- y: 5,
42
- graphProps: graphProps
43
- };
44
- });
45
- describe('rendering', function () {
46
- it('renders without crashing', function () {
47
- var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps)),
48
- container = _render.container;
49
- expect(container).toBeTruthy();
50
- });
51
- it('displays formatted coordinates', function () {
52
- var _render2 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps)),
53
- container = _render2.container;
54
- var input = container.querySelector('input');
55
- expect(input.value).toBe('(5, 5)');
56
- });
57
- it('rounds coordinates to 4 decimal places', function () {
58
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
59
- x: 1.123456,
60
- y: 2.987654
61
- });
62
- var _render3 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
63
- container = _render3.container;
64
- var input = container.querySelector('input');
65
- expect(input.value).toBe('(1.1235, 2.9877)');
66
- });
67
- it('handles integer coordinates', function () {
68
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
69
- x: 0,
70
- y: 0
71
- });
72
- var _render4 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
73
- container = _render4.container;
74
- var input = container.querySelector('input');
75
- expect(input.value).toBe('(0, 0)');
76
- });
77
- it('handles negative coordinates', function () {
78
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
79
- x: -3,
80
- y: -7
81
- });
82
- var _render5 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
83
- container = _render5.container;
84
- var input = container.querySelector('input');
85
- expect(input.value).toBe('(-3, -7)');
86
- });
87
- it('renders as an input element', function () {
88
- var _render6 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps)),
89
- container = _render6.container;
90
- var input = container.querySelector('input');
91
- expect(input).toBeTruthy();
92
- expect(input.tagName).toBe('INPUT');
93
- });
94
- it('applies correct styles', function () {
95
- var _render7 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps)),
96
- container = _render7.container;
97
- var wrapper = container.firstChild;
98
- expect(wrapper).toHaveStyle({
99
- position: 'absolute'
100
- });
101
- expect(wrapper).toHaveStyle({
102
- pointerEvents: 'auto'
103
- });
104
- });
105
- });
106
- describe('getLabelPosition', function () {
107
- it('positions label to the right by default', function () {
108
- var position = (0, _coordinatesLabel.getLabelPosition)(graphProps, 0, 0, 60);
109
- expect(position.left).toBeGreaterThan(graphProps.scale.x(0));
110
- expect(position.top).toBeDefined();
111
- });
112
- it('positions label to the left when near right edge', function () {
113
- var x = 9; // Near max
114
- var labelLength = 100;
115
- var position = (0, _coordinatesLabel.getLabelPosition)(graphProps, x, 0, labelLength);
116
- expect(position.left).toBeLessThan(graphProps.scale.x(x));
117
- });
118
- it('adjusts top position for minimum y value', function () {
119
- var position = (0, _coordinatesLabel.getLabelPosition)(graphProps, 0, -10, 60);
120
- expect(position.top).toBe(graphProps.scale.y(-10) - 16);
121
- });
122
- it('adjusts top position for maximum y value', function () {
123
- var position = (0, _coordinatesLabel.getLabelPosition)(graphProps, 0, 10, 60);
124
- expect(position.top).toBe(graphProps.scale.y(10) - 0);
125
- });
126
- it('centers label vertically for middle values', function () {
127
- var position = (0, _coordinatesLabel.getLabelPosition)(graphProps, 0, 0, 60);
128
- expect(position.top).toBe(graphProps.scale.y(0) - 8);
129
- });
130
- it('applies left shift consistently', function () {
131
- var leftShift = 10;
132
- var labelLength = 60;
133
- var rightPos = (0, _coordinatesLabel.getLabelPosition)(graphProps, 0, 0, labelLength);
134
- expect(rightPos.left).toBe(graphProps.scale.x(0) + leftShift);
135
- var leftPos = (0, _coordinatesLabel.getLabelPosition)(graphProps, 9, 0, labelLength);
136
- expect(leftPos.left).toBe(graphProps.scale.x(9) - leftShift - labelLength);
137
- });
138
- });
139
- describe('label width calculation', function () {
140
- it('calculates width based on label length', function () {
141
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
142
- x: 1,
143
- y: 2
144
- });
145
- var _render8 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
146
- container = _render8.container;
147
- var wrapper = container.firstChild;
148
- var expectedWidth = 6 * 6;
149
- expect(wrapper).toHaveStyle({
150
- width: "".concat(expectedWidth, "px")
151
- });
152
- });
153
- it('adjusts width for longer coordinates', function () {
154
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
155
- x: -10.123,
156
- y: 10.456
157
- });
158
- var _render9 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
159
- container = _render9.container;
160
- var wrapper = container.firstChild;
161
- var style = window.getComputedStyle(wrapper);
162
- expect(parseInt(style.width)).toBeGreaterThan(42);
163
- });
164
- });
165
- describe('edge cases', function () {
166
- it('handles very small coordinates', function () {
167
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
168
- x: 0.0001,
169
- y: 0.0002
170
- });
171
- var _render0 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
172
- container = _render0.container;
173
- var input = container.querySelector('input');
174
- expect(input.value).toContain('(');
175
- expect(input.value).toContain(')');
176
- expect(input.value).toContain(',');
177
- });
178
- it('handles very large coordinates', function () {
179
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
180
- x: 999999,
181
- y: 888888
182
- });
183
- var _render1 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
184
- container = _render1.container;
185
- var input = container.querySelector('input');
186
- expect(input.value).toBe('(999999, 888888)');
187
- });
188
- it('handles zero coordinates', function () {
189
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
190
- x: 0,
191
- y: 0
192
- });
193
- var _render10 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
194
- container = _render10.container;
195
- var input = container.querySelector('input');
196
- expect(input.value).toBe('(0, 0)');
197
- });
198
- it('handles coordinates at domain/range boundaries', function () {
199
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
200
- x: 10,
201
- y: 10
202
- });
203
- var _render11 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
204
- container = _render11.container;
205
- var input = container.querySelector('input');
206
- expect(input.value).toBe('(10, 10)');
207
- });
208
- it('handles negative boundaries', function () {
209
- var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
210
- x: -10,
211
- y: -10
212
- });
213
- var _render12 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props)),
214
- container = _render12.container;
215
- var input = container.querySelector('input');
216
- expect(input.value).toBe('(-10, -10)');
217
- });
218
- });
219
- describe('prop types and validation', function () {
220
- it('accepts required props', function () {
221
- expect(function () {
222
- (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps));
223
- }).not.toThrow();
224
- });
225
- it('renders with missing optional props', function () {
226
- var props = {
227
- x: 1,
228
- y: 2,
229
- graphProps: graphProps
230
- };
231
- expect(function () {
232
- (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, props));
233
- }).not.toThrow();
234
- });
235
- });
236
- describe('updates', function () {
237
- it('updates when x coordinate changes', function () {
238
- var _render13 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps)),
239
- container = _render13.container,
240
- rerender = _render13.rerender;
241
- var input = container.querySelector('input');
242
- expect(input.value).toBe('(5, 5)');
243
- rerender(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, (0, _extends2["default"])({}, defaultProps, {
244
- x: 7
245
- })));
246
- input = container.querySelector('input');
247
- expect(input.value).toBe('(7, 5)');
248
- });
249
- it('updates when y coordinate changes', function () {
250
- var _render14 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps)),
251
- container = _render14.container,
252
- rerender = _render14.rerender;
253
- var input = container.querySelector('input');
254
- expect(input.value).toBe('(5, 5)');
255
- rerender(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, (0, _extends2["default"])({}, defaultProps, {
256
- y: 3
257
- })));
258
- input = container.querySelector('input');
259
- expect(input.value).toBe('(5, 3)');
260
- });
261
- it('updates position when coordinates change', function () {
262
- var _render15 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, defaultProps)),
263
- container = _render15.container,
264
- rerender = _render15.rerender;
265
- var initialStyle = window.getComputedStyle(container.firstChild);
266
- var initialLeft = initialStyle.left;
267
- rerender(/*#__PURE__*/_react["default"].createElement(_coordinatesLabel.CoordinatesLabel, (0, _extends2["default"])({}, defaultProps, {
268
- x: 8
269
- })));
270
- var newStyle = window.getComputedStyle(container.firstChild);
271
- var newLeft = newStyle.left;
272
- expect(newLeft).not.toBe(initialLeft);
273
- });
274
- });
275
- });
276
- //# sourceMappingURL=coordinates-label.test.js.map