@tamagui/use-element-layout 2.0.0-rc.4 → 2.0.0-rc.40
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/cjs/index.cjs +282 -132
- package/dist/cjs/index.native.js +356 -197
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/index.js +265 -125
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/index.mjs +267 -120
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +341 -185
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +7 -10
- package/src/index.tsx +280 -89
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +4 -4
- package/dist/cjs/index.js +0 -198
- package/dist/cjs/index.js.map +0 -6
package/dist/esm/index.mjs
CHANGED
|
@@ -1,178 +1,325 @@
|
|
|
1
1
|
import { useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
|
-
import { isEqualShallow } from "@tamagui/is-equal-shallow";
|
|
3
2
|
import { createContext, useContext, useId } from "react";
|
|
4
3
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
const LayoutHandlers = /* @__PURE__ */new WeakMap()
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
const LayoutHandlers = /* @__PURE__ */new WeakMap();
|
|
5
|
+
const LayoutDisableKey = /* @__PURE__ */new WeakMap();
|
|
6
|
+
const Nodes = /* @__PURE__ */new Set();
|
|
7
|
+
const IntersectionState = /* @__PURE__ */new WeakMap();
|
|
8
|
+
const usePretransformDimensions = () => globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === "1";
|
|
9
|
+
let _debugLayout;
|
|
10
|
+
function isDebugLayout() {
|
|
11
|
+
if (_debugLayout === void 0) _debugLayout = typeof window !== "undefined" && new URLSearchParams(window.location.search).has("__tamaDebugLayout");
|
|
12
|
+
return _debugLayout;
|
|
13
|
+
}
|
|
14
|
+
const DisableLayoutContextValues = {};
|
|
15
|
+
const DisableLayoutContextKey = createContext("");
|
|
16
|
+
const ENABLE = typeof IntersectionObserver !== "undefined";
|
|
17
|
+
const LayoutMeasurementController = ({
|
|
18
|
+
disable,
|
|
19
|
+
children
|
|
20
|
+
}) => {
|
|
21
|
+
const id = useId();
|
|
22
|
+
useIsomorphicLayoutEffect(() => {
|
|
23
|
+
DisableLayoutContextValues[id] = disable;
|
|
24
|
+
}, [disable, id]);
|
|
25
|
+
return /* @__PURE__ */jsx(DisableLayoutContextKey.Provider, {
|
|
26
|
+
value: id,
|
|
14
27
|
children
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}, [disable, id]), /* @__PURE__ */jsx(DisableLayoutContextKey.Provider, {
|
|
20
|
-
value: id,
|
|
21
|
-
children
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
let globalIntersectionObserver = null,
|
|
25
|
-
strategy = "async";
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
let globalIntersectionObserver = null;
|
|
31
|
+
let strategy = "async";
|
|
26
32
|
function setOnLayoutStrategy(state) {
|
|
27
33
|
strategy = state;
|
|
28
34
|
}
|
|
29
|
-
const NodeRectCache = /* @__PURE__ */new WeakMap()
|
|
30
|
-
|
|
31
|
-
let avoidUpdates = !0;
|
|
35
|
+
const NodeRectCache = /* @__PURE__ */new WeakMap();
|
|
36
|
+
let avoidUpdates = true;
|
|
32
37
|
const queuedUpdates = /* @__PURE__ */new Map();
|
|
33
38
|
function enable() {
|
|
34
|
-
|
|
39
|
+
if (avoidUpdates) {
|
|
40
|
+
avoidUpdates = false;
|
|
41
|
+
if (queuedUpdates) {
|
|
42
|
+
queuedUpdates.forEach(cb => cb());
|
|
43
|
+
queuedUpdates.clear();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
35
46
|
}
|
|
36
47
|
function startGlobalObservers() {
|
|
37
|
-
!ENABLE || globalIntersectionObserver
|
|
38
|
-
|
|
48
|
+
if (!ENABLE || globalIntersectionObserver) return;
|
|
49
|
+
globalIntersectionObserver = new IntersectionObserver(entries => {
|
|
50
|
+
for (let i = 0; i < entries.length; i++) {
|
|
51
|
+
const entry = entries[i];
|
|
39
52
|
const node = entry.target;
|
|
40
|
-
IntersectionState.get(node) !== entry.isIntersecting
|
|
41
|
-
}
|
|
53
|
+
if (IntersectionState.get(node) !== entry.isIntersecting) IntersectionState.set(node, entry.isIntersecting);
|
|
54
|
+
}
|
|
42
55
|
}, {
|
|
43
56
|
threshold: 0
|
|
44
|
-
})
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function rectsEqual(a, b) {
|
|
60
|
+
return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
|
|
45
61
|
}
|
|
46
62
|
if (ENABLE) {
|
|
63
|
+
let ensureRectFetchObserver = function () {
|
|
64
|
+
if (rectFetchObserver) return rectFetchObserver;
|
|
65
|
+
rectFetchObserver = new IntersectionObserver(entries => {
|
|
66
|
+
lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
|
|
67
|
+
for (let i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
|
|
68
|
+
if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
|
|
69
|
+
if (rectFetchResolve) {
|
|
70
|
+
rectFetchResolve(true);
|
|
71
|
+
rectFetchResolve = null;
|
|
72
|
+
}
|
|
73
|
+
}, {
|
|
74
|
+
threshold: 0
|
|
75
|
+
});
|
|
76
|
+
return rectFetchObserver;
|
|
77
|
+
};
|
|
47
78
|
const BoundingRects = /* @__PURE__ */new WeakMap();
|
|
79
|
+
let rectFetchObserver = null;
|
|
80
|
+
let rectFetchResolve = null;
|
|
81
|
+
let rectFetchStartTime = 0;
|
|
82
|
+
let lastCallbackDelay = 0;
|
|
48
83
|
async function updateLayoutIfChanged(node) {
|
|
49
84
|
const onLayout = LayoutHandlers.get(node);
|
|
50
|
-
if (typeof onLayout
|
|
85
|
+
if (typeof onLayout !== "function") return;
|
|
51
86
|
const parentNode = node.parentElement;
|
|
52
87
|
if (!parentNode) return;
|
|
53
|
-
let nodeRect
|
|
88
|
+
let nodeRect;
|
|
89
|
+
let parentRect;
|
|
54
90
|
if (strategy === "async") {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
nodeRect
|
|
58
|
-
} else
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
!
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
NodeRectCache.set(
|
|
69
|
-
const event = getElementLayoutEvent(nodeRect, parentRect);
|
|
70
|
-
|
|
91
|
+
nodeRect = BoundingRects.get(node);
|
|
92
|
+
parentRect = BoundingRects.get(parentNode);
|
|
93
|
+
if (!nodeRect || !parentRect) return;
|
|
94
|
+
} else {
|
|
95
|
+
nodeRect = node.getBoundingClientRect();
|
|
96
|
+
parentRect = parentNode.getBoundingClientRect();
|
|
97
|
+
}
|
|
98
|
+
const cachedRect = NodeRectCache.get(node);
|
|
99
|
+
const cachedParentRect = NodeRectCache.get(parentNode);
|
|
100
|
+
const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
|
|
101
|
+
const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
|
|
102
|
+
if (nodeChanged || parentChanged) {
|
|
103
|
+
NodeRectCache.set(node, nodeRect);
|
|
104
|
+
NodeRectCache.set(parentNode, parentRect);
|
|
105
|
+
const event = getElementLayoutEvent(nodeRect, parentRect, node);
|
|
106
|
+
if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] change", {
|
|
107
|
+
tag: node.tagName,
|
|
108
|
+
id: node.id || void 0,
|
|
109
|
+
className: (node.className || "").slice(0, 60) || void 0,
|
|
110
|
+
layout: event.nativeEvent.layout,
|
|
111
|
+
first: !cachedRect
|
|
112
|
+
});
|
|
113
|
+
if (avoidUpdates) queuedUpdates.set(node, () => onLayout(event));else onLayout(event);
|
|
71
114
|
}
|
|
72
115
|
}
|
|
73
|
-
const
|
|
74
|
-
|
|
116
|
+
const rAF = typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : void 0;
|
|
117
|
+
const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;
|
|
118
|
+
const BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;
|
|
119
|
+
const MAX_SKIP_FRAMES = 20;
|
|
120
|
+
let skipFrames = BASE_SKIP_FRAMES;
|
|
121
|
+
let frameCount = 0;
|
|
75
122
|
async function layoutOnAnimationFrame() {
|
|
123
|
+
if (frameCount++ % skipFrames !== 0) {
|
|
124
|
+
rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
|
|
76
128
|
if (strategy !== "off") {
|
|
77
129
|
const visibleNodes = [];
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
threshold: 0
|
|
85
|
-
});
|
|
86
|
-
let didObserve = !1;
|
|
87
|
-
for (const node of Nodes) {
|
|
88
|
-
if (!(node.parentElement instanceof HTMLElement)) continue;
|
|
89
|
-
const disableKey = LayoutDisableKey.get(node);
|
|
90
|
-
disableKey && DisableLayoutContextValues[disableKey] === !0 || IntersectionState.get(node) !== !1 && (didObserve = !0, io.observe(node), io.observe(node.parentElement), visibleNodes.push(node));
|
|
130
|
+
const parentsToObserve = /* @__PURE__ */new Set();
|
|
131
|
+
for (const node of Nodes) {
|
|
132
|
+
const parentElement = node.parentElement;
|
|
133
|
+
if (!(parentElement instanceof HTMLElement)) {
|
|
134
|
+
cleanupNode(node);
|
|
135
|
+
continue;
|
|
91
136
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
137
|
+
const disableKey = LayoutDisableKey.get(node);
|
|
138
|
+
if (disableKey && DisableLayoutContextValues[disableKey] === true) continue;
|
|
139
|
+
if (IntersectionState.get(node) === false) continue;
|
|
140
|
+
visibleNodes.push(node);
|
|
141
|
+
parentsToObserve.add(parentElement);
|
|
142
|
+
}
|
|
143
|
+
if (visibleNodes.length > 0) {
|
|
144
|
+
const io = ensureRectFetchObserver();
|
|
145
|
+
rectFetchStartTime = performance.now();
|
|
146
|
+
for (let i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);
|
|
147
|
+
for (const parent of parentsToObserve) io.observe(parent);
|
|
148
|
+
await new Promise(res => {
|
|
149
|
+
rectFetchResolve = res;
|
|
150
|
+
});
|
|
151
|
+
for (let i = 0; i < visibleNodes.length; i++) io.unobserve(visibleNodes[i]);
|
|
152
|
+
for (const parent of parentsToObserve) io.unobserve(parent);
|
|
153
|
+
if (lastCallbackDelay > 50) skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES);else if (lastCallbackDelay < 20) skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES);
|
|
154
|
+
for (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);
|
|
155
|
+
}
|
|
96
156
|
}
|
|
97
|
-
setTimeout(layoutOnAnimationFrame, 16
|
|
157
|
+
rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
|
|
98
158
|
}
|
|
99
159
|
layoutOnAnimationFrame();
|
|
100
160
|
}
|
|
101
|
-
const getElementLayoutEvent = (nodeRect, parentRect) =>
|
|
161
|
+
const getElementLayoutEvent = (nodeRect, parentRect, node) => {
|
|
162
|
+
return {
|
|
102
163
|
nativeEvent: {
|
|
103
|
-
layout: getRelativeDimensions(nodeRect, parentRect),
|
|
164
|
+
layout: getRelativeDimensions(nodeRect, parentRect, node),
|
|
104
165
|
target: nodeRect
|
|
105
166
|
},
|
|
106
167
|
timeStamp: Date.now()
|
|
107
|
-
}),
|
|
108
|
-
getRelativeDimensions = (a, b) => {
|
|
109
|
-
const {
|
|
110
|
-
height,
|
|
111
|
-
left,
|
|
112
|
-
top,
|
|
113
|
-
width
|
|
114
|
-
} = a,
|
|
115
|
-
x = left - b.left,
|
|
116
|
-
y = top - b.top;
|
|
117
|
-
return {
|
|
118
|
-
x,
|
|
119
|
-
y,
|
|
120
|
-
width,
|
|
121
|
-
height,
|
|
122
|
-
pageX: a.left,
|
|
123
|
-
pageY: a.top
|
|
124
|
-
};
|
|
125
168
|
};
|
|
169
|
+
};
|
|
170
|
+
const getPreTransformDimensions = node => {
|
|
171
|
+
return {
|
|
172
|
+
width: node.offsetWidth,
|
|
173
|
+
height: node.offsetHeight
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
const getRelativeDimensions = (a, b, aNode) => {
|
|
177
|
+
const {
|
|
178
|
+
left,
|
|
179
|
+
top
|
|
180
|
+
} = a;
|
|
181
|
+
const x = left - b.left;
|
|
182
|
+
const y = top - b.top;
|
|
183
|
+
const {
|
|
184
|
+
width,
|
|
185
|
+
height
|
|
186
|
+
} = usePretransformDimensions() && aNode ? getPreTransformDimensions(aNode) : {
|
|
187
|
+
width: a.width,
|
|
188
|
+
height: a.height
|
|
189
|
+
};
|
|
190
|
+
return {
|
|
191
|
+
x,
|
|
192
|
+
y,
|
|
193
|
+
width,
|
|
194
|
+
height,
|
|
195
|
+
pageX: a.left,
|
|
196
|
+
pageY: a.top
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
function registerLayoutNode(node, onChange, disableKey) {
|
|
200
|
+
Nodes.add(node);
|
|
201
|
+
LayoutHandlers.set(node, onChange);
|
|
202
|
+
if (disableKey) LayoutDisableKey.set(node, disableKey);
|
|
203
|
+
startGlobalObservers();
|
|
204
|
+
if (globalIntersectionObserver) {
|
|
205
|
+
globalIntersectionObserver.observe(node);
|
|
206
|
+
IntersectionState.set(node, true);
|
|
207
|
+
}
|
|
208
|
+
return () => cleanupNode(node);
|
|
209
|
+
}
|
|
210
|
+
function cleanupNode(node) {
|
|
211
|
+
Nodes.delete(node);
|
|
212
|
+
LayoutHandlers.delete(node);
|
|
213
|
+
LayoutDisableKey.delete(node);
|
|
214
|
+
NodeRectCache.delete(node);
|
|
215
|
+
IntersectionState.delete(node);
|
|
216
|
+
if (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);
|
|
217
|
+
}
|
|
218
|
+
const PrevHostNode = /* @__PURE__ */new WeakMap();
|
|
126
219
|
function useElementLayout(ref, onLayout) {
|
|
127
|
-
const disableKey = useContext(DisableLayoutContextKey)
|
|
128
|
-
|
|
129
|
-
node && onLayout
|
|
220
|
+
const disableKey = useContext(DisableLayoutContextKey);
|
|
221
|
+
const node = ensureWebElement(ref.current?.host);
|
|
222
|
+
if (node && onLayout) {
|
|
223
|
+
LayoutHandlers.set(node, onLayout);
|
|
224
|
+
LayoutDisableKey.set(node, disableKey);
|
|
225
|
+
}
|
|
226
|
+
useIsomorphicLayoutEffect(() => {
|
|
227
|
+
if (!onLayout) return;
|
|
228
|
+
const nextNode = ensureWebElement(ref.current?.host);
|
|
229
|
+
const prevNode = PrevHostNode.get(ref);
|
|
230
|
+
if (nextNode === prevNode) return;
|
|
231
|
+
if (prevNode) cleanupNode(prevNode);
|
|
232
|
+
PrevHostNode.set(ref, nextNode);
|
|
233
|
+
if (!nextNode) return;
|
|
234
|
+
Nodes.add(nextNode);
|
|
235
|
+
startGlobalObservers();
|
|
236
|
+
if (globalIntersectionObserver) {
|
|
237
|
+
globalIntersectionObserver.observe(nextNode);
|
|
238
|
+
IntersectionState.set(nextNode, true);
|
|
239
|
+
}
|
|
240
|
+
const handler = LayoutHandlers.get(nextNode);
|
|
241
|
+
if (typeof handler !== "function") return;
|
|
242
|
+
const parentNode = nextNode.parentElement;
|
|
243
|
+
if (!parentNode) return;
|
|
244
|
+
const nodeRect = nextNode.getBoundingClientRect();
|
|
245
|
+
const parentRect = parentNode.getBoundingClientRect();
|
|
246
|
+
NodeRectCache.set(nextNode, nodeRect);
|
|
247
|
+
NodeRectCache.set(parentNode, parentRect);
|
|
248
|
+
handler(getElementLayoutEvent(nodeRect, parentRect, nextNode));
|
|
249
|
+
});
|
|
250
|
+
useIsomorphicLayoutEffect(() => {
|
|
130
251
|
if (!onLayout) return;
|
|
131
252
|
const node2 = ref.current?.host;
|
|
132
253
|
if (!node2) return;
|
|
133
|
-
Nodes.add(node2)
|
|
254
|
+
Nodes.add(node2);
|
|
255
|
+
startGlobalObservers();
|
|
256
|
+
if (globalIntersectionObserver) {
|
|
257
|
+
globalIntersectionObserver.observe(node2);
|
|
258
|
+
IntersectionState.set(node2, true);
|
|
259
|
+
}
|
|
260
|
+
if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] register", {
|
|
261
|
+
tag: node2.tagName,
|
|
262
|
+
id: node2.id || void 0,
|
|
263
|
+
className: (node2.className || "").slice(0, 60) || void 0,
|
|
264
|
+
totalNodes: Nodes.size
|
|
265
|
+
});
|
|
134
266
|
const parentNode = node2.parentNode;
|
|
135
|
-
|
|
136
|
-
|
|
267
|
+
if (parentNode) onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect(), node2));
|
|
268
|
+
return () => {
|
|
269
|
+
cleanupNode(node2);
|
|
270
|
+
const swappedNode = PrevHostNode.get(ref);
|
|
271
|
+
if (swappedNode && swappedNode !== node2) cleanupNode(swappedNode);
|
|
272
|
+
PrevHostNode.delete(ref);
|
|
137
273
|
};
|
|
138
274
|
}, [ref, !!onLayout]);
|
|
139
275
|
}
|
|
140
276
|
function ensureWebElement(x) {
|
|
141
|
-
if (
|
|
277
|
+
if (typeof HTMLElement === "undefined") return;
|
|
278
|
+
return x instanceof HTMLElement ? x : void 0;
|
|
142
279
|
}
|
|
143
|
-
const getBoundingClientRectAsync = node =>
|
|
144
|
-
|
|
145
|
-
|
|
280
|
+
const getBoundingClientRectAsync = node => {
|
|
281
|
+
return new Promise(res => {
|
|
282
|
+
if (!node || node.nodeType !== 1) return res(false);
|
|
283
|
+
const io = new IntersectionObserver(entries => {
|
|
284
|
+
io.disconnect();
|
|
285
|
+
return res(entries[0].boundingClientRect);
|
|
286
|
+
}, {
|
|
146
287
|
threshold: 0
|
|
147
288
|
});
|
|
148
289
|
io.observe(node);
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
290
|
+
});
|
|
291
|
+
};
|
|
292
|
+
const measureNode = async (node, relativeTo) => {
|
|
293
|
+
const relativeNode = relativeTo || node?.parentElement;
|
|
294
|
+
if (relativeNode instanceof HTMLElement) {
|
|
295
|
+
const [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);
|
|
296
|
+
if (relativeNodeDim && nodeDim) return getRelativeDimensions(nodeDim, relativeNodeDim, node);
|
|
297
|
+
}
|
|
298
|
+
return null;
|
|
299
|
+
};
|
|
300
|
+
const measure = async (node, callback) => {
|
|
301
|
+
const out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);
|
|
302
|
+
if (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);
|
|
303
|
+
return out;
|
|
304
|
+
};
|
|
162
305
|
function createMeasure(node) {
|
|
163
306
|
return callback => measure(node, callback);
|
|
164
307
|
}
|
|
165
308
|
const measureInWindow = async (node, callback) => {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
309
|
+
const out = await measureNode(node, null);
|
|
310
|
+
if (out) callback?.(out.pageX, out.pageY, out.width, out.height);
|
|
311
|
+
return out;
|
|
312
|
+
};
|
|
313
|
+
const createMeasureInWindow = node => {
|
|
314
|
+
return callback => measureInWindow(node, callback);
|
|
315
|
+
};
|
|
316
|
+
const measureLayout = async (node, relativeNode, callback) => {
|
|
317
|
+
const out = await measureNode(node, relativeNode);
|
|
318
|
+
if (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);
|
|
319
|
+
return out;
|
|
320
|
+
};
|
|
174
321
|
function createMeasureLayout(node) {
|
|
175
322
|
return (relativeTo, callback) => measureLayout(node, relativeTo, callback);
|
|
176
323
|
}
|
|
177
|
-
export { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, setOnLayoutStrategy, useElementLayout };
|
|
324
|
+
export { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };
|
|
178
325
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useIsomorphicLayoutEffect","isEqualShallow","createContext","useContext","useId","jsx","LayoutHandlers","WeakMap","LayoutDisableKey","Nodes","Set","IntersectionState","DisableLayoutContextValues","DisableLayoutContextKey","ENABLE","IntersectionObserver","LayoutMeasurementController","disable","children","id","Provider","value","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","LastChangeTime","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","entries","entry","node","target","get","isIntersecting","set","threshold","BoundingRects","updateLayoutIfChanged","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","userSkipVal","process","env","TAMAGUI_LAYOUT_FRAME_SKIP","RUN_EVERY_X_FRAMES","layoutOnAnimationFrame","visibleNodes","res","io","disconnect","boundingClientRect","didObserve","HTMLElement","disableKey","observe","push","setTimeout","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","now","a","b","height","left","top","width","x","y","pageX","pageY","useElementLayout","ref","ensureWebElement","current","host","node2","add","delete","unobserve","getBoundingClientRectAsync","nodeType","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useIsomorphicLayoutEffect","createContext","useContext","useId","jsx","LayoutHandlers","WeakMap","LayoutDisableKey","Nodes","Set","IntersectionState","usePretransformDimensions","globalThis","__TAMAGUI_ONLAYOUT_PRETRANSFORM","process","env","TAMAGUI_ONLAYOUT_PRETRANSFORM","_debugLayout","isDebugLayout","window","URLSearchParams","location","search","has","DisableLayoutContextValues","DisableLayoutContextKey","ENABLE","IntersectionObserver","LayoutMeasurementController","disable","children","id","Provider","value","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","entries","i","length","entry","node","target","get","isIntersecting","set","threshold","rectsEqual","a","b","x","y","width","height","ensureRectFetchObserver","rectFetchObserver","lastCallbackDelay","Math","round","performance","now","rectFetchStartTime","BoundingRects","boundingClientRect","NODE_ENV","console","warn","rectFetchResolve","updateLayoutIfChanged","onLayout","parentNode","parentElement","nodeRect","parentRect","getBoundingClientRect","cachedRect","cachedParentRect","nodeChanged","parentChanged","event","getElementLayoutEvent","log","tag","tagName","className","slice","layout","nativeEvent","first","rAF","requestAnimationFrame","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","BASE_SKIP_FRAMES","MAX_SKIP_FRAMES","skipFrames","frameCount","layoutOnAnimationFrame","setTimeout","Number","MAX_SAFE_INTEGER","visibleNodes","parentsToObserve","HTMLElement","cleanupNode","disableKey","push","add","io","observe","parent","Promise","res","unobserve","min","max","getRelativeDimensions","timeStamp","Date","getPreTransformDimensions","offsetWidth","offsetHeight","aNode","left","top","pageX","pageY","registerLayoutNode","onChange","delete","PrevHostNode","useElementLayout","ref","ensureWebElement","current","host","nextNode","prevNode","handler","node2","totalNodes","size","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|