@tamagui/use-element-layout 1.130.2 → 1.130.3
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 +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +1 -1
- package/dist/cjs/index.native.js.map +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +7 -4
- package/types/index.d.ts.map +2 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -76,7 +76,7 @@ if (import_constants.isClient) if (rAF) {
|
|
|
76
76
|
const supportsCheckVisibility = "checkVisibility" in document.body;
|
|
77
77
|
let lastFrameAt = Date.now();
|
|
78
78
|
async function updateLayoutIfChanged(node, frameId) {
|
|
79
|
-
if (
|
|
79
|
+
if (IntersectionState.get(node) === !1 || process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === "1" && supportsCheckVisibility && !node.checkVisibility()) return;
|
|
80
80
|
const onLayout = LayoutHandlers.get(node);
|
|
81
81
|
if (typeof onLayout != "function") return;
|
|
82
82
|
const parentNode = node.parentElement;
|
package/dist/cjs/index.js
CHANGED
|
@@ -65,7 +65,7 @@ if (import_constants.isClient)
|
|
|
65
65
|
const supportsCheckVisibility = "checkVisibility" in document.body;
|
|
66
66
|
let lastFrameAt = Date.now();
|
|
67
67
|
async function updateLayoutIfChanged(node, frameId) {
|
|
68
|
-
if (
|
|
68
|
+
if (IntersectionState.get(node) === !1 || process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === "1" && supportsCheckVisibility && !node.checkVisibility())
|
|
69
69
|
return;
|
|
70
70
|
const onLayout = LayoutHandlers.get(node);
|
|
71
71
|
if (typeof onLayout != "function") return;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAoD,+BACpD,0BAA+B;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,MAAM,oBAAoB,OACpB,6BAA6B;AAEnC,SAAS,kCAAkC;AACzC,EAAI,CAAC,6BAAY,+BAEjB,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;AACF,MAAI,KAAK;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["node"]
|
|
6
6
|
}
|
package/dist/cjs/index.native.js
CHANGED
|
@@ -64,7 +64,7 @@ if (import_constants.isClient)
|
|
|
64
64
|
};
|
|
65
65
|
var layoutOnAnimationFrame2 = layoutOnAnimationFrame, supportsCheckVisibility = "checkVisibility" in document.body, lastFrameAt = Date.now();
|
|
66
66
|
async function updateLayoutIfChanged(node, frameId) {
|
|
67
|
-
if (!(supportsCheckVisibility && !node.checkVisibility())
|
|
67
|
+
if (IntersectionState.get(node) !== !1 && !(process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === "1" && supportsCheckVisibility && !node.checkVisibility())) {
|
|
68
68
|
var onLayout = LayoutHandlers.get(node);
|
|
69
69
|
if (typeof onLayout == "function") {
|
|
70
70
|
var parentNode = node.parentElement;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;uBAAoD,+BACpD,0BAA+B,sCAGzBA,iBAAiB,oBAAIC,QAAAA,GACrBC,QAAQ,oBAAIC,IAAAA,GACZC,oBAAoB,oBAAIH,QAAAA,GAG1BI,6BAA0D,MAQ1DC,WAAsC;AAEnC,SAASC,oBAAoBC,OAAgC;AAClEF,aAAWE;AACb;AAmBA,IAAMC,gBAAgB,oBAAIR,QAAAA,GACpBS,kBAAkB,oBAAIT,QAAAA,GACtBU,iBAAiB,oBAAIV,QAAAA,GAErBW,MAAM,OAAOC,SAAW,MAAcA,OAAOC,wBAAwBC,QAGvEC,eAAe,IACbC,gBAAgB,oBAAIC,IAAAA;AAEnB,SAASC,SAAAA;AACd,EAAIH,iBACFA,eAAe,IACXC,kBACFA,cAAcG,QAAQ,SAACC,IAAAA;WAAOA,GAAAA;MAC9BJ,cAAcK,MAAK;AAGzB;AAEA,IAAMC,oBAAoB,OACpBC,6BAA6B;AAEnC,SAASC,kCAAAA;AACP,EAAI,CAACC,6BAAYrB,+BAEjBA,6BAA6B,IAAIsB,qBAC/B,SAACC,SAAAA;AACCA,YAAQR,QAAQ,SAACS,OAAAA;AACf,UAAMC,OAAOD,MAAME;AACnB,MAAI3B,kBAAkB4B,IAAIF,IAAAA,MAAUD,MAAMI,kBACxC7B,kBAAkB8B,IAAIJ,MAAMD,MAAMI,cAAc;IAEpD,CAAA;EACF,GACA;IACEE,WAAW;EACb,CAAA;AAEJ;AAEA,IAAIT;AACF,MAAId,KAAK;
|
|
5
|
-
"names": ["LayoutHandlers", "WeakMap", "Nodes", "Set", "IntersectionState", "globalIntersectionObserver", "strategy", "setOnLayoutStrategy", "state", "NodeRectCache", "ParentRectCache", "LastChangeTime", "rAF", "window", "requestAnimationFrame", "undefined", "avoidUpdates", "queuedUpdates", "Map", "enable", "forEach", "cb", "clear", "expectedFrameTime", "numDroppedFramesUntilPause", "startGlobalIntersectionObserver", "isClient", "IntersectionObserver", "entries", "entry", "node", "target", "get", "isIntersecting", "set", "threshold", "layoutOnAnimationFrame", "now", "Date", "timeSinceLastFrame", "lastFrameAt", "frameCount", "RUN_EVERY_X_FRAMES", "hasRecentSyncWork", "updateLayoutIfChanged", "supportsCheckVisibility", "document", "body", "frameId", "checkVisibility", "onLayout", "parentNode", "parentElement", "nodeRect", "parentRect", "nr", "pr", "Promise", "all", "getBoundingClientRectAsync", "getBoundingClientRect", "cachedRect", "cachedParentRect", "isEqualShallow", "event", "getElementLayoutEvent", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["LayoutHandlers", "WeakMap", "Nodes", "Set", "IntersectionState", "globalIntersectionObserver", "strategy", "setOnLayoutStrategy", "state", "NodeRectCache", "ParentRectCache", "LastChangeTime", "rAF", "window", "requestAnimationFrame", "undefined", "avoidUpdates", "queuedUpdates", "Map", "enable", "forEach", "cb", "clear", "expectedFrameTime", "numDroppedFramesUntilPause", "startGlobalIntersectionObserver", "isClient", "IntersectionObserver", "entries", "entry", "node", "target", "get", "isIntersecting", "set", "threshold", "layoutOnAnimationFrame", "now", "Date", "timeSinceLastFrame", "lastFrameAt", "frameCount", "RUN_EVERY_X_FRAMES", "hasRecentSyncWork", "updateLayoutIfChanged", "supportsCheckVisibility", "document", "body", "frameId", "process", "env", "TAMAGUI_ONLAYOUT_VISIBILITY_CHECK", "checkVisibility", "onLayout", "parentNode", "parentElement", "nodeRect", "parentRect", "nr", "pr", "Promise", "all", "getBoundingClientRectAsync", "getBoundingClientRect", "cachedRect", "cachedParentRect", "isEqualShallow", "event", "getElementLayoutEvent", "NODE_ENV", "console", "warn", "nativeEvent", "layout", "getRelativeDimensions", "timeStamp", "measureLayout", "relativeTo", "callback", "relativeNode", "HTMLElement", "nodeDim", "relativeNodeDim", "x", "y", "width", "height", "left", "top", "getElementLayoutEventAsync", "measureLayoutAsync", "Error", "a", "b", "useElementLayout", "ref", "ensureWebElement", "current", "host", "useIsomorphicLayoutEffect", "add", "observe", "delete", "unobserve", "res", "nodeType", "io", "disconnect", "boundingClientRect", "getRect", "rect", "offsetWidth", "offsetHeight"]
|
|
6
6
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -40,7 +40,7 @@ if (isClient)
|
|
|
40
40
|
const supportsCheckVisibility = "checkVisibility" in document.body;
|
|
41
41
|
let lastFrameAt = Date.now();
|
|
42
42
|
async function updateLayoutIfChanged(node, frameId) {
|
|
43
|
-
if (
|
|
43
|
+
if (IntersectionState.get(node) === !1 || process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === "1" && supportsCheckVisibility && !node.checkVisibility())
|
|
44
44
|
return;
|
|
45
45
|
const onLayout = LayoutHandlers.get(node);
|
|
46
46
|
if (typeof onLayout != "function") return;
|
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,MAAM,oBAAoB,OACpB,6BAA6B;AAEnC,SAAS,kCAAkC;AACzC,EAAI,CAAC,YAAY,+BAEjB,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;AACF,MAAI,KAAK;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["node"]
|
|
6
6
|
}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -44,7 +44,7 @@ if (isClient) if (rAF) {
|
|
|
44
44
|
const supportsCheckVisibility = "checkVisibility" in document.body;
|
|
45
45
|
let lastFrameAt = Date.now();
|
|
46
46
|
async function updateLayoutIfChanged(node, frameId) {
|
|
47
|
-
if (
|
|
47
|
+
if (IntersectionState.get(node) === !1 || process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === "1" && supportsCheckVisibility && !node.checkVisibility()) return;
|
|
48
48
|
const onLayout = LayoutHandlers.get(node);
|
|
49
49
|
if (typeof onLayout != "function") return;
|
|
50
50
|
const parentNode = node.parentElement;
|
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","expectedFrameTime","numDroppedFramesUntilPause","startGlobalIntersectionObserver","IntersectionObserver","entries","entry","node","target","get","isIntersecting","set","threshold","layoutOnAnimationFrame","now","Date","timeSinceLastFrame","lastFrameAt","frameCount","RUN_EVERY_X_FRAMES","updateLayoutIfChanged","supportsCheckVisibility","document","body","frameId","checkVisibility","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRectAsync","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","
|
|
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","expectedFrameTime","numDroppedFramesUntilPause","startGlobalIntersectionObserver","IntersectionObserver","entries","entry","node","target","get","isIntersecting","set","threshold","layoutOnAnimationFrame","now","Date","timeSinceLastFrame","lastFrameAt","frameCount","RUN_EVERY_X_FRAMES","updateLayoutIfChanged","supportsCheckVisibility","document","body","frameId","process","env","TAMAGUI_ONLAYOUT_VISIBILITY_CHECK","checkVisibility","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRectAsync","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","NODE_ENV","console","warn","nativeEvent","layout","getRelativeDimensions","timeStamp","measureLayout","relativeTo","callback","relativeNode","HTMLElement","nodeDim","relativeNodeDim","x","y","width","height","left","top","getElementLayoutEventAsync","measureLayoutAsync","Error","a","b","useElementLayout","ref","ensureWebElement","current","host","node2","add","observe","delete","unobserve","res","nodeType","io","disconnect","boundingClientRect","getRect","rect","offsetWidth","offsetHeight"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -51,7 +51,7 @@ if (isClient) if (rAF) {
|
|
|
51
51
|
supportsCheckVisibility = "checkVisibility" in document.body,
|
|
52
52
|
lastFrameAt = Date.now();
|
|
53
53
|
async function updateLayoutIfChanged(node, frameId) {
|
|
54
|
-
if (!(supportsCheckVisibility && !node.checkVisibility())
|
|
54
|
+
if (IntersectionState.get(node) !== !1 && !(process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === "1" && supportsCheckVisibility && !node.checkVisibility())) {
|
|
55
55
|
var onLayout = LayoutHandlers.get(node);
|
|
56
56
|
if (typeof onLayout == "function") {
|
|
57
57
|
var parentNode = node.parentElement;
|
|
@@ -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","expectedFrameTime","numDroppedFramesUntilPause","startGlobalIntersectionObserver","IntersectionObserver","entries","entry","node","target","get","isIntersecting","set","threshold","layoutOnAnimationFrame","now","Date","timeSinceLastFrame","lastFrameAt","frameCount","RUN_EVERY_X_FRAMES","hasRecentSyncWork","updateLayoutIfChanged","layoutOnAnimationFrame2","supportsCheckVisibility","document","body","frameId","checkVisibility","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRectAsync","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","
|
|
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","expectedFrameTime","numDroppedFramesUntilPause","startGlobalIntersectionObserver","IntersectionObserver","entries","entry","node","target","get","isIntersecting","set","threshold","layoutOnAnimationFrame","now","Date","timeSinceLastFrame","lastFrameAt","frameCount","RUN_EVERY_X_FRAMES","hasRecentSyncWork","updateLayoutIfChanged","layoutOnAnimationFrame2","supportsCheckVisibility","document","body","frameId","process","env","TAMAGUI_ONLAYOUT_VISIBILITY_CHECK","checkVisibility","onLayout","parentNode","parentElement","nodeRect","parentRect","nr","pr","Promise","all","getBoundingClientRectAsync","getBoundingClientRect","cachedRect","cachedParentRect","event","getElementLayoutEvent","NODE_ENV","console","warn","nativeEvent","layout","getRelativeDimensions","timeStamp","measureLayout","relativeTo","callback","relativeNode","HTMLElement","nodeDim","relativeNodeDim","x","y","width","height","left","top","getElementLayoutEventAsync","measureLayoutAsync","Error","a","b","useElementLayout","ref","_ref_current","ensureWebElement","current","host","_ref_current2","node2","add","observe","delete","unobserve","res","nodeType","io","disconnect","boundingClientRect"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,yBAAA,QAAiC;AACpD,SAASC,cAAA,QAAsB;AAG/B,IAAAC,cAAM,kBAAiB,IAAAC,OAAI;EAA+BC,KACpD,kBAAQ,IAAAC,GAAI;EAAiBC,iBAC7B,kBAAoB,IAAAH,OAAI;EAA8BI,0BAAA;EAAAC,QAAA;AAG5D,SAAIC,oBAAAC,KAA0D;EAUvDF,QAAS,GAAAE,KAAA;AACd;AACF,IAAAC,aAAA,sBAAAR,OAAA;EAAAS,eAAA,sBAAAT,OAAA;EAAAU,cAAA,sBAAAV,OAAA;EAAAW,GAAA,UAAAC,MAAA,SAAAA,MAAA,CAAAC,qBAAA;EAAAC,YAAA;EAAAC,aAAA,sBAAAC,GAAA;AAmBA,SAAMC,OAAA;EAONH,YAAI,KAAeA,YAAA,OAAAC,aAAA,KAAAA,aAAA,CAAAG,OAAA,WAAAC,EAAA;IACnB,OAAMA,EAAA;EAEC,IAAAJ,aAAwB,CAAAK,KAAA;AAC7B;AAOF,IAAAC,iBAAA;EAAAC,0BAAA;AAEA,SAAMC,+BACAA,CAAA;EAEN,CAAA3B,QAAS,IAAAQ,0BAAA,KAAkCA,0BAAA,OAAAoB,oBAAA,WAAAC,OAAA;IACpCA,OAAA,CAAAP,OAAY,WAAAQ,KAAA;MAGd,IAAAC,IAAA,GAAYD,KAAA,CAAAE,MAAA;MACXzB,iBAAiB,CAAA0B,GAAA,CAAAF,IAAA,CAAU,KAAAD,KAAA,CAAAI,cAAA,IAAA3B,iBAAA,CAAA4B,GAAA,CAAAJ,IAAA,EAAAD,KAAA,CAAAI,cAAA;IACzB;EACA;IACkDE,SAEnD;EAAA,EACH;AAAA;AACA,IAAApC,QACE,EAAW,IACbe,GAAA;EACF,IAAAsB,sBAAA,YAAAA,CAAA;IACF,IAAAC,GAAA,GAAAC,IAAA,CAAAD,GAAA;MAAAE,kBAAA,GAAAF,GAAA,GAAAG,WAAA;IAEI,IAAAA,WAAA,GAAAH,GAAA,EAAAI,UAAA,IAAAA,UAAA,GAAAC,kBAAA;MACED,UAAK,MAAA3B,GAAA,CAAAsB,sBAAA;MAgFE;IACP;IAMA,IAJA5B,QAAA,UAAc,EAEd;MAGE,IAAAmC,iBACK,GAAAJ,kBAAsB,GAAAf,iBAAA,GAAAC,0BAAA;MAC3BkB,iBAAA,IAAAvC,KAAA,CAAAiB,OAAA,WAAAS,IAAA;QACFc,qBAAA,CAAAd,IAAA,EAAAU,WAAA;MAEI;IAQE;IACF1B,GAAC,CAAAsB,sBAIA;EACP;EA1GA,IAAAS,uBAAM,GAAAT,sBAA0B;IAAqBU,uBAAS,wBAAAC,QAAA,CAAAC,IAAA;IAAAR,WAAA,GAAAF,IAAA,CAAAD,GAAA;EAE9D,eAAIO,qBAAuBA,CAAAd,IAAA,EAAAmB,OAAA;IAE3B,IAAA3C,iBAAe,CAAA0B,GAAA,CAAAF,IAAA,MAAsB,MAAmB,EAAAoB,OAAiB,CAAAC,GAAA,CAAAC,iCAAA,YAAAN,uBAAA,KAAAhB,IAAA,CAAAuB,eAAA;MAMvE,IALIC,QAAA,GAAApD,cAA0B,CAAA8B,GAAA,CAAMF,IAAA;MAQhC,WAAAwB,QAAA;QAIJ,IAAMC,UAAW,GAAAzB,IAAA,CAAA0B,aAAmB;QAChC,IAAAD,UAAO;UAEL,IAAAE,QAAA,EAAaC,UAAK;UACnB,IAAAlD,QAAY;YAEb,KAAAmD,EACA,EAAAC,EAAA,UAAAC,OAAA,CAAAC,GAAA,EAEAC,0BAAsB,CAAAjC,IAAA,GACjBiC,0BAAwB,CAAIR,UAAA,EACjC;YACA,IAAAI,EAAA,WAAAC,EAAA,KAA2B,MAAAX,OAAU,KAAAT,WAAA,EACtC;YAEGiB,QAAO,GAASE,EAAA,EAAAD,UAKhB,GAAAE,EAAA;UACF,OAGFH,QAAW,GACX3B,IAAA,CAAAkC,qBAAa,IAAAN,UAAA,GAAAH,UAAA,CAAAS,qBAAA;UACf,IAAAC,UAAA,GAAAtD,aAAA,CAAAqB,GAAA,CAAAF,IAAA;YAAAoC,gBAAA,GAAAvD,aAAA,CAAAqB,GAAA,CAAAuB,UAAA;UACE,KAAAU,UAAgB;UAAA;UAIZ;UAIH,CAAAhE,cAAA,CAAAgE,UAAA,EAAAR,QAAA;UAAA;UAAA,CAAAS,gBAAA,KAAAjE,cAAA,CAAAiE,gBAAA,EAAAR,UAAA;YAGC/C,aAAe,CAAAuB,GAAA,CAAAJ,IAAY,EAAA2B,QAAQ,GAAA7C,eAAA,CAAAsB,GAAA,CAAAqB,UAAA,EAAAG,UAAA;YAEjC,IAAAS,KAAA,GAAAC,qBAAoC,CAAAX,QAAA,EAAAC,UAAkB;YAE1DzC,YAAkB,GAAAC,aAAc,CAChCgB,GAAA,CAAAJ,IAAA,cAAoB;cAEd,OAAQwB,QAAA,CAAAa,KAAA;YAEV,KAAAb,QACF,CAAAa,KAAA;UAIJ;QACF;MAGK;IAGL;EACA;EA8BFrD,GAAA,CAAAsB,sBAAA;EACM,IAAAK,UAAY;IAAAC,kBAAa,IAC3B;AAAQ,OAERQ,OAAA,CAAAC,GAAA,CAAAkB,QAAA,sBAAAC,OAAA,CAAAC,IAAA;AAKC,IAAAH,qBAAM,YAAAA,CACXX,QACA,EAAAC,UAEO;IACL;MACEc,WAAQ;QACRC,MAAQ,EAAAC,qBAAA,CAAAjB,QAAA,EAAAC,UAAA;QACV3B,MAAA,EAAA0B;MACA;MAISkB,SAAA,EAAArC,IAAA,CAAgBD,GAC3B;IAWA;EACA;EAAAuC,aAAI,YAAAA,CAAA9C,IAAwB,EAAA+C,UAAa,EAAAC,QAAA;IACvC,IAAAC,YAAM,GAAUF,UAAK,IAAA/C,IAAA,EAAA0B,aACf;IAEN,IAAAuB,YAAI,YAAmBC,WAAS;MAC9B,IAAAC,OAAQ,GAAGnD,IAAG,CAAAkC,qBAAqB,CAAI;QAAAkB,eAAI,GAAAH,YAAA,CAAAf,qBAAA;MAAA,IACzCkB,eAAA,IAAAD,OAAA;QAAA,IACA;UAAAE,CAAA;UAAAC,CAAA;UAAAC,KAAA;UAAAC,MAAA;UAAAC,IAAA;UAAAC;QAAA,IAAAd,qBAAA,CAAAO,OAAA,EAAAC,eAAA;QACFJ,QAAA,CAAAK,CAAA,EAAAC,CAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,GAAA;MACA;IAAuC;EACzC;EACFC,0BAAA,kBAAAA,CAAA1D,MAAA;IACF,IAEa0C,MAAA,SAAAiB,kBACX,CAAA3D,MAAA;IAEA,KAAA0C,MAAM,EACN,MAAK,IAAAkB,KAAA;IACH;MAEFnB,WAAO;QACLC,MAAA;QACE1C;MAAA;MAEF4C,SAAA,EAAArC,IAAA,CAAAD,GAAA;IAAA;EACoB;EACtBqD,kBAAA,kBAAAA,CAAA5D,IAAA,EAAA+C,UAAA;IACF,IAEaE,YAAA,GAAAF,UACX,IAAA/C,IACA,EAAA0B,aACgC;IAChC,IAAAuB,YAAM,YAAeC,WAAc,EAAM;MACzC,IAAI,CAAAC,OAAA,EAAAC,eAAwB,UAAarB,OAAA,CAAAC,GAAA,EACvCC,0BAAgB,CAAAjC,IAAe,GAC7BiC,0BAAA,CAA2BgB,YAAI,GAC/B;MACF,IAACG,eAAA,IAAAD,OAAA;QAED,IAAI;UAAAE,CAAA;UAAAC,CAAA;UAAAC,KAAA;UAAAC,MAAmB;UAAAC,IAAS;UAAAC;QAAA,IAAAd,qBAAA,CAAAO,OAAA,EAAAC,eAAA;QAC9B,OAAM;UACJC,CAAA;UACAC,CAAA;UACFC,KAAA;UACAC,MAAO;UACTC,IAAA;UACFC;QACA;MAGI;IACJ;IAGA,OAAO,IAAE;EACX;EAAAd,qBAAA,YAAAA,CAAAkB,CAAA,EAAAC,CAAA;IAEO;QAAAP,MAAS;QAAAC,IAAA;QAAAC,GAAA;QACdH;MACA,IAAAO,CAAA;MAAAT,CACM,GAAAI,IAAA,GAAAM,CAAA,CAAAN,IAAA;MAAAH,CAAA,GAAAI,GAAA,GAAAK,CAAA,CAAAL,GAAA;IAEN,OAAM;MACFL,CAAA;MAKFC,CAAA;MACAC,KAAA;MACAC,MAAK;MAELC,IAAA;MAYAC;IACA;EACE;AACE,SACEM,gBAAKhE,CAAAiE,GAAA,EAAAzC,QAAsB;EAAA,IAAA0C,YAC3B;IAAWlE,IAAA,GAAAmE,gBAAsB,EAAAD,YAAA,GAAAD,GAAA,CAAAG,OAAA,cAAAF,YAAA,uBAAAA,YAAA,CAAAG,IAAA;EAAArE,IACnC,IAAAwB,QAAA,IAAApD,cAAA,CAAAgC,GAAA,CAAAJ,IAAA,EAAAwB,QAAA,GAAAtD,yBAAA;IACF,IAGKoG,aAAM;IACX,IAAA9C,QAAM;MAUR,IAAA+C,KAAA,IAAAD,aAAA,GAAAL,GAAA,CAAAG,OAAA,cAAAE,aAAA,uBAAAA,aAAA,CAAAD,IAAA;MACE,IAAAE,KAAO;QACbnG,cAAA,CAAAgC,GAAA,CAAAmE,KAAA,EAAA/C,QAAA,GAAAlD,KAAA,CAAAkG,GAAA,CAAAD,KAAA,GAAA3E,+BAAA,IAAAnB,0BAAA,KAAAA,0BAAA,CAAAgG,OAAA,CAAAF,KAAA,GAAA/F,iBAAA,CAAA4B,GAAA,CAAAmE,KAAA;QAEA,IAAS9C,UAAA,GAAA8C,KAAmD,CAAA9C,UAAA;QACtD,OAAOA,UAAA,IAAgBD,QAAA,CAAAc,qBAAA,CAAAiC,KAAA,CAAArC,qBAAA,IAAAT,UAAA,CAAAS,qBAAA;UAG3B5D,KAAO,CAAAoG,MAAA,CAAAH,KAAa,GAAAnG,cAAkB,CAAAsG,MAAA,CAAAH,KAAA,GAAA1F,aAAA,CAAA6F,MAAA,CAAAH,KAAA,GAAAxF,cAAA,CAAA2F,MAAA,CAAAH,KAAA,GAAA/F,iBAAA,CAAAkG,MAAA,CAAAH,KAAA,GAAA9F,0BAAA,IAAAA,0BAAA,CAAAkG,SAAA,CAAAJ,KAAA;QACxC;MAEM;IAIF;EAEA,IACEN,GAAC,EAID,EAAAzC,QAAA;AACa;AACb,SACF2C,iBAAAd,CAAA;EACA,IAAG,SAAQH,WAAI,SAIb,OAAAG,CAAA,YAAAH,WAAyB,GAAkDG,CAAA;AAC/E;AACA,IAAApB,0BAAY,YAAAA,CAAwBjC,IAAA;IACtC,OAEa,IAAU+B,OAAC,WAA+C6C,GAAA;MACrE,IAAM,CAAA5E,IAAA,IAAOA,IAAA,CAAA6E,QAAA,QAAsB,OAAID,GAAA;MACvC,IAAKE,EAAA,GAAM,IAAAjF,oBAAA,WAAAC,OAAA;QACX,OAAWgF,EAAA,CAAGC,UAAU,IAAIH,GAAA,CAAA9E,OAAA,IAAAkF,kBAAA;MAC5B;QACF3E,SAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/use-element-layout",
|
|
3
|
-
"version": "1.130.
|
|
3
|
+
"version": "1.130.3",
|
|
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.130.
|
|
35
|
-
"@tamagui/is-equal-shallow": "1.130.
|
|
34
|
+
"@tamagui/constants": "1.130.3",
|
|
35
|
+
"@tamagui/is-equal-shallow": "1.130.3"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@tamagui/build": "1.130.
|
|
38
|
+
"@tamagui/build": "1.130.3",
|
|
39
39
|
"react": "*"
|
|
40
40
|
},
|
|
41
41
|
"publishConfig": {
|
package/src/index.ts
CHANGED
|
@@ -86,14 +86,17 @@ if (isClient) {
|
|
|
86
86
|
let lastFrameAt = Date.now()
|
|
87
87
|
|
|
88
88
|
async function updateLayoutIfChanged(node: HTMLElement, frameId: number) {
|
|
89
|
-
if (supportsCheckVisibility && !(node as any).checkVisibility()) {
|
|
90
|
-
// avoid due to not visible
|
|
91
|
-
return
|
|
92
|
-
}
|
|
93
89
|
if (IntersectionState.get(node) === false) {
|
|
94
90
|
// avoid due to not intersecting
|
|
95
91
|
return
|
|
96
92
|
}
|
|
93
|
+
// triggers style recalculation in safari which is slower than not
|
|
94
|
+
if (process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === '1') {
|
|
95
|
+
if (supportsCheckVisibility && !(node as any).checkVisibility()) {
|
|
96
|
+
// avoid due to not visible
|
|
97
|
+
return
|
|
98
|
+
}
|
|
99
|
+
}
|
|
97
100
|
|
|
98
101
|
const onLayout = LayoutHandlers.get(node)
|
|
99
102
|
if (typeof onLayout !== 'function') return
|
package/types/index.d.ts.map
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"mappings": "AAEA,cAAc,iBAAiB,OAAO;KASjC,+BAA+B;CAClC;AACD;KAEI,4BAA4B,QAAQ,SAAS;AAIlD,OAAO,iBAAS,oBAAoBA,OAAO;AAI3C,YAAY,cAAc;CACxB;CACA;CACA;CACA;CACA;CACA;AACD;AAED,YAAY,cAAc;CACxB,aAAa;EACX,QAAQ;EACR;CACD;CACD;AACD;AAYD,OAAO,iBAAS;
|
|
2
|
+
"mappings": "AAEA,cAAc,iBAAiB,OAAO;KASjC,+BAA+B;CAClC;AACD;KAEI,4BAA4B,QAAQ,SAAS;AAIlD,OAAO,iBAAS,oBAAoBA,OAAO;AAI3C,YAAY,cAAc;CACxB;CACA;CACA;CACA;CACA;CACA;AACD;AAED,YAAY,cAAc;CACxB,aAAa;EACX,QAAQ;EACR;CACD;CACD;AACD;AAYD,OAAO,iBAAS;AAqJhB,OAAO,cAAM,wBACXC,UAAU,iBACVC,YAAY,oBACX;AAUH,OAAO,cAAM,gBACXC,MAAM,aACNC,YAAY,oBACZC,WACEC,WACAC,WACAC,eACAC,gBACAC,cACAC;AAkBJ,OAAO,cAAM,6BACXC,QAAQ,gBACP,QAAQ;AAcX,OAAO,cAAM,qBACXT,MAAM,aACNU,aAAa,uBACZ,eAAe;AA0BlB,OAAO,iBAAS,iBACdC,KAAK,UAAU,+BACfC,aAAaC,GAAG;AAiFlB,OAAO,cAAM,UAAWb,MAAM,gBAAc",
|
|
3
3
|
"names": [
|
|
4
4
|
"state: LayoutMeasurementStrategy",
|
|
5
5
|
"nodeRect: DOMRectReadOnly",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"src/index.ts"
|
|
24
24
|
],
|
|
25
25
|
"sourcesContent": [
|
|
26
|
-
"import { isClient, useIsomorphicLayoutEffect } from '@tamagui/constants'\nimport { isEqualShallow } from '@tamagui/is-equal-shallow'\nimport type { RefObject } from 'react'\n\nconst LayoutHandlers = new WeakMap<HTMLElement, Function>()\nconst Nodes = new Set<HTMLElement>()\nconst IntersectionState = new WeakMap<HTMLElement, boolean>()\n\n// Single persistent IntersectionObserver for all nodes\nlet globalIntersectionObserver: IntersectionObserver | null = null\n\ntype TamaguiComponentStatePartial = {\n host?: any\n}\n\ntype LayoutMeasurementStrategy = 'off' | 'sync' | 'async'\n\nlet strategy: LayoutMeasurementStrategy = 'async'\n\nexport function setOnLayoutStrategy(state: LayoutMeasurementStrategy): void {\n strategy = state\n}\n\nexport type LayoutValue = {\n x: number\n y: number\n width: number\n height: number\n left: number\n top: number\n}\n\nexport type LayoutEvent = {\n nativeEvent: {\n layout: LayoutValue\n target: any\n }\n timeStamp: number\n}\n\nconst NodeRectCache = new WeakMap<HTMLElement, DOMRect>()\nconst ParentRectCache = new WeakMap<HTMLElement, DOMRect>()\nconst LastChangeTime = new WeakMap<HTMLElement, number>()\n\nconst rAF = typeof window !== 'undefined' ? window.requestAnimationFrame : undefined\n\n// prevent thrashing during first hydration (somewhat, streaming gets trickier)\nlet avoidUpdates = true\nconst queuedUpdates = new Map<HTMLElement, Function>()\n\nexport function enable(): void {\n if (avoidUpdates) {\n avoidUpdates = false\n if (queuedUpdates) {\n queuedUpdates.forEach((cb) => cb())\n queuedUpdates.clear()\n }\n }\n}\n\nconst expectedFrameTime = 16.67 // ~60fps\nconst numDroppedFramesUntilPause = 10\n\nfunction startGlobalIntersectionObserver() {\n if (!isClient || globalIntersectionObserver) return\n\n globalIntersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const node = entry.target as HTMLElement\n if (IntersectionState.get(node) !== entry.isIntersecting) {\n IntersectionState.set(node, entry.isIntersecting)\n }\n })\n },\n {\n threshold: 0,\n }\n )\n}\n\nif (isClient) {\n if (rAF) {\n const supportsCheckVisibility = 'checkVisibility' in document.body\n // track frame timing to detect sync work and avoid updates during heavy periods\n let lastFrameAt = Date.now()\n\n async function updateLayoutIfChanged(node: HTMLElement, frameId: number) {\n if (supportsCheckVisibility && !(node as any).checkVisibility()) {\n // avoid due to not visible\n return\n }\n if (IntersectionState.get(node) === false) {\n // avoid due to not intersecting\n return\n }\n\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n\n const parentNode = node.parentElement\n if (!parentNode) return\n\n let nodeRect: DOMRectReadOnly\n let parentRect: DOMRectReadOnly\n\n if (strategy === 'async') {\n const [nr, pr] = await Promise.all([\n getBoundingClientRectAsync(node),\n getBoundingClientRectAsync(parentNode),\n ])\n\n if (nr === false || pr === false) {\n return\n }\n\n // cancel if we skipped a frame\n if (frameId !== lastFrameAt) {\n return\n }\n\n nodeRect = nr\n parentRect = pr\n } else {\n nodeRect = node.getBoundingClientRect()\n parentRect = parentNode.getBoundingClientRect()\n }\n\n const cachedRect = NodeRectCache.get(node)\n const cachedParentRect = NodeRectCache.get(parentNode)\n\n if (\n !cachedRect ||\n // has changed one rect\n // @ts-expect-error DOMRectReadOnly can go into object\n (!isEqualShallow(cachedRect, nodeRect) &&\n // @ts-expect-error DOMRectReadOnly can go into object\n (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect)))\n ) {\n NodeRectCache.set(node, nodeRect)\n ParentRectCache.set(parentNode, parentRect)\n\n const event = getElementLayoutEvent(nodeRect, parentRect)\n\n if (avoidUpdates) {\n queuedUpdates.set(node, () => onLayout(event))\n } else {\n onLayout(event)\n }\n }\n }\n\n // note that getBoundingClientRect() does not thrash layout if its after an animation frame\n rAF!(layoutOnAnimationFrame)\n\n // only run once in a few frames, this could be adjustable\n let frameCount = 0\n const RUN_EVERY_X_FRAMES = 4\n\n function layoutOnAnimationFrame() {\n const now = Date.now()\n const timeSinceLastFrame = now - lastFrameAt\n lastFrameAt = now\n\n frameCount++\n\n if (frameCount % RUN_EVERY_X_FRAMES === 0) {\n frameCount = 0\n rAF!(layoutOnAnimationFrame)\n return\n }\n\n if (strategy !== 'off') {\n // for both strategies:\n // avoid updates if we've been dropping frames (indicates sync work happening)\n const hasRecentSyncWork =\n timeSinceLastFrame > expectedFrameTime * numDroppedFramesUntilPause\n\n if (!hasRecentSyncWork) {\n Nodes.forEach((node) => {\n updateLayoutIfChanged(node, lastFrameAt)\n })\n }\n }\n\n rAF!(layoutOnAnimationFrame)\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `No requestAnimationFrame - please polyfill for onLayout to work correctly`\n )\n }\n }\n}\n\nexport const getElementLayoutEvent = (\n nodeRect: DOMRectReadOnly,\n parentRect: DOMRectReadOnly\n): LayoutEvent => {\n return {\n nativeEvent: {\n layout: getRelativeDimensions(nodeRect, parentRect),\n target: nodeRect,\n },\n timeStamp: Date.now(),\n }\n}\n\nexport const measureLayout = (\n node: HTMLElement,\n relativeTo: HTMLElement | null,\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n left: number,\n top: number\n ) => void\n): void => {\n const relativeNode = relativeTo || node?.parentElement\n if (relativeNode instanceof HTMLElement) {\n const nodeDim = node.getBoundingClientRect()\n const relativeNodeDim = relativeNode.getBoundingClientRect()\n\n if (relativeNodeDim && nodeDim) {\n const { x, y, width, height, left, top } = getRelativeDimensions(\n nodeDim,\n relativeNodeDim\n )\n callback(x, y, width, height, left, top)\n }\n }\n}\n\nexport const getElementLayoutEventAsync = async (\n target: HTMLElement\n): Promise<LayoutEvent> => {\n const layout = await measureLayoutAsync(target)\n if (!layout) {\n throw new Error(`‼️`) // impossible\n }\n return {\n nativeEvent: {\n layout,\n target,\n },\n timeStamp: Date.now(),\n }\n}\n\nexport const measureLayoutAsync = async (\n node: HTMLElement,\n relativeTo?: HTMLElement | null\n): Promise<null | LayoutValue> => {\n const relativeNode = relativeTo || node?.parentElement\n if (relativeNode instanceof HTMLElement) {\n const [nodeDim, relativeNodeDim] = await Promise.all([\n getBoundingClientRectAsync(node),\n getBoundingClientRectAsync(relativeNode),\n ])\n\n if (relativeNodeDim && nodeDim) {\n const { x, y, width, height, left, top } = getRelativeDimensions(\n nodeDim,\n relativeNodeDim\n )\n return { x, y, width, height, left, top }\n }\n }\n return null\n}\n\nconst getRelativeDimensions = (a: DOMRectReadOnly, b: DOMRectReadOnly) => {\n const { height, left, top, width } = a\n const x = left - b.left\n const y = top - b.top\n return { x, y, width, height, left, top }\n}\n\nexport function useElementLayout(\n ref: RefObject<TamaguiComponentStatePartial>,\n onLayout?: ((e: LayoutEvent) => void) | null\n): void {\n // ensure always up to date so we can avoid re-running effect\n const node = ensureWebElement(ref.current?.host)\n if (node && onLayout) {\n LayoutHandlers.set(node, onLayout)\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!onLayout) return\n const node = ref.current?.host\n if (!node) return\n\n LayoutHandlers.set(node, onLayout)\n Nodes.add(node)\n\n // Add node to intersection observer\n startGlobalIntersectionObserver()\n if (globalIntersectionObserver) {\n globalIntersectionObserver.observe(node)\n // Initialize as intersecting by default\n IntersectionState.set(node, true)\n }\n\n // always do one immediate sync layout event no matter the strategy for accuracy\n const parentNode = node.parentNode\n if (parentNode) {\n onLayout(\n getElementLayoutEvent(\n node.getBoundingClientRect(),\n parentNode.getBoundingClientRect()\n )\n )\n }\n\n return () => {\n Nodes.delete(node)\n LayoutHandlers.delete(node)\n NodeRectCache.delete(node)\n LastChangeTime.delete(node)\n IntersectionState.delete(node)\n\n // Remove from intersection observer\n if (globalIntersectionObserver) {\n globalIntersectionObserver.unobserve(node)\n }\n }\n }, [ref, !!onLayout])\n}\n\nfunction ensureWebElement<X>(x: X): HTMLElement | undefined {\n if (typeof HTMLElement === 'undefined') {\n return undefined\n }\n return x instanceof HTMLElement ? x : undefined\n}\n\nconst getBoundingClientRectAsync = (\n node: HTMLElement | null\n): Promise<DOMRectReadOnly | false> => {\n return new Promise<DOMRectReadOnly | false>((res) => {\n if (!node || node.nodeType !== 1) return res(false)\n\n const io = new IntersectionObserver(\n (entries) => {\n io.disconnect()\n return res(entries[0].boundingClientRect)\n },\n {\n threshold: 0,\n }\n )\n io.observe(node)\n })\n}\n\nconst getBoundingClientRect = (node: HTMLElement | null): undefined | DOMRect => {\n if (!node || node.nodeType !== 1) return\n return node.getBoundingClientRect?.()\n}\n\nexport const getRect = (node: HTMLElement): LayoutValue | undefined => {\n const rect = getBoundingClientRect(node)\n if (!rect) return\n const { x, y, top, left } = rect\n return { x, y, width: node.offsetWidth, height: node.offsetHeight, top, left }\n}\n"
|
|
26
|
+
"import { isClient, useIsomorphicLayoutEffect } from '@tamagui/constants'\nimport { isEqualShallow } from '@tamagui/is-equal-shallow'\nimport type { RefObject } from 'react'\n\nconst LayoutHandlers = new WeakMap<HTMLElement, Function>()\nconst Nodes = new Set<HTMLElement>()\nconst IntersectionState = new WeakMap<HTMLElement, boolean>()\n\n// Single persistent IntersectionObserver for all nodes\nlet globalIntersectionObserver: IntersectionObserver | null = null\n\ntype TamaguiComponentStatePartial = {\n host?: any\n}\n\ntype LayoutMeasurementStrategy = 'off' | 'sync' | 'async'\n\nlet strategy: LayoutMeasurementStrategy = 'async'\n\nexport function setOnLayoutStrategy(state: LayoutMeasurementStrategy): void {\n strategy = state\n}\n\nexport type LayoutValue = {\n x: number\n y: number\n width: number\n height: number\n left: number\n top: number\n}\n\nexport type LayoutEvent = {\n nativeEvent: {\n layout: LayoutValue\n target: any\n }\n timeStamp: number\n}\n\nconst NodeRectCache = new WeakMap<HTMLElement, DOMRect>()\nconst ParentRectCache = new WeakMap<HTMLElement, DOMRect>()\nconst LastChangeTime = new WeakMap<HTMLElement, number>()\n\nconst rAF = typeof window !== 'undefined' ? window.requestAnimationFrame : undefined\n\n// prevent thrashing during first hydration (somewhat, streaming gets trickier)\nlet avoidUpdates = true\nconst queuedUpdates = new Map<HTMLElement, Function>()\n\nexport function enable(): void {\n if (avoidUpdates) {\n avoidUpdates = false\n if (queuedUpdates) {\n queuedUpdates.forEach((cb) => cb())\n queuedUpdates.clear()\n }\n }\n}\n\nconst expectedFrameTime = 16.67 // ~60fps\nconst numDroppedFramesUntilPause = 10\n\nfunction startGlobalIntersectionObserver() {\n if (!isClient || globalIntersectionObserver) return\n\n globalIntersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const node = entry.target as HTMLElement\n if (IntersectionState.get(node) !== entry.isIntersecting) {\n IntersectionState.set(node, entry.isIntersecting)\n }\n })\n },\n {\n threshold: 0,\n }\n )\n}\n\nif (isClient) {\n if (rAF) {\n const supportsCheckVisibility = 'checkVisibility' in document.body\n // track frame timing to detect sync work and avoid updates during heavy periods\n let lastFrameAt = Date.now()\n\n async function updateLayoutIfChanged(node: HTMLElement, frameId: number) {\n if (IntersectionState.get(node) === false) {\n // avoid due to not intersecting\n return\n }\n // triggers style recalculation in safari which is slower than not\n if (process.env.TAMAGUI_ONLAYOUT_VISIBILITY_CHECK === '1') {\n if (supportsCheckVisibility && !(node as any).checkVisibility()) {\n // avoid due to not visible\n return\n }\n }\n\n const onLayout = LayoutHandlers.get(node)\n if (typeof onLayout !== 'function') return\n\n const parentNode = node.parentElement\n if (!parentNode) return\n\n let nodeRect: DOMRectReadOnly\n let parentRect: DOMRectReadOnly\n\n if (strategy === 'async') {\n const [nr, pr] = await Promise.all([\n getBoundingClientRectAsync(node),\n getBoundingClientRectAsync(parentNode),\n ])\n\n if (nr === false || pr === false) {\n return\n }\n\n // cancel if we skipped a frame\n if (frameId !== lastFrameAt) {\n return\n }\n\n nodeRect = nr\n parentRect = pr\n } else {\n nodeRect = node.getBoundingClientRect()\n parentRect = parentNode.getBoundingClientRect()\n }\n\n const cachedRect = NodeRectCache.get(node)\n const cachedParentRect = NodeRectCache.get(parentNode)\n\n if (\n !cachedRect ||\n // has changed one rect\n // @ts-expect-error DOMRectReadOnly can go into object\n (!isEqualShallow(cachedRect, nodeRect) &&\n // @ts-expect-error DOMRectReadOnly can go into object\n (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect)))\n ) {\n NodeRectCache.set(node, nodeRect)\n ParentRectCache.set(parentNode, parentRect)\n\n const event = getElementLayoutEvent(nodeRect, parentRect)\n\n if (avoidUpdates) {\n queuedUpdates.set(node, () => onLayout(event))\n } else {\n onLayout(event)\n }\n }\n }\n\n // note that getBoundingClientRect() does not thrash layout if its after an animation frame\n rAF!(layoutOnAnimationFrame)\n\n // only run once in a few frames, this could be adjustable\n let frameCount = 0\n const RUN_EVERY_X_FRAMES = 4\n\n function layoutOnAnimationFrame() {\n const now = Date.now()\n const timeSinceLastFrame = now - lastFrameAt\n lastFrameAt = now\n\n frameCount++\n\n if (frameCount % RUN_EVERY_X_FRAMES === 0) {\n frameCount = 0\n rAF!(layoutOnAnimationFrame)\n return\n }\n\n if (strategy !== 'off') {\n // for both strategies:\n // avoid updates if we've been dropping frames (indicates sync work happening)\n const hasRecentSyncWork =\n timeSinceLastFrame > expectedFrameTime * numDroppedFramesUntilPause\n\n if (!hasRecentSyncWork) {\n Nodes.forEach((node) => {\n updateLayoutIfChanged(node, lastFrameAt)\n })\n }\n }\n\n rAF!(layoutOnAnimationFrame)\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `No requestAnimationFrame - please polyfill for onLayout to work correctly`\n )\n }\n }\n}\n\nexport const getElementLayoutEvent = (\n nodeRect: DOMRectReadOnly,\n parentRect: DOMRectReadOnly\n): LayoutEvent => {\n return {\n nativeEvent: {\n layout: getRelativeDimensions(nodeRect, parentRect),\n target: nodeRect,\n },\n timeStamp: Date.now(),\n }\n}\n\nexport const measureLayout = (\n node: HTMLElement,\n relativeTo: HTMLElement | null,\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n left: number,\n top: number\n ) => void\n): void => {\n const relativeNode = relativeTo || node?.parentElement\n if (relativeNode instanceof HTMLElement) {\n const nodeDim = node.getBoundingClientRect()\n const relativeNodeDim = relativeNode.getBoundingClientRect()\n\n if (relativeNodeDim && nodeDim) {\n const { x, y, width, height, left, top } = getRelativeDimensions(\n nodeDim,\n relativeNodeDim\n )\n callback(x, y, width, height, left, top)\n }\n }\n}\n\nexport const getElementLayoutEventAsync = async (\n target: HTMLElement\n): Promise<LayoutEvent> => {\n const layout = await measureLayoutAsync(target)\n if (!layout) {\n throw new Error(`‼️`) // impossible\n }\n return {\n nativeEvent: {\n layout,\n target,\n },\n timeStamp: Date.now(),\n }\n}\n\nexport const measureLayoutAsync = async (\n node: HTMLElement,\n relativeTo?: HTMLElement | null\n): Promise<null | LayoutValue> => {\n const relativeNode = relativeTo || node?.parentElement\n if (relativeNode instanceof HTMLElement) {\n const [nodeDim, relativeNodeDim] = await Promise.all([\n getBoundingClientRectAsync(node),\n getBoundingClientRectAsync(relativeNode),\n ])\n\n if (relativeNodeDim && nodeDim) {\n const { x, y, width, height, left, top } = getRelativeDimensions(\n nodeDim,\n relativeNodeDim\n )\n return { x, y, width, height, left, top }\n }\n }\n return null\n}\n\nconst getRelativeDimensions = (a: DOMRectReadOnly, b: DOMRectReadOnly) => {\n const { height, left, top, width } = a\n const x = left - b.left\n const y = top - b.top\n return { x, y, width, height, left, top }\n}\n\nexport function useElementLayout(\n ref: RefObject<TamaguiComponentStatePartial>,\n onLayout?: ((e: LayoutEvent) => void) | null\n): void {\n // ensure always up to date so we can avoid re-running effect\n const node = ensureWebElement(ref.current?.host)\n if (node && onLayout) {\n LayoutHandlers.set(node, onLayout)\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!onLayout) return\n const node = ref.current?.host\n if (!node) return\n\n LayoutHandlers.set(node, onLayout)\n Nodes.add(node)\n\n // Add node to intersection observer\n startGlobalIntersectionObserver()\n if (globalIntersectionObserver) {\n globalIntersectionObserver.observe(node)\n // Initialize as intersecting by default\n IntersectionState.set(node, true)\n }\n\n // always do one immediate sync layout event no matter the strategy for accuracy\n const parentNode = node.parentNode\n if (parentNode) {\n onLayout(\n getElementLayoutEvent(\n node.getBoundingClientRect(),\n parentNode.getBoundingClientRect()\n )\n )\n }\n\n return () => {\n Nodes.delete(node)\n LayoutHandlers.delete(node)\n NodeRectCache.delete(node)\n LastChangeTime.delete(node)\n IntersectionState.delete(node)\n\n // Remove from intersection observer\n if (globalIntersectionObserver) {\n globalIntersectionObserver.unobserve(node)\n }\n }\n }, [ref, !!onLayout])\n}\n\nfunction ensureWebElement<X>(x: X): HTMLElement | undefined {\n if (typeof HTMLElement === 'undefined') {\n return undefined\n }\n return x instanceof HTMLElement ? x : undefined\n}\n\nconst getBoundingClientRectAsync = (\n node: HTMLElement | null\n): Promise<DOMRectReadOnly | false> => {\n return new Promise<DOMRectReadOnly | false>((res) => {\n if (!node || node.nodeType !== 1) return res(false)\n\n const io = new IntersectionObserver(\n (entries) => {\n io.disconnect()\n return res(entries[0].boundingClientRect)\n },\n {\n threshold: 0,\n }\n )\n io.observe(node)\n })\n}\n\nconst getBoundingClientRect = (node: HTMLElement | null): undefined | DOMRect => {\n if (!node || node.nodeType !== 1) return\n return node.getBoundingClientRect?.()\n}\n\nexport const getRect = (node: HTMLElement): LayoutValue | undefined => {\n const rect = getBoundingClientRect(node)\n if (!rect) return\n const { x, y, top, left } = rect\n return { x, y, width: node.offsetWidth, height: node.offsetHeight, top, left }\n}\n"
|
|
27
27
|
],
|
|
28
28
|
"version": 3
|
|
29
29
|
}
|