@tamagui/use-element-layout 1.134.5 → 1.135.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 +50 -31
- package/dist/cjs/index.js +72 -66
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/index.native.js +93 -81
- package/dist/cjs/index.native.js.map +3 -3
- package/dist/esm/index.js +73 -65
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/index.mjs +49 -31
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +88 -69
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +4 -4
- package/src/{index.ts → index.tsx} +125 -109
- package/types/index.d.ts +8 -1
- package/types/index.d.ts.map +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
5
|
-
"names": ["_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "_ref_current", "node"]
|
|
3
|
+
"sources": ["../../src/index.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["_jsx", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "_ref_current", "node"]
|
|
6
6
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
2
|
import { isEqualShallow } from "@tamagui/is-equal-shallow";
|
|
3
|
-
|
|
3
|
+
import { createContext, useContext, useId } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
const LayoutHandlers = /* @__PURE__ */ new WeakMap(), LayoutDisableKey = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set(), IntersectionState = /* @__PURE__ */ new WeakMap(), DisableLayoutContextValues = {}, DisableLayoutContextKey = createContext(""), ENABLE = isClient && typeof IntersectionObserver < "u", LayoutMeasurementController = ({
|
|
6
|
+
disable,
|
|
7
|
+
children
|
|
8
|
+
}) => {
|
|
9
|
+
const id = useId();
|
|
10
|
+
return useIsomorphicLayoutEffect(() => {
|
|
11
|
+
DisableLayoutContextValues[id] = disable;
|
|
12
|
+
}, [disable, id]), /* @__PURE__ */ jsx(DisableLayoutContextKey.Provider, { value: id, children });
|
|
13
|
+
};
|
|
4
14
|
let globalIntersectionObserver = null, strategy = "async";
|
|
5
15
|
function setOnLayoutStrategy(state) {
|
|
6
16
|
strategy = state;
|
|
7
17
|
}
|
|
8
|
-
const NodeRectCache = /* @__PURE__ */ new WeakMap(),
|
|
18
|
+
const NodeRectCache = /* @__PURE__ */ new WeakMap(), LastChangeTime = /* @__PURE__ */ new WeakMap();
|
|
9
19
|
let avoidUpdates = !0;
|
|
10
20
|
const queuedUpdates = /* @__PURE__ */ new Map();
|
|
11
21
|
function enable() {
|
|
12
22
|
avoidUpdates && (avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach((cb) => cb()), queuedUpdates.clear()));
|
|
13
23
|
}
|
|
14
24
|
function startGlobalObservers() {
|
|
15
|
-
!
|
|
25
|
+
!ENABLE || globalIntersectionObserver || (globalIntersectionObserver = new IntersectionObserver(
|
|
16
26
|
(entries) => {
|
|
17
27
|
entries.forEach((entry) => {
|
|
18
28
|
const node = entry.target;
|
|
@@ -24,70 +34,67 @@ function startGlobalObservers() {
|
|
|
24
34
|
}
|
|
25
35
|
));
|
|
26
36
|
}
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
if (ENABLE) {
|
|
38
|
+
const BoundingRects = /* @__PURE__ */ new WeakMap();
|
|
39
|
+
async function updateLayoutIfChanged(node) {
|
|
40
|
+
const onLayout = LayoutHandlers.get(node);
|
|
41
|
+
if (typeof onLayout != "function") return;
|
|
42
|
+
const parentNode = node.parentElement;
|
|
43
|
+
if (!parentNode) return;
|
|
44
|
+
let nodeRect, parentRect;
|
|
45
|
+
if (strategy === "async") {
|
|
46
|
+
const [nr, pr] = await Promise.all([
|
|
47
|
+
BoundingRects.get(node),
|
|
48
|
+
BoundingRects.get(parentNode)
|
|
49
|
+
]);
|
|
50
|
+
if (!nr || !pr)
|
|
32
51
|
return;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
} else
|
|
47
|
-
nodeRect = node.getBoundingClientRect(), parentRect = parentNode.getBoundingClientRect();
|
|
48
|
-
const cachedRect = NodeRectCache.get(node), cachedParentRect = NodeRectCache.get(parentNode);
|
|
49
|
-
if (!cachedRect || // has changed one rect
|
|
50
|
-
// @ts-expect-error DOMRectReadOnly can go into object
|
|
51
|
-
!isEqualShallow(cachedRect, nodeRect) && // @ts-expect-error DOMRectReadOnly can go into object
|
|
52
|
-
(!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect))) {
|
|
53
|
-
NodeRectCache.set(node, nodeRect), ParentRectCache.set(parentNode, parentRect);
|
|
54
|
-
const event = getElementLayoutEvent(nodeRect, parentRect);
|
|
55
|
-
avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
|
|
56
|
-
}
|
|
52
|
+
nodeRect = nr, parentRect = pr;
|
|
53
|
+
} else
|
|
54
|
+
nodeRect = node.getBoundingClientRect(), parentRect = parentNode.getBoundingClientRect();
|
|
55
|
+
if (!nodeRect || !parentRect)
|
|
56
|
+
return;
|
|
57
|
+
const cachedRect = NodeRectCache.get(node), cachedParentRect = NodeRectCache.get(parentNode);
|
|
58
|
+
if (!cachedRect || !cachedParentRect || // has changed one rect
|
|
59
|
+
// @ts-expect-error DOMRectReadOnly can go into object
|
|
60
|
+
!isEqualShallow(cachedRect, nodeRect) || // @ts-expect-error DOMRectReadOnly can go into object
|
|
61
|
+
!isEqualShallow(cachedParentRect, parentRect)) {
|
|
62
|
+
NodeRectCache.set(node, nodeRect), NodeRectCache.set(parentNode, parentRect);
|
|
63
|
+
const event = getElementLayoutEvent(nodeRect, parentRect);
|
|
64
|
+
avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
|
|
57
65
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
}
|
|
67
|
+
const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP, RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal : 14;
|
|
68
|
+
async function layoutOnAnimationFrame() {
|
|
69
|
+
if (strategy !== "off") {
|
|
70
|
+
const visibleNodes = [];
|
|
71
|
+
await new Promise((res) => {
|
|
72
|
+
const io = new IntersectionObserver(
|
|
73
|
+
(entries) => {
|
|
74
|
+
io.disconnect();
|
|
75
|
+
for (const entry of entries)
|
|
76
|
+
BoundingRects.set(entry.target, entry.boundingClientRect);
|
|
77
|
+
res(!0);
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
threshold: 0
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
let didObserve = !1;
|
|
84
|
+
for (const node of Nodes) {
|
|
85
|
+
if (!(node.parentElement instanceof HTMLElement)) continue;
|
|
86
|
+
const disableKey = LayoutDisableKey.get(node);
|
|
87
|
+
disableKey && DisableLayoutContextValues[disableKey] === !0 || IntersectionState.get(node) !== !1 && (didObserve = !0, io.observe(node), io.observe(node.parentElement), visibleNodes.push(node));
|
|
66
88
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
for (const entry of entries)
|
|
72
|
-
BoundingRects.set(entry.target, entry.boundingClientRect);
|
|
73
|
-
res();
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
threshold: 0
|
|
77
|
-
}
|
|
78
|
-
);
|
|
79
|
-
for (const node of Nodes)
|
|
80
|
-
node.parentElement instanceof HTMLElement && (io.observe(node), io.observe(node.parentElement));
|
|
81
|
-
}), Nodes.forEach((node) => {
|
|
82
|
-
updateLayoutIfChanged(node);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
rAF(layoutOnAnimationFrame);
|
|
89
|
+
didObserve || res(!1);
|
|
90
|
+
}) && visibleNodes.forEach((node) => {
|
|
91
|
+
updateLayoutIfChanged(node);
|
|
92
|
+
});
|
|
86
93
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
94
|
+
setTimeout(layoutOnAnimationFrame, 16.6667 * RUN_EVERY_X_FRAMES);
|
|
95
|
+
}
|
|
96
|
+
layoutOnAnimationFrame();
|
|
97
|
+
}
|
|
91
98
|
const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
92
99
|
nativeEvent: {
|
|
93
100
|
layout: getRelativeDimensions(nodeRect, parentRect),
|
|
@@ -99,8 +106,8 @@ const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
|
99
106
|
return { x, y, width, height, pageX: a.left, pageY: a.top };
|
|
100
107
|
};
|
|
101
108
|
function useElementLayout(ref, onLayout) {
|
|
102
|
-
const node = ensureWebElement(ref.current?.host);
|
|
103
|
-
node && onLayout && LayoutHandlers.set(node, onLayout), useIsomorphicLayoutEffect(() => {
|
|
109
|
+
const disableKey = useContext(DisableLayoutContextKey), node = ensureWebElement(ref.current?.host);
|
|
110
|
+
node && onLayout && (LayoutHandlers.set(node, onLayout), LayoutDisableKey.set(node, disableKey)), useIsomorphicLayoutEffect(() => {
|
|
104
111
|
if (!onLayout) return;
|
|
105
112
|
const node2 = ref.current?.host;
|
|
106
113
|
if (!node2) return;
|
|
@@ -161,6 +168,7 @@ function createMeasureLayout(node) {
|
|
|
161
168
|
return (relativeTo, callback) => measureLayout(node, relativeTo, callback);
|
|
162
169
|
}
|
|
163
170
|
export {
|
|
171
|
+
LayoutMeasurementController,
|
|
164
172
|
createMeasure,
|
|
165
173
|
createMeasureInWindow,
|
|
166
174
|
createMeasureLayout,
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.
|
|
4
|
-
"mappings": "AAAA,SAAS,UAAU,iCAAiC;AACpD,SAAS,sBAAsB;
|
|
3
|
+
"sources": ["../../src/index.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,UAAU,iCAAiC;AACpD,SAAS,sBAAsB;AAC/B,SAAS,eAAe,YAAY,aAA6C;AA8B7E;AA5BJ,MAAM,iBAAiB,oBAAI,QAA+B,GACpD,mBAAmB,oBAAI,QAA6B,GACpD,QAAQ,oBAAI,IAAiB,GAC7B,oBAAoB,oBAAI,QAA8B,GAGtD,6BAAsD,CAAC,GACvD,0BAA0B,cAAsB,EAAE,GAElD,SAAS,YAAY,OAAO,uBAAyB,KAK9C,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AACF,MAGiB;AACf,QAAM,KAAK,MAAM;AAEjB,mCAA0B,MAAM;AAC9B,+BAA2B,EAAE,IAAI;AAAA,EACnC,GAAG,CAAC,SAAS,EAAE,CAAC,GAGd,oBAAC,wBAAwB,UAAxB,EAAiC,OAAO,IACtC,UACH;AAEJ;AAGA,IAAI,6BAA0D,MAQ1D,WAAsC;AAEnC,SAAS,oBAAoB,OAAwC;AAC1E,aAAW;AACb;AAmBA,MAAM,gBAAgB,oBAAI,QAA8B,GAClD,iBAAiB,oBAAI,QAA6B;AAGxD,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,uBAAuB;AAC9B,EAAI,CAAC,UAAU,+BAEf,6BAA6B,IAAI;AAAA,IAC/B,CAAC,YAAY;AACX,cAAQ,QAAQ,CAAC,UAAU;AACzB,cAAM,OAAO,MAAM;AACnB,QAAI,kBAAkB,IAAI,IAAI,MAAM,MAAM,kBACxC,kBAAkB,IAAI,MAAM,MAAM,cAAc;AAAA,MAEpD,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAEA,IAAI,QAAQ;AACV,QAAM,gBAAgB,oBAAI,QAA0C;AAEpE,iBAAe,sBAAsB,MAAmB;AACtD,UAAM,WAAW,eAAe,IAAI,IAAI;AACxC,QAAI,OAAO,YAAa,WAAY;AAEpC,UAAM,aAAa,KAAK;AACxB,QAAI,CAAC,WAAY;AAEjB,QAAI,UACA;AAEJ,QAAI,aAAa,SAAS;AACxB,YAAM,CAAC,IAAI,EAAE,IAAI,MAAM,QAAQ,IAAI;AAAA,QACjC,cAAc,IAAI,IAAI;AAAA,QACtB,cAAc,IAAI,UAAU;AAAA,MAC9B,CAAC;AAED,UAAI,CAAC,MAAM,CAAC;AACV;AAGF,iBAAW,IACX,aAAa;AAAA,IACf;AACE,iBAAW,KAAK,sBAAsB,GACtC,aAAa,WAAW,sBAAsB;AAGhD,QAAI,CAAC,YAAY,CAAC;AAChB;AAGF,UAAM,aAAa,cAAc,IAAI,IAAI,GACnC,mBAAmB,cAAc,IAAI,UAAU;AAErD,QACE,CAAC,cACD,CAAC;AAAA;AAAA,IAGD,CAAC,eAAe,YAAY,QAAQ;AAAA,IAEpC,CAAC,eAAe,kBAAkB,UAAU,GAC5C;AACA,oBAAc,IAAI,MAAM,QAAQ,GAChC,cAAc,IAAI,YAAY,UAAU;AAExC,YAAM,QAAQ,sBAAsB,UAAU,UAAU;AAExD,MAAI,eACF,cAAc,IAAI,MAAM,MAAM,SAAS,KAAK,CAAC,IAE7C,SAAS,KAAK;AAAA,IAElB;AAAA,EACF;AAMA,QAAM,cAAc,QAAQ,IAAI,2BAC1B,qBAAqB,cAAc,CAAC,cAAc;AAExD,iBAAe,yBAAyB;AACtC,QAAI,aAAa,OAAO;AACtB,YAAM,eAA8B,CAAC;AAmCrC,MAhCe,MAAM,IAAI,QAAiB,CAAC,QAAQ;AACjD,cAAM,KAAK,IAAI;AAAA,UACb,CAAC,YAAY;AACX,eAAG,WAAW;AACd,uBAAW,SAAS;AAClB,4BAAc,IAAI,MAAM,QAAQ,MAAM,kBAAkB;AAE1D,gBAAI,EAAI;AAAA,UACV;AAAA,UACA;AAAA,YACE,WAAW;AAAA,UACb;AAAA,QACF;AAEA,YAAI,aAAa;AAEjB,mBAAW,QAAQ,OAAO;AACxB,cAAI,EAAE,KAAK,yBAAyB,aAAc;AAClD,gBAAM,aAAa,iBAAiB,IAAI,IAAI;AAC5C,UAAI,cAAc,2BAA2B,UAAU,MAAM,MACzD,kBAAkB,IAAI,IAAI,MAAM,OACpC,aAAa,IACb,GAAG,QAAQ,IAAI,GACf,GAAG,QAAQ,KAAK,aAAa,GAC7B,aAAa,KAAK,IAAI;AAAA,QACxB;AAEA,QAAK,cACH,IAAI,EAAK;AAAA,MAEb,CAAC,KAGC,aAAa,QAAQ,CAAC,SAAS;AAC7B,8BAAsB,IAAI;AAAA,MAC5B,CAAC;AAAA,IAEL;AAEA,eAAW,wBAAwB,UAAU,kBAAkB;AAAA,EACjE;AAEA,yBAAuB;AACzB;AAEO,MAAM,wBAAwB,CACnC,UACA,gBAEO;AAAA,EACL,aAAa;AAAA,IACX,QAAQ,sBAAsB,UAAU,UAAU;AAAA,IAClD,QAAQ;AAAA,EACV;AAAA,EACA,WAAW,KAAK,IAAI;AACtB,IAGI,wBAAwB,CAAC,GAAoB,MAAuB;AACxE,QAAM,EAAE,QAAQ,MAAM,KAAK,MAAM,IAAI,GAC/B,IAAI,OAAO,EAAE,MACb,IAAI,MAAM,EAAE;AAClB,SAAO,EAAE,GAAG,GAAG,OAAO,QAAQ,OAAO,EAAE,MAAM,OAAO,EAAE,IAAI;AAC5D;AAEO,SAAS,iBACd,KACA,UACM;AACN,QAAM,aAAa,WAAW,uBAAuB,GAG/C,OAAO,iBAAiB,IAAI,SAAS,IAAI;AAC/C,EAAI,QAAQ,aACV,eAAe,IAAI,MAAM,QAAQ,GACjC,iBAAiB,IAAI,MAAM,UAAU,IAGvC,0BAA0B,MAAM;AAC9B,QAAI,CAAC,SAAU;AACf,UAAMA,QAAO,IAAI,SAAS;AAC1B,QAAI,CAACA,MAAM;AAEX,UAAM,IAAIA,KAAI,GAGd,qBAAqB,GACjB,+BACF,2BAA2B,QAAQA,KAAI,GAEvC,kBAAkB,IAAIA,OAAM,EAAI;AAIlC,UAAM,aAAaA,MAAK;AACxB,WAAI,cACF;AAAA,MACE;AAAA,QACEA,MAAK,sBAAsB;AAAA,QAC3B,WAAW,sBAAsB;AAAA,MACnC;AAAA,IACF,GAGK,MAAM;AACX,YAAM,OAAOA,KAAI,GACjB,eAAe,OAAOA,KAAI,GAC1B,cAAc,OAAOA,KAAI,GACzB,eAAe,OAAOA,KAAI,GAC1B,kBAAkB,OAAOA,KAAI,GAGzB,8BACF,2BAA2B,UAAUA,KAAI;AAAA,IAE7C;AAAA,EACF,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACtB;AAEA,SAAS,iBAAoB,GAA+B;AAC1D,MAAI,SAAO,cAAgB;AAG3B,WAAO,aAAa,cAAc,IAAI;AACxC;AAEO,MAAM,6BAA6B,CACxC,SAEO,IAAI,QAAiC,CAAC,QAAQ;AACnD,MAAI,CAAC,QAAQ,KAAK,aAAa,EAAG,QAAO,IAAI,EAAK;AAElD,QAAM,KAAK,IAAI;AAAA,IACb,CAAC,aACC,GAAG,WAAW,GACP,IAAI,QAAQ,CAAC,EAAE,kBAAkB;AAAA,IAE1C;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EACF;AACA,KAAG,QAAQ,IAAI;AACjB,CAAC,GAGU,cAAc,OACzB,MACA,eACgC;AAChC,QAAM,eAAe,cAAc,MAAM;AACzC,MAAI,wBAAwB,aAAa;AACvC,UAAM,CAAC,SAAS,eAAe,IAAI,MAAM,QAAQ,IAAI;AAAA,MACnD,2BAA2B,IAAI;AAAA,MAC/B,2BAA2B,YAAY;AAAA,IACzC,CAAC;AACD,QAAI,mBAAmB;AACrB,aAAO,sBAAsB,SAAS,eAAe;AAAA,EAEzD;AACA,SAAO;AACT,GAaa,UAAU,OACrB,MACA,aACgC;AAChC,QAAM,MAAM,MAAM;AAAA,IAChB;AAAA,IACA,KAAK,sBAAsB,cAAc,KAAK,aAAa;AAAA,EAC7D;AACA,SAAI,OACF,WAAW,IAAI,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,KAAK,GAE/D;AACT;AAEO,SAAS,cACd,MACsD;AACtD,SAAO,CAAC,aAAa,QAAQ,MAAM,QAAQ;AAC7C;AAIO,MAAM,kBAAkB,OAC7B,MACA,aACiC;AACjC,QAAM,MAAM,MAAM,YAAY,MAAM,IAAI;AACxC,SAAI,OACF,WAAW,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM,GAEjD;AACT,GAEa,wBAAwB,CACnC,SAEO,CAAC,aAAa,gBAAgB,MAAM,QAAQ,GAGxC,gBAAgB,OAC3B,MACA,cACA,aACgC;AAChC,QAAM,MAAM,MAAM,YAAY,MAAM,YAAY;AAChD,SAAI,OACF,WAAW,IAAI,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,KAAK,GAE/D;AACT;AAEO,SAAS,oBACd,MAC+E;AAC/E,SAAO,CAAC,YAAY,aAAa,cAAc,MAAM,YAAY,QAAQ;AAC3E;",
|
|
5
5
|
"names": ["node"]
|
|
6
6
|
}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,24 +1,40 @@
|
|
|
1
1
|
import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
2
|
import { isEqualShallow } from "@tamagui/is-equal-shallow";
|
|
3
|
+
import { createContext, useContext, useId } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
5
|
const LayoutHandlers = /* @__PURE__ */new WeakMap(),
|
|
6
|
+
LayoutDisableKey = /* @__PURE__ */new WeakMap(),
|
|
4
7
|
Nodes = /* @__PURE__ */new Set(),
|
|
5
|
-
IntersectionState = /* @__PURE__ */new WeakMap()
|
|
8
|
+
IntersectionState = /* @__PURE__ */new WeakMap(),
|
|
9
|
+
DisableLayoutContextValues = {},
|
|
10
|
+
DisableLayoutContextKey = createContext(""),
|
|
11
|
+
ENABLE = isClient && typeof IntersectionObserver < "u",
|
|
12
|
+
LayoutMeasurementController = ({
|
|
13
|
+
disable,
|
|
14
|
+
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
|
+
};
|
|
6
24
|
let globalIntersectionObserver = null,
|
|
7
25
|
strategy = "async";
|
|
8
26
|
function setOnLayoutStrategy(state) {
|
|
9
27
|
strategy = state;
|
|
10
28
|
}
|
|
11
29
|
const NodeRectCache = /* @__PURE__ */new WeakMap(),
|
|
12
|
-
|
|
13
|
-
LastChangeTime = /* @__PURE__ */new WeakMap(),
|
|
14
|
-
rAF = typeof window < "u" ? window.requestAnimationFrame : void 0;
|
|
30
|
+
LastChangeTime = /* @__PURE__ */new WeakMap();
|
|
15
31
|
let avoidUpdates = !0;
|
|
16
32
|
const queuedUpdates = /* @__PURE__ */new Map();
|
|
17
33
|
function enable() {
|
|
18
34
|
avoidUpdates && (avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(cb => cb()), queuedUpdates.clear()));
|
|
19
35
|
}
|
|
20
36
|
function startGlobalObservers() {
|
|
21
|
-
!
|
|
37
|
+
!ENABLE || globalIntersectionObserver || (globalIntersectionObserver = new IntersectionObserver(entries => {
|
|
22
38
|
entries.forEach(entry => {
|
|
23
39
|
const node = entry.target;
|
|
24
40
|
IntersectionState.get(node) !== entry.isIntersecting && IntersectionState.set(node, entry.isIntersecting);
|
|
@@ -27,60 +43,61 @@ function startGlobalObservers() {
|
|
|
27
43
|
threshold: 0
|
|
28
44
|
}));
|
|
29
45
|
}
|
|
30
|
-
if (
|
|
31
|
-
const
|
|
32
|
-
BoundingRects = /* @__PURE__ */new WeakMap();
|
|
46
|
+
if (ENABLE) {
|
|
47
|
+
const BoundingRects = /* @__PURE__ */new WeakMap();
|
|
33
48
|
async function updateLayoutIfChanged(node) {
|
|
34
|
-
if (IntersectionState.get(node) === !1 || process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === "1" && supportsCheckVisibility && !node.checkVisibility()) return;
|
|
35
49
|
const onLayout = LayoutHandlers.get(node);
|
|
36
50
|
if (typeof onLayout != "function") return;
|
|
37
51
|
const parentNode = node.parentElement;
|
|
38
52
|
if (!parentNode) return;
|
|
39
53
|
let nodeRect, parentRect;
|
|
40
54
|
if (strategy === "async") {
|
|
41
|
-
const [nr, pr] = await Promise.all([BoundingRects.get(node)
|
|
42
|
-
if (nr
|
|
55
|
+
const [nr, pr] = await Promise.all([BoundingRects.get(node), BoundingRects.get(parentNode)]);
|
|
56
|
+
if (!nr || !pr) return;
|
|
43
57
|
nodeRect = nr, parentRect = pr;
|
|
44
58
|
} else nodeRect = node.getBoundingClientRect(), parentRect = parentNode.getBoundingClientRect();
|
|
59
|
+
if (!nodeRect || !parentRect) return;
|
|
45
60
|
const cachedRect = NodeRectCache.get(node),
|
|
46
61
|
cachedParentRect = NodeRectCache.get(parentNode);
|
|
47
|
-
if (!cachedRect ||
|
|
62
|
+
if (!cachedRect || !cachedParentRect ||
|
|
48
63
|
// has changed one rect
|
|
49
64
|
// @ts-expect-error DOMRectReadOnly can go into object
|
|
50
|
-
!isEqualShallow(cachedRect, nodeRect)
|
|
65
|
+
!isEqualShallow(cachedRect, nodeRect) ||
|
|
51
66
|
// @ts-expect-error DOMRectReadOnly can go into object
|
|
52
|
-
!
|
|
53
|
-
NodeRectCache.set(node, nodeRect),
|
|
67
|
+
!isEqualShallow(cachedParentRect, parentRect)) {
|
|
68
|
+
NodeRectCache.set(node, nodeRect), NodeRectCache.set(parentNode, parentRect);
|
|
54
69
|
const event = getElementLayoutEvent(nodeRect, parentRect);
|
|
55
70
|
avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
|
|
56
71
|
}
|
|
57
72
|
}
|
|
58
|
-
rAF(layoutOnAnimationFrame);
|
|
59
|
-
let frameCount = 0;
|
|
60
73
|
const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP,
|
|
61
|
-
RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal :
|
|
74
|
+
RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal : 14;
|
|
62
75
|
async function layoutOnAnimationFrame() {
|
|
63
76
|
if (strategy !== "off") {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
frameCount === Number.MAX_SAFE_INTEGER && (frameCount = 0), await new Promise(res => {
|
|
77
|
+
const visibleNodes = [];
|
|
78
|
+
(await new Promise(res => {
|
|
69
79
|
const io = new IntersectionObserver(entries => {
|
|
70
80
|
io.disconnect();
|
|
71
81
|
for (const entry of entries) BoundingRects.set(entry.target, entry.boundingClientRect);
|
|
72
|
-
res();
|
|
82
|
+
res(!0);
|
|
73
83
|
}, {
|
|
74
84
|
threshold: 0
|
|
75
85
|
});
|
|
76
|
-
|
|
77
|
-
|
|
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));
|
|
91
|
+
}
|
|
92
|
+
didObserve || res(!1);
|
|
93
|
+
})) && visibleNodes.forEach(node => {
|
|
78
94
|
updateLayoutIfChanged(node);
|
|
79
95
|
});
|
|
80
96
|
}
|
|
81
|
-
|
|
97
|
+
setTimeout(layoutOnAnimationFrame, 16.6667 * RUN_EVERY_X_FRAMES);
|
|
82
98
|
}
|
|
83
|
-
|
|
99
|
+
layoutOnAnimationFrame();
|
|
100
|
+
}
|
|
84
101
|
const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
85
102
|
nativeEvent: {
|
|
86
103
|
layout: getRelativeDimensions(nodeRect, parentRect),
|
|
@@ -107,8 +124,9 @@ const getElementLayoutEvent = (nodeRect, parentRect) => ({
|
|
|
107
124
|
};
|
|
108
125
|
};
|
|
109
126
|
function useElementLayout(ref, onLayout) {
|
|
110
|
-
const
|
|
111
|
-
|
|
127
|
+
const disableKey = useContext(DisableLayoutContextKey),
|
|
128
|
+
node = ensureWebElement(ref.current?.host);
|
|
129
|
+
node && onLayout && (LayoutHandlers.set(node, onLayout), LayoutDisableKey.set(node, disableKey)), useIsomorphicLayoutEffect(() => {
|
|
112
130
|
if (!onLayout) return;
|
|
113
131
|
const node2 = ref.current?.host;
|
|
114
132
|
if (!node2) return;
|
|
@@ -156,5 +174,5 @@ const measureInWindow = async (node, callback) => {
|
|
|
156
174
|
function createMeasureLayout(node) {
|
|
157
175
|
return (relativeTo, callback) => measureLayout(node, relativeTo, callback);
|
|
158
176
|
}
|
|
159
|
-
export { createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, setOnLayoutStrategy, useElementLayout };
|
|
177
|
+
export { LayoutMeasurementController, createMeasure, createMeasureInWindow, createMeasureLayout, enable, getBoundingClientRectAsync, getElementLayoutEvent, measure, measureInWindow, measureLayout, measureNode, setOnLayoutStrategy, useElementLayout };
|
|
160
178
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","
|
|
1
|
+
{"version":3,"names":["isClient","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":[]}
|