tamagui 2.7.3 → 2.7.4

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,4 +1,4 @@
1
1
  $ tamagui-build
2
- built tamagui in 1301 ms
2
+ built tamagui in 1176 ms
3
3
  Running afterBuild script...
4
- afterBuild completed in 292 ms
4
+ afterBuild completed in 320 ms
package/dist/native.cjs CHANGED
@@ -889,16 +889,6 @@ function enable() {
889
889
  }
890
890
  }
891
891
  }
892
- function startGlobalObservers() {
893
- if (!ENABLE || globalIntersectionObserver) return;
894
- globalIntersectionObserver = new IntersectionObserver(function(entries) {
895
- for (var i = 0; i < entries.length; i++) {
896
- var entry = entries[i];
897
- var node = entry.target;
898
- if (IntersectionState.get(node) !== entry.isIntersecting) IntersectionState.set(node, entry.isIntersecting);
899
- }
900
- }, { threshold: 0 });
901
- }
902
892
  function rectsEqual(a, b) {
903
893
  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
904
894
  }
@@ -922,11 +912,6 @@ function observeLayoutNode(node, disableKey) {
922
912
  Nodes.add(node);
923
913
  if (disableKey) LayoutDisableKey.set(node, disableKey);
924
914
  else LayoutDisableKey.delete(node);
925
- startGlobalObservers();
926
- if (globalIntersectionObserver) {
927
- globalIntersectionObserver.observe(node);
928
- IntersectionState.set(node, true);
929
- }
930
915
  resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
931
916
  }
932
917
  function registerLayoutNode(node, onChange, disableKey) {
@@ -941,8 +926,6 @@ function cleanupNode(node) {
941
926
  LayoutHandlers.delete(node);
942
927
  LayoutDisableKey.delete(node);
943
928
  NodeRectCache.delete(node);
944
- IntersectionState.delete(node);
945
- if (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);
946
929
  }
947
930
  function emitLayoutSync(node) {
948
931
  var onLayout = LayoutHandlers.get(node);
@@ -1005,14 +988,13 @@ function createMeasureLayout(node) {
1005
988
  return measureLayout$1(node, relativeTo, callback);
1006
989
  };
1007
990
  }
1008
- var LayoutHandlers, LayoutDisableKey, Nodes, IntersectionState, usePretransformDimensions, DisableLayoutContextValues, DisableLayoutContextKey, ENABLE, LayoutMeasurementController, globalIntersectionObserver, strategy, resumeLayoutLoop, NodeRectCache, avoidUpdates, queuedUpdates, BoundingRects, rectFetchObserver, rectFetchResolve, rectFetchStartTime, lastCallbackDelay, rAF, userSkipVal, BASE_SKIP_FRAMES, MAX_SKIP_FRAMES, skipFrames, frameCount, frameScheduled, getElementLayoutEvent, getPreTransformDimensions, getRelativeDimensions, PrevHostNode, getBoundingClientRectAsync, measureNode, measure, measureInWindow, createMeasureInWindow, measureLayout$1;
991
+ var LayoutHandlers, LayoutDisableKey, Nodes, usePretransformDimensions, DisableLayoutContextValues, DisableLayoutContextKey, ENABLE, LayoutMeasurementController, strategy, resumeLayoutLoop, measureOnNextFrame, NodeRectCache, avoidUpdates, queuedUpdates, BoundingRects, rectFetchObserver, rectFetchResolve, rectFetchStartTime, lastCallbackDelay, rAF, userSkipVal, BASE_SKIP_FRAMES, MAX_SKIP_FRAMES, skipFrames, frameCount, frameScheduled, getElementLayoutEvent, getPreTransformDimensions, getRelativeDimensions, PrevHostNode, getBoundingClientRectAsync, measureNode, measure, measureInWindow, createMeasureInWindow, measureLayout$1;
1009
992
  var init_index_native$11 = __esmMin((() => {
1010
993
  init_index_native$7();
1011
994
  init_asyncToGenerator();
1012
995
  LayoutHandlers = /* @__PURE__ */ new WeakMap();
1013
996
  LayoutDisableKey = /* @__PURE__ */ new WeakMap();
1014
997
  Nodes = /* @__PURE__ */ new Set();
1015
- IntersectionState = /* @__PURE__ */ new WeakMap();
1016
998
  usePretransformDimensions = function() {
1017
999
  return globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === "1";
1018
1000
  };
@@ -1023,14 +1005,15 @@ var init_index_native$11 = __esmMin((() => {
1023
1005
  var { disable, children } = param;
1024
1006
  var id = (0, react$1.useId)();
1025
1007
  useIsomorphicLayoutEffect(function() {
1008
+ var wasDisabled = DisableLayoutContextValues[id] === true;
1026
1009
  DisableLayoutContextValues[id] = disable;
1010
+ if (wasDisabled && !disable) measureOnNextFrame === null || measureOnNextFrame === void 0 || measureOnNextFrame();
1027
1011
  }, [disable, id]);
1028
1012
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DisableLayoutContextKey.Provider, {
1029
1013
  value: id,
1030
1014
  children
1031
1015
  });
1032
1016
  };
1033
- globalIntersectionObserver = null;
1034
1017
  strategy = "async";
1035
1018
  NodeRectCache = /* @__PURE__ */ new WeakMap();
1036
1019
  avoidUpdates = true;
@@ -1098,7 +1081,7 @@ var init_index_native$11 = __esmMin((() => {
1098
1081
  }
1099
1082
  if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
1100
1083
  if (strategy !== "off") {
1101
- var visibleNodes = [];
1084
+ var activeNodes = [];
1102
1085
  var parentsToObserve = /* @__PURE__ */ new Set();
1103
1086
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
1104
1087
  try {
@@ -1111,8 +1094,7 @@ var init_index_native$11 = __esmMin((() => {
1111
1094
  }
1112
1095
  var disableKey = LayoutDisableKey.get(node);
1113
1096
  if (disableKey && DisableLayoutContextValues[disableKey] === true) continue;
1114
- if (IntersectionState.get(node) === false) continue;
1115
- visibleNodes.push(node);
1097
+ activeNodes.push(node);
1116
1098
  parentsToObserve.add(parentElement);
1117
1099
  }
1118
1100
  } catch (err) {
@@ -1125,10 +1107,10 @@ var init_index_native$11 = __esmMin((() => {
1125
1107
  if (_didIteratorError) throw _iteratorError;
1126
1108
  }
1127
1109
  }
1128
- if (visibleNodes.length > 0) {
1110
+ if (activeNodes.length > 0) {
1129
1111
  var io = ensureRectFetchObserver2();
1130
1112
  rectFetchStartTime = performance.now();
1131
- for (var i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);
1113
+ for (var i = 0; i < activeNodes.length; i++) io.observe(activeNodes[i]);
1132
1114
  var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
1133
1115
  try {
1134
1116
  for (var _iterator1 = parentsToObserve[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
@@ -1148,7 +1130,7 @@ var init_index_native$11 = __esmMin((() => {
1148
1130
  yield new Promise(function(res) {
1149
1131
  rectFetchResolve = res;
1150
1132
  });
1151
- for (var i1 = 0; i1 < visibleNodes.length; i1++) io.unobserve(visibleNodes[i1]);
1133
+ for (var i1 = 0; i1 < activeNodes.length; i1++) io.unobserve(activeNodes[i1]);
1152
1134
  var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
1153
1135
  try {
1154
1136
  for (var _iterator2 = parentsToObserve[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
@@ -1167,7 +1149,7 @@ var init_index_native$11 = __esmMin((() => {
1167
1149
  }
1168
1150
  if (lastCallbackDelay > 50) skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES);
1169
1151
  else if (lastCallbackDelay < 20) skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES);
1170
- for (var i2 = 0; i2 < visibleNodes.length; i2++) updateLayoutIfChanged(visibleNodes[i2]);
1152
+ for (var i2 = 0; i2 < activeNodes.length; i2++) updateLayoutIfChanged(activeNodes[i2]);
1171
1153
  }
1172
1154
  }
1173
1155
  frameScheduled = false;
@@ -1176,6 +1158,10 @@ var init_index_native$11 = __esmMin((() => {
1176
1158
  return _layoutOnAnimationFrame.apply(this, arguments);
1177
1159
  }
1178
1160
  resumeLayoutLoop = scheduleLayoutFrame2;
1161
+ measureOnNextFrame = function() {
1162
+ frameCount = 0;
1163
+ scheduleLayoutFrame2();
1164
+ };
1179
1165
  document.addEventListener("visibilitychange", scheduleLayoutFrame2);
1180
1166
  scheduleLayoutFrame2();
1181
1167
  }
package/dist/test.cjs CHANGED
@@ -889,16 +889,6 @@ function enable() {
889
889
  }
890
890
  }
891
891
  }
892
- function startGlobalObservers() {
893
- if (!ENABLE || globalIntersectionObserver) return;
894
- globalIntersectionObserver = new IntersectionObserver(function(entries) {
895
- for (var i = 0; i < entries.length; i++) {
896
- var entry = entries[i];
897
- var node = entry.target;
898
- if (IntersectionState.get(node) !== entry.isIntersecting) IntersectionState.set(node, entry.isIntersecting);
899
- }
900
- }, { threshold: 0 });
901
- }
902
892
  function rectsEqual(a, b) {
903
893
  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
904
894
  }
@@ -922,11 +912,6 @@ function observeLayoutNode(node, disableKey) {
922
912
  Nodes.add(node);
923
913
  if (disableKey) LayoutDisableKey.set(node, disableKey);
924
914
  else LayoutDisableKey.delete(node);
925
- startGlobalObservers();
926
- if (globalIntersectionObserver) {
927
- globalIntersectionObserver.observe(node);
928
- IntersectionState.set(node, true);
929
- }
930
915
  resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
931
916
  }
932
917
  function registerLayoutNode(node, onChange, disableKey) {
@@ -941,8 +926,6 @@ function cleanupNode(node) {
941
926
  LayoutHandlers.delete(node);
942
927
  LayoutDisableKey.delete(node);
943
928
  NodeRectCache.delete(node);
944
- IntersectionState.delete(node);
945
- if (globalIntersectionObserver) globalIntersectionObserver.unobserve(node);
946
929
  }
947
930
  function emitLayoutSync(node) {
948
931
  var onLayout = LayoutHandlers.get(node);
@@ -1005,14 +988,13 @@ function createMeasureLayout(node) {
1005
988
  return measureLayout$1(node, relativeTo, callback);
1006
989
  };
1007
990
  }
1008
- var LayoutHandlers, LayoutDisableKey, Nodes, IntersectionState, usePretransformDimensions, DisableLayoutContextValues, DisableLayoutContextKey, ENABLE, LayoutMeasurementController, globalIntersectionObserver, strategy, resumeLayoutLoop, NodeRectCache, avoidUpdates, queuedUpdates, BoundingRects, rectFetchObserver, rectFetchResolve, rectFetchStartTime, lastCallbackDelay, rAF, userSkipVal, BASE_SKIP_FRAMES, MAX_SKIP_FRAMES, skipFrames, frameCount, frameScheduled, getElementLayoutEvent, getPreTransformDimensions, getRelativeDimensions, PrevHostNode, getBoundingClientRectAsync, measureNode, measure, measureInWindow, createMeasureInWindow, measureLayout$1;
991
+ var LayoutHandlers, LayoutDisableKey, Nodes, usePretransformDimensions, DisableLayoutContextValues, DisableLayoutContextKey, ENABLE, LayoutMeasurementController, strategy, resumeLayoutLoop, measureOnNextFrame, NodeRectCache, avoidUpdates, queuedUpdates, BoundingRects, rectFetchObserver, rectFetchResolve, rectFetchStartTime, lastCallbackDelay, rAF, userSkipVal, BASE_SKIP_FRAMES, MAX_SKIP_FRAMES, skipFrames, frameCount, frameScheduled, getElementLayoutEvent, getPreTransformDimensions, getRelativeDimensions, PrevHostNode, getBoundingClientRectAsync, measureNode, measure, measureInWindow, createMeasureInWindow, measureLayout$1;
1009
992
  var init_index_native$11 = __esmMin((() => {
1010
993
  init_index_native$7();
1011
994
  init_asyncToGenerator();
1012
995
  LayoutHandlers = /* @__PURE__ */ new WeakMap();
1013
996
  LayoutDisableKey = /* @__PURE__ */ new WeakMap();
1014
997
  Nodes = /* @__PURE__ */ new Set();
1015
- IntersectionState = /* @__PURE__ */ new WeakMap();
1016
998
  usePretransformDimensions = function() {
1017
999
  return globalThis.__TAMAGUI_ONLAYOUT_PRETRANSFORM === true || process.env.TAMAGUI_ONLAYOUT_PRETRANSFORM === "1";
1018
1000
  };
@@ -1023,14 +1005,15 @@ var init_index_native$11 = __esmMin((() => {
1023
1005
  var { disable, children } = param;
1024
1006
  var id = (0, react$1.useId)();
1025
1007
  useIsomorphicLayoutEffect(function() {
1008
+ var wasDisabled = DisableLayoutContextValues[id] === true;
1026
1009
  DisableLayoutContextValues[id] = disable;
1010
+ if (wasDisabled && !disable) measureOnNextFrame === null || measureOnNextFrame === void 0 || measureOnNextFrame();
1027
1011
  }, [disable, id]);
1028
1012
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DisableLayoutContextKey.Provider, {
1029
1013
  value: id,
1030
1014
  children
1031
1015
  });
1032
1016
  };
1033
- globalIntersectionObserver = null;
1034
1017
  strategy = "async";
1035
1018
  NodeRectCache = /* @__PURE__ */ new WeakMap();
1036
1019
  avoidUpdates = true;
@@ -1098,7 +1081,7 @@ var init_index_native$11 = __esmMin((() => {
1098
1081
  }
1099
1082
  if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
1100
1083
  if (strategy !== "off") {
1101
- var visibleNodes = [];
1084
+ var activeNodes = [];
1102
1085
  var parentsToObserve = /* @__PURE__ */ new Set();
1103
1086
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
1104
1087
  try {
@@ -1111,8 +1094,7 @@ var init_index_native$11 = __esmMin((() => {
1111
1094
  }
1112
1095
  var disableKey = LayoutDisableKey.get(node);
1113
1096
  if (disableKey && DisableLayoutContextValues[disableKey] === true) continue;
1114
- if (IntersectionState.get(node) === false) continue;
1115
- visibleNodes.push(node);
1097
+ activeNodes.push(node);
1116
1098
  parentsToObserve.add(parentElement);
1117
1099
  }
1118
1100
  } catch (err) {
@@ -1125,10 +1107,10 @@ var init_index_native$11 = __esmMin((() => {
1125
1107
  if (_didIteratorError) throw _iteratorError;
1126
1108
  }
1127
1109
  }
1128
- if (visibleNodes.length > 0) {
1110
+ if (activeNodes.length > 0) {
1129
1111
  var io = ensureRectFetchObserver2();
1130
1112
  rectFetchStartTime = performance.now();
1131
- for (var i = 0; i < visibleNodes.length; i++) io.observe(visibleNodes[i]);
1113
+ for (var i = 0; i < activeNodes.length; i++) io.observe(activeNodes[i]);
1132
1114
  var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
1133
1115
  try {
1134
1116
  for (var _iterator1 = parentsToObserve[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
@@ -1148,7 +1130,7 @@ var init_index_native$11 = __esmMin((() => {
1148
1130
  yield new Promise(function(res) {
1149
1131
  rectFetchResolve = res;
1150
1132
  });
1151
- for (var i1 = 0; i1 < visibleNodes.length; i1++) io.unobserve(visibleNodes[i1]);
1133
+ for (var i1 = 0; i1 < activeNodes.length; i1++) io.unobserve(activeNodes[i1]);
1152
1134
  var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
1153
1135
  try {
1154
1136
  for (var _iterator2 = parentsToObserve[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
@@ -1167,7 +1149,7 @@ var init_index_native$11 = __esmMin((() => {
1167
1149
  }
1168
1150
  if (lastCallbackDelay > 50) skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES);
1169
1151
  else if (lastCallbackDelay < 20) skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES);
1170
- for (var i2 = 0; i2 < visibleNodes.length; i2++) updateLayoutIfChanged(visibleNodes[i2]);
1152
+ for (var i2 = 0; i2 < activeNodes.length; i2++) updateLayoutIfChanged(activeNodes[i2]);
1171
1153
  }
1172
1154
  }
1173
1155
  frameScheduled = false;
@@ -1176,6 +1158,10 @@ var init_index_native$11 = __esmMin((() => {
1176
1158
  return _layoutOnAnimationFrame.apply(this, arguments);
1177
1159
  }
1178
1160
  resumeLayoutLoop = scheduleLayoutFrame2;
1161
+ measureOnNextFrame = function() {
1162
+ frameCount = 0;
1163
+ scheduleLayoutFrame2();
1164
+ };
1179
1165
  document.addEventListener("visibilitychange", scheduleLayoutFrame2);
1180
1166
  scheduleLayoutFrame2();
1181
1167
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tamagui",
3
- "version": "2.7.3",
3
+ "version": "2.7.4",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "description": "Style and UI for React (web and native) meet an optimizing compiler",
6
6
  "repository": {
@@ -77,72 +77,72 @@
77
77
  "check-circular-deps": "npx madge --circular ./src/index.ts"
78
78
  },
79
79
  "dependencies": {
80
- "@tamagui/accordion": "2.7.3",
81
- "@tamagui/adapt": "2.7.3",
82
- "@tamagui/alert-dialog": "2.7.3",
83
- "@tamagui/animate": "2.7.3",
84
- "@tamagui/animate-presence": "2.7.3",
85
- "@tamagui/avatar": "2.7.3",
86
- "@tamagui/button": "2.7.3",
87
- "@tamagui/card": "2.7.3",
88
- "@tamagui/checkbox": "2.7.3",
89
- "@tamagui/collapsible": "2.7.3",
90
- "@tamagui/compose-refs": "2.7.3",
91
- "@tamagui/constants": "2.7.3",
92
- "@tamagui/context-menu": "2.7.3",
93
- "@tamagui/core": "2.7.3",
94
- "@tamagui/create-context": "2.7.3",
95
- "@tamagui/create-menu": "2.7.3",
96
- "@tamagui/dialog": "2.7.3",
97
- "@tamagui/element": "2.7.3",
98
- "@tamagui/elements": "2.7.3",
99
- "@tamagui/fake-react-native": "2.7.3",
100
- "@tamagui/focusable": "2.7.3",
101
- "@tamagui/form": "2.7.3",
102
- "@tamagui/get-button-sized": "2.7.3",
103
- "@tamagui/get-font-sized": "2.7.3",
104
- "@tamagui/get-token": "2.7.3",
105
- "@tamagui/group": "2.7.3",
106
- "@tamagui/helpers-tamagui": "2.7.3",
107
- "@tamagui/image": "2.7.3",
108
- "@tamagui/input": "2.7.3",
109
- "@tamagui/label": "2.7.3",
110
- "@tamagui/linear-gradient": "2.7.3",
111
- "@tamagui/list-item": "2.7.3",
112
- "@tamagui/menu": "2.7.3",
113
- "@tamagui/polyfill-dev": "2.7.3",
114
- "@tamagui/popover": "2.7.3",
115
- "@tamagui/popper": "2.7.3",
116
- "@tamagui/portal": "2.7.3",
117
- "@tamagui/progress": "2.7.3",
118
- "@tamagui/radio-group": "2.7.3",
119
- "@tamagui/react-native-media-driver": "2.7.3",
120
- "@tamagui/scroll-view": "2.7.3",
121
- "@tamagui/select": "2.7.3",
122
- "@tamagui/separator": "2.7.3",
123
- "@tamagui/shapes": "2.7.3",
124
- "@tamagui/sheet": "2.7.3",
125
- "@tamagui/slider": "2.7.3",
126
- "@tamagui/spacer": "2.7.3",
127
- "@tamagui/spinner": "2.7.3",
128
- "@tamagui/stacks": "2.7.3",
129
- "@tamagui/switch": "2.7.3",
130
- "@tamagui/tabs": "2.7.3",
131
- "@tamagui/text": "2.7.3",
132
- "@tamagui/theme": "2.7.3",
133
- "@tamagui/toast": "2.7.3",
134
- "@tamagui/toggle-group": "2.7.3",
135
- "@tamagui/tooltip": "2.7.3",
136
- "@tamagui/use-controllable-state": "2.7.3",
137
- "@tamagui/use-debounce": "2.7.3",
138
- "@tamagui/use-force-update": "2.7.3",
139
- "@tamagui/use-window-dimensions": "2.7.3",
140
- "@tamagui/visually-hidden": "2.7.3",
141
- "@tamagui/font-size": "2.7.3",
142
- "@tamagui/z-index-stack": "2.7.3"
80
+ "@tamagui/accordion": "2.7.4",
81
+ "@tamagui/adapt": "2.7.4",
82
+ "@tamagui/alert-dialog": "2.7.4",
83
+ "@tamagui/animate": "2.7.4",
84
+ "@tamagui/animate-presence": "2.7.4",
85
+ "@tamagui/avatar": "2.7.4",
86
+ "@tamagui/button": "2.7.4",
87
+ "@tamagui/card": "2.7.4",
88
+ "@tamagui/checkbox": "2.7.4",
89
+ "@tamagui/collapsible": "2.7.4",
90
+ "@tamagui/compose-refs": "2.7.4",
91
+ "@tamagui/constants": "2.7.4",
92
+ "@tamagui/context-menu": "2.7.4",
93
+ "@tamagui/core": "2.7.4",
94
+ "@tamagui/create-context": "2.7.4",
95
+ "@tamagui/create-menu": "2.7.4",
96
+ "@tamagui/dialog": "2.7.4",
97
+ "@tamagui/element": "2.7.4",
98
+ "@tamagui/elements": "2.7.4",
99
+ "@tamagui/fake-react-native": "2.7.4",
100
+ "@tamagui/focusable": "2.7.4",
101
+ "@tamagui/form": "2.7.4",
102
+ "@tamagui/get-button-sized": "2.7.4",
103
+ "@tamagui/get-font-sized": "2.7.4",
104
+ "@tamagui/get-token": "2.7.4",
105
+ "@tamagui/group": "2.7.4",
106
+ "@tamagui/helpers-tamagui": "2.7.4",
107
+ "@tamagui/image": "2.7.4",
108
+ "@tamagui/input": "2.7.4",
109
+ "@tamagui/label": "2.7.4",
110
+ "@tamagui/linear-gradient": "2.7.4",
111
+ "@tamagui/list-item": "2.7.4",
112
+ "@tamagui/menu": "2.7.4",
113
+ "@tamagui/polyfill-dev": "2.7.4",
114
+ "@tamagui/popover": "2.7.4",
115
+ "@tamagui/popper": "2.7.4",
116
+ "@tamagui/portal": "2.7.4",
117
+ "@tamagui/progress": "2.7.4",
118
+ "@tamagui/radio-group": "2.7.4",
119
+ "@tamagui/react-native-media-driver": "2.7.4",
120
+ "@tamagui/scroll-view": "2.7.4",
121
+ "@tamagui/select": "2.7.4",
122
+ "@tamagui/separator": "2.7.4",
123
+ "@tamagui/shapes": "2.7.4",
124
+ "@tamagui/sheet": "2.7.4",
125
+ "@tamagui/slider": "2.7.4",
126
+ "@tamagui/spacer": "2.7.4",
127
+ "@tamagui/spinner": "2.7.4",
128
+ "@tamagui/stacks": "2.7.4",
129
+ "@tamagui/switch": "2.7.4",
130
+ "@tamagui/tabs": "2.7.4",
131
+ "@tamagui/text": "2.7.4",
132
+ "@tamagui/theme": "2.7.4",
133
+ "@tamagui/toast": "2.7.4",
134
+ "@tamagui/toggle-group": "2.7.4",
135
+ "@tamagui/tooltip": "2.7.4",
136
+ "@tamagui/use-controllable-state": "2.7.4",
137
+ "@tamagui/use-debounce": "2.7.4",
138
+ "@tamagui/use-force-update": "2.7.4",
139
+ "@tamagui/use-window-dimensions": "2.7.4",
140
+ "@tamagui/visually-hidden": "2.7.4",
141
+ "@tamagui/font-size": "2.7.4",
142
+ "@tamagui/z-index-stack": "2.7.4"
143
143
  },
144
144
  "devDependencies": {
145
- "@tamagui/build": "2.7.3",
145
+ "@tamagui/build": "2.7.4",
146
146
  "react": ">=19",
147
147
  "react-native": "0.83.2",
148
148
  "react-native-web": "^0.21.0"