@tamagui/core 1.129.5 → 1.129.6-1751237024118

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.
Files changed (61) hide show
  1. package/dist/cjs/index.cjs +15 -9
  2. package/dist/cjs/index.js +11 -7
  3. package/dist/cjs/index.js.map +2 -2
  4. package/dist/cjs/index.native.js +15 -7
  5. package/dist/cjs/index.native.js.map +2 -2
  6. package/dist/esm/index.js +15 -5
  7. package/dist/esm/index.js.map +1 -1
  8. package/dist/esm/index.mjs +11 -6
  9. package/dist/esm/index.mjs.map +1 -1
  10. package/dist/esm/index.native.js +13 -6
  11. package/dist/esm/index.native.js.map +1 -1
  12. package/dist/native.js +427 -356
  13. package/dist/native.js.map +3 -3
  14. package/dist/test.native.js +407 -335
  15. package/dist/test.native.js.map +3 -3
  16. package/package.json +9 -8
  17. package/src/index.tsx +19 -3
  18. package/types/index.d.ts +3 -2
  19. package/types/index.d.ts.map +1 -1
  20. package/dist/cjs/helpers/getBoundingClientRect.cjs +0 -41
  21. package/dist/cjs/helpers/getBoundingClientRect.js +0 -39
  22. package/dist/cjs/helpers/getBoundingClientRect.js.map +0 -6
  23. package/dist/cjs/helpers/getBoundingClientRect.native.js +0 -48
  24. package/dist/cjs/helpers/getBoundingClientRect.native.js.map +0 -6
  25. package/dist/cjs/helpers/getRect.cjs +0 -44
  26. package/dist/cjs/helpers/getRect.js +0 -27
  27. package/dist/cjs/helpers/getRect.js.map +0 -6
  28. package/dist/cjs/helpers/getRect.native.js +0 -39
  29. package/dist/cjs/helpers/getRect.native.js.map +0 -6
  30. package/dist/cjs/hooks/useElementLayout.cjs +0 -203
  31. package/dist/cjs/hooks/useElementLayout.js +0 -152
  32. package/dist/cjs/hooks/useElementLayout.js.map +0 -6
  33. package/dist/cjs/hooks/useElementLayout.native.js +0 -185
  34. package/dist/cjs/hooks/useElementLayout.native.js.map +0 -6
  35. package/dist/esm/helpers/getBoundingClientRect.js +0 -23
  36. package/dist/esm/helpers/getBoundingClientRect.js.map +0 -6
  37. package/dist/esm/helpers/getBoundingClientRect.mjs +0 -17
  38. package/dist/esm/helpers/getBoundingClientRect.mjs.map +0 -1
  39. package/dist/esm/helpers/getBoundingClientRect.native.js +0 -24
  40. package/dist/esm/helpers/getBoundingClientRect.native.js.map +0 -1
  41. package/dist/esm/helpers/getRect.js +0 -11
  42. package/dist/esm/helpers/getRect.js.map +0 -6
  43. package/dist/esm/helpers/getRect.mjs +0 -21
  44. package/dist/esm/helpers/getRect.mjs.map +0 -1
  45. package/dist/esm/helpers/getRect.native.js +0 -22
  46. package/dist/esm/helpers/getRect.native.js.map +0 -1
  47. package/dist/esm/hooks/useElementLayout.js +0 -140
  48. package/dist/esm/hooks/useElementLayout.js.map +0 -6
  49. package/dist/esm/hooks/useElementLayout.mjs +0 -175
  50. package/dist/esm/hooks/useElementLayout.mjs.map +0 -1
  51. package/dist/esm/hooks/useElementLayout.native.js +0 -189
  52. package/dist/esm/hooks/useElementLayout.native.js.map +0 -1
  53. package/src/helpers/getBoundingClientRect.tsx +0 -30
  54. package/src/helpers/getRect.tsx +0 -8
  55. package/src/hooks/useElementLayout.tsx +0 -292
  56. package/types/helpers/getBoundingClientRect.d.ts +0 -3
  57. package/types/helpers/getBoundingClientRect.d.ts.map +0 -1
  58. package/types/helpers/getRect.d.ts +0 -9
  59. package/types/helpers/getRect.d.ts.map +0 -1
  60. package/types/hooks/useElementLayout.d.ts +0 -26
  61. package/types/hooks/useElementLayout.d.ts.map +0 -1
@@ -1,140 +0,0 @@
1
- import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import {
3
- isEqualShallow,
4
- ___onDidFinishClientRender
5
- } from "@tamagui/web";
6
- const LayoutHandlers = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set();
7
- let strategy = "async";
8
- function setOnLayoutStrategy(state) {
9
- strategy = state;
10
- }
11
- const NodeRectCache = /* @__PURE__ */ new WeakMap(), ParentRectCache = /* @__PURE__ */ new WeakMap(), DebounceTimers = /* @__PURE__ */ new WeakMap(), LastChangeTime = /* @__PURE__ */ new WeakMap(), rAF = typeof window < "u" ? window.requestAnimationFrame : void 0, DEBOUNCE_DELAY = 32;
12
- if (isClient)
13
- if (rAF) {
14
- let layoutOnAnimationFrame = function() {
15
- const now = Date.now(), timeSinceLastFrame = now - lastFrameAt;
16
- lastFrameAt = now, strategy !== "off" && (timeSinceLastFrame > 16.67 * numDroppedFramesUntilPause || Nodes.forEach(updateLayoutIfChanged)), rAF(layoutOnAnimationFrame);
17
- }, avoidUpdates = !0;
18
- const queuedUpdates = /* @__PURE__ */ new Map();
19
- let lastFrameAt = Date.now();
20
- const numDroppedFramesUntilPause = 2;
21
- ___onDidFinishClientRender(() => {
22
- avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach((cb) => cb()), queuedUpdates.clear());
23
- });
24
- async function updateLayoutIfChanged(node) {
25
- const nodeRect = node.getBoundingClientRect(), parentNode = node.parentElement, parentRect = parentNode?.getBoundingClientRect(), onLayout = LayoutHandlers.get(node);
26
- if (typeof onLayout != "function") return;
27
- const cachedRect = NodeRectCache.get(node), cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
28
- if (!cachedRect || // has changed one rect
29
- !isEqualShallow(cachedRect, nodeRect) && (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect)))
30
- if (NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect), avoidUpdates) {
31
- const event = getElementLayoutEvent(node);
32
- queuedUpdates.set(node, () => onLayout(event));
33
- } else if (strategy === "async") {
34
- const now = Date.now();
35
- LastChangeTime.set(node, now);
36
- const existingTimer = DebounceTimers.get(node);
37
- existingTimer && clearTimeout(existingTimer);
38
- const timer = setTimeout(async () => {
39
- const lastChange = LastChangeTime.get(node) || 0, timeSinceChange = Date.now() - lastChange;
40
- if (timeSinceChange >= DEBOUNCE_DELAY) {
41
- const event = await getElementLayoutEventAsync(node);
42
- onLayout(event), DebounceTimers.delete(node);
43
- } else {
44
- const remainingDelay = DEBOUNCE_DELAY - timeSinceChange, newTimer = setTimeout(async () => {
45
- const event = await getElementLayoutEventAsync(node);
46
- onLayout(event), DebounceTimers.delete(node);
47
- }, remainingDelay);
48
- DebounceTimers.set(node, newTimer);
49
- }
50
- }, DEBOUNCE_DELAY);
51
- DebounceTimers.set(node, timer);
52
- } else {
53
- const event = getElementLayoutEvent(node);
54
- onLayout(event);
55
- }
56
- }
57
- rAF(layoutOnAnimationFrame);
58
- } else
59
- process.env.NODE_ENV === "development" && console.warn(
60
- "No requestAnimationFrame - please polyfill for onLayout to work correctly"
61
- );
62
- const getElementLayoutEvent = (target) => {
63
- let res = null;
64
- if (measureLayout(target, null, (x, y, width, height, left, top) => {
65
- res = {
66
- nativeEvent: {
67
- layout: { x, y, width, height, left, top },
68
- target
69
- },
70
- timeStamp: Date.now()
71
- };
72
- }), !res)
73
- throw new Error("\u203C\uFE0F");
74
- return res;
75
- }, measureLayout = (node, relativeTo, callback) => {
76
- const relativeNode = relativeTo || node?.parentElement;
77
- if (relativeNode instanceof HTMLElement) {
78
- const nodeDim = node.getBoundingClientRect(), relativeNodeDim = relativeNode.getBoundingClientRect();
79
- if (relativeNodeDim && nodeDim) {
80
- const { x, y, width, height, left, top } = getRelativeDimensions(
81
- nodeDim,
82
- relativeNodeDim
83
- );
84
- callback(x, y, width, height, left, top);
85
- }
86
- }
87
- }, getElementLayoutEventAsync = async (target) => {
88
- let res = null;
89
- if (await measureLayoutAsync(target, null, (x, y, width, height, left, top) => {
90
- res = {
91
- nativeEvent: {
92
- layout: { x, y, width, height, left, top },
93
- target
94
- },
95
- timeStamp: Date.now()
96
- };
97
- }), !res)
98
- throw new Error("\u203C\uFE0F");
99
- return res;
100
- }, measureLayoutAsync = async (node, relativeTo, callback) => {
101
- const relativeNode = relativeTo || node?.parentElement;
102
- if (relativeNode instanceof HTMLElement) {
103
- const [nodeDim, relativeNodeDim] = await Promise.all([
104
- node.getBoundingClientRect(),
105
- relativeNode.getBoundingClientRect()
106
- ]);
107
- if (relativeNodeDim && nodeDim) {
108
- const { x, y, width, height, left, top } = getRelativeDimensions(
109
- nodeDim,
110
- relativeNodeDim
111
- );
112
- callback(x, y, width, height, left, top);
113
- }
114
- }
115
- }, getRelativeDimensions = (a, b) => {
116
- const { height, left, top, width } = a, x = left - b.left, y = top - b.top;
117
- return { x, y, width, height, left, top };
118
- };
119
- function useElementLayout(ref, onLayout) {
120
- const node = ref.current?.host;
121
- node && onLayout && LayoutHandlers.set(node, onLayout), useIsomorphicLayoutEffect(() => {
122
- if (!onLayout) return;
123
- const node2 = ref.current?.host;
124
- if (node2)
125
- return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
126
- Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
127
- const timer = DebounceTimers.get(node2);
128
- timer && (clearTimeout(timer), DebounceTimers.delete(node2)), LastChangeTime.delete(node2);
129
- };
130
- }, [ref, !!onLayout]);
131
- }
132
- export {
133
- getElementLayoutEvent,
134
- getElementLayoutEventAsync,
135
- measureLayout,
136
- measureLayoutAsync,
137
- setOnLayoutStrategy,
138
- useElementLayout
139
- };
140
- //# sourceMappingURL=useElementLayout.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/useElementLayout.tsx"],
4
- "mappings": "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",
5
- "names": ["node"]
6
- }
@@ -1,175 +0,0 @@
1
- import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import { isEqualShallow, ___onDidFinishClientRender } from "@tamagui/web";
3
- const LayoutHandlers = /* @__PURE__ */new WeakMap(),
4
- Nodes = /* @__PURE__ */new Set();
5
- let strategy = "async";
6
- function setOnLayoutStrategy(state) {
7
- strategy = state;
8
- }
9
- const NodeRectCache = /* @__PURE__ */new WeakMap(),
10
- ParentRectCache = /* @__PURE__ */new WeakMap(),
11
- DebounceTimers = /* @__PURE__ */new WeakMap(),
12
- LastChangeTime = /* @__PURE__ */new WeakMap(),
13
- rAF = typeof window < "u" ? window.requestAnimationFrame : void 0,
14
- DEBOUNCE_DELAY = 32;
15
- if (isClient) if (rAF) {
16
- let layoutOnAnimationFrame = function () {
17
- const now = Date.now(),
18
- timeSinceLastFrame = now - lastFrameAt;
19
- lastFrameAt = now, strategy !== "off" && (timeSinceLastFrame > 16.67 * numDroppedFramesUntilPause || Nodes.forEach(updateLayoutIfChanged)), rAF(layoutOnAnimationFrame);
20
- },
21
- avoidUpdates = !0;
22
- const queuedUpdates = /* @__PURE__ */new Map();
23
- let lastFrameAt = Date.now();
24
- const numDroppedFramesUntilPause = 2;
25
- ___onDidFinishClientRender(() => {
26
- avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(cb => cb()), queuedUpdates.clear());
27
- });
28
- async function updateLayoutIfChanged(node) {
29
- const nodeRect = node.getBoundingClientRect(),
30
- parentNode = node.parentElement,
31
- parentRect = parentNode?.getBoundingClientRect(),
32
- onLayout = LayoutHandlers.get(node);
33
- if (typeof onLayout != "function") return;
34
- const cachedRect = NodeRectCache.get(node),
35
- cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
36
- if (!cachedRect ||
37
- // has changed one rect
38
- !isEqualShallow(cachedRect, nodeRect) && (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect))) if (NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect), avoidUpdates) {
39
- const event = getElementLayoutEvent(node);
40
- queuedUpdates.set(node, () => onLayout(event));
41
- } else if (strategy === "async") {
42
- const now = Date.now();
43
- LastChangeTime.set(node, now);
44
- const existingTimer = DebounceTimers.get(node);
45
- existingTimer && clearTimeout(existingTimer);
46
- const timer = setTimeout(async () => {
47
- const lastChange = LastChangeTime.get(node) || 0,
48
- timeSinceChange = Date.now() - lastChange;
49
- if (timeSinceChange >= DEBOUNCE_DELAY) {
50
- const event = await getElementLayoutEventAsync(node);
51
- onLayout(event), DebounceTimers.delete(node);
52
- } else {
53
- const remainingDelay = DEBOUNCE_DELAY - timeSinceChange,
54
- newTimer = setTimeout(async () => {
55
- const event = await getElementLayoutEventAsync(node);
56
- onLayout(event), DebounceTimers.delete(node);
57
- }, remainingDelay);
58
- DebounceTimers.set(node, newTimer);
59
- }
60
- }, DEBOUNCE_DELAY);
61
- DebounceTimers.set(node, timer);
62
- } else {
63
- const event = getElementLayoutEvent(node);
64
- onLayout(event);
65
- }
66
- }
67
- rAF(layoutOnAnimationFrame);
68
- } else process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
69
- const getElementLayoutEvent = target => {
70
- let res = null;
71
- if (measureLayout(target, null, (x, y, width, height, left, top) => {
72
- res = {
73
- nativeEvent: {
74
- layout: {
75
- x,
76
- y,
77
- width,
78
- height,
79
- left,
80
- top
81
- },
82
- target
83
- },
84
- timeStamp: Date.now()
85
- };
86
- }), !res) throw new Error("\u203C\uFE0F");
87
- return res;
88
- },
89
- measureLayout = (node, relativeTo, callback) => {
90
- const relativeNode = relativeTo || node?.parentElement;
91
- if (relativeNode instanceof HTMLElement) {
92
- const nodeDim = node.getBoundingClientRect(),
93
- relativeNodeDim = relativeNode.getBoundingClientRect();
94
- if (relativeNodeDim && nodeDim) {
95
- const {
96
- x,
97
- y,
98
- width,
99
- height,
100
- left,
101
- top
102
- } = getRelativeDimensions(nodeDim, relativeNodeDim);
103
- callback(x, y, width, height, left, top);
104
- }
105
- }
106
- },
107
- getElementLayoutEventAsync = async target => {
108
- let res = null;
109
- if (await measureLayoutAsync(target, null, (x, y, width, height, left, top) => {
110
- res = {
111
- nativeEvent: {
112
- layout: {
113
- x,
114
- y,
115
- width,
116
- height,
117
- left,
118
- top
119
- },
120
- target
121
- },
122
- timeStamp: Date.now()
123
- };
124
- }), !res) throw new Error("\u203C\uFE0F");
125
- return res;
126
- },
127
- measureLayoutAsync = async (node, relativeTo, callback) => {
128
- const relativeNode = relativeTo || node?.parentElement;
129
- if (relativeNode instanceof HTMLElement) {
130
- const [nodeDim, relativeNodeDim] = await Promise.all([node.getBoundingClientRect(), relativeNode.getBoundingClientRect()]);
131
- if (relativeNodeDim && nodeDim) {
132
- const {
133
- x,
134
- y,
135
- width,
136
- height,
137
- left,
138
- top
139
- } = getRelativeDimensions(nodeDim, relativeNodeDim);
140
- callback(x, y, width, height, left, top);
141
- }
142
- }
143
- },
144
- getRelativeDimensions = (a, b) => {
145
- const {
146
- height,
147
- left,
148
- top,
149
- width
150
- } = a,
151
- x = left - b.left,
152
- y = top - b.top;
153
- return {
154
- x,
155
- y,
156
- width,
157
- height,
158
- left,
159
- top
160
- };
161
- };
162
- function useElementLayout(ref, onLayout) {
163
- const node = ref.current?.host;
164
- node && onLayout && LayoutHandlers.set(node, onLayout), useIsomorphicLayoutEffect(() => {
165
- if (!onLayout) return;
166
- const node2 = ref.current?.host;
167
- if (node2) return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
168
- Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
169
- const timer = DebounceTimers.get(node2);
170
- timer && (clearTimeout(timer), DebounceTimers.delete(node2)), LastChangeTime.delete(node2);
171
- };
172
- }, [ref, !!onLayout]);
173
- }
174
- export { getElementLayoutEvent, getElementLayoutEventAsync, measureLayout, measureLayoutAsync, setOnLayoutStrategy, useElementLayout };
175
- //# sourceMappingURL=useElementLayout.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","___onDidFinishClientRender","LayoutHandlers","WeakMap","Nodes","Set","strategy","setOnLayoutStrategy","state","NodeRectCache","ParentRectCache","DebounceTimers","LastChangeTime","rAF","window","requestAnimationFrame","DEBOUNCE_DELAY","layoutOnAnimationFrame","now","Date","timeSinceLastFrame","lastFrameAt","numDroppedFramesUntilPause","forEach","updateLayoutIfChanged","avoidUpdates","queuedUpdates","Map","cb","clear","node","nodeRect","getBoundingClientRect","parentNode","parentElement","parentRect","onLayout","get","cachedRect","cachedParentRect","set","event","getElementLayoutEvent","existingTimer","clearTimeout","timer","setTimeout","lastChange","timeSinceChange","getElementLayoutEventAsync","delete","remainingDelay","newTimer","process","env","NODE_ENV","console","warn","target","res","measureLayout","x","y","width","height","left","top","nativeEvent","layout","timeStamp","Error","relativeTo","callback","relativeNode","HTMLElement","nodeDim","relativeNodeDim","getRelativeDimensions","measureLayoutAsync","Promise","all","a","b","useElementLayout","ref","current","host","node2","add"],"sources":["../../../src/hooks/useElementLayout.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,189 +0,0 @@
1
- import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import { isEqualShallow, ___onDidFinishClientRender } from "@tamagui/web";
3
- var LayoutHandlers = /* @__PURE__ */new WeakMap(),
4
- Nodes = /* @__PURE__ */new Set(),
5
- strategy = "async";
6
- function setOnLayoutStrategy(state) {
7
- strategy = state;
8
- }
9
- var NodeRectCache = /* @__PURE__ */new WeakMap(),
10
- ParentRectCache = /* @__PURE__ */new WeakMap(),
11
- DebounceTimers = /* @__PURE__ */new WeakMap(),
12
- LastChangeTime = /* @__PURE__ */new WeakMap(),
13
- rAF = typeof window < "u" ? window.requestAnimationFrame : void 0,
14
- DEBOUNCE_DELAY = 32;
15
- if (isClient) if (rAF) {
16
- let layoutOnAnimationFrame = function () {
17
- var now = Date.now(),
18
- timeSinceLastFrame = now - lastFrameAt;
19
- if (lastFrameAt = now, strategy !== "off") {
20
- var expectedFrameTime = 16.67,
21
- hasRecentSyncWork = timeSinceLastFrame > expectedFrameTime * numDroppedFramesUntilPause;
22
- hasRecentSyncWork || Nodes.forEach(updateLayoutIfChanged);
23
- }
24
- rAF(layoutOnAnimationFrame);
25
- };
26
- var layoutOnAnimationFrame2 = layoutOnAnimationFrame,
27
- avoidUpdates = !0,
28
- queuedUpdates = /* @__PURE__ */new Map(),
29
- lastFrameAt = Date.now(),
30
- numDroppedFramesUntilPause = 2;
31
- ___onDidFinishClientRender(function () {
32
- avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(function (cb) {
33
- return cb();
34
- }), queuedUpdates.clear());
35
- });
36
- async function updateLayoutIfChanged(node) {
37
- var nodeRect = node.getBoundingClientRect(),
38
- parentNode = node.parentElement,
39
- parentRect = parentNode?.getBoundingClientRect(),
40
- onLayout = LayoutHandlers.get(node);
41
- if (typeof onLayout == "function") {
42
- var cachedRect = NodeRectCache.get(node),
43
- cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
44
- if (!cachedRect ||
45
- // has changed one rect
46
- !isEqualShallow(cachedRect, nodeRect) && (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect))) if (NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect), avoidUpdates) {
47
- var event = getElementLayoutEvent(node);
48
- queuedUpdates.set(node, function () {
49
- return onLayout(event);
50
- });
51
- } else if (strategy === "async") {
52
- var now = Date.now();
53
- LastChangeTime.set(node, now);
54
- var existingTimer = DebounceTimers.get(node);
55
- existingTimer && clearTimeout(existingTimer);
56
- var timer = setTimeout(async function () {
57
- var lastChange = LastChangeTime.get(node) || 0,
58
- timeSinceChange = Date.now() - lastChange;
59
- if (timeSinceChange >= DEBOUNCE_DELAY) {
60
- var event2 = await getElementLayoutEventAsync(node);
61
- onLayout(event2), DebounceTimers.delete(node);
62
- } else {
63
- var remainingDelay = DEBOUNCE_DELAY - timeSinceChange,
64
- newTimer = setTimeout(async function () {
65
- var event3 = await getElementLayoutEventAsync(node);
66
- onLayout(event3), DebounceTimers.delete(node);
67
- }, remainingDelay);
68
- DebounceTimers.set(node, newTimer);
69
- }
70
- }, DEBOUNCE_DELAY);
71
- DebounceTimers.set(node, timer);
72
- } else {
73
- var event1 = getElementLayoutEvent(node);
74
- onLayout(event1);
75
- }
76
- }
77
- }
78
- rAF(layoutOnAnimationFrame);
79
- } else process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
80
- var getElementLayoutEvent = function (target) {
81
- var res = null;
82
- if (measureLayout(target, null, function (x, y, width, height, left, top) {
83
- res = {
84
- nativeEvent: {
85
- layout: {
86
- x,
87
- y,
88
- width,
89
- height,
90
- left,
91
- top
92
- },
93
- target
94
- },
95
- timeStamp: Date.now()
96
- };
97
- }), !res) throw new Error("\u203C\uFE0F");
98
- return res;
99
- },
100
- measureLayout = function (node, relativeTo, callback) {
101
- var relativeNode = relativeTo || node?.parentElement;
102
- if (relativeNode instanceof HTMLElement) {
103
- var nodeDim = node.getBoundingClientRect(),
104
- relativeNodeDim = relativeNode.getBoundingClientRect();
105
- if (relativeNodeDim && nodeDim) {
106
- var {
107
- x,
108
- y,
109
- width,
110
- height,
111
- left,
112
- top
113
- } = getRelativeDimensions(nodeDim, relativeNodeDim);
114
- callback(x, y, width, height, left, top);
115
- }
116
- }
117
- },
118
- getElementLayoutEventAsync = async function (target) {
119
- var res = null;
120
- if (await measureLayoutAsync(target, null, function (x, y, width, height, left, top) {
121
- res = {
122
- nativeEvent: {
123
- layout: {
124
- x,
125
- y,
126
- width,
127
- height,
128
- left,
129
- top
130
- },
131
- target
132
- },
133
- timeStamp: Date.now()
134
- };
135
- }), !res) throw new Error("\u203C\uFE0F");
136
- return res;
137
- },
138
- measureLayoutAsync = async function (node, relativeTo, callback) {
139
- var relativeNode = relativeTo || node?.parentElement;
140
- if (relativeNode instanceof HTMLElement) {
141
- var [nodeDim, relativeNodeDim] = await Promise.all([node.getBoundingClientRect(), relativeNode.getBoundingClientRect()]);
142
- if (relativeNodeDim && nodeDim) {
143
- var {
144
- x,
145
- y,
146
- width,
147
- height,
148
- left,
149
- top
150
- } = getRelativeDimensions(nodeDim, relativeNodeDim);
151
- callback(x, y, width, height, left, top);
152
- }
153
- }
154
- },
155
- getRelativeDimensions = function (a, b) {
156
- var {
157
- height,
158
- left,
159
- top,
160
- width
161
- } = a,
162
- x = left - b.left,
163
- y = top - b.top;
164
- return {
165
- x,
166
- y,
167
- width,
168
- height,
169
- left,
170
- top
171
- };
172
- };
173
- function useElementLayout(ref, onLayout) {
174
- var _ref_current,
175
- node = (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.host;
176
- node && onLayout && LayoutHandlers.set(node, onLayout), useIsomorphicLayoutEffect(function () {
177
- var _ref_current2;
178
- if (onLayout) {
179
- var node2 = (_ref_current2 = ref.current) === null || _ref_current2 === void 0 ? void 0 : _ref_current2.host;
180
- if (node2) return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), function () {
181
- Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
182
- var timer = DebounceTimers.get(node2);
183
- timer && (clearTimeout(timer), DebounceTimers.delete(node2)), LastChangeTime.delete(node2);
184
- };
185
- }
186
- }, [ref, !!onLayout]);
187
- }
188
- export { getElementLayoutEvent, getElementLayoutEventAsync, measureLayout, measureLayoutAsync, setOnLayoutStrategy, useElementLayout };
189
- //# sourceMappingURL=useElementLayout.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","___onDidFinishClientRender","LayoutHandlers","WeakMap","Nodes","Set","strategy","setOnLayoutStrategy","state","NodeRectCache","ParentRectCache","DebounceTimers","LastChangeTime","rAF","window","requestAnimationFrame","DEBOUNCE_DELAY","layoutOnAnimationFrame","now","Date","timeSinceLastFrame","lastFrameAt","expectedFrameTime","hasRecentSyncWork","numDroppedFramesUntilPause","forEach","updateLayoutIfChanged","layoutOnAnimationFrame2","avoidUpdates","queuedUpdates","Map","cb","clear","node","nodeRect","getBoundingClientRect","parentNode","parentElement","parentRect","onLayout","get","cachedRect","cachedParentRect","set","event","getElementLayoutEvent","existingTimer","clearTimeout","timer","setTimeout","lastChange","timeSinceChange","event2","getElementLayoutEventAsync","delete","remainingDelay","newTimer","event3","event1","process","env","NODE_ENV","console","warn","target","res","measureLayout","x","y","width","height","left","top","nativeEvent","layout","timeStamp","Error","relativeTo","callback","relativeNode","HTMLElement","nodeDim","relativeNodeDim","getRelativeDimensions","measureLayoutAsync","Promise","all","a","b"],"sources":["../../../src/hooks/useElementLayout.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,30 +0,0 @@
1
- export const getBoundingClientRect = (node: HTMLElement | null): undefined | DOMRect => {
2
- if (!node || node.nodeType !== 1) return
3
- return node.getBoundingClientRect?.()
4
- }
5
-
6
- export const getBoundingClientRectAsync = (
7
- element: HTMLElement
8
- ): Promise<DOMRectReadOnly | undefined> => {
9
- return new Promise((resolve) => {
10
- let didFallback = false
11
- function fallbackToSync() {
12
- didFallback = true
13
- resolve(getBoundingClientRect(element))
14
- }
15
- const tm = setTimeout(fallbackToSync, 32)
16
- const observer = new IntersectionObserver(
17
- (entries, ob) => {
18
- clearTimeout(tm)
19
- ob.disconnect()
20
- if (!didFallback) {
21
- resolve(entries[0]?.boundingClientRect)
22
- }
23
- },
24
- {
25
- threshold: 0.0001,
26
- }
27
- )
28
- observer.observe(element)
29
- })
30
- }
@@ -1,8 +0,0 @@
1
- import { getBoundingClientRect } from './getBoundingClientRect'
2
-
3
- export const getRect = (node: HTMLElement) => {
4
- const rect = getBoundingClientRect(node)
5
- if (!rect) return
6
- const { x, y, top, left } = rect
7
- return { x, y, width: node.offsetWidth, height: node.offsetHeight, top, left }
8
- }