@tamagui/use-element-layout 2.0.0-rc.4 → 2.0.0-rc.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,178 +1,325 @@
1
1
  import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import { isEqualShallow } from "@tamagui/is-equal-shallow";
3
2
  import { createContext, useContext, useId } from "react";
4
3
  import { jsx } from "react/jsx-runtime";
5
- const LayoutHandlers = /* @__PURE__ */new WeakMap(),
6
- LayoutDisableKey = /* @__PURE__ */new WeakMap(),
7
- Nodes = /* @__PURE__ */new Set(),
8
- IntersectionState = /* @__PURE__ */new WeakMap(),
9
- DisableLayoutContextValues = {},
10
- DisableLayoutContextKey = createContext(""),
11
- ENABLE = typeof IntersectionObserver < "u",
12
- LayoutMeasurementController = ({
13
- disable,
4
+ const LayoutHandlers = /* @__PURE__ */new WeakMap();
5
+ const LayoutDisableKey = /* @__PURE__ */new WeakMap();
6
+ const Nodes = /* @__PURE__ */new Set();
7
+ const IntersectionState = /* @__PURE__ */new WeakMap();
8
+ const usePretransformDimensions = () => globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === "1";
9
+ let _debugLayout;
10
+ function isDebugLayout() {
11
+ if (_debugLayout === void 0) _debugLayout = typeof window !== "undefined" && new URLSearchParams(window.location.search).has("__tamaDebugLayout");
12
+ return _debugLayout;
13
+ }
14
+ const DisableLayoutContextValues = {};
15
+ const DisableLayoutContextKey = createContext("");
16
+ const ENABLE = typeof IntersectionObserver !== "undefined";
17
+ const LayoutMeasurementController = ({
18
+ disable,
19
+ children
20
+ }) => {
21
+ const id = useId();
22
+ useIsomorphicLayoutEffect(() => {
23
+ DisableLayoutContextValues[id] = disable;
24
+ }, [disable, id]);
25
+ return /* @__PURE__ */jsx(DisableLayoutContextKey.Provider, {
26
+ value: id,
14
27
  children
15
- }) => {
16
- const id = useId();
17
- return useIsomorphicLayoutEffect(() => {
18
- DisableLayoutContextValues[id] = disable;
19
- }, [disable, id]), /* @__PURE__ */jsx(DisableLayoutContextKey.Provider, {
20
- value: id,
21
- children
22
- });
23
- };
24
- let globalIntersectionObserver = null,
25
- strategy = "async";
28
+ });
29
+ };
30
+ let globalIntersectionObserver = null;
31
+ let strategy = "async";
26
32
  function setOnLayoutStrategy(state) {
27
33
  strategy = state;
28
34
  }
29
- const NodeRectCache = /* @__PURE__ */new WeakMap(),
30
- LastChangeTime = /* @__PURE__ */new WeakMap();
31
- let avoidUpdates = !0;
35
+ const NodeRectCache = /* @__PURE__ */new WeakMap();
36
+ let avoidUpdates = true;
32
37
  const queuedUpdates = /* @__PURE__ */new Map();
33
38
  function enable() {
34
- avoidUpdates && (avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(cb => cb()), queuedUpdates.clear()));
39
+ if (avoidUpdates) {
40
+ avoidUpdates = false;
41
+ if (queuedUpdates) {
42
+ queuedUpdates.forEach(cb => cb());
43
+ queuedUpdates.clear();
44
+ }
45
+ }
35
46
  }
36
47
  function startGlobalObservers() {
37
- !ENABLE || globalIntersectionObserver || (globalIntersectionObserver = new IntersectionObserver(entries => {
38
- entries.forEach(entry => {
48
+ if (!ENABLE || globalIntersectionObserver) return;
49
+ globalIntersectionObserver = new IntersectionObserver(entries => {
50
+ for (let i = 0; i < entries.length; i++) {
51
+ const entry = entries[i];
39
52
  const node = entry.target;
40
- IntersectionState.get(node) !== entry.isIntersecting && IntersectionState.set(node, entry.isIntersecting);
41
- });
53
+ if (IntersectionState.get(node) !== entry.isIntersecting) IntersectionState.set(node, entry.isIntersecting);
54
+ }
42
55
  }, {
43
56
  threshold: 0
44
- }));
57
+ });
58
+ }
59
+ function rectsEqual(a, b) {
60
+ return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
45
61
  }
46
62
  if (ENABLE) {
63
+ 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
+ };
47
78
  const BoundingRects = /* @__PURE__ */new WeakMap();
79
+ let rectFetchObserver = null;
80
+ let rectFetchResolve = null;
81
+ let rectFetchStartTime = 0;
82
+ let lastCallbackDelay = 0;
48
83
  async function updateLayoutIfChanged(node) {
49
84
  const onLayout = LayoutHandlers.get(node);
50
- if (typeof onLayout != "function") return;
85
+ if (typeof onLayout !== "function") return;
51
86
  const parentNode = node.parentElement;
52
87
  if (!parentNode) return;
53
- let nodeRect, parentRect;
88
+ let nodeRect;
89
+ let parentRect;
54
90
  if (strategy === "async") {
55
- const [nr, pr] = await Promise.all([BoundingRects.get(node), BoundingRects.get(parentNode)]);
56
- if (!nr || !pr) return;
57
- nodeRect = nr, parentRect = pr;
58
- } else nodeRect = node.getBoundingClientRect(), parentRect = parentNode.getBoundingClientRect();
59
- if (!nodeRect || !parentRect) return;
60
- const cachedRect = NodeRectCache.get(node),
61
- cachedParentRect = NodeRectCache.get(parentNode);
62
- if (!cachedRect || !cachedParentRect ||
63
- // has changed one rect
64
- // @ts-expect-error DOMRectReadOnly can go into object
65
- !isEqualShallow(cachedRect, nodeRect) ||
66
- // @ts-expect-error DOMRectReadOnly can go into object
67
- !isEqualShallow(cachedParentRect, parentRect)) {
68
- NodeRectCache.set(node, nodeRect), NodeRectCache.set(parentNode, parentRect);
69
- const event = getElementLayoutEvent(nodeRect, parentRect);
70
- avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
91
+ nodeRect = BoundingRects.get(node);
92
+ parentRect = BoundingRects.get(parentNode);
93
+ if (!nodeRect || !parentRect) return;
94
+ } else {
95
+ nodeRect = node.getBoundingClientRect();
96
+ parentRect = parentNode.getBoundingClientRect();
97
+ }
98
+ const cachedRect = NodeRectCache.get(node);
99
+ const cachedParentRect = NodeRectCache.get(parentNode);
100
+ const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
101
+ const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
102
+ if (nodeChanged || parentChanged) {
103
+ NodeRectCache.set(node, nodeRect);
104
+ NodeRectCache.set(parentNode, parentRect);
105
+ const event = getElementLayoutEvent(nodeRect, parentRect, node);
106
+ if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] change", {
107
+ tag: node.tagName,
108
+ id: node.id || void 0,
109
+ className: (node.className || "").slice(0, 60) || void 0,
110
+ layout: event.nativeEvent.layout,
111
+ first: !cachedRect
112
+ });
113
+ if (avoidUpdates) queuedUpdates.set(node, () => onLayout(event));else onLayout(event);
71
114
  }
72
115
  }
73
- const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP,
74
- RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal : 14;
116
+ const rAF = typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : void 0;
117
+ const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP;
118
+ const BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;
119
+ const MAX_SKIP_FRAMES = 20;
120
+ let skipFrames = BASE_SKIP_FRAMES;
121
+ let frameCount = 0;
75
122
  async function layoutOnAnimationFrame() {
123
+ if (frameCount++ % skipFrames !== 0) {
124
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
125
+ return;
126
+ }
127
+ if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
76
128
  if (strategy !== "off") {
77
129
  const visibleNodes = [];
78
- (await new Promise(res => {
79
- const io = new IntersectionObserver(entries => {
80
- io.disconnect();
81
- for (const entry of entries) BoundingRects.set(entry.target, entry.boundingClientRect);
82
- res(!0);
83
- }, {
84
- threshold: 0
85
- });
86
- let didObserve = !1;
87
- for (const node of Nodes) {
88
- if (!(node.parentElement instanceof HTMLElement)) continue;
89
- const disableKey = LayoutDisableKey.get(node);
90
- disableKey && DisableLayoutContextValues[disableKey] === !0 || IntersectionState.get(node) !== !1 && (didObserve = !0, io.observe(node), io.observe(node.parentElement), visibleNodes.push(node));
130
+ const parentsToObserve = /* @__PURE__ */new Set();
131
+ for (const node of Nodes) {
132
+ const parentElement = node.parentElement;
133
+ if (!(parentElement instanceof HTMLElement)) {
134
+ cleanupNode(node);
135
+ continue;
91
136
  }
92
- didObserve || res(!1);
93
- })) && visibleNodes.forEach(node => {
94
- updateLayoutIfChanged(node);
95
- });
137
+ const disableKey = LayoutDisableKey.get(node);
138
+ if (disableKey && DisableLayoutContextValues[disableKey] === true) continue;
139
+ if (IntersectionState.get(node) === false) continue;
140
+ visibleNodes.push(node);
141
+ parentsToObserve.add(parentElement);
142
+ }
143
+ if (visibleNodes.length > 0) {
144
+ const io = ensureRectFetchObserver();
145
+ rectFetchStartTime = performance.now();
146
+ for (let i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);
147
+ for (const parent of parentsToObserve) io.observe(parent);
148
+ await new Promise(res => {
149
+ rectFetchResolve = res;
150
+ });
151
+ for (let i = 0; i < visibleNodes.length; i++) io.unobserve(visibleNodes[i]);
152
+ for (const parent of parentsToObserve) io.unobserve(parent);
153
+ if (lastCallbackDelay > 50) skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES);else if (lastCallbackDelay < 20) skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES);
154
+ for (let i = 0; i < visibleNodes.length; i++) updateLayoutIfChanged(visibleNodes[i]);
155
+ }
96
156
  }
97
- setTimeout(layoutOnAnimationFrame, 16.6667 * RUN_EVERY_X_FRAMES);
157
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
98
158
  }
99
159
  layoutOnAnimationFrame();
100
160
  }
101
- const getElementLayoutEvent = (nodeRect, parentRect) => ({
161
+ const getElementLayoutEvent = (nodeRect, parentRect, node) => {
162
+ return {
102
163
  nativeEvent: {
103
- layout: getRelativeDimensions(nodeRect, parentRect),
164
+ layout: getRelativeDimensions(nodeRect, parentRect, node),
104
165
  target: nodeRect
105
166
  },
106
167
  timeStamp: Date.now()
107
- }),
108
- getRelativeDimensions = (a, b) => {
109
- const {
110
- height,
111
- left,
112
- top,
113
- width
114
- } = a,
115
- x = left - b.left,
116
- y = top - b.top;
117
- return {
118
- x,
119
- y,
120
- width,
121
- height,
122
- pageX: a.left,
123
- pageY: a.top
124
- };
125
168
  };
169
+ };
170
+ const getPreTransformDimensions = node => {
171
+ return {
172
+ width: node.offsetWidth,
173
+ height: node.offsetHeight
174
+ };
175
+ };
176
+ const getRelativeDimensions = (a, b, aNode) => {
177
+ const {
178
+ left,
179
+ top
180
+ } = a;
181
+ const x = left - b.left;
182
+ const y = top - b.top;
183
+ const {
184
+ width,
185
+ height
186
+ } = usePretransformDimensions() && aNode ? getPreTransformDimensions(aNode) : {
187
+ width: a.width,
188
+ height: a.height
189
+ };
190
+ return {
191
+ x,
192
+ y,
193
+ width,
194
+ height,
195
+ pageX: a.left,
196
+ pageY: a.top
197
+ };
198
+ };
199
+ function registerLayoutNode(node, onChange, disableKey) {
200
+ Nodes.add(node);
201
+ LayoutHandlers.set(node, onChange);
202
+ if (disableKey) LayoutDisableKey.set(node, disableKey);
203
+ startGlobalObservers();
204
+ if (globalIntersectionObserver) {
205
+ globalIntersectionObserver.observe(node);
206
+ IntersectionState.set(node, true);
207
+ }
208
+ return () => cleanupNode(node);
209
+ }
210
+ function cleanupNode(node) {
211
+ Nodes.delete(node);
212
+ LayoutHandlers.delete(node);
213
+ LayoutDisableKey.delete(node);
214
+ NodeRectCache.delete(node);
215
+ IntersectionState.delete(node);
216
+ if (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);
217
+ }
218
+ const PrevHostNode = /* @__PURE__ */new WeakMap();
126
219
  function useElementLayout(ref, onLayout) {
127
- const disableKey = useContext(DisableLayoutContextKey),
128
- node = ensureWebElement(ref.current?.host);
129
- node && onLayout && (LayoutHandlers.set(node, onLayout), LayoutDisableKey.set(node, disableKey)), useIsomorphicLayoutEffect(() => {
220
+ const disableKey = useContext(DisableLayoutContextKey);
221
+ const node = ensureWebElement(ref.current?.host);
222
+ if (node && onLayout) {
223
+ LayoutHandlers.set(node, onLayout);
224
+ LayoutDisableKey.set(node, disableKey);
225
+ }
226
+ useIsomorphicLayoutEffect(() => {
227
+ if (!onLayout) return;
228
+ const nextNode = ensureWebElement(ref.current?.host);
229
+ const prevNode = PrevHostNode.get(ref);
230
+ if (nextNode === prevNode) return;
231
+ if (prevNode) cleanupNode(prevNode);
232
+ PrevHostNode.set(ref, nextNode);
233
+ if (!nextNode) return;
234
+ Nodes.add(nextNode);
235
+ startGlobalObservers();
236
+ if (globalIntersectionObserver) {
237
+ globalIntersectionObserver.observe(nextNode);
238
+ IntersectionState.set(nextNode, true);
239
+ }
240
+ const handler = LayoutHandlers.get(nextNode);
241
+ if (typeof handler !== "function") return;
242
+ const parentNode = nextNode.parentElement;
243
+ if (!parentNode) return;
244
+ const nodeRect = nextNode.getBoundingClientRect();
245
+ const parentRect = parentNode.getBoundingClientRect();
246
+ NodeRectCache.set(nextNode, nodeRect);
247
+ NodeRectCache.set(parentNode, parentRect);
248
+ handler(getElementLayoutEvent(nodeRect, parentRect, nextNode));
249
+ });
250
+ useIsomorphicLayoutEffect(() => {
130
251
  if (!onLayout) return;
131
252
  const node2 = ref.current?.host;
132
253
  if (!node2) return;
133
- Nodes.add(node2), startGlobalObservers(), globalIntersectionObserver && (globalIntersectionObserver.observe(node2), IntersectionState.set(node2, !0));
254
+ Nodes.add(node2);
255
+ startGlobalObservers();
256
+ if (globalIntersectionObserver) {
257
+ globalIntersectionObserver.observe(node2);
258
+ IntersectionState.set(node2, true);
259
+ }
260
+ if (process.env.NODE_ENV === "development" && isDebugLayout()) console.log("[useElementLayout] register", {
261
+ tag: node2.tagName,
262
+ id: node2.id || void 0,
263
+ className: (node2.className || "").slice(0, 60) || void 0,
264
+ totalNodes: Nodes.size
265
+ });
134
266
  const parentNode = node2.parentNode;
135
- return parentNode && onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect())), () => {
136
- Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2), LastChangeTime.delete(node2), IntersectionState.delete(node2), globalIntersectionObserver && globalIntersectionObserver.unobserve(node2);
267
+ if (parentNode) onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect(), node2));
268
+ return () => {
269
+ cleanupNode(node2);
270
+ const swappedNode = PrevHostNode.get(ref);
271
+ if (swappedNode && swappedNode !== node2) cleanupNode(swappedNode);
272
+ PrevHostNode.delete(ref);
137
273
  };
138
274
  }, [ref, !!onLayout]);
139
275
  }
140
276
  function ensureWebElement(x) {
141
- if (!(typeof HTMLElement > "u")) return x instanceof HTMLElement ? x : void 0;
277
+ if (typeof HTMLElement === "undefined") return;
278
+ return x instanceof HTMLElement ? x : void 0;
142
279
  }
143
- const getBoundingClientRectAsync = node => new Promise(res => {
144
- if (!node || node.nodeType !== 1) return res(!1);
145
- const io = new IntersectionObserver(entries => (io.disconnect(), res(entries[0].boundingClientRect)), {
280
+ const getBoundingClientRectAsync = node => {
281
+ return new Promise(res => {
282
+ if (!node || node.nodeType !== 1) return res(false);
283
+ const io = new IntersectionObserver(entries => {
284
+ io.disconnect();
285
+ return res(entries[0].boundingClientRect);
286
+ }, {
146
287
  threshold: 0
147
288
  });
148
289
  io.observe(node);
149
- }),
150
- measureNode = async (node, relativeTo) => {
151
- const relativeNode = relativeTo || node?.parentElement;
152
- if (relativeNode instanceof HTMLElement) {
153
- const [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);
154
- if (relativeNodeDim && nodeDim) return getRelativeDimensions(nodeDim, relativeNodeDim);
155
- }
156
- return null;
157
- },
158
- measure = async (node, callback) => {
159
- const out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);
160
- return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
161
- };
290
+ });
291
+ };
292
+ const measureNode = async (node, relativeTo) => {
293
+ const relativeNode = relativeTo || node?.parentElement;
294
+ if (relativeNode instanceof HTMLElement) {
295
+ const [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);
296
+ if (relativeNodeDim && nodeDim) return getRelativeDimensions(nodeDim, relativeNodeDim, node);
297
+ }
298
+ return null;
299
+ };
300
+ const measure = async (node, callback) => {
301
+ const out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);
302
+ if (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);
303
+ return out;
304
+ };
162
305
  function createMeasure(node) {
163
306
  return callback => measure(node, callback);
164
307
  }
165
308
  const measureInWindow = async (node, callback) => {
166
- const out = await measureNode(node, null);
167
- return out && callback?.(out.pageX, out.pageY, out.width, out.height), out;
168
- },
169
- createMeasureInWindow = node => callback => measureInWindow(node, callback),
170
- measureLayout = async (node, relativeNode, callback) => {
171
- const out = await measureNode(node, relativeNode);
172
- return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
173
- };
309
+ const out = await measureNode(node, null);
310
+ if (out) callback?.(out.pageX, out.pageY, out.width, out.height);
311
+ return out;
312
+ };
313
+ const createMeasureInWindow = node => {
314
+ return callback => measureInWindow(node, callback);
315
+ };
316
+ const measureLayout = async (node, relativeNode, callback) => {
317
+ const out = await measureNode(node, relativeNode);
318
+ if (out) callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);
319
+ return out;
320
+ };
174
321
  function createMeasureLayout(node) {
175
322
  return (relativeTo, callback) => measureLayout(node, relativeTo, callback);
176
323
  }
177
- export { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, setOnLayoutStrategy, useElementLayout };
324
+ export { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, registerLayoutNode, setOnLayoutStrategy, useElementLayout };
178
325
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","isEqualShallow","createContext","useContext","useId","jsx","LayoutHandlers","WeakMap","LayoutDisableKey","Nodes","Set","IntersectionState","DisableLayoutContextValues","DisableLayoutContextKey","ENABLE","IntersectionObserver","LayoutMeasurementController","disable","children","id","Provider","value","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","LastChangeTime","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","entries","entry","node","target","get","isIntersecting","set","threshold","BoundingRects","updateLayoutIfChanged","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","userSkipVal","process","env","TAMAGUI_LAYOUT_FRAME_SKIP","RUN_EVERY_X_FRAMES","layoutOnAnimationFrame","visibleNodes","res","io","disconnect","boundingClientRect","didObserve","HTMLElement","disableKey","observe","push","setTimeout","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","now","a","b","height","left","top","width","x","y","pageX","pageY","useElementLayout","ref","ensureWebElement","current","host","node2","add","delete","unobserve","getBoundingClientRectAsync","nodeType","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"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","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","onLayout","parentNode","parentElement","nodeRect","parentRect","getBoundingClientRect","cachedRect","cachedParentRect","nodeChanged","parentChanged","event","getElementLayoutEvent","log","tag","tagName","className","slice","layout","nativeEvent","first","rAF","requestAnimationFrame","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","BASE_SKIP_FRAMES","MAX_SKIP_FRAMES","skipFrames","frameCount","layoutOnAnimationFrame","setTimeout","Number","MAX_SAFE_INTEGER","visibleNodes","parentsToObserve","HTMLElement","cleanupNode","disableKey","push","add","io","observe","parent","Promise","res","unobserve","min","max","getRelativeDimensions","timeStamp","Date","getPreTransformDimensions","offsetWidth","offsetHeight","aNode","left","top","pageX","pageY","registerLayoutNode","onChange","delete","PrevHostNode","useElementLayout","ref","ensureWebElement","current","host","nextNode","prevNode","handler","node2","totalNodes","size","swappedNode","getBoundingClientRectAsync","nodeType","disconnect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","all","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}