@tamagui/web 3.0.0-beta.1093.1 → 3.0.0-beta.1097.1
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/dist/cjs/config.cjs +2 -2
- package/dist/cjs/config.native.cjs +3 -4
- package/dist/cjs/config.native.js +3 -4
- package/dist/cjs/config.native.js.map +1 -1
- package/dist/cjs/createComponent.cjs +1 -2
- package/dist/cjs/createComponent.native.cjs +1 -2
- package/dist/cjs/createComponent.native.js +1 -2
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/helpers/expandStyles.cjs +7 -1
- package/dist/cjs/helpers/expandStyles.native.cjs +7 -1
- package/dist/cjs/helpers/expandStyles.native.js +7 -1
- package/dist/cjs/helpers/expandStyles.native.js.map +1 -1
- package/dist/cjs/helpers/getSplitStyles.cjs +99 -2
- package/dist/cjs/helpers/getSplitStyles.native.cjs +113 -2
- package/dist/cjs/helpers/getSplitStyles.native.js +113 -2
- package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/cjs/helpers/resolveNativeUnits.native.cjs +62 -31
- package/dist/cjs/helpers/resolveNativeUnits.native.js +62 -31
- package/dist/cjs/helpers/resolveNativeUnits.native.js.map +1 -1
- package/dist/cjs/helpers/warnOnce.cjs +6 -0
- package/dist/cjs/helpers/warnOnce.native.cjs +6 -0
- package/dist/cjs/helpers/warnOnce.native.js +6 -0
- package/dist/cjs/helpers/warnOnce.native.js.map +1 -1
- package/dist/cjs/views/Theme.cjs +2 -11
- package/dist/cjs/views/Theme.native.cjs +1 -4
- package/dist/cjs/views/Theme.native.js +1 -4
- package/dist/cjs/views/Theme.native.js.map +1 -1
- package/dist/esm/config.mjs +2 -2
- package/dist/esm/config.mjs.map +1 -1
- package/dist/esm/config.native.js +3 -4
- package/dist/esm/config.native.js.map +1 -1
- package/dist/esm/createComponent.mjs +1 -2
- package/dist/esm/createComponent.mjs.map +1 -1
- package/dist/esm/createComponent.native.js +1 -2
- package/dist/esm/createComponent.native.js.map +1 -1
- package/dist/esm/helpers/expandStyles.mjs +7 -1
- package/dist/esm/helpers/expandStyles.mjs.map +1 -1
- package/dist/esm/helpers/expandStyles.native.js +7 -1
- package/dist/esm/helpers/expandStyles.native.js.map +1 -1
- package/dist/esm/helpers/getSplitStyles.mjs +101 -4
- package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
- package/dist/esm/helpers/getSplitStyles.native.js +115 -4
- package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/esm/helpers/resolveNativeUnits.native.js +62 -32
- package/dist/esm/helpers/resolveNativeUnits.native.js.map +1 -1
- package/dist/esm/helpers/warnOnce.mjs +6 -1
- package/dist/esm/helpers/warnOnce.mjs.map +1 -1
- package/dist/esm/helpers/warnOnce.native.js +6 -1
- package/dist/esm/helpers/warnOnce.native.js.map +1 -1
- package/dist/esm/views/Theme.mjs +2 -5
- package/dist/esm/views/Theme.mjs.map +1 -1
- package/dist/esm/views/Theme.native.js +2 -5
- package/dist/esm/views/Theme.native.js.map +1 -1
- package/package.json +17 -17
- package/src/config.ts +2 -6
- package/src/createComponent.tsx +0 -1
- package/src/dom/styleTypes.ts +1 -1
- package/src/helpers/expandStyles.ts +6 -2
- package/src/helpers/getSplitStyles.tsx +165 -3
- package/src/helpers/insertStyleRule.tsx +1 -1
- package/src/helpers/resolveNativeUnits.native.ts +71 -20
- package/src/helpers/warnOnce.ts +6 -0
- package/src/types.tsx +114 -34
- package/src/views/Theme.tsx +2 -8
- package/types/config.d.ts.map +1 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/dom/styleTypes.d.ts +1 -1
- package/types/dom/styleTypes.d.ts.map +1 -1
- package/types/helpers/expandStyles.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/resolveNativeUnits.native.d.ts +1 -0
- package/types/helpers/resolveNativeUnits.native.d.ts.map +1 -1
- package/types/helpers/warnOnce.d.ts +1 -0
- package/types/helpers/warnOnce.d.ts.map +1 -1
- package/types/types.d.ts +57 -22
- package/types/types.d.ts.map +1 -1
- package/types/views/Theme.d.ts.map +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getTransitionResolver } from "@tamagui/animation-helpers/transitionResolver";
|
|
2
2
|
import { isClient } from "@tamagui/constants";
|
|
3
3
|
import { nonAnimatableStyleProps, stylePropsAll, stylePropsInput, stylePropsText, stylePropsTransform, validStyles } from "@tamagui/helpers";
|
|
4
|
-
import { addTransformValue, createTransformAccumulator, finalizeTransformAccumulator, getTransformPartKeys, removeTransformValue } from "@tamagui/style-grammar/runtime";
|
|
5
|
-
import { getConfig, getConfigMaybe } from "../config.mjs";
|
|
4
|
+
import { addTransformValue, createTransformAccumulator, finalizeTransformAccumulator, getTransformPartKeys, grammarMaxNonPlatformDepth, namedCssColors, removeTransformValue } from "@tamagui/style-grammar/runtime";
|
|
5
|
+
import { getConfig, getConfigMaybe, getSetting } from "../config.mjs";
|
|
6
6
|
import { isDevTools } from "../constants/isDevTools.mjs";
|
|
7
7
|
import { defaultComponentStateMounted } from "../defaultComponentState.mjs";
|
|
8
8
|
import { isVariable } from "../createVariable.mjs";
|
|
@@ -397,6 +397,19 @@ function contributeProp(pass, keyOg, valOg, originalOg = valOg, disabled = false
|
|
|
397
397
|
} else return;
|
|
398
398
|
}
|
|
399
399
|
let isValidStyleKeyInit = isValidStyleKey(keyInit, validStyles);
|
|
400
|
+
if (process.env.NODE_ENV === "development") {
|
|
401
|
+
if (!isValidStyleKeyInit && (!variants || !(keyInit in variants))) {
|
|
402
|
+
let replacement;
|
|
403
|
+
if (keyInit === "animation") replacement = "transition=";
|
|
404
|
+
else if (keyInit === "hoverStyle") replacement = "hover: clause";
|
|
405
|
+
else if (keyInit === "pressStyle") replacement = "press: clause";
|
|
406
|
+
else if (keyInit === "focusStyle") replacement = "focus: clause";
|
|
407
|
+
else if (keyInit === "enterStyle") replacement = "enter: clause";
|
|
408
|
+
else if (keyInit === "exitStyle") replacement = "exit: clause";
|
|
409
|
+
else if (keyInit.charCodeAt(0) === 36 && keyInit.length > 1) replacement = `${keyInit.slice(1)}: clause`;
|
|
410
|
+
if (replacement) warnOnce(`v2-prop:${keyInit}`, `prop "${keyInit}" was removed in v3; use ${replacement}`);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
400
413
|
if (keyInit.startsWith("data-")) {
|
|
401
414
|
viewProps[keyInit] = valInit;
|
|
402
415
|
return;
|
|
@@ -1185,7 +1198,7 @@ function emitUnderCondition(state, property, value, cursor, originalValue, conte
|
|
|
1185
1198
|
}
|
|
1186
1199
|
return condition;
|
|
1187
1200
|
}
|
|
1188
|
-
const formatScanFailure = (failure, source, failureIndex) => failure === "invalid-character" ? `"${source[failureIndex]}" would end the declaration or rule` : failure === "unterminated-string" ? "an unterminated string" : failure === "unterminated-comment" ? "an unterminated \"/*\" comment" : failure === "stray-comment-close" ? "a stray \"*/\"" : "an unterminated \"(\"";
|
|
1201
|
+
const formatScanFailure = (failure, source, failureIndex) => failure === "invalid-character" ? `"${source[failureIndex]}" would end the declaration or rule` : failure === "unterminated-string" ? "an unterminated string" : failure === "unterminated-comment" ? "an unterminated \"/*\" comment" : failure === "stray-comment-close" ? "a stray \"*/\"" : failure === "over-deep-clause" ? `a clause with more than ${grammarMaxNonPlatformDepth} non-platform conditions` : "an unterminated \"(\"";
|
|
1189
1202
|
const warnScanFailure = (property, source, failure, failureIndex) => {
|
|
1190
1203
|
if (process.env.NODE_ENV === "development") warnRefusedValue(property, source, formatScanFailure(failure, source, failureIndex));
|
|
1191
1204
|
};
|
|
@@ -1195,6 +1208,15 @@ let valueCaches = /* @__PURE__ */ new WeakMap();
|
|
|
1195
1208
|
let valueCacheEntries = 0;
|
|
1196
1209
|
const valueCacheRoot = {};
|
|
1197
1210
|
const parsedSlices = /* @__PURE__ */ new WeakMap();
|
|
1211
|
+
const cssWideColorKeywords = /* @__PURE__ */ new Set([
|
|
1212
|
+
"inherit",
|
|
1213
|
+
"initial",
|
|
1214
|
+
"unset",
|
|
1215
|
+
"revert",
|
|
1216
|
+
"revert-layer",
|
|
1217
|
+
"currentcolor",
|
|
1218
|
+
"transparent"
|
|
1219
|
+
]);
|
|
1198
1220
|
function configuredValue(state, property, raw, embedded = false) {
|
|
1199
1221
|
const grammar = getConfigRevisionState(state.conf);
|
|
1200
1222
|
let name = raw;
|
|
@@ -1267,8 +1289,75 @@ function configuredValue(state, property, raw, embedded = false) {
|
|
|
1267
1289
|
}
|
|
1268
1290
|
}
|
|
1269
1291
|
if (process.env.NODE_ENV === "development") {
|
|
1270
|
-
const category = grammar.tokenCategory(property);
|
|
1292
|
+
const category = grammar.tokenCategory(property) || grammar.tokenCategory(state.conf.shorthands[property] || property);
|
|
1271
1293
|
if (category && category !== "color" && state.conf.tokensParsed.color?.[name]) warnOnce(`"${name}" contributes to "color", not "${property}"`);
|
|
1294
|
+
if (!value && !fontProperty) {
|
|
1295
|
+
if (name.charCodeAt(0) === 36 || raw.charCodeAt(0) === 36) {
|
|
1296
|
+
const suggested = name.charCodeAt(0) === 36 ? name.slice(1) : raw.slice(1);
|
|
1297
|
+
warnOnce(`v2-token:${property}=${raw}`, `${property}="${raw}": v3 tokens have no "$" prefix, did you mean "${suggested}"?`);
|
|
1298
|
+
} else if ((category === "size" || category === "space" || category === "radius" || category === "zIndex") && /^-?\d+(?:\.\d+)?$/.test(name)) {
|
|
1299
|
+
let nearest;
|
|
1300
|
+
let minDistance = Infinity;
|
|
1301
|
+
const rawNum = Number(name);
|
|
1302
|
+
const tokens = category ? state.conf.tokensParsed[category] : void 0;
|
|
1303
|
+
if (tokens && Number.isFinite(rawNum)) for (const key in tokens) {
|
|
1304
|
+
const keyNum = Number(key);
|
|
1305
|
+
if (Number.isFinite(keyNum)) {
|
|
1306
|
+
const dist = Math.abs(keyNum - rawNum);
|
|
1307
|
+
if (dist < minDistance) {
|
|
1308
|
+
minDistance = dist;
|
|
1309
|
+
nearest = key;
|
|
1310
|
+
}
|
|
1311
|
+
} else {
|
|
1312
|
+
const val = tokens[key]?.val;
|
|
1313
|
+
const valNum = typeof val === "number" ? val : Number(val);
|
|
1314
|
+
if (Number.isFinite(valNum)) {
|
|
1315
|
+
const dist = Math.abs(valNum - rawNum);
|
|
1316
|
+
if (dist < minDistance) {
|
|
1317
|
+
minDistance = dist;
|
|
1318
|
+
nearest = key;
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
warnOnce(`numeric-token:${property}=${raw}`, `${property}="${raw}" was passed to CSS as-is with px units${nearest ? `; nearest token is "${nearest}"` : ""}`);
|
|
1324
|
+
} else if (category === "color" && /^[a-zA-Z0-9-]+$/.test(name) && /[a-zA-Z]/.test(name)) {
|
|
1325
|
+
const lower = name.toLowerCase();
|
|
1326
|
+
if (!namedCssColors.has(lower) && !cssWideColorKeywords.has(lower)) {
|
|
1327
|
+
const themeKeys = [];
|
|
1328
|
+
if (state.theme && typeof state.theme === "object") for (const k in state.theme) themeKeys.push(k);
|
|
1329
|
+
if (state.conf.themes) {
|
|
1330
|
+
const active = state.conf.themes[state.flatThemeName || ""];
|
|
1331
|
+
if (active) for (const k in active) themeKeys.push(k);
|
|
1332
|
+
else for (const t in state.conf.themes) for (const k in state.conf.themes[t]) themeKeys.push(k);
|
|
1333
|
+
}
|
|
1334
|
+
let bestMatch;
|
|
1335
|
+
let minDistance = 3;
|
|
1336
|
+
for (const key of themeKeys) {
|
|
1337
|
+
if (Math.abs(key.length - name.length) > 2) continue;
|
|
1338
|
+
const m = name.length;
|
|
1339
|
+
const n = key.length;
|
|
1340
|
+
const d = [];
|
|
1341
|
+
for (let i = 0; i <= m; i++) d[i] = i;
|
|
1342
|
+
for (let j = 1; j <= n; j++) {
|
|
1343
|
+
let prev = d[0];
|
|
1344
|
+
d[0] = j;
|
|
1345
|
+
for (let i = 1; i <= m; i++) {
|
|
1346
|
+
const temp = d[i];
|
|
1347
|
+
d[i] = name[i - 1] === key[j - 1] ? prev : Math.min(prev, d[i], d[i - 1]) + 1;
|
|
1348
|
+
prev = temp;
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
const dist = d[m];
|
|
1352
|
+
if (dist <= 2 && dist < minDistance) {
|
|
1353
|
+
minDistance = dist;
|
|
1354
|
+
bestMatch = key;
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
warnOnce(`unknown-color:${property}=${raw}`, bestMatch ? `unknown color "${name}", did you mean "${bestMatch}"?` : `unknown color "${name}"`);
|
|
1358
|
+
}
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1272
1361
|
}
|
|
1273
1362
|
let out = raw;
|
|
1274
1363
|
if (isVariable(value)) {
|
|
@@ -1473,6 +1562,11 @@ function walkConditionalValue(state, property, value, parent, sink, warnMode = 0
|
|
|
1473
1562
|
if (typeof value === "string") {
|
|
1474
1563
|
const parsed = getConfigRevisionState(state.conf).parseFlatValue(value);
|
|
1475
1564
|
const [segments, failure, failureIndex] = parsed;
|
|
1565
|
+
if (process.env.NODE_ENV === "development") {
|
|
1566
|
+
if (getSetting("styleValueSyntax") === "object") {
|
|
1567
|
+
if (segments.length > 5 || segments.length >= 5 && segments[2] !== -1 || value.includes(":")) warnOnce(`syntax:string:${property}=${value}`, `string syntax is disabled by config (styleValueSyntax: 'object'); received "${property}=${value}"`);
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1476
1570
|
let slices = parsedSlices.get(parsed);
|
|
1477
1571
|
if (slices === void 0) parsedSlices.set(parsed, slices = []);
|
|
1478
1572
|
const chainCount = segments.length / 5 - 1;
|
|
@@ -1518,6 +1612,9 @@ function walkConditionalValue(state, property, value, parent, sink, warnMode = 0
|
|
|
1518
1612
|
if (process.env.NODE_ENV !== "production") lastPayload = value.slice(lastPayloadStart);
|
|
1519
1613
|
} else {
|
|
1520
1614
|
if (!value || typeof value !== "object" || Array.isArray(value) || isVariable(value) || !classifyConditionalObject(value, state)) return false;
|
|
1615
|
+
if (process.env.NODE_ENV === "development") {
|
|
1616
|
+
if (getSetting("styleValueSyntax") === "string") warnOnce(`syntax:object:${property}=${JSON.stringify(value)}`, `object-form conditional syntax is disabled by config (styleValueSyntax: 'string'); received "${property}"`);
|
|
1617
|
+
}
|
|
1521
1618
|
if (value.default != null) {
|
|
1522
1619
|
emitConditionalValue(state, property, value.default, parentCondition, value.default, sink, warnMode, contextOnly);
|
|
1523
1620
|
hasBase = true;
|