@tamagui/core 1.92.1 → 1.93.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/hooks/useElementLayout.js +39 -18
- package/dist/cjs/hooks/useElementLayout.js.map +1 -1
- package/dist/cjs/hooks/useElementLayout.native.js +177 -25
- package/dist/cjs/hooks/useElementLayout.native.js.map +2 -2
- package/dist/esm/hooks/useElementLayout.js +39 -18
- package/dist/esm/hooks/useElementLayout.js.map +1 -1
- package/dist/esm/hooks/useElementLayout.mjs +32 -11
- package/dist/esm/hooks/useElementLayout.native.js +176 -25
- package/dist/esm/hooks/useElementLayout.native.js.map +2 -2
- package/dist/native.js +192 -131
- package/dist/native.js.map +2 -2
- package/dist/test.native.js +182 -121
- package/dist/test.native.js.map +2 -2
- package/package.json +6 -6
- package/reset.css +1 -0
- package/src/hooks/useElementLayout.tsx +45 -12
- package/types/hooks/useElementLayout.d.ts +2 -1
- package/types/hooks/useElementLayout.d.ts.map +1 -1
|
@@ -14,30 +14,42 @@ var __export = (target, all) => {
|
|
|
14
14
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
15
15
|
var useElementLayout_exports = {};
|
|
16
16
|
__export(useElementLayout_exports, {
|
|
17
|
+
measureElement: () => measureElement,
|
|
17
18
|
measureLayout: () => measureLayout,
|
|
18
19
|
useElementLayout: () => useElementLayout
|
|
19
20
|
});
|
|
20
21
|
module.exports = __toCommonJS(useElementLayout_exports);
|
|
21
22
|
var import_constants = require("@tamagui/constants"), import_getBoundingClientRect = require("../helpers/getBoundingClientRect");
|
|
22
|
-
const LayoutHandlers = /* @__PURE__ */ new WeakMap();
|
|
23
|
+
const LayoutHandlers = /* @__PURE__ */ new WeakMap(), resizeListeners = /* @__PURE__ */ new Set();
|
|
23
24
|
let resizeObserver = null;
|
|
24
|
-
typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver((entries) => {
|
|
25
|
+
if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver((entries) => {
|
|
25
26
|
for (const { target } of entries) {
|
|
26
27
|
const onLayout = LayoutHandlers.get(target);
|
|
27
28
|
if (typeof onLayout != "function")
|
|
28
29
|
return;
|
|
29
|
-
|
|
30
|
-
onLayout(
|
|
31
|
-
nativeEvent: {
|
|
32
|
-
layout: { x, y, width, height, left, top },
|
|
33
|
-
target
|
|
34
|
-
},
|
|
35
|
-
timeStamp: Date.now()
|
|
36
|
-
});
|
|
30
|
+
measureElement(target).then((event) => {
|
|
31
|
+
onLayout(event);
|
|
37
32
|
});
|
|
38
33
|
}
|
|
39
|
-
}))
|
|
40
|
-
|
|
34
|
+
}), typeof window.addEventListener == "function")) {
|
|
35
|
+
let tm;
|
|
36
|
+
window.addEventListener("resize", () => {
|
|
37
|
+
clearTimeout(tm), tm = setTimeout(() => {
|
|
38
|
+
resizeListeners.forEach((cb) => cb());
|
|
39
|
+
}, 4);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const measureElement = async (target) => new Promise((res) => {
|
|
43
|
+
measureLayout(target, null, (x, y, width, height, left, top) => {
|
|
44
|
+
res({
|
|
45
|
+
nativeEvent: {
|
|
46
|
+
layout: { x, y, width, height, left, top },
|
|
47
|
+
target
|
|
48
|
+
},
|
|
49
|
+
timeStamp: Date.now()
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}), cache = /* @__PURE__ */ new WeakMap(), measureLayout = (node, relativeTo, callback) => {
|
|
41
53
|
const relativeNode = relativeTo || node?.parentNode;
|
|
42
54
|
if (relativeNode instanceof HTMLElement) {
|
|
43
55
|
const now = Date.now();
|
|
@@ -73,13 +85,22 @@ const cache = /* @__PURE__ */ new WeakMap(), measureLayout = (node, relativeTo,
|
|
|
73
85
|
});
|
|
74
86
|
function useElementLayout(ref, onLayout) {
|
|
75
87
|
(0, import_constants.useIsomorphicLayoutEffect)(() => {
|
|
76
|
-
if (!
|
|
88
|
+
if (!onLayout)
|
|
77
89
|
return;
|
|
78
90
|
const node = ref.current;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
91
|
+
node && LayoutHandlers.set(node, onLayout);
|
|
92
|
+
}, [ref, onLayout]), (0, import_constants.useIsomorphicLayoutEffect)(() => {
|
|
93
|
+
if (!resizeObserver)
|
|
94
|
+
return;
|
|
95
|
+
const node = ref.current;
|
|
96
|
+
if (!node || !LayoutHandlers.has(node))
|
|
97
|
+
return;
|
|
98
|
+
const onResize = () => {
|
|
99
|
+
measureElement(node).then(onLayout);
|
|
100
|
+
};
|
|
101
|
+
return resizeListeners.add(onResize), resizeObserver.observe(node), () => {
|
|
102
|
+
resizeListeners.delete(onResize), resizeObserver?.unobserve(node);
|
|
103
|
+
};
|
|
104
|
+
}, [ref]);
|
|
84
105
|
}
|
|
85
106
|
//# sourceMappingURL=useElementLayout.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useElementLayout.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0C,+BAE1C,+BAAsC;AAEtC,MAAM,iBAAiB,oBAAI,QAA2B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -15,6 +15,7 @@ var __export = (target, all) => {
|
|
|
15
15
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
16
|
var useElementLayout_exports = {};
|
|
17
17
|
__export(useElementLayout_exports, {
|
|
18
|
+
measureElement: () => measureElement,
|
|
18
19
|
measureLayout: () => measureLayout,
|
|
19
20
|
useElementLayout: () => useElementLayout
|
|
20
21
|
});
|
|
@@ -30,6 +31,30 @@ function _array_with_holes(arr) {
|
|
|
30
31
|
if (Array.isArray(arr))
|
|
31
32
|
return arr;
|
|
32
33
|
}
|
|
34
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
35
|
+
try {
|
|
36
|
+
var info = gen[key](arg), value = info.value;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
reject(error);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
info.done ? resolve(value) : Promise.resolve(value).then(_next, _throw);
|
|
42
|
+
}
|
|
43
|
+
function _async_to_generator(fn) {
|
|
44
|
+
return function() {
|
|
45
|
+
var self = this, args = arguments;
|
|
46
|
+
return new Promise(function(resolve, reject) {
|
|
47
|
+
var gen = fn.apply(self, args);
|
|
48
|
+
function _next(value) {
|
|
49
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
50
|
+
}
|
|
51
|
+
function _throw(err) {
|
|
52
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
53
|
+
}
|
|
54
|
+
_next(void 0);
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
}
|
|
33
58
|
function _instanceof(left, right) {
|
|
34
59
|
return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
|
|
35
60
|
}
|
|
@@ -74,9 +99,99 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
74
99
|
return _array_like_to_array(o, minLen);
|
|
75
100
|
}
|
|
76
101
|
}
|
|
77
|
-
|
|
78
|
-
var
|
|
79
|
-
|
|
102
|
+
function _ts_generator(thisArg, body) {
|
|
103
|
+
var f, y, t, g, _ = {
|
|
104
|
+
label: 0,
|
|
105
|
+
sent: function() {
|
|
106
|
+
if (t[0] & 1)
|
|
107
|
+
throw t[1];
|
|
108
|
+
return t[1];
|
|
109
|
+
},
|
|
110
|
+
trys: [],
|
|
111
|
+
ops: []
|
|
112
|
+
};
|
|
113
|
+
return g = {
|
|
114
|
+
next: verb(0),
|
|
115
|
+
throw: verb(1),
|
|
116
|
+
return: verb(2)
|
|
117
|
+
}, typeof Symbol == "function" && (g[Symbol.iterator] = function() {
|
|
118
|
+
return this;
|
|
119
|
+
}), g;
|
|
120
|
+
function verb(n) {
|
|
121
|
+
return function(v) {
|
|
122
|
+
return step([
|
|
123
|
+
n,
|
|
124
|
+
v
|
|
125
|
+
]);
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function step(op) {
|
|
129
|
+
if (f)
|
|
130
|
+
throw new TypeError("Generator is already executing.");
|
|
131
|
+
for (; _; )
|
|
132
|
+
try {
|
|
133
|
+
if (f = 1, y && (t = op[0] & 2 ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
|
|
134
|
+
return t;
|
|
135
|
+
switch (y = 0, t && (op = [
|
|
136
|
+
op[0] & 2,
|
|
137
|
+
t.value
|
|
138
|
+
]), op[0]) {
|
|
139
|
+
case 0:
|
|
140
|
+
case 1:
|
|
141
|
+
t = op;
|
|
142
|
+
break;
|
|
143
|
+
case 4:
|
|
144
|
+
return _.label++, {
|
|
145
|
+
value: op[1],
|
|
146
|
+
done: !1
|
|
147
|
+
};
|
|
148
|
+
case 5:
|
|
149
|
+
_.label++, y = op[1], op = [
|
|
150
|
+
0
|
|
151
|
+
];
|
|
152
|
+
continue;
|
|
153
|
+
case 7:
|
|
154
|
+
op = _.ops.pop(), _.trys.pop();
|
|
155
|
+
continue;
|
|
156
|
+
default:
|
|
157
|
+
if (t = _.trys, !(t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
158
|
+
_ = 0;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
162
|
+
_.label = op[1];
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
166
|
+
_.label = t[1], t = op;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
if (t && _.label < t[2]) {
|
|
170
|
+
_.label = t[2], _.ops.push(op);
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
t[2] && _.ops.pop(), _.trys.pop();
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
op = body.call(thisArg, _);
|
|
177
|
+
} catch (e) {
|
|
178
|
+
op = [
|
|
179
|
+
6,
|
|
180
|
+
e
|
|
181
|
+
], y = 0;
|
|
182
|
+
} finally {
|
|
183
|
+
f = t = 0;
|
|
184
|
+
}
|
|
185
|
+
if (op[0] & 5)
|
|
186
|
+
throw op[1];
|
|
187
|
+
return {
|
|
188
|
+
value: op[0] ? op[1] : void 0,
|
|
189
|
+
done: !0
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
var LayoutHandlers = /* @__PURE__ */ new WeakMap(), resizeListeners = /* @__PURE__ */ new Set(), resizeObserver = null;
|
|
194
|
+
if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver(function(entries) {
|
|
80
195
|
var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
|
|
81
196
|
try {
|
|
82
197
|
for (var _loop = function() {
|
|
@@ -85,21 +200,8 @@ typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new Resiz
|
|
|
85
200
|
return {
|
|
86
201
|
v: void 0
|
|
87
202
|
};
|
|
88
|
-
|
|
89
|
-
onLayout(
|
|
90
|
-
nativeEvent: {
|
|
91
|
-
layout: {
|
|
92
|
-
x,
|
|
93
|
-
y,
|
|
94
|
-
width,
|
|
95
|
-
height,
|
|
96
|
-
left,
|
|
97
|
-
top
|
|
98
|
-
},
|
|
99
|
-
target
|
|
100
|
-
},
|
|
101
|
-
timeStamp: Date.now()
|
|
102
|
-
});
|
|
203
|
+
measureElement(target).then(function(event) {
|
|
204
|
+
onLayout(event);
|
|
103
205
|
});
|
|
104
206
|
}, _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
105
207
|
var _ret = _loop();
|
|
@@ -116,8 +218,46 @@ typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new Resiz
|
|
|
116
218
|
throw _iteratorError;
|
|
117
219
|
}
|
|
118
220
|
}
|
|
119
|
-
}))
|
|
120
|
-
var
|
|
221
|
+
}), typeof window.addEventListener == "function")) {
|
|
222
|
+
var tm;
|
|
223
|
+
window.addEventListener("resize", function() {
|
|
224
|
+
clearTimeout(tm), tm = setTimeout(function() {
|
|
225
|
+
resizeListeners.forEach(function(cb) {
|
|
226
|
+
return cb();
|
|
227
|
+
});
|
|
228
|
+
}, 4);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
var measureElement = function() {
|
|
232
|
+
var _ref = _async_to_generator(function(target) {
|
|
233
|
+
return _ts_generator(this, function(_state) {
|
|
234
|
+
return [
|
|
235
|
+
2,
|
|
236
|
+
new Promise(function(res) {
|
|
237
|
+
measureLayout(target, null, function(x, y, width, height, left, top) {
|
|
238
|
+
res({
|
|
239
|
+
nativeEvent: {
|
|
240
|
+
layout: {
|
|
241
|
+
x,
|
|
242
|
+
y,
|
|
243
|
+
width,
|
|
244
|
+
height,
|
|
245
|
+
left,
|
|
246
|
+
top
|
|
247
|
+
},
|
|
248
|
+
target
|
|
249
|
+
},
|
|
250
|
+
timeStamp: Date.now()
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
})
|
|
254
|
+
];
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
return function(target) {
|
|
258
|
+
return _ref.apply(this, arguments);
|
|
259
|
+
};
|
|
260
|
+
}(), cache = /* @__PURE__ */ new WeakMap(), measureLayout = function(node, relativeTo, callback) {
|
|
121
261
|
var relativeNode = relativeTo || (node == null ? void 0 : node.parentNode);
|
|
122
262
|
if (_instanceof(relativeNode, HTMLElement)) {
|
|
123
263
|
var now = Date.now();
|
|
@@ -157,20 +297,32 @@ var cache = /* @__PURE__ */ new WeakMap(), measureLayout = function(node, relati
|
|
|
157
297
|
};
|
|
158
298
|
function useElementLayout(ref, onLayout) {
|
|
159
299
|
(0, import_constants.useIsomorphicLayoutEffect)(function() {
|
|
160
|
-
if (
|
|
300
|
+
if (onLayout) {
|
|
161
301
|
var node = ref.current;
|
|
162
|
-
|
|
163
|
-
return LayoutHandlers.set(node, onLayout), resizeObserver.observe(node), function() {
|
|
164
|
-
resizeObserver == null || resizeObserver.unobserve(node);
|
|
165
|
-
};
|
|
302
|
+
node && LayoutHandlers.set(node, onLayout);
|
|
166
303
|
}
|
|
167
304
|
}, [
|
|
168
305
|
ref,
|
|
169
306
|
onLayout
|
|
307
|
+
]), (0, import_constants.useIsomorphicLayoutEffect)(function() {
|
|
308
|
+
if (resizeObserver) {
|
|
309
|
+
var node = ref.current;
|
|
310
|
+
if (node && LayoutHandlers.has(node)) {
|
|
311
|
+
var onResize = function() {
|
|
312
|
+
measureElement(node).then(onLayout);
|
|
313
|
+
};
|
|
314
|
+
return resizeListeners.add(onResize), resizeObserver.observe(node), function() {
|
|
315
|
+
resizeListeners.delete(onResize), resizeObserver == null || resizeObserver.unobserve(node);
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}, [
|
|
320
|
+
ref
|
|
170
321
|
]);
|
|
171
322
|
}
|
|
172
323
|
// Annotate the CommonJS export names for ESM import in node:
|
|
173
324
|
0 && (module.exports = {
|
|
325
|
+
measureElement,
|
|
174
326
|
measureLayout,
|
|
175
327
|
useElementLayout
|
|
176
328
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/Users/n8/tamagui/packages/core/src/hooks/useElementLayout.tsx"],
|
|
4
|
-
"mappings": "
|
|
5
|
-
"names": ["LayoutHandlers", "WeakMap", "resizeObserver", "window", "ResizeObserver", "entries", "target", "onLayout", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["LayoutHandlers", "WeakMap", "resizeListeners", "Set", "resizeObserver", "window", "ResizeObserver", "entries", "target", "onLayout", "get", "measureElement", "then", "event", "addEventListener", "tm", "clearTimeout", "setTimeout", "forEach", "cb", "Promise", "res", "measureLayout", "x", "y", "width", "height", "left", "top", "nativeEvent", "layout", "timeStamp", "Date", "now", "cache", "node", "relativeTo", "callback", "relativeNode", "parentNode", "HTMLElement", "set", "all", "getBoundingClientRectAsync", "nodeDim", "relativeNodeDim", "getRelativeDimensions", "a", "b", "element", "resolve", "fallbackToSync", "getBoundingClientRect", "observer", "IntersectionObserver", "ob", "disconnect", "boundingClientRect", "threshold", "observe", "useElementLayout", "ref", "useIsomorphicLayoutEffect", "current", "has", "onResize", "add", "delete", "unobserve"]
|
|
6
6
|
}
|
|
@@ -1,24 +1,35 @@
|
|
|
1
1
|
import { useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
2
|
import { getBoundingClientRect } from "../helpers/getBoundingClientRect";
|
|
3
|
-
const LayoutHandlers = /* @__PURE__ */ new WeakMap();
|
|
3
|
+
const LayoutHandlers = /* @__PURE__ */ new WeakMap(), resizeListeners = /* @__PURE__ */ new Set();
|
|
4
4
|
let resizeObserver = null;
|
|
5
|
-
typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver((entries) => {
|
|
5
|
+
if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver((entries) => {
|
|
6
6
|
for (const { target } of entries) {
|
|
7
7
|
const onLayout = LayoutHandlers.get(target);
|
|
8
8
|
if (typeof onLayout != "function")
|
|
9
9
|
return;
|
|
10
|
-
|
|
11
|
-
onLayout(
|
|
12
|
-
nativeEvent: {
|
|
13
|
-
layout: { x, y, width, height, left, top },
|
|
14
|
-
target
|
|
15
|
-
},
|
|
16
|
-
timeStamp: Date.now()
|
|
17
|
-
});
|
|
10
|
+
measureElement(target).then((event) => {
|
|
11
|
+
onLayout(event);
|
|
18
12
|
});
|
|
19
13
|
}
|
|
20
|
-
}))
|
|
21
|
-
|
|
14
|
+
}), typeof window.addEventListener == "function")) {
|
|
15
|
+
let tm;
|
|
16
|
+
window.addEventListener("resize", () => {
|
|
17
|
+
clearTimeout(tm), tm = setTimeout(() => {
|
|
18
|
+
resizeListeners.forEach((cb) => cb());
|
|
19
|
+
}, 4);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const measureElement = async (target) => new Promise((res) => {
|
|
23
|
+
measureLayout(target, null, (x, y, width, height, left, top) => {
|
|
24
|
+
res({
|
|
25
|
+
nativeEvent: {
|
|
26
|
+
layout: { x, y, width, height, left, top },
|
|
27
|
+
target
|
|
28
|
+
},
|
|
29
|
+
timeStamp: Date.now()
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}), cache = /* @__PURE__ */ new WeakMap(), measureLayout = (node, relativeTo, callback) => {
|
|
22
33
|
const relativeNode = relativeTo || node?.parentNode;
|
|
23
34
|
if (relativeNode instanceof HTMLElement) {
|
|
24
35
|
const now = Date.now();
|
|
@@ -54,16 +65,26 @@ const cache = /* @__PURE__ */ new WeakMap(), measureLayout = (node, relativeTo,
|
|
|
54
65
|
});
|
|
55
66
|
function useElementLayout(ref, onLayout) {
|
|
56
67
|
useIsomorphicLayoutEffect(() => {
|
|
57
|
-
if (!
|
|
68
|
+
if (!onLayout)
|
|
58
69
|
return;
|
|
59
70
|
const node = ref.current;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
71
|
+
node && LayoutHandlers.set(node, onLayout);
|
|
72
|
+
}, [ref, onLayout]), useIsomorphicLayoutEffect(() => {
|
|
73
|
+
if (!resizeObserver)
|
|
74
|
+
return;
|
|
75
|
+
const node = ref.current;
|
|
76
|
+
if (!node || !LayoutHandlers.has(node))
|
|
77
|
+
return;
|
|
78
|
+
const onResize = () => {
|
|
79
|
+
measureElement(node).then(onLayout);
|
|
80
|
+
};
|
|
81
|
+
return resizeListeners.add(onResize), resizeObserver.observe(node), () => {
|
|
82
|
+
resizeListeners.delete(onResize), resizeObserver?.unobserve(node);
|
|
83
|
+
};
|
|
84
|
+
}, [ref]);
|
|
65
85
|
}
|
|
66
86
|
export {
|
|
87
|
+
measureElement,
|
|
67
88
|
measureLayout,
|
|
68
89
|
useElementLayout
|
|
69
90
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useElementLayout.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,iCAAiC;AAE1C,SAAS,6BAA6B;AAEtC,MAAM,iBAAiB,oBAAI,QAA2B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
import { useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
2
|
import { getBoundingClientRect } from "../helpers/getBoundingClientRect.mjs";
|
|
3
|
-
const LayoutHandlers = /* @__PURE__ */new WeakMap()
|
|
3
|
+
const LayoutHandlers = /* @__PURE__ */new WeakMap(),
|
|
4
|
+
resizeListeners = /* @__PURE__ */new Set();
|
|
4
5
|
let resizeObserver = null;
|
|
5
|
-
typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver(entries => {
|
|
6
|
+
if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver(entries => {
|
|
6
7
|
for (const {
|
|
7
8
|
target
|
|
8
9
|
} of entries) {
|
|
9
10
|
const onLayout = LayoutHandlers.get(target);
|
|
10
11
|
if (typeof onLayout != "function") return;
|
|
12
|
+
measureElement(target).then(event => {
|
|
13
|
+
onLayout(event);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}), typeof window.addEventListener == "function")) {
|
|
17
|
+
let tm;
|
|
18
|
+
window.addEventListener("resize", () => {
|
|
19
|
+
clearTimeout(tm), tm = setTimeout(() => {
|
|
20
|
+
resizeListeners.forEach(cb => cb());
|
|
21
|
+
}, 4);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const measureElement = async target => new Promise(res => {
|
|
11
25
|
measureLayout(target, null, (x, y, width, height, left, top) => {
|
|
12
|
-
|
|
26
|
+
res({
|
|
13
27
|
nativeEvent: {
|
|
14
28
|
layout: {
|
|
15
29
|
x,
|
|
@@ -24,9 +38,8 @@ typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new Resiz
|
|
|
24
38
|
timeStamp: Date.now()
|
|
25
39
|
});
|
|
26
40
|
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const cache = /* @__PURE__ */new WeakMap(),
|
|
41
|
+
}),
|
|
42
|
+
cache = /* @__PURE__ */new WeakMap(),
|
|
30
43
|
measureLayout = (node, relativeTo, callback) => {
|
|
31
44
|
const relativeNode = relativeTo || node?.parentNode;
|
|
32
45
|
if (relativeNode instanceof HTMLElement) {
|
|
@@ -77,11 +90,19 @@ const cache = /* @__PURE__ */new WeakMap(),
|
|
|
77
90
|
});
|
|
78
91
|
function useElementLayout(ref, onLayout) {
|
|
79
92
|
useIsomorphicLayoutEffect(() => {
|
|
80
|
-
if (!
|
|
93
|
+
if (!onLayout) return;
|
|
94
|
+
const node = ref.current;
|
|
95
|
+
node && LayoutHandlers.set(node, onLayout);
|
|
96
|
+
}, [ref, onLayout]), useIsomorphicLayoutEffect(() => {
|
|
97
|
+
if (!resizeObserver) return;
|
|
81
98
|
const node = ref.current;
|
|
82
|
-
if (node
|
|
83
|
-
|
|
99
|
+
if (!node || !LayoutHandlers.has(node)) return;
|
|
100
|
+
const onResize = () => {
|
|
101
|
+
measureElement(node).then(onLayout);
|
|
102
|
+
};
|
|
103
|
+
return resizeListeners.add(onResize), resizeObserver.observe(node), () => {
|
|
104
|
+
resizeListeners.delete(onResize), resizeObserver?.unobserve(node);
|
|
84
105
|
};
|
|
85
|
-
}, [ref
|
|
106
|
+
}, [ref]);
|
|
86
107
|
}
|
|
87
|
-
export { measureLayout, useElementLayout };
|
|
108
|
+
export { measureElement, measureLayout, useElementLayout };
|