@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/use-element-layout",
3
- "version": "2.0.0-rc.30",
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.30",
38
- "@tamagui/is-equal-shallow": "2.0.0-rc.30"
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.30",
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
- }
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.tsx"],
4
- "mappings": "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",
5
- "names": ["node"]
6
- }