@tamagui/core 1.126.13 → 1.126.14

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.
@@ -20,37 +20,48 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
20
20
  }), mod);
21
21
  var useElementLayout_exports = {};
22
22
  __export(useElementLayout_exports, {
23
- measureElement: () => measureElement,
23
+ getElementLayoutEvent: () => getElementLayoutEvent,
24
24
  measureLayout: () => measureLayout,
25
25
  useElementLayout: () => useElementLayout
26
26
  });
27
27
  module.exports = __toCommonJS(useElementLayout_exports);
28
28
  var import_constants = require("@tamagui/constants"),
29
- import_getBoundingClientRect = require("../helpers/getBoundingClientRect.cjs");
29
+ import_web = require("@tamagui/web");
30
30
  const LayoutHandlers = /* @__PURE__ */new WeakMap(),
31
- resizeListeners = /* @__PURE__ */new Set();
32
- let resizeObserver = null;
33
- if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver(entries => {
34
- for (const {
35
- target
36
- } of entries) {
37
- const onLayout = LayoutHandlers.get(target);
38
- if (typeof onLayout != "function") return;
39
- measureElement(target).then(event => {
40
- onLayout(event);
41
- });
42
- }
43
- }), typeof window.addEventListener == "function")) {
44
- let tm;
45
- window.addEventListener("resize", () => {
46
- clearTimeout(tm), tm = setTimeout(() => {
47
- resizeListeners.forEach(cb => cb());
48
- }, 4);
49
- });
50
- }
51
- const measureElement = async target => new Promise(res => {
52
- measureLayout(target, null, (x, y, width, height, left, top) => {
53
- res({
31
+ Nodes = /* @__PURE__ */new Set(),
32
+ NodeRectCache = /* @__PURE__ */new WeakMap(),
33
+ ParentRectCache = /* @__PURE__ */new WeakMap(),
34
+ rAF = typeof window < "u" ? window.requestAnimationFrame : void 0;
35
+ if (import_constants.isClient) if (rAF) {
36
+ let updateLayoutIfChanged = function (node) {
37
+ const nodeRect = node.getBoundingClientRect(),
38
+ parentNode = node.parentElement,
39
+ parentRect = parentNode?.getBoundingClientRect(),
40
+ onLayout = LayoutHandlers.get(node);
41
+ if (typeof onLayout != "function") return;
42
+ const cachedRect = NodeRectCache.get(node),
43
+ cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
44
+ if (!cachedRect ||
45
+ // has changed one rect
46
+ !(0, import_web.isEqualShallow)(cachedRect, nodeRect) && (!cachedParentRect || !(0, import_web.isEqualShallow)(cachedParentRect, parentRect))) {
47
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
48
+ const event = getElementLayoutEvent(node);
49
+ avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
50
+ }
51
+ },
52
+ layoutOnAnimationFrame = function () {
53
+ Nodes.forEach(updateLayoutIfChanged), rAF(layoutOnAnimationFrame);
54
+ },
55
+ avoidUpdates = !0;
56
+ const queuedUpdates = /* @__PURE__ */new Map();
57
+ (0, import_web.___onDidFinishClientRender)(() => {
58
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(cb => cb()), queuedUpdates.clear());
59
+ }), rAF(layoutOnAnimationFrame);
60
+ } else process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
61
+ const getElementLayoutEvent = target => {
62
+ let res = null;
63
+ if (measureLayout(target, null, (x, y, width, height, left, top) => {
64
+ res = {
54
65
  nativeEvent: {
55
66
  layout: {
56
67
  x,
@@ -63,27 +74,26 @@ const measureElement = async target => new Promise(res => {
63
74
  target
64
75
  },
65
76
  timeStamp: Date.now()
66
- });
67
- });
68
- }),
69
- cache = /* @__PURE__ */new WeakMap(),
77
+ };
78
+ }), !res) throw new Error("\u203C\uFE0F");
79
+ return res;
80
+ },
70
81
  measureLayout = (node, relativeTo, callback) => {
71
- const relativeNode = relativeTo || node?.parentNode;
82
+ const relativeNode = relativeTo || node?.parentElement;
72
83
  if (relativeNode instanceof HTMLElement) {
73
- const now = Date.now();
74
- cache.set(node, now), Promise.all([getBoundingClientRectAsync(node), getBoundingClientRectAsync(relativeNode)]).then(([nodeDim, relativeNodeDim]) => {
75
- if (relativeNodeDim && nodeDim && cache.get(node) === now) {
76
- const {
77
- x,
78
- y,
79
- width,
80
- height,
81
- left,
82
- top
83
- } = getRelativeDimensions(nodeDim, relativeNodeDim);
84
- callback(x, y, width, height, left, top);
85
- }
86
- });
84
+ const nodeDim = node.getBoundingClientRect(),
85
+ relativeNodeDim = relativeNode.getBoundingClientRect();
86
+ if (relativeNodeDim && nodeDim) {
87
+ const {
88
+ x,
89
+ y,
90
+ width,
91
+ height,
92
+ left,
93
+ top
94
+ } = getRelativeDimensions(nodeDim, relativeNodeDim);
95
+ callback(x, y, width, height, left, top);
96
+ }
87
97
  }
88
98
  },
89
99
  getRelativeDimensions = (a, b) => {
@@ -103,30 +113,14 @@ const measureElement = async target => new Promise(res => {
103
113
  left,
104
114
  top
105
115
  };
106
- },
107
- getBoundingClientRectAsync = element => new Promise(resolve => {
108
- function fallbackToSync() {
109
- resolve((0, import_getBoundingClientRect.getBoundingClientRect)(element));
110
- }
111
- const tm = setTimeout(fallbackToSync, 10);
112
- new IntersectionObserver((entries, ob) => {
113
- clearTimeout(tm), ob.disconnect(), resolve(entries[0]?.boundingClientRect);
114
- }, {
115
- threshold: 1e-4
116
- }).observe(element);
117
- });
116
+ };
118
117
  function useElementLayout(ref, onLayout) {
119
118
  const node = ref.current?.host;
120
119
  node && onLayout && LayoutHandlers.set(node, onLayout), (0, import_constants.useIsomorphicLayoutEffect)(() => {
121
- if (!resizeObserver || !onLayout) return;
120
+ if (!onLayout) return;
122
121
  const node2 = ref.current?.host;
123
- if (!node2) return;
124
- LayoutHandlers.set(node2, onLayout);
125
- const onResize = () => {
126
- measureElement(node2).then(onLayout);
127
- };
128
- return resizeListeners.add(onResize), resizeObserver.observe(node2), () => {
129
- LayoutHandlers.delete(node2), resizeListeners.delete(onResize), resizeObserver?.unobserve(node2);
122
+ if (node2) return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
123
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
130
124
  };
131
125
  }, [ref, !!onLayout]);
132
126
  }
@@ -14,87 +14,74 @@ var __export = (target, all) => {
14
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
15
  var useElementLayout_exports = {};
16
16
  __export(useElementLayout_exports, {
17
- measureElement: () => measureElement,
17
+ getElementLayoutEvent: () => getElementLayoutEvent,
18
18
  measureLayout: () => measureLayout,
19
19
  useElementLayout: () => useElementLayout
20
20
  });
21
21
  module.exports = __toCommonJS(useElementLayout_exports);
22
- var import_constants = require("@tamagui/constants"), import_getBoundingClientRect = require("../helpers/getBoundingClientRect");
23
- const LayoutHandlers = /* @__PURE__ */ new WeakMap(), resizeListeners = /* @__PURE__ */ new Set();
24
- let resizeObserver = null;
25
- if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver((entries) => {
26
- for (const { target } of entries) {
27
- const onLayout = LayoutHandlers.get(target);
28
- if (typeof onLayout != "function") return;
29
- measureElement(target).then((event) => {
30
- onLayout(event);
31
- });
32
- }
33
- }), typeof window.addEventListener == "function")) {
34
- let tm;
35
- window.addEventListener("resize", () => {
36
- clearTimeout(tm), tm = setTimeout(() => {
37
- resizeListeners.forEach((cb) => cb());
38
- }, 4);
39
- });
40
- }
41
- const measureElement = async (target) => new Promise((res) => {
42
- measureLayout(target, null, (x, y, width, height, left, top) => {
43
- res({
22
+ var import_constants = require("@tamagui/constants"), import_web = require("@tamagui/web");
23
+ const LayoutHandlers = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set(), NodeRectCache = /* @__PURE__ */ new WeakMap(), ParentRectCache = /* @__PURE__ */ new WeakMap(), rAF = typeof window < "u" ? window.requestAnimationFrame : void 0;
24
+ if (import_constants.isClient)
25
+ if (rAF) {
26
+ let updateLayoutIfChanged = function(node) {
27
+ const nodeRect = node.getBoundingClientRect(), parentNode = node.parentElement, parentRect = parentNode?.getBoundingClientRect(), onLayout = LayoutHandlers.get(node);
28
+ if (typeof onLayout != "function") return;
29
+ const cachedRect = NodeRectCache.get(node), cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
30
+ if (!cachedRect || // has changed one rect
31
+ !(0, import_web.isEqualShallow)(cachedRect, nodeRect) && (!cachedParentRect || !(0, import_web.isEqualShallow)(cachedParentRect, parentRect))) {
32
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
33
+ const event = getElementLayoutEvent(node);
34
+ avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
35
+ }
36
+ }, layoutOnAnimationFrame = function() {
37
+ Nodes.forEach(updateLayoutIfChanged), rAF(layoutOnAnimationFrame);
38
+ }, avoidUpdates = !0;
39
+ const queuedUpdates = /* @__PURE__ */ new Map();
40
+ (0, import_web.___onDidFinishClientRender)(() => {
41
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach((cb) => cb()), queuedUpdates.clear());
42
+ }), rAF(layoutOnAnimationFrame);
43
+ } else
44
+ process.env.NODE_ENV === "development" && console.warn(
45
+ "No requestAnimationFrame - please polyfill for onLayout to work correctly"
46
+ );
47
+ const getElementLayoutEvent = (target) => {
48
+ let res = null;
49
+ if (measureLayout(target, null, (x, y, width, height, left, top) => {
50
+ res = {
44
51
  nativeEvent: {
45
52
  layout: { x, y, width, height, left, top },
46
53
  target
47
54
  },
48
55
  timeStamp: Date.now()
49
- });
50
- });
51
- }), cache = /* @__PURE__ */ new WeakMap(), measureLayout = (node, relativeTo, callback) => {
52
- const relativeNode = relativeTo || node?.parentNode;
56
+ };
57
+ }), !res)
58
+ throw new Error("\u203C\uFE0F");
59
+ return res;
60
+ }, measureLayout = (node, relativeTo, callback) => {
61
+ const relativeNode = relativeTo || node?.parentElement;
53
62
  if (relativeNode instanceof HTMLElement) {
54
- const now = Date.now();
55
- cache.set(node, now), Promise.all([
56
- getBoundingClientRectAsync(node),
57
- getBoundingClientRectAsync(relativeNode)
58
- ]).then(([nodeDim, relativeNodeDim]) => {
59
- if (relativeNodeDim && nodeDim && cache.get(node) === now) {
60
- const { x, y, width, height, left, top } = getRelativeDimensions(
61
- nodeDim,
62
- relativeNodeDim
63
- );
64
- callback(x, y, width, height, left, top);
65
- }
66
- });
63
+ const nodeDim = node.getBoundingClientRect(), relativeNodeDim = relativeNode.getBoundingClientRect();
64
+ if (relativeNodeDim && nodeDim) {
65
+ const { x, y, width, height, left, top } = getRelativeDimensions(
66
+ nodeDim,
67
+ relativeNodeDim
68
+ );
69
+ callback(x, y, width, height, left, top);
70
+ }
67
71
  }
68
72
  }, getRelativeDimensions = (a, b) => {
69
73
  const { height, left, top, width } = a, x = left - b.left, y = top - b.top;
70
74
  return { x, y, width, height, left, top };
71
- }, getBoundingClientRectAsync = (element) => new Promise((resolve) => {
72
- function fallbackToSync() {
73
- resolve((0, import_getBoundingClientRect.getBoundingClientRect)(element));
74
- }
75
- const tm = setTimeout(fallbackToSync, 10);
76
- new IntersectionObserver(
77
- (entries, ob) => {
78
- clearTimeout(tm), ob.disconnect(), resolve(entries[0]?.boundingClientRect);
79
- },
80
- {
81
- threshold: 1e-4
82
- }
83
- ).observe(element);
84
- });
75
+ };
85
76
  function useElementLayout(ref, onLayout) {
86
77
  const node = ref.current?.host;
87
78
  node && onLayout && LayoutHandlers.set(node, onLayout), (0, import_constants.useIsomorphicLayoutEffect)(() => {
88
- if (!resizeObserver || !onLayout) return;
79
+ if (!onLayout) return;
89
80
  const node2 = ref.current?.host;
90
- if (!node2) return;
91
- LayoutHandlers.set(node2, onLayout);
92
- const onResize = () => {
93
- measureElement(node2).then(onLayout);
94
- };
95
- return resizeListeners.add(onResize), resizeObserver.observe(node2), () => {
96
- LayoutHandlers.delete(node2), resizeListeners.delete(onResize), resizeObserver?.unobserve(node2);
97
- };
81
+ if (node2)
82
+ return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
83
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
84
+ };
98
85
  }, [ref, !!onLayout]);
99
86
  }
100
87
  //# sourceMappingURL=useElementLayout.js.map
@@ -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
  }
@@ -15,85 +15,66 @@ var __export = (target, all) => {
15
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
16
  var useElementLayout_exports = {};
17
17
  __export(useElementLayout_exports, {
18
- measureElement: () => measureElement,
18
+ getElementLayoutEvent: () => getElementLayoutEvent,
19
19
  measureLayout: () => measureLayout,
20
20
  useElementLayout: () => useElementLayout
21
21
  });
22
22
  module.exports = __toCommonJS(useElementLayout_exports);
23
- var import_constants = require("@tamagui/constants"), import_getBoundingClientRect = require("../helpers/getBoundingClientRect");
24
- function _type_of(obj) {
25
- "@swc/helpers - typeof";
26
- return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
27
- }
28
- var LayoutHandlers = /* @__PURE__ */ new WeakMap(), resizeListeners = /* @__PURE__ */ new Set(), resizeObserver = null;
29
- if (typeof window < "u" && "ResizeObserver" in window && (resizeObserver = new ResizeObserver(function(entries) {
30
- var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
31
- try {
32
- for (var _loop = function() {
33
- var { target } = _step.value, onLayout = LayoutHandlers.get(target);
34
- if (typeof onLayout != "function") return {
35
- v: void 0
36
- };
37
- measureElement(target).then(function(event) {
38
- onLayout(event);
39
- });
40
- }, _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
41
- var _ret = _loop();
42
- if (_type_of(_ret) === "object") return _ret.v;
43
- }
44
- } catch (err) {
45
- _didIteratorError = !0, _iteratorError = err;
46
- } finally {
47
- try {
48
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
49
- } finally {
50
- if (_didIteratorError)
51
- throw _iteratorError;
52
- }
53
- }
54
- }), typeof window.addEventListener == "function")) {
55
- var tm;
56
- window.addEventListener("resize", function() {
57
- clearTimeout(tm), tm = setTimeout(function() {
58
- resizeListeners.forEach(function(cb) {
23
+ var import_constants = require("@tamagui/constants"), import_web = require("@tamagui/web"), LayoutHandlers = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set(), NodeRectCache = /* @__PURE__ */ new WeakMap(), ParentRectCache = /* @__PURE__ */ new WeakMap(), rAF = typeof window < "u" ? window.requestAnimationFrame : void 0;
24
+ if (import_constants.isClient)
25
+ if (rAF) {
26
+ let updateLayoutIfChanged = function(node) {
27
+ var nodeRect = node.getBoundingClientRect(), parentNode = node.parentElement, parentRect = parentNode == null ? void 0 : parentNode.getBoundingClientRect(), onLayout = LayoutHandlers.get(node);
28
+ if (typeof onLayout == "function") {
29
+ var cachedRect = NodeRectCache.get(node), cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
30
+ if (!cachedRect || // has changed one rect
31
+ !(0, import_web.isEqualShallow)(cachedRect, nodeRect) && (!cachedParentRect || !(0, import_web.isEqualShallow)(cachedParentRect, parentRect))) {
32
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
33
+ var event = getElementLayoutEvent(node);
34
+ avoidUpdates ? queuedUpdates.set(node, function() {
35
+ return onLayout(event);
36
+ }) : onLayout(event);
37
+ }
38
+ }
39
+ }, layoutOnAnimationFrame = function() {
40
+ Nodes.forEach(updateLayoutIfChanged), rAF(layoutOnAnimationFrame);
41
+ };
42
+ var updateLayoutIfChanged2 = updateLayoutIfChanged, layoutOnAnimationFrame2 = layoutOnAnimationFrame, avoidUpdates = !0, queuedUpdates = /* @__PURE__ */ new Map();
43
+ (0, import_web.___onDidFinishClientRender)(function() {
44
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(function(cb) {
59
45
  return cb();
60
- });
61
- }, 4);
62
- });
63
- }
64
- var measureElement = async function(target) {
65
- return new Promise(function(res) {
66
- measureLayout(target, null, function(x, y, width, height, left, top) {
67
- res({
68
- nativeEvent: {
69
- layout: {
70
- x,
71
- y,
72
- width,
73
- height,
74
- left,
75
- top
76
- },
77
- target
46
+ }), queuedUpdates.clear());
47
+ }), rAF(layoutOnAnimationFrame);
48
+ } else
49
+ process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
50
+ var getElementLayoutEvent = function(target) {
51
+ var res = null;
52
+ if (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
78
62
  },
79
- timeStamp: Date.now()
80
- });
81
- });
82
- });
83
- }, cache = /* @__PURE__ */ new WeakMap(), measureLayout = function(node, relativeTo, callback) {
84
- var relativeNode = relativeTo || (node == null ? void 0 : node.parentNode);
63
+ target
64
+ },
65
+ timeStamp: Date.now()
66
+ };
67
+ }), !res)
68
+ throw new Error("\u203C\uFE0F");
69
+ return res;
70
+ }, measureLayout = function(node, relativeTo, callback) {
71
+ var relativeNode = relativeTo || (node == null ? void 0 : node.parentElement);
85
72
  if (relativeNode instanceof HTMLElement) {
86
- var now = Date.now();
87
- cache.set(node, now), Promise.all([
88
- getBoundingClientRectAsync(node),
89
- getBoundingClientRectAsync(relativeNode)
90
- ]).then(function(param) {
91
- var [nodeDim, relativeNodeDim] = param;
92
- if (relativeNodeDim && nodeDim && cache.get(node) === now) {
93
- var { x, y, width, height, left, top } = getRelativeDimensions(nodeDim, relativeNodeDim);
94
- callback(x, y, width, height, left, top);
95
- }
96
- });
73
+ var nodeDim = node.getBoundingClientRect(), relativeNodeDim = relativeNode.getBoundingClientRect();
74
+ if (relativeNodeDim && nodeDim) {
75
+ var { x, y, width, height, left, top } = getRelativeDimensions(nodeDim, relativeNodeDim);
76
+ callback(x, y, width, height, left, top);
77
+ }
97
78
  }
98
79
  }, getRelativeDimensions = function(a, b) {
99
80
  var { height, left, top, width } = a, x = left - b.left, y = top - b.top;
@@ -105,35 +86,17 @@ var measureElement = async function(target) {
105
86
  left,
106
87
  top
107
88
  };
108
- }, getBoundingClientRectAsync = function(element) {
109
- return new Promise(function(resolve) {
110
- function fallbackToSync() {
111
- resolve((0, import_getBoundingClientRect.getBoundingClientRect)(element));
112
- }
113
- var tm = setTimeout(fallbackToSync, 10), observer = new IntersectionObserver(function(entries, ob) {
114
- var _entries_;
115
- clearTimeout(tm), ob.disconnect(), resolve((_entries_ = entries[0]) === null || _entries_ === void 0 ? void 0 : _entries_.boundingClientRect);
116
- }, {
117
- threshold: 1e-4
118
- });
119
- observer.observe(element);
120
- });
121
89
  };
122
90
  function useElementLayout(ref, onLayout) {
123
91
  var _ref_current, node = (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.host;
124
92
  node && onLayout && LayoutHandlers.set(node, onLayout), (0, import_constants.useIsomorphicLayoutEffect)(function() {
125
93
  var _ref_current2;
126
- if (!(!resizeObserver || !onLayout)) {
94
+ if (onLayout) {
127
95
  var node2 = (_ref_current2 = ref.current) === null || _ref_current2 === void 0 ? void 0 : _ref_current2.host;
128
- if (node2) {
129
- LayoutHandlers.set(node2, onLayout);
130
- var onResize = function() {
131
- measureElement(node2).then(onLayout);
96
+ if (node2)
97
+ return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), function() {
98
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
132
99
  };
133
- return resizeListeners.add(onResize), resizeObserver.observe(node2), function() {
134
- LayoutHandlers.delete(node2), resizeListeners.delete(onResize), resizeObserver == null || resizeObserver.unobserve(node2);
135
- };
136
- }
137
100
  }
138
101
  }, [
139
102
  ref,
@@ -142,7 +105,7 @@ function useElementLayout(ref, onLayout) {
142
105
  }
143
106
  // Annotate the CommonJS export names for ESM import in node:
144
107
  0 && (module.exports = {
145
- measureElement,
108
+ getElementLayoutEvent,
146
109
  measureLayout,
147
110
  useElementLayout
148
111
  });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useElementLayout.tsx"],
4
- "mappings": "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",
5
- "names": ["LayoutHandlers", "WeakMap", "resizeListeners", "Set", "resizeObserver", "window", "ResizeObserver", "entries", "target", "onLayout", "get", "measureElement", "then", "event", "addEventListener", "tm", "clearTimeout", "setTimeout", "forEach", "cb", "Promise", "res", "measureLayout", "x", "y", "width", "height", "left", "top", "nativeEvent", "layout", "timeStamp", "Date", "now", "cache", "node", "relativeTo", "callback", "relativeNode", "parentNode", "HTMLElement", "set", "all", "getBoundingClientRectAsync", "nodeDim", "relativeNodeDim", "getRelativeDimensions", "a", "b", "element", "resolve", "fallbackToSync", "getBoundingClientRect", "observer", "IntersectionObserver", "ob", "disconnect", "boundingClientRect", "threshold", "observe", "useElementLayout", "ref", "current", "host", "useIsomorphicLayoutEffect", "onResize", "add", "delete", "unobserve"]
4
+ "mappings": "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",
5
+ "names": ["LayoutHandlers", "WeakMap", "Nodes", "Set", "NodeRectCache", "ParentRectCache", "rAF", "window", "requestAnimationFrame", "undefined", "isClient", "updateLayoutIfChanged", "node", "nodeRect", "getBoundingClientRect", "parentNode", "parentElement", "parentRect", "onLayout", "get", "cachedRect", "cachedParentRect", "isEqualShallow", "set", "event", "getElementLayoutEvent", "avoidUpdates", "queuedUpdates", "layoutOnAnimationFrame", "forEach", "Map", "___onDidFinishClientRender", "cb", "clear", "process", "env", "NODE_ENV", "console", "warn", "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", "useIsomorphicLayoutEffect", "add", "delete"]
6
6
  }
@@ -24,7 +24,8 @@ __export(index_exports, {
24
24
  Stack: () => Stack,
25
25
  Text: () => Text,
26
26
  View: () => View,
27
- createTamagui: () => createTamagui
27
+ createTamagui: () => createTamagui,
28
+ getElementLayoutEvent: () => import_useElementLayout2.getElementLayoutEvent
28
29
  });
29
30
  module.exports = __toCommonJS(index_exports);
30
31
  var import_react_native_media_driver = require("@tamagui/react-native-media-driver"),
@@ -36,7 +37,8 @@ var import_react_native_media_driver = require("@tamagui/react-native-media-driv
36
37
  import_getRect = require("./helpers/getRect.cjs"),
37
38
  import_useElementLayout = require("./hooks/useElementLayout.cjs"),
38
39
  import_Pressability = require("./vendor/Pressability.cjs"),
39
- import_addNativeValidStyles = require("./addNativeValidStyles.cjs");
40
+ import_addNativeValidStyles = require("./addNativeValidStyles.cjs"),
41
+ import_useElementLayout2 = require("./hooks/useElementLayout.cjs");
40
42
  __reExport(index_exports, require("@tamagui/web"), module.exports);
41
43
  __reExport(index_exports, require("./reactNativeTypes.cjs"), module.exports);
42
44
  (0, import_addNativeValidStyles.addNativeValidStyles)();
package/dist/cjs/index.js CHANGED
@@ -17,10 +17,11 @@ __export(index_exports, {
17
17
  Stack: () => Stack,
18
18
  Text: () => Text,
19
19
  View: () => View,
20
- createTamagui: () => createTamagui
20
+ createTamagui: () => createTamagui,
21
+ getElementLayoutEvent: () => import_useElementLayout2.getElementLayoutEvent
21
22
  });
22
23
  module.exports = __toCommonJS(index_exports);
23
- var import_react_native_media_driver = require("@tamagui/react-native-media-driver"), import_react_native_use_responder_events = require("@tamagui/react-native-use-responder-events"), import_web = require("@tamagui/web"), import_react = require("react"), import_createOptimizedView = require("./createOptimizedView"), import_getBaseViews = require("./getBaseViews"), import_getRect = require("./helpers/getRect"), import_useElementLayout = require("./hooks/useElementLayout"), import_Pressability = require("./vendor/Pressability"), import_addNativeValidStyles = require("./addNativeValidStyles");
24
+ var import_react_native_media_driver = require("@tamagui/react-native-media-driver"), import_react_native_use_responder_events = require("@tamagui/react-native-use-responder-events"), import_web = require("@tamagui/web"), import_react = require("react"), import_createOptimizedView = require("./createOptimizedView"), import_getBaseViews = require("./getBaseViews"), import_getRect = require("./helpers/getRect"), import_useElementLayout = require("./hooks/useElementLayout"), import_Pressability = require("./vendor/Pressability"), import_addNativeValidStyles = require("./addNativeValidStyles"), import_useElementLayout2 = require("./hooks/useElementLayout");
24
25
  __reExport(index_exports, require("@tamagui/web"), module.exports);
25
26
  __reExport(index_exports, require("./reactNativeTypes"), module.exports);
26
27
  (0, import_addNativeValidStyles.addNativeValidStyles)();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCAA4B,+CAC5B,2CAAmC,uDAYnC,aAOO,yBACP,eAAkB,kBAElB,6BAAoC,kCACpC,sBAA6B,2BAC7B,iBAAwB,8BACxB,0BAAgD,qCAEhD,sBAAgC,kCAChC,8BAAqC;AAkCrC,0BAAc,yBA/Dd;AAkEA,0BAAc,+BAlEd;AAAA,IAgCA,kDAAqB;AAqCd,MAAM,gBAAyC,CAAC,aAM9C,WAAAA,eAAiB,IAAI,GAGxB,gBAAY,kCAAa;AAAA,IAI/B,uBAAW;AAAA,EACT;AAAA,EAEA,iBAAiB,CAAC,SAAS;AAEzB,IAAI,QAAQ,CAAC,KAAK,YAEhB,KAAK,YAAY,CAAC,iBAAa,uCAAc,MAAM,MAAM,QAAQ,GAEjE,KAAK,kBAAkB,CAAC,gBAAgB,gBACtC,uCAAc,MAAqB,gBAAgB,OAAO,GAE5D,KAAK,oBAAoB,CAAC,aAAa;AACrC,iBAAW,MAAM;AACf,cAAM,EAAE,QAAQ,MAAM,KAAK,MAAM,QAAI,wBAAQ,IAAmB;AAChE,iBAAS,MAAM,KAAK,OAAO,MAAM;AAAA,MACnC,GAAG,CAAC;AAAA,IACN;AAAA,EAEJ;AAAA,EAEA,kBAAkB,aAAa,SAAS,UAAU,aAAa;AACnB;AACxC,YAAM,QAAQ,OAAO,eAAgB,UAG/B;AAAA;AAAA,QAEJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA,GAAG;AAAA,MACL,IAAI;AAOJ,WALI,eAAe,eACjB,0CAAiB,UAAW,QAAqB,WAAb,MAA6B,OACjE,6DAAmB,UAAW,QAAoB,UAAZ,MAAmB,IAGvD,OAAO;AAET,YAAI,cAAc,QAAQ,WAAW;AACnC,gBAAM,EAAE,UAAU,KAAK,OAAO,IAAI;AAClC,UAAI,YAAY,SACd,cAAc,WAAW,WAEvB,QACF,cAAc,MAAM,MAElB,OAAO,UAAW,aACpB,cAAc,SAAS,OAAO,OAAO,CAAC,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,QAErE;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU,WAAW,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,cAAc;AAAA,EA0DzE;AAwBF,CAAC;AAQM,MAAM,OAAO,WAAAC,MACP,QAAQ,WAAAC,OACR,OAAO,WAAAC;",
5
- "names": ["createTamaguiWeb", "WebView", "WebStack", "WebText"]
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCAA4B,+CAC5B,2CAAmC,uDAYnC,aAOO,yBACP,eAAkB,kBAElB,6BAAoC,kCACpC,sBAA6B,2BAC7B,iBAAwB,8BACxB,0BAAgD,qCAEhD,sBAAgC,kCAChC,8BAAqC,mCAGrCA,2BAGO;AAkCP,0BAAc,yBArEd;AAwEA,0BAAc,+BAxEd;AAAA,IAsCA,kDAAqB;AAqCd,MAAM,gBAAyC,CAAC,aAM9C,WAAAC,eAAiB,IAAI,GAGxB,gBAAY,kCAAa;AAAA,IAI/B,uBAAW;AAAA,EACT;AAAA,EAEA,iBAAiB,CAAC,SAAS;AAEzB,IAAI,QAAQ,CAAC,KAAK,YAEhB,KAAK,YAAY,CAAC,iBAAa,uCAAc,MAAM,MAAM,QAAQ,GAEjE,KAAK,kBAAkB,CAAC,gBAAgB,gBACtC,uCAAc,MAAqB,gBAAgB,OAAO,GAE5D,KAAK,oBAAoB,CAAC,aAAa;AACrC,iBAAW,MAAM;AACf,cAAM,EAAE,QAAQ,MAAM,KAAK,MAAM,QAAI,wBAAQ,IAAmB;AAChE,iBAAS,MAAM,KAAK,OAAO,MAAM;AAAA,MACnC,GAAG,CAAC;AAAA,IACN;AAAA,EAEJ;AAAA,EAEA,kBAAkB,aAAa,SAAS,UAAU,aAAa;AACnB;AACxC,YAAM,QAAQ,OAAO,eAAgB,UAG/B;AAAA;AAAA,QAEJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA,GAAG;AAAA,MACL,IAAI;AAOJ,WALI,eAAe,eACjB,0CAAiB,UAAW,QAAqB,WAAb,MAA6B,OACjE,6DAAmB,UAAW,QAAoB,UAAZ,MAAmB,IAGvD,OAAO;AAET,YAAI,cAAc,QAAQ,WAAW;AACnC,gBAAM,EAAE,UAAU,KAAK,OAAO,IAAI;AAClC,UAAI,YAAY,SACd,cAAc,WAAW,WAEvB,QACF,cAAc,MAAM,MAElB,OAAO,UAAW,aACpB,cAAc,SAAS,OAAO,OAAO,CAAC,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,QAErE;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU,WAAW,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,cAAc;AAAA,EA0DzE;AAwBF,CAAC;AAQM,MAAM,OAAO,WAAAC,MACP,QAAQ,WAAAC,OACR,OAAO,WAAAC;",
5
+ "names": ["import_useElementLayout", "createTamaguiWeb", "WebView", "WebStack", "WebText"]
6
6
  }
@@ -25,10 +25,11 @@ __export(index_exports, {
25
25
  Stack: () => Stack,
26
26
  Text: () => Text,
27
27
  View: () => View,
28
- createTamagui: () => createTamagui
28
+ createTamagui: () => createTamagui,
29
+ getElementLayoutEvent: () => import_useElementLayout2.getElementLayoutEvent
29
30
  });
30
31
  module.exports = __toCommonJS(index_exports);
31
- var import_react_native_media_driver = require("@tamagui/react-native-media-driver"), import_react_native_use_responder_events = require("@tamagui/react-native-use-responder-events"), import_web = require("@tamagui/web"), import_react = __toESM(require("react")), import_createOptimizedView = require("./createOptimizedView"), import_getBaseViews = require("./getBaseViews"), import_getRect = require("./helpers/getRect"), import_useElementLayout = require("./hooks/useElementLayout"), import_Pressability = require("./vendor/Pressability"), import_addNativeValidStyles = require("./addNativeValidStyles");
32
+ var import_react_native_media_driver = require("@tamagui/react-native-media-driver"), import_react_native_use_responder_events = require("@tamagui/react-native-use-responder-events"), import_web = require("@tamagui/web"), import_react = __toESM(require("react")), import_createOptimizedView = require("./createOptimizedView"), import_getBaseViews = require("./getBaseViews"), import_getRect = require("./helpers/getRect"), import_useElementLayout = require("./hooks/useElementLayout"), import_Pressability = require("./vendor/Pressability"), import_addNativeValidStyles = require("./addNativeValidStyles"), import_useElementLayout2 = require("./hooks/useElementLayout");
32
33
  __reExport(index_exports, require("@tamagui/web"), module.exports);
33
34
  __reExport(index_exports, require("./reactNativeTypes"), module.exports);
34
35
  (0, import_addNativeValidStyles.addNativeValidStyles)();
@@ -97,6 +98,7 @@ var dontComposePressabilityKeys = {
97
98
  Text,
98
99
  View,
99
100
  createTamagui,
101
+ getElementLayoutEvent,
100
102
  ...require("@tamagui/web"),
101
103
  ...require("./reactNativeTypes")
102
104
  });