@vitessce/vit-s 4.0.7 → 4.0.8
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/dist/index.js +39 -20
- package/dist-tsc/hooks.d.ts +6 -1
- package/dist-tsc/hooks.d.ts.map +1 -1
- package/dist-tsc/hooks.js +52 -22
- package/dist-tsc/hooks.js.map +1 -1
- package/dist-tsc/hooks.test.js +100 -3
- package/dist-tsc/hooks.test.js.map +1 -1
- package/package.json +13 -13
- package/src/hooks.js +55 -23
- package/src/hooks.test.jsx +114 -3
package/dist/index.js
CHANGED
|
@@ -33260,7 +33260,8 @@ const ViewType$1 = {
|
|
|
33260
33260
|
DUAL_SCATTERPLOT: "dualScatterplot",
|
|
33261
33261
|
TREEMAP: "treemap",
|
|
33262
33262
|
SAMPLE_SET_PAIR_MANAGER: "sampleSetPairManager",
|
|
33263
|
-
FEATURE_STATS_TABLE: "featureStatsTable"
|
|
33263
|
+
FEATURE_STATS_TABLE: "featureStatsTable",
|
|
33264
|
+
SINGLE_OBS_SET_SELECTOR: "singleObsSetSelector"
|
|
33264
33265
|
};
|
|
33265
33266
|
const DataType$1 = {
|
|
33266
33267
|
OBS_LABELS: "obsLabels",
|
|
@@ -34462,6 +34463,11 @@ const AUTO_INDEPENDENT_COORDINATION_TYPES = [
|
|
|
34462
34463
|
CoordinationType$1.FEATURE_POINT_FOLD_CHANGE_THRESHOLD,
|
|
34463
34464
|
CoordinationType$1.FEATURE_LABEL_FOLD_CHANGE_THRESHOLD
|
|
34464
34465
|
],
|
|
34466
|
+
[ViewType$1.SINGLE_OBS_SET_SELECTOR]: [
|
|
34467
|
+
CoordinationType$1.OBS_TYPE,
|
|
34468
|
+
CoordinationType$1.OBS_SET_COLOR,
|
|
34469
|
+
CoordinationType$1.OBS_SET_SELECTION
|
|
34470
|
+
],
|
|
34465
34471
|
[ViewType$1.OBS_SET_COMPOSITION_BAR_PLOT]: [
|
|
34466
34472
|
CoordinationType$1.DATASET,
|
|
34467
34473
|
CoordinationType$1.OBS_TYPE,
|
|
@@ -34556,7 +34562,7 @@ const AUTO_INDEPENDENT_COORDINATION_TYPES = [
|
|
|
34556
34562
|
CoordinationType$1.HIERARCHY_LEVELS
|
|
34557
34563
|
]
|
|
34558
34564
|
});
|
|
34559
|
-
const version = "4.0.
|
|
34565
|
+
const version = "4.0.8";
|
|
34560
34566
|
const META_VERSION = {
|
|
34561
34567
|
version
|
|
34562
34568
|
};
|
|
@@ -46009,31 +46015,44 @@ function useWindowDimensions() {
|
|
|
46009
46015
|
}, []);
|
|
46010
46016
|
return windowDimensions;
|
|
46011
46017
|
}
|
|
46018
|
+
const EMPTY_SIZE = { width: void 0, height: void 0 };
|
|
46012
46019
|
function useGridItemSize() {
|
|
46013
46020
|
const containerRef = useRef();
|
|
46014
|
-
const
|
|
46015
|
-
const
|
|
46016
|
-
const
|
|
46017
|
-
const incrementResizeCount = useEmitGridResize();
|
|
46021
|
+
const observerRef = useRef(null);
|
|
46022
|
+
const observedRef = useRef(null);
|
|
46023
|
+
const [size2, setSize] = useState(EMPTY_SIZE);
|
|
46018
46024
|
useEffect(() => {
|
|
46019
|
-
|
|
46020
|
-
|
|
46025
|
+
if (typeof ResizeObserver === "undefined") {
|
|
46026
|
+
return () => {
|
|
46027
|
+
};
|
|
46021
46028
|
}
|
|
46022
|
-
const
|
|
46023
|
-
|
|
46024
|
-
|
|
46029
|
+
const observer = new ResizeObserver(([entry]) => {
|
|
46030
|
+
if (!entry) return;
|
|
46031
|
+
const { width: width2, height: height2 } = entry.target.getBoundingClientRect();
|
|
46032
|
+
setSize((prevSize) => prevSize.width === width2 && prevSize.height === height2 ? prevSize : { width: width2, height: height2 });
|
|
46033
|
+
});
|
|
46034
|
+
observerRef.current = observer;
|
|
46025
46035
|
return () => {
|
|
46026
|
-
|
|
46036
|
+
observer.disconnect();
|
|
46037
|
+
observerRef.current = null;
|
|
46038
|
+
observedRef.current = null;
|
|
46027
46039
|
};
|
|
46028
|
-
}, [
|
|
46040
|
+
}, []);
|
|
46029
46041
|
useEffect(() => {
|
|
46030
|
-
|
|
46031
|
-
const
|
|
46032
|
-
|
|
46033
|
-
|
|
46034
|
-
|
|
46035
|
-
|
|
46036
|
-
|
|
46042
|
+
const observer = observerRef.current;
|
|
46043
|
+
const element = containerRef.current ?? null;
|
|
46044
|
+
if (!observer || element === observedRef.current) {
|
|
46045
|
+
return;
|
|
46046
|
+
}
|
|
46047
|
+
if (observedRef.current) {
|
|
46048
|
+
observer.unobserve(observedRef.current);
|
|
46049
|
+
}
|
|
46050
|
+
observedRef.current = element;
|
|
46051
|
+
if (element) {
|
|
46052
|
+
observer.observe(element);
|
|
46053
|
+
}
|
|
46054
|
+
});
|
|
46055
|
+
return [size2.width, size2.height, containerRef];
|
|
46037
46056
|
}
|
|
46038
46057
|
function useDeckCanvasSize() {
|
|
46039
46058
|
const deckRef = useRef();
|
package/dist-tsc/hooks.d.ts
CHANGED
|
@@ -6,7 +6,12 @@ export function useVitessceContainer(ref: any): any;
|
|
|
6
6
|
*/
|
|
7
7
|
export function useWindowDimensions(): array;
|
|
8
8
|
/**
|
|
9
|
-
* Custom hook,
|
|
9
|
+
* Custom hook, observes the size of a grid item's container element.
|
|
10
|
+
*
|
|
11
|
+
* The size is obtained from a ResizeObserver on the container element itself,
|
|
12
|
+
* so it stays in sync with window resizes, react-grid-layout resizes, and any
|
|
13
|
+
* other layout change, without the view needing to listen for those events or
|
|
14
|
+
* to broadcast anything to sibling views.
|
|
10
15
|
* @returns {array} `[width, height, containerRef]` where width and height
|
|
11
16
|
* are numbers and containerRef is a React ref.
|
|
12
17
|
*/
|
package/dist-tsc/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.js"],"names":[],"mappings":"AAsBA,oDAOC;AAED;;;;GAIG;AACH,uCAHa,KAAK,CAmBjB;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.js"],"names":[],"mappings":"AAsBA,oDAOC;AAED;;;;GAIG;AACH,uCAHa,KAAK,CAmBjB;AAID;;;;;;;;;GASG;AACH,mCAHa,KAAK,CA6DjB;AAED;;;;;GAKG;AACH,qCAJa,KAAK,CAqCjB;AAED;;;;;;GAMG;AACH,uCAHW,MAAM,EAAE,GACN,OAAO,CAOnB;AAED;;;;GAIG;AACH,8BAHW,CAAC,IAAI,GAAC,MAAM,EAAE,CAAC,EAAE,GACf,KAAK,CAYjB;AAED;;;;;;GAMG;AACH,qDAJW,GAAG,sBACD,KAAK,CA0BjB;AAED;;;;;;;;;;GAUG;AACH,+DARG;IAAuB,gBAAgB,EAA/B,MAAM;CAEd,GAAU,KAAK,CAmBjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,yDAbW,YAAY,EAAE,GAAG,IAAI,GAInB;IACZ,QAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACjC,OAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IACtC,OAAU,EAAE,MAAM,EAAE,CAAA;CACjB,CAwBH;AAMD;;;;QAyCC;AAED,iEAOC;AAED,kHA4BC;AAED;;;;;;;;;;GAUG;AACH,yDALW,MAAM,oBACN,gBAAI,IAAI,iBAEN;IAAE,kBAAkB,EAAE,OAAO,CAAA;CAAE,GAAC,IAAI,CAkChD;AAED;;;;;;;GAOG;AACH,6CALW,GAAC,YACD,CAAC,OAAO,CAAC,GAEP,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8BlC"}
|
package/dist-tsc/hooks.js
CHANGED
|
@@ -40,40 +40,70 @@ export function useWindowDimensions() {
|
|
|
40
40
|
}, []);
|
|
41
41
|
return windowDimensions;
|
|
42
42
|
}
|
|
43
|
+
const EMPTY_SIZE = { width: undefined, height: undefined };
|
|
43
44
|
/**
|
|
44
|
-
* Custom hook,
|
|
45
|
+
* Custom hook, observes the size of a grid item's container element.
|
|
46
|
+
*
|
|
47
|
+
* The size is obtained from a ResizeObserver on the container element itself,
|
|
48
|
+
* so it stays in sync with window resizes, react-grid-layout resizes, and any
|
|
49
|
+
* other layout change, without the view needing to listen for those events or
|
|
50
|
+
* to broadcast anything to sibling views.
|
|
45
51
|
* @returns {array} `[width, height, containerRef]` where width and height
|
|
46
52
|
* are numbers and containerRef is a React ref.
|
|
47
53
|
*/
|
|
48
54
|
export function useGridItemSize() {
|
|
49
55
|
const containerRef = useRef();
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
// On window resize events, increment the grid resize count.
|
|
56
|
+
const observerRef = useRef(null);
|
|
57
|
+
const observedRef = useRef(null);
|
|
58
|
+
const [size, setSize] = useState(EMPTY_SIZE);
|
|
59
|
+
// Create one ResizeObserver for the lifetime of the component.
|
|
55
60
|
useEffect(() => {
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
62
|
+
// Environments without a ResizeObserver implementation (such as jsdom)
|
|
63
|
+
// do not receive size updates.
|
|
64
|
+
return () => { };
|
|
58
65
|
}
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
const observer = new ResizeObserver(([entry]) => {
|
|
67
|
+
if (!entry)
|
|
68
|
+
return;
|
|
69
|
+
// Prefer getBoundingClientRect over the ResizeObserver entry's box sizes,
|
|
70
|
+
// so that the result accounts for CSS transforms on ancestor elements.
|
|
71
|
+
const { width, height } = entry.target.getBoundingClientRect();
|
|
72
|
+
// Bail out when the size is unchanged, both to avoid a wasted re-render
|
|
73
|
+
// and to guarantee that a callback cannot feed back into itself.
|
|
74
|
+
setSize(prevSize => (prevSize.width === width && prevSize.height === height
|
|
75
|
+
? prevSize
|
|
76
|
+
: { width, height }));
|
|
77
|
+
});
|
|
78
|
+
observerRef.current = observer;
|
|
62
79
|
return () => {
|
|
63
|
-
|
|
80
|
+
observer.disconnect();
|
|
81
|
+
observerRef.current = null;
|
|
82
|
+
observedRef.current = null;
|
|
64
83
|
};
|
|
65
|
-
}, [
|
|
66
|
-
//
|
|
67
|
-
//
|
|
84
|
+
}, []);
|
|
85
|
+
// The container element is not necessarily mounted on the first render, and
|
|
86
|
+
// some views swap it out or assign containerRef.current imperatively, so
|
|
87
|
+
// re-check which element to observe after every render rather than only once.
|
|
68
88
|
useEffect(() => {
|
|
69
|
-
|
|
89
|
+
const observer = observerRef.current;
|
|
90
|
+
const element = containerRef.current ?? null;
|
|
91
|
+
if (!observer || element === observedRef.current) {
|
|
70
92
|
return;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
93
|
+
}
|
|
94
|
+
if (observedRef.current) {
|
|
95
|
+
observer.unobserve(observedRef.current);
|
|
96
|
+
}
|
|
97
|
+
observedRef.current = element;
|
|
98
|
+
if (element) {
|
|
99
|
+
// ResizeObserver invokes its callback once upon observe(),
|
|
100
|
+
// which provides the initial measurement.
|
|
101
|
+
observer.observe(element);
|
|
102
|
+
}
|
|
103
|
+
// Deliberately no dependency array: the effect body is a cheap
|
|
104
|
+
// identity comparison in the common case where nothing changed.
|
|
105
|
+
});
|
|
106
|
+
return [size.width, size.height, containerRef];
|
|
77
107
|
}
|
|
78
108
|
/**
|
|
79
109
|
* Custom hook, subscribes to GRID_RESIZE and window resize events.
|
package/dist-tsc/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.js"],"names":[],"mappings":"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"}
|
package/dist-tsc/hooks.test.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { describe, it, expect, vi, beforeEach, afterEach, } from 'vitest';
|
|
4
|
+
import { renderHook, render, act } from '@testing-library/react';
|
|
5
|
+
import { useExpressionValueGetter, useGridItemSize } from './hooks.js';
|
|
6
|
+
import { useGridResize } from './state/hooks.js';
|
|
4
7
|
describe('useExpressionValueGetter', () => {
|
|
5
8
|
const expressionData = [new Uint8Array([10, 20, 30])];
|
|
6
9
|
it('reads by position when the instance and matrix indices are the same array', () => {
|
|
@@ -33,4 +36,98 @@ describe('useExpressionValueGetter', () => {
|
|
|
33
36
|
expect(noData.current(null, { index: 0 })).toEqual(0);
|
|
34
37
|
});
|
|
35
38
|
});
|
|
39
|
+
describe('useGridItemSize', () => {
|
|
40
|
+
let observers;
|
|
41
|
+
let rect;
|
|
42
|
+
let originalResizeObserver;
|
|
43
|
+
function GridItem(props) {
|
|
44
|
+
const { sizes, withContainer = true } = props;
|
|
45
|
+
const [width, height, containerRef] = useGridItemSize();
|
|
46
|
+
sizes.push([width, height]);
|
|
47
|
+
return withContainer ? _jsx("div", { ref: containerRef }) : null;
|
|
48
|
+
}
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
observers = [];
|
|
51
|
+
rect = { width: 0, height: 0 };
|
|
52
|
+
// eslint-disable-next-line no-undef
|
|
53
|
+
originalResizeObserver = globalThis.ResizeObserver;
|
|
54
|
+
// jsdom does not implement ResizeObserver.
|
|
55
|
+
// eslint-disable-next-line no-undef
|
|
56
|
+
globalThis.ResizeObserver = class {
|
|
57
|
+
constructor(callback) {
|
|
58
|
+
this.callback = callback;
|
|
59
|
+
this.element = null;
|
|
60
|
+
observers.push(this);
|
|
61
|
+
}
|
|
62
|
+
observe(element) {
|
|
63
|
+
this.element = element;
|
|
64
|
+
// The real ResizeObserver invokes its callback once upon observe().
|
|
65
|
+
this.callback([{ target: element }], this);
|
|
66
|
+
}
|
|
67
|
+
unobserve() {
|
|
68
|
+
this.element = null;
|
|
69
|
+
}
|
|
70
|
+
disconnect() {
|
|
71
|
+
this.element = null;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
vi.spyOn(HTMLElement.prototype, 'getBoundingClientRect')
|
|
75
|
+
.mockImplementation(() => ({ ...rect }));
|
|
76
|
+
});
|
|
77
|
+
afterEach(() => {
|
|
78
|
+
// eslint-disable-next-line no-undef
|
|
79
|
+
globalThis.ResizeObserver = originalResizeObserver;
|
|
80
|
+
vi.restoreAllMocks();
|
|
81
|
+
});
|
|
82
|
+
it('measures the container element on mount and on subsequent resizes', () => {
|
|
83
|
+
rect = { width: 300, height: 200 };
|
|
84
|
+
const sizes = [];
|
|
85
|
+
render(_jsx(GridItem, { sizes: sizes }));
|
|
86
|
+
expect(sizes.at(-1)).toEqual([300, 200]);
|
|
87
|
+
// A later element resize is picked up without any window or grid event.
|
|
88
|
+
rect = { width: 320, height: 180 };
|
|
89
|
+
act(() => {
|
|
90
|
+
observers[0].callback([{ target: observers[0].element }], observers[0]);
|
|
91
|
+
});
|
|
92
|
+
expect(sizes.at(-1)).toEqual([320, 180]);
|
|
93
|
+
});
|
|
94
|
+
it('stops re-rendering when the observed size is unchanged', () => {
|
|
95
|
+
rect = { width: 300, height: 200 };
|
|
96
|
+
const sizes = [];
|
|
97
|
+
render(_jsx(GridItem, { sizes: sizes }));
|
|
98
|
+
const renderCount = sizes.length;
|
|
99
|
+
// Repeated callbacks reporting the same size must not keep re-rendering,
|
|
100
|
+
// otherwise a ResizeObserver callback could feed back into itself.
|
|
101
|
+
for (let i = 0; i < 5; i += 1) {
|
|
102
|
+
// eslint-disable-next-line no-loop-func
|
|
103
|
+
act(() => {
|
|
104
|
+
observers[0].callback([{ target: observers[0].element }], observers[0]);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// React may still render once before bailing out on the unchanged state.
|
|
108
|
+
expect(sizes.length).toBeLessThanOrEqual(renderCount + 1);
|
|
109
|
+
expect(sizes.at(-1)).toEqual([300, 200]);
|
|
110
|
+
});
|
|
111
|
+
it('observes a container element which only mounts after the first render', () => {
|
|
112
|
+
rect = { width: 300, height: 200 };
|
|
113
|
+
const sizes = [];
|
|
114
|
+
const { rerender } = render(_jsx(GridItem, { sizes: sizes, withContainer: false }));
|
|
115
|
+
expect(sizes.at(-1)).toEqual([undefined, undefined]);
|
|
116
|
+
rerender(_jsx(GridItem, { sizes: sizes, withContainer: true }));
|
|
117
|
+
expect(sizes.at(-1)).toEqual([300, 200]);
|
|
118
|
+
});
|
|
119
|
+
it('does not notify sibling views when it mounts', () => {
|
|
120
|
+
// Regression test: emitting a global grid-resize event on mount caused
|
|
121
|
+
// every other view in the grid to re-render (and DeckGL views to re-measure)
|
|
122
|
+
// whenever any view mounted.
|
|
123
|
+
const resizeCounts = [];
|
|
124
|
+
function Sibling() {
|
|
125
|
+
resizeCounts.push(useGridResize());
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const { rerender } = render(_jsx(_Fragment, { children: _jsx(Sibling, {}) }));
|
|
129
|
+
rerender(_jsxs(_Fragment, { children: [_jsx(Sibling, {}), _jsx(GridItem, { sizes: [] })] }));
|
|
130
|
+
expect(new Set(resizeCounts).size).toEqual(1);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
36
133
|
//# sourceMappingURL=hooks.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.test.js","sourceRoot":"","sources":["../src/hooks.test.jsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"hooks.test.js","sourceRoot":"","sources":["../src/hooks.test.jsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitessce/vit-s",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.8",
|
|
4
4
|
"author": "HIDIVE Lab at HMS",
|
|
5
5
|
"homepage": "http://vitessce.io",
|
|
6
6
|
"repository": {
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
"react-error-boundary": "^5.0.0",
|
|
32
32
|
"@placemarkio/flat-drop-files": "^1.0.2",
|
|
33
33
|
"zarrita": "0.7.5",
|
|
34
|
-
"@vitessce/styles": "4.0.
|
|
35
|
-
"@vitessce/abstract": "4.0.
|
|
36
|
-
"@vitessce/
|
|
37
|
-
"@vitessce/
|
|
38
|
-
"@vitessce/
|
|
39
|
-
"@vitessce/
|
|
40
|
-
"@vitessce/
|
|
41
|
-
"@vitessce/
|
|
42
|
-
"@vitessce/
|
|
43
|
-
"@vitessce/
|
|
44
|
-
"@vitessce/
|
|
34
|
+
"@vitessce/styles": "4.0.8",
|
|
35
|
+
"@vitessce/abstract": "4.0.8",
|
|
36
|
+
"@vitessce/error": "4.0.8",
|
|
37
|
+
"@vitessce/constants-internal": "4.0.8",
|
|
38
|
+
"@vitessce/plugins": "4.0.8",
|
|
39
|
+
"@vitessce/schemas": "4.0.8",
|
|
40
|
+
"@vitessce/sets-utils": "4.0.8",
|
|
41
|
+
"@vitessce/zarr-utils": "4.0.8",
|
|
42
|
+
"@vitessce/config": "4.0.8",
|
|
43
|
+
"@vitessce/utils": "4.0.8",
|
|
44
|
+
"@vitessce/globals": "4.0.8"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@testing-library/jest-dom": "^6.6.3",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"react-dom": "19.2.6",
|
|
51
51
|
"vite": "^7.0.0",
|
|
52
52
|
"vitest": "^3.1.4",
|
|
53
|
-
"@vitessce/types": "4.0.
|
|
53
|
+
"@vitessce/types": "4.0.8"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
package/src/hooks.js
CHANGED
|
@@ -52,44 +52,76 @@ export function useWindowDimensions() {
|
|
|
52
52
|
return windowDimensions;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
const EMPTY_SIZE = { width: undefined, height: undefined };
|
|
56
|
+
|
|
55
57
|
/**
|
|
56
|
-
* Custom hook,
|
|
58
|
+
* Custom hook, observes the size of a grid item's container element.
|
|
59
|
+
*
|
|
60
|
+
* The size is obtained from a ResizeObserver on the container element itself,
|
|
61
|
+
* so it stays in sync with window resizes, react-grid-layout resizes, and any
|
|
62
|
+
* other layout change, without the view needing to listen for those events or
|
|
63
|
+
* to broadcast anything to sibling views.
|
|
57
64
|
* @returns {array} `[width, height, containerRef]` where width and height
|
|
58
65
|
* are numbers and containerRef is a React ref.
|
|
59
66
|
*/
|
|
60
67
|
export function useGridItemSize() {
|
|
61
68
|
const containerRef = useRef();
|
|
69
|
+
const observerRef = useRef(null);
|
|
70
|
+
const observedRef = useRef(null);
|
|
62
71
|
|
|
63
|
-
const [
|
|
64
|
-
const [width, setWidth] = useState();
|
|
65
|
-
|
|
66
|
-
const resizeCount = useGridResize();
|
|
67
|
-
const incrementResizeCount = useEmitGridResize();
|
|
72
|
+
const [size, setSize] = useState(EMPTY_SIZE);
|
|
68
73
|
|
|
69
|
-
//
|
|
74
|
+
// Create one ResizeObserver for the lifetime of the component.
|
|
70
75
|
useEffect(() => {
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
77
|
+
// Environments without a ResizeObserver implementation (such as jsdom)
|
|
78
|
+
// do not receive size updates.
|
|
79
|
+
return () => {};
|
|
73
80
|
}
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
81
|
+
const observer = new ResizeObserver(([entry]) => {
|
|
82
|
+
if (!entry) return;
|
|
83
|
+
// Prefer getBoundingClientRect over the ResizeObserver entry's box sizes,
|
|
84
|
+
// so that the result accounts for CSS transforms on ancestor elements.
|
|
85
|
+
const { width, height } = entry.target.getBoundingClientRect();
|
|
86
|
+
// Bail out when the size is unchanged, both to avoid a wasted re-render
|
|
87
|
+
// and to guarantee that a callback cannot feed back into itself.
|
|
88
|
+
setSize(prevSize => (
|
|
89
|
+
prevSize.width === width && prevSize.height === height
|
|
90
|
+
? prevSize
|
|
91
|
+
: { width, height }
|
|
92
|
+
));
|
|
93
|
+
});
|
|
94
|
+
observerRef.current = observer;
|
|
77
95
|
return () => {
|
|
78
|
-
|
|
96
|
+
observer.disconnect();
|
|
97
|
+
observerRef.current = null;
|
|
98
|
+
observedRef.current = null;
|
|
79
99
|
};
|
|
80
|
-
}, [
|
|
100
|
+
}, []);
|
|
81
101
|
|
|
82
|
-
//
|
|
83
|
-
//
|
|
102
|
+
// The container element is not necessarily mounted on the first render, and
|
|
103
|
+
// some views swap it out or assign containerRef.current imperatively, so
|
|
104
|
+
// re-check which element to observe after every render rather than only once.
|
|
84
105
|
useEffect(() => {
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
106
|
+
const observer = observerRef.current;
|
|
107
|
+
const element = containerRef.current ?? null;
|
|
108
|
+
if (!observer || element === observedRef.current) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (observedRef.current) {
|
|
112
|
+
observer.unobserve(observedRef.current);
|
|
113
|
+
}
|
|
114
|
+
observedRef.current = element;
|
|
115
|
+
if (element) {
|
|
116
|
+
// ResizeObserver invokes its callback once upon observe(),
|
|
117
|
+
// which provides the initial measurement.
|
|
118
|
+
observer.observe(element);
|
|
119
|
+
}
|
|
120
|
+
// Deliberately no dependency array: the effect body is a cheap
|
|
121
|
+
// identity comparison in the common case where nothing changed.
|
|
122
|
+
});
|
|
91
123
|
|
|
92
|
-
return [width, height, containerRef];
|
|
124
|
+
return [size.width, size.height, containerRef];
|
|
93
125
|
}
|
|
94
126
|
|
|
95
127
|
/**
|
package/src/hooks.test.jsx
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
describe, it, expect, vi, beforeEach, afterEach,
|
|
4
|
+
} from 'vitest';
|
|
5
|
+
import { renderHook, render, act } from '@testing-library/react';
|
|
6
|
+
import { useExpressionValueGetter, useGridItemSize } from './hooks.js';
|
|
7
|
+
import { useGridResize } from './state/hooks.js';
|
|
4
8
|
|
|
5
9
|
describe('useExpressionValueGetter', () => {
|
|
6
10
|
const expressionData = [new Uint8Array([10, 20, 30])];
|
|
@@ -37,3 +41,110 @@ describe('useExpressionValueGetter', () => {
|
|
|
37
41
|
expect(noData.current(null, { index: 0 })).toEqual(0);
|
|
38
42
|
});
|
|
39
43
|
});
|
|
44
|
+
|
|
45
|
+
describe('useGridItemSize', () => {
|
|
46
|
+
let observers;
|
|
47
|
+
let rect;
|
|
48
|
+
let originalResizeObserver;
|
|
49
|
+
|
|
50
|
+
function GridItem(props) {
|
|
51
|
+
const { sizes, withContainer = true } = props;
|
|
52
|
+
const [width, height, containerRef] = useGridItemSize();
|
|
53
|
+
sizes.push([width, height]);
|
|
54
|
+
return withContainer ? <div ref={containerRef} /> : null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
beforeEach(() => {
|
|
58
|
+
observers = [];
|
|
59
|
+
rect = { width: 0, height: 0 };
|
|
60
|
+
// eslint-disable-next-line no-undef
|
|
61
|
+
originalResizeObserver = globalThis.ResizeObserver;
|
|
62
|
+
// jsdom does not implement ResizeObserver.
|
|
63
|
+
// eslint-disable-next-line no-undef
|
|
64
|
+
globalThis.ResizeObserver = class {
|
|
65
|
+
constructor(callback) {
|
|
66
|
+
this.callback = callback;
|
|
67
|
+
this.element = null;
|
|
68
|
+
observers.push(this);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
observe(element) {
|
|
72
|
+
this.element = element;
|
|
73
|
+
// The real ResizeObserver invokes its callback once upon observe().
|
|
74
|
+
this.callback([{ target: element }], this);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
unobserve() {
|
|
78
|
+
this.element = null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
disconnect() {
|
|
82
|
+
this.element = null;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
vi.spyOn(HTMLElement.prototype, 'getBoundingClientRect')
|
|
86
|
+
.mockImplementation(() => ({ ...rect }));
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
afterEach(() => {
|
|
90
|
+
// eslint-disable-next-line no-undef
|
|
91
|
+
globalThis.ResizeObserver = originalResizeObserver;
|
|
92
|
+
vi.restoreAllMocks();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('measures the container element on mount and on subsequent resizes', () => {
|
|
96
|
+
rect = { width: 300, height: 200 };
|
|
97
|
+
const sizes = [];
|
|
98
|
+
render(<GridItem sizes={sizes} />);
|
|
99
|
+
expect(sizes.at(-1)).toEqual([300, 200]);
|
|
100
|
+
|
|
101
|
+
// A later element resize is picked up without any window or grid event.
|
|
102
|
+
rect = { width: 320, height: 180 };
|
|
103
|
+
act(() => {
|
|
104
|
+
observers[0].callback([{ target: observers[0].element }], observers[0]);
|
|
105
|
+
});
|
|
106
|
+
expect(sizes.at(-1)).toEqual([320, 180]);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('stops re-rendering when the observed size is unchanged', () => {
|
|
110
|
+
rect = { width: 300, height: 200 };
|
|
111
|
+
const sizes = [];
|
|
112
|
+
render(<GridItem sizes={sizes} />);
|
|
113
|
+
const renderCount = sizes.length;
|
|
114
|
+
// Repeated callbacks reporting the same size must not keep re-rendering,
|
|
115
|
+
// otherwise a ResizeObserver callback could feed back into itself.
|
|
116
|
+
for (let i = 0; i < 5; i += 1) {
|
|
117
|
+
// eslint-disable-next-line no-loop-func
|
|
118
|
+
act(() => {
|
|
119
|
+
observers[0].callback([{ target: observers[0].element }], observers[0]);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// React may still render once before bailing out on the unchanged state.
|
|
123
|
+
expect(sizes.length).toBeLessThanOrEqual(renderCount + 1);
|
|
124
|
+
expect(sizes.at(-1)).toEqual([300, 200]);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it('observes a container element which only mounts after the first render', () => {
|
|
128
|
+
rect = { width: 300, height: 200 };
|
|
129
|
+
const sizes = [];
|
|
130
|
+
const { rerender } = render(<GridItem sizes={sizes} withContainer={false} />);
|
|
131
|
+
expect(sizes.at(-1)).toEqual([undefined, undefined]);
|
|
132
|
+
|
|
133
|
+
rerender(<GridItem sizes={sizes} withContainer />);
|
|
134
|
+
expect(sizes.at(-1)).toEqual([300, 200]);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it('does not notify sibling views when it mounts', () => {
|
|
138
|
+
// Regression test: emitting a global grid-resize event on mount caused
|
|
139
|
+
// every other view in the grid to re-render (and DeckGL views to re-measure)
|
|
140
|
+
// whenever any view mounted.
|
|
141
|
+
const resizeCounts = [];
|
|
142
|
+
function Sibling() {
|
|
143
|
+
resizeCounts.push(useGridResize());
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const { rerender } = render(<><Sibling /></>);
|
|
147
|
+
rerender(<><Sibling /><GridItem sizes={[]} /></>);
|
|
148
|
+
expect(new Set(resizeCounts).size).toEqual(1);
|
|
149
|
+
});
|
|
150
|
+
});
|