@tamagui/core 1.126.13-1747813753833 → 1.126.13-1747874018127

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.tsx"],
4
- "mappings": "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",
5
- "names": ["addNativeValidStyles", "createTamagui", "conf", "media", "createMedia", "createTamaguiWeb", "baseViews", "getBaseViews", "setupHooks", "setElementProps", "node", "measure", "callback", "measureLayout", "relativeToNode", "success", "measureInWindow", "setTimeout", "height", "left", "top", "width", "getRect", "usePropsTransform", "elementType", "propsIn", "stateRef", "willHydrate", "process", "isDOM", "onMoveShouldSetResponder", "onMoveShouldSetResponderCapture", "onResponderEnd", "onResponderGrant", "onResponderMove", "onResponderReject", "onResponderRelease", "onResponderStart", "onResponderTerminate", "onResponderTerminationRequest", "onScrollShouldSetResponder", "onScrollShouldSetResponderCapture", "onSelectionChangeShouldSetResponder", "onSelectionChangeShouldSetResponderCapture", "onStartShouldSetResponder", "onStartShouldSetResponderCapture", "collapsable", "focusable", "accessible", "accessibilityDisabled", "onLayout", "hrefAttrs", "plainDOMProps", "href", "download", "rel", "target", "useEvents", "viewProps", "events", "setStateShallow", "staticConfig", "pseudos", "onFocus", "onBlur", "isInput", "onPressIn", "onPressOut", "onPress", "inputEvents", "composeEventHandlers", "Object", "assign", "hitSlop", "pressability", "usePressability", "env", "NODE_ENV", "console", "info", "keys", "key", "og", "val", "dontComposePressabilityKeys", "useChildren", "children", "View", "createOptimizedView", "TAMAGUI_OPTIMIZE_NATIVE_VIEWS", "Text", "React", "createElement", "onClick", "WebView", "Stack", "WebStack", "WebText"]
4
+ "mappings": "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",
5
+ "names": ["import_useElementLayout", "addNativeValidStyles", "createTamagui", "conf", "media", "createMedia", "createTamaguiWeb", "baseViews", "getBaseViews", "setupHooks", "setElementProps", "node", "measure", "callback", "measureLayout", "relativeToNode", "success", "measureInWindow", "setTimeout", "height", "left", "top", "width", "getRect", "usePropsTransform", "elementType", "propsIn", "stateRef", "willHydrate", "process", "isDOM", "onMoveShouldSetResponder", "onMoveShouldSetResponderCapture", "onResponderEnd", "onResponderGrant", "onResponderMove", "onResponderReject", "onResponderRelease", "onResponderStart", "onResponderTerminate", "onResponderTerminationRequest", "onScrollShouldSetResponder", "onScrollShouldSetResponderCapture", "onSelectionChangeShouldSetResponder", "onSelectionChangeShouldSetResponderCapture", "onStartShouldSetResponder", "onStartShouldSetResponderCapture", "collapsable", "focusable", "accessible", "accessibilityDisabled", "onLayout", "hrefAttrs", "plainDOMProps", "href", "download", "rel", "target", "useEvents", "viewProps", "events", "setStateShallow", "staticConfig", "pseudos", "onFocus", "onBlur", "isInput", "onPressIn", "onPressOut", "onPress", "inputEvents", "composeEventHandlers", "Object", "assign", "hitSlop", "pressability", "usePressability", "env", "NODE_ENV", "console", "info", "keys", "key", "og", "val", "dontComposePressabilityKeys", "useChildren", "children", "View", "createOptimizedView", "TAMAGUI_OPTIMIZE_NATIVE_VIEWS", "Text", "React", "createElement", "onClick", "WebView", "Stack", "WebStack", "WebText"]
6
6
  }
@@ -1,84 +1,70 @@
1
- import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import { getBoundingClientRect } from "../helpers/getBoundingClientRect";
3
- const LayoutHandlers = /* @__PURE__ */ new WeakMap(), resizeListeners = /* @__PURE__ */ new Set();
4
- let resizeObserver = null;
5
- if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver((entries) => {
6
- for (const { target } of entries) {
7
- const onLayout = LayoutHandlers.get(target);
1
+ import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
2
+ import {
3
+ isEqualShallow,
4
+ ___onDidFinishClientRender
5
+ } from "@tamagui/web";
6
+ const LayoutHandlers = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set(), NodeRectCache = /* @__PURE__ */ new WeakMap(), ParentRectCache = /* @__PURE__ */ new WeakMap();
7
+ if (isClient && typeof requestAnimationFrame == "function") {
8
+ let updateLayoutIfChanged = function(node) {
9
+ const nodeRect = node.getBoundingClientRect(), parentNode = node.parentElement, parentRect = parentNode?.getBoundingClientRect(), onLayout = LayoutHandlers.get(node);
8
10
  if (typeof onLayout != "function") return;
9
- measureElement(target).then((event) => {
10
- onLayout(event);
11
- });
12
- }
13
- }), typeof window.addEventListener == "function")) {
14
- let tm;
15
- window.addEventListener("resize", () => {
16
- clearTimeout(tm), tm = setTimeout(() => {
17
- resizeListeners.forEach((cb) => cb());
18
- }, 4);
19
- });
11
+ const cachedRect = NodeRectCache.get(node), cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
12
+ if (!cachedRect || // has changed one rect
13
+ !isEqualShallow(cachedRect, nodeRect) && (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect))) {
14
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
15
+ const event = getElementLayoutEvent(node);
16
+ avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
17
+ }
18
+ }, layoutOnAnimationFrame = function() {
19
+ Nodes.forEach(updateLayoutIfChanged), requestAnimationFrame(layoutOnAnimationFrame);
20
+ }, avoidUpdates = !0;
21
+ const queuedUpdates = /* @__PURE__ */ new Map();
22
+ ___onDidFinishClientRender(() => {
23
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach((cb) => cb()), queuedUpdates.clear());
24
+ }), requestAnimationFrame(layoutOnAnimationFrame);
20
25
  }
21
- const measureElement = async (target) => new Promise((res) => {
22
- measureLayout(target, null, (x, y, width, height, left, top) => {
23
- res({
26
+ const getElementLayoutEvent = (target) => {
27
+ let res = null;
28
+ if (measureLayout(target, null, (x, y, width, height, left, top) => {
29
+ res = {
24
30
  nativeEvent: {
25
31
  layout: { x, y, width, height, left, top },
26
32
  target
27
33
  },
28
34
  timeStamp: Date.now()
29
- });
30
- });
31
- }), cache = /* @__PURE__ */ new WeakMap(), measureLayout = (node, relativeTo, callback) => {
32
- const relativeNode = relativeTo || node?.parentNode;
35
+ };
36
+ }), !res)
37
+ throw new Error("\u203C\uFE0F");
38
+ return res;
39
+ }, measureLayout = (node, relativeTo, callback) => {
40
+ const relativeNode = relativeTo || node?.parentElement;
33
41
  if (relativeNode instanceof HTMLElement) {
34
- const now = Date.now();
35
- cache.set(node, now), Promise.all([
36
- getBoundingClientRectAsync(node),
37
- getBoundingClientRectAsync(relativeNode)
38
- ]).then(([nodeDim, relativeNodeDim]) => {
39
- if (relativeNodeDim && nodeDim && cache.get(node) === now) {
40
- const { x, y, width, height, left, top } = getRelativeDimensions(
41
- nodeDim,
42
- relativeNodeDim
43
- );
44
- callback(x, y, width, height, left, top);
45
- }
46
- });
42
+ const nodeDim = node.getBoundingClientRect(), relativeNodeDim = relativeNode.getBoundingClientRect();
43
+ if (relativeNodeDim && nodeDim) {
44
+ const { x, y, width, height, left, top } = getRelativeDimensions(
45
+ nodeDim,
46
+ relativeNodeDim
47
+ );
48
+ callback(x, y, width, height, left, top);
49
+ }
47
50
  }
48
51
  }, getRelativeDimensions = (a, b) => {
49
52
  const { height, left, top, width } = a, x = left - b.left, y = top - b.top;
50
53
  return { x, y, width, height, left, top };
51
- }, getBoundingClientRectAsync = (element) => new Promise((resolve) => {
52
- function fallbackToSync() {
53
- resolve(getBoundingClientRect(element));
54
- }
55
- const tm = setTimeout(fallbackToSync, 10);
56
- new IntersectionObserver(
57
- (entries, ob) => {
58
- clearTimeout(tm), ob.disconnect(), resolve(entries[0]?.boundingClientRect);
59
- },
60
- {
61
- threshold: 1e-4
62
- }
63
- ).observe(element);
64
- });
54
+ };
65
55
  function useElementLayout(ref, onLayout) {
66
56
  const node = ref.current?.host;
67
57
  node && onLayout && LayoutHandlers.set(node, onLayout), useIsomorphicLayoutEffect(() => {
68
- if (!resizeObserver || !onLayout) return;
58
+ if (!onLayout) return;
69
59
  const node2 = ref.current?.host;
70
- if (!node2) return;
71
- LayoutHandlers.set(node2, onLayout);
72
- const onResize = () => {
73
- measureElement(node2).then(onLayout);
74
- };
75
- return resizeListeners.add(onResize), resizeObserver.observe(node2), () => {
76
- LayoutHandlers.delete(node2), resizeListeners.delete(onResize), resizeObserver?.unobserve(node2);
77
- };
60
+ if (node2)
61
+ return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
62
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
63
+ };
78
64
  }, [ref, !!onLayout]);
79
65
  }
80
66
  export {
81
- measureElement,
67
+ getElementLayoutEvent,
82
68
  measureLayout,
83
69
  useElementLayout
84
70
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useElementLayout.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["node"]
6
6
  }
@@ -1,29 +1,39 @@
1
- import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import { getBoundingClientRect } from "../helpers/getBoundingClientRect.mjs";
1
+ import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
2
+ import { isEqualShallow, ___onDidFinishClientRender } from "@tamagui/web";
3
3
  const LayoutHandlers = /* @__PURE__ */new WeakMap(),
4
- resizeListeners = /* @__PURE__ */new Set();
5
- let resizeObserver = null;
6
- if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver(entries => {
7
- for (const {
8
- target
9
- } of entries) {
10
- const onLayout = LayoutHandlers.get(target);
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
- });
4
+ Nodes = /* @__PURE__ */new Set(),
5
+ NodeRectCache = /* @__PURE__ */new WeakMap(),
6
+ ParentRectCache = /* @__PURE__ */new WeakMap();
7
+ if (isClient && typeof requestAnimationFrame == "function") {
8
+ let updateLayoutIfChanged = function (node) {
9
+ const nodeRect = node.getBoundingClientRect(),
10
+ parentNode = node.parentElement,
11
+ parentRect = parentNode?.getBoundingClientRect(),
12
+ onLayout = LayoutHandlers.get(node);
13
+ if (typeof onLayout != "function") return;
14
+ const cachedRect = NodeRectCache.get(node),
15
+ cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
16
+ if (!cachedRect ||
17
+ // has changed one rect
18
+ !isEqualShallow(cachedRect, nodeRect) && (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect))) {
19
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
20
+ const event = getElementLayoutEvent(node);
21
+ avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
22
+ }
23
+ },
24
+ layoutOnAnimationFrame = function () {
25
+ Nodes.forEach(updateLayoutIfChanged), requestAnimationFrame(layoutOnAnimationFrame);
26
+ },
27
+ avoidUpdates = !0;
28
+ const queuedUpdates = /* @__PURE__ */new Map();
29
+ ___onDidFinishClientRender(() => {
30
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(cb => cb()), queuedUpdates.clear());
31
+ }), requestAnimationFrame(layoutOnAnimationFrame);
23
32
  }
24
- const measureElement = async target => new Promise(res => {
25
- measureLayout(target, null, (x, y, width, height, left, top) => {
26
- res({
33
+ const getElementLayoutEvent = target => {
34
+ let res = null;
35
+ if (measureLayout(target, null, (x, y, width, height, left, top) => {
36
+ res = {
27
37
  nativeEvent: {
28
38
  layout: {
29
39
  x,
@@ -36,27 +46,26 @@ const measureElement = async target => new Promise(res => {
36
46
  target
37
47
  },
38
48
  timeStamp: Date.now()
39
- });
40
- });
41
- }),
42
- cache = /* @__PURE__ */new WeakMap(),
49
+ };
50
+ }), !res) throw new Error("\u203C\uFE0F");
51
+ return res;
52
+ },
43
53
  measureLayout = (node, relativeTo, callback) => {
44
- const relativeNode = relativeTo || node?.parentNode;
54
+ const relativeNode = relativeTo || node?.parentElement;
45
55
  if (relativeNode instanceof HTMLElement) {
46
- const now = Date.now();
47
- cache.set(node, now), Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]).then(([nodeDim, relativeNodeDim]) => {
48
- if (relativeNodeDim && nodeDim && cache.get(node) === now) {
49
- const {
50
- x,
51
- y,
52
- width,
53
- height,
54
- left,
55
- top
56
- } = getRelativeDimensions(nodeDim, relativeNodeDim);
57
- callback(x, y, width, height, left, top);
58
- }
59
- });
56
+ const nodeDim = node.getBoundingClientRect(),
57
+ relativeNodeDim = relativeNode.getBoundingClientRect();
58
+ if (relativeNodeDim && nodeDim) {
59
+ const {
60
+ x,
61
+ y,
62
+ width,
63
+ height,
64
+ left,
65
+ top
66
+ } = getRelativeDimensions(nodeDim, relativeNodeDim);
67
+ callback(x, y, width, height, left, top);
68
+ }
60
69
  }
61
70
  },
62
71
  getRelativeDimensions = (a, b) => {
@@ -76,32 +85,16 @@ const measureElement = async target => new Promise(res => {
76
85
  left,
77
86
  top
78
87
  };
79
- },
80
- getBoundingClientRectAsync = element => new Promise(resolve => {
81
- function fallbackToSync() {
82
- resolve(getBoundingClientRect(element));
83
- }
84
- const tm = setTimeout(fallbackToSync, 10);
85
- new IntersectionObserver((entries, ob) => {
86
- clearTimeout(tm), ob.disconnect(), resolve(entries[0]?.boundingClientRect);
87
- }, {
88
- threshold: 1e-4
89
- }).observe(element);
90
- });
88
+ };
91
89
  function useElementLayout(ref, onLayout) {
92
90
  const node = ref.current?.host;
93
91
  node && onLayout && LayoutHandlers.set(node, onLayout), useIsomorphicLayoutEffect(() => {
94
- if (!resizeObserver || !onLayout) return;
92
+ if (!onLayout) return;
95
93
  const node2 = ref.current?.host;
96
- if (!node2) return;
97
- LayoutHandlers.set(node2, onLayout);
98
- const onResize = () => {
99
- measureElement(node2).then(onLayout);
100
- };
101
- return resizeListeners.add(onResize), resizeObserver.observe(node2), () => {
102
- LayoutHandlers.delete(node2), resizeListeners.delete(onResize), resizeObserver?.unobserve(node2);
94
+ if (node2) return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
95
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
103
96
  };
104
97
  }, [ref, !!onLayout]);
105
98
  }
106
- export { measureElement, measureLayout, useElementLayout };
99
+ export { getElementLayoutEvent, measureLayout, useElementLayout };
107
100
  //# sourceMappingURL=useElementLayout.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","getBoundingClientRect","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","IntersectionObserver","ob","disconnect","boundingClientRect","threshold","observe","useElementLayout","ref","current","host","node2","onResize","add","delete","unobserve"],"sources":["../../../src/hooks/useElementLayout.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","___onDidFinishClientRender","LayoutHandlers","WeakMap","Nodes","Set","NodeRectCache","ParentRectCache","requestAnimationFrame","updateLayoutIfChanged","node","nodeRect","getBoundingClientRect","parentNode","parentElement","parentRect","onLayout","get","cachedRect","cachedParentRect","set","event","getElementLayoutEvent","avoidUpdates","queuedUpdates","layoutOnAnimationFrame","forEach","Map","cb","clear","target","res","measureLayout","x","y","width","height","left","top","nativeEvent","layout","timeStamp","Date","now","Error","relativeTo","callback","relativeNode","HTMLElement","nodeDim","relativeNodeDim","getRelativeDimensions","a","b","useElementLayout","ref","current","host","node2","add","delete"],"sources":["../../../src/hooks/useElementLayout.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,91 +1,78 @@
1
- import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import { getBoundingClientRect } from "../helpers/getBoundingClientRect.native.js";
3
- function _type_of(obj) {
4
- "@swc/helpers - typeof";
5
-
6
- return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
7
- }
1
+ import { isClient, useIsomorphicLayoutEffect } from "@tamagui/constants";
2
+ import { isEqualShallow, ___onDidFinishClientRender } from "@tamagui/web";
8
3
  var LayoutHandlers = /* @__PURE__ */new WeakMap(),
9
- resizeListeners = /* @__PURE__ */new Set(),
10
- resizeObserver = null;
11
- if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver(function (entries) {
12
- var _iteratorNormalCompletion = !0,
13
- _didIteratorError = !1,
14
- _iteratorError = void 0;
15
- try {
16
- for (var _loop = function () {
17
- var {
18
- target
19
- } = _step.value,
20
- onLayout = LayoutHandlers.get(target);
21
- if (typeof onLayout != "function") return {
22
- v: void 0
23
- };
24
- measureElement(target).then(function (event) {
25
- onLayout(event);
26
- });
27
- }, _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
28
- var _ret = _loop();
29
- if (_type_of(_ret) === "object") return _ret.v;
30
- }
31
- } catch (err) {
32
- _didIteratorError = !0, _iteratorError = err;
33
- } finally {
34
- try {
35
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
36
- } finally {
37
- if (_didIteratorError) throw _iteratorError;
38
- }
39
- }
40
- }), typeof window.addEventListener == "function")) {
41
- var tm;
42
- window.addEventListener("resize", function () {
43
- clearTimeout(tm), tm = setTimeout(function () {
44
- resizeListeners.forEach(function (cb) {
45
- return cb();
46
- });
47
- }, 4);
48
- });
4
+ Nodes = /* @__PURE__ */new Set(),
5
+ NodeRectCache = /* @__PURE__ */new WeakMap(),
6
+ ParentRectCache = /* @__PURE__ */new WeakMap();
7
+ if (isClient && typeof requestAnimationFrame == "function") {
8
+ let updateLayoutIfChanged = function (node) {
9
+ var nodeRect = node.getBoundingClientRect(),
10
+ parentNode = node.parentElement,
11
+ parentRect = parentNode?.getBoundingClientRect(),
12
+ onLayout = LayoutHandlers.get(node);
13
+ if (typeof onLayout == "function") {
14
+ var cachedRect = NodeRectCache.get(node),
15
+ cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
16
+ if (!cachedRect ||
17
+ // has changed one rect
18
+ !isEqualShallow(cachedRect, nodeRect) && (!cachedParentRect || !isEqualShallow(cachedParentRect, parentRect))) {
19
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
20
+ var event = getElementLayoutEvent(node);
21
+ avoidUpdates ? queuedUpdates.set(node, function () {
22
+ return onLayout(event);
23
+ }) : onLayout(event);
24
+ }
25
+ }
26
+ },
27
+ layoutOnAnimationFrame = function () {
28
+ Nodes.forEach(updateLayoutIfChanged), requestAnimationFrame(layoutOnAnimationFrame);
29
+ };
30
+ var updateLayoutIfChanged2 = updateLayoutIfChanged,
31
+ layoutOnAnimationFrame2 = layoutOnAnimationFrame,
32
+ avoidUpdates = !0,
33
+ queuedUpdates = /* @__PURE__ */new Map();
34
+ ___onDidFinishClientRender(function () {
35
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(function (cb) {
36
+ return cb();
37
+ }), queuedUpdates.clear());
38
+ }), requestAnimationFrame(layoutOnAnimationFrame);
49
39
  }
50
- var measureElement = async function (target) {
51
- return new Promise(function (res) {
52
- measureLayout(target, null, function (x, y, width, height, left, top) {
53
- res({
54
- nativeEvent: {
55
- layout: {
56
- x,
57
- y,
58
- width,
59
- height,
60
- left,
61
- top
62
- },
63
- target
64
- },
65
- timeStamp: Date.now()
66
- });
67
- });
68
- });
69
- },
70
- cache = /* @__PURE__ */new WeakMap(),
71
- measureLayout = function (node, relativeTo, callback) {
72
- var relativeNode = relativeTo || node?.parentNode;
73
- if (relativeNode instanceof HTMLElement) {
74
- var now = Date.now();
75
- cache.set(node, now), Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]).then(function (param) {
76
- var [nodeDim, relativeNodeDim] = param;
77
- if (relativeNodeDim && nodeDim && cache.get(node) === now) {
78
- var {
40
+ var getElementLayoutEvent = function (target) {
41
+ var res = null;
42
+ if (measureLayout(target, null, function (x, y, width, height, left, top) {
43
+ res = {
44
+ nativeEvent: {
45
+ layout: {
79
46
  x,
80
47
  y,
81
48
  width,
82
49
  height,
83
50
  left,
84
51
  top
85
- } = getRelativeDimensions(nodeDim, relativeNodeDim);
86
- callback(x, y, width, height, left, top);
87
- }
88
- });
52
+ },
53
+ target
54
+ },
55
+ timeStamp: Date.now()
56
+ };
57
+ }), !res) throw new Error("\u203C\uFE0F");
58
+ return res;
59
+ },
60
+ measureLayout = function (node, relativeTo, callback) {
61
+ var relativeNode = relativeTo || node?.parentElement;
62
+ if (relativeNode instanceof HTMLElement) {
63
+ var nodeDim = node.getBoundingClientRect(),
64
+ relativeNodeDim = relativeNode.getBoundingClientRect();
65
+ if (relativeNodeDim && nodeDim) {
66
+ var {
67
+ x,
68
+ y,
69
+ width,
70
+ height,
71
+ left,
72
+ top
73
+ } = getRelativeDimensions(nodeDim, relativeNodeDim);
74
+ callback(x, y, width, height, left, top);
75
+ }
89
76
  }
90
77
  },
91
78
  getRelativeDimensions = function (a, b) {
@@ -105,40 +92,19 @@ var measureElement = async function (target) {
105
92
  left,
106
93
  top
107
94
  };
108
- },
109
- getBoundingClientRectAsync = function (element) {
110
- return new Promise(function (resolve) {
111
- function fallbackToSync() {
112
- resolve(getBoundingClientRect(element));
113
- }
114
- var tm = setTimeout(fallbackToSync, 10),
115
- observer = new IntersectionObserver(function (entries, ob) {
116
- var _entries_;
117
- clearTimeout(tm), ob.disconnect(), resolve((_entries_ = entries[0]) === null || _entries_ === void 0 ? void 0 : _entries_.boundingClientRect);
118
- }, {
119
- threshold: 1e-4
120
- });
121
- observer.observe(element);
122
- });
123
95
  };
124
96
  function useElementLayout(ref, onLayout) {
125
97
  var _ref_current,
126
98
  node = (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.host;
127
99
  node && onLayout && LayoutHandlers.set(node, onLayout), useIsomorphicLayoutEffect(function () {
128
100
  var _ref_current2;
129
- if (!(!resizeObserver || !onLayout)) {
101
+ if (onLayout) {
130
102
  var node2 = (_ref_current2 = ref.current) === null || _ref_current2 === void 0 ? void 0 : _ref_current2.host;
131
- if (node2) {
132
- LayoutHandlers.set(node2, onLayout);
133
- var onResize = function () {
134
- measureElement(node2).then(onLayout);
135
- };
136
- return resizeListeners.add(onResize), resizeObserver.observe(node2), function () {
137
- LayoutHandlers.delete(node2), resizeListeners.delete(onResize), resizeObserver?.unobserve(node2);
138
- };
139
- }
103
+ if (node2) return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), function () {
104
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
105
+ };
140
106
  }
141
107
  }, [ref, !!onLayout]);
142
108
  }
143
- export { measureElement, measureLayout, useElementLayout };
109
+ export { getElementLayoutEvent, measureLayout, useElementLayout };
144
110
  //# sourceMappingURL=useElementLayout.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","getBoundingClientRect","_type_of","obj","Symbol","constructor","LayoutHandlers","WeakMap","resizeListeners","Set","resizeObserver","window","ResizeObserver","entries","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","target","_step","value","onLayout","get","v","measureElement","then","event","_iterator","iterator","next","done","_ret","err","return","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","param","nodeDim","relativeNodeDim","getRelativeDimensions","a","b"],"sources":["../../../src/hooks/useElementLayout.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isClient","useIsomorphicLayoutEffect","isEqualShallow","___onDidFinishClientRender","LayoutHandlers","WeakMap","Nodes","Set","NodeRectCache","ParentRectCache","requestAnimationFrame","updateLayoutIfChanged","node","nodeRect","getBoundingClientRect","parentNode","parentElement","parentRect","onLayout","get","cachedRect","cachedParentRect","set","event","getElementLayoutEvent","avoidUpdates","queuedUpdates","layoutOnAnimationFrame","forEach","updateLayoutIfChanged2","layoutOnAnimationFrame2","Map","cb","clear","target","res","measureLayout","x","y","width","height","left","top","nativeEvent","layout","timeStamp","Date","now","Error","relativeTo","callback","relativeNode","HTMLElement","nodeDim","relativeNodeDim","getRelativeDimensions","a","b"],"sources":["../../../src/hooks/useElementLayout.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -14,6 +14,9 @@ import { getRect } from "./helpers/getRect";
14
14
  import { measureLayout, useElementLayout } from "./hooks/useElementLayout";
15
15
  import "./vendor/Pressability";
16
16
  import { addNativeValidStyles } from "./addNativeValidStyles";
17
+ import {
18
+ getElementLayoutEvent
19
+ } from "./hooks/useElementLayout";
17
20
  export * from "@tamagui/web";
18
21
  export * from "./reactNativeTypes";
19
22
  addNativeValidStyles();
@@ -75,6 +78,7 @@ export {
75
78
  Stack,
76
79
  Text,
77
80
  View,
78
- createTamagui
81
+ createTamagui,
82
+ getElementLayoutEvent
79
83
  };
80
84
  //# sourceMappingURL=index.js.map