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