@tamagui/use-element-layout 2.3.3 → 2.4.0-1783099846627

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.
@@ -121,8 +121,7 @@ if (ENABLE) {
121
121
  let rectFetchStartTime = 0;
122
122
  let lastCallbackDelay = 0;
123
123
  async function updateLayoutIfChanged(node) {
124
- const onLayout = LayoutHandlers.get(node);
125
- if (typeof onLayout !== "function") return;
124
+ if (typeof LayoutHandlers.get(node) !== "function") return;
126
125
  const parentNode = node.parentElement;
127
126
  if (!parentNode) return;
128
127
  let nodeRect;
@@ -135,23 +134,7 @@ if (ENABLE) {
135
134
  nodeRect = node.getBoundingClientRect();
136
135
  parentRect = parentNode.getBoundingClientRect();
137
136
  }
138
- const cachedRect = NodeRectCache.get(node);
139
- const cachedParentRect = NodeRectCache.get(parentNode);
140
- const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
141
- const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
142
- if (nodeChanged || parentChanged) {
143
- NodeRectCache.set(node, nodeRect);
144
- NodeRectCache.set(parentNode, parentRect);
145
- const event = getElementLayoutEvent(nodeRect, parentRect, node);
146
- if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] change", {
147
- tag: node.tagName,
148
- id: node.id || void 0,
149
- className: (node.className || "").slice(0, 60) || void 0,
150
- layout: event.nativeEvent.layout,
151
- first: !cachedRect
152
- });
153
- if (avoidUpdates) queuedUpdates.set(node, () => onLayout(event));else onLayout(event);
154
- }
137
+ emitLayoutIfChanged(node, parentNode, nodeRect, parentRect);
155
138
  }
156
139
  const rAF = typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : void 0;
157
140
  const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;
@@ -236,15 +219,38 @@ const getRelativeDimensions = (a, b, aNode) => {
236
219
  pageY: a.top
237
220
  };
238
221
  };
239
- function registerLayoutNode(node, onChange, disableKey) {
222
+ function emitLayoutIfChanged(node, parentNode, nodeRect, parentRect) {
223
+ const onLayout = LayoutHandlers.get(node);
224
+ if (typeof onLayout !== "function") return;
225
+ const cachedRect = NodeRectCache.get(node);
226
+ const cachedParentRect = NodeRectCache.get(parentNode);
227
+ const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
228
+ const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
229
+ if (!nodeChanged && !parentChanged) return;
230
+ NodeRectCache.set(node, nodeRect);
231
+ NodeRectCache.set(parentNode, parentRect);
232
+ const event = getElementLayoutEvent(nodeRect, parentRect, node);
233
+ if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] change", {
234
+ tag: node.tagName,
235
+ id: node.id || void 0,
236
+ className: (node.className || "").slice(0, 60) || void 0,
237
+ layout: event.nativeEvent.layout,
238
+ first: !cachedRect
239
+ });
240
+ if (avoidUpdates) queuedUpdates.set(node, () => onLayout(event));else onLayout(event);
241
+ }
242
+ function observeLayoutNode(node, disableKey) {
240
243
  Nodes.add(node);
241
- LayoutHandlers.set(node, onChange);
242
- if (disableKey) LayoutDisableKey.set(node, disableKey);
244
+ if (disableKey) LayoutDisableKey.set(node, disableKey);else LayoutDisableKey.delete(node);
243
245
  startGlobalObservers();
244
246
  if (globalIntersectionObserver) {
245
247
  globalIntersectionObserver.observe(node);
246
248
  IntersectionState.set(node, true);
247
249
  }
250
+ }
251
+ function registerLayoutNode(node, onChange, disableKey) {
252
+ LayoutHandlers.set(node, onChange);
253
+ observeLayoutNode(node, disableKey);
248
254
  return () => cleanupNode(node);
249
255
  }
250
256
  function cleanupNode(node) {
@@ -256,6 +262,23 @@ function cleanupNode(node) {
256
262
  if (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);
257
263
  }
258
264
  const PrevHostNode = /* @__PURE__ */new WeakMap();
265
+ function emitLayoutFromClientRects(node) {
266
+ const parentNode = node.parentElement;
267
+ if (!parentNode) return;
268
+ emitLayoutIfChanged(node, parentNode, node.getBoundingClientRect(), parentNode.getBoundingClientRect());
269
+ }
270
+ async function emitLayoutFromObserver(node) {
271
+ if (!ENABLE || strategy !== "async") {
272
+ emitLayoutFromClientRects(node);
273
+ return;
274
+ }
275
+ const parentNode = node.parentElement;
276
+ if (!parentNode) return;
277
+ const [nodeRect, parentRect] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(parentNode)]);
278
+ if (!nodeRect || !parentRect) return;
279
+ if (!Nodes.has(node) || node.parentElement !== parentNode) return;
280
+ emitLayoutIfChanged(node, parentNode, nodeRect, parentRect);
281
+ }
259
282
  function useElementLayout(ref, onLayout) {
260
283
  const disableKey = (0, import_react.useContext)(DisableLayoutContextKey);
261
284
  const node = ensureWebElement(ref.current?.host);
@@ -271,40 +294,22 @@ function useElementLayout(ref, onLayout) {
271
294
  if (prevNode) cleanupNode(prevNode);
272
295
  PrevHostNode.set(ref, nextNode);
273
296
  if (!nextNode) return;
274
- Nodes.add(nextNode);
275
- startGlobalObservers();
276
- if (globalIntersectionObserver) {
277
- globalIntersectionObserver.observe(nextNode);
278
- IntersectionState.set(nextNode, true);
279
- }
280
- const handler = LayoutHandlers.get(nextNode);
281
- if (typeof handler !== "function") return;
282
- const parentNode = nextNode.parentElement;
283
- if (!parentNode) return;
284
- const nodeRect = nextNode.getBoundingClientRect();
285
- const parentRect = parentNode.getBoundingClientRect();
286
- NodeRectCache.set(nextNode, nodeRect);
287
- NodeRectCache.set(parentNode, parentRect);
288
- handler(getElementLayoutEvent(nodeRect, parentRect, nextNode));
297
+ LayoutHandlers.set(nextNode, onLayout);
298
+ observeLayoutNode(nextNode, disableKey);
299
+ emitLayoutFromObserver(nextNode);
289
300
  });
290
301
  (0, import_constants.useIsomorphicLayoutEffect)(() => {
291
302
  if (!onLayout) return;
292
303
  const node2 = ref.current?.host;
293
304
  if (!node2) return;
294
- Nodes.add(node2);
295
- startGlobalObservers();
296
- if (globalIntersectionObserver) {
297
- globalIntersectionObserver.observe(node2);
298
- IntersectionState.set(node2, true);
299
- }
305
+ LayoutHandlers.set(node2, onLayout);
306
+ observeLayoutNode(node2, disableKey);
300
307
  if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] register", {
301
308
  tag: node2.tagName,
302
309
  id: node2.id || void 0,
303
310
  className: (node2.className || "").slice(0, 60) || void 0,
304
311
  totalNodes: Nodes.size
305
312
  });
306
- const parentNode = node2.parentNode;
307
- if (parentNode) onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect(), node2));
308
313
  return () => {
309
314
  cleanupNode(node2);
310
315
  const swappedNode = PrevHostNode.get(ref);
@@ -131,8 +131,7 @@ if (ENABLE) {
131
131
  var rectFetchStartTime = 0;
132
132
  var lastCallbackDelay = 0;
133
133
  async function updateLayoutIfChanged(node) {
134
- var onLayout = LayoutHandlers.get(node);
135
- if (typeof onLayout !== "function") return;
134
+ if (typeof LayoutHandlers.get(node) !== "function") return;
136
135
  var parentNode = node.parentElement;
137
136
  if (!parentNode) return;
138
137
  var nodeRect;
@@ -145,25 +144,7 @@ if (ENABLE) {
145
144
  nodeRect = node.getBoundingClientRect();
146
145
  parentRect = parentNode.getBoundingClientRect();
147
146
  }
148
- var cachedRect = NodeRectCache.get(node);
149
- var cachedParentRect = NodeRectCache.get(parentNode);
150
- var nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
151
- var parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
152
- if (nodeChanged || parentChanged) {
153
- NodeRectCache.set(node, nodeRect);
154
- NodeRectCache.set(parentNode, parentRect);
155
- var event = getElementLayoutEvent(nodeRect, parentRect, node);
156
- if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] change", {
157
- tag: node.tagName,
158
- id: node.id || void 0,
159
- className: (node.className || "").slice(0, 60) || void 0,
160
- layout: event.nativeEvent.layout,
161
- first: !cachedRect
162
- });
163
- if (avoidUpdates) queuedUpdates.set(node, function () {
164
- return onLayout(event);
165
- });else onLayout(event);
166
- }
147
+ emitLayoutIfChanged(node, parentNode, nodeRect, parentRect);
167
148
  }
168
149
  var rAF = typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : void 0;
169
150
  var userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;
@@ -297,15 +278,40 @@ var getRelativeDimensions = function (a, b, aNode) {
297
278
  pageY: a.top
298
279
  };
299
280
  };
300
- function registerLayoutNode(node, onChange, disableKey) {
281
+ function emitLayoutIfChanged(node, parentNode, nodeRect, parentRect) {
282
+ var onLayout = LayoutHandlers.get(node);
283
+ if (typeof onLayout !== "function") return;
284
+ var cachedRect = NodeRectCache.get(node);
285
+ var cachedParentRect = NodeRectCache.get(parentNode);
286
+ var nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
287
+ var parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
288
+ if (!nodeChanged && !parentChanged) return;
289
+ NodeRectCache.set(node, nodeRect);
290
+ NodeRectCache.set(parentNode, parentRect);
291
+ var event = getElementLayoutEvent(nodeRect, parentRect, node);
292
+ if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] change", {
293
+ tag: node.tagName,
294
+ id: node.id || void 0,
295
+ className: (node.className || "").slice(0, 60) || void 0,
296
+ layout: event.nativeEvent.layout,
297
+ first: !cachedRect
298
+ });
299
+ if (avoidUpdates) queuedUpdates.set(node, function () {
300
+ return onLayout(event);
301
+ });else onLayout(event);
302
+ }
303
+ function observeLayoutNode(node, disableKey) {
301
304
  Nodes.add(node);
302
- LayoutHandlers.set(node, onChange);
303
- if (disableKey) LayoutDisableKey.set(node, disableKey);
305
+ if (disableKey) LayoutDisableKey.set(node, disableKey);else LayoutDisableKey.delete(node);
304
306
  startGlobalObservers();
305
307
  if (globalIntersectionObserver) {
306
308
  globalIntersectionObserver.observe(node);
307
309
  IntersectionState.set(node, true);
308
310
  }
311
+ }
312
+ function registerLayoutNode(node, onChange, disableKey) {
313
+ LayoutHandlers.set(node, onChange);
314
+ observeLayoutNode(node, disableKey);
309
315
  return function () {
310
316
  return cleanupNode(node);
311
317
  };
@@ -319,6 +325,23 @@ function cleanupNode(node) {
319
325
  if (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);
320
326
  }
321
327
  var PrevHostNode = /* @__PURE__ */new WeakMap();
328
+ function emitLayoutFromClientRects(node) {
329
+ var parentNode = node.parentElement;
330
+ if (!parentNode) return;
331
+ emitLayoutIfChanged(node, parentNode, node.getBoundingClientRect(), parentNode.getBoundingClientRect());
332
+ }
333
+ async function emitLayoutFromObserver(node) {
334
+ if (!ENABLE || strategy !== "async") {
335
+ emitLayoutFromClientRects(node);
336
+ return;
337
+ }
338
+ var parentNode = node.parentElement;
339
+ if (!parentNode) return;
340
+ var [nodeRect, parentRect] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(parentNode)]);
341
+ if (!nodeRect || !parentRect) return;
342
+ if (!Nodes.has(node) || node.parentElement !== parentNode) return;
343
+ emitLayoutIfChanged(node, parentNode, nodeRect, parentRect);
344
+ }
322
345
  function useElementLayout(ref, onLayout) {
323
346
  var _ref_current;
324
347
  var disableKey = (0, import_react.useContext)(DisableLayoutContextKey);
@@ -336,41 +359,23 @@ function useElementLayout(ref, onLayout) {
336
359
  if (prevNode) cleanupNode(prevNode);
337
360
  PrevHostNode.set(ref, nextNode);
338
361
  if (!nextNode) return;
339
- Nodes.add(nextNode);
340
- startGlobalObservers();
341
- if (globalIntersectionObserver) {
342
- globalIntersectionObserver.observe(nextNode);
343
- IntersectionState.set(nextNode, true);
344
- }
345
- var handler = LayoutHandlers.get(nextNode);
346
- if (typeof handler !== "function") return;
347
- var parentNode = nextNode.parentElement;
348
- if (!parentNode) return;
349
- var nodeRect = nextNode.getBoundingClientRect();
350
- var parentRect = parentNode.getBoundingClientRect();
351
- NodeRectCache.set(nextNode, nodeRect);
352
- NodeRectCache.set(parentNode, parentRect);
353
- handler(getElementLayoutEvent(nodeRect, parentRect, nextNode));
362
+ LayoutHandlers.set(nextNode, onLayout);
363
+ observeLayoutNode(nextNode, disableKey);
364
+ emitLayoutFromObserver(nextNode);
354
365
  });
355
366
  (0, import_constants.useIsomorphicLayoutEffect)(function () {
356
367
  var _ref_current2;
357
368
  if (!onLayout) return;
358
369
  var node2 = (_ref_current2 = ref.current) === null || _ref_current2 === void 0 ? void 0 : _ref_current2.host;
359
370
  if (!node2) return;
360
- Nodes.add(node2);
361
- startGlobalObservers();
362
- if (globalIntersectionObserver) {
363
- globalIntersectionObserver.observe(node2);
364
- IntersectionState.set(node2, true);
365
- }
371
+ LayoutHandlers.set(node2, onLayout);
372
+ observeLayoutNode(node2, disableKey);
366
373
  if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] register", {
367
374
  tag: node2.tagName,
368
375
  id: node2.id || void 0,
369
376
  className: (node2.className || "").slice(0, 60) || void 0,
370
377
  totalNodes: Nodes.size
371
378
  });
372
- var parentNode = node2.parentNode;
373
- if (parentNode) onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect(), node2));
374
379
  return function () {
375
380
  cleanupNode(node2);
376
381
  var swappedNode = PrevHostNode.get(ref);
@@ -1 +1 @@
1
- {"version":3,"names":["to","__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","LayoutMeasurementController","createMeasure","createMeasureInWindow","createMeasureLayout","enable","getBoundingClientRectAsync","getElementLayoutEvent","measure","measureInWindow","measureLayout","measureNode","registerLayoutNode","setOnLayoutStrategy","useElementLayout","module","exports","import_jsx_runtime","require","import_constants","import_react","_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","createContext","ENABLE","param","disable","children","id","useId","useIsomorphicLayoutEffect","jsx","Provider","globalIntersectionObserver","strategy","state","NodeRectCache","avoidUpdates","queuedUpdates","Map","forEach","cb","clear","startGlobalObservers","IntersectionObserver","entries","i","length","entry","node","target","get","isIntersecting","set","threshold","rectsEqual","a","b","x","y","width","height","ensureRectFetchObserver2","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","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","onChange","delete","PrevHostNode","ref","_ref_current","useContext","ensureWebElement","current","host","_ref_current2","nextNode","prevNode","handler","node2","totalNodes","size","swappedNode","nodeType","disconnect","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","callback","out"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","index_exports","LayoutMeasurementController","createMeasure","createMeasureInWindow","createMeasureLayout","enable","getBoundingClientRectAsync","getElementLayoutEvent","measure","measureInWindow","measureLayout","measureNode","registerLayoutNode","setOnLayoutStrategy","useElementLayout","module","exports","import_jsx_runtime","require","import_constants","import_react","_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","createContext","ENABLE","param","disable","children","id","useId","useIsomorphicLayoutEffect","jsx","Provider","globalIntersectionObserver","strategy","state","NodeRectCache","avoidUpdates","queuedUpdates","Map","forEach","cb","clear","startGlobalObservers","IntersectionObserver","entries","i","length","entry","node","isIntersecting","set","threshold","rectsEqual","a","b","x","y","width","height","ensureRectFetchObserver2","rectFetchObserver","lastCallbackDelay","Math","round","performance","now","rectFetchStartTime","BoundingRects","boundingClientRect","NODE_ENV","console","warn","rectFetchResolve","updateLayoutIfChanged","parentNode","parentElement","nodeRect","parentRect","getBoundingClientRect","emitLayoutIfChanged","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","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","getPreTransformDimensions","offsetWidth","offsetHeight","aNode","top","pageX","pageY","onLayout","cachedRect","cachedParentRect","nodeChanged","parentChanged","event","log","tag","tagName","className","slice","first","observeLayoutNode","delete","onChange","PrevHostNode","emitLayoutFromClientRects","emitLayoutFromObserver","ref","_ref_current","useContext","ensureWebElement","current","host","_ref_current2","nextNode","prevNode","node2","totalNodes","size","swappedNode","nodeType","disconnect","relativeTo","relativeNode","nodeDim","relativeNodeDim","callback","out"],"sources":["index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") {\n\t\tfor (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: () => from[key],\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_exports = {};\n__export(index_exports, {\n\tLayoutMeasurementController: () => LayoutMeasurementController,\n\tcreateMeasure: () => createMeasure,\n\tcreateMeasureInWindow: () => createMeasureInWindow,\n\tcreateMeasureLayout: () => createMeasureLayout,\n\tenable: () => enable,\n\tgetBoundingClientRectAsync: () => getBoundingClientRectAsync,\n\tgetElementLayoutEvent: () => getElementLayoutEvent,\n\tmeasure: () => measure,\n\tmeasureInWindow: () => measureInWindow,\n\tmeasureLayout: () => measureLayout,\n\tmeasureNode: () => measureNode,\n\tregisterLayoutNode: () => registerLayoutNode,\n\tsetOnLayoutStrategy: () => setOnLayoutStrategy,\n\tuseElementLayout: () => useElementLayout\n});\nmodule.exports = __toCommonJS(index_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_constants = require(\"@tamagui/constants\");\nvar import_react = require(\"react\");\nfunction _instanceof(left, right) {\n\tif (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) return !!right[Symbol.hasInstance](left);\n\telse return left instanceof right;\n}\nvar LayoutHandlers = /* @__PURE__ */ new WeakMap();\nvar LayoutDisableKey = /* @__PURE__ */ new WeakMap();\nvar Nodes = /* @__PURE__ */ new Set();\nvar IntersectionState = /* @__PURE__ */ new WeakMap();\nvar usePretransformDimensions = function() {\n\treturn globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === \"1\";\n};\nvar _debugLayout;\nfunction isDebugLayout() {\n\tif (_debugLayout === void 0) _debugLayout = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).has(\"__tamaDebugLayout\");\n\treturn _debugLayout;\n}\nvar DisableLayoutContextValues = {};\nvar DisableLayoutContextKey = /* @__PURE__ */ (0, import_react.createContext)(\"\");\nvar ENABLE = false;\nvar LayoutMeasurementController = function(param) {\n\tvar { disable, children } = param;\n\tvar id = (0, import_react.useId)();\n\t(0, import_constants.useIsomorphicLayoutEffect)(function() {\n\t\tDisableLayoutContextValues[id] = disable;\n\t}, [disable, id]);\n\treturn /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DisableLayoutContextKey.Provider, {\n\t\tvalue: id,\n\t\tchildren\n\t});\n};\nvar globalIntersectionObserver = null;\nvar strategy = \"async\";\nfunction setOnLayoutStrategy(state) {\n\tstrategy = state;\n}\nvar NodeRectCache = /* @__PURE__ */ new WeakMap();\nvar avoidUpdates = true;\nvar queuedUpdates = /* @__PURE__ */ new Map();\nfunction enable() {\n\tif (avoidUpdates) {\n\t\tavoidUpdates = false;\n\t\tif (queuedUpdates) {\n\t\t\tqueuedUpdates.forEach(function(cb) {\n\t\t\t\treturn cb();\n\t\t\t});\n\t\t\tqueuedUpdates.clear();\n\t\t}\n\t}\n}\nfunction startGlobalObservers() {\n\tif (!ENABLE || globalIntersectionObserver) return;\n\tglobalIntersectionObserver = new IntersectionObserver(function(entries) {\n\t\tfor (var i = 0; i < entries.length; i++) {\n\t\t\tvar entry = entries[i];\n\t\t\tvar node = entry.target;\n\t\t\tif (IntersectionState.get(node) !== entry.isIntersecting) IntersectionState.set(node, entry.isIntersecting);\n\t\t}\n\t}, { threshold: 0 });\n}\nfunction rectsEqual(a, b) {\n\treturn a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\nif (ENABLE) {\n\tlet ensureRectFetchObserver2 = function() {\n\t\tif (rectFetchObserver) return rectFetchObserver;\n\t\trectFetchObserver = new IntersectionObserver(function(entries) {\n\t\t\tlastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);\n\t\t\tfor (var i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);\n\t\t\tif (process.env.NODE_ENV === \"development\" && isDebugLayout() && lastCallbackDelay > 50) console.warn(\"[onLayout-io-delay]\", lastCallbackDelay + \"ms\", entries.length, \"entries\");\n\t\t\tif (rectFetchResolve) {\n\t\t\t\trectFetchResolve(true);\n\t\t\t\trectFetchResolve = null;\n\t\t\t}\n\t\t}, { threshold: 0 });\n\t\treturn rectFetchObserver;\n\t};\n\tvar BoundingRects = /* @__PURE__ */ new WeakMap();\n\tvar rectFetchObserver = null;\n\tvar rectFetchResolve = null;\n\tvar rectFetchStartTime = 0;\n\tvar lastCallbackDelay = 0;\n\tasync function updateLayoutIfChanged(node) {\n\t\tif (typeof LayoutHandlers.get(node) !== \"function\") return;\n\t\tvar parentNode = node.parentElement;\n\t\tif (!parentNode) return;\n\t\tvar nodeRect;\n\t\tvar parentRect;\n\t\tif (strategy === \"async\") {\n\t\t\tnodeRect = BoundingRects.get(node);\n\t\t\tparentRect = BoundingRects.get(parentNode);\n\t\t\tif (!nodeRect || !parentRect) return;\n\t\t} else {\n\t\t\tnodeRect = node.getBoundingClientRect();\n\t\t\tparentRect = parentNode.getBoundingClientRect();\n\t\t}\n\t\temitLayoutIfChanged(node, parentNode, nodeRect, parentRect);\n\t}\n\tvar rAF = typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : void 0;\n\tvar userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;\n\tvar BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;\n\tvar MAX_SKIP_FRAMES = 20;\n\tvar skipFrames = BASE_SKIP_FRAMES;\n\tvar frameCount = 0;\n\tasync function layoutOnAnimationFrame() {\n\t\tif (frameCount++ % skipFrames !== 0) {\n\t\t\trAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);\n\t\t\treturn;\n\t\t}\n\t\tif (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;\n\t\tif (strategy !== \"off\") {\n\t\t\tvar visibleNodes = [];\n\t\t\tvar parentsToObserve = /* @__PURE__ */ new Set();\n\t\t\tvar _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = Nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar node = _step.value;\n\t\t\t\t\tvar parentElement = node.parentElement;\n\t\t\t\t\tif (!_instanceof(parentElement, HTMLElement)) {\n\t\t\t\t\t\tcleanupNode(node);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tvar disableKey = LayoutDisableKey.get(node);\n\t\t\t\t\tif (disableKey && DisableLayoutContextValues[disableKey] === true) continue;\n\t\t\t\t\tif (IntersectionState.get(node) === false) continue;\n\t\t\t\t\tvisibleNodes.push(node);\n\t\t\t\t\tparentsToObserve.add(parentElement);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) throw _iteratorError;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (visibleNodes.length > 0) {\n\t\t\t\tvar io = ensureRectFetchObserver2();\n\t\t\t\trectFetchStartTime = performance.now();\n\t\t\t\tfor (var i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);\n\t\t\t\tvar _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator1 = parentsToObserve[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n\t\t\t\t\t\tvar parent = _step1.value;\n\t\t\t\t\t\tio.observe(parent);\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError1 = true;\n\t\t\t\t\t_iteratorError1 = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion1 && _iterator1.return != null) _iterator1.return();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError1) throw _iteratorError1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait new Promise(function(res) {\n\t\t\t\t\trectFetchResolve = res;\n\t\t\t\t});\n\t\t\t\tfor (var i1 = 0; i1 < visibleNodes.length; i1++) io.unobserve(visibleNodes[i1]);\n\t\t\t\tvar _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator2 = parentsToObserve[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\t\tvar parent1 = _step2.value;\n\t\t\t\t\t\tio.unobserve(parent1);\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t\t_iteratorError2 = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return != null) _iterator2.return();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError2) throw _iteratorError2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lastCallbackDelay > 50) skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES);\n\t\t\t\telse if (lastCallbackDelay < 20) skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES);\n\t\t\t\tfor (var i2 = 0; i2 < visibleNodes.length; i2++) updateLayoutIfChanged(visibleNodes[i2]);\n\t\t\t}\n\t\t}\n\t\trAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);\n\t}\n\tlayoutOnAnimationFrame();\n}\nvar getElementLayoutEvent = function(nodeRect, parentRect, node) {\n\treturn {\n\t\tnativeEvent: {\n\t\t\tlayout: getRelativeDimensions(nodeRect, parentRect, node),\n\t\t\ttarget: nodeRect\n\t\t},\n\t\ttimeStamp: Date.now()\n\t};\n};\nvar getPreTransformDimensions = function(node) {\n\treturn {\n\t\twidth: node.offsetWidth,\n\t\theight: node.offsetHeight\n\t};\n};\nvar getRelativeDimensions = function(a, b, aNode) {\n\tvar { left, top } = a;\n\tvar x = left - b.left;\n\tvar y = top - b.top;\n\tvar { width, height } = usePretransformDimensions() && aNode ? getPreTransformDimensions(aNode) : {\n\t\twidth: a.width,\n\t\theight: a.height\n\t};\n\treturn {\n\t\tx,\n\t\ty,\n\t\twidth,\n\t\theight,\n\t\tpageX: a.left,\n\t\tpageY: a.top\n\t};\n};\nfunction emitLayoutIfChanged(node, parentNode, nodeRect, parentRect) {\n\tvar onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tvar cachedRect = NodeRectCache.get(node);\n\tvar cachedParentRect = NodeRectCache.get(parentNode);\n\tvar nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);\n\tvar parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);\n\tif (!nodeChanged && !parentChanged) return;\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tvar event = getElementLayoutEvent(nodeRect, parentRect, node);\n\tif (process.env.NODE_ENV === \"development\" && isDebugLayout()) console.log(\"[useElementLayout] change\", {\n\t\ttag: node.tagName,\n\t\tid: node.id || void 0,\n\t\tclassName: (node.className || \"\").slice(0, 60) || void 0,\n\t\tlayout: event.nativeEvent.layout,\n\t\tfirst: !cachedRect\n\t});\n\tif (avoidUpdates) queuedUpdates.set(node, function() {\n\t\treturn onLayout(event);\n\t});\n\telse onLayout(event);\n}\nfunction observeLayoutNode(node, disableKey) {\n\tNodes.add(node);\n\tif (disableKey) LayoutDisableKey.set(node, disableKey);\n\telse LayoutDisableKey.delete(node);\n\tstartGlobalObservers();\n\tif (globalIntersectionObserver) {\n\t\tglobalIntersectionObserver.observe(node);\n\t\tIntersectionState.set(node, true);\n\t}\n}\nfunction registerLayoutNode(node, onChange, disableKey) {\n\tLayoutHandlers.set(node, onChange);\n\tobserveLayoutNode(node, disableKey);\n\treturn function() {\n\t\treturn cleanupNode(node);\n\t};\n}\nfunction cleanupNode(node) {\n\tNodes.delete(node);\n\tLayoutHandlers.delete(node);\n\tLayoutDisableKey.delete(node);\n\tNodeRectCache.delete(node);\n\tIntersectionState.delete(node);\n\tif (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);\n}\nvar PrevHostNode = /* @__PURE__ */ new WeakMap();\nfunction emitLayoutFromClientRects(node) {\n\tvar parentNode = node.parentElement;\n\tif (!parentNode) return;\n\temitLayoutIfChanged(node, parentNode, node.getBoundingClientRect(), parentNode.getBoundingClientRect());\n}\nasync function emitLayoutFromObserver(node) {\n\tif (!ENABLE || strategy !== \"async\") {\n\t\temitLayoutFromClientRects(node);\n\t\treturn;\n\t}\n\tvar parentNode = node.parentElement;\n\tif (!parentNode) return;\n\tvar [nodeRect, parentRect] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(parentNode)]);\n\tif (!nodeRect || !parentRect) return;\n\tif (!Nodes.has(node) || node.parentElement !== parentNode) return;\n\temitLayoutIfChanged(node, parentNode, nodeRect, parentRect);\n}\nfunction useElementLayout(ref, onLayout) {\n\tvar _ref_current;\n\tvar disableKey = (0, import_react.useContext)(DisableLayoutContextKey);\n\tvar node = ensureWebElement((_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.host);\n\tif (node && onLayout) {\n\t\tLayoutHandlers.set(node, onLayout);\n\t\tLayoutDisableKey.set(node, disableKey);\n\t}\n\t(0, import_constants.useIsomorphicLayoutEffect)(function() {\n\t\tvar _ref_current2;\n\t\tif (!onLayout) return;\n\t\tvar nextNode = ensureWebElement((_ref_current2 = ref.current) === null || _ref_current2 === void 0 ? void 0 : _ref_current2.host);\n\t\tvar prevNode = PrevHostNode.get(ref);\n\t\tif (nextNode === prevNode) return;\n\t\tif (prevNode) cleanupNode(prevNode);\n\t\tPrevHostNode.set(ref, nextNode);\n\t\tif (!nextNode) return;\n\t\tLayoutHandlers.set(nextNode, onLayout);\n\t\tobserveLayoutNode(nextNode, disableKey);\n\t\temitLayoutFromObserver(nextNode);\n\t});\n\t(0, import_constants.useIsomorphicLayoutEffect)(function() {\n\t\tvar _ref_current2;\n\t\tif (!onLayout) return;\n\t\tvar node2 = (_ref_current2 = ref.current) === null || _ref_current2 === void 0 ? void 0 : _ref_current2.host;\n\t\tif (!node2) return;\n\t\tLayoutHandlers.set(node2, onLayout);\n\t\tobserveLayoutNode(node2, disableKey);\n\t\tif (process.env.NODE_ENV === \"development\" && isDebugLayout()) console.log(\"[useElementLayout] register\", {\n\t\t\ttag: node2.tagName,\n\t\t\tid: node2.id || void 0,\n\t\t\tclassName: (node2.className || \"\").slice(0, 60) || void 0,\n\t\t\ttotalNodes: Nodes.size\n\t\t});\n\t\treturn function() {\n\t\t\tcleanupNode(node2);\n\t\t\tvar swappedNode = PrevHostNode.get(ref);\n\t\t\tif (swappedNode && swappedNode !== node2) cleanupNode(swappedNode);\n\t\t\tPrevHostNode.delete(ref);\n\t\t};\n\t}, [ref, !!onLayout]);\n}\nfunction ensureWebElement(x) {\n\tif (typeof HTMLElement === \"undefined\") return;\n\treturn _instanceof(x, HTMLElement) ? x : void 0;\n}\nvar getBoundingClientRectAsync = function(node) {\n\treturn new Promise(function(res) {\n\t\tif (!node || node.nodeType !== 1) return res(false);\n\t\tvar io = new IntersectionObserver(function(entries) {\n\t\t\tio.disconnect();\n\t\t\treturn res(entries[0].boundingClientRect);\n\t\t}, { threshold: 0 });\n\t\tio.observe(node);\n\t});\n};\nvar measureNode = async function(node, relativeTo) {\n\tvar relativeNode = relativeTo || (node === null || node === void 0 ? void 0 : node.parentElement);\n\tif (_instanceof(relativeNode, HTMLElement)) {\n\t\tvar [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);\n\t\tif (relativeNodeDim && nodeDim) return getRelativeDimensions(nodeDim, relativeNodeDim, node);\n\t}\n\treturn null;\n};\nvar measure = async function(node, callback) {\n\tvar out = await measureNode(node, _instanceof(node.parentNode, HTMLElement) ? node.parentNode : null);\n\tif (out) callback === null || callback === void 0 || callback(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasure(node) {\n\treturn function(callback) {\n\t\treturn measure(node, callback);\n\t};\n}\nvar measureInWindow = async function(node, callback) {\n\tvar out = await measureNode(node, null);\n\tif (out) callback === null || callback === void 0 || callback(out.pageX, out.pageY, out.width, out.height);\n\treturn out;\n};\nvar createMeasureInWindow = function(node) {\n\treturn function(callback) {\n\t\treturn measureInWindow(node, callback);\n\t};\n};\nvar measureLayout = async function(node, relativeNode, callback) {\n\tvar out = await measureNode(node, relativeNode);\n\tif (out) callback === null || callback === void 0 || callback(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasureLayout(node) {\n\treturn function(relativeTo, callback) {\n\t\treturn measureLayout(node, relativeTo, callback);\n\t};\n}\n//# sourceMappingURL=index.js.map\n"],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -81,8 +81,7 @@ if (ENABLE) {
81
81
  let rectFetchStartTime = 0;
82
82
  let lastCallbackDelay = 0;
83
83
  async function updateLayoutIfChanged(node) {
84
- const onLayout = LayoutHandlers.get(node);
85
- if (typeof onLayout !== "function") return;
84
+ if (typeof LayoutHandlers.get(node) !== "function") return;
86
85
  const parentNode = node.parentElement;
87
86
  if (!parentNode) return;
88
87
  let nodeRect;
@@ -95,23 +94,7 @@ if (ENABLE) {
95
94
  nodeRect = node.getBoundingClientRect();
96
95
  parentRect = parentNode.getBoundingClientRect();
97
96
  }
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);
114
- }
97
+ emitLayoutIfChanged(node, parentNode, nodeRect, parentRect);
115
98
  }
116
99
  const rAF = typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : void 0;
117
100
  const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;
@@ -196,15 +179,38 @@ const getRelativeDimensions = (a, b, aNode) => {
196
179
  pageY: a.top
197
180
  };
198
181
  };
199
- function registerLayoutNode(node, onChange, disableKey) {
182
+ function emitLayoutIfChanged(node, parentNode, nodeRect, parentRect) {
183
+ const onLayout = LayoutHandlers.get(node);
184
+ if (typeof onLayout !== "function") return;
185
+ const cachedRect = NodeRectCache.get(node);
186
+ const cachedParentRect = NodeRectCache.get(parentNode);
187
+ const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
188
+ const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
189
+ if (!nodeChanged && !parentChanged) return;
190
+ NodeRectCache.set(node, nodeRect);
191
+ NodeRectCache.set(parentNode, parentRect);
192
+ const event = getElementLayoutEvent(nodeRect, parentRect, node);
193
+ if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] change", {
194
+ tag: node.tagName,
195
+ id: node.id || void 0,
196
+ className: (node.className || "").slice(0, 60) || void 0,
197
+ layout: event.nativeEvent.layout,
198
+ first: !cachedRect
199
+ });
200
+ if (avoidUpdates) queuedUpdates.set(node, () => onLayout(event));else onLayout(event);
201
+ }
202
+ function observeLayoutNode(node, disableKey) {
200
203
  Nodes.add(node);
201
- LayoutHandlers.set(node, onChange);
202
- if (disableKey) LayoutDisableKey.set(node, disableKey);
204
+ if (disableKey) LayoutDisableKey.set(node, disableKey);else LayoutDisableKey.delete(node);
203
205
  startGlobalObservers();
204
206
  if (globalIntersectionObserver) {
205
207
  globalIntersectionObserver.observe(node);
206
208
  IntersectionState.set(node, true);
207
209
  }
210
+ }
211
+ function registerLayoutNode(node, onChange, disableKey) {
212
+ LayoutHandlers.set(node, onChange);
213
+ observeLayoutNode(node, disableKey);
208
214
  return () => cleanupNode(node);
209
215
  }
210
216
  function cleanupNode(node) {
@@ -216,6 +222,23 @@ function cleanupNode(node) {
216
222
  if (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);
217
223
  }
218
224
  const PrevHostNode = /* @__PURE__ */new WeakMap();
225
+ function emitLayoutFromClientRects(node) {
226
+ const parentNode = node.parentElement;
227
+ if (!parentNode) return;
228
+ emitLayoutIfChanged(node, parentNode, node.getBoundingClientRect(), parentNode.getBoundingClientRect());
229
+ }
230
+ async function emitLayoutFromObserver(node) {
231
+ if (!ENABLE || strategy !== "async") {
232
+ emitLayoutFromClientRects(node);
233
+ return;
234
+ }
235
+ const parentNode = node.parentElement;
236
+ if (!parentNode) return;
237
+ const [nodeRect, parentRect] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(parentNode)]);
238
+ if (!nodeRect || !parentRect) return;
239
+ if (!Nodes.has(node) || node.parentElement !== parentNode) return;
240
+ emitLayoutIfChanged(node, parentNode, nodeRect, parentRect);
241
+ }
219
242
  function useElementLayout(ref, onLayout) {
220
243
  const disableKey = useContext(DisableLayoutContextKey);
221
244
  const node = ensureWebElement(ref.current?.host);
@@ -231,40 +254,22 @@ function useElementLayout(ref, onLayout) {
231
254
  if (prevNode) cleanupNode(prevNode);
232
255
  PrevHostNode.set(ref, nextNode);
233
256
  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));
257
+ LayoutHandlers.set(nextNode, onLayout);
258
+ observeLayoutNode(nextNode, disableKey);
259
+ emitLayoutFromObserver(nextNode);
249
260
  });
250
261
  useIsomorphicLayoutEffect(() => {
251
262
  if (!onLayout) return;
252
263
  const node2 = ref.current?.host;
253
264
  if (!node2) return;
254
- Nodes.add(node2);
255
- startGlobalObservers();
256
- if (globalIntersectionObserver) {
257
- globalIntersectionObserver.observe(node2);
258
- IntersectionState.set(node2, true);
259
- }
265
+ LayoutHandlers.set(node2, onLayout);
266
+ observeLayoutNode(node2, disableKey);
260
267
  if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] register", {
261
268
  tag: node2.tagName,
262
269
  id: node2.id || void 0,
263
270
  className: (node2.className || "").slice(0, 60) || void 0,
264
271
  totalNodes: Nodes.size
265
272
  });
266
- const parentNode = node2.parentNode;
267
- if (parentNode) onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect(), node2));
268
273
  return () => {
269
274
  cleanupNode(node2);
270
275
  const swappedNode = PrevHostNode.get(ref);