@tamagui/use-element-layout 2.7.2 → 2.7.3

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.
@@ -69,8 +69,10 @@ const LayoutMeasurementController = ({
69
69
  };
70
70
  let globalIntersectionObserver = null;
71
71
  let strategy = "async";
72
+ let resumeLayoutLoop;
72
73
  function setOnLayoutStrategy(state) {
73
74
  strategy = state;
75
+ resumeLayoutLoop?.();
74
76
  }
75
77
  const NodeRectCache = /* @__PURE__ */new WeakMap();
76
78
  let avoidUpdates = true;
@@ -101,20 +103,25 @@ function rectsEqual(a, b) {
101
103
  }
102
104
  if (ENABLE) {
103
105
  let ensureRectFetchObserver = function () {
104
- if (rectFetchObserver) return rectFetchObserver;
105
- rectFetchObserver = new IntersectionObserver(entries => {
106
- lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
107
- for (let i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
108
- if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
109
- if (rectFetchResolve) {
110
- rectFetchResolve(true);
111
- rectFetchResolve = null;
112
- }
113
- }, {
114
- threshold: 0
115
- });
116
- return rectFetchObserver;
117
- };
106
+ if (rectFetchObserver) return rectFetchObserver;
107
+ rectFetchObserver = new IntersectionObserver(entries => {
108
+ lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
109
+ for (let i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
110
+ if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
111
+ if (rectFetchResolve) {
112
+ rectFetchResolve(true);
113
+ rectFetchResolve = null;
114
+ }
115
+ }, {
116
+ threshold: 0
117
+ });
118
+ return rectFetchObserver;
119
+ },
120
+ scheduleLayoutFrame = function () {
121
+ if (frameScheduled || strategy === "off" || Nodes.size === 0 || document.hidden) return;
122
+ frameScheduled = true;
123
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
124
+ };
118
125
  const BoundingRects = /* @__PURE__ */new WeakMap();
119
126
  let rectFetchObserver = null;
120
127
  let rectFetchResolve = null;
@@ -142,9 +149,11 @@ if (ENABLE) {
142
149
  const MAX_SKIP_FRAMES = 20;
143
150
  let skipFrames = BASE_SKIP_FRAMES;
144
151
  let frameCount = 0;
152
+ let frameScheduled = false;
145
153
  async function layoutOnAnimationFrame() {
146
154
  if (frameCount++ % skipFrames !== 0) {
147
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
155
+ frameScheduled = false;
156
+ scheduleLayoutFrame();
148
157
  return;
149
158
  }
150
159
  if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
@@ -177,9 +186,12 @@ if (ENABLE) {
177
186
  for (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);
178
187
  }
179
188
  }
180
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
189
+ frameScheduled = false;
190
+ scheduleLayoutFrame();
181
191
  }
182
- layoutOnAnimationFrame();
192
+ resumeLayoutLoop = scheduleLayoutFrame;
193
+ document.addEventListener("visibilitychange", scheduleLayoutFrame);
194
+ scheduleLayoutFrame();
183
195
  }
184
196
  const getElementLayoutEvent = (nodeRect, parentRect, node) => {
185
197
  return {
@@ -247,6 +259,7 @@ function observeLayoutNode(node, disableKey) {
247
259
  globalIntersectionObserver.observe(node);
248
260
  IntersectionState.set(node, true);
249
261
  }
262
+ resumeLayoutLoop?.();
250
263
  }
251
264
  function registerLayoutNode(node, onChange, disableKey) {
252
265
  LayoutHandlers.set(node, onChange);
@@ -77,8 +77,10 @@ var LayoutMeasurementController = function (param) {
77
77
  };
78
78
  var globalIntersectionObserver = null;
79
79
  var strategy = "async";
80
+ var resumeLayoutLoop;
80
81
  function setOnLayoutStrategy(state) {
81
82
  strategy = state;
83
+ resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
82
84
  }
83
85
  var NodeRectCache = /* @__PURE__ */new WeakMap();
84
86
  var avoidUpdates = true;
@@ -111,20 +113,25 @@ function rectsEqual(a, b) {
111
113
  }
112
114
  if (ENABLE) {
113
115
  let ensureRectFetchObserver2 = function () {
114
- if (rectFetchObserver) return rectFetchObserver;
115
- rectFetchObserver = new IntersectionObserver(function (entries) {
116
- lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
117
- for (var i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
118
- if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
119
- if (rectFetchResolve) {
120
- rectFetchResolve(true);
121
- rectFetchResolve = null;
122
- }
123
- }, {
124
- threshold: 0
125
- });
126
- return rectFetchObserver;
127
- };
116
+ if (rectFetchObserver) return rectFetchObserver;
117
+ rectFetchObserver = new IntersectionObserver(function (entries) {
118
+ lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
119
+ for (var i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
120
+ if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
121
+ if (rectFetchResolve) {
122
+ rectFetchResolve(true);
123
+ rectFetchResolve = null;
124
+ }
125
+ }, {
126
+ threshold: 0
127
+ });
128
+ return rectFetchObserver;
129
+ },
130
+ scheduleLayoutFrame2 = function () {
131
+ if (frameScheduled || strategy === "off" || Nodes.size === 0 || document.hidden) return;
132
+ frameScheduled = true;
133
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
134
+ };
128
135
  var BoundingRects = /* @__PURE__ */new WeakMap();
129
136
  var rectFetchObserver = null;
130
137
  var rectFetchResolve = null;
@@ -152,9 +159,11 @@ if (ENABLE) {
152
159
  var MAX_SKIP_FRAMES = 20;
153
160
  var skipFrames = BASE_SKIP_FRAMES;
154
161
  var frameCount = 0;
162
+ var frameScheduled = false;
155
163
  async function layoutOnAnimationFrame() {
156
164
  if (frameCount++ % skipFrames !== 0) {
157
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
165
+ frameScheduled = false;
166
+ scheduleLayoutFrame2();
158
167
  return;
159
168
  }
160
169
  if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
@@ -236,9 +245,12 @@ if (ENABLE) {
236
245
  for (var i2 = 0; i2 < visibleNodes.length; i2++) updateLayoutIfChanged(visibleNodes[i2]);
237
246
  }
238
247
  }
239
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
248
+ frameScheduled = false;
249
+ scheduleLayoutFrame2();
240
250
  }
241
- layoutOnAnimationFrame();
251
+ resumeLayoutLoop = scheduleLayoutFrame2;
252
+ document.addEventListener("visibilitychange", scheduleLayoutFrame2);
253
+ scheduleLayoutFrame2();
242
254
  }
243
255
  var getElementLayoutEvent = function (nodeRect, parentRect, node) {
244
256
  return {
@@ -308,6 +320,7 @@ function observeLayoutNode(node, disableKey) {
308
320
  globalIntersectionObserver.observe(node);
309
321
  IntersectionState.set(node, true);
310
322
  }
323
+ resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
311
324
  }
312
325
  function registerLayoutNode(node, onChange, disableKey) {
313
326
  LayoutHandlers.set(node, onChange);
@@ -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","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","emitLayoutSync","ref","_ref_current","useContext","ensureWebElement","current","host","_ref_current2","nextNode","prevNode","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":["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","resumeLayoutLoop","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","scheduleLayoutFrame2","frameScheduled","size","document","hidden","rAF","layoutOnAnimationFrame","setTimeout","updateLayoutIfChanged","parentNode","parentElement","nodeRect","parentRect","getBoundingClientRect","emitLayoutIfChanged","requestAnimationFrame","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","BASE_SKIP_FRAMES","MAX_SKIP_FRAMES","skipFrames","frameCount","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","addEventListener","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","emitLayoutSync","ref","_ref_current","useContext","ensureWebElement","current","host","_ref_current2","nextNode","prevNode","node2","totalNodes","swappedNode","nodeType","disconnect","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","callback","out"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -29,8 +29,10 @@ const LayoutMeasurementController = ({
29
29
  };
30
30
  let globalIntersectionObserver = null;
31
31
  let strategy = "async";
32
+ let resumeLayoutLoop;
32
33
  function setOnLayoutStrategy(state) {
33
34
  strategy = state;
35
+ resumeLayoutLoop?.();
34
36
  }
35
37
  const NodeRectCache = /* @__PURE__ */new WeakMap();
36
38
  let avoidUpdates = true;
@@ -61,20 +63,25 @@ function rectsEqual(a, b) {
61
63
  }
62
64
  if (ENABLE) {
63
65
  let ensureRectFetchObserver = function () {
64
- if (rectFetchObserver) return rectFetchObserver;
65
- rectFetchObserver = new IntersectionObserver(entries => {
66
- lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
67
- for (let i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
68
- if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
69
- if (rectFetchResolve) {
70
- rectFetchResolve(true);
71
- rectFetchResolve = null;
72
- }
73
- }, {
74
- threshold: 0
75
- });
76
- return rectFetchObserver;
77
- };
66
+ if (rectFetchObserver) return rectFetchObserver;
67
+ rectFetchObserver = new IntersectionObserver(entries => {
68
+ lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
69
+ for (let i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
70
+ if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
71
+ if (rectFetchResolve) {
72
+ rectFetchResolve(true);
73
+ rectFetchResolve = null;
74
+ }
75
+ }, {
76
+ threshold: 0
77
+ });
78
+ return rectFetchObserver;
79
+ },
80
+ scheduleLayoutFrame = function () {
81
+ if (frameScheduled || strategy === "off" || Nodes.size === 0 || document.hidden) return;
82
+ frameScheduled = true;
83
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
84
+ };
78
85
  const BoundingRects = /* @__PURE__ */new WeakMap();
79
86
  let rectFetchObserver = null;
80
87
  let rectFetchResolve = null;
@@ -102,9 +109,11 @@ if (ENABLE) {
102
109
  const MAX_SKIP_FRAMES = 20;
103
110
  let skipFrames = BASE_SKIP_FRAMES;
104
111
  let frameCount = 0;
112
+ let frameScheduled = false;
105
113
  async function layoutOnAnimationFrame() {
106
114
  if (frameCount++ % skipFrames !== 0) {
107
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
115
+ frameScheduled = false;
116
+ scheduleLayoutFrame();
108
117
  return;
109
118
  }
110
119
  if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
@@ -137,9 +146,12 @@ if (ENABLE) {
137
146
  for (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);
138
147
  }
139
148
  }
140
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
149
+ frameScheduled = false;
150
+ scheduleLayoutFrame();
141
151
  }
142
- layoutOnAnimationFrame();
152
+ resumeLayoutLoop = scheduleLayoutFrame;
153
+ document.addEventListener("visibilitychange", scheduleLayoutFrame);
154
+ scheduleLayoutFrame();
143
155
  }
144
156
  const getElementLayoutEvent = (nodeRect, parentRect, node) => {
145
157
  return {
@@ -207,6 +219,7 @@ function observeLayoutNode(node, disableKey) {
207
219
  globalIntersectionObserver.observe(node);
208
220
  IntersectionState.set(node, true);
209
221
  }
222
+ resumeLayoutLoop?.();
210
223
  }
211
224
  function registerLayoutNode(node, onChange, disableKey) {
212
225
  LayoutHandlers.set(node, onChange);
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","createContext","useContext","useId","jsx","LayoutHandlers","WeakMap","LayoutDisableKey","Nodes","Set","IntersectionState","usePretransformDimensions","globalThis","__TAMAGUI_ONLAYOUT_PRETRANSFORM","process","env","TAMAGUI_ONLAYOUT_PRETRANSFORM","_debugLayout","isDebugLayout","window","URLSearchParams","location","search","has","DisableLayoutContextValues","DisableLayoutContextKey","ENABLE","IntersectionObserver","LayoutMeasurementController","disable","children","id","Provider","value","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","entries","i","length","entry","node","target","get","isIntersecting","set","threshold","rectsEqual","a","b","x","y","width","height","ensureRectFetchObserver","rectFetchObserver","lastCallbackDelay","Math","round","performance","now","rectFetchStartTime","BoundingRects","boundingClientRect","NODE_ENV","console","warn","rectFetchResolve","updateLayoutIfChanged","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","HTMLElement","cleanupNode","disableKey","push","add","io","observe","parent","Promise","res","unobserve","min","max","getElementLayoutEvent","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","getPreTransformDimensions","offsetWidth","offsetHeight","aNode","left","top","pageX","pageY","onLayout","cachedRect","cachedParentRect","nodeChanged","parentChanged","event","log","tag","tagName","className","slice","first","observeLayoutNode","delete","registerLayoutNode","onChange","PrevHostNode","emitLayoutSync","useElementLayout","ref","ensureWebElement","current","host","nextNode","prevNode","node2","totalNodes","size","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { createContext, useContext, useId } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst LayoutHandlers = /* @__PURE__ */ new WeakMap();\nconst LayoutDisableKey = /* @__PURE__ */ new WeakMap();\nconst Nodes = /* @__PURE__ */ new Set();\nconst IntersectionState = /* @__PURE__ */ new WeakMap();\nconst usePretransformDimensions = () => globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === \"1\";\nlet _debugLayout;\nfunction isDebugLayout() {\n\tif (_debugLayout === void 0) _debugLayout = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).has(\"__tamaDebugLayout\");\n\treturn _debugLayout;\n}\nconst DisableLayoutContextValues = {};\nconst DisableLayoutContextKey = createContext(\"\");\nconst ENABLE = typeof IntersectionObserver !== \"undefined\";\nconst LayoutMeasurementController = ({ disable, children }) => {\n\tconst id = useId();\n\tuseIsomorphicLayoutEffect(() => {\n\t\tDisableLayoutContextValues[id] = disable;\n\t}, [disable, id]);\n\treturn /* @__PURE__ */ jsx(DisableLayoutContextKey.Provider, {\n\t\tvalue: id,\n\t\tchildren\n\t});\n};\nlet globalIntersectionObserver = null;\nlet strategy = \"async\";\nfunction setOnLayoutStrategy(state) {\n\tstrategy = state;\n}\nconst NodeRectCache = /* @__PURE__ */ new WeakMap();\nlet avoidUpdates = true;\nconst queuedUpdates = /* @__PURE__ */ new Map();\nfunction enable() {\n\tif (avoidUpdates) {\n\t\tavoidUpdates = false;\n\t\tif (queuedUpdates) {\n\t\t\tqueuedUpdates.forEach((cb) => cb());\n\t\t\tqueuedUpdates.clear();\n\t\t}\n\t}\n}\nfunction startGlobalObservers() {\n\tif (!ENABLE || globalIntersectionObserver) return;\n\tglobalIntersectionObserver = new IntersectionObserver((entries) => {\n\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\tconst entry = entries[i];\n\t\t\tconst 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 ensureRectFetchObserver = function() {\n\t\tif (rectFetchObserver) return rectFetchObserver;\n\t\trectFetchObserver = new IntersectionObserver((entries) => {\n\t\t\tlastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);\n\t\t\tfor (let 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\tconst BoundingRects = /* @__PURE__ */ new WeakMap();\n\tlet rectFetchObserver = null;\n\tlet rectFetchResolve = null;\n\tlet rectFetchStartTime = 0;\n\tlet lastCallbackDelay = 0;\n\tasync function updateLayoutIfChanged(node) {\n\t\tif (typeof LayoutHandlers.get(node) !== \"function\") return;\n\t\tconst parentNode = node.parentElement;\n\t\tif (!parentNode) return;\n\t\tlet nodeRect;\n\t\tlet 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\tconst rAF = typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : void 0;\n\tconst userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;\n\tconst BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;\n\tconst MAX_SKIP_FRAMES = 20;\n\tlet skipFrames = BASE_SKIP_FRAMES;\n\tlet 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\tconst visibleNodes = [];\n\t\t\tconst parentsToObserve = /* @__PURE__ */ new Set();\n\t\t\tfor (const node of Nodes) {\n\t\t\t\tconst parentElement = node.parentElement;\n\t\t\t\tif (!(parentElement instanceof HTMLElement)) {\n\t\t\t\t\tcleanupNode(node);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst disableKey = LayoutDisableKey.get(node);\n\t\t\t\tif (disableKey && DisableLayoutContextValues[disableKey] === true) continue;\n\t\t\t\tif (IntersectionState.get(node) === false) continue;\n\t\t\t\tvisibleNodes.push(node);\n\t\t\t\tparentsToObserve.add(parentElement);\n\t\t\t}\n\t\t\tif (visibleNodes.length > 0) {\n\t\t\t\tconst io = ensureRectFetchObserver();\n\t\t\t\trectFetchStartTime = performance.now();\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.observe(parent);\n\t\t\t\tawait new Promise((res) => {\n\t\t\t\t\trectFetchResolve = res;\n\t\t\t\t});\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.unobserve(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.unobserve(parent);\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 (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);\n\t\t\t}\n\t\t}\n\t\trAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);\n\t}\n\tlayoutOnAnimationFrame();\n}\nconst getElementLayoutEvent = (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};\nconst getPreTransformDimensions = (node) => {\n\treturn {\n\t\twidth: node.offsetWidth,\n\t\theight: node.offsetHeight\n\t};\n};\nconst getRelativeDimensions = (a, b, aNode) => {\n\tconst { left, top } = a;\n\tconst x = left - b.left;\n\tconst y = top - b.top;\n\tconst { 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\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst cachedRect = NodeRectCache.get(node);\n\tconst cachedParentRect = NodeRectCache.get(parentNode);\n\tconst nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);\n\tconst parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);\n\tif (!nodeChanged && !parentChanged) return;\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tconst 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, () => onLayout(event));\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 () => cleanupNode(node);\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}\nconst PrevHostNode = /* @__PURE__ */ new WeakMap();\nfunction emitLayoutSync(node) {\n\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst parentNode = node.parentElement;\n\tif (!parentNode) return;\n\tconst nodeRect = node.getBoundingClientRect();\n\tconst parentRect = parentNode.getBoundingClientRect();\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tonLayout(getElementLayoutEvent(nodeRect, parentRect, node));\n}\nfunction useElementLayout(ref, onLayout) {\n\tconst disableKey = useContext(DisableLayoutContextKey);\n\tconst node = ensureWebElement(ref.current?.host);\n\tif (node && onLayout) {\n\t\tLayoutHandlers.set(node, onLayout);\n\t\tLayoutDisableKey.set(node, disableKey);\n\t}\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst nextNode = ensureWebElement(ref.current?.host);\n\t\tconst 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\temitLayoutSync(nextNode);\n\t});\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst node2 = ref.current?.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 () => {\n\t\t\tcleanupNode(node2);\n\t\t\tconst 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 x instanceof HTMLElement ? x : void 0;\n}\nconst getBoundingClientRectAsync = (node) => {\n\treturn new Promise((res) => {\n\t\tif (!node || node.nodeType !== 1) return res(false);\n\t\tconst io = new IntersectionObserver((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};\nconst measureNode = async (node, relativeTo) => {\n\tconst relativeNode = relativeTo || node?.parentElement;\n\tif (relativeNode instanceof HTMLElement) {\n\t\tconst [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};\nconst measure = async (node, callback) => {\n\tconst out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasure(node) {\n\treturn (callback) => measure(node, callback);\n}\nconst measureInWindow = async (node, callback) => {\n\tconst out = await measureNode(node, null);\n\tif (out) callback?.(out.pageX, out.pageY, out.width, out.height);\n\treturn out;\n};\nconst createMeasureInWindow = (node) => {\n\treturn (callback) => measureInWindow(node, callback);\n};\nconst measureLayout = async (node, relativeNode, callback) => {\n\tconst out = await measureNode(node, relativeNode);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasureLayout(node) {\n\treturn (relativeTo, callback) => measureLayout(node, relativeTo, callback);\n}\n\nexport { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","createContext","useContext","useId","jsx","LayoutHandlers","WeakMap","LayoutDisableKey","Nodes","Set","IntersectionState","usePretransformDimensions","globalThis","__TAMAGUI_ONLAYOUT_PRETRANSFORM","process","env","TAMAGUI_ONLAYOUT_PRETRANSFORM","_debugLayout","isDebugLayout","window","URLSearchParams","location","search","has","DisableLayoutContextValues","DisableLayoutContextKey","ENABLE","IntersectionObserver","LayoutMeasurementController","disable","children","id","Provider","value","globalIntersectionObserver","strategy","resumeLayoutLoop","setOnLayoutStrategy","state","NodeRectCache","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","entries","i","length","entry","node","target","get","isIntersecting","set","threshold","rectsEqual","a","b","x","y","width","height","ensureRectFetchObserver","rectFetchObserver","lastCallbackDelay","Math","round","performance","now","rectFetchStartTime","BoundingRects","boundingClientRect","NODE_ENV","console","warn","rectFetchResolve","scheduleLayoutFrame","frameScheduled","size","document","hidden","rAF","layoutOnAnimationFrame","setTimeout","updateLayoutIfChanged","parentNode","parentElement","nodeRect","parentRect","getBoundingClientRect","emitLayoutIfChanged","requestAnimationFrame","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","BASE_SKIP_FRAMES","MAX_SKIP_FRAMES","skipFrames","frameCount","Number","MAX_SAFE_INTEGER","visibleNodes","parentsToObserve","HTMLElement","cleanupNode","disableKey","push","add","io","observe","parent","Promise","res","unobserve","min","max","addEventListener","getElementLayoutEvent","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","getPreTransformDimensions","offsetWidth","offsetHeight","aNode","left","top","pageX","pageY","onLayout","cachedRect","cachedParentRect","nodeChanged","parentChanged","event","log","tag","tagName","className","slice","first","observeLayoutNode","delete","registerLayoutNode","onChange","PrevHostNode","emitLayoutSync","useElementLayout","ref","ensureWebElement","current","host","nextNode","prevNode","node2","totalNodes","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { createContext, useContext, useId } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst LayoutHandlers = /* @__PURE__ */ new WeakMap();\nconst LayoutDisableKey = /* @__PURE__ */ new WeakMap();\nconst Nodes = /* @__PURE__ */ new Set();\nconst IntersectionState = /* @__PURE__ */ new WeakMap();\nconst usePretransformDimensions = () => globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === \"1\";\nlet _debugLayout;\nfunction isDebugLayout() {\n\tif (_debugLayout === void 0) _debugLayout = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).has(\"__tamaDebugLayout\");\n\treturn _debugLayout;\n}\nconst DisableLayoutContextValues = {};\nconst DisableLayoutContextKey = createContext(\"\");\nconst ENABLE = typeof IntersectionObserver !== \"undefined\";\nconst LayoutMeasurementController = ({ disable, children }) => {\n\tconst id = useId();\n\tuseIsomorphicLayoutEffect(() => {\n\t\tDisableLayoutContextValues[id] = disable;\n\t}, [disable, id]);\n\treturn /* @__PURE__ */ jsx(DisableLayoutContextKey.Provider, {\n\t\tvalue: id,\n\t\tchildren\n\t});\n};\nlet globalIntersectionObserver = null;\nlet strategy = \"async\";\nlet resumeLayoutLoop;\nfunction setOnLayoutStrategy(state) {\n\tstrategy = state;\n\tresumeLayoutLoop?.();\n}\nconst NodeRectCache = /* @__PURE__ */ new WeakMap();\nlet avoidUpdates = true;\nconst queuedUpdates = /* @__PURE__ */ new Map();\nfunction enable() {\n\tif (avoidUpdates) {\n\t\tavoidUpdates = false;\n\t\tif (queuedUpdates) {\n\t\t\tqueuedUpdates.forEach((cb) => cb());\n\t\t\tqueuedUpdates.clear();\n\t\t}\n\t}\n}\nfunction startGlobalObservers() {\n\tif (!ENABLE || globalIntersectionObserver) return;\n\tglobalIntersectionObserver = new IntersectionObserver((entries) => {\n\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\tconst entry = entries[i];\n\t\t\tconst 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 ensureRectFetchObserver = function() {\n\t\tif (rectFetchObserver) return rectFetchObserver;\n\t\trectFetchObserver = new IntersectionObserver((entries) => {\n\t\t\tlastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);\n\t\t\tfor (let 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}, scheduleLayoutFrame = function() {\n\t\tif (frameScheduled || strategy === \"off\" || Nodes.size === 0 || document.hidden) return;\n\t\tframeScheduled = true;\n\t\trAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);\n\t};\n\tconst BoundingRects = /* @__PURE__ */ new WeakMap();\n\tlet rectFetchObserver = null;\n\tlet rectFetchResolve = null;\n\tlet rectFetchStartTime = 0;\n\tlet lastCallbackDelay = 0;\n\tasync function updateLayoutIfChanged(node) {\n\t\tif (typeof LayoutHandlers.get(node) !== \"function\") return;\n\t\tconst parentNode = node.parentElement;\n\t\tif (!parentNode) return;\n\t\tlet nodeRect;\n\t\tlet 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\tconst rAF = typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : void 0;\n\tconst userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;\n\tconst BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;\n\tconst MAX_SKIP_FRAMES = 20;\n\tlet skipFrames = BASE_SKIP_FRAMES;\n\tlet frameCount = 0;\n\tlet frameScheduled = false;\n\tasync function layoutOnAnimationFrame() {\n\t\tif (frameCount++ % skipFrames !== 0) {\n\t\t\tframeScheduled = false;\n\t\t\tscheduleLayoutFrame();\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\tconst visibleNodes = [];\n\t\t\tconst parentsToObserve = /* @__PURE__ */ new Set();\n\t\t\tfor (const node of Nodes) {\n\t\t\t\tconst parentElement = node.parentElement;\n\t\t\t\tif (!(parentElement instanceof HTMLElement)) {\n\t\t\t\t\tcleanupNode(node);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst disableKey = LayoutDisableKey.get(node);\n\t\t\t\tif (disableKey && DisableLayoutContextValues[disableKey] === true) continue;\n\t\t\t\tif (IntersectionState.get(node) === false) continue;\n\t\t\t\tvisibleNodes.push(node);\n\t\t\t\tparentsToObserve.add(parentElement);\n\t\t\t}\n\t\t\tif (visibleNodes.length > 0) {\n\t\t\t\tconst io = ensureRectFetchObserver();\n\t\t\t\trectFetchStartTime = performance.now();\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.observe(parent);\n\t\t\t\tawait new Promise((res) => {\n\t\t\t\t\trectFetchResolve = res;\n\t\t\t\t});\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.unobserve(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.unobserve(parent);\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 (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);\n\t\t\t}\n\t\t}\n\t\tframeScheduled = false;\n\t\tscheduleLayoutFrame();\n\t}\n\tresumeLayoutLoop = scheduleLayoutFrame;\n\tdocument.addEventListener(\"visibilitychange\", scheduleLayoutFrame);\n\tscheduleLayoutFrame();\n}\nconst getElementLayoutEvent = (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};\nconst getPreTransformDimensions = (node) => {\n\treturn {\n\t\twidth: node.offsetWidth,\n\t\theight: node.offsetHeight\n\t};\n};\nconst getRelativeDimensions = (a, b, aNode) => {\n\tconst { left, top } = a;\n\tconst x = left - b.left;\n\tconst y = top - b.top;\n\tconst { 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\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst cachedRect = NodeRectCache.get(node);\n\tconst cachedParentRect = NodeRectCache.get(parentNode);\n\tconst nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);\n\tconst parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);\n\tif (!nodeChanged && !parentChanged) return;\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tconst 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, () => onLayout(event));\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\tresumeLayoutLoop?.();\n}\nfunction registerLayoutNode(node, onChange, disableKey) {\n\tLayoutHandlers.set(node, onChange);\n\tobserveLayoutNode(node, disableKey);\n\treturn () => cleanupNode(node);\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}\nconst PrevHostNode = /* @__PURE__ */ new WeakMap();\nfunction emitLayoutSync(node) {\n\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst parentNode = node.parentElement;\n\tif (!parentNode) return;\n\tconst nodeRect = node.getBoundingClientRect();\n\tconst parentRect = parentNode.getBoundingClientRect();\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tonLayout(getElementLayoutEvent(nodeRect, parentRect, node));\n}\nfunction useElementLayout(ref, onLayout) {\n\tconst disableKey = useContext(DisableLayoutContextKey);\n\tconst node = ensureWebElement(ref.current?.host);\n\tif (node && onLayout) {\n\t\tLayoutHandlers.set(node, onLayout);\n\t\tLayoutDisableKey.set(node, disableKey);\n\t}\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst nextNode = ensureWebElement(ref.current?.host);\n\t\tconst 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\temitLayoutSync(nextNode);\n\t});\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst node2 = ref.current?.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 () => {\n\t\t\tcleanupNode(node2);\n\t\t\tconst 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 x instanceof HTMLElement ? x : void 0;\n}\nconst getBoundingClientRectAsync = (node) => {\n\treturn new Promise((res) => {\n\t\tif (!node || node.nodeType !== 1) return res(false);\n\t\tconst io = new IntersectionObserver((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};\nconst measureNode = async (node, relativeTo) => {\n\tconst relativeNode = relativeTo || node?.parentElement;\n\tif (relativeNode instanceof HTMLElement) {\n\t\tconst [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};\nconst measure = async (node, callback) => {\n\tconst out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasure(node) {\n\treturn (callback) => measure(node, callback);\n}\nconst measureInWindow = async (node, callback) => {\n\tconst out = await measureNode(node, null);\n\tif (out) callback?.(out.pageX, out.pageY, out.width, out.height);\n\treturn out;\n};\nconst createMeasureInWindow = (node) => {\n\treturn (callback) => measureInWindow(node, callback);\n};\nconst measureLayout = async (node, relativeNode, callback) => {\n\tconst out = await measureNode(node, relativeNode);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasureLayout(node) {\n\treturn (relativeTo, callback) => measureLayout(node, relativeTo, callback);\n}\n\nexport { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };"],"mappings":"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","ignoreList":[]}
@@ -29,8 +29,10 @@ const LayoutMeasurementController = ({
29
29
  };
30
30
  let globalIntersectionObserver = null;
31
31
  let strategy = "async";
32
+ let resumeLayoutLoop;
32
33
  function setOnLayoutStrategy(state) {
33
34
  strategy = state;
35
+ resumeLayoutLoop?.();
34
36
  }
35
37
  const NodeRectCache = /* @__PURE__ */new WeakMap();
36
38
  let avoidUpdates = true;
@@ -61,20 +63,25 @@ function rectsEqual(a, b) {
61
63
  }
62
64
  if (ENABLE) {
63
65
  let ensureRectFetchObserver = function () {
64
- if (rectFetchObserver) return rectFetchObserver;
65
- rectFetchObserver = new IntersectionObserver(entries => {
66
- lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
67
- for (let i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
68
- if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
69
- if (rectFetchResolve) {
70
- rectFetchResolve(true);
71
- rectFetchResolve = null;
72
- }
73
- }, {
74
- threshold: 0
75
- });
76
- return rectFetchObserver;
77
- };
66
+ if (rectFetchObserver) return rectFetchObserver;
67
+ rectFetchObserver = new IntersectionObserver(entries => {
68
+ lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
69
+ for (let i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
70
+ if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
71
+ if (rectFetchResolve) {
72
+ rectFetchResolve(true);
73
+ rectFetchResolve = null;
74
+ }
75
+ }, {
76
+ threshold: 0
77
+ });
78
+ return rectFetchObserver;
79
+ },
80
+ scheduleLayoutFrame = function () {
81
+ if (frameScheduled || strategy === "off" || Nodes.size === 0 || document.hidden) return;
82
+ frameScheduled = true;
83
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
84
+ };
78
85
  const BoundingRects = /* @__PURE__ */new WeakMap();
79
86
  let rectFetchObserver = null;
80
87
  let rectFetchResolve = null;
@@ -102,9 +109,11 @@ if (ENABLE) {
102
109
  const MAX_SKIP_FRAMES = 20;
103
110
  let skipFrames = BASE_SKIP_FRAMES;
104
111
  let frameCount = 0;
112
+ let frameScheduled = false;
105
113
  async function layoutOnAnimationFrame() {
106
114
  if (frameCount++ % skipFrames !== 0) {
107
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
115
+ frameScheduled = false;
116
+ scheduleLayoutFrame();
108
117
  return;
109
118
  }
110
119
  if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
@@ -137,9 +146,12 @@ if (ENABLE) {
137
146
  for (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);
138
147
  }
139
148
  }
140
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
149
+ frameScheduled = false;
150
+ scheduleLayoutFrame();
141
151
  }
142
- layoutOnAnimationFrame();
152
+ resumeLayoutLoop = scheduleLayoutFrame;
153
+ document.addEventListener("visibilitychange", scheduleLayoutFrame);
154
+ scheduleLayoutFrame();
143
155
  }
144
156
  const getElementLayoutEvent = (nodeRect, parentRect, node) => {
145
157
  return {
@@ -207,6 +219,7 @@ function observeLayoutNode(node, disableKey) {
207
219
  globalIntersectionObserver.observe(node);
208
220
  IntersectionState.set(node, true);
209
221
  }
222
+ resumeLayoutLoop?.();
210
223
  }
211
224
  function registerLayoutNode(node, onChange, disableKey) {
212
225
  LayoutHandlers.set(node, onChange);
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","createContext","useContext","useId","jsx","LayoutHandlers","WeakMap","LayoutDisableKey","Nodes","Set","IntersectionState","usePretransformDimensions","globalThis","__TAMAGUI_ONLAYOUT_PRETRANSFORM","process","env","TAMAGUI_ONLAYOUT_PRETRANSFORM","_debugLayout","isDebugLayout","window","URLSearchParams","location","search","has","DisableLayoutContextValues","DisableLayoutContextKey","ENABLE","IntersectionObserver","LayoutMeasurementController","disable","children","id","Provider","value","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","entries","i","length","entry","node","target","get","isIntersecting","set","threshold","rectsEqual","a","b","x","y","width","height","ensureRectFetchObserver","rectFetchObserver","lastCallbackDelay","Math","round","performance","now","rectFetchStartTime","BoundingRects","boundingClientRect","NODE_ENV","console","warn","rectFetchResolve","updateLayoutIfChanged","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","HTMLElement","cleanupNode","disableKey","push","add","io","observe","parent","Promise","res","unobserve","min","max","getElementLayoutEvent","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","getPreTransformDimensions","offsetWidth","offsetHeight","aNode","left","top","pageX","pageY","onLayout","cachedRect","cachedParentRect","nodeChanged","parentChanged","event","log","tag","tagName","className","slice","first","observeLayoutNode","delete","registerLayoutNode","onChange","PrevHostNode","emitLayoutSync","useElementLayout","ref","ensureWebElement","current","host","nextNode","prevNode","node2","totalNodes","size","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { createContext, useContext, useId } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst LayoutHandlers = /* @__PURE__ */ new WeakMap();\nconst LayoutDisableKey = /* @__PURE__ */ new WeakMap();\nconst Nodes = /* @__PURE__ */ new Set();\nconst IntersectionState = /* @__PURE__ */ new WeakMap();\nconst usePretransformDimensions = () => globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === \"1\";\nlet _debugLayout;\nfunction isDebugLayout() {\n\tif (_debugLayout === void 0) _debugLayout = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).has(\"__tamaDebugLayout\");\n\treturn _debugLayout;\n}\nconst DisableLayoutContextValues = {};\nconst DisableLayoutContextKey = createContext(\"\");\nconst ENABLE = typeof IntersectionObserver !== \"undefined\";\nconst LayoutMeasurementController = ({ disable, children }) => {\n\tconst id = useId();\n\tuseIsomorphicLayoutEffect(() => {\n\t\tDisableLayoutContextValues[id] = disable;\n\t}, [disable, id]);\n\treturn /* @__PURE__ */ jsx(DisableLayoutContextKey.Provider, {\n\t\tvalue: id,\n\t\tchildren\n\t});\n};\nlet globalIntersectionObserver = null;\nlet strategy = \"async\";\nfunction setOnLayoutStrategy(state) {\n\tstrategy = state;\n}\nconst NodeRectCache = /* @__PURE__ */ new WeakMap();\nlet avoidUpdates = true;\nconst queuedUpdates = /* @__PURE__ */ new Map();\nfunction enable() {\n\tif (avoidUpdates) {\n\t\tavoidUpdates = false;\n\t\tif (queuedUpdates) {\n\t\t\tqueuedUpdates.forEach((cb) => cb());\n\t\t\tqueuedUpdates.clear();\n\t\t}\n\t}\n}\nfunction startGlobalObservers() {\n\tif (!ENABLE || globalIntersectionObserver) return;\n\tglobalIntersectionObserver = new IntersectionObserver((entries) => {\n\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\tconst entry = entries[i];\n\t\t\tconst 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 ensureRectFetchObserver = function() {\n\t\tif (rectFetchObserver) return rectFetchObserver;\n\t\trectFetchObserver = new IntersectionObserver((entries) => {\n\t\t\tlastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);\n\t\t\tfor (let 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\tconst BoundingRects = /* @__PURE__ */ new WeakMap();\n\tlet rectFetchObserver = null;\n\tlet rectFetchResolve = null;\n\tlet rectFetchStartTime = 0;\n\tlet lastCallbackDelay = 0;\n\tasync function updateLayoutIfChanged(node) {\n\t\tif (typeof LayoutHandlers.get(node) !== \"function\") return;\n\t\tconst parentNode = node.parentElement;\n\t\tif (!parentNode) return;\n\t\tlet nodeRect;\n\t\tlet 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\tconst rAF = typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : void 0;\n\tconst userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;\n\tconst BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;\n\tconst MAX_SKIP_FRAMES = 20;\n\tlet skipFrames = BASE_SKIP_FRAMES;\n\tlet 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\tconst visibleNodes = [];\n\t\t\tconst parentsToObserve = /* @__PURE__ */ new Set();\n\t\t\tfor (const node of Nodes) {\n\t\t\t\tconst parentElement = node.parentElement;\n\t\t\t\tif (!(parentElement instanceof HTMLElement)) {\n\t\t\t\t\tcleanupNode(node);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst disableKey = LayoutDisableKey.get(node);\n\t\t\t\tif (disableKey && DisableLayoutContextValues[disableKey] === true) continue;\n\t\t\t\tif (IntersectionState.get(node) === false) continue;\n\t\t\t\tvisibleNodes.push(node);\n\t\t\t\tparentsToObserve.add(parentElement);\n\t\t\t}\n\t\t\tif (visibleNodes.length > 0) {\n\t\t\t\tconst io = ensureRectFetchObserver();\n\t\t\t\trectFetchStartTime = performance.now();\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.observe(parent);\n\t\t\t\tawait new Promise((res) => {\n\t\t\t\t\trectFetchResolve = res;\n\t\t\t\t});\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.unobserve(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.unobserve(parent);\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 (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);\n\t\t\t}\n\t\t}\n\t\trAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);\n\t}\n\tlayoutOnAnimationFrame();\n}\nconst getElementLayoutEvent = (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};\nconst getPreTransformDimensions = (node) => {\n\treturn {\n\t\twidth: node.offsetWidth,\n\t\theight: node.offsetHeight\n\t};\n};\nconst getRelativeDimensions = (a, b, aNode) => {\n\tconst { left, top } = a;\n\tconst x = left - b.left;\n\tconst y = top - b.top;\n\tconst { 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\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst cachedRect = NodeRectCache.get(node);\n\tconst cachedParentRect = NodeRectCache.get(parentNode);\n\tconst nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);\n\tconst parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);\n\tif (!nodeChanged && !parentChanged) return;\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tconst 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, () => onLayout(event));\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 () => cleanupNode(node);\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}\nconst PrevHostNode = /* @__PURE__ */ new WeakMap();\nfunction emitLayoutSync(node) {\n\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst parentNode = node.parentElement;\n\tif (!parentNode) return;\n\tconst nodeRect = node.getBoundingClientRect();\n\tconst parentRect = parentNode.getBoundingClientRect();\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tonLayout(getElementLayoutEvent(nodeRect, parentRect, node));\n}\nfunction useElementLayout(ref, onLayout) {\n\tconst disableKey = useContext(DisableLayoutContextKey);\n\tconst node = ensureWebElement(ref.current?.host);\n\tif (node && onLayout) {\n\t\tLayoutHandlers.set(node, onLayout);\n\t\tLayoutDisableKey.set(node, disableKey);\n\t}\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst nextNode = ensureWebElement(ref.current?.host);\n\t\tconst 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\temitLayoutSync(nextNode);\n\t});\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst node2 = ref.current?.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 () => {\n\t\t\tcleanupNode(node2);\n\t\t\tconst 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 x instanceof HTMLElement ? x : void 0;\n}\nconst getBoundingClientRectAsync = (node) => {\n\treturn new Promise((res) => {\n\t\tif (!node || node.nodeType !== 1) return res(false);\n\t\tconst io = new IntersectionObserver((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};\nconst measureNode = async (node, relativeTo) => {\n\tconst relativeNode = relativeTo || node?.parentElement;\n\tif (relativeNode instanceof HTMLElement) {\n\t\tconst [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};\nconst measure = async (node, callback) => {\n\tconst out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasure(node) {\n\treturn (callback) => measure(node, callback);\n}\nconst measureInWindow = async (node, callback) => {\n\tconst out = await measureNode(node, null);\n\tif (out) callback?.(out.pageX, out.pageY, out.width, out.height);\n\treturn out;\n};\nconst createMeasureInWindow = (node) => {\n\treturn (callback) => measureInWindow(node, callback);\n};\nconst measureLayout = async (node, relativeNode, callback) => {\n\tconst out = await measureNode(node, relativeNode);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasureLayout(node) {\n\treturn (relativeTo, callback) => measureLayout(node, relativeTo, callback);\n}\n\nexport { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","createContext","useContext","useId","jsx","LayoutHandlers","WeakMap","LayoutDisableKey","Nodes","Set","IntersectionState","usePretransformDimensions","globalThis","__TAMAGUI_ONLAYOUT_PRETRANSFORM","process","env","TAMAGUI_ONLAYOUT_PRETRANSFORM","_debugLayout","isDebugLayout","window","URLSearchParams","location","search","has","DisableLayoutContextValues","DisableLayoutContextKey","ENABLE","IntersectionObserver","LayoutMeasurementController","disable","children","id","Provider","value","globalIntersectionObserver","strategy","resumeLayoutLoop","setOnLayoutStrategy","state","NodeRectCache","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","entries","i","length","entry","node","target","get","isIntersecting","set","threshold","rectsEqual","a","b","x","y","width","height","ensureRectFetchObserver","rectFetchObserver","lastCallbackDelay","Math","round","performance","now","rectFetchStartTime","BoundingRects","boundingClientRect","NODE_ENV","console","warn","rectFetchResolve","scheduleLayoutFrame","frameScheduled","size","document","hidden","rAF","layoutOnAnimationFrame","setTimeout","updateLayoutIfChanged","parentNode","parentElement","nodeRect","parentRect","getBoundingClientRect","emitLayoutIfChanged","requestAnimationFrame","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","BASE_SKIP_FRAMES","MAX_SKIP_FRAMES","skipFrames","frameCount","Number","MAX_SAFE_INTEGER","visibleNodes","parentsToObserve","HTMLElement","cleanupNode","disableKey","push","add","io","observe","parent","Promise","res","unobserve","min","max","addEventListener","getElementLayoutEvent","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","getPreTransformDimensions","offsetWidth","offsetHeight","aNode","left","top","pageX","pageY","onLayout","cachedRect","cachedParentRect","nodeChanged","parentChanged","event","log","tag","tagName","className","slice","first","observeLayoutNode","delete","registerLayoutNode","onChange","PrevHostNode","emitLayoutSync","useElementLayout","ref","ensureWebElement","current","host","nextNode","prevNode","node2","totalNodes","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["index.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { createContext, useContext, useId } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst LayoutHandlers = /* @__PURE__ */ new WeakMap();\nconst LayoutDisableKey = /* @__PURE__ */ new WeakMap();\nconst Nodes = /* @__PURE__ */ new Set();\nconst IntersectionState = /* @__PURE__ */ new WeakMap();\nconst usePretransformDimensions = () => globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === \"1\";\nlet _debugLayout;\nfunction isDebugLayout() {\n\tif (_debugLayout === void 0) _debugLayout = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).has(\"__tamaDebugLayout\");\n\treturn _debugLayout;\n}\nconst DisableLayoutContextValues = {};\nconst DisableLayoutContextKey = createContext(\"\");\nconst ENABLE = typeof IntersectionObserver !== \"undefined\";\nconst LayoutMeasurementController = ({ disable, children }) => {\n\tconst id = useId();\n\tuseIsomorphicLayoutEffect(() => {\n\t\tDisableLayoutContextValues[id] = disable;\n\t}, [disable, id]);\n\treturn /* @__PURE__ */ jsx(DisableLayoutContextKey.Provider, {\n\t\tvalue: id,\n\t\tchildren\n\t});\n};\nlet globalIntersectionObserver = null;\nlet strategy = \"async\";\nlet resumeLayoutLoop;\nfunction setOnLayoutStrategy(state) {\n\tstrategy = state;\n\tresumeLayoutLoop?.();\n}\nconst NodeRectCache = /* @__PURE__ */ new WeakMap();\nlet avoidUpdates = true;\nconst queuedUpdates = /* @__PURE__ */ new Map();\nfunction enable() {\n\tif (avoidUpdates) {\n\t\tavoidUpdates = false;\n\t\tif (queuedUpdates) {\n\t\t\tqueuedUpdates.forEach((cb) => cb());\n\t\t\tqueuedUpdates.clear();\n\t\t}\n\t}\n}\nfunction startGlobalObservers() {\n\tif (!ENABLE || globalIntersectionObserver) return;\n\tglobalIntersectionObserver = new IntersectionObserver((entries) => {\n\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\tconst entry = entries[i];\n\t\t\tconst 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 ensureRectFetchObserver = function() {\n\t\tif (rectFetchObserver) return rectFetchObserver;\n\t\trectFetchObserver = new IntersectionObserver((entries) => {\n\t\t\tlastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);\n\t\t\tfor (let 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}, scheduleLayoutFrame = function() {\n\t\tif (frameScheduled || strategy === \"off\" || Nodes.size === 0 || document.hidden) return;\n\t\tframeScheduled = true;\n\t\trAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);\n\t};\n\tconst BoundingRects = /* @__PURE__ */ new WeakMap();\n\tlet rectFetchObserver = null;\n\tlet rectFetchResolve = null;\n\tlet rectFetchStartTime = 0;\n\tlet lastCallbackDelay = 0;\n\tasync function updateLayoutIfChanged(node) {\n\t\tif (typeof LayoutHandlers.get(node) !== \"function\") return;\n\t\tconst parentNode = node.parentElement;\n\t\tif (!parentNode) return;\n\t\tlet nodeRect;\n\t\tlet 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\tconst rAF = typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : void 0;\n\tconst userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;\n\tconst BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;\n\tconst MAX_SKIP_FRAMES = 20;\n\tlet skipFrames = BASE_SKIP_FRAMES;\n\tlet frameCount = 0;\n\tlet frameScheduled = false;\n\tasync function layoutOnAnimationFrame() {\n\t\tif (frameCount++ % skipFrames !== 0) {\n\t\t\tframeScheduled = false;\n\t\t\tscheduleLayoutFrame();\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\tconst visibleNodes = [];\n\t\t\tconst parentsToObserve = /* @__PURE__ */ new Set();\n\t\t\tfor (const node of Nodes) {\n\t\t\t\tconst parentElement = node.parentElement;\n\t\t\t\tif (!(parentElement instanceof HTMLElement)) {\n\t\t\t\t\tcleanupNode(node);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst disableKey = LayoutDisableKey.get(node);\n\t\t\t\tif (disableKey && DisableLayoutContextValues[disableKey] === true) continue;\n\t\t\t\tif (IntersectionState.get(node) === false) continue;\n\t\t\t\tvisibleNodes.push(node);\n\t\t\t\tparentsToObserve.add(parentElement);\n\t\t\t}\n\t\t\tif (visibleNodes.length > 0) {\n\t\t\t\tconst io = ensureRectFetchObserver();\n\t\t\t\trectFetchStartTime = performance.now();\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.observe(parent);\n\t\t\t\tawait new Promise((res) => {\n\t\t\t\t\trectFetchResolve = res;\n\t\t\t\t});\n\t\t\t\tfor (let i = 0; i < visibleNodes.length; i++) io.unobserve(visibleNodes[i]);\n\t\t\t\tfor (const parent of parentsToObserve) io.unobserve(parent);\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 (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);\n\t\t\t}\n\t\t}\n\t\tframeScheduled = false;\n\t\tscheduleLayoutFrame();\n\t}\n\tresumeLayoutLoop = scheduleLayoutFrame;\n\tdocument.addEventListener(\"visibilitychange\", scheduleLayoutFrame);\n\tscheduleLayoutFrame();\n}\nconst getElementLayoutEvent = (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};\nconst getPreTransformDimensions = (node) => {\n\treturn {\n\t\twidth: node.offsetWidth,\n\t\theight: node.offsetHeight\n\t};\n};\nconst getRelativeDimensions = (a, b, aNode) => {\n\tconst { left, top } = a;\n\tconst x = left - b.left;\n\tconst y = top - b.top;\n\tconst { 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\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst cachedRect = NodeRectCache.get(node);\n\tconst cachedParentRect = NodeRectCache.get(parentNode);\n\tconst nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);\n\tconst parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);\n\tif (!nodeChanged && !parentChanged) return;\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tconst 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, () => onLayout(event));\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\tresumeLayoutLoop?.();\n}\nfunction registerLayoutNode(node, onChange, disableKey) {\n\tLayoutHandlers.set(node, onChange);\n\tobserveLayoutNode(node, disableKey);\n\treturn () => cleanupNode(node);\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}\nconst PrevHostNode = /* @__PURE__ */ new WeakMap();\nfunction emitLayoutSync(node) {\n\tconst onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tconst parentNode = node.parentElement;\n\tif (!parentNode) return;\n\tconst nodeRect = node.getBoundingClientRect();\n\tconst parentRect = parentNode.getBoundingClientRect();\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tonLayout(getElementLayoutEvent(nodeRect, parentRect, node));\n}\nfunction useElementLayout(ref, onLayout) {\n\tconst disableKey = useContext(DisableLayoutContextKey);\n\tconst node = ensureWebElement(ref.current?.host);\n\tif (node && onLayout) {\n\t\tLayoutHandlers.set(node, onLayout);\n\t\tLayoutDisableKey.set(node, disableKey);\n\t}\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst nextNode = ensureWebElement(ref.current?.host);\n\t\tconst 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\temitLayoutSync(nextNode);\n\t});\n\tuseIsomorphicLayoutEffect(() => {\n\t\tif (!onLayout) return;\n\t\tconst node2 = ref.current?.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 () => {\n\t\t\tcleanupNode(node2);\n\t\t\tconst 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 x instanceof HTMLElement ? x : void 0;\n}\nconst getBoundingClientRectAsync = (node) => {\n\treturn new Promise((res) => {\n\t\tif (!node || node.nodeType !== 1) return res(false);\n\t\tconst io = new IntersectionObserver((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};\nconst measureNode = async (node, relativeTo) => {\n\tconst relativeNode = relativeTo || node?.parentElement;\n\tif (relativeNode instanceof HTMLElement) {\n\t\tconst [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};\nconst measure = async (node, callback) => {\n\tconst out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasure(node) {\n\treturn (callback) => measure(node, callback);\n}\nconst measureInWindow = async (node, callback) => {\n\tconst out = await measureNode(node, null);\n\tif (out) callback?.(out.pageX, out.pageY, out.width, out.height);\n\treturn out;\n};\nconst createMeasureInWindow = (node) => {\n\treturn (callback) => measureInWindow(node, callback);\n};\nconst measureLayout = async (node, relativeNode, callback) => {\n\tconst out = await measureNode(node, relativeNode);\n\tif (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);\n\treturn out;\n};\nfunction createMeasureLayout(node) {\n\treturn (relativeTo, callback) => measureLayout(node, relativeTo, callback);\n}\n\nexport { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };"],"mappings":"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","ignoreList":[]}
@@ -35,8 +35,10 @@ var LayoutMeasurementController = function (param) {
35
35
  };
36
36
  var globalIntersectionObserver = null;
37
37
  var strategy = "async";
38
+ var resumeLayoutLoop;
38
39
  function setOnLayoutStrategy(state) {
39
40
  strategy = state;
41
+ resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
40
42
  }
41
43
  var NodeRectCache = /* @__PURE__ */new WeakMap();
42
44
  var avoidUpdates = true;
@@ -69,20 +71,25 @@ function rectsEqual(a, b) {
69
71
  }
70
72
  if (ENABLE) {
71
73
  let ensureRectFetchObserver2 = 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
- };
74
+ if (rectFetchObserver) return rectFetchObserver;
75
+ rectFetchObserver = new IntersectionObserver(function (entries) {
76
+ lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
77
+ for (var i = 0; i < entries.length; i++) BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
78
+ if (process.env.NODE_ENV === "development" && isDebugLayout() && lastCallbackDelay > 50) console.warn("[onLayout-io-delay]", lastCallbackDelay + "ms", entries.length, "entries");
79
+ if (rectFetchResolve) {
80
+ rectFetchResolve(true);
81
+ rectFetchResolve = null;
82
+ }
83
+ }, {
84
+ threshold: 0
85
+ });
86
+ return rectFetchObserver;
87
+ },
88
+ scheduleLayoutFrame2 = function () {
89
+ if (frameScheduled || strategy === "off" || Nodes.size === 0 || document.hidden) return;
90
+ frameScheduled = true;
91
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
92
+ };
86
93
  var BoundingRects = /* @__PURE__ */new WeakMap();
87
94
  var rectFetchObserver = null;
88
95
  var rectFetchResolve = null;
@@ -110,9 +117,11 @@ if (ENABLE) {
110
117
  var MAX_SKIP_FRAMES = 20;
111
118
  var skipFrames = BASE_SKIP_FRAMES;
112
119
  var frameCount = 0;
120
+ var frameScheduled = false;
113
121
  async function layoutOnAnimationFrame() {
114
122
  if (frameCount++ % skipFrames !== 0) {
115
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
123
+ frameScheduled = false;
124
+ scheduleLayoutFrame2();
116
125
  return;
117
126
  }
118
127
  if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
@@ -194,9 +203,12 @@ if (ENABLE) {
194
203
  for (var i2 = 0; i2 < visibleNodes.length; i2++) updateLayoutIfChanged(visibleNodes[i2]);
195
204
  }
196
205
  }
197
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
206
+ frameScheduled = false;
207
+ scheduleLayoutFrame2();
198
208
  }
199
- layoutOnAnimationFrame();
209
+ resumeLayoutLoop = scheduleLayoutFrame2;
210
+ document.addEventListener("visibilitychange", scheduleLayoutFrame2);
211
+ scheduleLayoutFrame2();
200
212
  }
201
213
  var getElementLayoutEvent = function (nodeRect, parentRect, node) {
202
214
  return {
@@ -266,6 +278,7 @@ function observeLayoutNode(node, disableKey) {
266
278
  globalIntersectionObserver.observe(node);
267
279
  IntersectionState.set(node, true);
268
280
  }
281
+ resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
269
282
  }
270
283
  function registerLayoutNode(node, onChange, disableKey) {
271
284
  LayoutHandlers.set(node, onChange);
@@ -1 +1 @@
1
- {"version":3,"names":["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","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","getElementLayoutEvent","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","registerLayoutNode","onChange","PrevHostNode","emitLayoutSync","useElementLayout","ref","_ref_current","ensureWebElement","current","host","_ref_current2","nextNode","prevNode","node2","totalNodes","size","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["index.native.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nimport { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { createContext, useContext, useId } from \"react\";\n\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__ */ createContext(\"\");\nvar ENABLE = false;\nvar LayoutMeasurementController = function(param) {\n\tvar { disable, children } = param;\n\tvar id = useId();\n\tuseIsomorphicLayoutEffect(function() {\n\t\tDisableLayoutContextValues[id] = disable;\n\t}, [disable, id]);\n\treturn /* @__PURE__ */ 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 emitLayoutSync(node) {\n\tvar onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tvar parentNode = node.parentElement;\n\tif (!parentNode) return;\n\tvar nodeRect = node.getBoundingClientRect();\n\tvar parentRect = parentNode.getBoundingClientRect();\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tonLayout(getElementLayoutEvent(nodeRect, parentRect, node));\n}\nfunction useElementLayout(ref, onLayout) {\n\tvar _ref_current;\n\tvar disableKey = 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\tuseIsomorphicLayoutEffect(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\temitLayoutSync(nextNode);\n\t});\n\tuseIsomorphicLayoutEffect(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\nexport { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["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","resumeLayoutLoop","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","ensureRectFetchObserver2","rectFetchObserver","lastCallbackDelay","Math","round","performance","now","rectFetchStartTime","BoundingRects","boundingClientRect","NODE_ENV","console","warn","rectFetchResolve","scheduleLayoutFrame2","frameScheduled","size","document","hidden","rAF","layoutOnAnimationFrame","setTimeout","updateLayoutIfChanged","parentNode","parentElement","nodeRect","parentRect","getBoundingClientRect","emitLayoutIfChanged","requestAnimationFrame","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","BASE_SKIP_FRAMES","MAX_SKIP_FRAMES","skipFrames","frameCount","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","addEventListener","getElementLayoutEvent","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","registerLayoutNode","onChange","PrevHostNode","emitLayoutSync","useElementLayout","ref","_ref_current","ensureWebElement","current","host","_ref_current2","nextNode","prevNode","node2","totalNodes","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["index.native.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nimport { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { createContext, useContext, useId } from \"react\";\n\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__ */ createContext(\"\");\nvar ENABLE = false;\nvar LayoutMeasurementController = function(param) {\n\tvar { disable, children } = param;\n\tvar id = useId();\n\tuseIsomorphicLayoutEffect(function() {\n\t\tDisableLayoutContextValues[id] = disable;\n\t}, [disable, id]);\n\treturn /* @__PURE__ */ jsx(DisableLayoutContextKey.Provider, {\n\t\tvalue: id,\n\t\tchildren\n\t});\n};\nvar globalIntersectionObserver = null;\nvar strategy = \"async\";\nvar resumeLayoutLoop;\nfunction setOnLayoutStrategy(state) {\n\tstrategy = state;\n\tresumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();\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}, scheduleLayoutFrame2 = function() {\n\t\tif (frameScheduled || strategy === \"off\" || Nodes.size === 0 || document.hidden) return;\n\t\tframeScheduled = true;\n\t\trAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);\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\tvar frameScheduled = false;\n\tasync function layoutOnAnimationFrame() {\n\t\tif (frameCount++ % skipFrames !== 0) {\n\t\t\tframeScheduled = false;\n\t\t\tscheduleLayoutFrame2();\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\tframeScheduled = false;\n\t\tscheduleLayoutFrame2();\n\t}\n\tresumeLayoutLoop = scheduleLayoutFrame2;\n\tdocument.addEventListener(\"visibilitychange\", scheduleLayoutFrame2);\n\tscheduleLayoutFrame2();\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\tresumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();\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 emitLayoutSync(node) {\n\tvar onLayout = LayoutHandlers.get(node);\n\tif (typeof onLayout !== \"function\") return;\n\tvar parentNode = node.parentElement;\n\tif (!parentNode) return;\n\tvar nodeRect = node.getBoundingClientRect();\n\tvar parentRect = parentNode.getBoundingClientRect();\n\tNodeRectCache.set(node, nodeRect);\n\tNodeRectCache.set(parentNode, parentRect);\n\tonLayout(getElementLayoutEvent(nodeRect, parentRect, node));\n}\nfunction useElementLayout(ref, onLayout) {\n\tvar _ref_current;\n\tvar disableKey = 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\tuseIsomorphicLayoutEffect(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\temitLayoutSync(nextNode);\n\t});\n\tuseIsomorphicLayoutEffect(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\nexport { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/use-element-layout",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
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.7.2",
38
- "@tamagui/is-equal-shallow": "2.7.2"
37
+ "@tamagui/constants": "2.7.3",
38
+ "@tamagui/is-equal-shallow": "2.7.3"
39
39
  },
40
40
  "devDependencies": {
41
- "@tamagui/build": "2.7.2",
41
+ "@tamagui/build": "2.7.3",
42
42
  "react": ">=19"
43
43
  },
44
44
  "peerDependencies": {
package/src/index.tsx CHANGED
@@ -65,8 +65,14 @@ type LayoutMeasurementStrategy = 'off' | 'sync' | 'async'
65
65
 
66
66
  let strategy: LayoutMeasurementStrategy = 'async'
67
67
 
68
+ // the measurement loop parks itself whenever it provably has nothing to do: no
69
+ // registered nodes, a hidden document, or measurement turned off. these are the
70
+ // only three ways work can reappear, so each one restarts it.
71
+ let resumeLayoutLoop: (() => void) | undefined
72
+
68
73
  export function setOnLayoutStrategy(state: LayoutMeasurementStrategy): void {
69
74
  strategy = state
75
+ resumeLayoutLoop?.()
70
76
  }
71
77
 
72
78
  export type LayoutValue = {
@@ -209,10 +215,23 @@ if (ENABLE) {
209
215
  let skipFrames = BASE_SKIP_FRAMES
210
216
  let frameCount = 0
211
217
 
218
+ // stays true across the await below so a node registering mid-cycle cannot
219
+ // start a second concurrent loop
220
+ let frameScheduled = false
221
+
222
+ function scheduleLayoutFrame() {
223
+ if (frameScheduled || strategy === 'off' || Nodes.size === 0 || document.hidden) {
224
+ return
225
+ }
226
+ frameScheduled = true
227
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16)
228
+ }
229
+
212
230
  async function layoutOnAnimationFrame() {
213
231
  // skip frames based on adaptive rate
214
232
  if (frameCount++ % skipFrames !== 0) {
215
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16)
233
+ frameScheduled = false
234
+ scheduleLayoutFrame()
216
235
  return
217
236
  }
218
237
 
@@ -283,10 +302,13 @@ if (ENABLE) {
283
302
  }
284
303
 
285
304
  // schedule next frame
286
- rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16)
305
+ frameScheduled = false
306
+ scheduleLayoutFrame()
287
307
  }
288
308
 
289
- layoutOnAnimationFrame()
309
+ resumeLayoutLoop = scheduleLayoutFrame
310
+ document.addEventListener('visibilitychange', scheduleLayoutFrame)
311
+ scheduleLayoutFrame()
290
312
  }
291
313
 
292
314
  export const getElementLayoutEvent = (
@@ -388,6 +410,7 @@ function observeLayoutNode(node: HTMLElement, disableKey?: string) {
388
410
  globalIntersectionObserver.observe(node)
389
411
  IntersectionState.set(node, true)
390
412
  }
413
+ resumeLayoutLoop?.()
391
414
  }
392
415
 
393
416
  // register an arbitrary DOM element into the measurement loop without React lifecycle
@@ -1,11 +1,11 @@
1
1
  {
2
- "mappings": "AACA,cAAgD,gBAAgB,iBAAiB;AAmCjF,OAAO,cAAM,8BAA+B,EAC1C,SACA,YACC;CACD;CACA,UAAU;MACR;KAiBC,+BAA+B;CAClC;;KAGG,4BAA4B,QAAQ,SAAS;AAIlD,OAAO,iBAAS,oBAAoB,OAAO;AAI3C,YAAY,cAAc;CACxB;CACA;CACA;CACA;CACA;CACA;;AAGF,YAAY,cAAc;CACxB,aAAa;EACX,QAAQ;EACR;;CAEF;;AASF,OAAO,iBAAS;AAqMhB,OAAO,cAAM,wBACX,UAAU,iBACV,YAAY,iBACZ,OAAO,gBACN;AAkGH,OAAO,iBAAS,mBACd,MAAM,aACN,sBACA;AAqCF,OAAO,iBAAS,iBACd,KAAK,UAAU,+BACf,aAAa,GAAG;AAgElB,OAAO,cAAM,6BACX,MAAM,uBACL,QAAQ,kBAAkB;AAiB7B,OAAO,cAAM,cACX,MAAM,aACN,aAAa,uBACZ,eAAe;KAcb,qBAAqB,WAAW,WAAW,eAAe;KAE1D,aACH,WACA,WACA,eACA,gBACA,eACA;AAGF,OAAO,cAAM,UACX,MAAM,aACN,UAAU,cACT,QAAQ;AAWX,OAAO,iBAAS,cACd,MAAM,eACJ,UAAU,cAAc,QAAQ;KAI/B,eAAe;CAAE;CAAe;CAAe;CAAe;;AAEnE,OAAO,cAAM,kBACX,MAAM,aACN,UAAU,sBACT,QAAQ;AAQX,OAAO,cAAM,wBACX,MAAM,kBACH,UAAU,sBAAsB,QAAQ;AAI7C,OAAO,cAAM,gBACX,MAAM,aACN,cAAc,aACd,UAAU,cACT,QAAQ;AAQX,OAAO,iBAAS,oBACd,MAAM,eACJ,YAAY,aAAa,UAAU,cAAc,QAAQ",
2
+ "mappings": "AACA,cAAgD,gBAAgB,iBAAiB;AAmCjF,OAAO,cAAM,8BAA+B,EAC1C,SACA,YACC;CACD;CACA,UAAU;MACR;KAiBC,+BAA+B;CAClC;;KAGG,4BAA4B,QAAQ,SAAS;AASlD,OAAO,iBAAS,oBAAoB,OAAO;AAK3C,YAAY,cAAc;CACxB;CACA;CACA;CACA;CACA;CACA;;AAGF,YAAY,cAAc;CACxB,aAAa;EACX,QAAQ;EACR;;CAEF;;AASF,OAAO,iBAAS;AAqNhB,OAAO,cAAM,wBACX,UAAU,iBACV,YAAY,iBACZ,OAAO,gBACN;AAmGH,OAAO,iBAAS,mBACd,MAAM,aACN,sBACA;AAqCF,OAAO,iBAAS,iBACd,KAAK,UAAU,+BACf,aAAa,GAAG;AAgElB,OAAO,cAAM,6BACX,MAAM,uBACL,QAAQ,kBAAkB;AAiB7B,OAAO,cAAM,cACX,MAAM,aACN,aAAa,uBACZ,eAAe;KAcb,qBAAqB,WAAW,WAAW,eAAe;KAE1D,aACH,WACA,WACA,eACA,gBACA,eACA;AAGF,OAAO,cAAM,UACX,MAAM,aACN,UAAU,cACT,QAAQ;AAWX,OAAO,iBAAS,cACd,MAAM,eACJ,UAAU,cAAc,QAAQ;KAI/B,eAAe;CAAE;CAAe;CAAe;CAAe;;AAEnE,OAAO,cAAM,kBACX,MAAM,aACN,UAAU,sBACT,QAAQ;AAQX,OAAO,cAAM,wBACX,MAAM,kBACH,UAAU,sBAAsB,QAAQ;AAI7C,OAAO,cAAM,gBACX,MAAM,aACN,cAAc,aACd,UAAU,cACT,QAAQ;AAQX,OAAO,iBAAS,oBACd,MAAM,eACJ,YAAY,aAAa,UAAU,cAAc,QAAQ",
3
3
  "names": [],
4
4
  "sources": [
5
5
  "src/index.tsx"
6
6
  ],
7
7
  "version": 3,
8
8
  "sourcesContent": [
9
- "import { useIsomorphicLayoutEffect } from '@tamagui/constants'\nimport { createContext, useContext, useId, type ReactNode, type RefObject } from 'react'\n\nconst LayoutHandlers = new WeakMap<HTMLElement, Function>()\nconst LayoutDisableKey = new WeakMap<HTMLElement, string>()\nconst Nodes = new Set<HTMLElement>()\nconst IntersectionState = new WeakMap<HTMLElement, boolean>()\n\n// feature flag to enable pre-transform dimension reporting (matches RN behavior)\n// can be set via env var at build time or runtime global for testing\n// see: https://github.com/tamagui/tamagui/pull/2329\nconst usePretransformDimensions = () =>\n (globalThis as any).__TAMAGUI_ONLAYOUT_PRETRANSFORM === true ||\n process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === '1'\n\nlet _debugLayout: boolean | undefined\n\nfunction isDebugLayout() {\n if (_debugLayout === undefined) {\n _debugLayout =\n typeof window !== 'undefined' &&\n new URLSearchParams(window.location.search).has('__tamaDebugLayout')\n }\n return _debugLayout\n}\n\n// separating to avoid all re-rendering\nconst DisableLayoutContextValues: Record<string, boolean> = {}\nconst DisableLayoutContextKey = createContext<string>('')\n\nconst ENABLE =\n process.env.TAMAGUI_TARGET === 'web' && typeof IntersectionObserver !== 'undefined'\n\n// internal testing - advanced helper to turn off layout measurement for extra performance\n// TODO document!\n// TODO could add frame skip control here\nexport const LayoutMeasurementController = ({\n disable,\n children,\n}: {\n disable: boolean\n children: ReactNode\n}): ReactNode => {\n const id = useId()\n\n useIsomorphicLayoutEffect(() => {\n DisableLayoutContextValues[id] = disable\n }, [disable, id])\n\n return (\n <DisableLayoutContextKey.Provider value={id}>\n {children}\n </DisableLayoutContextKey.Provider>\n )\n}\n\n// Single persistent IntersectionObserver for visibility tracking\nlet globalIntersectionObserver: IntersectionObserver | null = null\n\ntype TamaguiComponentStatePartial = {\n host?: any\n}\n\ntype LayoutMeasurementStrategy = 'off' | 'sync' | 'async'\n\nlet strategy: LayoutMeasurementStrategy = 'async'\n\nexport function setOnLayoutStrategy(state: LayoutMeasurementStrategy): void {\n strategy = state\n}\n\nexport type LayoutValue = {\n x: number\n y: number\n width: number\n height: number\n pageX: number\n pageY: number\n}\n\nexport type LayoutEvent = {\n nativeEvent: {\n layout: LayoutValue\n target: any\n }\n timeStamp: number\n}\n\nconst NodeRectCache = new WeakMap<HTMLElement, DOMRectReadOnly>()\n\n// prevent thrashing during first hydration (somewhat, streaming gets trickier)\nlet avoidUpdates = true\nconst queuedUpdates = new Map<HTMLElement, Function>()\n\nexport function enable(): void {\n if (avoidUpdates) {\n avoidUpdates = false\n if (queuedUpdates) {\n queuedUpdates.forEach((cb) => cb())\n queuedUpdates.clear()\n }\n }\n}\n\nfunction startGlobalObservers() {\n if (!ENABLE || globalIntersectionObserver) return\n\n globalIntersectionObserver = new IntersectionObserver(\n (entries) => {\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i]\n const node = entry.target as HTMLElement\n if (IntersectionState.get(node) !== entry.isIntersecting) {\n IntersectionState.set(node, entry.isIntersecting)\n }\n }\n },\n {\n threshold: 0,\n }\n )\n}\n\n// optimization: inline rect comparison to avoid function call overhead on hot path\nfunction rectsEqual(a: DOMRectReadOnly, b: DOMRectReadOnly): boolean {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height\n}\n\nif (ENABLE) {\n const BoundingRects = new WeakMap<Element, DOMRectReadOnly>()\n\n // optimization: persistent IO for rect fetching, reused across cycles\n let rectFetchObserver: IntersectionObserver | null = null\n let rectFetchResolve: ((value: boolean) => void) | null = null\n let rectFetchStartTime = 0\n let lastCallbackDelay = 0\n\n function ensureRectFetchObserver() {\n if (rectFetchObserver) return rectFetchObserver\n\n rectFetchObserver = new IntersectionObserver(\n (entries) => {\n lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime)\n\n // store all rects\n for (let i = 0; i < entries.length; i++) {\n BoundingRects.set(entries[i].target, entries[i].boundingClientRect)\n }\n\n if (\n process.env.NODE_ENV === 'development' &&\n isDebugLayout() &&\n lastCallbackDelay > 50\n ) {\n console.warn(\n '[onLayout-io-delay]',\n lastCallbackDelay + 'ms',\n entries.length,\n 'entries'\n )\n }\n\n if (rectFetchResolve) {\n rectFetchResolve(true)\n rectFetchResolve = null\n }\n },\n {\n threshold: 0,\n }\n )\n\n return rectFetchObserver\n }\n\n async function updateLayoutIfChanged(node: HTMLElement) {\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n\n const parentNode = node.parentElement\n if (!parentNode) return\n\n let nodeRect: DOMRectReadOnly | undefined\n let parentRect: DOMRectReadOnly | undefined\n\n // respect the strategy contract\n if (strategy === 'async') {\n nodeRect = BoundingRects.get(node)\n parentRect = BoundingRects.get(parentNode)\n\n if (!nodeRect || !parentRect) {\n return\n }\n } else {\n nodeRect = node.getBoundingClientRect()\n parentRect = parentNode.getBoundingClientRect()\n }\n\n emitLayoutIfChanged(node, parentNode, nodeRect, parentRect)\n }\n\n const rAF =\n typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame : undefined\n\n // adaptive frame skipping with backoff\n const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP\n const BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10\n const MAX_SKIP_FRAMES = 20\n let skipFrames = BASE_SKIP_FRAMES\n let frameCount = 0\n\n async function layoutOnAnimationFrame() {\n // skip frames based on adaptive rate\n if (frameCount++ % skipFrames !== 0) {\n rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16)\n return\n }\n\n // reset frame count to avoid overflow\n if (frameCount >= Number.MAX_SAFE_INTEGER) {\n frameCount = 0\n }\n\n if (strategy !== 'off') {\n const visibleNodes: HTMLElement[] = []\n // optimization: deduplicate parent observations\n const parentsToObserve = new Set<HTMLElement>()\n\n // collect visible nodes and their unique parents\n for (const node of Nodes) {\n const parentElement = node.parentElement\n if (!(parentElement instanceof HTMLElement)) {\n cleanupNode(node)\n continue\n }\n const disableKey = LayoutDisableKey.get(node)\n if (disableKey && DisableLayoutContextValues[disableKey] === true) continue\n if (IntersectionState.get(node) === false) continue\n\n visibleNodes.push(node)\n parentsToObserve.add(parentElement)\n }\n\n if (visibleNodes.length > 0) {\n const io = ensureRectFetchObserver()\n rectFetchStartTime = performance.now()\n\n // observe all nodes\n for (let i = 0; i < visibleNodes.length; i++) {\n io.observe(visibleNodes[i])\n }\n // optimization: observe unique parents only (not N times for N children)\n for (const parent of parentsToObserve) {\n io.observe(parent)\n }\n\n // wait for callback\n await new Promise<boolean>((res) => {\n rectFetchResolve = res\n })\n\n // unobserve all to reset for next cycle\n for (let i = 0; i < visibleNodes.length; i++) {\n io.unobserve(visibleNodes[i])\n }\n for (const parent of parentsToObserve) {\n io.unobserve(parent)\n }\n\n // adaptive backoff: if IO was slow, skip more frames next cycle\n if (lastCallbackDelay > 50) {\n skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES)\n } else if (lastCallbackDelay < 20) {\n // recover back to base rate when things are fast\n skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES)\n }\n\n // process updates\n for (let i = 0; i < visibleNodes.length; i++) {\n updateLayoutIfChanged(visibleNodes[i])\n }\n }\n }\n\n // schedule next frame\n rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16)\n }\n\n layoutOnAnimationFrame()\n}\n\nexport const getElementLayoutEvent = (\n nodeRect: DOMRectReadOnly,\n parentRect: DOMRectReadOnly,\n node?: HTMLElement\n): LayoutEvent => {\n return {\n nativeEvent: {\n layout: getRelativeDimensions(nodeRect, parentRect, node),\n target: nodeRect,\n },\n timeStamp: Date.now(),\n }\n}\n\n/**\n * get pre-transform dimensions for a node.\n * uses offsetWidth/offsetHeight which report CSS layout dimensions\n * unaffected by transforms - this matches React Native's onLayout behavior.\n *\n * see: https://github.com/tamagui/tamagui/pull/2329\n */\nconst getPreTransformDimensions = (\n node: HTMLElement\n): { width: number; height: number } => {\n return {\n width: node.offsetWidth,\n height: node.offsetHeight,\n }\n}\n\nconst getRelativeDimensions = (\n a: DOMRectReadOnly,\n b: DOMRectReadOnly,\n aNode?: HTMLElement\n) => {\n const { left, top } = a\n const x = left - b.left\n const y = top - b.top\n\n // get pre-transform dimensions when flag is enabled and node is available\n const { width, height } =\n usePretransformDimensions() && aNode\n ? getPreTransformDimensions(aNode)\n : { width: a.width, height: a.height }\n\n return { x, y, width, height, pageX: a.left, pageY: a.top }\n}\n\nfunction emitLayoutIfChanged(\n node: HTMLElement,\n parentNode: HTMLElement,\n nodeRect: DOMRectReadOnly,\n parentRect: DOMRectReadOnly\n) {\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n\n const cachedRect = NodeRectCache.get(node)\n const cachedParentRect = NodeRectCache.get(parentNode)\n\n const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect)\n const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect)\n\n if (!nodeChanged && !parentChanged) return\n\n NodeRectCache.set(node, nodeRect)\n NodeRectCache.set(parentNode, parentRect)\n\n const event = getElementLayoutEvent(nodeRect, parentRect, node)\n\n if (process.env.NODE_ENV === 'development' && isDebugLayout()) {\n console.log('[useElementLayout] change', {\n tag: node.tagName,\n id: node.id || undefined,\n className: (node.className || '').slice(0, 60) || undefined,\n layout: event.nativeEvent.layout,\n first: !cachedRect,\n })\n }\n\n if (avoidUpdates) {\n queuedUpdates.set(node, () => onLayout(event))\n } else {\n onLayout(event)\n }\n}\n\nfunction observeLayoutNode(node: HTMLElement, disableKey?: string) {\n Nodes.add(node)\n if (disableKey) {\n LayoutDisableKey.set(node, disableKey)\n } else {\n LayoutDisableKey.delete(node)\n }\n startGlobalObservers()\n if (globalIntersectionObserver) {\n globalIntersectionObserver.observe(node)\n IntersectionState.set(node, true)\n }\n}\n\n// register an arbitrary DOM element into the measurement loop without React lifecycle\nexport function registerLayoutNode(\n node: HTMLElement,\n onChange: () => void,\n disableKey?: string\n): () => void {\n LayoutHandlers.set(node, onChange)\n observeLayoutNode(node, disableKey)\n return () => cleanupNode(node)\n}\n\nfunction cleanupNode(node: HTMLElement) {\n Nodes.delete(node)\n LayoutHandlers.delete(node)\n LayoutDisableKey.delete(node)\n NodeRectCache.delete(node)\n IntersectionState.delete(node)\n if (globalIntersectionObserver) {\n globalIntersectionObserver.unobserve(node)\n }\n}\n\nconst PrevHostNode = new WeakMap<object, HTMLElement | undefined>()\n\n// spec: onLayout fires one synchronous initial event on mount and on host swap\n// (RN parity, and before-paint so consumers can position without flicker).\n// bypasses the avoidUpdates queue on purpose; seeds the rect cache so the\n// measurement loop doesn't re-emit an identical event a frame later.\nfunction emitLayoutSync(node: HTMLElement) {\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n const parentNode = node.parentElement\n if (!parentNode) return\n\n const nodeRect = node.getBoundingClientRect()\n const parentRect = parentNode.getBoundingClientRect()\n NodeRectCache.set(node, nodeRect)\n NodeRectCache.set(parentNode, parentRect)\n onLayout(getElementLayoutEvent(nodeRect, parentRect, node))\n}\n\nexport function useElementLayout(\n ref: RefObject<TamaguiComponentStatePartial>,\n onLayout?: ((e: LayoutEvent) => void) | null\n): void {\n const disableKey = useContext(DisableLayoutContextKey)\n\n // keep handlers up to date so polling always calls the latest callback\n const node = ensureWebElement(ref.current?.host)\n if (node && onLayout) {\n LayoutHandlers.set(node, onLayout)\n LayoutDisableKey.set(node, disableKey)\n }\n\n // detect mounts + host swaps after commit and fire the immediate sync layout event\n useIsomorphicLayoutEffect(() => {\n if (!onLayout) return\n const nextNode = ensureWebElement(ref.current?.host)\n const prevNode = PrevHostNode.get(ref)\n if (nextNode === prevNode) return\n\n if (prevNode) cleanupNode(prevNode)\n PrevHostNode.set(ref, nextNode)\n if (!nextNode) return\n\n LayoutHandlers.set(nextNode, onLayout)\n observeLayoutNode(nextNode, disableKey)\n emitLayoutSync(nextNode)\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!onLayout) return\n const node = ref.current?.host\n if (!node) return\n\n LayoutHandlers.set(node, onLayout)\n observeLayoutNode(node, disableKey)\n\n if (process.env.NODE_ENV === 'development' && isDebugLayout()) {\n console.log('[useElementLayout] register', {\n tag: node.tagName,\n id: node.id || undefined,\n className: (node.className || '').slice(0, 60) || undefined,\n totalNodes: Nodes.size,\n })\n }\n\n return () => {\n cleanupNode(node)\n\n // also clean up any node from a mid-lifecycle host swap\n const swappedNode = PrevHostNode.get(ref)\n if (swappedNode && swappedNode !== node) {\n cleanupNode(swappedNode)\n }\n PrevHostNode.delete(ref)\n }\n }, [ref, !!onLayout])\n}\n\nfunction ensureWebElement<X>(x: X): HTMLElement | undefined {\n if (typeof HTMLElement === 'undefined') {\n return undefined\n }\n return x instanceof HTMLElement ? x : undefined\n}\n\nexport const getBoundingClientRectAsync = (\n node: HTMLElement | null\n): Promise<DOMRectReadOnly | false> => {\n return new Promise<DOMRectReadOnly | false>((res) => {\n if (!node || node.nodeType !== 1) return res(false)\n\n const io = new IntersectionObserver(\n (entries) => {\n io.disconnect()\n return res(entries[0].boundingClientRect)\n },\n {\n threshold: 0,\n }\n )\n io.observe(node)\n })\n}\n\nexport const measureNode = async (\n node: HTMLElement,\n relativeTo?: HTMLElement | null\n): Promise<null | LayoutValue> => {\n const relativeNode = relativeTo || node?.parentElement\n if (relativeNode instanceof HTMLElement) {\n const [nodeDim, relativeNodeDim] = await Promise.all([\n getBoundingClientRectAsync(node),\n getBoundingClientRectAsync(relativeNode),\n ])\n if (relativeNodeDim && nodeDim) {\n return getRelativeDimensions(nodeDim, relativeNodeDim, node)\n }\n }\n return null\n}\n\ntype MeasureInWindowCb = (x: number, y: number, width: number, height: number) => void\n\ntype MeasureCb = (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n) => void\n\nexport const measure = async (\n node: HTMLElement,\n callback: MeasureCb\n): Promise<LayoutValue | null> => {\n const out = await measureNode(\n node,\n node.parentNode instanceof HTMLElement ? node.parentNode : null\n )\n if (out) {\n callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY)\n }\n return out\n}\n\nexport function createMeasure(\n node: HTMLElement\n): (callback: MeasureCb) => Promise<LayoutValue | null> {\n return (callback) => measure(node, callback)\n}\n\ntype WindowLayout = { pageX: number; pageY: number; width: number; height: number }\n\nexport const measureInWindow = async (\n node: HTMLElement,\n callback: MeasureInWindowCb\n): Promise<WindowLayout | null> => {\n const out = await measureNode(node, null)\n if (out) {\n callback?.(out.pageX, out.pageY, out.width, out.height)\n }\n return out\n}\n\nexport const createMeasureInWindow = (\n node: HTMLElement\n): ((callback: MeasureInWindowCb) => Promise<WindowLayout | null>) => {\n return (callback) => measureInWindow(node, callback)\n}\n\nexport const measureLayout = async (\n node: HTMLElement,\n relativeNode: HTMLElement,\n callback: MeasureCb\n): Promise<LayoutValue | null> => {\n const out = await measureNode(node, relativeNode)\n if (out) {\n callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY)\n }\n return out\n}\n\nexport function createMeasureLayout(\n node: HTMLElement\n): (relativeTo: HTMLElement, callback: MeasureCb) => Promise<LayoutValue | null> {\n return (relativeTo, callback) => measureLayout(node, relativeTo, callback)\n}\n"
9
+ "import { useIsomorphicLayoutEffect } from '@tamagui/constants'\nimport { createContext, useContext, useId, type ReactNode, type RefObject } from 'react'\n\nconst LayoutHandlers = new WeakMap<HTMLElement, Function>()\nconst LayoutDisableKey = new WeakMap<HTMLElement, string>()\nconst Nodes = new Set<HTMLElement>()\nconst IntersectionState = new WeakMap<HTMLElement, boolean>()\n\n// feature flag to enable pre-transform dimension reporting (matches RN behavior)\n// can be set via env var at build time or runtime global for testing\n// see: https://github.com/tamagui/tamagui/pull/2329\nconst usePretransformDimensions = () =>\n (globalThis as any).__TAMAGUI_ONLAYOUT_PRETRANSFORM === true ||\n process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === '1'\n\nlet _debugLayout: boolean | undefined\n\nfunction isDebugLayout() {\n if (_debugLayout === undefined) {\n _debugLayout =\n typeof window !== 'undefined' &&\n new URLSearchParams(window.location.search).has('__tamaDebugLayout')\n }\n return _debugLayout\n}\n\n// separating to avoid all re-rendering\nconst DisableLayoutContextValues: Record<string, boolean> = {}\nconst DisableLayoutContextKey = createContext<string>('')\n\nconst ENABLE =\n process.env.TAMAGUI_TARGET === 'web' && typeof IntersectionObserver !== 'undefined'\n\n// internal testing - advanced helper to turn off layout measurement for extra performance\n// TODO document!\n// TODO could add frame skip control here\nexport const LayoutMeasurementController = ({\n disable,\n children,\n}: {\n disable: boolean\n children: ReactNode\n}): ReactNode => {\n const id = useId()\n\n useIsomorphicLayoutEffect(() => {\n DisableLayoutContextValues[id] = disable\n }, [disable, id])\n\n return (\n <DisableLayoutContextKey.Provider value={id}>\n {children}\n </DisableLayoutContextKey.Provider>\n )\n}\n\n// Single persistent IntersectionObserver for visibility tracking\nlet globalIntersectionObserver: IntersectionObserver | null = null\n\ntype TamaguiComponentStatePartial = {\n host?: any\n}\n\ntype LayoutMeasurementStrategy = 'off' | 'sync' | 'async'\n\nlet strategy: LayoutMeasurementStrategy = 'async'\n\n// the measurement loop parks itself whenever it provably has nothing to do: no\n// registered nodes, a hidden document, or measurement turned off. these are the\n// only three ways work can reappear, so each one restarts it.\nlet resumeLayoutLoop: (() => void) | undefined\n\nexport function setOnLayoutStrategy(state: LayoutMeasurementStrategy): void {\n strategy = state\n resumeLayoutLoop?.()\n}\n\nexport type LayoutValue = {\n x: number\n y: number\n width: number\n height: number\n pageX: number\n pageY: number\n}\n\nexport type LayoutEvent = {\n nativeEvent: {\n layout: LayoutValue\n target: any\n }\n timeStamp: number\n}\n\nconst NodeRectCache = new WeakMap<HTMLElement, DOMRectReadOnly>()\n\n// prevent thrashing during first hydration (somewhat, streaming gets trickier)\nlet avoidUpdates = true\nconst queuedUpdates = new Map<HTMLElement, Function>()\n\nexport function enable(): void {\n if (avoidUpdates) {\n avoidUpdates = false\n if (queuedUpdates) {\n queuedUpdates.forEach((cb) => cb())\n queuedUpdates.clear()\n }\n }\n}\n\nfunction startGlobalObservers() {\n if (!ENABLE || globalIntersectionObserver) return\n\n globalIntersectionObserver = new IntersectionObserver(\n (entries) => {\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i]\n const node = entry.target as HTMLElement\n if (IntersectionState.get(node) !== entry.isIntersecting) {\n IntersectionState.set(node, entry.isIntersecting)\n }\n }\n },\n {\n threshold: 0,\n }\n )\n}\n\n// optimization: inline rect comparison to avoid function call overhead on hot path\nfunction rectsEqual(a: DOMRectReadOnly, b: DOMRectReadOnly): boolean {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height\n}\n\nif (ENABLE) {\n const BoundingRects = new WeakMap<Element, DOMRectReadOnly>()\n\n // optimization: persistent IO for rect fetching, reused across cycles\n let rectFetchObserver: IntersectionObserver | null = null\n let rectFetchResolve: ((value: boolean) => void) | null = null\n let rectFetchStartTime = 0\n let lastCallbackDelay = 0\n\n function ensureRectFetchObserver() {\n if (rectFetchObserver) return rectFetchObserver\n\n rectFetchObserver = new IntersectionObserver(\n (entries) => {\n lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime)\n\n // store all rects\n for (let i = 0; i < entries.length; i++) {\n BoundingRects.set(entries[i].target, entries[i].boundingClientRect)\n }\n\n if (\n process.env.NODE_ENV === 'development' &&\n isDebugLayout() &&\n lastCallbackDelay > 50\n ) {\n console.warn(\n '[onLayout-io-delay]',\n lastCallbackDelay + 'ms',\n entries.length,\n 'entries'\n )\n }\n\n if (rectFetchResolve) {\n rectFetchResolve(true)\n rectFetchResolve = null\n }\n },\n {\n threshold: 0,\n }\n )\n\n return rectFetchObserver\n }\n\n async function updateLayoutIfChanged(node: HTMLElement) {\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n\n const parentNode = node.parentElement\n if (!parentNode) return\n\n let nodeRect: DOMRectReadOnly | undefined\n let parentRect: DOMRectReadOnly | undefined\n\n // respect the strategy contract\n if (strategy === 'async') {\n nodeRect = BoundingRects.get(node)\n parentRect = BoundingRects.get(parentNode)\n\n if (!nodeRect || !parentRect) {\n return\n }\n } else {\n nodeRect = node.getBoundingClientRect()\n parentRect = parentNode.getBoundingClientRect()\n }\n\n emitLayoutIfChanged(node, parentNode, nodeRect, parentRect)\n }\n\n const rAF =\n typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame : undefined\n\n // adaptive frame skipping with backoff\n const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP\n const BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10\n const MAX_SKIP_FRAMES = 20\n let skipFrames = BASE_SKIP_FRAMES\n let frameCount = 0\n\n // stays true across the await below so a node registering mid-cycle cannot\n // start a second concurrent loop\n let frameScheduled = false\n\n function scheduleLayoutFrame() {\n if (frameScheduled || strategy === 'off' || Nodes.size === 0 || document.hidden) {\n return\n }\n frameScheduled = true\n rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16)\n }\n\n async function layoutOnAnimationFrame() {\n // skip frames based on adaptive rate\n if (frameCount++ % skipFrames !== 0) {\n frameScheduled = false\n scheduleLayoutFrame()\n return\n }\n\n // reset frame count to avoid overflow\n if (frameCount >= Number.MAX_SAFE_INTEGER) {\n frameCount = 0\n }\n\n if (strategy !== 'off') {\n const visibleNodes: HTMLElement[] = []\n // optimization: deduplicate parent observations\n const parentsToObserve = new Set<HTMLElement>()\n\n // collect visible nodes and their unique parents\n for (const node of Nodes) {\n const parentElement = node.parentElement\n if (!(parentElement instanceof HTMLElement)) {\n cleanupNode(node)\n continue\n }\n const disableKey = LayoutDisableKey.get(node)\n if (disableKey && DisableLayoutContextValues[disableKey] === true) continue\n if (IntersectionState.get(node) === false) continue\n\n visibleNodes.push(node)\n parentsToObserve.add(parentElement)\n }\n\n if (visibleNodes.length > 0) {\n const io = ensureRectFetchObserver()\n rectFetchStartTime = performance.now()\n\n // observe all nodes\n for (let i = 0; i < visibleNodes.length; i++) {\n io.observe(visibleNodes[i])\n }\n // optimization: observe unique parents only (not N times for N children)\n for (const parent of parentsToObserve) {\n io.observe(parent)\n }\n\n // wait for callback\n await new Promise<boolean>((res) => {\n rectFetchResolve = res\n })\n\n // unobserve all to reset for next cycle\n for (let i = 0; i < visibleNodes.length; i++) {\n io.unobserve(visibleNodes[i])\n }\n for (const parent of parentsToObserve) {\n io.unobserve(parent)\n }\n\n // adaptive backoff: if IO was slow, skip more frames next cycle\n if (lastCallbackDelay > 50) {\n skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES)\n } else if (lastCallbackDelay < 20) {\n // recover back to base rate when things are fast\n skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES)\n }\n\n // process updates\n for (let i = 0; i < visibleNodes.length; i++) {\n updateLayoutIfChanged(visibleNodes[i])\n }\n }\n }\n\n // schedule next frame\n frameScheduled = false\n scheduleLayoutFrame()\n }\n\n resumeLayoutLoop = scheduleLayoutFrame\n document.addEventListener('visibilitychange', scheduleLayoutFrame)\n scheduleLayoutFrame()\n}\n\nexport const getElementLayoutEvent = (\n nodeRect: DOMRectReadOnly,\n parentRect: DOMRectReadOnly,\n node?: HTMLElement\n): LayoutEvent => {\n return {\n nativeEvent: {\n layout: getRelativeDimensions(nodeRect, parentRect, node),\n target: nodeRect,\n },\n timeStamp: Date.now(),\n }\n}\n\n/**\n * get pre-transform dimensions for a node.\n * uses offsetWidth/offsetHeight which report CSS layout dimensions\n * unaffected by transforms - this matches React Native's onLayout behavior.\n *\n * see: https://github.com/tamagui/tamagui/pull/2329\n */\nconst getPreTransformDimensions = (\n node: HTMLElement\n): { width: number; height: number } => {\n return {\n width: node.offsetWidth,\n height: node.offsetHeight,\n }\n}\n\nconst getRelativeDimensions = (\n a: DOMRectReadOnly,\n b: DOMRectReadOnly,\n aNode?: HTMLElement\n) => {\n const { left, top } = a\n const x = left - b.left\n const y = top - b.top\n\n // get pre-transform dimensions when flag is enabled and node is available\n const { width, height } =\n usePretransformDimensions() && aNode\n ? getPreTransformDimensions(aNode)\n : { width: a.width, height: a.height }\n\n return { x, y, width, height, pageX: a.left, pageY: a.top }\n}\n\nfunction emitLayoutIfChanged(\n node: HTMLElement,\n parentNode: HTMLElement,\n nodeRect: DOMRectReadOnly,\n parentRect: DOMRectReadOnly\n) {\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n\n const cachedRect = NodeRectCache.get(node)\n const cachedParentRect = NodeRectCache.get(parentNode)\n\n const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect)\n const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect)\n\n if (!nodeChanged && !parentChanged) return\n\n NodeRectCache.set(node, nodeRect)\n NodeRectCache.set(parentNode, parentRect)\n\n const event = getElementLayoutEvent(nodeRect, parentRect, node)\n\n if (process.env.NODE_ENV === 'development' && isDebugLayout()) {\n console.log('[useElementLayout] change', {\n tag: node.tagName,\n id: node.id || undefined,\n className: (node.className || '').slice(0, 60) || undefined,\n layout: event.nativeEvent.layout,\n first: !cachedRect,\n })\n }\n\n if (avoidUpdates) {\n queuedUpdates.set(node, () => onLayout(event))\n } else {\n onLayout(event)\n }\n}\n\nfunction observeLayoutNode(node: HTMLElement, disableKey?: string) {\n Nodes.add(node)\n if (disableKey) {\n LayoutDisableKey.set(node, disableKey)\n } else {\n LayoutDisableKey.delete(node)\n }\n startGlobalObservers()\n if (globalIntersectionObserver) {\n globalIntersectionObserver.observe(node)\n IntersectionState.set(node, true)\n }\n resumeLayoutLoop?.()\n}\n\n// register an arbitrary DOM element into the measurement loop without React lifecycle\nexport function registerLayoutNode(\n node: HTMLElement,\n onChange: () => void,\n disableKey?: string\n): () => void {\n LayoutHandlers.set(node, onChange)\n observeLayoutNode(node, disableKey)\n return () => cleanupNode(node)\n}\n\nfunction cleanupNode(node: HTMLElement) {\n Nodes.delete(node)\n LayoutHandlers.delete(node)\n LayoutDisableKey.delete(node)\n NodeRectCache.delete(node)\n IntersectionState.delete(node)\n if (globalIntersectionObserver) {\n globalIntersectionObserver.unobserve(node)\n }\n}\n\nconst PrevHostNode = new WeakMap<object, HTMLElement | undefined>()\n\n// spec: onLayout fires one synchronous initial event on mount and on host swap\n// (RN parity, and before-paint so consumers can position without flicker).\n// bypasses the avoidUpdates queue on purpose; seeds the rect cache so the\n// measurement loop doesn't re-emit an identical event a frame later.\nfunction emitLayoutSync(node: HTMLElement) {\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n const parentNode = node.parentElement\n if (!parentNode) return\n\n const nodeRect = node.getBoundingClientRect()\n const parentRect = parentNode.getBoundingClientRect()\n NodeRectCache.set(node, nodeRect)\n NodeRectCache.set(parentNode, parentRect)\n onLayout(getElementLayoutEvent(nodeRect, parentRect, node))\n}\n\nexport function useElementLayout(\n ref: RefObject<TamaguiComponentStatePartial>,\n onLayout?: ((e: LayoutEvent) => void) | null\n): void {\n const disableKey = useContext(DisableLayoutContextKey)\n\n // keep handlers up to date so polling always calls the latest callback\n const node = ensureWebElement(ref.current?.host)\n if (node && onLayout) {\n LayoutHandlers.set(node, onLayout)\n LayoutDisableKey.set(node, disableKey)\n }\n\n // detect mounts + host swaps after commit and fire the immediate sync layout event\n useIsomorphicLayoutEffect(() => {\n if (!onLayout) return\n const nextNode = ensureWebElement(ref.current?.host)\n const prevNode = PrevHostNode.get(ref)\n if (nextNode === prevNode) return\n\n if (prevNode) cleanupNode(prevNode)\n PrevHostNode.set(ref, nextNode)\n if (!nextNode) return\n\n LayoutHandlers.set(nextNode, onLayout)\n observeLayoutNode(nextNode, disableKey)\n emitLayoutSync(nextNode)\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!onLayout) return\n const node = ref.current?.host\n if (!node) return\n\n LayoutHandlers.set(node, onLayout)\n observeLayoutNode(node, disableKey)\n\n if (process.env.NODE_ENV === 'development' && isDebugLayout()) {\n console.log('[useElementLayout] register', {\n tag: node.tagName,\n id: node.id || undefined,\n className: (node.className || '').slice(0, 60) || undefined,\n totalNodes: Nodes.size,\n })\n }\n\n return () => {\n cleanupNode(node)\n\n // also clean up any node from a mid-lifecycle host swap\n const swappedNode = PrevHostNode.get(ref)\n if (swappedNode && swappedNode !== node) {\n cleanupNode(swappedNode)\n }\n PrevHostNode.delete(ref)\n }\n }, [ref, !!onLayout])\n}\n\nfunction ensureWebElement<X>(x: X): HTMLElement | undefined {\n if (typeof HTMLElement === 'undefined') {\n return undefined\n }\n return x instanceof HTMLElement ? x : undefined\n}\n\nexport const getBoundingClientRectAsync = (\n node: HTMLElement | null\n): Promise<DOMRectReadOnly | false> => {\n return new Promise<DOMRectReadOnly | false>((res) => {\n if (!node || node.nodeType !== 1) return res(false)\n\n const io = new IntersectionObserver(\n (entries) => {\n io.disconnect()\n return res(entries[0].boundingClientRect)\n },\n {\n threshold: 0,\n }\n )\n io.observe(node)\n })\n}\n\nexport const measureNode = async (\n node: HTMLElement,\n relativeTo?: HTMLElement | null\n): Promise<null | LayoutValue> => {\n const relativeNode = relativeTo || node?.parentElement\n if (relativeNode instanceof HTMLElement) {\n const [nodeDim, relativeNodeDim] = await Promise.all([\n getBoundingClientRectAsync(node),\n getBoundingClientRectAsync(relativeNode),\n ])\n if (relativeNodeDim && nodeDim) {\n return getRelativeDimensions(nodeDim, relativeNodeDim, node)\n }\n }\n return null\n}\n\ntype MeasureInWindowCb = (x: number, y: number, width: number, height: number) => void\n\ntype MeasureCb = (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n) => void\n\nexport const measure = async (\n node: HTMLElement,\n callback: MeasureCb\n): Promise<LayoutValue | null> => {\n const out = await measureNode(\n node,\n node.parentNode instanceof HTMLElement ? node.parentNode : null\n )\n if (out) {\n callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY)\n }\n return out\n}\n\nexport function createMeasure(\n node: HTMLElement\n): (callback: MeasureCb) => Promise<LayoutValue | null> {\n return (callback) => measure(node, callback)\n}\n\ntype WindowLayout = { pageX: number; pageY: number; width: number; height: number }\n\nexport const measureInWindow = async (\n node: HTMLElement,\n callback: MeasureInWindowCb\n): Promise<WindowLayout | null> => {\n const out = await measureNode(node, null)\n if (out) {\n callback?.(out.pageX, out.pageY, out.width, out.height)\n }\n return out\n}\n\nexport const createMeasureInWindow = (\n node: HTMLElement\n): ((callback: MeasureInWindowCb) => Promise<WindowLayout | null>) => {\n return (callback) => measureInWindow(node, callback)\n}\n\nexport const measureLayout = async (\n node: HTMLElement,\n relativeNode: HTMLElement,\n callback: MeasureCb\n): Promise<LayoutValue | null> => {\n const out = await measureNode(node, relativeNode)\n if (out) {\n callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY)\n }\n return out\n}\n\nexport function createMeasureLayout(\n node: HTMLElement\n): (relativeTo: HTMLElement, callback: MeasureCb) => Promise<LayoutValue | null> {\n return (relativeTo, callback) => measureLayout(node, relativeTo, callback)\n}\n"
10
10
  ]
11
11
  }