tamagui 2.7.1 → 2.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/dist/native.cjs +62 -35
- package/dist/test.cjs +62 -35
- package/package.json +65 -65
package/.turbo/turbo-build.log
CHANGED
package/dist/native.cjs
CHANGED
|
@@ -876,6 +876,7 @@ function _instanceof$7(left, right) {
|
|
|
876
876
|
}
|
|
877
877
|
function setOnLayoutStrategy(state) {
|
|
878
878
|
strategy = state;
|
|
879
|
+
resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
|
|
879
880
|
}
|
|
880
881
|
function enable() {
|
|
881
882
|
if (avoidUpdates) {
|
|
@@ -926,6 +927,7 @@ function observeLayoutNode(node, disableKey) {
|
|
|
926
927
|
globalIntersectionObserver.observe(node);
|
|
927
928
|
IntersectionState.set(node, true);
|
|
928
929
|
}
|
|
930
|
+
resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
|
|
929
931
|
}
|
|
930
932
|
function registerLayoutNode(node, onChange, disableKey) {
|
|
931
933
|
LayoutHandlers.set(node, onChange);
|
|
@@ -1003,7 +1005,7 @@ function createMeasureLayout(node) {
|
|
|
1003
1005
|
return measureLayout$1(node, relativeTo, callback);
|
|
1004
1006
|
};
|
|
1005
1007
|
}
|
|
1006
|
-
var LayoutHandlers, LayoutDisableKey, Nodes, IntersectionState, usePretransformDimensions, DisableLayoutContextValues, DisableLayoutContextKey, ENABLE, LayoutMeasurementController, globalIntersectionObserver, strategy, NodeRectCache, avoidUpdates, queuedUpdates, BoundingRects, rectFetchObserver, rectFetchResolve, rectFetchStartTime, lastCallbackDelay, rAF, userSkipVal, BASE_SKIP_FRAMES, MAX_SKIP_FRAMES, skipFrames, frameCount, getElementLayoutEvent, getPreTransformDimensions, getRelativeDimensions, PrevHostNode, getBoundingClientRectAsync, measureNode, measure, measureInWindow, createMeasureInWindow, measureLayout$1;
|
|
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;
|
|
1007
1009
|
var init_index_native$11 = __esmMin((() => {
|
|
1008
1010
|
init_index_native$7();
|
|
1009
1011
|
init_asyncToGenerator();
|
|
@@ -1045,6 +1047,10 @@ var init_index_native$11 = __esmMin((() => {
|
|
|
1045
1047
|
}
|
|
1046
1048
|
}, { threshold: 0 });
|
|
1047
1049
|
return rectFetchObserver;
|
|
1050
|
+
}, scheduleLayoutFrame2 = function() {
|
|
1051
|
+
if (frameScheduled || strategy === "off" || Nodes.size === 0 || document.hidden) return;
|
|
1052
|
+
frameScheduled = true;
|
|
1053
|
+
rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
|
|
1048
1054
|
};
|
|
1049
1055
|
BoundingRects = /* @__PURE__ */ new WeakMap();
|
|
1050
1056
|
rectFetchObserver = null;
|
|
@@ -1079,13 +1085,15 @@ var init_index_native$11 = __esmMin((() => {
|
|
|
1079
1085
|
MAX_SKIP_FRAMES = 20;
|
|
1080
1086
|
skipFrames = BASE_SKIP_FRAMES;
|
|
1081
1087
|
frameCount = 0;
|
|
1088
|
+
frameScheduled = false;
|
|
1082
1089
|
function layoutOnAnimationFrame() {
|
|
1083
1090
|
return _layoutOnAnimationFrame.apply(this, arguments);
|
|
1084
1091
|
}
|
|
1085
1092
|
function _layoutOnAnimationFrame() {
|
|
1086
1093
|
_layoutOnAnimationFrame = _asyncToGenerator(function* () {
|
|
1087
1094
|
if (frameCount++ % skipFrames !== 0) {
|
|
1088
|
-
|
|
1095
|
+
frameScheduled = false;
|
|
1096
|
+
scheduleLayoutFrame2();
|
|
1089
1097
|
return;
|
|
1090
1098
|
}
|
|
1091
1099
|
if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
|
|
@@ -1162,11 +1170,14 @@ var init_index_native$11 = __esmMin((() => {
|
|
|
1162
1170
|
for (var i2 = 0; i2 < visibleNodes.length; i2++) updateLayoutIfChanged(visibleNodes[i2]);
|
|
1163
1171
|
}
|
|
1164
1172
|
}
|
|
1165
|
-
|
|
1173
|
+
frameScheduled = false;
|
|
1174
|
+
scheduleLayoutFrame2();
|
|
1166
1175
|
});
|
|
1167
1176
|
return _layoutOnAnimationFrame.apply(this, arguments);
|
|
1168
1177
|
}
|
|
1169
|
-
|
|
1178
|
+
resumeLayoutLoop = scheduleLayoutFrame2;
|
|
1179
|
+
document.addEventListener("visibilitychange", scheduleLayoutFrame2);
|
|
1180
|
+
scheduleLayoutFrame2();
|
|
1170
1181
|
}
|
|
1171
1182
|
getElementLayoutEvent = function(nodeRect, parentRect, node) {
|
|
1172
1183
|
return {
|
|
@@ -14030,6 +14041,11 @@ function elementOfType(children, type) {
|
|
|
14030
14041
|
}
|
|
14031
14042
|
return null;
|
|
14032
14043
|
}
|
|
14044
|
+
function warnUnsupported(feature) {
|
|
14045
|
+
if (warnedUnsupported.has(feature) || true) return;
|
|
14046
|
+
warnedUnsupported.add(feature);
|
|
14047
|
+
console.warn(`[Tamagui] @expo/ui/community/menu does not support ${feature}, so it will not render. Register a different native menu adapter if you need it.`);
|
|
14048
|
+
}
|
|
14033
14049
|
function textFromNode(node) {
|
|
14034
14050
|
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
14035
14051
|
if (!/* @__PURE__ */ react$1.default.isValidElement(node)) return "";
|
|
@@ -14062,7 +14078,7 @@ function createExpoUIMenuAdapter(param) {
|
|
|
14062
14078
|
var content = elementOfType(children, Content);
|
|
14063
14079
|
var preview = elementOfType(children, Preview);
|
|
14064
14080
|
var auxiliary = elementOfType(children, Auxiliary);
|
|
14065
|
-
if (preview || auxiliary)
|
|
14081
|
+
if (preview || auxiliary) warnUnsupported("context-menu previews or auxiliary views");
|
|
14066
14082
|
if (!trigger || !content) throw new Error("Tamagui native menus require one Trigger and one Content");
|
|
14067
14083
|
var nextId = 0;
|
|
14068
14084
|
var handlers = /* @__PURE__ */ new Map();
|
|
@@ -14147,7 +14163,7 @@ function createExpoUIMenuAdapter(param) {
|
|
|
14147
14163
|
return "continue";
|
|
14148
14164
|
}
|
|
14149
14165
|
if (!isMarkerType(child.type, Item) && !isMarkerType(child.type, CheckboxItem)) return "continue";
|
|
14150
|
-
if (elementOfType(child.props.children, ItemSubtitle))
|
|
14166
|
+
if (elementOfType(child.props.children, ItemSubtitle)) warnUnsupported("menu item subtitles");
|
|
14151
14167
|
var id = actionId(child);
|
|
14152
14168
|
if (isMarkerType(child.type, CheckboxItem)) {
|
|
14153
14169
|
var current = child.props.value === true || child.props.value === "on" || child.props.checked === true;
|
|
@@ -14239,7 +14255,10 @@ function createExpoUIMenuAdapter(param) {
|
|
|
14239
14255
|
ContextMenu: createModule(true)
|
|
14240
14256
|
};
|
|
14241
14257
|
}
|
|
14242
|
-
var
|
|
14258
|
+
var warnedUnsupported;
|
|
14259
|
+
var init_expoUIMenuAdapter_native = __esmMin((() => {
|
|
14260
|
+
warnedUnsupported = /* @__PURE__ */ new Set();
|
|
14261
|
+
}));
|
|
14243
14262
|
//#endregion
|
|
14244
14263
|
//#region ../../core/native/dist/esm/nativeMenuContext.native.js
|
|
14245
14264
|
var NativeMenuContext;
|
|
@@ -16191,6 +16210,14 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16191
16210
|
}
|
|
16192
16211
|
var priority = mediaStylesSeen;
|
|
16193
16212
|
mediaStylesSeen += 1;
|
|
16213
|
+
if (process.env.IS_STATIC === "is_static" && isMedia === true) {
|
|
16214
|
+
var _styleState3;
|
|
16215
|
+
var mediaStyle = getSubStyle(styleState, key6, val2, true);
|
|
16216
|
+
(_styleState3 = styleState).style || (_styleState3.style = {});
|
|
16217
|
+
var existing = styleState.style[key6];
|
|
16218
|
+
styleState.style[key6] = existing ? Object.assign(existing, mediaStyle) : mediaStyle;
|
|
16219
|
+
return;
|
|
16220
|
+
}
|
|
16194
16221
|
if (shouldDoClasses) {
|
|
16195
16222
|
var mediaStyles = getCSSStylesAtomic(getSubStyle(styleState, key6, val2, false));
|
|
16196
16223
|
var _iteratorNormalCompletion12 = true, _didIteratorError12 = false, _iteratorError12 = void 0;
|
|
@@ -16223,7 +16250,7 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16223
16250
|
return;
|
|
16224
16251
|
}
|
|
16225
16252
|
(_styleState4 = styleState).style || (_styleState4.style = {});
|
|
16226
|
-
if (mergeMediaByImportance(styleState, mediaKeyShort, key7, val3, mediaState$1[mediaKeyShort], importanceBump, debug, originalVal2) && key7 === "fontFamily") styleState.fontFamily =
|
|
16253
|
+
if (mergeMediaByImportance(styleState, mediaKeyShort, key7, val3, mediaState$1[mediaKeyShort], importanceBump, debug, originalVal2) && key7 === "fontFamily") styleState.fontFamily = mediaStyle2.fontFamily;
|
|
16227
16254
|
};
|
|
16228
16255
|
var isThemeMedia = isMedia === "theme";
|
|
16229
16256
|
var isGroupMedia = isMedia === "group";
|
|
@@ -16231,34 +16258,34 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16231
16258
|
if (!isThemeMedia && !isPlatformMedia && !isGroupMedia) {
|
|
16232
16259
|
if (!mediaState$1[mediaKeyShort]) return;
|
|
16233
16260
|
}
|
|
16234
|
-
var
|
|
16261
|
+
var mediaStyle2 = getSubStyle(styleState, key6, val2, true);
|
|
16235
16262
|
var importanceBump = 0;
|
|
16236
16263
|
if (isThemeMedia) if (supportsDynamicColorIOS && getSetting("fastSchemeChange")) {
|
|
16237
|
-
var
|
|
16238
|
-
(
|
|
16264
|
+
var _styleState12;
|
|
16265
|
+
(_styleState12 = styleState).style || (_styleState12.style = {});
|
|
16239
16266
|
var scheme = mediaKeyShort;
|
|
16240
16267
|
var oppositeScheme = getOppositeScheme(mediaKeyShort);
|
|
16241
|
-
var themeOriginalValues = styleOriginalValues.get(
|
|
16268
|
+
var themeOriginalValues = styleOriginalValues.get(mediaStyle2);
|
|
16242
16269
|
var isCurrentScheme = themeName === scheme || themeName.startsWith(scheme);
|
|
16243
|
-
for (var subKey1 in
|
|
16244
|
-
var _$val1 = extractValueFromDynamic(
|
|
16245
|
-
var
|
|
16270
|
+
for (var subKey1 in mediaStyle2) {
|
|
16271
|
+
var _$val1 = extractValueFromDynamic(mediaStyle2[subKey1], scheme);
|
|
16272
|
+
var existing1 = styleState.style[subKey1];
|
|
16246
16273
|
if (!isColorStyleKey(subKey1)) {
|
|
16247
16274
|
dynamicThemeAccess = true;
|
|
16248
|
-
if (isCurrentScheme)
|
|
16249
|
-
else delete
|
|
16275
|
+
if (isCurrentScheme) mediaStyle2[subKey1] = _$val1;
|
|
16276
|
+
else delete mediaStyle2[subKey1];
|
|
16250
16277
|
continue;
|
|
16251
16278
|
}
|
|
16252
|
-
if (
|
|
16253
|
-
|
|
16254
|
-
|
|
16279
|
+
if (existing1 === null || existing1 === void 0 ? void 0 : existing1.dynamic) {
|
|
16280
|
+
existing1.dynamic[scheme] = _$val1;
|
|
16281
|
+
mediaStyle2[subKey1] = existing1;
|
|
16255
16282
|
} else {
|
|
16256
|
-
|
|
16283
|
+
mediaStyle2[subKey1] = getDynamicVal({
|
|
16257
16284
|
scheme,
|
|
16258
16285
|
val: _$val1,
|
|
16259
|
-
oppositeVal: extractValueFromDynamic(
|
|
16286
|
+
oppositeVal: extractValueFromDynamic(existing1, oppositeScheme)
|
|
16260
16287
|
});
|
|
16261
|
-
mergeStyle(styleState, subKey1,
|
|
16288
|
+
mergeStyle(styleState, subKey1, mediaStyle2[subKey1], priority, false, themeOriginalValues === null || themeOriginalValues === void 0 ? void 0 : themeOriginalValues[subKey1]);
|
|
16262
16289
|
}
|
|
16263
16290
|
}
|
|
16264
16291
|
} else {
|
|
@@ -16285,7 +16312,7 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16285
16312
|
var isActive = mediaState1 === null || mediaState1 === void 0 ? void 0 : mediaState1[groupMediaKey];
|
|
16286
16313
|
if (!mediaState1 && groupState.layout) isActive = mediaKeyMatch(groupMediaKey, groupState.layout);
|
|
16287
16314
|
if (!isActive) {
|
|
16288
|
-
for (var pkey1 in
|
|
16315
|
+
for (var pkey1 in mediaStyle2) applyDefaultStyle(pkey1, styleState);
|
|
16289
16316
|
return;
|
|
16290
16317
|
}
|
|
16291
16318
|
importanceBump = 2;
|
|
@@ -16298,19 +16325,19 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16298
16325
|
var isActive1 = componentGroupPseudoState === null || componentGroupPseudoState === void 0 ? void 0 : componentGroupPseudoState[groupPseudoKey];
|
|
16299
16326
|
var priority1 = pseudoPriorities[groupPseudoKey];
|
|
16300
16327
|
if (!isActive1) {
|
|
16301
|
-
for (var pkey2 in
|
|
16328
|
+
for (var pkey2 in mediaStyle2) applyDefaultStyle(pkey2, styleState);
|
|
16302
16329
|
return;
|
|
16303
16330
|
}
|
|
16304
16331
|
importanceBump = priority1;
|
|
16305
16332
|
}
|
|
16306
16333
|
} else if (isPlatformMedia) importanceBump = getPlatformSpecificityBump(mediaKeyShort);
|
|
16307
|
-
var mediaOriginalValues = styleOriginalValues.get(
|
|
16308
|
-
if (isGroupMedia &&
|
|
16309
|
-
var
|
|
16310
|
-
(
|
|
16311
|
-
styleState.pseudoTransitions[`$${mediaKeyShort}`] =
|
|
16334
|
+
var mediaOriginalValues = styleOriginalValues.get(mediaStyle2);
|
|
16335
|
+
if (isGroupMedia && mediaStyle2.transition) {
|
|
16336
|
+
var _styleState22;
|
|
16337
|
+
(_styleState22 = styleState).pseudoTransitions || (_styleState22.pseudoTransitions = {});
|
|
16338
|
+
styleState.pseudoTransitions[`$${mediaKeyShort}`] = mediaStyle2.transition;
|
|
16312
16339
|
}
|
|
16313
|
-
for (var subKey2 in
|
|
16340
|
+
for (var subKey2 in mediaStyle2) {
|
|
16314
16341
|
if (subKey2 === "space") continue;
|
|
16315
16342
|
if (subKey2[0] === "$") {
|
|
16316
16343
|
var subMediaType = getMediaKey(subKey2);
|
|
@@ -16321,7 +16348,7 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16321
16348
|
} else if (subMediaType === true) {
|
|
16322
16349
|
if (!mediaState$1[subKey2.slice(1)]) continue;
|
|
16323
16350
|
}
|
|
16324
|
-
var nestedVal =
|
|
16351
|
+
var nestedVal = mediaStyle2[subKey2];
|
|
16325
16352
|
var subOriginalValues = styleOriginalValues.get(nestedVal);
|
|
16326
16353
|
var outerBase = !!mediaState$1[mediaKeyShort] ? getMediaKeyImportance(mediaKeyShort) : defaultMediaImportance;
|
|
16327
16354
|
var innerBase = void 0;
|
|
@@ -16330,15 +16357,15 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16330
16357
|
else innerBase = defaultMediaImportance;
|
|
16331
16358
|
var nestedImportance = outerBase + importanceBump + innerBase + 1;
|
|
16332
16359
|
for (var subSubKey in nestedVal) {
|
|
16333
|
-
var
|
|
16360
|
+
var _styleState32;
|
|
16334
16361
|
var expandedKey = shorthands[subSubKey] || subSubKey;
|
|
16335
16362
|
var { usedKeys } = styleState;
|
|
16336
16363
|
if (usedKeys[expandedKey] && usedKeys[expandedKey] > nestedImportance) continue;
|
|
16337
|
-
(
|
|
16364
|
+
(_styleState32 = styleState).style || (_styleState32.style = {});
|
|
16338
16365
|
mergeStyle(styleState, expandedKey, nestedVal[subSubKey], nestedImportance, false, subOriginalValues === null || subOriginalValues === void 0 ? void 0 : subOriginalValues[subSubKey]);
|
|
16339
16366
|
if (expandedKey === "fontFamily") styleState.fontFamily = nestedVal[subSubKey];
|
|
16340
16367
|
}
|
|
16341
|
-
} else mergeMediaStyle2(subKey2,
|
|
16368
|
+
} else mergeMediaStyle2(subKey2, mediaStyle2[subKey2], mediaOriginalValues === null || mediaOriginalValues === void 0 ? void 0 : mediaOriginalValues[subKey2]);
|
|
16342
16369
|
}
|
|
16343
16370
|
}
|
|
16344
16371
|
return;
|
package/dist/test.cjs
CHANGED
|
@@ -876,6 +876,7 @@ function _instanceof$7(left, right) {
|
|
|
876
876
|
}
|
|
877
877
|
function setOnLayoutStrategy(state) {
|
|
878
878
|
strategy = state;
|
|
879
|
+
resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
|
|
879
880
|
}
|
|
880
881
|
function enable() {
|
|
881
882
|
if (avoidUpdates) {
|
|
@@ -926,6 +927,7 @@ function observeLayoutNode(node, disableKey) {
|
|
|
926
927
|
globalIntersectionObserver.observe(node);
|
|
927
928
|
IntersectionState.set(node, true);
|
|
928
929
|
}
|
|
930
|
+
resumeLayoutLoop === null || resumeLayoutLoop === void 0 || resumeLayoutLoop();
|
|
929
931
|
}
|
|
930
932
|
function registerLayoutNode(node, onChange, disableKey) {
|
|
931
933
|
LayoutHandlers.set(node, onChange);
|
|
@@ -1003,7 +1005,7 @@ function createMeasureLayout(node) {
|
|
|
1003
1005
|
return measureLayout$1(node, relativeTo, callback);
|
|
1004
1006
|
};
|
|
1005
1007
|
}
|
|
1006
|
-
var LayoutHandlers, LayoutDisableKey, Nodes, IntersectionState, usePretransformDimensions, DisableLayoutContextValues, DisableLayoutContextKey, ENABLE, LayoutMeasurementController, globalIntersectionObserver, strategy, NodeRectCache, avoidUpdates, queuedUpdates, BoundingRects, rectFetchObserver, rectFetchResolve, rectFetchStartTime, lastCallbackDelay, rAF, userSkipVal, BASE_SKIP_FRAMES, MAX_SKIP_FRAMES, skipFrames, frameCount, getElementLayoutEvent, getPreTransformDimensions, getRelativeDimensions, PrevHostNode, getBoundingClientRectAsync, measureNode, measure, measureInWindow, createMeasureInWindow, measureLayout$1;
|
|
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;
|
|
1007
1009
|
var init_index_native$11 = __esmMin((() => {
|
|
1008
1010
|
init_index_native$7();
|
|
1009
1011
|
init_asyncToGenerator();
|
|
@@ -1045,6 +1047,10 @@ var init_index_native$11 = __esmMin((() => {
|
|
|
1045
1047
|
}
|
|
1046
1048
|
}, { threshold: 0 });
|
|
1047
1049
|
return rectFetchObserver;
|
|
1050
|
+
}, scheduleLayoutFrame2 = function() {
|
|
1051
|
+
if (frameScheduled || strategy === "off" || Nodes.size === 0 || document.hidden) return;
|
|
1052
|
+
frameScheduled = true;
|
|
1053
|
+
rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
|
|
1048
1054
|
};
|
|
1049
1055
|
BoundingRects = /* @__PURE__ */ new WeakMap();
|
|
1050
1056
|
rectFetchObserver = null;
|
|
@@ -1079,13 +1085,15 @@ var init_index_native$11 = __esmMin((() => {
|
|
|
1079
1085
|
MAX_SKIP_FRAMES = 20;
|
|
1080
1086
|
skipFrames = BASE_SKIP_FRAMES;
|
|
1081
1087
|
frameCount = 0;
|
|
1088
|
+
frameScheduled = false;
|
|
1082
1089
|
function layoutOnAnimationFrame() {
|
|
1083
1090
|
return _layoutOnAnimationFrame.apply(this, arguments);
|
|
1084
1091
|
}
|
|
1085
1092
|
function _layoutOnAnimationFrame() {
|
|
1086
1093
|
_layoutOnAnimationFrame = _asyncToGenerator(function* () {
|
|
1087
1094
|
if (frameCount++ % skipFrames !== 0) {
|
|
1088
|
-
|
|
1095
|
+
frameScheduled = false;
|
|
1096
|
+
scheduleLayoutFrame2();
|
|
1089
1097
|
return;
|
|
1090
1098
|
}
|
|
1091
1099
|
if (frameCount >= Number.MAX_SAFE_INTEGER) frameCount = 0;
|
|
@@ -1162,11 +1170,14 @@ var init_index_native$11 = __esmMin((() => {
|
|
|
1162
1170
|
for (var i2 = 0; i2 < visibleNodes.length; i2++) updateLayoutIfChanged(visibleNodes[i2]);
|
|
1163
1171
|
}
|
|
1164
1172
|
}
|
|
1165
|
-
|
|
1173
|
+
frameScheduled = false;
|
|
1174
|
+
scheduleLayoutFrame2();
|
|
1166
1175
|
});
|
|
1167
1176
|
return _layoutOnAnimationFrame.apply(this, arguments);
|
|
1168
1177
|
}
|
|
1169
|
-
|
|
1178
|
+
resumeLayoutLoop = scheduleLayoutFrame2;
|
|
1179
|
+
document.addEventListener("visibilitychange", scheduleLayoutFrame2);
|
|
1180
|
+
scheduleLayoutFrame2();
|
|
1170
1181
|
}
|
|
1171
1182
|
getElementLayoutEvent = function(nodeRect, parentRect, node) {
|
|
1172
1183
|
return {
|
|
@@ -14208,6 +14219,11 @@ function elementOfType(children, type) {
|
|
|
14208
14219
|
}
|
|
14209
14220
|
return null;
|
|
14210
14221
|
}
|
|
14222
|
+
function warnUnsupported(feature) {
|
|
14223
|
+
if (warnedUnsupported.has(feature) || false) return;
|
|
14224
|
+
warnedUnsupported.add(feature);
|
|
14225
|
+
console.warn(`[Tamagui] @expo/ui/community/menu does not support ${feature}, so it will not render. Register a different native menu adapter if you need it.`);
|
|
14226
|
+
}
|
|
14211
14227
|
function textFromNode(node) {
|
|
14212
14228
|
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
14213
14229
|
if (!/* @__PURE__ */ react$1.default.isValidElement(node)) return "";
|
|
@@ -14240,7 +14256,7 @@ function createExpoUIMenuAdapter(param) {
|
|
|
14240
14256
|
var content = elementOfType(children, Content);
|
|
14241
14257
|
var preview = elementOfType(children, Preview);
|
|
14242
14258
|
var auxiliary = elementOfType(children, Auxiliary);
|
|
14243
|
-
if (preview || auxiliary)
|
|
14259
|
+
if (preview || auxiliary) warnUnsupported("context-menu previews or auxiliary views");
|
|
14244
14260
|
if (!trigger || !content) throw new Error("Tamagui native menus require one Trigger and one Content");
|
|
14245
14261
|
var nextId = 0;
|
|
14246
14262
|
var handlers = /* @__PURE__ */ new Map();
|
|
@@ -14325,7 +14341,7 @@ function createExpoUIMenuAdapter(param) {
|
|
|
14325
14341
|
return "continue";
|
|
14326
14342
|
}
|
|
14327
14343
|
if (!isMarkerType(child.type, Item) && !isMarkerType(child.type, CheckboxItem)) return "continue";
|
|
14328
|
-
if (elementOfType(child.props.children, ItemSubtitle))
|
|
14344
|
+
if (elementOfType(child.props.children, ItemSubtitle)) warnUnsupported("menu item subtitles");
|
|
14329
14345
|
var id = actionId(child);
|
|
14330
14346
|
if (isMarkerType(child.type, CheckboxItem)) {
|
|
14331
14347
|
var current = child.props.value === true || child.props.value === "on" || child.props.checked === true;
|
|
@@ -14417,7 +14433,10 @@ function createExpoUIMenuAdapter(param) {
|
|
|
14417
14433
|
ContextMenu: createModule(true)
|
|
14418
14434
|
};
|
|
14419
14435
|
}
|
|
14420
|
-
var
|
|
14436
|
+
var warnedUnsupported;
|
|
14437
|
+
var init_expoUIMenuAdapter_native = __esmMin((() => {
|
|
14438
|
+
warnedUnsupported = /* @__PURE__ */ new Set();
|
|
14439
|
+
}));
|
|
14421
14440
|
//#endregion
|
|
14422
14441
|
//#region ../../core/native/dist/esm/nativeMenuContext.native.js
|
|
14423
14442
|
var NativeMenuContext;
|
|
@@ -16371,6 +16390,14 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16371
16390
|
}
|
|
16372
16391
|
var priority = mediaStylesSeen;
|
|
16373
16392
|
mediaStylesSeen += 1;
|
|
16393
|
+
if (process.env.IS_STATIC === "is_static" && isMedia === true) {
|
|
16394
|
+
var _styleState3;
|
|
16395
|
+
var mediaStyle = getSubStyle(styleState, key6, val2, true);
|
|
16396
|
+
(_styleState3 = styleState).style || (_styleState3.style = {});
|
|
16397
|
+
var existing = styleState.style[key6];
|
|
16398
|
+
styleState.style[key6] = existing ? Object.assign(existing, mediaStyle) : mediaStyle;
|
|
16399
|
+
return;
|
|
16400
|
+
}
|
|
16374
16401
|
if (shouldDoClasses) {
|
|
16375
16402
|
var mediaStyles = getCSSStylesAtomic(getSubStyle(styleState, key6, val2, false));
|
|
16376
16403
|
var _iteratorNormalCompletion12 = true, _didIteratorError12 = false, _iteratorError12 = void 0;
|
|
@@ -16403,7 +16430,7 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16403
16430
|
return;
|
|
16404
16431
|
}
|
|
16405
16432
|
(_styleState4 = styleState).style || (_styleState4.style = {});
|
|
16406
|
-
if (mergeMediaByImportance(styleState, mediaKeyShort, key7, val3, mediaState$1[mediaKeyShort], importanceBump, debug, originalVal2) && key7 === "fontFamily") styleState.fontFamily =
|
|
16433
|
+
if (mergeMediaByImportance(styleState, mediaKeyShort, key7, val3, mediaState$1[mediaKeyShort], importanceBump, debug, originalVal2) && key7 === "fontFamily") styleState.fontFamily = mediaStyle2.fontFamily;
|
|
16407
16434
|
};
|
|
16408
16435
|
var isThemeMedia = isMedia === "theme";
|
|
16409
16436
|
var isGroupMedia = isMedia === "group";
|
|
@@ -16411,34 +16438,34 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16411
16438
|
if (!isThemeMedia && !isPlatformMedia && !isGroupMedia) {
|
|
16412
16439
|
if (!mediaState$1[mediaKeyShort]) return;
|
|
16413
16440
|
}
|
|
16414
|
-
var
|
|
16441
|
+
var mediaStyle2 = getSubStyle(styleState, key6, val2, true);
|
|
16415
16442
|
var importanceBump = 0;
|
|
16416
16443
|
if (isThemeMedia) if (supportsDynamicColorIOS && getSetting("fastSchemeChange")) {
|
|
16417
|
-
var
|
|
16418
|
-
(
|
|
16444
|
+
var _styleState12;
|
|
16445
|
+
(_styleState12 = styleState).style || (_styleState12.style = {});
|
|
16419
16446
|
var scheme = mediaKeyShort;
|
|
16420
16447
|
var oppositeScheme = getOppositeScheme(mediaKeyShort);
|
|
16421
|
-
var themeOriginalValues = styleOriginalValues.get(
|
|
16448
|
+
var themeOriginalValues = styleOriginalValues.get(mediaStyle2);
|
|
16422
16449
|
var isCurrentScheme = themeName === scheme || themeName.startsWith(scheme);
|
|
16423
|
-
for (var subKey1 in
|
|
16424
|
-
var _$val1 = extractValueFromDynamic(
|
|
16425
|
-
var
|
|
16450
|
+
for (var subKey1 in mediaStyle2) {
|
|
16451
|
+
var _$val1 = extractValueFromDynamic(mediaStyle2[subKey1], scheme);
|
|
16452
|
+
var existing1 = styleState.style[subKey1];
|
|
16426
16453
|
if (!isColorStyleKey(subKey1)) {
|
|
16427
16454
|
dynamicThemeAccess = true;
|
|
16428
|
-
if (isCurrentScheme)
|
|
16429
|
-
else delete
|
|
16455
|
+
if (isCurrentScheme) mediaStyle2[subKey1] = _$val1;
|
|
16456
|
+
else delete mediaStyle2[subKey1];
|
|
16430
16457
|
continue;
|
|
16431
16458
|
}
|
|
16432
|
-
if (
|
|
16433
|
-
|
|
16434
|
-
|
|
16459
|
+
if (existing1 === null || existing1 === void 0 ? void 0 : existing1.dynamic) {
|
|
16460
|
+
existing1.dynamic[scheme] = _$val1;
|
|
16461
|
+
mediaStyle2[subKey1] = existing1;
|
|
16435
16462
|
} else {
|
|
16436
|
-
|
|
16463
|
+
mediaStyle2[subKey1] = getDynamicVal({
|
|
16437
16464
|
scheme,
|
|
16438
16465
|
val: _$val1,
|
|
16439
|
-
oppositeVal: extractValueFromDynamic(
|
|
16466
|
+
oppositeVal: extractValueFromDynamic(existing1, oppositeScheme)
|
|
16440
16467
|
});
|
|
16441
|
-
mergeStyle(styleState, subKey1,
|
|
16468
|
+
mergeStyle(styleState, subKey1, mediaStyle2[subKey1], priority, false, themeOriginalValues === null || themeOriginalValues === void 0 ? void 0 : themeOriginalValues[subKey1]);
|
|
16442
16469
|
}
|
|
16443
16470
|
}
|
|
16444
16471
|
} else {
|
|
@@ -16465,7 +16492,7 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16465
16492
|
var isActive = mediaState1 === null || mediaState1 === void 0 ? void 0 : mediaState1[groupMediaKey];
|
|
16466
16493
|
if (!mediaState1 && groupState.layout) isActive = mediaKeyMatch(groupMediaKey, groupState.layout);
|
|
16467
16494
|
if (!isActive) {
|
|
16468
|
-
for (var pkey1 in
|
|
16495
|
+
for (var pkey1 in mediaStyle2) applyDefaultStyle(pkey1, styleState);
|
|
16469
16496
|
return;
|
|
16470
16497
|
}
|
|
16471
16498
|
importanceBump = 2;
|
|
@@ -16478,19 +16505,19 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16478
16505
|
var isActive1 = componentGroupPseudoState === null || componentGroupPseudoState === void 0 ? void 0 : componentGroupPseudoState[groupPseudoKey];
|
|
16479
16506
|
var priority1 = pseudoPriorities[groupPseudoKey];
|
|
16480
16507
|
if (!isActive1) {
|
|
16481
|
-
for (var pkey2 in
|
|
16508
|
+
for (var pkey2 in mediaStyle2) applyDefaultStyle(pkey2, styleState);
|
|
16482
16509
|
return;
|
|
16483
16510
|
}
|
|
16484
16511
|
importanceBump = priority1;
|
|
16485
16512
|
}
|
|
16486
16513
|
} else if (isPlatformMedia) importanceBump = getPlatformSpecificityBump(mediaKeyShort);
|
|
16487
|
-
var mediaOriginalValues = styleOriginalValues.get(
|
|
16488
|
-
if (isGroupMedia &&
|
|
16489
|
-
var
|
|
16490
|
-
(
|
|
16491
|
-
styleState.pseudoTransitions[`$${mediaKeyShort}`] =
|
|
16514
|
+
var mediaOriginalValues = styleOriginalValues.get(mediaStyle2);
|
|
16515
|
+
if (isGroupMedia && mediaStyle2.transition) {
|
|
16516
|
+
var _styleState22;
|
|
16517
|
+
(_styleState22 = styleState).pseudoTransitions || (_styleState22.pseudoTransitions = {});
|
|
16518
|
+
styleState.pseudoTransitions[`$${mediaKeyShort}`] = mediaStyle2.transition;
|
|
16492
16519
|
}
|
|
16493
|
-
for (var subKey2 in
|
|
16520
|
+
for (var subKey2 in mediaStyle2) {
|
|
16494
16521
|
if (subKey2 === "space") continue;
|
|
16495
16522
|
if (subKey2[0] === "$") {
|
|
16496
16523
|
var subMediaType = getMediaKey(subKey2);
|
|
@@ -16501,7 +16528,7 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16501
16528
|
} else if (subMediaType === true) {
|
|
16502
16529
|
if (!mediaState$1[subKey2.slice(1)]) continue;
|
|
16503
16530
|
}
|
|
16504
|
-
var nestedVal =
|
|
16531
|
+
var nestedVal = mediaStyle2[subKey2];
|
|
16505
16532
|
var subOriginalValues = styleOriginalValues.get(nestedVal);
|
|
16506
16533
|
var outerBase = !!mediaState$1[mediaKeyShort] ? getMediaKeyImportance(mediaKeyShort) : defaultMediaImportance;
|
|
16507
16534
|
var innerBase = void 0;
|
|
@@ -16510,15 +16537,15 @@ var init_getSplitStyles_native = __esmMin((() => {
|
|
|
16510
16537
|
else innerBase = defaultMediaImportance;
|
|
16511
16538
|
var nestedImportance = outerBase + importanceBump + innerBase + 1;
|
|
16512
16539
|
for (var subSubKey in nestedVal) {
|
|
16513
|
-
var
|
|
16540
|
+
var _styleState32;
|
|
16514
16541
|
var expandedKey = shorthands[subSubKey] || subSubKey;
|
|
16515
16542
|
var { usedKeys } = styleState;
|
|
16516
16543
|
if (usedKeys[expandedKey] && usedKeys[expandedKey] > nestedImportance) continue;
|
|
16517
|
-
(
|
|
16544
|
+
(_styleState32 = styleState).style || (_styleState32.style = {});
|
|
16518
16545
|
mergeStyle(styleState, expandedKey, nestedVal[subSubKey], nestedImportance, false, subOriginalValues === null || subOriginalValues === void 0 ? void 0 : subOriginalValues[subSubKey]);
|
|
16519
16546
|
if (expandedKey === "fontFamily") styleState.fontFamily = nestedVal[subSubKey];
|
|
16520
16547
|
}
|
|
16521
|
-
} else mergeMediaStyle2(subKey2,
|
|
16548
|
+
} else mergeMediaStyle2(subKey2, mediaStyle2[subKey2], mediaOriginalValues === null || mediaOriginalValues === void 0 ? void 0 : mediaOriginalValues[subKey2]);
|
|
16522
16549
|
}
|
|
16523
16550
|
}
|
|
16524
16551
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tamagui",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.3",
|
|
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.
|
|
81
|
-
"@tamagui/adapt": "2.7.
|
|
82
|
-
"@tamagui/alert-dialog": "2.7.
|
|
83
|
-
"@tamagui/animate": "2.7.
|
|
84
|
-
"@tamagui/animate-presence": "2.7.
|
|
85
|
-
"@tamagui/avatar": "2.7.
|
|
86
|
-
"@tamagui/button": "2.7.
|
|
87
|
-
"@tamagui/card": "2.7.
|
|
88
|
-
"@tamagui/checkbox": "2.7.
|
|
89
|
-
"@tamagui/collapsible": "2.7.
|
|
90
|
-
"@tamagui/compose-refs": "2.7.
|
|
91
|
-
"@tamagui/constants": "2.7.
|
|
92
|
-
"@tamagui/context-menu": "2.7.
|
|
93
|
-
"@tamagui/core": "2.7.
|
|
94
|
-
"@tamagui/create-context": "2.7.
|
|
95
|
-
"@tamagui/create-menu": "2.7.
|
|
96
|
-
"@tamagui/dialog": "2.7.
|
|
97
|
-
"@tamagui/element": "2.7.
|
|
98
|
-
"@tamagui/elements": "2.7.
|
|
99
|
-
"@tamagui/fake-react-native": "2.7.
|
|
100
|
-
"@tamagui/focusable": "2.7.
|
|
101
|
-
"@tamagui/form": "2.7.
|
|
102
|
-
"@tamagui/get-button-sized": "2.7.
|
|
103
|
-
"@tamagui/get-font-sized": "2.7.
|
|
104
|
-
"@tamagui/get-token": "2.7.
|
|
105
|
-
"@tamagui/group": "2.7.
|
|
106
|
-
"@tamagui/helpers-tamagui": "2.7.
|
|
107
|
-
"@tamagui/image": "2.7.
|
|
108
|
-
"@tamagui/input": "2.7.
|
|
109
|
-
"@tamagui/label": "2.7.
|
|
110
|
-
"@tamagui/linear-gradient": "2.7.
|
|
111
|
-
"@tamagui/list-item": "2.7.
|
|
112
|
-
"@tamagui/menu": "2.7.
|
|
113
|
-
"@tamagui/polyfill-dev": "2.7.
|
|
114
|
-
"@tamagui/popover": "2.7.
|
|
115
|
-
"@tamagui/popper": "2.7.
|
|
116
|
-
"@tamagui/portal": "2.7.
|
|
117
|
-
"@tamagui/progress": "2.7.
|
|
118
|
-
"@tamagui/radio-group": "2.7.
|
|
119
|
-
"@tamagui/react-native-media-driver": "2.7.
|
|
120
|
-
"@tamagui/scroll-view": "2.7.
|
|
121
|
-
"@tamagui/select": "2.7.
|
|
122
|
-
"@tamagui/separator": "2.7.
|
|
123
|
-
"@tamagui/shapes": "2.7.
|
|
124
|
-
"@tamagui/sheet": "2.7.
|
|
125
|
-
"@tamagui/slider": "2.7.
|
|
126
|
-
"@tamagui/spacer": "2.7.
|
|
127
|
-
"@tamagui/spinner": "2.7.
|
|
128
|
-
"@tamagui/stacks": "2.7.
|
|
129
|
-
"@tamagui/switch": "2.7.
|
|
130
|
-
"@tamagui/tabs": "2.7.
|
|
131
|
-
"@tamagui/text": "2.7.
|
|
132
|
-
"@tamagui/theme": "2.7.
|
|
133
|
-
"@tamagui/toast": "2.7.
|
|
134
|
-
"@tamagui/toggle-group": "2.7.
|
|
135
|
-
"@tamagui/tooltip": "2.7.
|
|
136
|
-
"@tamagui/use-controllable-state": "2.7.
|
|
137
|
-
"@tamagui/use-debounce": "2.7.
|
|
138
|
-
"@tamagui/use-force-update": "2.7.
|
|
139
|
-
"@tamagui/use-window-dimensions": "2.7.
|
|
140
|
-
"@tamagui/visually-hidden": "2.7.
|
|
141
|
-
"@tamagui/font-size": "2.7.
|
|
142
|
-
"@tamagui/z-index-stack": "2.7.
|
|
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"
|
|
143
143
|
},
|
|
144
144
|
"devDependencies": {
|
|
145
|
-
"@tamagui/build": "2.7.
|
|
145
|
+
"@tamagui/build": "2.7.3",
|
|
146
146
|
"react": ">=19",
|
|
147
147
|
"react-native": "0.83.2",
|
|
148
148
|
"react-native-web": "^0.21.0"
|