@tamagui/use-element-layout 1.130.7 → 1.131.0
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.
- package/dist/cjs/index.cjs +39 -82
- package/dist/cjs/index.js +42 -55
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +53 -67
- package/dist/cjs/index.native.js.map +2 -2
- package/dist/esm/index.js +42 -55
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +32 -79
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +40 -81
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +91 -81
- package/types/index.d.ts +19 -7
- package/types/index.d.ts.map +13 -11
package/dist/esm/index.js
CHANGED
|
@@ -11,7 +11,7 @@ const queuedUpdates = /* @__PURE__ */ new Map();
|
|
|
11
11
|
function enable() {
|
|
12
12
|
avoidUpdates && (avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach((cb) => cb()), queuedUpdates.clear()));
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function startGlobalObservers() {
|
|
15
15
|
!isClient || globalIntersectionObserver || (globalIntersectionObserver = new IntersectionObserver(
|
|
16
16
|
(entries) => {
|
|
17
17
|
entries.forEach((entry) => {
|
|
@@ -69,7 +69,7 @@ if (isClient)
|
|
|
69
69
|
}
|
|
70
70
|
rAF(layoutOnAnimationFrame);
|
|
71
71
|
let frameCount = 0;
|
|
72
|
-
const RUN_EVERY_X_FRAMES =
|
|
72
|
+
const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP, RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal : 10;
|
|
73
73
|
} else
|
|
74
74
|
process.env.NODE_ENV === "development" && console.warn(
|
|
75
75
|
"No requestAnimationFrame - please polyfill for onLayout to work correctly"
|
|
@@ -80,48 +80,9 @@ const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
|
80
80
|
target: nodeRect
|
|
81
81
|
},
|
|
82
82
|
timeStamp: Date.now()
|
|
83
|
-
}),
|
|
84
|
-
const relativeNode = relativeTo || node?.parentElement;
|
|
85
|
-
if (relativeNode instanceof HTMLElement) {
|
|
86
|
-
const nodeDim = node.getBoundingClientRect(), relativeNodeDim = relativeNode.getBoundingClientRect();
|
|
87
|
-
if (relativeNodeDim && nodeDim) {
|
|
88
|
-
const { x, y, width, height, left, top } = getRelativeDimensions(
|
|
89
|
-
nodeDim,
|
|
90
|
-
relativeNodeDim
|
|
91
|
-
);
|
|
92
|
-
callback(x, y, width, height, left, top);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}, getElementLayoutEventAsync = async (target) => {
|
|
96
|
-
const layout = await measureLayoutAsync(target);
|
|
97
|
-
if (!layout)
|
|
98
|
-
throw new Error("\u203C\uFE0F");
|
|
99
|
-
return {
|
|
100
|
-
nativeEvent: {
|
|
101
|
-
layout,
|
|
102
|
-
target
|
|
103
|
-
},
|
|
104
|
-
timeStamp: Date.now()
|
|
105
|
-
};
|
|
106
|
-
}, measureLayoutAsync = async (node, relativeTo) => {
|
|
107
|
-
const relativeNode = relativeTo || node?.parentElement;
|
|
108
|
-
if (relativeNode instanceof HTMLElement) {
|
|
109
|
-
const [nodeDim, relativeNodeDim] = await Promise.all([
|
|
110
|
-
getBoundingClientRectAsync(node),
|
|
111
|
-
getBoundingClientRectAsync(relativeNode)
|
|
112
|
-
]);
|
|
113
|
-
if (relativeNodeDim && nodeDim) {
|
|
114
|
-
const { x, y, width, height, left, top } = getRelativeDimensions(
|
|
115
|
-
nodeDim,
|
|
116
|
-
relativeNodeDim
|
|
117
|
-
);
|
|
118
|
-
return { x, y, width, height, left, top };
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return null;
|
|
122
|
-
}, getRelativeDimensions = (a, b) => {
|
|
83
|
+
}), getRelativeDimensions = (a, b) => {
|
|
123
84
|
const { height, left, top, width } = a, x = left - b.left, y = top - b.top;
|
|
124
|
-
return { x, y, width, height, left, top };
|
|
85
|
+
return { x, y, width, height, pageX: a.left, pageY: a.top };
|
|
125
86
|
};
|
|
126
87
|
function useElementLayout(ref, onLayout) {
|
|
127
88
|
const node = ensureWebElement(ref.current?.host);
|
|
@@ -129,7 +90,7 @@ function useElementLayout(ref, onLayout) {
|
|
|
129
90
|
if (!onLayout) return;
|
|
130
91
|
const node2 = ref.current?.host;
|
|
131
92
|
if (!node2) return;
|
|
132
|
-
Nodes.add(node2),
|
|
93
|
+
Nodes.add(node2), startGlobalObservers(), globalIntersectionObserver && (globalIntersectionObserver.observe(node2), IntersectionState.set(node2, !0));
|
|
133
94
|
const parentNode = node2.parentNode;
|
|
134
95
|
return parentNode && onLayout(
|
|
135
96
|
getElementLayoutEvent(
|
|
@@ -154,22 +115,48 @@ const getBoundingClientRectAsync = (node) => new Promise((res) => {
|
|
|
154
115
|
}
|
|
155
116
|
);
|
|
156
117
|
io.observe(node);
|
|
157
|
-
}),
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
118
|
+
}), measureNode = async (node, relativeTo) => {
|
|
119
|
+
const relativeNode = relativeTo || node?.parentElement;
|
|
120
|
+
if (relativeNode instanceof HTMLElement) {
|
|
121
|
+
const [nodeDim, relativeNodeDim] = await Promise.all([
|
|
122
|
+
getBoundingClientRectAsync(node),
|
|
123
|
+
getBoundingClientRectAsync(relativeNode)
|
|
124
|
+
]);
|
|
125
|
+
if (relativeNodeDim && nodeDim)
|
|
126
|
+
return getRelativeDimensions(nodeDim, relativeNodeDim);
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}, measure = async (node, callback) => {
|
|
130
|
+
const out = await measureNode(
|
|
131
|
+
node,
|
|
132
|
+
node.parentNode instanceof HTMLElement ? node.parentNode : null
|
|
133
|
+
);
|
|
134
|
+
return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
|
|
165
135
|
};
|
|
136
|
+
function createMeasure(node) {
|
|
137
|
+
return (callback) => measure(node, callback);
|
|
138
|
+
}
|
|
139
|
+
const measureInWindow = async (node, callback) => {
|
|
140
|
+
const out = await measureNode(node, null);
|
|
141
|
+
return out && callback?.(out.pageX, out.pageY, out.width, out.height), out;
|
|
142
|
+
}, createMeasureInWindow = (node) => (callback) => measureInWindow(node, callback), measureLayout = async (node, relativeNode, callback) => {
|
|
143
|
+
const out = await measureNode(node, relativeNode);
|
|
144
|
+
return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
|
|
145
|
+
};
|
|
146
|
+
function createMeasureLayout(node) {
|
|
147
|
+
return (relativeTo, callback) => measureLayout(node, relativeTo, callback);
|
|
148
|
+
}
|
|
166
149
|
export {
|
|
150
|
+
createMeasure,
|
|
151
|
+
createMeasureInWindow,
|
|
152
|
+
createMeasureLayout,
|
|
167
153
|
enable,
|
|
154
|
+
getBoundingClientRectAsync,
|
|
168
155
|
getElementLayoutEvent,
|
|
169
|
-
|
|
170
|
-
|
|
156
|
+
measure,
|
|
157
|
+
measureInWindow,
|
|
171
158
|
measureLayout,
|
|
172
|
-
|
|
159
|
+
measureNode,
|
|
173
160
|
setOnLayoutStrategy,
|
|
174
161
|
useElementLayout
|
|
175
162
|
};
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,UAAU,iCAAiC;AACpD,SAAS,sBAAsB;AAG/B,MAAM,iBAAiB,oBAAI,QAA+B,GACpD,QAAQ,oBAAI,IAAiB,GAC7B,oBAAoB,oBAAI,QAA8B;AAG5D,IAAI,6BAA0D,MAQ1D,WAAsC;AAEnC,SAAS,oBAAoB,OAAwC;AAC1E,aAAW;AACb;AAmBA,MAAM,gBAAgB,oBAAI,QAA8B,GAClD,kBAAkB,oBAAI,QAA8B,GACpD,iBAAiB,oBAAI,QAA6B,GAElD,MAAM,OAAO,SAAW,MAAc,OAAO,wBAAwB;AAG3E,IAAI,eAAe;AACnB,MAAM,gBAAgB,oBAAI,IAA2B;AAE9C,SAAS,SAAe;AAC7B,EAAI,iBACF,eAAe,IACX,kBACF,cAAc,QAAQ,CAAC,OAAO,GAAG,CAAC,GAClC,cAAc,MAAM;AAG1B;AAEA,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["node"]
|
|
6
6
|
}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -17,7 +17,7 @@ const queuedUpdates = /* @__PURE__ */new Map();
|
|
|
17
17
|
function enable() {
|
|
18
18
|
avoidUpdates && (avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(cb => cb()), queuedUpdates.clear()));
|
|
19
19
|
}
|
|
20
|
-
function
|
|
20
|
+
function startGlobalObservers() {
|
|
21
21
|
!isClient || globalIntersectionObserver || (globalIntersectionObserver = new IntersectionObserver(entries => {
|
|
22
22
|
entries.forEach(entry => {
|
|
23
23
|
const node = entry.target;
|
|
@@ -68,7 +68,8 @@ if (isClient) if (rAF) {
|
|
|
68
68
|
}
|
|
69
69
|
rAF(layoutOnAnimationFrame);
|
|
70
70
|
let frameCount = 0;
|
|
71
|
-
const
|
|
71
|
+
const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP,
|
|
72
|
+
RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal : 10;
|
|
72
73
|
} else process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
|
|
73
74
|
const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
74
75
|
nativeEvent: {
|
|
@@ -77,60 +78,6 @@ const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
|
77
78
|
},
|
|
78
79
|
timeStamp: Date.now()
|
|
79
80
|
}),
|
|
80
|
-
measureLayout = (node, relativeTo, callback) => {
|
|
81
|
-
const relativeNode = relativeTo || node?.parentElement;
|
|
82
|
-
if (relativeNode instanceof HTMLElement) {
|
|
83
|
-
const nodeDim = node.getBoundingClientRect(),
|
|
84
|
-
relativeNodeDim = relativeNode.getBoundingClientRect();
|
|
85
|
-
if (relativeNodeDim && nodeDim) {
|
|
86
|
-
const {
|
|
87
|
-
x,
|
|
88
|
-
y,
|
|
89
|
-
width,
|
|
90
|
-
height,
|
|
91
|
-
left,
|
|
92
|
-
top
|
|
93
|
-
} = getRelativeDimensions(nodeDim, relativeNodeDim);
|
|
94
|
-
callback(x, y, width, height, left, top);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
getElementLayoutEventAsync = async target => {
|
|
99
|
-
const layout = await measureLayoutAsync(target);
|
|
100
|
-
if (!layout) throw new Error("\u203C\uFE0F");
|
|
101
|
-
return {
|
|
102
|
-
nativeEvent: {
|
|
103
|
-
layout,
|
|
104
|
-
target
|
|
105
|
-
},
|
|
106
|
-
timeStamp: Date.now()
|
|
107
|
-
};
|
|
108
|
-
},
|
|
109
|
-
measureLayoutAsync = async (node, relativeTo) => {
|
|
110
|
-
const relativeNode = relativeTo || node?.parentElement;
|
|
111
|
-
if (relativeNode instanceof HTMLElement) {
|
|
112
|
-
const [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);
|
|
113
|
-
if (relativeNodeDim && nodeDim) {
|
|
114
|
-
const {
|
|
115
|
-
x,
|
|
116
|
-
y,
|
|
117
|
-
width,
|
|
118
|
-
height,
|
|
119
|
-
left,
|
|
120
|
-
top
|
|
121
|
-
} = getRelativeDimensions(nodeDim, relativeNodeDim);
|
|
122
|
-
return {
|
|
123
|
-
x,
|
|
124
|
-
y,
|
|
125
|
-
width,
|
|
126
|
-
height,
|
|
127
|
-
left,
|
|
128
|
-
top
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return null;
|
|
133
|
-
},
|
|
134
81
|
getRelativeDimensions = (a, b) => {
|
|
135
82
|
const {
|
|
136
83
|
height,
|
|
@@ -145,8 +92,8 @@ const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
|
145
92
|
y,
|
|
146
93
|
width,
|
|
147
94
|
height,
|
|
148
|
-
left,
|
|
149
|
-
top
|
|
95
|
+
pageX: a.left,
|
|
96
|
+
pageY: a.top
|
|
150
97
|
};
|
|
151
98
|
};
|
|
152
99
|
function useElementLayout(ref, onLayout) {
|
|
@@ -155,7 +102,7 @@ function useElementLayout(ref, onLayout) {
|
|
|
155
102
|
if (!onLayout) return;
|
|
156
103
|
const node2 = ref.current?.host;
|
|
157
104
|
if (!node2) return;
|
|
158
|
-
Nodes.add(node2),
|
|
105
|
+
Nodes.add(node2), startGlobalObservers(), globalIntersectionObserver && (globalIntersectionObserver.observe(node2), IntersectionState.set(node2, !0));
|
|
159
106
|
const parentNode = node2.parentNode;
|
|
160
107
|
return parentNode && onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect())), () => {
|
|
161
108
|
Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2), LastChangeTime.delete(node2), IntersectionState.delete(node2), globalIntersectionObserver && globalIntersectionObserver.unobserve(node2);
|
|
@@ -172,26 +119,32 @@ const getBoundingClientRectAsync = node => new Promise(res => {
|
|
|
172
119
|
});
|
|
173
120
|
io.observe(node);
|
|
174
121
|
}),
|
|
175
|
-
|
|
176
|
-
|
|
122
|
+
measureNode = async (node, relativeTo) => {
|
|
123
|
+
const relativeNode = relativeTo || node?.parentElement;
|
|
124
|
+
if (relativeNode instanceof HTMLElement) {
|
|
125
|
+
const [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);
|
|
126
|
+
if (relativeNodeDim && nodeDim) return getRelativeDimensions(nodeDim, relativeNodeDim);
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
177
129
|
},
|
|
178
|
-
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
const {
|
|
182
|
-
x,
|
|
183
|
-
y,
|
|
184
|
-
top,
|
|
185
|
-
left
|
|
186
|
-
} = rect;
|
|
187
|
-
return {
|
|
188
|
-
x,
|
|
189
|
-
y,
|
|
190
|
-
width: node.offsetWidth,
|
|
191
|
-
height: node.offsetHeight,
|
|
192
|
-
top,
|
|
193
|
-
left
|
|
194
|
-
};
|
|
130
|
+
measure = async (node, callback) => {
|
|
131
|
+
const out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);
|
|
132
|
+
return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
|
|
195
133
|
};
|
|
196
|
-
|
|
134
|
+
function createMeasure(node) {
|
|
135
|
+
return callback => measure(node, callback);
|
|
136
|
+
}
|
|
137
|
+
const measureInWindow = async (node, callback) => {
|
|
138
|
+
const out = await measureNode(node, null);
|
|
139
|
+
return out && callback?.(out.pageX, out.pageY, out.width, out.height), out;
|
|
140
|
+
},
|
|
141
|
+
createMeasureInWindow = node => callback => measureInWindow(node, callback),
|
|
142
|
+
measureLayout = async (node, relativeNode, callback) => {
|
|
143
|
+
const out = await measureNode(node, relativeNode);
|
|
144
|
+
return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
|
|
145
|
+
};
|
|
146
|
+
function createMeasureLayout(node) {
|
|
147
|
+
return (relativeTo, callback) => measureLayout(node, relativeTo, callback);
|
|
148
|
+
}
|
|
149
|
+
export { createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, setOnLayoutStrategy, useElementLayout };
|
|
197
150
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","LayoutHandlers","WeakMap","Nodes","Set","IntersectionState","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","ParentRectCache","LastChangeTime","rAF","window","requestAnimationFrame","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","
|
|
1
|
+
{"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","LayoutHandlers","WeakMap","Nodes","Set","IntersectionState","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","ParentRectCache","LastChangeTime","rAF","window","requestAnimationFrame","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","IntersectionObserver","entries","entry","node","target","get","isIntersecting","set","threshold","layoutOnAnimationFrame","frameCount","RUN_EVERY_X_FRAMES","Number","MAX_SAFE_INTEGER","updateLayoutIfChanged","supportsCheckVisibility","document","body","process","env","TAMAGUI_ONLAYOUT_VISIBILITY_CHECK","checkVisibility","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRectAsync","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","NODE_ENV","console","warn","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","now","a","b","height","left","top","width","x","y","pageX","pageY","useElementLayout","ref","ensureWebElement","current","host","node2","add","observe","delete","unobserve","HTMLElement","res","nodeType","io","disconnect","boundingClientRect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","measure","callback","out","createMeasure","measureInWindow","createMeasureInWindow","measureLayout","createMeasureLayout"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -19,7 +19,7 @@ function enable() {
|
|
|
19
19
|
return cb();
|
|
20
20
|
}), queuedUpdates.clear()));
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function startGlobalObservers() {
|
|
23
23
|
!isClient || globalIntersectionObserver || (globalIntersectionObserver = new IntersectionObserver(function (entries) {
|
|
24
24
|
entries.forEach(function (entry) {
|
|
25
25
|
var node = entry.target;
|
|
@@ -76,7 +76,8 @@ if (isClient) if (rAF) {
|
|
|
76
76
|
}
|
|
77
77
|
rAF(layoutOnAnimationFrame);
|
|
78
78
|
var frameCount = 0,
|
|
79
|
-
|
|
79
|
+
userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP,
|
|
80
|
+
RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal : 10;
|
|
80
81
|
} else process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
|
|
81
82
|
var getElementLayoutEvent = function (nodeRect, parentRect) {
|
|
82
83
|
return {
|
|
@@ -87,60 +88,6 @@ var getElementLayoutEvent = function (nodeRect, parentRect) {
|
|
|
87
88
|
timeStamp: Date.now()
|
|
88
89
|
};
|
|
89
90
|
},
|
|
90
|
-
measureLayout = function (node, relativeTo, callback) {
|
|
91
|
-
var relativeNode = relativeTo || node?.parentElement;
|
|
92
|
-
if (relativeNode instanceof HTMLElement) {
|
|
93
|
-
var nodeDim = node.getBoundingClientRect(),
|
|
94
|
-
relativeNodeDim = relativeNode.getBoundingClientRect();
|
|
95
|
-
if (relativeNodeDim && nodeDim) {
|
|
96
|
-
var {
|
|
97
|
-
x,
|
|
98
|
-
y,
|
|
99
|
-
width,
|
|
100
|
-
height,
|
|
101
|
-
left,
|
|
102
|
-
top
|
|
103
|
-
} = getRelativeDimensions(nodeDim, relativeNodeDim);
|
|
104
|
-
callback(x, y, width, height, left, top);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
getElementLayoutEventAsync = async function (target) {
|
|
109
|
-
var layout = await measureLayoutAsync(target);
|
|
110
|
-
if (!layout) throw new Error("\u203C\uFE0F");
|
|
111
|
-
return {
|
|
112
|
-
nativeEvent: {
|
|
113
|
-
layout,
|
|
114
|
-
target
|
|
115
|
-
},
|
|
116
|
-
timeStamp: Date.now()
|
|
117
|
-
};
|
|
118
|
-
},
|
|
119
|
-
measureLayoutAsync = async function (node, relativeTo) {
|
|
120
|
-
var relativeNode = relativeTo || node?.parentElement;
|
|
121
|
-
if (relativeNode instanceof HTMLElement) {
|
|
122
|
-
var [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);
|
|
123
|
-
if (relativeNodeDim && nodeDim) {
|
|
124
|
-
var {
|
|
125
|
-
x,
|
|
126
|
-
y,
|
|
127
|
-
width,
|
|
128
|
-
height,
|
|
129
|
-
left,
|
|
130
|
-
top
|
|
131
|
-
} = getRelativeDimensions(nodeDim, relativeNodeDim);
|
|
132
|
-
return {
|
|
133
|
-
x,
|
|
134
|
-
y,
|
|
135
|
-
width,
|
|
136
|
-
height,
|
|
137
|
-
left,
|
|
138
|
-
top
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return null;
|
|
143
|
-
},
|
|
144
91
|
getRelativeDimensions = function (a, b) {
|
|
145
92
|
var {
|
|
146
93
|
height,
|
|
@@ -155,8 +102,8 @@ var getElementLayoutEvent = function (nodeRect, parentRect) {
|
|
|
155
102
|
y,
|
|
156
103
|
width,
|
|
157
104
|
height,
|
|
158
|
-
left,
|
|
159
|
-
top
|
|
105
|
+
pageX: a.left,
|
|
106
|
+
pageY: a.top
|
|
160
107
|
};
|
|
161
108
|
};
|
|
162
109
|
function useElementLayout(ref, onLayout) {
|
|
@@ -167,7 +114,7 @@ function useElementLayout(ref, onLayout) {
|
|
|
167
114
|
if (onLayout) {
|
|
168
115
|
var node2 = (_ref_current2 = ref.current) === null || _ref_current2 === void 0 ? void 0 : _ref_current2.host;
|
|
169
116
|
if (node2) {
|
|
170
|
-
Nodes.add(node2),
|
|
117
|
+
Nodes.add(node2), startGlobalObservers(), globalIntersectionObserver && (globalIntersectionObserver.observe(node2), IntersectionState.set(node2, !0));
|
|
171
118
|
var parentNode = node2.parentNode;
|
|
172
119
|
return parentNode && onLayout(getElementLayoutEvent(node2.getBoundingClientRect(), parentNode.getBoundingClientRect())), function () {
|
|
173
120
|
Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2), LastChangeTime.delete(node2), IntersectionState.delete(node2), globalIntersectionObserver && globalIntersectionObserver.unobserve(node2);
|
|
@@ -190,28 +137,40 @@ var getBoundingClientRectAsync = function (node) {
|
|
|
190
137
|
io.observe(node);
|
|
191
138
|
});
|
|
192
139
|
},
|
|
193
|
-
|
|
194
|
-
var
|
|
195
|
-
if (
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
var rect = getBoundingClientRect(node);
|
|
199
|
-
if (rect) {
|
|
200
|
-
var {
|
|
201
|
-
x,
|
|
202
|
-
y,
|
|
203
|
-
top,
|
|
204
|
-
left
|
|
205
|
-
} = rect;
|
|
206
|
-
return {
|
|
207
|
-
x,
|
|
208
|
-
y,
|
|
209
|
-
width: node.offsetWidth,
|
|
210
|
-
height: node.offsetHeight,
|
|
211
|
-
top,
|
|
212
|
-
left
|
|
213
|
-
};
|
|
140
|
+
measureNode = async function (node, relativeTo) {
|
|
141
|
+
var relativeNode = relativeTo || node?.parentElement;
|
|
142
|
+
if (relativeNode instanceof HTMLElement) {
|
|
143
|
+
var [nodeDim, relativeNodeDim] = await Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]);
|
|
144
|
+
if (relativeNodeDim && nodeDim) return getRelativeDimensions(nodeDim, relativeNodeDim);
|
|
214
145
|
}
|
|
146
|
+
return null;
|
|
147
|
+
},
|
|
148
|
+
measure = async function (node, callback) {
|
|
149
|
+
var out = await measureNode(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);
|
|
150
|
+
return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
|
|
215
151
|
};
|
|
216
|
-
|
|
152
|
+
function createMeasure(node) {
|
|
153
|
+
return function (callback) {
|
|
154
|
+
return measure(node, callback);
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
var measureInWindow = async function (node, callback) {
|
|
158
|
+
var out = await measureNode(node, null);
|
|
159
|
+
return out && callback?.(out.pageX, out.pageY, out.width, out.height), out;
|
|
160
|
+
},
|
|
161
|
+
createMeasureInWindow = function (node) {
|
|
162
|
+
return function (callback) {
|
|
163
|
+
return measureInWindow(node, callback);
|
|
164
|
+
};
|
|
165
|
+
},
|
|
166
|
+
measureLayout = async function (node, relativeNode, callback) {
|
|
167
|
+
var out = await measureNode(node, relativeNode);
|
|
168
|
+
return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
|
|
169
|
+
};
|
|
170
|
+
function createMeasureLayout(node) {
|
|
171
|
+
return function (relativeTo, callback) {
|
|
172
|
+
return measureLayout(node, relativeTo, callback);
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
export { createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, setOnLayoutStrategy, useElementLayout };
|
|
217
176
|
//# sourceMappingURL=index.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","LayoutHandlers","WeakMap","Nodes","Set","IntersectionState","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","ParentRectCache","LastChangeTime","rAF","window","requestAnimationFrame","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","
|
|
1
|
+
{"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","LayoutHandlers","WeakMap","Nodes","Set","IntersectionState","globalIntersectionObserver","strategy","setOnLayoutStrategy","state","NodeRectCache","ParentRectCache","LastChangeTime","rAF","window","requestAnimationFrame","avoidUpdates","queuedUpdates","Map","enable","forEach","cb","clear","startGlobalObservers","IntersectionObserver","entries","entry","node","target","get","isIntersecting","set","threshold","layoutOnAnimationFrame","frameCount","RUN_EVERY_X_FRAMES","Number","MAX_SAFE_INTEGER","updateLayoutIfChanged","layoutOnAnimationFrame2","supportsCheckVisibility","document","body","process","env","TAMAGUI_ONLAYOUT_VISIBILITY_CHECK","checkVisibility","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRectAsync","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","userSkipVal","TAMAGUI_LAYOUT_FRAME_SKIP","NODE_ENV","console","warn","nativeEvent","layout","getRelativeDimensions","timeStamp","Date","now","a","b","height","left","top","width","x","y","pageX","pageY","useElementLayout","ref","_ref_current","ensureWebElement","current","host","_ref_current2","node2","add","observe","delete","unobserve","HTMLElement","res","nodeType","io","disconnect","boundingClientRect","measureNode","relativeTo","relativeNode","nodeDim","relativeNodeDim","measure","callback","out","createMeasure","measureInWindow"],"sources":["../../src/index.ts"],"sourcesContent":[null],"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": "1.
|
|
3
|
+
"version": "1.131.0",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@tamagui/constants": "1.
|
|
35
|
-
"@tamagui/is-equal-shallow": "1.
|
|
34
|
+
"@tamagui/constants": "1.131.0",
|
|
35
|
+
"@tamagui/is-equal-shallow": "1.131.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@tamagui/build": "1.
|
|
38
|
+
"@tamagui/build": "1.131.0",
|
|
39
39
|
"react": "*"
|
|
40
40
|
},
|
|
41
41
|
"publishConfig": {
|