@pie-lib/plot 3.1.0-next.0 → 3.1.0-next.25

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.
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_invariant","_interopRequireDefault","require","_range","_pointGeometry","_head","_tail","_isEqual","xy","exports","x","y","buildSizeArray","size","padding","Number","isFinite","Math","max","invariant","half","round","tickCount","min","step","abs","getInterval","domain","ticks","major","minor","Error","concat","distance","minorTicks","normalizedMajor","isNaN","divider","raw","parseFloat","toFixed","mkRange","interval","range","splice","length","snapTo","value","rng","filter","v","reduce","prev","curr","currentDistance","previousDistance","buildTickModel","scaleFn","map","r","index","isMajor","polygonToArea","points","h","head","area","left","top","bottom","right","tail","a","p","lineToArea","from","to","bounds","point","o","Point","getDelta","sub","bandKey","d","label","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","findLongestWord","longestWord","replace","split","sort","b","amountToIncreaseWidth","extractTextFromHTML","htmlString","_doc$body","parser","DOMParser","doc","parseFromString","body","textContent","isEmptyObject","obj","Object","keys","constructor","isEmptyString","str","trim"],"sources":["../src/utils.js"],"sourcesContent":["import invariant from 'invariant';\nimport range from 'lodash/range';\nimport Point from '@mapbox/point-geometry';\nimport head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport isEqual from 'lodash/isEqual';\n\nexport const xy = (x, y) => ({ x, y });\n\nexport const buildSizeArray = (size, padding) => {\n padding = Number.isFinite(padding) ? Math.max(padding, 0) : 0;\n invariant(padding < size, 'padding must be less than size');\n const half = Math.round(padding * 0.5);\n return [half, size - half];\n};\n\nexport const tickCount = (min, max, step) => {\n invariant(min < max, 'min must be less than max');\n const size = Math.abs(min - max);\n return Math.round(size / step);\n};\n\nexport function getInterval(domain, ticks) {\n const { min, max } = domain;\n const { major, minor } = ticks;\n\n if (min >= max) {\n throw new Error(`min is > max: ${min} > ${max}`);\n }\n\n const distance = max - min;\n const minorTicks = minor > 0 ? minor + 1 : 1;\n const normalizedMajor = major - 1;\n\n if (isNaN(normalizedMajor)) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n if (normalizedMajor <= 0) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n const divider = normalizedMajor * minorTicks;\n const raw = distance / divider;\n return parseFloat(Number(raw).toFixed(4));\n}\n\nconst mkRange = (min, max, interval) => {\n const raw = range(min, max, interval);\n /* Fix the last step due to rounding errors */\n raw.splice(raw.length, 1, max);\n return raw;\n};\n\nexport function snapTo(min, max, interval, value) {\n if (value >= max) {\n return max;\n }\n\n if (value <= min) {\n return min;\n }\n\n let rng = mkRange(min, max, interval);\n\n rng = rng.filter((v) => {\n return Math.abs(value - v) <= interval;\n });\n\n return (\n rng.length &&\n rng.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n}\n\nexport function buildTickModel(domain, ticks, interval, scaleFn) {\n const rng = mkRange(domain.min, domain.max, interval);\n\n return rng.map((r, index) => {\n const isMajor = index % (ticks.minor + 1) === 0;\n\n return {\n value: r,\n major: isMajor,\n x: scaleFn(r),\n };\n });\n}\n\nexport const polygonToArea = (points) => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x,\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => {\n const left = Math.min(from.x, to.x);\n const top = Math.max(from.y, to.y);\n const bottom = Math.min(from.y, to.y);\n const right = Math.max(from.x, to.x);\n return { left, top, bottom, right };\n};\n\nexport const bounds = (area, domain, range) => {\n return {\n left: domain.min - area.left,\n right: Math.abs(area.right - domain.max),\n top: Math.abs(area.top - range.max),\n bottom: range.min - area.bottom,\n };\n};\n\nexport const point = (o) => new Point(o.x, o.y);\nexport const getDelta = (from, to) => {\n return point(to).sub(point(from));\n};\n\nexport const bandKey = (d, index) => `${index}-${d.label || '-'}`;\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\n};\n\n// findLongestWord is also used in graphing\nexport const findLongestWord = (label) => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in graphing\nexport const amountToIncreaseWidth = (longestWord) => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 20;\n};\n\nexport const extractTextFromHTML = (htmlString) => {\n const parser = new DOMParser();\n const doc = parser?.parseFromString(htmlString, 'text/html');\n return doc?.body?.textContent || '';\n};\n\nexport const isEmptyObject = (obj) => {\n return obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n};\n\nexport const isEmptyString = (str) => {\n return typeof str === 'string' && str.trim() === '';\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_invariant","_interopRequireDefault","require","_range","_pointGeometry","_head","_tail","_isEqual","xy","exports","x","y","buildSizeArray","size","padding","Number","isFinite","Math","max","invariant","half","round","tickCount","min","step","abs","getInterval","domain","ticks","major","minor","Error","concat","distance","minorTicks","normalizedMajor","isNaN","divider","raw","parseFloat","toFixed","mkRange","interval","range","splice","length","snapTo","value","rng","filter","v","reduce","prev","curr","currentDistance","previousDistance","buildTickModel","scaleFn","map","r","index","isMajor","polygonToArea","points","h","head","area","left","top","bottom","right","tail","a","p","lineToArea","from","to","bounds","point","o","Point","getDelta","sub","bandKey","d","label","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","findLongestWord","longestWord","replace","split","sort","b","amountToIncreaseWidth","extractTextFromHTML","htmlString","_doc$body","parser","DOMParser","doc","parseFromString","body","textContent","isEmptyObject","obj","Object","keys","constructor","isEmptyString","str","trim"],"sources":["../src/utils.js"],"sourcesContent":["import invariant from 'invariant';\nimport range from 'lodash/range';\nimport Point from '@mapbox/point-geometry';\nimport head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport isEqual from 'lodash/isEqual';\n\nexport const xy = (x, y) => ({ x, y });\n\nexport const buildSizeArray = (size, padding) => {\n padding = Number.isFinite(padding) ? Math.max(padding, 0) : 0;\n invariant(padding < size, 'padding must be less than size');\n const half = Math.round(padding * 0.5);\n return [half, size - half];\n};\n\nexport const tickCount = (min, max, step) => {\n invariant(min < max, 'min must be less than max');\n const size = Math.abs(min - max);\n return Math.round(size / step);\n};\n\nexport function getInterval(domain, ticks) {\n const { min, max } = domain;\n const { major, minor } = ticks;\n\n if (min >= max) {\n throw new Error(`min is > max: ${min} > ${max}`);\n }\n\n const distance = max - min;\n const minorTicks = minor > 0 ? minor + 1 : 1;\n const normalizedMajor = major - 1;\n\n if (isNaN(normalizedMajor)) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n if (normalizedMajor <= 0) {\n throw new Error('Tick Frequency must be 2 or higher');\n }\n\n const divider = normalizedMajor * minorTicks;\n const raw = distance / divider;\n return parseFloat(Number(raw).toFixed(4));\n}\n\nconst mkRange = (min, max, interval) => {\n const raw = range(min, max, interval);\n /* Fix the last step due to rounding errors */\n raw.splice(raw.length, 1, max);\n return raw;\n};\n\nexport function snapTo(min, max, interval, value) {\n if (value >= max) {\n return max;\n }\n\n if (value <= min) {\n return min;\n }\n\n let rng = mkRange(min, max, interval);\n\n rng = rng.filter((v) => {\n return Math.abs(value - v) <= interval;\n });\n\n return (\n rng.length &&\n rng.reduce((prev, curr) => {\n const currentDistance = Math.abs(curr - value);\n const previousDistance = Math.abs(prev - value);\n return currentDistance <= previousDistance ? curr : prev;\n })\n );\n}\n\nexport function buildTickModel(domain, ticks, interval, scaleFn) {\n const rng = mkRange(domain.min, domain.max, interval);\n\n return rng.map((r, index) => {\n const isMajor = index % (ticks.minor + 1) === 0;\n\n return {\n value: r,\n major: isMajor,\n x: scaleFn(r),\n };\n });\n}\n\nexport const polygonToArea = (points) => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x,\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => {\n const left = Math.min(from.x, to.x);\n const top = Math.max(from.y, to.y);\n const bottom = Math.min(from.y, to.y);\n const right = Math.max(from.x, to.x);\n return { left, top, bottom, right };\n};\n\nexport const bounds = (area, domain, range) => {\n return {\n left: domain.min - area.left,\n right: Math.abs(area.right - domain.max),\n top: Math.abs(area.top - range.max),\n bottom: range.min - area.bottom,\n };\n};\n\nexport const point = (o) => new Point(o.x, o.y);\nexport const getDelta = (from, to) => {\n return point(to).sub(point(from));\n};\n\nexport const bandKey = (d, index) => `${index}-${d.label || '-'}`;\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\n};\n\n// findLongestWord is also used in graphing\nexport const findLongestWord = (label) => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in graphing\nexport const amountToIncreaseWidth = (longestWord) => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 20;\n};\n\nexport const extractTextFromHTML = (htmlString) => {\n const parser = new DOMParser();\n const doc = parser?.parseFromString(htmlString, 'text/html');\n return doc?.body?.textContent || '';\n};\n\nexport const isEmptyObject = (obj) => {\n return obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n};\n\nexport const isEmptyString = (str) => {\n return typeof str === 'string' && str.trim() === '';\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "3.1.0-next.0",
6
+ "version": "3.1.0-next.25+f2061663",
7
7
  "description": "Some underlying components for building charts/graphs",
8
8
  "keywords": [
9
9
  "react",
@@ -18,26 +18,26 @@
18
18
  "dependencies": {
19
19
  "@emotion/react": "^11.14.0",
20
20
  "@emotion/style": "^0.8.0",
21
- "@mapbox/point-geometry": "^0.1.0",
21
+ "@mapbox/point-geometry": "^1.1.0",
22
22
  "@mui/icons-material": "^7.3.4",
23
23
  "@mui/material": "^7.3.4",
24
- "@pie-lib/editable-html-tip-tap": "1.1.0-next.0",
25
- "@pie-lib/render-ui": "5.1.0-next.0",
24
+ "@pie-lib/editable-html-tip-tap": "^1.1.0-next.5",
25
+ "@pie-lib/render-ui": "^5.1.0-next.5",
26
26
  "assert": "^1.4.1",
27
- "d3-scale": "^2.1.2",
28
- "d3-selection": "^1.3.2",
27
+ "d3-scale": "^4.0.2",
28
+ "d3-selection": "^3.0.0",
29
29
  "debug": "^4.1.1",
30
30
  "invariant": "^2.2.4",
31
31
  "lodash": "^4.17.11",
32
32
  "prop-types": "^15.7.2",
33
33
  "react": "^18.2.0",
34
- "react-draggable": "^3.1.1",
34
+ "react-draggable": "^3.3.0",
35
35
  "react-redux": "^6.0.0",
36
36
  "redux": "^4.0.1"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "react": "^18.2.0"
40
40
  },
41
- "gitHead": "ebe6ad7227aa0ea52c8e39590ba9e7683103d384",
41
+ "gitHead": "f2061663eb6709a72ae0e97277216e2a9409da15",
42
42
  "scripts": {}
43
43
  }
@@ -2,10 +2,10 @@ import { render } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { gridDraggable } from '../grid-draggable';
4
4
  import { getDelta } from '../utils';
5
- import { clientPoint } from 'd3-selection';
5
+ import { pointer } from 'd3-selection';
6
6
 
7
7
  jest.mock('d3-selection', () => ({
8
- clientPoint: jest.fn().mockReturnValue([0, 0]),
8
+ pointer: jest.fn().mockReturnValue([0, 0]),
9
9
  }));
10
10
 
11
11
  let mockDraggableCoreProps;
@@ -438,7 +438,7 @@ describe('gridDraggable', () => {
438
438
  const onDragStop = jest.fn();
439
439
  const props = { ...defaultProps, onClick, onDragStop };
440
440
 
441
- clientPoint.mockReturnValue([0, 0]);
441
+ pointer.mockReturnValue([0, 0]);
442
442
 
443
443
  const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);
444
444
  render(<Comp {...props} />);
@@ -460,7 +460,7 @@ describe('gridDraggable', () => {
460
460
  graphProps.snap.x = jest.fn().mockReturnValue(2);
461
461
  graphProps.snap.y = jest.fn().mockReturnValue(2);
462
462
 
463
- clientPoint.mockReturnValue([1.7, 2.3]);
463
+ pointer.mockReturnValue([1.7, 2.3]);
464
464
 
465
465
  const propsWithGraphProps = { ...props, graphProps };
466
466
  const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);
@@ -1,11 +1,11 @@
1
1
  import { render, cleanup } from '@testing-library/react';
2
2
  import React from 'react';
3
3
  import { Root } from '../root';
4
- import { select, mouse } from 'd3-selection';
4
+ import { select, pointer } from 'd3-selection';
5
5
 
6
6
  jest.mock('d3-selection', () => ({
7
7
  select: jest.fn(),
8
- mouse: jest.fn(),
8
+ pointer: jest.fn(),
9
9
  }));
10
10
 
11
11
  const scaleMock = () => {
@@ -48,7 +48,7 @@ describe('root', () => {
48
48
  select.mockReturnValue({
49
49
  on: mockOn,
50
50
  });
51
- mouse.mockReturnValue([0, 0]);
51
+ pointer.mockReturnValue([0, 0]);
52
52
 
53
53
  defaultProps = {
54
54
  classes: {},
@@ -62,9 +62,7 @@ describe('root', () => {
62
62
  });
63
63
 
64
64
  it('renders with children', () => {
65
- const { container, getByText } = render(
66
- <Root {...defaultProps}>hi</Root>
67
- );
65
+ const { container, getByText } = render(<Root {...defaultProps}>hi</Root>);
68
66
  expect(container.firstChild).toBeInTheDocument();
69
67
  expect(getByText('hi')).toBeInTheDocument();
70
68
  });
@@ -100,7 +98,7 @@ describe('root', () => {
100
98
  });
101
99
 
102
100
  describe('mouseMove function', () => {
103
- it('calls mouse with correct arguments', () => {
101
+ it('calls pointer with correct arguments', () => {
104
102
  const onMouseMove = jest.fn();
105
103
  const gp = graphProps();
106
104
  const props = {
@@ -110,6 +108,7 @@ describe('root', () => {
110
108
  };
111
109
 
112
110
  const mockNode = document.createElement('div');
111
+ const mockEvent = { clientX: 10, clientY: 20 };
113
112
  const mockSelection = {
114
113
  _groups: [[mockNode]],
115
114
  node: () => mockNode,
@@ -122,17 +121,17 @@ describe('root', () => {
122
121
  mockOn(event, handler);
123
122
  // When 'mousemove' is registered, immediately test it
124
123
  if (event === 'mousemove' && handler) {
125
- mouse.mockReturnValue([10, 20]);
126
- // Handler is bound with mockSelection as first arg, so call with no args
127
- handler();
124
+ pointer.mockReturnValue([10, 20]);
125
+ // Handler is bound with mockSelection as first arg, so call with event
126
+ handler(mockEvent);
128
127
  }
129
128
  },
130
129
  });
131
130
 
132
131
  render(<Root {...props}>hi</Root>);
133
132
 
134
- // Verify mouse was called with the correct node
135
- expect(mouse).toHaveBeenCalledWith(mockNode);
133
+ // Verify pointer was called with the event and correct node
134
+ expect(pointer).toHaveBeenCalledWith(mockEvent, mockNode);
136
135
  });
137
136
 
138
137
  it('calls scale.x.invert and scale.y.invert', () => {
@@ -145,6 +144,7 @@ describe('root', () => {
145
144
  };
146
145
 
147
146
  const mockNode = document.createElement('div');
147
+ const mockEvent = { clientX: 15, clientY: 25 };
148
148
  const mockSelection = {
149
149
  _groups: [[mockNode]],
150
150
  node: () => mockNode,
@@ -155,8 +155,8 @@ describe('root', () => {
155
155
  on: (event, handler) => {
156
156
  mockOn(event, handler);
157
157
  if (event === 'mousemove' && handler) {
158
- mouse.mockReturnValue([15, 25]);
159
- handler();
158
+ pointer.mockReturnValue([15, 25]);
159
+ handler(mockEvent);
160
160
  }
161
161
  },
162
162
  });
@@ -179,6 +179,7 @@ describe('root', () => {
179
179
  };
180
180
 
181
181
  const mockNode = document.createElement('div');
182
+ const mockEvent = { clientX: 100, clientY: 200 };
182
183
  const mockSelection = {
183
184
  _groups: [[mockNode]],
184
185
  node: () => mockNode,
@@ -189,7 +190,7 @@ describe('root', () => {
189
190
  on: (event, handler) => {
190
191
  mockOn(event, handler);
191
192
  if (event === 'mousemove' && handler) {
192
- mouse.mockReturnValue([15, 25]);
193
+ pointer.mockReturnValue([100, 200]);
193
194
  handler();
194
195
  }
195
196
  },
@@ -216,6 +217,7 @@ describe('root', () => {
216
217
  };
217
218
 
218
219
  const mockNode = document.createElement('div');
220
+ const mockEvent = { clientX: 100, clientY: 200 };
219
221
  const mockSelection = {
220
222
  _groups: [[mockNode]],
221
223
  node: () => mockNode,
@@ -226,8 +228,8 @@ describe('root', () => {
226
228
  on: (event, handler) => {
227
229
  mockOn(event, handler);
228
230
  if (event === 'mousemove' && handler) {
229
- mouse.mockReturnValue([100, 200]);
230
- handler();
231
+ pointer.mockReturnValue([100, 200]);
232
+ handler(mockEvent);
231
233
  }
232
234
  },
233
235
  });
@@ -245,6 +247,7 @@ describe('root', () => {
245
247
  };
246
248
 
247
249
  const mockNode = document.createElement('div');
250
+ const mockEvent = { clientX: 100, clientY: 200 };
248
251
  const mockSelection = {
249
252
  _groups: [[mockNode]],
250
253
  node: () => mockNode,
@@ -255,9 +258,9 @@ describe('root', () => {
255
258
  on: (event, handler) => {
256
259
  mockOn(event, handler);
257
260
  if (event === 'mousemove' && handler) {
258
- mouse.mockReturnValue([100, 200]);
261
+ pointer.mockReturnValue([100, 200]);
259
262
  // Should not throw error when onMouseMove is not provided
260
- expect(() => handler()).not.toThrow();
263
+ expect(() => handler(mockEvent)).not.toThrow();
261
264
  }
262
265
  },
263
266
  });
@@ -1,4 +1,3 @@
1
- import { AssertionError } from 'assert';
2
1
  import * as utils from '../utils';
3
2
 
4
3
  const xy = utils.xy;
@@ -53,7 +52,7 @@ describe('utils', () => {
53
52
  let scaleFn;
54
53
 
55
54
  beforeEach(() => {
56
- scaleFn = jest.fn(function(v) {
55
+ scaleFn = jest.fn(function (v) {
57
56
  return v;
58
57
  });
59
58
  });
@@ -6,7 +6,7 @@ import debug from 'debug';
6
6
  import * as utils from './utils';
7
7
  import isFunction from 'lodash/isFunction';
8
8
  import invariant from 'invariant';
9
- import { clientPoint } from 'd3-selection';
9
+ import { pointer } from 'd3-selection';
10
10
 
11
11
  const log = debug('pie-lib:plot:grid-draggable');
12
12
 
@@ -235,7 +235,7 @@ export const gridDraggable = (opts) => (Comp) => {
235
235
  this.setState({ startX: null });
236
236
  const { graphProps } = this.props;
237
237
  const { scale, snap } = graphProps;
238
- const [rawX, rawY] = clientPoint(e.target, e);
238
+ const [rawX, rawY] = pointer(e, e.target);
239
239
  let x = scale.x.invert(rawX);
240
240
  let y = scale.y.invert(rawY);
241
241
  x = snap.x(x);
package/src/root.jsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { styled } from '@mui/material/styles';
3
3
  import PropTypes from 'prop-types';
4
- import { select, mouse } from 'd3-selection';
4
+ import { select, pointer } from 'd3-selection';
5
5
 
6
6
  import { color, Readable } from '@pie-lib/render-ui';
7
7
  import EditableHtml from '@pie-lib/editable-html-tip-tap';
@@ -126,7 +126,7 @@ export class Root extends React.Component {
126
126
  labelsCharactersLimit: PropTypes.number,
127
127
  };
128
128
 
129
- mouseMove = (g) => {
129
+ mouseMove = (g, event) => {
130
130
  const { graphProps, onMouseMove } = this.props;
131
131
 
132
132
  if (!onMouseMove) {
@@ -134,7 +134,7 @@ export class Root extends React.Component {
134
134
  }
135
135
 
136
136
  const { scale, snap } = graphProps;
137
- const coords = mouse(g.node());
137
+ const coords = pointer(event, g.node());
138
138
  const x = scale.x.invert(coords[0]);
139
139
  const y = scale.y.invert(coords[1]);
140
140
 
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _react = _interopRequireDefault(require("react"));
5
- var _react2 = require("@testing-library/react");
6
- var _draggable = _interopRequireDefault(require("../draggable"));
7
- describe('draggable', function () {
8
- it('renders with children', function () {
9
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_draggable["default"], null, /*#__PURE__*/_react["default"].createElement("div", null, "hellow"))),
10
- container = _render.container;
11
- expect(container.firstChild).toBeInTheDocument();
12
- });
13
- describe('local', function () {
14
- it('resets position state when receiving new props', function () {
15
- // Render with initial props
16
- var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_draggable["default"], {
17
- position: {
18
- x: 100,
19
- y: 100
20
- }
21
- }, /*#__PURE__*/_react["default"].createElement("div", {
22
- "data-testid": "draggable-child"
23
- }, "content"))),
24
- rerender = _render2.rerender,
25
- container = _render2.container;
26
-
27
- // Verify initial render
28
- expect(container.firstChild).toBeInTheDocument();
29
-
30
- // Update props - this triggers componentWillReceiveProps
31
- // which should reset internal x/y state to 0
32
- rerender(/*#__PURE__*/_react["default"].createElement(_draggable["default"], {
33
- position: {
34
- x: 200,
35
- y: 200
36
- }
37
- }, /*#__PURE__*/_react["default"].createElement("div", {
38
- "data-testid": "draggable-child"
39
- }, "content")));
40
-
41
- // The component should still render correctly after prop change
42
- // The internal state reset is tested by ensuring no errors occur
43
- // and the component continues to function properly
44
- expect(container.firstChild).toBeInTheDocument();
45
- });
46
- });
47
- });
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfZHJhZ2dhYmxlIiwiZGVzY3JpYmUiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiY29udGFpbmVyIiwiZXhwZWN0IiwiZmlyc3RDaGlsZCIsInRvQmVJblRoZURvY3VtZW50IiwiX3JlbmRlcjIiLCJwb3NpdGlvbiIsIngiLCJ5IiwicmVyZW5kZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2RyYWdnYWJsZS50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgRHJhZ2dhYmxlIGZyb20gJy4uL2RyYWdnYWJsZSc7XG5cbmRlc2NyaWJlKCdkcmFnZ2FibGUnLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzIHdpdGggY2hpbGRyZW4nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgIDxEcmFnZ2FibGU+XG4gICAgICAgIDxkaXY+aGVsbG93PC9kaXY+XG4gICAgICA8L0RyYWdnYWJsZT4sXG4gICAgKTtcbiAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2NhbCcsICgpID0+IHtcbiAgICBpdCgncmVzZXRzIHBvc2l0aW9uIHN0YXRlIHdoZW4gcmVjZWl2aW5nIG5ldyBwcm9wcycsICgpID0+IHtcbiAgICAgIC8vIFJlbmRlciB3aXRoIGluaXRpYWwgcHJvcHNcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIsIGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8RHJhZ2dhYmxlIHBvc2l0aW9uPXt7IHg6IDEwMCwgeTogMTAwIH19PlxuICAgICAgICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJkcmFnZ2FibGUtY2hpbGRcIj5jb250ZW50PC9kaXY+XG4gICAgICAgIDwvRHJhZ2dhYmxlPlxuICAgICAgKTtcblxuICAgICAgLy8gVmVyaWZ5IGluaXRpYWwgcmVuZGVyXG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBwcm9wcyAtIHRoaXMgdHJpZ2dlcnMgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc1xuICAgICAgLy8gd2hpY2ggc2hvdWxkIHJlc2V0IGludGVybmFsIHgveSBzdGF0ZSB0byAwXG4gICAgICByZXJlbmRlcihcbiAgICAgICAgPERyYWdnYWJsZSBwb3NpdGlvbj17eyB4OiAyMDAsIHk6IDIwMCB9fT5cbiAgICAgICAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiZHJhZ2dhYmxlLWNoaWxkXCI+Y29udGVudDwvZGl2PlxuICAgICAgICA8L0RyYWdnYWJsZT5cbiAgICAgICk7XG5cbiAgICAgIC8vIFRoZSBjb21wb25lbnQgc2hvdWxkIHN0aWxsIHJlbmRlciBjb3JyZWN0bHkgYWZ0ZXIgcHJvcCBjaGFuZ2VcbiAgICAgIC8vIFRoZSBpbnRlcm5hbCBzdGF0ZSByZXNldCBpcyB0ZXN0ZWQgYnkgZW5zdXJpbmcgbm8gZXJyb3JzIG9jY3VyXG4gICAgICAvLyBhbmQgdGhlIGNvbXBvbmVudCBjb250aW51ZXMgdG8gZnVuY3Rpb24gcHJvcGVybHlcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBTTtFQUMxQkMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLFlBQU07SUFDaEMsSUFBQUMsT0FBQSxHQUFzQixJQUFBQyxjQUFNLGVBQzFCUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsVUFBQSxXQUFTLHFCQUNSSixNQUFBLFlBQUFTLGFBQUEsY0FBSyxRQUFXLENBQ1AsQ0FDYixDQUFDO01BSk9DLFNBQVMsR0FBQUgsT0FBQSxDQUFURyxTQUFTO0lBS2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7RUFDbEQsQ0FBQyxDQUFDO0VBRUZSLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBTTtJQUN0QkMsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLFlBQU07TUFDekQ7TUFDQSxJQUFBUSxRQUFBLEdBQWdDLElBQUFOLGNBQU0sZUFDcENSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxVQUFBLFdBQVM7VUFBQ1csUUFBUSxFQUFFO1lBQUVDLENBQUMsRUFBRSxHQUFHO1lBQUVDLENBQUMsRUFBRTtVQUFJO1FBQUUsZ0JBQ3RDakIsTUFBQSxZQUFBUyxhQUFBO1VBQUssZUFBWTtRQUFpQixHQUFDLFNBQVksQ0FDdEMsQ0FDYixDQUFDO1FBSk9TLFFBQVEsR0FBQUosUUFBQSxDQUFSSSxRQUFRO1FBQUVSLFNBQVMsR0FBQUksUUFBQSxDQUFUSixTQUFTOztNQU0zQjtNQUNBQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7O01BRWhEO01BQ0E7TUFDQUssUUFBUSxjQUNObEIsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFVBQUEsV0FBUztRQUFDVyxRQUFRLEVBQUU7VUFBRUMsQ0FBQyxFQUFFLEdBQUc7VUFBRUMsQ0FBQyxFQUFFO1FBQUk7TUFBRSxnQkFDdENqQixNQUFBLFlBQUFTLGFBQUE7UUFBSyxlQUFZO01BQWlCLEdBQUMsU0FBWSxDQUN0QyxDQUNiLENBQUM7O01BRUQ7TUFDQTtNQUNBO01BQ0FFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=