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