@tamagui/core 1.126.13 → 1.126.15

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,53 @@ 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
+ setOnLayoutStrategy: () => setOnLayoutStrategy,
25
26
  useElementLayout: () => useElementLayout
26
27
  });
27
28
  module.exports = __toCommonJS(useElementLayout_exports);
28
29
  var import_constants = require("@tamagui/constants"),
29
- import_getBoundingClientRect = require("../helpers/getBoundingClientRect.cjs");
30
+ import_web = require("@tamagui/web");
30
31
  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
- });
32
+ Nodes = /* @__PURE__ */new Set();
33
+ let status = "active";
34
+ function setOnLayoutStrategy(state) {
35
+ status = state;
50
36
  }
51
- const measureElement = async target => new Promise(res => {
52
- measureLayout(target, null, (x, y, width, height, left, top) => {
53
- res({
37
+ const NodeRectCache = /* @__PURE__ */new WeakMap(),
38
+ ParentRectCache = /* @__PURE__ */new WeakMap(),
39
+ rAF = typeof window < "u" ? window.requestAnimationFrame : void 0;
40
+ if (import_constants.isClient) if (rAF) {
41
+ let updateLayoutIfChanged = function (node) {
42
+ const nodeRect = node.getBoundingClientRect(),
43
+ parentNode = node.parentElement,
44
+ parentRect = parentNode?.getBoundingClientRect(),
45
+ onLayout = LayoutHandlers.get(node);
46
+ if (typeof onLayout != "function") return;
47
+ const cachedRect = NodeRectCache.get(node),
48
+ cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
49
+ if (!cachedRect ||
50
+ // has changed one rect
51
+ !(0, import_web.isEqualShallow)(cachedRect, nodeRect) && (!cachedParentRect || !(0, import_web.isEqualShallow)(cachedParentRect, parentRect))) {
52
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
53
+ const event = getElementLayoutEvent(node);
54
+ avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
55
+ }
56
+ },
57
+ layoutOnAnimationFrame = function () {
58
+ status !== "inactive" && Nodes.forEach(updateLayoutIfChanged), rAF(layoutOnAnimationFrame);
59
+ },
60
+ avoidUpdates = !0;
61
+ const queuedUpdates = /* @__PURE__ */new Map();
62
+ (0, import_web.___onDidFinishClientRender)(() => {
63
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(cb => cb()), queuedUpdates.clear());
64
+ }), rAF(layoutOnAnimationFrame);
65
+ } else process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
66
+ const getElementLayoutEvent = target => {
67
+ let res = null;
68
+ if (measureLayout(target, null, (x, y, width, height, left, top) => {
69
+ res = {
54
70
  nativeEvent: {
55
71
  layout: {
56
72
  x,
@@ -63,27 +79,26 @@ const measureElement = async target => new Promise(res => {
63
79
  target
64
80
  },
65
81
  timeStamp: Date.now()
66
- });
67
- });
68
- }),
69
- cache = /* @__PURE__ */new WeakMap(),
82
+ };
83
+ }), !res) throw new Error("\u203C\uFE0F");
84
+ return res;
85
+ },
70
86
  measureLayout = (node, relativeTo, callback) => {
71
- const relativeNode = relativeTo || node?.parentNode;
87
+ const relativeNode = relativeTo || node?.parentElement;
72
88
  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
- });
89
+ const nodeDim = node.getBoundingClientRect(),
90
+ relativeNodeDim = relativeNode.getBoundingClientRect();
91
+ if (relativeNodeDim && nodeDim) {
92
+ const {
93
+ x,
94
+ y,
95
+ width,
96
+ height,
97
+ left,
98
+ top
99
+ } = getRelativeDimensions(nodeDim, relativeNodeDim);
100
+ callback(x, y, width, height, left, top);
101
+ }
87
102
  }
88
103
  },
89
104
  getRelativeDimensions = (a, b) => {
@@ -103,30 +118,14 @@ const measureElement = async target => new Promise(res => {
103
118
  left,
104
119
  top
105
120
  };
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
- });
121
+ };
118
122
  function useElementLayout(ref, onLayout) {
119
123
  const node = ref.current?.host;
120
124
  node && onLayout && LayoutHandlers.set(node, onLayout), (0, import_constants.useIsomorphicLayoutEffect)(() => {
121
- if (!resizeObserver || !onLayout) return;
125
+ if (!onLayout) return;
122
126
  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);
127
+ if (node2) return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
128
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
130
129
  };
131
130
  }, [ref, !!onLayout]);
132
131
  }
@@ -14,87 +14,80 @@ 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
+ setOnLayoutStrategy: () => setOnLayoutStrategy,
19
20
  useElementLayout: () => useElementLayout
20
21
  });
21
22
  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
- });
23
+ var import_constants = require("@tamagui/constants"), import_web = require("@tamagui/web");
24
+ const LayoutHandlers = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set();
25
+ let status = "active";
26
+ function setOnLayoutStrategy(state) {
27
+ status = state;
40
28
  }
41
- const measureElement = async (target) => new Promise((res) => {
42
- measureLayout(target, null, (x, y, width, height, left, top) => {
43
- res({
29
+ const NodeRectCache = /* @__PURE__ */ new WeakMap(), ParentRectCache = /* @__PURE__ */ new WeakMap(), rAF = typeof window < "u" ? window.requestAnimationFrame : void 0;
30
+ if (import_constants.isClient)
31
+ if (rAF) {
32
+ let updateLayoutIfChanged = function(node) {
33
+ const nodeRect = node.getBoundingClientRect(), parentNode = node.parentElement, parentRect = parentNode?.getBoundingClientRect(), onLayout = LayoutHandlers.get(node);
34
+ if (typeof onLayout != "function") return;
35
+ const cachedRect = NodeRectCache.get(node), cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
36
+ if (!cachedRect || // has changed one rect
37
+ !(0, import_web.isEqualShallow)(cachedRect, nodeRect) && (!cachedParentRect || !(0, import_web.isEqualShallow)(cachedParentRect, parentRect))) {
38
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
39
+ const event = getElementLayoutEvent(node);
40
+ avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
41
+ }
42
+ }, layoutOnAnimationFrame = function() {
43
+ status !== "inactive" && Nodes.forEach(updateLayoutIfChanged), rAF(layoutOnAnimationFrame);
44
+ }, avoidUpdates = !0;
45
+ const queuedUpdates = /* @__PURE__ */ new Map();
46
+ (0, import_web.___onDidFinishClientRender)(() => {
47
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach((cb) => cb()), queuedUpdates.clear());
48
+ }), rAF(layoutOnAnimationFrame);
49
+ } else
50
+ process.env.NODE_ENV === "development" && console.warn(
51
+ "No requestAnimationFrame - please polyfill for onLayout to work correctly"
52
+ );
53
+ const getElementLayoutEvent = (target) => {
54
+ let res = null;
55
+ if (measureLayout(target, null, (x, y, width, height, left, top) => {
56
+ res = {
44
57
  nativeEvent: {
45
58
  layout: { x, y, width, height, left, top },
46
59
  target
47
60
  },
48
61
  timeStamp: Date.now()
49
- });
50
- });
51
- }), cache = /* @__PURE__ */ new WeakMap(), measureLayout = (node, relativeTo, callback) => {
52
- const relativeNode = relativeTo || node?.parentNode;
62
+ };
63
+ }), !res)
64
+ throw new Error("\u203C\uFE0F");
65
+ return res;
66
+ }, measureLayout = (node, relativeTo, callback) => {
67
+ const relativeNode = relativeTo || node?.parentElement;
53
68
  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
- });
69
+ const nodeDim = node.getBoundingClientRect(), relativeNodeDim = relativeNode.getBoundingClientRect();
70
+ if (relativeNodeDim && nodeDim) {
71
+ const { x, y, width, height, left, top } = getRelativeDimensions(
72
+ nodeDim,
73
+ relativeNodeDim
74
+ );
75
+ callback(x, y, width, height, left, top);
76
+ }
67
77
  }
68
78
  }, getRelativeDimensions = (a, b) => {
69
79
  const { height, left, top, width } = a, x = left - b.left, y = top - b.top;
70
80
  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
- });
81
+ };
85
82
  function useElementLayout(ref, onLayout) {
86
83
  const node = ref.current?.host;
87
84
  node && onLayout && LayoutHandlers.set(node, onLayout), (0, import_constants.useIsomorphicLayoutEffect)(() => {
88
- if (!resizeObserver || !onLayout) return;
85
+ if (!onLayout) return;
89
86
  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
- };
87
+ if (node2)
88
+ return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), () => {
89
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
90
+ };
98
91
  }, [ref, !!onLayout]);
99
92
  }
100
93
  //# 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": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAoD,+BACpD,aAIO;AAGP,MAAM,iBAAiB,oBAAI,QAA+B,GACpD,QAAQ,oBAAI,IAAiB;AAInC,IAAI,SAAkC;AAC/B,SAAS,oBAAoB,OAAgC;AAClE,WAAS;AACX;AAmBA,MAAM,gBAAgB,oBAAI,QAA8B,GAClD,kBAAkB,oBAAI,QAA8B,GAEpD,MAAM,OAAO,SAAW,MAAc,OAAO,wBAAwB;AAE3E,IAAI;AACF,MAAI,KAAK;AAaP,QAAS,wBAAT,SAA+B,MAAmB;AAChD,YAAM,WAAW,KAAK,sBAAsB,GACtC,aAAa,KAAK,eAClB,aAAa,YAAY,sBAAsB,GAE/C,WAAW,eAAe,IAAI,IAAI;AACxC,UAAI,OAAO,YAAa,WAAY;AAEpC,YAAM,aAAa,cAAc,IAAI,IAAI,GACnC,mBAAmB,aAAa,cAAc,IAAI,UAAU,IAAI;AAEtE,UACE,CAAC;AAAA,MAEA,KAAC,2BAAe,YAAY,QAAQ,MAClC,CAAC,oBAAoB,KAAC,2BAAe,kBAAkB,UAAU,IACpE;AACA,sBAAc,IAAI,MAAM,QAAQ,GAC5B,cAAc,cAChB,gBAAgB,IAAI,YAAY,UAAU;AAE5C,cAAM,QAAQ,sBAAsB,IAAI;AACxC,QAAI,eACF,cAAc,IAAI,MAAM,MAAM,SAAS,KAAK,CAAC,IAE7C,SAAS,KAAK;AAAA,MAElB;AAAA,IACF,GAIS,yBAAT,WAAkC;AAChC,MAAI,WAAW,cACb,MAAM,QAAQ,qBAAqB,GAErC,IAAK,sBAAsB;AAAA,IAC7B,GAhDI,eAAe;AACnB,UAAM,gBAAgB,oBAAI,IAA2B;AAErD,+CAA2B,MAAM;AAC/B,qBAAe,IACX,kBACF,cAAc,QAAQ,CAAC,OAAO,GAAG,CAAC,GAClC,cAAc,MAAM;AAAA,IAExB,CAAC,GAiCD,IAAK,sBAAsB;AAAA,EAO7B;AACE,IAAI,QAAQ,IAAI,aAAa,iBAC3B,QAAQ;AAAA,MACN;AAAA,IACF;AAKC,MAAM,wBAAwB,CAAC,WAAqC;AACzE,MAAI,MAA0B;AAU9B,MATA,cAAc,QAAQ,MAAM,CAAC,GAAG,GAAG,OAAO,QAAQ,MAAM,QAAQ;AAC9D,UAAM;AAAA,MACJ,aAAa;AAAA,QACX,QAAQ,EAAE,GAAG,GAAG,OAAO,QAAQ,MAAM,IAAI;AAAA,QACzC;AAAA,MACF;AAAA,MACA,WAAW,KAAK,IAAI;AAAA,IACtB;AAAA,EACF,CAAC,GACG,CAAC;AACH,UAAM,IAAI,MAAM,cAAI;AAEtB,SAAO;AACT,GAGa,gBAAgB,CAC3B,MACA,YACA,aAQG;AACH,QAAM,eAAe,cAAc,MAAM;AACzC,MAAI,wBAAwB,aAAa;AACvC,UAAM,UAAU,KAAK,sBAAsB,GACrC,kBAAkB,aAAa,sBAAsB;AAC3D,QAAI,mBAAmB,SAAS;AAC9B,YAAM,EAAE,GAAG,GAAG,OAAO,QAAQ,MAAM,IAAI,IAAI;AAAA,QACzC;AAAA,QACA;AAAA,MACF;AACA,eAAS,GAAG,GAAG,OAAO,QAAQ,MAAM,GAAG;AAAA,IACzC;AAAA,EACF;AACF,GAEM,wBAAwB,CAAC,GAAoB,MAAuB;AACxE,QAAM,EAAE,QAAQ,MAAM,KAAK,MAAM,IAAI,GAC/B,IAAI,OAAO,EAAE,MACb,IAAI,MAAM,EAAE;AAClB,SAAO,EAAE,GAAG,GAAG,OAAO,QAAQ,MAAM,IAAI;AAC1C;AAEO,SAAS,iBACd,KACA,UACA;AAEA,QAAM,OAAO,IAAI,SAAS;AAC1B,EAAI,QAAQ,YACV,eAAe,IAAI,MAAM,QAAQ,OAGnC,4CAA0B,MAAM;AAC9B,QAAI,CAAC,SAAU;AACf,UAAMA,QAAO,IAAI,SAAS;AAC1B,QAAKA;AAEL,4BAAe,IAAIA,OAAM,QAAQ,GACjC,MAAM,IAAIA,KAAI,GACd,SAAS,sBAAsBA,KAAI,CAAC,GAE7B,MAAM;AACX,cAAM,OAAOA,KAAI,GACjB,eAAe,OAAOA,KAAI,GAC1B,cAAc,OAAOA,KAAI;AAAA,MAC3B;AAAA,EACF,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACtB;",
5
5
  "names": ["node"]
6
6
  }
@@ -15,85 +15,71 @@ 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
+ setOnLayoutStrategy: () => setOnLayoutStrategy,
20
21
  useElementLayout: () => useElementLayout
21
22
  });
22
23
  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;
24
+ var import_constants = require("@tamagui/constants"), import_web = require("@tamagui/web"), LayoutHandlers = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set(), status = "active";
25
+ function setOnLayoutStrategy(state) {
26
+ status = state;
27
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) {
28
+ var NodeRectCache = /* @__PURE__ */ new WeakMap(), ParentRectCache = /* @__PURE__ */ new WeakMap(), rAF = typeof window < "u" ? window.requestAnimationFrame : void 0;
29
+ if (import_constants.isClient)
30
+ if (rAF) {
31
+ let updateLayoutIfChanged = function(node) {
32
+ var nodeRect = node.getBoundingClientRect(), parentNode = node.parentElement, parentRect = parentNode == null ? void 0 : parentNode.getBoundingClientRect(), onLayout = LayoutHandlers.get(node);
33
+ if (typeof onLayout == "function") {
34
+ var cachedRect = NodeRectCache.get(node), cachedParentRect = parentNode ? NodeRectCache.get(parentNode) : null;
35
+ if (!cachedRect || // has changed one rect
36
+ !(0, import_web.isEqualShallow)(cachedRect, nodeRect) && (!cachedParentRect || !(0, import_web.isEqualShallow)(cachedParentRect, parentRect))) {
37
+ NodeRectCache.set(node, nodeRect), parentRect && parentNode && ParentRectCache.set(parentNode, parentRect);
38
+ var event = getElementLayoutEvent(node);
39
+ avoidUpdates ? queuedUpdates.set(node, function() {
40
+ return onLayout(event);
41
+ }) : onLayout(event);
42
+ }
43
+ }
44
+ }, layoutOnAnimationFrame = function() {
45
+ status !== "inactive" && Nodes.forEach(updateLayoutIfChanged), rAF(layoutOnAnimationFrame);
46
+ };
47
+ var updateLayoutIfChanged2 = updateLayoutIfChanged, layoutOnAnimationFrame2 = layoutOnAnimationFrame, avoidUpdates = !0, queuedUpdates = /* @__PURE__ */ new Map();
48
+ (0, import_web.___onDidFinishClientRender)(function() {
49
+ avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach(function(cb) {
59
50
  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
51
+ }), queuedUpdates.clear());
52
+ }), rAF(layoutOnAnimationFrame);
53
+ } else
54
+ process.env.NODE_ENV === "development" && console.warn("No requestAnimationFrame - please polyfill for onLayout to work correctly");
55
+ var getElementLayoutEvent = function(target) {
56
+ var res = null;
57
+ if (measureLayout(target, null, function(x, y, width, height, left, top) {
58
+ res = {
59
+ nativeEvent: {
60
+ layout: {
61
+ x,
62
+ y,
63
+ width,
64
+ height,
65
+ left,
66
+ top
78
67
  },
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);
68
+ target
69
+ },
70
+ timeStamp: Date.now()
71
+ };
72
+ }), !res)
73
+ throw new Error("\u203C\uFE0F");
74
+ return res;
75
+ }, measureLayout = function(node, relativeTo, callback) {
76
+ var relativeNode = relativeTo || (node == null ? void 0 : node.parentElement);
85
77
  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
- });
78
+ var nodeDim = node.getBoundingClientRect(), relativeNodeDim = relativeNode.getBoundingClientRect();
79
+ if (relativeNodeDim && nodeDim) {
80
+ var { x, y, width, height, left, top } = getRelativeDimensions(nodeDim, relativeNodeDim);
81
+ callback(x, y, width, height, left, top);
82
+ }
97
83
  }
98
84
  }, getRelativeDimensions = function(a, b) {
99
85
  var { height, left, top, width } = a, x = left - b.left, y = top - b.top;
@@ -105,35 +91,17 @@ var measureElement = async function(target) {
105
91
  left,
106
92
  top
107
93
  };
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
94
  };
122
95
  function useElementLayout(ref, onLayout) {
123
96
  var _ref_current, node = (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.host;
124
97
  node && onLayout && LayoutHandlers.set(node, onLayout), (0, import_constants.useIsomorphicLayoutEffect)(function() {
125
98
  var _ref_current2;
126
- if (!(!resizeObserver || !onLayout)) {
99
+ if (onLayout) {
127
100
  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);
101
+ if (node2)
102
+ return LayoutHandlers.set(node2, onLayout), Nodes.add(node2), onLayout(getElementLayoutEvent(node2)), function() {
103
+ Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2);
132
104
  };
133
- return resizeListeners.add(onResize), resizeObserver.observe(node2), function() {
134
- LayoutHandlers.delete(node2), resizeListeners.delete(onResize), resizeObserver == null || resizeObserver.unobserve(node2);
135
- };
136
- }
137
105
  }
138
106
  }, [
139
107
  ref,
@@ -142,8 +110,9 @@ function useElementLayout(ref, onLayout) {
142
110
  }
143
111
  // Annotate the CommonJS export names for ESM import in node:
144
112
  0 && (module.exports = {
145
- measureElement,
113
+ getElementLayoutEvent,
146
114
  measureLayout,
115
+ setOnLayoutStrategy,
147
116
  useElementLayout
148
117
  });
149
118
  //# 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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",
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", "status", "setOnLayoutStrategy", "state", "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,19 +24,22 @@ __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,
29
+ setOnLayoutStrategy: () => import_useElementLayout2.setOnLayoutStrategy
28
30
  });
29
31
  module.exports = __toCommonJS(index_exports);
30
32
  var import_react_native_media_driver = require("@tamagui/react-native-media-driver"),
31
33
  import_react_native_use_responder_events = require("@tamagui/react-native-use-responder-events"),
32
34
  import_web = require("@tamagui/web"),
33
35
  import_react = require("react"),
36
+ import_addNativeValidStyles = require("./addNativeValidStyles.cjs"),
34
37
  import_createOptimizedView = require("./createOptimizedView.cjs"),
35
38
  import_getBaseViews = require("./getBaseViews.cjs"),
36
39
  import_getRect = require("./helpers/getRect.cjs"),
37
40
  import_useElementLayout = require("./hooks/useElementLayout.cjs"),
38
41
  import_Pressability = require("./vendor/Pressability.cjs"),
39
- import_addNativeValidStyles = require("./addNativeValidStyles.cjs");
42
+ import_useElementLayout2 = require("./hooks/useElementLayout.cjs");
40
43
  __reExport(index_exports, require("@tamagui/web"), module.exports);
41
44
  __reExport(index_exports, require("./reactNativeTypes.cjs"), module.exports);
42
45
  (0, import_addNativeValidStyles.addNativeValidStyles)();
package/dist/cjs/index.js CHANGED
@@ -17,10 +17,12 @@ __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,
22
+ setOnLayoutStrategy: () => import_useElementLayout2.setOnLayoutStrategy
21
23
  });
22
24
  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");
25
+ 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_addNativeValidStyles = require("./addNativeValidStyles"), import_createOptimizedView = require("./createOptimizedView"), import_getBaseViews = require("./getBaseViews"), import_getRect = require("./helpers/getRect"), import_useElementLayout = require("./hooks/useElementLayout"), import_Pressability = require("./vendor/Pressability"), import_useElementLayout2 = require("./hooks/useElementLayout");
24
26
  __reExport(index_exports, require("@tamagui/web"), module.exports);
25
27
  __reExport(index_exports, require("./reactNativeTypes"), module.exports);
26
28
  (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;AAAA,uCAA4B,+CAC5B,2CAAmC,uDAYnC,aAOO,yBACP,eAAkB,kBAElB,8BAAqC,mCACrC,6BAAoC,kCACpC,sBAA6B,2BAC7B,iBAAwB,8BACxB,0BAAgD,qCAEhD,sBAAgC,kCAGhCA,2BAIO;AAkCP,0BAAc,yBAtEd;AAyEA,0BAAc,+BAzEd;AAAA,IAuCA,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
  }