@tamagui/static 1.0.1-beta.61 → 1.0.1-beta.62
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/extractor/createExtractor.js +31 -20
- package/dist/cjs/extractor/createExtractor.js.map +2 -2
- package/dist/cjs/extractor/extractMediaStyle.js +1 -1
- package/dist/cjs/extractor/extractMediaStyle.js.map +2 -2
- package/dist/esm/extractor/createExtractor.js +36 -23
- package/dist/esm/extractor/createExtractor.js.map +2 -2
- package/dist/esm/extractor/extractMediaStyle.js +1 -1
- package/dist/esm/extractor/extractMediaStyle.js.map +2 -2
- package/dist/jsx/extractor/createExtractor.js +36 -23
- package/dist/jsx/extractor/extractMediaStyle.js +1 -1
- package/package.json +7 -7
- package/src/extractor/createExtractor.ts +54 -25
- package/src/extractor/extractMediaStyle.ts +3 -1
- package/types/extractor/createExtractor.d.ts.map +1 -1
- package/types/extractor/extractMediaStyle.d.ts.map +1 -1
- package/types/extractor/extractToClassNames.d.ts.map +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/extractMediaStyle.ts"],
|
|
4
|
-
"sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { TamaguiInternalConfig, getStylesAtomic, mediaObjectToString } from '@tamagui/core-node'\nimport { ViewStyle } from 'react-native'\n\nimport { MEDIA_SEP } from '../constants'\nimport { StyleObject, Ternary } from '../types'\nimport { isInsideTamagui, isPresent } from './extractHelpers'\n\nexport function extractMediaStyle(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n tamaguiConfig: TamaguiInternalConfig,\n sourcePath: string,\n importance = 0,\n shouldPrintDebug: boolean | 'verbose' = false\n) {\n const mt = getMediaQueryTernary(ternary, jsxPath, sourcePath)\n if (!mt) {\n return null\n }\n const { key } = mt\n const mq = tamaguiConfig.media[key]\n if (!mq) {\n console.error(`Media query \"${key}\" not found: ${Object.keys(tamaguiConfig.media)}`)\n return null\n }\n const getStyleObj = (styleObj: ViewStyle | null, negate = false) => {\n return styleObj ? { styleObj, negate } : null\n }\n const styleOpts = [\n getStyleObj(ternary.consequent, false),\n getStyleObj(ternary.alternate, true),\n ].filter(isPresent)\n if (shouldPrintDebug && !styleOpts.length) {\n console.log(' media query, no styles?')\n return null\n }\n // for now order first strongest\n const mediaKeys = Object.keys(tamaguiConfig.media)\n const mediaKeyPrecendence = mediaKeys.reduce((acc, cur, i) => {\n acc[cur] = new Array(importance + 1).fill(':root').join('')\n return acc\n }, {})\n let mediaStyles: StyleObject[] = []\n for (const { styleObj, negate } of styleOpts) {\n const styles = getStylesAtomic(styleObj)\n const singleMediaStyles = styles.map((style) => {\n const negKey = negate ? '0' : ''\n const ogPrefix = style.identifier.slice(0, style.identifier.indexOf('-') + 1)\n // adds an extra separator before and after to detect later in concatClassName\n // so it goes from: \"_f-[hash]\"\n // to: \"_f-_sm0_[hash]\" or \"_f-_sm_[hash]\"\n const identifier = `${style.identifier.replace(\n ogPrefix,\n `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`\n )}`\n const className = `.${identifier}`\n const mediaSelector = mediaObjectToString(tamaguiConfig.media[key])\n const screenStr = negate ? 'not all' : 'screen'\n const mediaQuery = `${screenStr} and ${mediaSelector}`\n const precendencePrefix = mediaKeyPrecendence[key]\n const styleInner = style.rules
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,QAAmB;AACnB,uBAA4E;AAG5E,uBAA0B;AAE1B,4BAA2C;AAEpC,2BACL,SACA,SACA,eACA,YACA,aAAa,GACb,mBAAwC,OACxC;AACA,QAAM,KAAK,qBAAqB,SAAS,SAAS,UAAU;AAC5D,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,EACT;AACA,QAAM,EAAE,QAAQ;AAChB,QAAM,KAAK,cAAc,MAAM;AAC/B,MAAI,CAAC,IAAI;AACP,YAAQ,MAAM,gBAAgB,mBAAmB,OAAO,KAAK,cAAc,KAAK,GAAG;AACnF,WAAO;AAAA,EACT;AACA,QAAM,cAAc,wBAAC,UAA4B,SAAS,UAAU;AAClE,WAAO,WAAW,EAAE,UAAU,OAAO,IAAI;AAAA,EAC3C,GAFoB;AAGpB,QAAM,YAAY;AAAA,IAChB,YAAY,QAAQ,YAAY,KAAK;AAAA,IACrC,YAAY,QAAQ,WAAW,IAAI;AAAA,EACrC,EAAE,OAAO,+BAAS;AAClB,MAAI,oBAAoB,CAAC,UAAU,QAAQ;AACzC,YAAQ,IAAI,2BAA2B;AACvC,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,OAAO,KAAK,cAAc,KAAK;AACjD,QAAM,sBAAsB,UAAU,OAAO,CAAC,KAAK,KAAK,MAAM;AAC5D,QAAI,OAAO,IAAI,MAAM,aAAa,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,EAAE;AAC1D,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,MAAI,cAA6B,CAAC;AAClC,aAAW,EAAE,UAAU,YAAY,WAAW;AAC5C,UAAM,SAAS,sCAAgB,QAAQ;AACvC,UAAM,oBAAoB,OAAO,IAAI,CAAC,UAAU;AAC9C,YAAM,SAAS,SAAS,MAAM;AAC9B,YAAM,WAAW,MAAM,WAAW,MAAM,GAAG,MAAM,WAAW,QAAQ,GAAG,IAAI,CAAC;AAI5E,YAAM,aAAa,GAAG,MAAM,WAAW,QACrC,UACA,GAAG,WAAW,6BAAY,MAAM,SAAS,4BAC3C;AACA,YAAM,YAAY,IAAI;AACtB,YAAM,gBAAgB,0CAAoB,cAAc,MAAM,IAAI;AAClE,YAAM,YAAY,SAAS,YAAY;AACvC,YAAM,aAAa,GAAG,iBAAiB;AACvC,YAAM,oBAAoB,oBAAoB;AAC9C,YAAM,aAAa,MAAM,
|
|
4
|
+
"sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { TamaguiInternalConfig, getStylesAtomic, mediaObjectToString } from '@tamagui/core-node'\nimport { ViewStyle } from 'react-native'\n\nimport { MEDIA_SEP } from '../constants'\nimport { StyleObject, Ternary } from '../types'\nimport { isInsideTamagui, isPresent } from './extractHelpers'\n\nexport function extractMediaStyle(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n tamaguiConfig: TamaguiInternalConfig,\n sourcePath: string,\n importance = 0,\n shouldPrintDebug: boolean | 'verbose' = false\n) {\n const mt = getMediaQueryTernary(ternary, jsxPath, sourcePath)\n if (!mt) {\n return null\n }\n const { key } = mt\n const mq = tamaguiConfig.media[key]\n if (!mq) {\n console.error(`Media query \"${key}\" not found: ${Object.keys(tamaguiConfig.media)}`)\n return null\n }\n const getStyleObj = (styleObj: ViewStyle | null, negate = false) => {\n return styleObj ? { styleObj, negate } : null\n }\n const styleOpts = [\n getStyleObj(ternary.consequent, false),\n getStyleObj(ternary.alternate, true),\n ].filter(isPresent)\n if (shouldPrintDebug && !styleOpts.length) {\n console.log(' media query, no styles?')\n return null\n }\n // for now order first strongest\n const mediaKeys = Object.keys(tamaguiConfig.media)\n const mediaKeyPrecendence = mediaKeys.reduce((acc, cur, i) => {\n acc[cur] = new Array(importance + 1).fill(':root').join('')\n return acc\n }, {})\n let mediaStyles: StyleObject[] = []\n for (const { styleObj, negate } of styleOpts) {\n const styles = getStylesAtomic(styleObj)\n const singleMediaStyles = styles.map((style) => {\n const negKey = negate ? '0' : ''\n const ogPrefix = style.identifier.slice(0, style.identifier.indexOf('-') + 1)\n // adds an extra separator before and after to detect later in concatClassName\n // so it goes from: \"_f-[hash]\"\n // to: \"_f-_sm0_[hash]\" or \"_f-_sm_[hash]\"\n const identifier = `${style.identifier.replace(\n ogPrefix,\n `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`\n )}`\n const className = `.${identifier}`\n const mediaSelector = mediaObjectToString(tamaguiConfig.media[key])\n const screenStr = negate ? 'not all' : 'screen'\n const mediaQuery = `${screenStr} and ${mediaSelector}`\n const precendencePrefix = mediaKeyPrecendence[key]\n const styleInner = style.rules\n .map((rule) => rule.replace(style.identifier, identifier))\n .join(';')\n // combines media queries if they already exist\n let styleRule = ''\n if (styleInner.includes('@media')) {\n // combine\n styleRule = styleInner.replace('{', ` and ${mediaQuery} {`)\n } else {\n styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`\n }\n return {\n ...style,\n identifier,\n className,\n rules: [styleRule],\n }\n })\n if (shouldPrintDebug === 'verbose') {\n // prettier-ignore\n console.log(' media styles:', importance, styleObj, singleMediaStyles.map(x => x.identifier).join(', '))\n }\n // add to output\n mediaStyles = [...mediaStyles, ...singleMediaStyles]\n }\n // filter out\n ternary.remove()\n return { mediaStyles, ternaryWithoutMedia: mt.ternaryWithoutMedia }\n}\n\nfunction getMediaQueryTernary(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string\n): null | {\n key: string\n bindingName: string\n ternaryWithoutMedia: Ternary | null\n} {\n // this handles unwrapping logical && media query ternarys\n // first, unwrap if it has media logicalExpression\n if (t.isLogicalExpression(ternary.test) && ternary.test.operator === '&&') {\n // *should* be normalized to always be on left side\n const mediaLeft = getMediaInfoFromExpression(\n ternary.test.left,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (mediaLeft) {\n return {\n ...mediaLeft,\n ternaryWithoutMedia: {\n ...ternary,\n test: ternary.test.right,\n },\n }\n }\n }\n // const media = useMedia()\n // ... media.sm\n const result = getMediaInfoFromExpression(\n ternary.test,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (result) {\n return {\n ...result,\n ternaryWithoutMedia: null,\n }\n }\n return null\n}\n\nfunction getMediaInfoFromExpression(\n test: t.Expression,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string,\n inlineMediaQuery?: string\n) {\n if (inlineMediaQuery) {\n return {\n key: inlineMediaQuery,\n bindingName: inlineMediaQuery,\n }\n }\n if (t.isMemberExpression(test) && t.isIdentifier(test.object) && t.isIdentifier(test.property)) {\n const name = test.object['name']\n const key = test.property['name']\n const bindings = jsxPath.scope.getAllBindings()\n const binding = bindings[name]\n if (!binding) return false\n const bindingNode = binding.path?.node\n if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init) return false\n if (!isValidMediaCall(jsxPath, bindingNode.init, sourcePath)) return false\n return { key, bindingName: name }\n }\n if (t.isIdentifier(test)) {\n const key = test.name\n const node = jsxPath.scope.getBinding(test.name)?.path?.node\n if (!t.isVariableDeclarator(node)) return false\n if (!node.init || !isValidMediaCall(jsxPath, node.init, sourcePath)) return false\n return { key, bindingName: key }\n }\n return null\n}\n\nexport function isValidMediaCall(\n jsxPath: NodePath<t.JSXElement>,\n init: t.Expression,\n sourcePath: string\n) {\n if (!t.isCallExpression(init)) return false\n if (!t.isIdentifier(init.callee)) return false\n // TODO could support renaming useMedia by looking up import first\n if (init.callee.name !== 'useMedia') return false\n const bindings = jsxPath.scope.getAllBindings()\n const mediaBinding = bindings['useMedia']\n if (!mediaBinding) return false\n const useMediaImport = mediaBinding.path.parent\n if (!t.isImportDeclaration(useMediaImport)) return false\n if (useMediaImport.source.value !== 'tamagui') {\n if (!isInsideTamagui(sourcePath)) {\n return false\n }\n }\n return true\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,6 +4,7 @@ import { relative } from "path";
|
|
|
4
4
|
import traverse from "@babel/traverse";
|
|
5
5
|
import * as t from "@babel/types";
|
|
6
6
|
import {
|
|
7
|
+
expandStyles,
|
|
7
8
|
getSplitStyles,
|
|
8
9
|
mediaQueryConfig,
|
|
9
10
|
normalizeStyleObject,
|
|
@@ -342,7 +343,7 @@ function createExtractor() {
|
|
|
342
343
|
let keys = [name];
|
|
343
344
|
let out = null;
|
|
344
345
|
if (staticConfig.propMapper) {
|
|
345
|
-
out = staticConfig.propMapper(name, styleValue, defaultTheme, staticConfig.defaultProps, { resolveVariablesAs: "auto" });
|
|
346
|
+
out = staticConfig.propMapper(name, styleValue, defaultTheme, staticConfig.defaultProps, { resolveVariablesAs: "auto" }, void 0, shouldPrintDebug);
|
|
346
347
|
if (out) {
|
|
347
348
|
if (!Array.isArray(out)) {
|
|
348
349
|
console.warn(`Error expected array but got`, out);
|
|
@@ -371,7 +372,7 @@ function createExtractor() {
|
|
|
371
372
|
attr: path.node
|
|
372
373
|
};
|
|
373
374
|
}
|
|
374
|
-
if (validHTMLAttributes[key]) {
|
|
375
|
+
if (validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-")) {
|
|
375
376
|
return attr;
|
|
376
377
|
}
|
|
377
378
|
if (shouldPrintDebug) {
|
|
@@ -994,35 +995,47 @@ function createExtractor() {
|
|
|
994
995
|
press: false,
|
|
995
996
|
pressIn: false
|
|
996
997
|
};
|
|
997
|
-
|
|
998
|
-
|
|
998
|
+
let foundStaticProps = {};
|
|
999
|
+
for (const key in attrs) {
|
|
1000
|
+
const cur = attrs[key];
|
|
999
1001
|
if (cur.type === "style") {
|
|
1000
1002
|
normalizeStyleObject(cur.value);
|
|
1001
|
-
|
|
1003
|
+
foundStaticProps = {
|
|
1004
|
+
...foundStaticProps,
|
|
1005
|
+
...expandStyles(cur.value)
|
|
1006
|
+
};
|
|
1007
|
+
continue;
|
|
1002
1008
|
}
|
|
1003
1009
|
if (cur.type === "attr") {
|
|
1004
1010
|
if (t.isJSXSpreadAttribute(cur.value)) {
|
|
1005
|
-
|
|
1011
|
+
continue;
|
|
1006
1012
|
}
|
|
1007
1013
|
if (!t.isJSXIdentifier(cur.value.name)) {
|
|
1008
|
-
|
|
1014
|
+
continue;
|
|
1009
1015
|
}
|
|
1010
|
-
const
|
|
1016
|
+
const key2 = cur.value.name.name;
|
|
1011
1017
|
const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true));
|
|
1012
|
-
if (value
|
|
1013
|
-
|
|
1018
|
+
if (value !== FAILED_EVAL) {
|
|
1019
|
+
foundStaticProps = {
|
|
1020
|
+
...foundStaticProps,
|
|
1021
|
+
[key2]: value
|
|
1022
|
+
};
|
|
1014
1023
|
}
|
|
1015
|
-
acc[key] = value;
|
|
1016
1024
|
}
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1025
|
+
}
|
|
1026
|
+
const completeProps = {};
|
|
1027
|
+
for (const key in staticConfig.defaultProps) {
|
|
1028
|
+
if (!(key in foundStaticProps)) {
|
|
1029
|
+
completeProps[key] = staticConfig.defaultProps[key];
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
for (const key in foundStaticProps) {
|
|
1033
|
+
completeProps[key] = foundStaticProps[key];
|
|
1034
|
+
}
|
|
1023
1035
|
if (shouldPrintDebug) {
|
|
1024
1036
|
console.log(" - attrs (combined \u{1F500}): \n", logLines(attrs.map(attrStr).join(", ")));
|
|
1025
1037
|
console.log(" - defaultProps: \n", logLines(objToStr(staticConfig.defaultProps)));
|
|
1038
|
+
console.log(" - foundStaticProps: \n", logLines(objToStr(foundStaticProps)));
|
|
1026
1039
|
console.log(" - completeProps: \n", logLines(objToStr(completeProps)));
|
|
1027
1040
|
}
|
|
1028
1041
|
const getStyles = /* @__PURE__ */ __name((props2, debugName = "") => {
|
|
@@ -1044,7 +1057,7 @@ function createExtractor() {
|
|
|
1044
1057
|
const out = getSplitStyles(props2, staticConfig, defaultTheme, {
|
|
1045
1058
|
...state,
|
|
1046
1059
|
fallbackProps: completeProps
|
|
1047
|
-
});
|
|
1060
|
+
}, void 0, props2["debug"]);
|
|
1048
1061
|
const outStyle = {
|
|
1049
1062
|
...out.style,
|
|
1050
1063
|
...out.pseudos
|
|
@@ -1068,7 +1081,7 @@ function createExtractor() {
|
|
|
1068
1081
|
if (!completeStyles) {
|
|
1069
1082
|
throw new Error(`Impossible, no styles`);
|
|
1070
1083
|
}
|
|
1071
|
-
const addInitialStyleKeys = shouldFlatten ? difference(Object.keys(completeStyles), Object.keys(
|
|
1084
|
+
const addInitialStyleKeys = shouldFlatten ? difference(Object.keys(completeStyles), Object.keys(foundStaticProps)) : [];
|
|
1072
1085
|
if (addInitialStyleKeys.length) {
|
|
1073
1086
|
const toAdd = pick(completeStyles, ...addInitialStyleKeys);
|
|
1074
1087
|
const firstGroup = attrs.find((x) => x.type === "style");
|
|
@@ -1084,14 +1097,11 @@ function createExtractor() {
|
|
|
1084
1097
|
}
|
|
1085
1098
|
if (shouldPrintDebug) {
|
|
1086
1099
|
console.log(" -- addInitialStyleKeys", addInitialStyleKeys.join(", "), { shouldFlatten });
|
|
1087
|
-
console.log(" -- completeStaticProps:\n", logLines(objToStr(completeStaticProps)));
|
|
1088
1100
|
console.log(" -- completeStyles:\n", logLines(objToStr(completeStyles)));
|
|
1089
1101
|
}
|
|
1090
1102
|
let getStyleError = null;
|
|
1091
1103
|
for (const attr of attrs) {
|
|
1092
1104
|
try {
|
|
1093
|
-
if (shouldPrintDebug)
|
|
1094
|
-
console.log(" *", attrStr(attr));
|
|
1095
1105
|
switch (attr.type) {
|
|
1096
1106
|
case "ternary":
|
|
1097
1107
|
const a = getStyles(attr.value.alternate, "ternary.alternate");
|
|
@@ -1105,7 +1115,7 @@ function createExtractor() {
|
|
|
1105
1115
|
continue;
|
|
1106
1116
|
case "style":
|
|
1107
1117
|
if (shouldPrintDebug)
|
|
1108
|
-
console.log(" * styles in",
|
|
1118
|
+
console.log(" * styles in", attr.value);
|
|
1109
1119
|
const styles = getStyles(attr.value, "style");
|
|
1110
1120
|
if (shouldPrintDebug)
|
|
1111
1121
|
console.log(" * styles out", logLines(objToStr(styles)));
|
|
@@ -1118,6 +1128,9 @@ function createExtractor() {
|
|
|
1118
1128
|
getStyleError = err;
|
|
1119
1129
|
}
|
|
1120
1130
|
}
|
|
1131
|
+
if (shouldPrintDebug) {
|
|
1132
|
+
console.log(" - attrs (ternaries/combined):\n", logLines(attrs.map(attrStr).join(", ")));
|
|
1133
|
+
}
|
|
1121
1134
|
tm.mark("jsx-element-styles", shouldPrintDebug === "verbose");
|
|
1122
1135
|
if (getStyleError) {
|
|
1123
1136
|
console.log(" \u26A0\uFE0F postprocessing error, deopt", getStyleError);
|