@pie-lib/graphing-solution-set 4.0.12 → 4.1.0-beta

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 (69) hide show
  1. package/CHANGELOG.md +0 -40
  2. package/lib/__tests__/bg.test.js +282 -0
  3. package/lib/__tests__/bg.test.js.map +1 -0
  4. package/lib/__tests__/coordinates-label.test.js +276 -0
  5. package/lib/__tests__/coordinates-label.test.js.map +1 -0
  6. package/lib/__tests__/graph-with-controls.test.js +256 -0
  7. package/lib/__tests__/graph-with-controls.test.js.map +1 -0
  8. package/lib/__tests__/graph.test.js +113 -0
  9. package/lib/__tests__/graph.test.js.map +1 -0
  10. package/lib/__tests__/grid-setup.test.js +729 -0
  11. package/lib/__tests__/grid-setup.test.js.map +1 -0
  12. package/lib/__tests__/grid.test.js +29 -0
  13. package/lib/__tests__/grid.test.js.map +1 -0
  14. package/lib/__tests__/labels.test.js +45 -0
  15. package/lib/__tests__/labels.test.js.map +1 -0
  16. package/lib/__tests__/mark-label.test.js +133 -0
  17. package/lib/__tests__/mark-label.test.js.map +1 -0
  18. package/lib/__tests__/toggle-bar.test.js +146 -0
  19. package/lib/__tests__/toggle-bar.test.js.map +1 -0
  20. package/lib/__tests__/tool-menu.test.js +540 -0
  21. package/lib/__tests__/tool-menu.test.js.map +1 -0
  22. package/lib/__tests__/undo-redo.test.js +31 -0
  23. package/lib/__tests__/undo-redo.test.js.map +1 -0
  24. package/lib/__tests__/use-debounce.test.js +24 -0
  25. package/lib/__tests__/use-debounce.test.js.map +1 -0
  26. package/lib/__tests__/utils.js +70 -0
  27. package/lib/__tests__/utils.js.map +1 -0
  28. package/lib/__tests__/utils.test.js +123 -0
  29. package/lib/__tests__/utils.test.js.map +1 -0
  30. package/lib/axis/__tests__/arrow.test.js +60 -0
  31. package/lib/axis/__tests__/arrow.test.js.map +1 -0
  32. package/lib/axis/__tests__/axes.test.js +160 -0
  33. package/lib/axis/__tests__/axes.test.js.map +1 -0
  34. package/lib/container/__tests__/actions.test.js +108 -0
  35. package/lib/container/__tests__/actions.test.js.map +1 -0
  36. package/lib/container/__tests__/index.test.js +346 -0
  37. package/lib/container/__tests__/index.test.js.map +1 -0
  38. package/lib/container/__tests__/marks.test.js +259 -0
  39. package/lib/container/__tests__/marks.test.js.map +1 -0
  40. package/lib/container/__tests__/middleware.test.js +244 -0
  41. package/lib/container/__tests__/middleware.test.js.map +1 -0
  42. package/lib/container/__tests__/reducer.test.js +450 -0
  43. package/lib/container/__tests__/reducer.test.js.map +1 -0
  44. package/lib/tools/line/__tests__/component.test.js +45 -0
  45. package/lib/tools/line/__tests__/component.test.js.map +1 -0
  46. package/lib/tools/polygon/__tests__/component.test.js +501 -0
  47. package/lib/tools/polygon/__tests__/component.test.js.map +1 -0
  48. package/lib/tools/polygon/__tests__/index.test.js +92 -0
  49. package/lib/tools/polygon/__tests__/index.test.js.map +1 -0
  50. package/lib/tools/polygon/__tests__/line.test.js +30 -0
  51. package/lib/tools/polygon/__tests__/line.test.js.map +1 -0
  52. package/lib/tools/polygon/__tests__/polygon.test.js +61 -0
  53. package/lib/tools/polygon/__tests__/polygon.test.js.map +1 -0
  54. package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
  55. package/lib/tools/shared/__tests__/arrow-head.test.js.map +1 -0
  56. package/lib/tools/shared/line/__tests__/index.test.js +725 -0
  57. package/lib/tools/shared/line/__tests__/index.test.js.map +1 -0
  58. package/lib/tools/shared/line/__tests__/line-path.test.js +64 -0
  59. package/lib/tools/shared/line/__tests__/line-path.test.js.map +1 -0
  60. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +618 -0
  61. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +1 -0
  62. package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
  63. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +1 -0
  64. package/lib/tools/shared/point/__tests__/arrow.test.js +619 -0
  65. package/lib/tools/shared/point/__tests__/arrow.test.js.map +1 -0
  66. package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
  67. package/lib/tools/shared/point/__tests__/base-point.test.js.map +1 -0
  68. package/package.json +7 -7
  69. package/LICENSE.md +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinates-label.test.js","names":["_react","_interopRequireDefault","require","_testUtils","_coordinatesLabel","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","defaultProps","graphProps","beforeEach","domain","min","max","step","label","axisLabel","range","scale","x","jest","fn","val","y","it","_render","render","createElement","CoordinatesLabel","container","expect","toBeTruthy","_render2","input","querySelector","value","toBe","props","_render3","_render4","_render5","_render6","tagName","_render7","wrapper","firstChild","toHaveStyle","position","pointerEvents","getLabelPosition","left","toBeGreaterThan","top","toBeDefined","labelLength","toBeLessThan","leftShift","rightPos","leftPos","_render8","expectedWidth","width","concat","_render9","style","window","getComputedStyle","parseInt","_render0","toContain","_render1","_render10","_render11","_render12","not","toThrow","_render13","rerender","_extends2","_render14","_render15","initialStyle","initialLeft","newStyle","newLeft"],"sources":["../../src/__tests__/coordinates-label.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@pie-lib/test-utils';\nimport { CoordinatesLabel, getLabelPosition } from '../coordinates-label';\n\ndescribe('CoordinatesLabel', () => {\n let defaultProps;\n let graphProps;\n\n beforeEach(() => {\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 scale: {\n x: jest.fn((val) => (val + 10) * 20),\n y: jest.fn((val) => (10 - val) * 20),\n },\n };\n\n defaultProps = {\n x: 5,\n y: 5,\n graphProps,\n };\n });\n\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = render(<CoordinatesLabel {...defaultProps} />);\n expect(container).toBeTruthy();\n });\n\n it('displays formatted coordinates', () => {\n const { container } = render(<CoordinatesLabel {...defaultProps} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(5, 5)');\n });\n\n it('rounds coordinates to 4 decimal places', () => {\n const props = { ...defaultProps, x: 1.123456, y: 2.987654 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(1.1235, 2.9877)');\n });\n\n it('handles integer coordinates', () => {\n const props = { ...defaultProps, x: 0, y: 0 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(0, 0)');\n });\n\n it('handles negative coordinates', () => {\n const props = { ...defaultProps, x: -3, y: -7 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(-3, -7)');\n });\n\n it('renders as an input element', () => {\n const { container } = render(<CoordinatesLabel {...defaultProps} />);\n const input = container.querySelector('input');\n\n expect(input).toBeTruthy();\n expect(input.tagName).toBe('INPUT');\n });\n\n it('applies correct styles', () => {\n const { container } = render(<CoordinatesLabel {...defaultProps} />);\n const wrapper = container.firstChild;\n\n expect(wrapper).toHaveStyle({ position: 'absolute' });\n expect(wrapper).toHaveStyle({ pointerEvents: 'auto' });\n });\n });\n\n describe('getLabelPosition', () => {\n it('positions label to the right by default', () => {\n const position = getLabelPosition(graphProps, 0, 0, 60);\n\n expect(position.left).toBeGreaterThan(graphProps.scale.x(0));\n expect(position.top).toBeDefined();\n });\n\n it('positions label to the left when near right edge', () => {\n const x = 9; // Near max\n const labelLength = 100;\n const position = getLabelPosition(graphProps, x, 0, labelLength);\n\n expect(position.left).toBeLessThan(graphProps.scale.x(x));\n });\n\n it('adjusts top position for minimum y value', () => {\n const position = getLabelPosition(graphProps, 0, -10, 60);\n\n expect(position.top).toBe(graphProps.scale.y(-10) - 16);\n });\n\n it('adjusts top position for maximum y value', () => {\n const position = getLabelPosition(graphProps, 0, 10, 60);\n\n expect(position.top).toBe(graphProps.scale.y(10) - 0);\n });\n\n it('centers label vertically for middle values', () => {\n const position = getLabelPosition(graphProps, 0, 0, 60);\n\n expect(position.top).toBe(graphProps.scale.y(0) - 8);\n });\n\n it('applies left shift consistently', () => {\n const leftShift = 10;\n const labelLength = 60;\n\n const rightPos = getLabelPosition(graphProps, 0, 0, labelLength);\n expect(rightPos.left).toBe(graphProps.scale.x(0) + leftShift);\n\n const leftPos = getLabelPosition(graphProps, 9, 0, labelLength);\n expect(leftPos.left).toBe(graphProps.scale.x(9) - leftShift - labelLength);\n });\n });\n\n describe('label width calculation', () => {\n it('calculates width based on label length', () => {\n const props = { ...defaultProps, x: 1, y: 2 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const wrapper = container.firstChild;\n\n const expectedWidth = 6 * 6;\n expect(wrapper).toHaveStyle({ width: `${expectedWidth}px` });\n });\n\n it('adjusts width for longer coordinates', () => {\n const props = { ...defaultProps, x: -10.123, y: 10.456 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const wrapper = container.firstChild;\n\n const style = window.getComputedStyle(wrapper);\n expect(parseInt(style.width)).toBeGreaterThan(42);\n });\n });\n\n describe('edge cases', () => {\n it('handles very small coordinates', () => {\n const props = { ...defaultProps, x: 0.0001, y: 0.0002 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toContain('(');\n expect(input.value).toContain(')');\n expect(input.value).toContain(',');\n });\n\n it('handles very large coordinates', () => {\n const props = { ...defaultProps, x: 999999, y: 888888 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(999999, 888888)');\n });\n\n it('handles zero coordinates', () => {\n const props = { ...defaultProps, x: 0, y: 0 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(0, 0)');\n });\n\n it('handles coordinates at domain/range boundaries', () => {\n const props = { ...defaultProps, x: 10, y: 10 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(10, 10)');\n });\n\n it('handles negative boundaries', () => {\n const props = { ...defaultProps, x: -10, y: -10 };\n const { container } = render(<CoordinatesLabel {...props} />);\n const input = container.querySelector('input');\n\n expect(input.value).toBe('(-10, -10)');\n });\n });\n\n describe('prop types and validation', () => {\n it('accepts required props', () => {\n expect(() => {\n render(<CoordinatesLabel {...defaultProps} />);\n }).not.toThrow();\n });\n\n it('renders with missing optional props', () => {\n const props = {\n x: 1,\n y: 2,\n graphProps,\n };\n\n expect(() => {\n render(<CoordinatesLabel {...props} />);\n }).not.toThrow();\n });\n });\n\n describe('updates', () => {\n it('updates when x coordinate changes', () => {\n const { container, rerender } = render(<CoordinatesLabel {...defaultProps} />);\n let input = container.querySelector('input');\n expect(input.value).toBe('(5, 5)');\n\n rerender(<CoordinatesLabel {...defaultProps} x={7} />);\n input = container.querySelector('input');\n expect(input.value).toBe('(7, 5)');\n });\n\n it('updates when y coordinate changes', () => {\n const { container, rerender } = render(<CoordinatesLabel {...defaultProps} />);\n let input = container.querySelector('input');\n expect(input.value).toBe('(5, 5)');\n\n rerender(<CoordinatesLabel {...defaultProps} y={3} />);\n input = container.querySelector('input');\n expect(input.value).toBe('(5, 3)');\n });\n\n it('updates position when coordinates change', () => {\n const { container, rerender } = render(<CoordinatesLabel {...defaultProps} />);\n const initialStyle = window.getComputedStyle(container.firstChild);\n const initialLeft = initialStyle.left;\n\n rerender(<CoordinatesLabel {...defaultProps} x={8} />);\n const newStyle = window.getComputedStyle(container.firstChild);\n const newLeft = newStyle.left;\n\n expect(newLeft).not.toBe(initialLeft);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
6
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
7
+ var _testUtils = require("@pie-lib/test-utils");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _graphWithControls = require("../graph-with-controls");
10
+ var _tools = require("../tools");
11
+ 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; }
12
+ 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; }
13
+ // Mock DragProvider to avoid @dnd-kit React version conflicts
14
+ jest.mock('@pie-lib/drag', function () {
15
+ return {
16
+ DragProvider: function DragProvider(_ref) {
17
+ var children = _ref.children;
18
+ return /*#__PURE__*/_react["default"].createElement("div", {
19
+ "data-testid": "drag-provider"
20
+ }, children);
21
+ }
22
+ };
23
+ });
24
+
25
+ // Mock @dnd-kit/core hooks to avoid DndContext requirement
26
+ jest.mock('@dnd-kit/core', function () {
27
+ return {
28
+ useDraggable: jest.fn(function () {
29
+ return {
30
+ attributes: {
31
+ role: 'button',
32
+ tabIndex: 0
33
+ },
34
+ listeners: {
35
+ onPointerDown: jest.fn()
36
+ },
37
+ setNodeRef: jest.fn(),
38
+ transform: null,
39
+ transition: null,
40
+ isDragging: false
41
+ };
42
+ }),
43
+ useDroppable: jest.fn(function () {
44
+ return {
45
+ setNodeRef: jest.fn(),
46
+ isOver: false,
47
+ active: null
48
+ };
49
+ })
50
+ };
51
+ });
52
+
53
+ // Mock @dnd-kit/utilities for CSS transform
54
+ jest.mock('@dnd-kit/utilities', function () {
55
+ return {
56
+ CSS: {
57
+ Transform: {
58
+ toString: jest.fn(function (transform) {
59
+ return transform ? 'translate3d(0, 0, 0)' : '';
60
+ })
61
+ }
62
+ }
63
+ };
64
+ });
65
+
66
+ // Mock @dnd-kit/sortable for arrayMove
67
+ jest.mock('@dnd-kit/sortable', function () {
68
+ return {
69
+ arrayMove: jest.fn(function (array, from, to) {
70
+ var newArray = (0, _toConsumableArray2["default"])(array);
71
+ var _newArray$splice = newArray.splice(from, 1),
72
+ _newArray$splice2 = (0, _slicedToArray2["default"])(_newArray$splice, 1),
73
+ removed = _newArray$splice2[0];
74
+ newArray.splice(to, 0, removed);
75
+ return newArray;
76
+ })
77
+ };
78
+ });
79
+ var line = {
80
+ type: 'line',
81
+ from: {
82
+ x: 0,
83
+ y: 0
84
+ },
85
+ to: {
86
+ x: 1,
87
+ y: 1
88
+ },
89
+ label: 'Line',
90
+ building: true
91
+ };
92
+ var polygon = {
93
+ type: 'polygon',
94
+ points: [{
95
+ x: 0,
96
+ y: 0
97
+ }, {
98
+ x: 1,
99
+ y: 1
100
+ }, {
101
+ x: 2,
102
+ y: 2
103
+ }]
104
+ };
105
+ var marks = [line, polygon];
106
+
107
+ // Pure function tests - keep as-is
108
+ describe('setToolbarAvailability', function () {
109
+ it('sets `toolbar: true` if tool should be displayed in toolbar - all tools', function () {
110
+ var result = (0, _graphWithControls.setToolbarAvailability)(_tools.allTools);
111
+ var allTrue = new Array(_tools.toolsArr.length).fill(true);
112
+ expect(result.map(function (r) {
113
+ return r.toolbar;
114
+ })).toEqual(allTrue);
115
+ });
116
+ it('sets `toolbar: true` if tool should be displayed in toolbar - few tools', function () {
117
+ var result = (0, _graphWithControls.setToolbarAvailability)(['line', 'polygon']);
118
+ var allOthersFalse = new Array(_tools.toolsArr.length - 2).fill(false);
119
+ expect(result.filter(function (r) {
120
+ return r.type === 'line' || r.type === 'polygon';
121
+ }).map(function (r) {
122
+ return r.toolbar;
123
+ })).toEqual([true, true]);
124
+ expect(result.filter(function (r) {
125
+ return r.type !== 'line' && r.type !== 'polygon';
126
+ }).map(function (r) {
127
+ return r.toolbar;
128
+ })).toEqual(allOthersFalse);
129
+ });
130
+ });
131
+ describe('toolIsAvailable', function () {
132
+ var tools = (0, _graphWithControls.setToolbarAvailability)(['line', 'polygon']);
133
+ it('returns true if tool is available', function () {
134
+ expect((0, _graphWithControls.toolIsAvailable)(tools, (0, _tools.line)())).toEqual(true);
135
+ });
136
+ });
137
+ describe('getAvailableTool', function () {
138
+ it('returns the first available tool in list if there is any', function () {
139
+ var tools = (0, _graphWithControls.setToolbarAvailability)(['line', 'polygon']);
140
+ expect((0, _graphWithControls.getAvailableTool)(tools).toolbar).toEqual(true);
141
+ });
142
+ it('returns undefined list if there is no available tool', function () {
143
+ var tools = (0, _graphWithControls.setToolbarAvailability)([]);
144
+ expect((0, _graphWithControls.getAvailableTool)(tools)).toEqual(undefined);
145
+ });
146
+ });
147
+ describe('filterByValidToolTypes', function () {
148
+ it('filters marks by valid types', function () {
149
+ var marks = [{
150
+ type: 'polygon'
151
+ }, {
152
+ type: 'a'
153
+ }, {
154
+ type: 'b'
155
+ }, {
156
+ type: 'line'
157
+ }, {
158
+ type: 'c'
159
+ }];
160
+ expect((0, _graphWithControls.filterByValidToolTypes)(marks)).toEqual([{
161
+ type: 'polygon'
162
+ }, {
163
+ type: 'line'
164
+ }]);
165
+ });
166
+ });
167
+ describe('filterByVisibleToolTypes', function () {
168
+ it('filters marks by the types that should be visible', function () {
169
+ expect((0, _graphWithControls.filterByVisibleToolTypes)(['line', 'polygon'], [{
170
+ type: 'point'
171
+ }, {
172
+ type: 'line'
173
+ }, {
174
+ type: 'polygon'
175
+ }])).toEqual([{
176
+ type: 'line'
177
+ }, {
178
+ type: 'polygon'
179
+ }]);
180
+ expect((0, _graphWithControls.filterByVisibleToolTypes)(['line'], [{
181
+ type: 'point'
182
+ }, {
183
+ type: 'line'
184
+ }, {
185
+ type: 'circle'
186
+ }])).toEqual([{
187
+ type: 'line'
188
+ }]);
189
+ expect((0, _graphWithControls.filterByVisibleToolTypes)(['segment'], [{
190
+ type: 'point'
191
+ }, {
192
+ type: 'line'
193
+ }, {
194
+ type: 'circle'
195
+ }])).toEqual([]);
196
+ });
197
+ });
198
+ describe('GraphWithControls', function () {
199
+ var onChangeMarks = jest.fn();
200
+ beforeEach(function () {
201
+ onChangeMarks.mockClear();
202
+ });
203
+ var defaultProps = function defaultProps() {
204
+ return {
205
+ axesSettings: {
206
+ includeArrows: true
207
+ },
208
+ className: '',
209
+ coordinatesOnHover: false,
210
+ domain: {
211
+ min: 0,
212
+ max: 10,
213
+ step: 1
214
+ },
215
+ labels: {
216
+ top: 'a',
217
+ left: 'b',
218
+ right: 'c',
219
+ bottom: 'd'
220
+ },
221
+ labelModeEnabled: true,
222
+ marks: marks,
223
+ onChangeMarks: onChangeMarks,
224
+ range: {
225
+ min: 0,
226
+ max: 10,
227
+ step: 1
228
+ },
229
+ size: {
230
+ width: 500,
231
+ height: 500
232
+ },
233
+ title: 'Title',
234
+ toolbarTools: _tools.allTools,
235
+ language: 'en'
236
+ };
237
+ };
238
+ var initialProps = defaultProps();
239
+ var renderComponent = function renderComponent(extras) {
240
+ var props = _objectSpread(_objectSpread({}, initialProps), extras);
241
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graphWithControls.GraphWithControls, props));
242
+ };
243
+ describe('rendering', function () {
244
+ it('renders without crashing', function () {
245
+ var _renderComponent = renderComponent(),
246
+ container = _renderComponent.container;
247
+ expect(container.firstChild).toBeInTheDocument();
248
+ });
249
+ it('renders Graph component', function () {
250
+ var _renderComponent2 = renderComponent(),
251
+ container = _renderComponent2.container;
252
+ expect(container.querySelector('svg')).toBeInTheDocument();
253
+ });
254
+ });
255
+ });
256
+ //# sourceMappingURL=graph-with-controls.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-with-controls.test.js","names":["_testUtils","require","_react","_interopRequireDefault","_graphWithControls","_tools","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","DragProvider","_ref","children","createElement","useDraggable","fn","attributes","role","tabIndex","listeners","onPointerDown","setNodeRef","transform","transition","isDragging","useDroppable","isOver","active","CSS","Transform","toString","arrayMove","array","from","to","newArray","_toConsumableArray2","_newArray$splice","splice","_newArray$splice2","_slicedToArray2","removed","line","type","x","y","label","building","polygon","points","marks","describe","it","result","setToolbarAvailability","allTools","allTrue","Array","toolsArr","fill","expect","map","toolbar","toEqual","allOthersFalse","tools","toolIsAvailable","lineTool","getAvailableTool","undefined","filterByValidToolTypes","filterByVisibleToolTypes","onChangeMarks","beforeEach","mockClear","defaultProps","axesSettings","includeArrows","className","coordinatesOnHover","domain","min","max","step","labels","top","left","right","bottom","labelModeEnabled","range","size","width","height","title","toolbarTools","language","initialProps","renderComponent","extras","props","render","GraphWithControls","_renderComponent","container","firstChild","toBeInTheDocument","_renderComponent2","querySelector"],"sources":["../../src/__tests__/graph-with-controls.test.jsx"],"sourcesContent":["import { render } from '@pie-lib/test-utils';\nimport React from 'react';\nimport {\n filterByValidToolTypes,\n filterByVisibleToolTypes,\n getAvailableTool,\n GraphWithControls,\n setToolbarAvailability,\n toolIsAvailable,\n} from '../graph-with-controls';\nimport { allTools, line as lineTool, toolsArr } from '../tools';\n\n// Mock DragProvider to avoid @dnd-kit React version conflicts\njest.mock('@pie-lib/drag', () => ({\n DragProvider: ({ children }) => <div data-testid=\"drag-provider\">{children}</div>,\n}));\n\n// Mock @dnd-kit/core hooks to avoid DndContext requirement\njest.mock('@dnd-kit/core', () => ({\n useDraggable: jest.fn(() => ({\n attributes: {\n role: 'button',\n tabIndex: 0,\n },\n listeners: {\n onPointerDown: jest.fn(),\n },\n setNodeRef: jest.fn(),\n transform: null,\n transition: null,\n isDragging: false,\n })),\n useDroppable: jest.fn(() => ({\n setNodeRef: jest.fn(),\n isOver: false,\n active: null,\n })),\n}));\n\n// Mock @dnd-kit/utilities for CSS transform\njest.mock('@dnd-kit/utilities', () => ({\n CSS: {\n Transform: {\n toString: jest.fn((transform) => (transform ? 'translate3d(0, 0, 0)' : '')),\n },\n },\n}));\n\n// Mock @dnd-kit/sortable for arrayMove\njest.mock('@dnd-kit/sortable', () => ({\n arrayMove: jest.fn((array, from, to) => {\n const newArray = [...array];\n const [removed] = newArray.splice(from, 1);\n newArray.splice(to, 0, removed);\n return newArray;\n }),\n}));\n\nconst line = {\n type: 'line',\n from: { x: 0, y: 0 },\n to: { x: 1, y: 1 },\n label: 'Line',\n building: true,\n};\n\nconst polygon = {\n type: 'polygon',\n points: [\n { x: 0, y: 0 },\n { x: 1, y: 1 },\n { x: 2, y: 2 },\n ],\n};\n\nconst marks = [line, polygon];\n\n// Pure function tests - keep as-is\ndescribe('setToolbarAvailability', () => {\n it('sets `toolbar: true` if tool should be displayed in toolbar - all tools', () => {\n const result = setToolbarAvailability(allTools);\n const allTrue = new Array(toolsArr.length).fill(true);\n\n expect(result.map((r) => r.toolbar)).toEqual(allTrue);\n });\n\n it('sets `toolbar: true` if tool should be displayed in toolbar - few tools', () => {\n const result = setToolbarAvailability(['line', 'polygon']);\n const allOthersFalse = new Array(toolsArr.length - 2).fill(false);\n\n expect(result.filter((r) => r.type === 'line' || r.type === 'polygon').map((r) => r.toolbar)).toEqual([true, true]);\n expect(result.filter((r) => r.type !== 'line' && r.type !== 'polygon').map((r) => r.toolbar)).toEqual(\n allOthersFalse,\n );\n });\n});\n\ndescribe('toolIsAvailable', () => {\n const tools = setToolbarAvailability(['line', 'polygon']);\n\n it('returns true if tool is available', () => {\n expect(toolIsAvailable(tools, lineTool())).toEqual(true);\n });\n});\n\ndescribe('getAvailableTool', () => {\n it('returns the first available tool in list if there is any', () => {\n const tools = setToolbarAvailability(['line', 'polygon']);\n\n expect(getAvailableTool(tools).toolbar).toEqual(true);\n });\n\n it('returns undefined list if there is no available tool', () => {\n const tools = setToolbarAvailability([]);\n\n expect(getAvailableTool(tools)).toEqual(undefined);\n });\n});\n\ndescribe('filterByValidToolTypes', () => {\n it('filters marks by valid types', () => {\n const marks = [{ type: 'polygon' }, { type: 'a' }, { type: 'b' }, { type: 'line' }, { type: 'c' }];\n\n expect(filterByValidToolTypes(marks)).toEqual([{ type: 'polygon' }, { type: 'line' }]);\n });\n});\n\ndescribe('filterByVisibleToolTypes', () => {\n it('filters marks by the types that should be visible', () => {\n expect(\n filterByVisibleToolTypes(['line', 'polygon'], [{ type: 'point' }, { type: 'line' }, { type: 'polygon' }]),\n ).toEqual([{ type: 'line' }, { type: 'polygon' }]);\n\n expect(filterByVisibleToolTypes(['line'], [{ type: 'point' }, { type: 'line' }, { type: 'circle' }])).toEqual([\n { type: 'line' },\n ]);\n\n expect(filterByVisibleToolTypes(['segment'], [{ type: 'point' }, { type: 'line' }, { type: 'circle' }])).toEqual(\n [],\n );\n });\n});\n\ndescribe('GraphWithControls', () => {\n let onChangeMarks = jest.fn();\n\n beforeEach(() => {\n onChangeMarks.mockClear();\n });\n\n const defaultProps = () => ({\n axesSettings: { includeArrows: true },\n className: '',\n coordinatesOnHover: false,\n domain: { min: 0, max: 10, step: 1 },\n labels: { top: 'a', left: 'b', right: 'c', bottom: 'd' },\n labelModeEnabled: true,\n marks,\n onChangeMarks,\n range: { min: 0, max: 10, step: 1 },\n size: { width: 500, height: 500 },\n title: 'Title',\n toolbarTools: allTools,\n language: 'en',\n });\n const initialProps = defaultProps();\n\n const renderComponent = (extras) => {\n const props = { ...initialProps, ...extras };\n return render(<GraphWithControls {...props} />);\n };\n\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = renderComponent();\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders Graph component', () => {\n const { container } = renderComponent();\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+ var _testUtils = require("@pie-lib/test-utils");
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _graph = _interopRequireWildcard(require("../graph"));
9
+ var _tools = require("../tools");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
11
+ 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; }
12
+ 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; }
13
+ // Pure function tests - keep as-is
14
+ describe('removeBuildingToolIfCurrentToolDiffers', function () {
15
+ var marks = [{
16
+ type: 'point',
17
+ x: 2,
18
+ y: 2,
19
+ label: 'Point',
20
+ showLabel: true
21
+ }, {
22
+ type: 'line',
23
+ from: {
24
+ x: 0,
25
+ y: 0
26
+ },
27
+ label: 'Line',
28
+ building: true
29
+ }];
30
+ it('keeps all marks if currentTool is the same', function () {
31
+ expect((0, _graph.removeBuildingToolIfCurrentToolDiffers)({
32
+ marks: marks,
33
+ currentTool: {
34
+ type: 'line'
35
+ }
36
+ })).toEqual(marks);
37
+ });
38
+ it('removes building marks if currentTool is different', function () {
39
+ expect((0, _graph.removeBuildingToolIfCurrentToolDiffers)({
40
+ marks: marks,
41
+ currentTool: {
42
+ type: 'different'
43
+ }
44
+ })).toEqual([marks[0]]);
45
+ });
46
+ });
47
+
48
+ // Note: Instance method tests have been removed. Component behavior should be tested
49
+ // through user interactions and integration tests.
50
+ describe('Graph', function () {
51
+ var onChangeMarks = jest.fn();
52
+ beforeEach(function () {
53
+ onChangeMarks.mockClear();
54
+ });
55
+ var complete = jest.fn();
56
+ var addPoint = jest.fn();
57
+ var currentTool = _tools.toolsArr[0];
58
+ currentTool.complete = complete;
59
+ currentTool.addPoint = addPoint;
60
+ var props = {
61
+ className: 'className',
62
+ onChangeMarks: onChangeMarks,
63
+ tools: _tools.toolsArr,
64
+ domain: {
65
+ min: 0,
66
+ max: 1,
67
+ step: 1
68
+ },
69
+ range: {
70
+ min: 0,
71
+ max: 1,
72
+ step: 1
73
+ },
74
+ size: {
75
+ width: 400,
76
+ height: 400
77
+ },
78
+ currentTool: currentTool
79
+ };
80
+ var renderComponent = function renderComponent(extras) {
81
+ var properties = _objectSpread(_objectSpread({}, props), {}, {
82
+ marks: [{
83
+ type: 'point',
84
+ x: 2,
85
+ y: 2,
86
+ label: 'Point',
87
+ showLabel: true
88
+ }, {
89
+ type: 'line',
90
+ from: {
91
+ x: 0,
92
+ y: 0
93
+ },
94
+ label: 'Line',
95
+ building: true
96
+ }]
97
+ }, extras);
98
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_graph["default"], properties));
99
+ };
100
+ describe('rendering', function () {
101
+ it('renders without crashing', function () {
102
+ var _renderComponent = renderComponent(),
103
+ container = _renderComponent.container;
104
+ expect(container.firstChild).toBeInTheDocument();
105
+ });
106
+ it('renders SVG graph', function () {
107
+ var _renderComponent2 = renderComponent(),
108
+ container = _renderComponent2.container;
109
+ expect(container.querySelector('svg')).toBeInTheDocument();
110
+ });
111
+ });
112
+ });
113
+ //# sourceMappingURL=graph.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.test.js","names":["_testUtils","require","_react","_interopRequireDefault","_graph","_interopRequireWildcard","_tools","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","describe","marks","type","x","y","label","showLabel","from","building","it","expect","removeBuildingToolIfCurrentToolDiffers","currentTool","toEqual","onChangeMarks","jest","fn","beforeEach","mockClear","complete","addPoint","toolsArr","props","className","tools","domain","min","max","step","range","size","width","height","renderComponent","extras","properties","render","createElement","_renderComponent","container","firstChild","toBeInTheDocument","_renderComponent2","querySelector"],"sources":["../../src/__tests__/graph.test.jsx"],"sourcesContent":["import { render } from '@pie-lib/test-utils';\nimport React from 'react';\n\nimport Graph, { removeBuildingToolIfCurrentToolDiffers } from '../graph';\nimport { toolsArr } from '../tools';\n\n// Pure function tests - keep as-is\ndescribe('removeBuildingToolIfCurrentToolDiffers', () => {\n let marks = [\n {\n type: 'point',\n x: 2,\n y: 2,\n label: 'Point',\n showLabel: true,\n },\n {\n type: 'line',\n from: { x: 0, y: 0 },\n label: 'Line',\n building: true,\n },\n ];\n\n it('keeps all marks if currentTool is the same', () => {\n expect(removeBuildingToolIfCurrentToolDiffers({ marks, currentTool: { type: 'line' } })).toEqual(marks);\n });\n\n it('removes building marks if currentTool is different', () => {\n expect(removeBuildingToolIfCurrentToolDiffers({ marks, currentTool: { type: 'different' } })).toEqual([marks[0]]);\n });\n});\n\n// Note: Instance method tests have been removed. Component behavior should be tested\n// through user interactions and integration tests.\ndescribe('Graph', () => {\n let onChangeMarks = jest.fn();\n\n beforeEach(() => {\n onChangeMarks.mockClear();\n });\n\n const complete = jest.fn();\n const addPoint = jest.fn();\n const currentTool = toolsArr[0];\n currentTool.complete = complete;\n currentTool.addPoint = addPoint;\n\n const props = {\n className: 'className',\n onChangeMarks,\n tools: toolsArr,\n domain: { min: 0, max: 1, step: 1 },\n range: { min: 0, max: 1, step: 1 },\n size: { width: 400, height: 400 },\n currentTool,\n };\n\n const renderComponent = (extras) => {\n const properties = {\n ...props,\n marks: [\n {\n type: 'point',\n x: 2,\n y: 2,\n label: 'Point',\n showLabel: true,\n },\n {\n type: 'line',\n from: { x: 0, y: 0 },\n label: 'Line',\n building: true,\n },\n ],\n ...extras,\n };\n return render(<Graph {...properties} />);\n };\n\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = renderComponent();\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders SVG graph', () => {\n const { container } = renderComponent();\n expect(container.querySelector('svg')).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}