@pie-lib/graphing 4.0.14 → 4.1.0-beta.1

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 (99) hide show
  1. package/CHANGELOG.md +0 -46
  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 +275 -0
  7. package/lib/__tests__/graph-with-controls.test.js.map +1 -0
  8. package/lib/__tests__/graph.test.js +927 -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__/key-legend.test.js +321 -0
  15. package/lib/__tests__/key-legend.test.js.map +1 -0
  16. package/lib/__tests__/label-svg-icon.test.js +373 -0
  17. package/lib/__tests__/label-svg-icon.test.js.map +1 -0
  18. package/lib/__tests__/labels.test.js +61 -0
  19. package/lib/__tests__/labels.test.js.map +1 -0
  20. package/lib/__tests__/mark-label.test.js +133 -0
  21. package/lib/__tests__/mark-label.test.js.map +1 -0
  22. package/lib/__tests__/toggle-bar.test.js +197 -0
  23. package/lib/__tests__/toggle-bar.test.js.map +1 -0
  24. package/lib/__tests__/tool-menu.test.js +151 -0
  25. package/lib/__tests__/tool-menu.test.js.map +1 -0
  26. package/lib/__tests__/undo-redo.test.js +31 -0
  27. package/lib/__tests__/undo-redo.test.js.map +1 -0
  28. package/lib/__tests__/use-debounce.test.js +24 -0
  29. package/lib/__tests__/use-debounce.test.js.map +1 -0
  30. package/lib/__tests__/utils.js +70 -0
  31. package/lib/__tests__/utils.js.map +1 -0
  32. package/lib/__tests__/utils.test.js +123 -0
  33. package/lib/__tests__/utils.test.js.map +1 -0
  34. package/lib/axis/__tests__/arrow.test.js +60 -0
  35. package/lib/axis/__tests__/arrow.test.js.map +1 -0
  36. package/lib/axis/__tests__/axes.test.js +195 -0
  37. package/lib/axis/__tests__/axes.test.js.map +1 -0
  38. package/lib/container/__tests__/actions.test.js +108 -0
  39. package/lib/container/__tests__/actions.test.js.map +1 -0
  40. package/lib/container/__tests__/index.test.js +503 -0
  41. package/lib/container/__tests__/index.test.js.map +1 -0
  42. package/lib/container/__tests__/marks.test.js +259 -0
  43. package/lib/container/__tests__/marks.test.js.map +1 -0
  44. package/lib/container/__tests__/middleware.test.js +244 -0
  45. package/lib/container/__tests__/middleware.test.js.map +1 -0
  46. package/lib/container/__tests__/reducer.test.js +450 -0
  47. package/lib/container/__tests__/reducer.test.js.map +1 -0
  48. package/lib/tools/absolute/__tests__/component.test.js +65 -0
  49. package/lib/tools/absolute/__tests__/component.test.js.map +1 -0
  50. package/lib/tools/circle/__tests__/bg-circle.test.js +33 -0
  51. package/lib/tools/circle/__tests__/bg-circle.test.js.map +1 -0
  52. package/lib/tools/circle/__tests__/component.test.js +615 -0
  53. package/lib/tools/circle/__tests__/component.test.js.map +1 -0
  54. package/lib/tools/circle/__tests__/index.test.js +576 -0
  55. package/lib/tools/circle/__tests__/index.test.js.map +1 -0
  56. package/lib/tools/exponential/__tests__/component.test.js +64 -0
  57. package/lib/tools/exponential/__tests__/component.test.js.map +1 -0
  58. package/lib/tools/exponential/__tests__/index.test.js +828 -0
  59. package/lib/tools/exponential/__tests__/index.test.js.map +1 -0
  60. package/lib/tools/line/__tests__/component.test.js +45 -0
  61. package/lib/tools/line/__tests__/component.test.js.map +1 -0
  62. package/lib/tools/parabola/__tests__/component.test.js +64 -0
  63. package/lib/tools/parabola/__tests__/component.test.js.map +1 -0
  64. package/lib/tools/parabola/__tests__/index.test.js +564 -0
  65. package/lib/tools/parabola/__tests__/index.test.js.map +1 -0
  66. package/lib/tools/point/__tests__/component.test.js +434 -0
  67. package/lib/tools/point/__tests__/component.test.js.map +1 -0
  68. package/lib/tools/point/__tests__/index.test.js +262 -0
  69. package/lib/tools/point/__tests__/index.test.js.map +1 -0
  70. package/lib/tools/polygon/__tests__/component.test.js +485 -0
  71. package/lib/tools/polygon/__tests__/component.test.js.map +1 -0
  72. package/lib/tools/polygon/__tests__/index.test.js +303 -0
  73. package/lib/tools/polygon/__tests__/index.test.js.map +1 -0
  74. package/lib/tools/polygon/__tests__/line.test.js +50 -0
  75. package/lib/tools/polygon/__tests__/line.test.js.map +1 -0
  76. package/lib/tools/polygon/__tests__/polygon.test.js +85 -0
  77. package/lib/tools/polygon/__tests__/polygon.test.js.map +1 -0
  78. package/lib/tools/ray/__tests__/component.test.js +35 -0
  79. package/lib/tools/ray/__tests__/component.test.js.map +1 -0
  80. package/lib/tools/segment/__tests__/component.test.js +35 -0
  81. package/lib/tools/segment/__tests__/component.test.js.map +1 -0
  82. package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
  83. package/lib/tools/shared/__tests__/arrow-head.test.js.map +1 -0
  84. package/lib/tools/shared/line/__tests__/index.test.js +124 -0
  85. package/lib/tools/shared/line/__tests__/index.test.js.map +1 -0
  86. package/lib/tools/shared/line/__tests__/line-path.test.js +62 -0
  87. package/lib/tools/shared/line/__tests__/line-path.test.js.map +1 -0
  88. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +90 -0
  89. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +1 -0
  90. package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
  91. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +1 -0
  92. package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
  93. package/lib/tools/shared/point/__tests__/base-point.test.js.map +1 -0
  94. package/lib/tools/sine/__tests__/component.test.js +72 -0
  95. package/lib/tools/sine/__tests__/component.test.js.map +1 -0
  96. package/lib/tools/vector/__tests__/component.test.js +32 -0
  97. package/lib/tools/vector/__tests__/component.test.js.map +1 -0
  98. package/package.json +6 -6
  99. package/LICENSE.md +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark-label.test.js","names":["_testUtils","require","_react","_interopRequireDefault","_markLabel","_utils","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","onChange","jest","fn","inputRef","renderComponent","extras","defaults","classes","className","mark","x","y","graphProps","getGraphProps","props","render","createElement","MarkLabel","it","_renderComponent","container","expect","firstChild","toBeInTheDocument","_renderComponent2","assertPosition","rect","expected","concat","width","height","result","position","toEqual","assertCoordinates","pos","left","top","coordinates"],"sources":["../../src/__tests__/mark-label.test.jsx"],"sourcesContent":["import { render } from '@pie-lib/test-utils';\nimport React from 'react';\nimport { coordinates, MarkLabel, position } from '../mark-label';\nimport { graphProps as getGraphProps } from './utils';\n\ndescribe('MarkLabel', () => {\n let onChange = jest.fn();\n let inputRef = jest.fn();\n const renderComponent = (extras) => {\n const defaults = {\n classes: {},\n className: 'className',\n onChange,\n inputRef,\n mark: { x: 1, y: 1 },\n graphProps: getGraphProps(0, 10, 0, 10),\n };\n const props = { ...defaults, ...extras };\n return render(<MarkLabel {...props} />);\n };\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = renderComponent();\n expect(container.firstChild).toBeInTheDocument();\n });\n it('renders with different mark position', () => {\n const { container } = renderComponent({ mark: { x: 10, y: 10 } });\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n});\n\ndescribe('position', () => {\n const assertPosition = (mark, rect, expected) => {\n it(`${mark.x},${mark.y} + ${rect.width},${rect.height} => ${expected}`, () => {\n // we set range.min to a value because in pixels - the greater the Y the lower down on the screen.\n const graphProps = getGraphProps(0, 12, 12, 0);\n const result = position(graphProps, mark, rect);\n expect(result).toEqual(expected);\n });\n };\n\n assertPosition({ x: 0, y: 0 }, { width: 10, height: 10 }, 'top-left');\n assertPosition({ x: 0, y: 0 }, { width: 1, height: 1 }, 'bottom-right');\n assertPosition({ x: 0, y: 0 }, { width: 10, height: 0 }, 'bottom-left');\n assertPosition({ x: 0, y: 0 }, { width: 0, height: 10 }, 'top-right');\n});\n\ndescribe('coordinates', () => {\n const assertCoordinates = (mark, rect, pos, expected) => {\n it(`${mark.x}, ${mark.y} -> ${pos} = ${expected.left}, ${expected.top}`, () => {\n const result = coordinates(getGraphProps(), mark, rect, pos);\n expect(result).toEqual(expected);\n });\n };\n assertCoordinates({ x: 0, y: 0 }, { width: 0, height: 0 }, 'top-left', { left: -5, top: -5 });\n assertCoordinates({ x: 0, y: 0 }, { width: 0, height: 0 }, 'bottom-left', { left: -5, top: 5 });\n assertCoordinates({ x: 0, y: 0 }, { width: 0, height: 0 }, 'top-right', { left: 5, top: -5 });\n assertCoordinates({ x: 0, y: 0 }, { width: 0, height: 0 }, 'bottom-right', {\n left: 5,\n top: 5,\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _testUtils = require("@pie-lib/test-utils");
10
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _toggleBar = require("../toggle-bar");
13
+ 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; }
14
+ 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; }
15
+ jest.mock('@pie-lib/drag', function () {
16
+ return {
17
+ DragProvider: function DragProvider(_ref) {
18
+ var children = _ref.children;
19
+ return /*#__PURE__*/_react["default"].createElement("div", {
20
+ "data-testid": "drag-provider"
21
+ }, children);
22
+ }
23
+ };
24
+ });
25
+ jest.mock('@dnd-kit/core', function () {
26
+ return {
27
+ useDraggable: jest.fn(function () {
28
+ return {
29
+ attributes: {
30
+ role: 'button',
31
+ tabIndex: 0
32
+ },
33
+ listeners: {
34
+ onPointerDown: jest.fn()
35
+ },
36
+ setNodeRef: jest.fn(),
37
+ transform: null,
38
+ transition: null,
39
+ isDragging: false
40
+ };
41
+ }),
42
+ useDroppable: jest.fn(function () {
43
+ return {
44
+ setNodeRef: jest.fn(),
45
+ isOver: false,
46
+ active: null
47
+ };
48
+ })
49
+ };
50
+ });
51
+ jest.mock('@dnd-kit/utilities', function () {
52
+ return {
53
+ CSS: {
54
+ Transform: {
55
+ toString: jest.fn(function (transform) {
56
+ return transform ? 'translate3d(0, 0, 0)' : '';
57
+ })
58
+ }
59
+ }
60
+ };
61
+ });
62
+ jest.mock('@dnd-kit/sortable', function () {
63
+ return {
64
+ arrayMove: jest.fn(function (array, from, to) {
65
+ var newArray = (0, _toConsumableArray2["default"])(array);
66
+ var _newArray$splice = newArray.splice(from, 1),
67
+ _newArray$splice2 = (0, _slicedToArray2["default"])(_newArray$splice, 1),
68
+ removed = _newArray$splice2[0];
69
+ newArray.splice(to, 0, removed);
70
+ return newArray;
71
+ })
72
+ };
73
+ });
74
+ jest.mock('@pie-lib/translator', function () {
75
+ return {
76
+ translator: {
77
+ t: function t(key) {
78
+ var parts = key.split('.');
79
+ return parts[parts.length - 1];
80
+ }
81
+ }
82
+ };
83
+ });
84
+ describe('ToggleBar', function () {
85
+ var onChange = jest.fn();
86
+ var onChangeToolsOrder = jest.fn();
87
+ beforeEach(function () {
88
+ onChange.mockClear();
89
+ onChangeToolsOrder.mockClear();
90
+ });
91
+ var renderComponent = function renderComponent(extras) {
92
+ var defaults = {
93
+ className: 'className',
94
+ onChange: onChange,
95
+ onChangeToolsOrder: onChangeToolsOrder,
96
+ options: ['point', 'line'],
97
+ language: 'en'
98
+ };
99
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
100
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_toggleBar.ToggleBar, props));
101
+ };
102
+ describe('rendering', function () {
103
+ it('renders without crashing', function () {
104
+ var _renderComponent = renderComponent(),
105
+ container = _renderComponent.container;
106
+ expect(container.firstChild).toBeInTheDocument();
107
+ });
108
+ it('renders tool buttons for valid tools', function () {
109
+ renderComponent({
110
+ options: ['point', 'line', 'circle']
111
+ });
112
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
113
+ expect(_testUtils.screen.getByText(/line/i)).toBeInTheDocument();
114
+ expect(_testUtils.screen.getByText(/circle/i)).toBeInTheDocument();
115
+ });
116
+ it('does not render invalid tool options', function () {
117
+ renderComponent({
118
+ options: ['point', 'invalid-tool', 'line']
119
+ });
120
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
121
+ expect(_testUtils.screen.getByText(/line/i)).toBeInTheDocument();
122
+ expect(_testUtils.screen.queryByText(/invalid-tool/i)).not.toBeInTheDocument();
123
+ });
124
+ it('highlights selected tool', function () {
125
+ var _renderComponent2 = renderComponent({
126
+ selectedToolType: 'line'
127
+ }),
128
+ container = _renderComponent2.container;
129
+ var selectedButton = _testUtils.screen.getByText(/line/i).closest('button');
130
+ expect(selectedButton).toHaveAttribute('value', 'line');
131
+ });
132
+ });
133
+ describe('interactions', function () {
134
+ it('calls onChange when tool button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
135
+ var user, pointButton;
136
+ return _regenerator["default"].wrap(function (_context) {
137
+ while (1) switch (_context.prev = _context.next) {
138
+ case 0:
139
+ user = _userEvent["default"].setup();
140
+ renderComponent({
141
+ options: ['point', 'line']
142
+ });
143
+ pointButton = _testUtils.screen.getByText(/point/i).closest('button');
144
+ _context.next = 1;
145
+ return user.click(pointButton);
146
+ case 1:
147
+ expect(onChange).toHaveBeenCalledWith('point');
148
+ case 2:
149
+ case "end":
150
+ return _context.stop();
151
+ }
152
+ }, _callee);
153
+ })));
154
+ it('calls onChange with selected tool type', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
155
+ var user, lineButton;
156
+ return _regenerator["default"].wrap(function (_context2) {
157
+ while (1) switch (_context2.prev = _context2.next) {
158
+ case 0:
159
+ user = _userEvent["default"].setup();
160
+ renderComponent({
161
+ options: ['point', 'line'],
162
+ selectedToolType: 'point'
163
+ });
164
+ lineButton = _testUtils.screen.getByText(/line/i).closest('button');
165
+ _context2.next = 1;
166
+ return user.click(lineButton);
167
+ case 1:
168
+ expect(onChange).toHaveBeenCalledWith('line');
169
+ case 2:
170
+ case "end":
171
+ return _context2.stop();
172
+ }
173
+ }, _callee2);
174
+ })));
175
+ it('disables buttons when disabled prop is true', function () {
176
+ renderComponent({
177
+ disabled: true,
178
+ options: ['point', 'line']
179
+ });
180
+ var pointButton = _testUtils.screen.getByText(/point/i).closest('button');
181
+ var lineButton = _testUtils.screen.getByText(/line/i).closest('button');
182
+ expect(pointButton).toBeDisabled();
183
+ expect(lineButton).toBeDisabled();
184
+ });
185
+ it('does not call onChange when disabled', function () {
186
+ renderComponent({
187
+ disabled: true,
188
+ options: ['point']
189
+ });
190
+ var pointButton = _testUtils.screen.getByText(/point/i).closest('button');
191
+ expect(pointButton).toBeDisabled();
192
+ // Note: Cannot test click on disabled button with pointer-events: none
193
+ // The disabled state is verified above
194
+ });
195
+ });
196
+ });
197
+ //# sourceMappingURL=toggle-bar.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-bar.test.js","names":["_testUtils","require","_userEvent","_interopRequireDefault","_react","_toggleBar","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","translator","key","parts","split","describe","onChange","onChangeToolsOrder","beforeEach","mockClear","renderComponent","extras","defaults","className","options","language","props","render","ToggleBar","it","_renderComponent","container","expect","firstChild","toBeInTheDocument","screen","getByText","queryByText","not","_renderComponent2","selectedToolType","selectedButton","closest","toHaveAttribute","_asyncToGenerator2","_regenerator","mark","_callee","user","pointButton","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalledWith","stop","_callee2","lineButton","_context2","disabled","toBeDisabled"],"sources":["../../src/__tests__/toggle-bar.test.jsx"],"sourcesContent":["import { render, screen } from '@pie-lib/test-utils';\nimport userEvent from '@testing-library/user-event';\nimport React from 'react';\n\nimport { ToggleBar } from '../toggle-bar';\n\njest.mock('@pie-lib/drag', () => ({\n DragProvider: ({ children }) => <div data-testid=\"drag-provider\">{children}</div>,\n}));\n\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\njest.mock('@dnd-kit/utilities', () => ({\n CSS: {\n Transform: {\n toString: jest.fn((transform) => (transform ? 'translate3d(0, 0, 0)' : '')),\n },\n },\n}));\n\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\njest.mock('@pie-lib/translator', () => ({\n translator: {\n t: (key) => {\n const parts = key.split('.');\n return parts[parts.length - 1];\n },\n },\n}));\n\ndescribe('ToggleBar', () => {\n let onChange = jest.fn();\n let onChangeToolsOrder = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n onChangeToolsOrder.mockClear();\n });\n\n const renderComponent = (extras) => {\n const defaults = {\n className: 'className',\n onChange,\n onChangeToolsOrder,\n options: ['point', 'line'],\n language: 'en',\n };\n const props = { ...defaults, ...extras };\n return render(<ToggleBar {...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 tool buttons for valid tools', () => {\n renderComponent({ options: ['point', 'line', 'circle'] });\n expect(screen.getByText(/point/i)).toBeInTheDocument();\n expect(screen.getByText(/line/i)).toBeInTheDocument();\n expect(screen.getByText(/circle/i)).toBeInTheDocument();\n });\n\n it('does not render invalid tool options', () => {\n renderComponent({ options: ['point', 'invalid-tool', 'line'] });\n expect(screen.getByText(/point/i)).toBeInTheDocument();\n expect(screen.getByText(/line/i)).toBeInTheDocument();\n expect(screen.queryByText(/invalid-tool/i)).not.toBeInTheDocument();\n });\n\n it('highlights selected tool', () => {\n const { container } = renderComponent({ selectedToolType: 'line' });\n const selectedButton = screen.getByText(/line/i).closest('button');\n expect(selectedButton).toHaveAttribute('value', 'line');\n });\n });\n\n describe('interactions', () => {\n it('calls onChange when tool button is clicked', async () => {\n const user = userEvent.setup();\n renderComponent({ options: ['point', 'line'] });\n\n const pointButton = screen.getByText(/point/i).closest('button');\n await user.click(pointButton);\n\n expect(onChange).toHaveBeenCalledWith('point');\n });\n\n it('calls onChange with selected tool type', async () => {\n const user = userEvent.setup();\n renderComponent({ options: ['point', 'line'], selectedToolType: 'point' });\n\n const lineButton = screen.getByText(/line/i).closest('button');\n await user.click(lineButton);\n\n expect(onChange).toHaveBeenCalledWith('line');\n });\n\n it('disables buttons when disabled prop is true', () => {\n renderComponent({ disabled: true, options: ['point', 'line'] });\n\n const pointButton = screen.getByText(/point/i).closest('button');\n const lineButton = screen.getByText(/line/i).closest('button');\n\n expect(pointButton).toBeDisabled();\n expect(lineButton).toBeDisabled();\n });\n\n it('does not call onChange when disabled', () => {\n renderComponent({ disabled: true, options: ['point'] });\n\n const pointButton = screen.getByText(/point/i).closest('button');\n expect(pointButton).toBeDisabled();\n // Note: Cannot test click on disabled button with pointer-events: none\n // The disabled state is verified above\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _testUtils = require("@pie-lib/test-utils");
10
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _toolMenu = _interopRequireDefault(require("../tool-menu"));
13
+ 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; }
14
+ 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; }
15
+ jest.mock('@pie-lib/drag', function () {
16
+ return {
17
+ DragProvider: function DragProvider(_ref) {
18
+ var children = _ref.children;
19
+ return /*#__PURE__*/_react["default"].createElement("div", {
20
+ "data-testid": "drag-provider"
21
+ }, children);
22
+ }
23
+ };
24
+ });
25
+ jest.mock('@dnd-kit/core', function () {
26
+ return {
27
+ useDraggable: jest.fn(function () {
28
+ return {
29
+ attributes: {
30
+ role: 'button',
31
+ tabIndex: 0
32
+ },
33
+ listeners: {
34
+ onPointerDown: jest.fn()
35
+ },
36
+ setNodeRef: jest.fn(),
37
+ transform: null,
38
+ transition: null,
39
+ isDragging: false
40
+ };
41
+ }),
42
+ useDroppable: jest.fn(function () {
43
+ return {
44
+ setNodeRef: jest.fn(),
45
+ isOver: false,
46
+ active: null
47
+ };
48
+ })
49
+ };
50
+ });
51
+ jest.mock('@dnd-kit/utilities', function () {
52
+ return {
53
+ CSS: {
54
+ Transform: {
55
+ toString: jest.fn(function (transform) {
56
+ return transform ? 'translate3d(0, 0, 0)' : '';
57
+ })
58
+ }
59
+ }
60
+ };
61
+ });
62
+ jest.mock('@dnd-kit/sortable', function () {
63
+ return {
64
+ arrayMove: jest.fn(function (array, from, to) {
65
+ var newArray = (0, _toConsumableArray2["default"])(array);
66
+ var _newArray$splice = newArray.splice(from, 1),
67
+ _newArray$splice2 = (0, _slicedToArray2["default"])(_newArray$splice, 1),
68
+ removed = _newArray$splice2[0];
69
+ newArray.splice(to, 0, removed);
70
+ return newArray;
71
+ })
72
+ };
73
+ });
74
+ describe('ToolMenu', function () {
75
+ var onChange = jest.fn();
76
+ var onChangeTools = jest.fn();
77
+ beforeEach(function () {
78
+ onChange.mockClear();
79
+ onChangeTools.mockClear();
80
+ });
81
+ var renderComponent = function renderComponent(extras) {
82
+ var defaults = {
83
+ className: 'className',
84
+ onChange: onChange,
85
+ onChangeTools: onChangeTools,
86
+ currentToolType: 'point',
87
+ toolbarTools: ['point', 'line'],
88
+ language: 'en'
89
+ };
90
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
91
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_toolMenu["default"], props));
92
+ };
93
+ describe('rendering', function () {
94
+ it('renders without crashing', function () {
95
+ var _renderComponent = renderComponent(),
96
+ container = _renderComponent.container;
97
+ expect(container.firstChild).toBeInTheDocument();
98
+ });
99
+ it('renders ToggleBar with correct props', function () {
100
+ renderComponent({
101
+ toolbarTools: ['point', 'line', 'circle']
102
+ });
103
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
104
+ expect(_testUtils.screen.getByText(/line/i)).toBeInTheDocument();
105
+ expect(_testUtils.screen.getByText(/circle/i)).toBeInTheDocument();
106
+ });
107
+ it('passes currentToolType to ToggleBar', function () {
108
+ renderComponent({
109
+ currentToolType: 'line'
110
+ });
111
+ var selectedButton = _testUtils.screen.getByText(/line/i).closest('button');
112
+ expect(selectedButton).toBeInTheDocument();
113
+ });
114
+ });
115
+ describe('interactions', function () {
116
+ it('calls onChange when tool is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
117
+ var user, lineButton;
118
+ return _regenerator["default"].wrap(function (_context) {
119
+ while (1) switch (_context.prev = _context.next) {
120
+ case 0:
121
+ user = _userEvent["default"].setup();
122
+ renderComponent();
123
+ lineButton = _testUtils.screen.getByText(/line/i).closest('button');
124
+ _context.next = 1;
125
+ return user.click(lineButton);
126
+ case 1:
127
+ expect(onChange).toHaveBeenCalledWith('line');
128
+ case 2:
129
+ case "end":
130
+ return _context.stop();
131
+ }
132
+ }, _callee);
133
+ })));
134
+ it('calls onChangeTools when tools order changes', function () {
135
+ renderComponent({
136
+ draggableTools: true
137
+ });
138
+ // Note: Drag-and-drop testing requires more complex setup with @dnd-kit/test-utils
139
+ // For now, we verify the component renders with draggableTools enabled
140
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
141
+ });
142
+ it('disables tools when disabled prop is true', function () {
143
+ renderComponent({
144
+ disabled: true
145
+ });
146
+ var pointButton = _testUtils.screen.getByText(/point/i).closest('button');
147
+ expect(pointButton).toBeDisabled();
148
+ });
149
+ });
150
+ });
151
+ //# sourceMappingURL=tool-menu.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-menu.test.js","names":["_testUtils","require","_userEvent","_interopRequireDefault","_react","_toolMenu","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","describe","onChange","onChangeTools","beforeEach","mockClear","renderComponent","extras","defaults","className","currentToolType","toolbarTools","language","props","render","it","_renderComponent","container","expect","firstChild","toBeInTheDocument","screen","getByText","selectedButton","closest","_asyncToGenerator2","_regenerator","mark","_callee","user","lineButton","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalledWith","stop","draggableTools","disabled","pointButton","toBeDisabled"],"sources":["../../src/__tests__/tool-menu.test.jsx"],"sourcesContent":["import { render, screen } from '@pie-lib/test-utils';\nimport userEvent from '@testing-library/user-event';\nimport React from 'react';\n\nimport ToolMenu from '../tool-menu';\n\njest.mock('@pie-lib/drag', () => ({\n DragProvider: ({ children }) => <div data-testid=\"drag-provider\">{children}</div>,\n}));\n\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\njest.mock('@dnd-kit/utilities', () => ({\n CSS: {\n Transform: {\n toString: jest.fn((transform) => (transform ? 'translate3d(0, 0, 0)' : '')),\n },\n },\n}));\n\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\ndescribe('ToolMenu', () => {\n let onChange = jest.fn();\n let onChangeTools = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n onChangeTools.mockClear();\n });\n\n const renderComponent = (extras) => {\n const defaults = {\n className: 'className',\n onChange,\n onChangeTools,\n currentToolType: 'point',\n toolbarTools: ['point', 'line'],\n language: 'en',\n };\n const props = { ...defaults, ...extras };\n return render(<ToolMenu {...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 ToggleBar with correct props', () => {\n renderComponent({ toolbarTools: ['point', 'line', 'circle'] });\n expect(screen.getByText(/point/i)).toBeInTheDocument();\n expect(screen.getByText(/line/i)).toBeInTheDocument();\n expect(screen.getByText(/circle/i)).toBeInTheDocument();\n });\n\n it('passes currentToolType to ToggleBar', () => {\n renderComponent({ currentToolType: 'line' });\n const selectedButton = screen.getByText(/line/i).closest('button');\n expect(selectedButton).toBeInTheDocument();\n });\n });\n\n describe('interactions', () => {\n it('calls onChange when tool is selected', async () => {\n const user = userEvent.setup();\n renderComponent();\n\n const lineButton = screen.getByText(/line/i).closest('button');\n await user.click(lineButton);\n\n expect(onChange).toHaveBeenCalledWith('line');\n });\n\n it('calls onChangeTools when tools order changes', () => {\n renderComponent({ draggableTools: true });\n // Note: Drag-and-drop testing requires more complex setup with @dnd-kit/test-utils\n // For now, we verify the component renders with draggableTools enabled\n expect(screen.getByText(/point/i)).toBeInTheDocument();\n });\n\n it('disables tools when disabled prop is true', () => {\n renderComponent({ disabled: true });\n const pointButton = screen.getByText(/point/i).closest('button');\n expect(pointButton).toBeDisabled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
+ var _testUtils = require("@pie-lib/test-utils");
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _undoRedo = _interopRequireDefault(require("../undo-redo"));
8
+ 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; }
9
+ 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; }
10
+ describe('UndoRedo', function () {
11
+ var onUndo = jest.fn();
12
+ var onRedo = jest.fn();
13
+ var onReset = jest.fn();
14
+ var renderComponent = function renderComponent(extras) {
15
+ var defaults = {
16
+ onUndo: onUndo,
17
+ onRedo: onRedo,
18
+ onReset: onReset
19
+ };
20
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
21
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_undoRedo["default"], props));
22
+ };
23
+ describe('rendering', function () {
24
+ it('renders without crashing', function () {
25
+ var _renderComponent = renderComponent(),
26
+ container = _renderComponent.container;
27
+ expect(container.firstChild).toBeInTheDocument();
28
+ });
29
+ });
30
+ });
31
+ //# sourceMappingURL=undo-redo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-redo.test.js","names":["_testUtils","require","_react","_interopRequireDefault","_undoRedo","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","describe","onUndo","jest","fn","onRedo","onReset","renderComponent","extras","defaults","props","render","createElement","it","_renderComponent","container","expect","firstChild","toBeInTheDocument"],"sources":["../../src/__tests__/undo-redo.test.jsx"],"sourcesContent":["import { render } from '@pie-lib/test-utils';\nimport React from 'react';\nimport UndoRedo from '../undo-redo';\n\ndescribe('UndoRedo', () => {\n let onUndo = jest.fn();\n let onRedo = jest.fn();\n let onReset = jest.fn();\n const renderComponent = (extras) => {\n const defaults = {\n onUndo,\n onRedo,\n onReset,\n };\n const props = { ...defaults, ...extras };\n return render(<UndoRedo {...props} />);\n };\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = renderComponent();\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n});\n"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAoC,SAAAI,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAEpCoB,QAAQ,CAAC,UAAU,EAAE,YAAM;EACzB,IAAIC,MAAM,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACtB,IAAIC,MAAM,GAAGF,IAAI,CAACC,EAAE,CAAC,CAAC;EACtB,IAAIE,OAAO,GAAGH,IAAI,CAACC,EAAE,CAAC,CAAC;EACvB,IAAMG,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,MAAM,EAAK;IAClC,IAAMC,QAAQ,GAAG;MACfP,MAAM,EAANA,MAAM;MACNG,MAAM,EAANA,MAAM;MACNC,OAAO,EAAPA;IACF,CAAC;IACD,IAAMI,KAAK,GAAAjB,aAAA,CAAAA,aAAA,KAAQgB,QAAQ,GAAKD,MAAM,CAAE;IACxC,OAAO,IAAAG,iBAAM,eAAClC,MAAA,YAAAmC,aAAA,CAACjC,SAAA,WAAQ,EAAK+B,KAAQ,CAAC,CAAC;EACxC,CAAC;EACDT,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1BY,EAAE,CAAC,0BAA0B,EAAE,YAAM;MACnC,IAAAC,gBAAA,GAAsBP,eAAe,CAAC,CAAC;QAA/BQ,SAAS,GAAAD,gBAAA,CAATC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACE,UAAU,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _react = require("react");
4
+ var _useDebounce = require("../use-debounce");
5
+ jest.useFakeTimers();
6
+ jest.mock('react', function () {
7
+ return {
8
+ useState: jest.fn(),
9
+ useEffect: jest.fn(function (fn, deps) {
10
+ return fn();
11
+ })
12
+ };
13
+ });
14
+ describe('useDebounce', function () {
15
+ it('..', function () {
16
+ var debouncedValue = null;
17
+ var setDebouncedValue = jest.fn();
18
+ _react.useState.mockReturnValue([debouncedValue, setDebouncedValue]);
19
+ (0, _useDebounce.useDebounce)('foo', 1000);
20
+ jest.runAllTimers();
21
+ expect(setDebouncedValue).toHaveBeenCalledWith('foo');
22
+ });
23
+ });
24
+ //# sourceMappingURL=use-debounce.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-debounce.test.js","names":["_react","require","_useDebounce","jest","useFakeTimers","mock","useState","fn","useEffect","deps","describe","it","debouncedValue","setDebouncedValue","mockReturnValue","useDebounce","runAllTimers","expect","toHaveBeenCalledWith"],"sources":["../../src/__tests__/use-debounce.test.js"],"sourcesContent":["import { useState } from 'react';\nimport { useDebounce } from '../use-debounce';\n\njest.useFakeTimers();\n\njest.mock('react', () => ({\n useState: jest.fn(),\n useEffect: jest.fn((fn, deps) => fn()),\n}));\n\ndescribe('useDebounce', () => {\n it('..', () => {\n const debouncedValue = null;\n const setDebouncedValue = jest.fn();\n\n useState.mockReturnValue([debouncedValue, setDebouncedValue]);\n useDebounce('foo', 1000);\n jest.runAllTimers();\n expect(setDebouncedValue).toHaveBeenCalledWith('foo');\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEAE,IAAI,CAACC,aAAa,CAAC,CAAC;AAEpBD,IAAI,CAACE,IAAI,CAAC,OAAO,EAAE;EAAA,OAAO;IACxBC,QAAQ,EAAEH,IAAI,CAACI,EAAE,CAAC,CAAC;IACnBC,SAAS,EAAEL,IAAI,CAACI,EAAE,CAAC,UAACA,EAAE,EAAEE,IAAI;MAAA,OAAKF,EAAE,CAAC,CAAC;IAAA;EACvC,CAAC;AAAA,CAAC,CAAC;AAEHG,QAAQ,CAAC,aAAa,EAAE,YAAM;EAC5BC,EAAE,CAAC,IAAI,EAAE,YAAM;IACb,IAAMC,cAAc,GAAG,IAAI;IAC3B,IAAMC,iBAAiB,GAAGV,IAAI,CAACI,EAAE,CAAC,CAAC;IAEnCD,eAAQ,CAACQ,eAAe,CAAC,CAACF,cAAc,EAAEC,iBAAiB,CAAC,CAAC;IAC7D,IAAAE,wBAAW,EAAC,KAAK,EAAE,IAAI,CAAC;IACxBZ,IAAI,CAACa,YAAY,CAAC,CAAC;IACnBC,MAAM,CAACJ,iBAAiB,CAAC,CAACK,oBAAoB,CAAC,KAAK,CAAC;EACvD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.xy = exports.scaleMock = exports.graphProps = void 0;
7
+ var _scaleMock = exports.scaleMock = function scaleMock() {
8
+ var fn = jest.fn(function (n) {
9
+ return n;
10
+ });
11
+ fn.invert = jest.fn(function (n) {
12
+ return n;
13
+ });
14
+ fn.domain = jest.fn(function () {
15
+ return fn;
16
+ });
17
+ fn.range = jest.fn(function () {
18
+ return fn;
19
+ });
20
+ fn.copy = jest.fn(function () {
21
+ return _scaleMock();
22
+ });
23
+ return fn;
24
+ };
25
+ var graphProps = exports.graphProps = function graphProps() {
26
+ var dmin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
27
+ var dmax = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
28
+ var rmin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
29
+ var rmax = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
30
+ return {
31
+ scale: {
32
+ x: _scaleMock(),
33
+ y: _scaleMock()
34
+ },
35
+ snap: {
36
+ x: jest.fn(function (n) {
37
+ return n;
38
+ }),
39
+ y: jest.fn(function (n) {
40
+ return n;
41
+ })
42
+ },
43
+ domain: {
44
+ min: dmin,
45
+ max: dmax,
46
+ step: 1
47
+ },
48
+ range: {
49
+ min: rmin,
50
+ max: rmax,
51
+ step: 1
52
+ },
53
+ size: {
54
+ width: 400,
55
+ height: 400
56
+ }
57
+ };
58
+ };
59
+ var xy = exports.xy = function xy(x, y, index) {
60
+ var out = {
61
+ x: x,
62
+ y: y,
63
+ index: index
64
+ };
65
+ if (!Number.isFinite(index)) {
66
+ delete out.index;
67
+ }
68
+ return out;
69
+ };
70
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["scaleMock","exports","fn","jest","n","invert","domain","range","copy","graphProps","dmin","arguments","length","undefined","dmax","rmin","rmax","scale","x","y","snap","min","max","step","size","width","height","xy","index","out","Number","isFinite"],"sources":["../../src/__tests__/utils.js"],"sourcesContent":["export const scaleMock = () => {\n const fn = jest.fn((n) => n);\n fn.invert = jest.fn((n) => n);\n fn.domain = jest.fn(() => fn);\n fn.range = jest.fn(() => fn);\n fn.copy = jest.fn(() => scaleMock());\n return fn;\n};\n\nexport const graphProps = (dmin = 0, dmax = 1, rmin = 0, rmax = 1) => ({\n scale: {\n x: scaleMock(),\n y: scaleMock(),\n },\n snap: {\n x: jest.fn((n) => n),\n y: jest.fn((n) => n),\n },\n domain: {\n min: dmin,\n max: dmax,\n step: 1,\n },\n range: {\n min: rmin,\n max: rmax,\n step: 1,\n },\n size: {\n width: 400,\n height: 400,\n },\n});\n\nexport const xy = (x, y, index) => {\n const out = { x, y, index };\n if (!Number.isFinite(index)) {\n delete out.index;\n }\n return out;\n};\n"],"mappings":";;;;;;AAAO,IAAMA,UAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,SAAZA,SAASA,CAAA,EAAS;EAC7B,IAAME,EAAE,GAAGC,IAAI,CAACD,EAAE,CAAC,UAACE,CAAC;IAAA,OAAKA,CAAC;EAAA,EAAC;EAC5BF,EAAE,CAACG,MAAM,GAAGF,IAAI,CAACD,EAAE,CAAC,UAACE,CAAC;IAAA,OAAKA,CAAC;EAAA,EAAC;EAC7BF,EAAE,CAACI,MAAM,GAAGH,IAAI,CAACD,EAAE,CAAC;IAAA,OAAMA,EAAE;EAAA,EAAC;EAC7BA,EAAE,CAACK,KAAK,GAAGJ,IAAI,CAACD,EAAE,CAAC;IAAA,OAAMA,EAAE;EAAA,EAAC;EAC5BA,EAAE,CAACM,IAAI,GAAGL,IAAI,CAACD,EAAE,CAAC;IAAA,OAAMF,UAAS,CAAC,CAAC;EAAA,EAAC;EACpC,OAAOE,EAAE;AACX,CAAC;AAEM,IAAMO,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,SAAbA,UAAUA,CAAA;EAAA,IAAIC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAAA,IAAEG,IAAI,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAAA,IAAEI,IAAI,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAAA,IAAEK,IAAI,GAAAL,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAAA,OAAM;IACrEM,KAAK,EAAE;MACLC,CAAC,EAAElB,UAAS,CAAC,CAAC;MACdmB,CAAC,EAAEnB,UAAS,CAAC;IACf,CAAC;IACDoB,IAAI,EAAE;MACJF,CAAC,EAAEf,IAAI,CAACD,EAAE,CAAC,UAACE,CAAC;QAAA,OAAKA,CAAC;MAAA,EAAC;MACpBe,CAAC,EAAEhB,IAAI,CAACD,EAAE,CAAC,UAACE,CAAC;QAAA,OAAKA,CAAC;MAAA;IACrB,CAAC;IACDE,MAAM,EAAE;MACNe,GAAG,EAAEX,IAAI;MACTY,GAAG,EAAER,IAAI;MACTS,IAAI,EAAE;IACR,CAAC;IACDhB,KAAK,EAAE;MACLc,GAAG,EAAEN,IAAI;MACTO,GAAG,EAAEN,IAAI;MACTO,IAAI,EAAE;IACR,CAAC;IACDC,IAAI,EAAE;MACJC,KAAK,EAAE,GAAG;MACVC,MAAM,EAAE;IACV;EACF,CAAC;AAAA,CAAC;AAEK,IAAMC,EAAE,GAAA1B,OAAA,CAAA0B,EAAA,GAAG,SAALA,EAAEA,CAAIT,CAAC,EAAEC,CAAC,EAAES,KAAK,EAAK;EACjC,IAAMC,GAAG,GAAG;IAAEX,CAAC,EAADA,CAAC;IAAEC,CAAC,EAADA,CAAC;IAAES,KAAK,EAALA;EAAM,CAAC;EAC3B,IAAI,CAACE,MAAM,CAACC,QAAQ,CAACH,KAAK,CAAC,EAAE;IAC3B,OAAOC,GAAG,CAACD,KAAK;EAClB;EACA,OAAOC,GAAG;AACZ,CAAC","ignoreList":[]}