@tamagui/static 1.0.1-beta.60 → 1.0.1-beta.63
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/createEvaluator.js +6 -1
- package/dist/cjs/extractor/createEvaluator.js.map +2 -2
- package/dist/cjs/extractor/createExtractor.js +32 -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/cjs/extractor/extractToClassNames.js +1 -1
- package/dist/cjs/extractor/extractToClassNames.js.map +2 -2
- package/dist/esm/extractor/createEvaluator.js +6 -1
- package/dist/esm/extractor/createEvaluator.js.map +2 -2
- package/dist/esm/extractor/createExtractor.js +37 -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/esm/extractor/extractToClassNames.js +1 -1
- package/dist/esm/extractor/extractToClassNames.js.map +2 -2
- package/dist/jsx/extractor/createEvaluator.js +6 -1
- package/dist/jsx/extractor/createExtractor.js +37 -23
- package/dist/jsx/extractor/extractMediaStyle.js +1 -1
- package/dist/jsx/extractor/extractToClassNames.js +1 -1
- package/package.json +7 -7
- package/src/extractor/createEvaluator.ts +9 -4
- package/src/extractor/createExtractor.ts +56 -25
- package/src/extractor/extractMediaStyle.ts +3 -1
- package/src/extractor/extractToClassNames.ts +1 -30
- package/types/extractor/createEvaluator.d.ts.map +1 -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/extractToClassNames.ts"],
|
|
4
|
-
"sourcesContent": ["import * as path from 'path'\nimport { basename } from 'path'\nimport * as util from 'util'\n\nimport generate from '@babel/generator'\nimport * as t from '@babel/types'\nimport { getStylesAtomic } from '@tamagui/core-node'\nimport { concatClassName } from '@tamagui/helpers'\nimport invariant from 'invariant'\nimport { ViewStyle } from 'react-native'\nimport { LoaderContext } from 'webpack'\n\nimport { CONCAT_CLASSNAME_IMPORT } from '../constants'\nimport { ClassNameObject, StyleObject, TamaguiOptions, Ternary } from '../types'\nimport { babelParse } from './babelParse'\nimport { buildClassName } from './buildClassName'\nimport { Extractor } from './createExtractor'\nimport { ensureImportingConcat } from './ensureImportingConcat'\nimport { isSimpleSpread } from './extractHelpers'\nimport { extractMediaStyle } from './extractMediaStyle'\nimport { getPrefixLogs } from './getPrefixLogs'\nimport { hoistClassNames } from './hoistClassNames'\nimport { literalToAst } from './literalToAst'\nimport { logLines } from './logLines'\nimport { timer } from './timer'\n\nconst mergeStyleGroups = {\n shadowOpacity: true,\n shadowRadius: true,\n shadowColor: true,\n shadowOffset: true,\n}\n\nexport type ExtractedResponse = {\n js: string | Buffer\n styles: string\n stylesPath?: string\n ast: t.File\n map: any // RawSourceMap from 'source-map'\n}\n\nexport function extractToClassNames({\n loader,\n extractor,\n source,\n sourcePath,\n options,\n shouldPrintDebug,\n cssLoaderPath,\n threaded,\n cssPath,\n}: {\n loader: LoaderContext<any>\n cssLoaderPath: string\n extractor: Extractor\n source: string | Buffer\n sourcePath: string\n options: TamaguiOptions\n shouldPrintDebug: boolean | 'verbose'\n cssPath: string\n threaded?: boolean\n}): ExtractedResponse | null {\n const tm = timer()\n\n if (typeof source !== 'string') {\n throw new Error('`source` must be a string of javascript')\n }\n invariant(\n typeof sourcePath === 'string' && path.isAbsolute(sourcePath),\n '`sourcePath` must be an absolute path to a .js file'\n )\n\n const shouldLogTiming = options.logTimings ?? true\n const start = Date.now()\n const mem = shouldLogTiming ? process.memoryUsage() : null\n\n // Using a map for (officially supported) guaranteed insertion order\n let ast: t.File\n\n try {\n // @ts-ignore\n ast = babelParse(source)\n } catch (err) {\n console.error('babel parse error:', sourcePath)\n throw err\n }\n\n tm.mark(`babel-parse`, shouldPrintDebug === 'verbose')\n\n const cssMap = new Map<string, { css: string; commentTexts: string[] }>()\n const existingHoists: { [key: string]: t.Identifier } = {}\n\n let hasFlattened = false\n\n const res = extractor.parse(ast, {\n sourcePath,\n shouldPrintDebug,\n ...options,\n target: 'html',\n getFlattenedNode: ({ tag }) => {\n hasFlattened = true\n return tag\n },\n onExtractTag: ({\n attrs,\n node,\n attemptEval,\n jsxPath,\n originalNodeName,\n filePath,\n lineNumbers,\n programPath,\n isFlattened,\n }) => {\n let finalClassNames: ClassNameObject[] = []\n let finalAttrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = []\n let finalStyles: StyleObject[] = []\n\n let viewStyles = {}\n for (const attr of attrs) {\n if (attr.type === 'style') {\n viewStyles = {\n ...viewStyles,\n ...attr.value,\n }\n }\n }\n\n const ensureNeededPrevStyle = (style: ViewStyle) => {\n // ensure all group keys are merged\n const keys = Object.keys(style)\n if (!keys.some((key) => mergeStyleGroups[key])) {\n return style\n }\n for (const k in mergeStyleGroups) {\n if (k in viewStyles) {\n style[k] = style[k] ?? viewStyles[k]\n }\n }\n return style\n }\n\n const addStyles = (style: ViewStyle | null): StyleObject[] => {\n if (!style) return []\n const styleWithPrev = ensureNeededPrevStyle(style)\n const res = getStylesAtomic(styleWithPrev)\n if (res.length) {\n finalStyles = [...finalStyles, ...res]\n }\n return res\n }\n\n // 1 to start above any :hover styles\n let lastMediaImportance = 1\n for (const attr of attrs) {\n switch (attr.type) {\n case 'style':\n if (!isFlattened) {\n // only ever one at a time i believe so we can be lazy with this access\n const { hoverStyle, pressStyle, focusStyle } = attr.value\n const pseudos = [\n ['hoverStyle', hoverStyle],\n ['pressStyle', pressStyle],\n ['focusStyle', focusStyle],\n ] as const\n\n const styles = getStylesAtomic(attr.value, {\n splitTransforms: true,\n })\n finalStyles = [...finalStyles, ...styles]\n\n for (const [key, value] of pseudos) {\n if (value && Object.keys(value).length) {\n finalAttrs.push(\n t.jsxAttribute(\n t.jsxIdentifier(key),\n t.jsxExpressionContainer(literalToAst(value))\n )\n )\n }\n }\n\n for (const style of styles) {\n if (style.pseudo) {\n continue\n }\n // leave them as attributes\n finalAttrs.push(\n t.jsxAttribute(t.jsxIdentifier(style.property), t.stringLiteral(style.identifier))\n )\n }\n\n // for (const key in attr.value) {\n // if (pseudos.some((x) => x[0] === key)) {\n // // we handled pseudos above...\n // continue\n // }\n // // leave them as attributes\n // finalAttrs.push(\n // t.jsxAttribute(t.jsxIdentifier(key), t.stringLiteral(attr.value[key]))\n // )\n // }\n } else {\n const styles = addStyles(attr.value)\n const newClassNames = concatClassName(styles.map((x) => x.identifier).join(' '))\n const existing = finalClassNames.find(\n (x) => x.type == 'StringLiteral'\n ) as t.StringLiteral | null\n\n // const newClassNames = concatClassName(Object.values(attr.value))\n // const existing = finalClassNames.find(\n // (x) => x.type == 'StringLiteral'\n // ) as t.StringLiteral | null\n\n if (existing) {\n existing.value = `${existing.value} ${newClassNames}`\n } else {\n finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)]\n }\n }\n\n break\n case 'attr':\n const val = attr.value\n if (t.isJSXSpreadAttribute(val)) {\n if (isSimpleSpread(val)) {\n finalClassNames.push(\n t.logicalExpression(\n '&&',\n val.argument,\n t.memberExpression(val.argument, t.identifier('className'))\n )\n )\n }\n } else if (val.name.name === 'className') {\n const value = val.value\n if (value) {\n try {\n const evaluatedValue = attemptEval(value)\n finalClassNames.push(t.stringLiteral(evaluatedValue))\n } catch (e) {\n finalClassNames.push(value['expression'])\n }\n }\n continue\n }\n finalAttrs.push(val)\n break\n case 'ternary':\n const mediaExtraction = extractMediaStyle(\n attr.value,\n jsxPath,\n extractor.getTamagui(),\n sourcePath,\n lastMediaImportance,\n shouldPrintDebug\n )\n if (shouldPrintDebug) {\n if (mediaExtraction) {\n // prettier-ignore\n console.log('ternary (mediaStyles)', mediaExtraction.ternaryWithoutMedia?.inlineMediaQuery ?? '', mediaExtraction.mediaStyles.map((x) => x.identifier).join('.'))\n }\n }\n if (!mediaExtraction) {\n addTernaryStyle(\n attr.value,\n addStyles(attr.value.consequent),\n addStyles(attr.value.alternate)\n )\n continue\n }\n lastMediaImportance++\n if (mediaExtraction.mediaStyles) {\n finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles]\n }\n if (mediaExtraction.ternaryWithoutMedia) {\n addTernaryStyle(mediaExtraction.ternaryWithoutMedia, mediaExtraction.mediaStyles, [])\n } else {\n finalClassNames = [\n ...finalClassNames,\n ...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier)),\n ]\n }\n break\n }\n }\n\n function addTernaryStyle(ternary: Ternary, a: any, b: any) {\n const cCN = a.map((x) => x.identifier).join(' ')\n const aCN = b.map((x) => x.identifier).join(' ')\n if (a.length && b.length) {\n finalClassNames.push(\n t.conditionalExpression(ternary.test, t.stringLiteral(cCN), t.stringLiteral(aCN))\n )\n } else {\n finalClassNames.push(\n t.conditionalExpression(\n ternary.test,\n t.stringLiteral(' ' + cCN),\n t.stringLiteral(' ' + aCN)\n )\n )\n }\n }\n\n if (shouldPrintDebug) {\n // prettier-ignore\n console.log(' finalClassNames\\n', logLines(finalClassNames.map(x => x['value']).join(' ')))\n }\n\n node.attributes = finalAttrs\n\n if (finalClassNames.length) {\n // inserts the _cn variable and uses it for className\n let names = buildClassName(finalClassNames)\n if (t.isStringLiteral(names)) {\n names.value = concatClassName(names.value)\n }\n const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null\n let expr = nameExpr\n\n // if has some spreads, use concat helper\n if (nameExpr && !t.isIdentifier(nameExpr)) {\n if (!hasFlattened) {\n // not flat\n } else {\n ensureImportingConcat(programPath)\n const simpleSpreads = attrs.filter(\n (x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value)\n )\n expr = t.callExpression(t.identifier(CONCAT_CLASSNAME_IMPORT), [\n expr,\n ...simpleSpreads.map((val) => val.value['argument']),\n ])\n }\n }\n\n node.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('className'), t.jsxExpressionContainer(expr))\n )\n }\n\n const comment = util.format('/* %s:%s (%s) */', filePath, lineNumbers, originalNodeName)\n\n for (const { className, rules, identifier, value } of finalStyles) {\n // console.log('backvalue', identifier, value)\n // ast.program.body.unshift(\n // t.expressionStatement(\n // t.callExpression(\n // t.memberExpression(\n // t.callExpression(t.identifier('require'), [t.stringLiteral('@tamagui/core')]),\n // t.identifier('setIdentifierValue')\n // ),\n // [t.stringLiteral(identifier), t.stringLiteral(value)]\n // )\n // )\n // )\n\n if (cssMap.has(className)) {\n if (comment) {\n const val = cssMap.get(className)!\n val.commentTexts.push(comment)\n cssMap.set(className, val)\n }\n } else if (rules.length) {\n if (rules.length > 1) {\n console.log(' rules error', { rules })\n throw new Error(`Shouldn't have more than one rule`)\n }\n cssMap.set(className, {\n css: rules[0],\n commentTexts: [comment],\n })\n }\n }\n },\n })\n\n if (!res || (!res.modified && !res.optimized && !res.flattened)) {\n if (shouldPrintDebug) {\n console.log('no res or none modified', res)\n }\n return null\n }\n\n const styles = Array.from(cssMap.values())\n .map((x) => x.css)\n .join('\\n')\n .trim()\n\n if (styles) {\n const cssQuery = threaded\n ? `cssData=${Buffer.from(styles).toString('base64')}`\n : `cssPath=${cssPath}`\n const remReq = loader.remainingRequest\n const importPath = `${cssPath}!=!${cssLoaderPath}?${cssQuery}!${remReq}`\n ast.program.body.unshift(t.importDeclaration([], t.stringLiteral(importPath)))\n }\n\n const result = generate(\n ast,\n {\n concise: false,\n filename: sourcePath,\n // this makes the debug output terrible, and i think sourcemap works already\n retainLines: false,\n sourceFileName: sourcePath,\n sourceMaps: true,\n },\n source\n )\n\n if (shouldPrintDebug) {\n console.log(\n '\\n -------- output code ------- \\n\\n',\n result.code\n .split('\\n')\n .filter((x) => !x.startsWith('//'))\n .join('\\n')\n )\n console.log('\\n -------- output style -------- \\n\\n', styles)\n }\n\n if (shouldLogTiming) {\n const memUsed = mem\n ? Math.round(((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204) * 10) / 10\n : 0\n const path = basename(sourcePath)\n .replace(/\\.[jt]sx?$/, '')\n .slice(0, 22)\n .trim()\n .padStart(24)\n const numOptimized = `${res.optimized}`.padStart(3)\n const numFound = `${res.found}`.padStart(3)\n const numFlattened = `${res.flattened}`.padStart(3)\n const memory = process.env.DEBUG && memUsed > 10 ? ` ${memUsed}MB` : ''\n const timing = Date.now() - start\n const timingWarning = timing > 50 ? '\u26A0\uFE0F' : timing > 150 ? '\u2622\uFE0F' : ''\n const timingStr = `${timing}ms${timingWarning}`.padStart(6)\n console.log(\n `${getPrefixLogs(\n options\n )} ${path} ${numFound} \u00B7 ${numOptimized} \u00B7 ${numFlattened} ${timingStr} ${\n memory ? `(${memory})` : ''\n }`\n )\n }\n\n return {\n ast,\n styles,\n js: result.code,\n map: result.map,\n }\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import * as path from 'path'\nimport { basename } from 'path'\nimport * as util from 'util'\n\nimport generate from '@babel/generator'\nimport * as t from '@babel/types'\nimport { getStylesAtomic } from '@tamagui/core-node'\nimport { concatClassName } from '@tamagui/helpers'\nimport invariant from 'invariant'\nimport { ViewStyle } from 'react-native'\nimport { LoaderContext } from 'webpack'\n\nimport { CONCAT_CLASSNAME_IMPORT } from '../constants'\nimport { ClassNameObject, StyleObject, TamaguiOptions, Ternary } from '../types'\nimport { babelParse } from './babelParse'\nimport { buildClassName } from './buildClassName'\nimport { Extractor } from './createExtractor'\nimport { ensureImportingConcat } from './ensureImportingConcat'\nimport { isSimpleSpread } from './extractHelpers'\nimport { extractMediaStyle } from './extractMediaStyle'\nimport { getPrefixLogs } from './getPrefixLogs'\nimport { hoistClassNames } from './hoistClassNames'\nimport { literalToAst } from './literalToAst'\nimport { logLines } from './logLines'\nimport { timer } from './timer'\n\nconst mergeStyleGroups = {\n shadowOpacity: true,\n shadowRadius: true,\n shadowColor: true,\n shadowOffset: true,\n}\n\nexport type ExtractedResponse = {\n js: string | Buffer\n styles: string\n stylesPath?: string\n ast: t.File\n map: any // RawSourceMap from 'source-map'\n}\n\nexport function extractToClassNames({\n loader,\n extractor,\n source,\n sourcePath,\n options,\n shouldPrintDebug,\n cssLoaderPath,\n threaded,\n cssPath,\n}: {\n loader: LoaderContext<any>\n cssLoaderPath: string\n extractor: Extractor\n source: string | Buffer\n sourcePath: string\n options: TamaguiOptions\n shouldPrintDebug: boolean | 'verbose'\n cssPath: string\n threaded?: boolean\n}): ExtractedResponse | null {\n const tm = timer()\n\n if (typeof source !== 'string') {\n throw new Error('`source` must be a string of javascript')\n }\n invariant(\n typeof sourcePath === 'string' && path.isAbsolute(sourcePath),\n '`sourcePath` must be an absolute path to a .js file'\n )\n\n const shouldLogTiming = options.logTimings ?? true\n const start = Date.now()\n const mem = shouldLogTiming ? process.memoryUsage() : null\n\n // Using a map for (officially supported) guaranteed insertion order\n let ast: t.File\n\n try {\n // @ts-ignore\n ast = babelParse(source)\n } catch (err) {\n console.error('babel parse error:', sourcePath)\n throw err\n }\n\n tm.mark(`babel-parse`, shouldPrintDebug === 'verbose')\n\n const cssMap = new Map<string, { css: string; commentTexts: string[] }>()\n const existingHoists: { [key: string]: t.Identifier } = {}\n\n let hasFlattened = false\n\n const res = extractor.parse(ast, {\n sourcePath,\n shouldPrintDebug,\n ...options,\n target: 'html',\n getFlattenedNode: ({ tag }) => {\n hasFlattened = true\n return tag\n },\n onExtractTag: ({\n attrs,\n node,\n attemptEval,\n jsxPath,\n originalNodeName,\n filePath,\n lineNumbers,\n programPath,\n isFlattened,\n }) => {\n let finalClassNames: ClassNameObject[] = []\n let finalAttrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = []\n let finalStyles: StyleObject[] = []\n\n let viewStyles = {}\n for (const attr of attrs) {\n if (attr.type === 'style') {\n viewStyles = {\n ...viewStyles,\n ...attr.value,\n }\n }\n }\n\n const ensureNeededPrevStyle = (style: ViewStyle) => {\n // ensure all group keys are merged\n const keys = Object.keys(style)\n if (!keys.some((key) => mergeStyleGroups[key])) {\n return style\n }\n for (const k in mergeStyleGroups) {\n if (k in viewStyles) {\n style[k] = style[k] ?? viewStyles[k]\n }\n }\n return style\n }\n\n const addStyles = (style: ViewStyle | null): StyleObject[] => {\n if (!style) return []\n const styleWithPrev = ensureNeededPrevStyle(style)\n const res = getStylesAtomic(styleWithPrev)\n if (res.length) {\n finalStyles = [...finalStyles, ...res]\n }\n return res\n }\n\n // 1 to start above any :hover styles\n let lastMediaImportance = 1\n for (const attr of attrs) {\n switch (attr.type) {\n case 'style':\n if (!isFlattened) {\n // only ever one at a time i believe so we can be lazy with this access\n const { hoverStyle, pressStyle, focusStyle } = attr.value\n const pseudos = [\n ['hoverStyle', hoverStyle],\n ['pressStyle', pressStyle],\n ['focusStyle', focusStyle],\n ] as const\n\n const styles = getStylesAtomic(attr.value, {\n splitTransforms: true,\n })\n finalStyles = [...finalStyles, ...styles]\n\n for (const [key, value] of pseudos) {\n if (value && Object.keys(value).length) {\n finalAttrs.push(\n t.jsxAttribute(\n t.jsxIdentifier(key),\n t.jsxExpressionContainer(literalToAst(value))\n )\n )\n }\n }\n\n for (const style of styles) {\n if (style.pseudo) {\n continue\n }\n // leave them as attributes\n finalAttrs.push(\n t.jsxAttribute(t.jsxIdentifier(style.property), t.stringLiteral(style.identifier))\n )\n }\n } else {\n const styles = addStyles(attr.value)\n const newClassNames = concatClassName(styles.map((x) => x.identifier).join(' '))\n const existing = finalClassNames.find(\n (x) => x.type == 'StringLiteral'\n ) as t.StringLiteral | null\n\n if (existing) {\n existing.value = `${existing.value} ${newClassNames}`\n } else {\n finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)]\n }\n }\n\n break\n case 'attr':\n const val = attr.value\n if (t.isJSXSpreadAttribute(val)) {\n if (isSimpleSpread(val)) {\n finalClassNames.push(\n t.logicalExpression(\n '&&',\n val.argument,\n t.memberExpression(val.argument, t.identifier('className'))\n )\n )\n }\n } else if (val.name.name === 'className') {\n const value = val.value\n if (value) {\n try {\n const evaluatedValue = attemptEval(value)\n finalClassNames.push(t.stringLiteral(evaluatedValue))\n } catch (e) {\n finalClassNames.push(value['expression'])\n }\n }\n continue\n }\n finalAttrs.push(val)\n break\n case 'ternary':\n const mediaExtraction = extractMediaStyle(\n attr.value,\n jsxPath,\n extractor.getTamagui(),\n sourcePath,\n lastMediaImportance,\n shouldPrintDebug\n )\n if (shouldPrintDebug) {\n if (mediaExtraction) {\n // prettier-ignore\n console.log('ternary (mediaStyles)', mediaExtraction.ternaryWithoutMedia?.inlineMediaQuery ?? '', mediaExtraction.mediaStyles.map((x) => x.identifier).join('.'))\n }\n }\n if (!mediaExtraction) {\n addTernaryStyle(\n attr.value,\n addStyles(attr.value.consequent),\n addStyles(attr.value.alternate)\n )\n continue\n }\n lastMediaImportance++\n if (mediaExtraction.mediaStyles) {\n finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles]\n }\n if (mediaExtraction.ternaryWithoutMedia) {\n addTernaryStyle(mediaExtraction.ternaryWithoutMedia, mediaExtraction.mediaStyles, [])\n } else {\n finalClassNames = [\n ...finalClassNames,\n ...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier)),\n ]\n }\n break\n }\n }\n\n function addTernaryStyle(ternary: Ternary, a: any, b: any) {\n const cCN = a.map((x) => x.identifier).join(' ')\n const aCN = b.map((x) => x.identifier).join(' ')\n if (a.length && b.length) {\n finalClassNames.push(\n t.conditionalExpression(ternary.test, t.stringLiteral(cCN), t.stringLiteral(aCN))\n )\n } else {\n finalClassNames.push(\n t.conditionalExpression(\n ternary.test,\n t.stringLiteral(' ' + cCN),\n t.stringLiteral(' ' + aCN)\n )\n )\n }\n }\n\n if (shouldPrintDebug) {\n // prettier-ignore\n console.log(' finalClassNames\\n', logLines(finalClassNames.map(x => x['value']).join(' ')))\n }\n\n node.attributes = finalAttrs\n\n if (finalClassNames.length) {\n // inserts the _cn variable and uses it for className\n let names = buildClassName(finalClassNames)\n if (t.isStringLiteral(names)) {\n names.value = concatClassName(names.value)\n }\n const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null\n let expr = nameExpr\n\n // if has some spreads, use concat helper\n if (nameExpr && !t.isIdentifier(nameExpr)) {\n if (!hasFlattened) {\n // not flat\n } else {\n ensureImportingConcat(programPath)\n const simpleSpreads = attrs.filter(\n (x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value)\n )\n expr = t.callExpression(t.identifier(CONCAT_CLASSNAME_IMPORT), [\n expr,\n ...simpleSpreads.map((val) => val.value['argument']),\n ])\n }\n }\n\n node.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('className'), t.jsxExpressionContainer(expr))\n )\n }\n\n const comment = util.format('/* %s:%s (%s) */', filePath, lineNumbers, originalNodeName)\n\n for (const { className, rules } of finalStyles) {\n if (cssMap.has(className)) {\n if (comment) {\n const val = cssMap.get(className)!\n val.commentTexts.push(comment)\n cssMap.set(className, val)\n }\n } else if (rules.length) {\n if (rules.length > 1) {\n console.log(' rules error', { rules })\n throw new Error(`Shouldn't have more than one rule`)\n }\n cssMap.set(className, {\n css: rules[0],\n commentTexts: [comment],\n })\n }\n }\n },\n })\n\n if (!res || (!res.modified && !res.optimized && !res.flattened)) {\n if (shouldPrintDebug) {\n console.log('no res or none modified', res)\n }\n return null\n }\n\n const styles = Array.from(cssMap.values())\n .map((x) => x.css)\n .join('\\n')\n .trim()\n\n if (styles) {\n const cssQuery = threaded\n ? `cssData=${Buffer.from(styles).toString('base64')}`\n : `cssPath=${cssPath}`\n const remReq = loader.remainingRequest\n const importPath = `${cssPath}!=!${cssLoaderPath}?${cssQuery}!${remReq}`\n ast.program.body.unshift(t.importDeclaration([], t.stringLiteral(importPath)))\n }\n\n const result = generate(\n ast,\n {\n concise: false,\n filename: sourcePath,\n // this makes the debug output terrible, and i think sourcemap works already\n retainLines: false,\n sourceFileName: sourcePath,\n sourceMaps: true,\n },\n source\n )\n\n if (shouldPrintDebug) {\n console.log(\n '\\n -------- output code ------- \\n\\n',\n result.code\n .split('\\n')\n .filter((x) => !x.startsWith('//'))\n .join('\\n')\n )\n console.log('\\n -------- output style -------- \\n\\n', styles)\n }\n\n if (shouldLogTiming) {\n const memUsed = mem\n ? Math.round(((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204) * 10) / 10\n : 0\n const path = basename(sourcePath)\n .replace(/\\.[jt]sx?$/, '')\n .slice(0, 22)\n .trim()\n .padStart(24)\n const numOptimized = `${res.optimized}`.padStart(3)\n const numFound = `${res.found}`.padStart(3)\n const numFlattened = `${res.flattened}`.padStart(3)\n const memory = process.env.DEBUG && memUsed > 10 ? ` ${memUsed}MB` : ''\n const timing = Date.now() - start\n const timingWarning = timing > 50 ? '\u26A0\uFE0F' : timing > 150 ? '\u2622\uFE0F' : ''\n const timingStr = `${timing}ms${timingWarning}`.padStart(6)\n console.log(\n `${getPrefixLogs(\n options\n )} ${path} ${numFound} \u00B7 ${numOptimized} \u00B7 ${numFlattened} ${timingStr} ${\n memory ? `(${memory})` : ''\n }`\n )\n }\n\n return {\n ast,\n styles,\n js: result.code,\n map: result.map,\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,6 +4,7 @@ import vm from "vm";
|
|
|
4
4
|
import generate from "@babel/generator";
|
|
5
5
|
import * as t from "@babel/types";
|
|
6
6
|
import { createCSSVariable } from "@tamagui/core-node";
|
|
7
|
+
import esbuild from "esbuild";
|
|
7
8
|
import { FAILED_EVAL } from "../constants";
|
|
8
9
|
import { evaluateAstNode } from "./evaluateAstNode";
|
|
9
10
|
import { isValidThemeHook } from "./extractHelpers";
|
|
@@ -27,7 +28,11 @@ function createEvaluator({
|
|
|
27
28
|
return staticNamespace[n.name];
|
|
28
29
|
}
|
|
29
30
|
const evalContext = vm.createContext(staticNamespace);
|
|
30
|
-
const
|
|
31
|
+
const codeWithTypescriptAnnotations = `(${generate(n).code})`;
|
|
32
|
+
const code = esbuild.transformSync(codeWithTypescriptAnnotations, { loader: "tsx" }).code.replace(/;\n$/, "");
|
|
33
|
+
if (shouldPrintDebug) {
|
|
34
|
+
console.log("evaluating", code);
|
|
35
|
+
}
|
|
31
36
|
return vm.runInContext(code, evalContext);
|
|
32
37
|
}, "evalFn");
|
|
33
38
|
return (n) => {
|
|
@@ -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) {
|
|
@@ -780,6 +781,7 @@ function createExtractor() {
|
|
|
780
781
|
console.log("Error extracting attribute", err.message, err.stack);
|
|
781
782
|
console.log("node", path.node);
|
|
782
783
|
}
|
|
784
|
+
inlined.set(`${Math.random()}`, "spread");
|
|
783
785
|
return {
|
|
784
786
|
type: "attr",
|
|
785
787
|
value: path.node
|
|
@@ -994,35 +996,47 @@ function createExtractor() {
|
|
|
994
996
|
press: false,
|
|
995
997
|
pressIn: false
|
|
996
998
|
};
|
|
997
|
-
|
|
998
|
-
|
|
999
|
+
let foundStaticProps = {};
|
|
1000
|
+
for (const key in attrs) {
|
|
1001
|
+
const cur = attrs[key];
|
|
999
1002
|
if (cur.type === "style") {
|
|
1000
1003
|
normalizeStyleObject(cur.value);
|
|
1001
|
-
|
|
1004
|
+
foundStaticProps = {
|
|
1005
|
+
...foundStaticProps,
|
|
1006
|
+
...expandStyles(cur.value)
|
|
1007
|
+
};
|
|
1008
|
+
continue;
|
|
1002
1009
|
}
|
|
1003
1010
|
if (cur.type === "attr") {
|
|
1004
1011
|
if (t.isJSXSpreadAttribute(cur.value)) {
|
|
1005
|
-
|
|
1012
|
+
continue;
|
|
1006
1013
|
}
|
|
1007
1014
|
if (!t.isJSXIdentifier(cur.value.name)) {
|
|
1008
|
-
|
|
1015
|
+
continue;
|
|
1009
1016
|
}
|
|
1010
|
-
const
|
|
1017
|
+
const key2 = cur.value.name.name;
|
|
1011
1018
|
const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true));
|
|
1012
|
-
if (value
|
|
1013
|
-
|
|
1019
|
+
if (value !== FAILED_EVAL) {
|
|
1020
|
+
foundStaticProps = {
|
|
1021
|
+
...foundStaticProps,
|
|
1022
|
+
[key2]: value
|
|
1023
|
+
};
|
|
1014
1024
|
}
|
|
1015
|
-
acc[key] = value;
|
|
1016
1025
|
}
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1026
|
+
}
|
|
1027
|
+
const completeProps = {};
|
|
1028
|
+
for (const key in staticConfig.defaultProps) {
|
|
1029
|
+
if (!(key in foundStaticProps)) {
|
|
1030
|
+
completeProps[key] = staticConfig.defaultProps[key];
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
for (const key in foundStaticProps) {
|
|
1034
|
+
completeProps[key] = foundStaticProps[key];
|
|
1035
|
+
}
|
|
1023
1036
|
if (shouldPrintDebug) {
|
|
1024
1037
|
console.log(" - attrs (combined \u{1F500}): \n", logLines(attrs.map(attrStr).join(", ")));
|
|
1025
1038
|
console.log(" - defaultProps: \n", logLines(objToStr(staticConfig.defaultProps)));
|
|
1039
|
+
console.log(" - foundStaticProps: \n", logLines(objToStr(foundStaticProps)));
|
|
1026
1040
|
console.log(" - completeProps: \n", logLines(objToStr(completeProps)));
|
|
1027
1041
|
}
|
|
1028
1042
|
const getStyles = /* @__PURE__ */ __name((props2, debugName = "") => {
|
|
@@ -1044,7 +1058,7 @@ function createExtractor() {
|
|
|
1044
1058
|
const out = getSplitStyles(props2, staticConfig, defaultTheme, {
|
|
1045
1059
|
...state,
|
|
1046
1060
|
fallbackProps: completeProps
|
|
1047
|
-
});
|
|
1061
|
+
}, void 0, props2["debug"]);
|
|
1048
1062
|
const outStyle = {
|
|
1049
1063
|
...out.style,
|
|
1050
1064
|
...out.pseudos
|
|
@@ -1068,7 +1082,7 @@ function createExtractor() {
|
|
|
1068
1082
|
if (!completeStyles) {
|
|
1069
1083
|
throw new Error(`Impossible, no styles`);
|
|
1070
1084
|
}
|
|
1071
|
-
const addInitialStyleKeys = shouldFlatten ? difference(Object.keys(completeStyles), Object.keys(
|
|
1085
|
+
const addInitialStyleKeys = shouldFlatten ? difference(Object.keys(completeStyles), Object.keys(foundStaticProps)) : [];
|
|
1072
1086
|
if (addInitialStyleKeys.length) {
|
|
1073
1087
|
const toAdd = pick(completeStyles, ...addInitialStyleKeys);
|
|
1074
1088
|
const firstGroup = attrs.find((x) => x.type === "style");
|
|
@@ -1084,14 +1098,11 @@ function createExtractor() {
|
|
|
1084
1098
|
}
|
|
1085
1099
|
if (shouldPrintDebug) {
|
|
1086
1100
|
console.log(" -- addInitialStyleKeys", addInitialStyleKeys.join(", "), { shouldFlatten });
|
|
1087
|
-
console.log(" -- completeStaticProps:\n", logLines(objToStr(completeStaticProps)));
|
|
1088
1101
|
console.log(" -- completeStyles:\n", logLines(objToStr(completeStyles)));
|
|
1089
1102
|
}
|
|
1090
1103
|
let getStyleError = null;
|
|
1091
1104
|
for (const attr of attrs) {
|
|
1092
1105
|
try {
|
|
1093
|
-
if (shouldPrintDebug)
|
|
1094
|
-
console.log(" *", attrStr(attr));
|
|
1095
1106
|
switch (attr.type) {
|
|
1096
1107
|
case "ternary":
|
|
1097
1108
|
const a = getStyles(attr.value.alternate, "ternary.alternate");
|
|
@@ -1105,7 +1116,7 @@ function createExtractor() {
|
|
|
1105
1116
|
continue;
|
|
1106
1117
|
case "style":
|
|
1107
1118
|
if (shouldPrintDebug)
|
|
1108
|
-
console.log(" * styles in",
|
|
1119
|
+
console.log(" * styles in", attr.value);
|
|
1109
1120
|
const styles = getStyles(attr.value, "style");
|
|
1110
1121
|
if (shouldPrintDebug)
|
|
1111
1122
|
console.log(" * styles out", logLines(objToStr(styles)));
|
|
@@ -1118,6 +1129,9 @@ function createExtractor() {
|
|
|
1118
1129
|
getStyleError = err;
|
|
1119
1130
|
}
|
|
1120
1131
|
}
|
|
1132
|
+
if (shouldPrintDebug) {
|
|
1133
|
+
console.log(" - attrs (ternaries/combined):\n", logLines(attrs.map(attrStr).join(", ")));
|
|
1134
|
+
}
|
|
1121
1135
|
tm.mark("jsx-element-styles", shouldPrintDebug === "verbose");
|
|
1122
1136
|
if (getStyleError) {
|
|
1123
1137
|
console.log(" \u26A0\uFE0F postprocessing error, deopt", getStyleError);
|
|
@@ -43,7 +43,7 @@ function extractMediaStyle(ternary, jsxPath, tamaguiConfig, sourcePath, importan
|
|
|
43
43
|
const screenStr = negate ? "not all" : "screen";
|
|
44
44
|
const mediaQuery = `${screenStr} and ${mediaSelector}`;
|
|
45
45
|
const precendencePrefix = mediaKeyPrecendence[key];
|
|
46
|
-
const styleInner = style.rules
|
|
46
|
+
const styleInner = style.rules.map((rule) => rule.replace(style.identifier, identifier)).join(";");
|
|
47
47
|
let styleRule = "";
|
|
48
48
|
if (styleInner.includes("@media")) {
|
|
49
49
|
styleRule = styleInner.replace("{", ` and ${mediaQuery} {`);
|
|
@@ -230,7 +230,7 @@ function extractToClassNames({
|
|
|
230
230
|
node.attributes.push(t.jsxAttribute(t.jsxIdentifier("className"), t.jsxExpressionContainer(expr)));
|
|
231
231
|
}
|
|
232
232
|
const comment = util.format("/* %s:%s (%s) */", filePath, lineNumbers, originalNodeName);
|
|
233
|
-
for (const { className, rules
|
|
233
|
+
for (const { className, rules } of finalStyles) {
|
|
234
234
|
if (cssMap.has(className)) {
|
|
235
235
|
if (comment) {
|
|
236
236
|
const val = cssMap.get(className);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/static",
|
|
3
|
-
"version": "1.0.1-beta.
|
|
3
|
+
"version": "1.0.1-beta.63",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"@babel/parser": "^7.15.7",
|
|
37
37
|
"@babel/traverse": "^7.15.4",
|
|
38
38
|
"@expo/match-media": "^0.3.0",
|
|
39
|
-
"@tamagui/build": "^1.0.1-beta.
|
|
40
|
-
"@tamagui/core-node": "^1.0.1-beta.
|
|
41
|
-
"@tamagui/fake-react-native": "^1.0.1-beta.
|
|
42
|
-
"@tamagui/helpers": "^1.0.1-beta.
|
|
43
|
-
"@tamagui/proxy-worm": "^1.0.1-beta.
|
|
39
|
+
"@tamagui/build": "^1.0.1-beta.63",
|
|
40
|
+
"@tamagui/core-node": "^1.0.1-beta.63",
|
|
41
|
+
"@tamagui/fake-react-native": "^1.0.1-beta.63",
|
|
42
|
+
"@tamagui/helpers": "^1.0.1-beta.63",
|
|
43
|
+
"@tamagui/proxy-worm": "^1.0.1-beta.63",
|
|
44
44
|
"babel-literal-to-ast": "^2.1.0",
|
|
45
45
|
"esbuild": "^0.14.36",
|
|
46
46
|
"esbuild-register": "^3.3.2",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"fs-extra": "^9.1.0",
|
|
49
49
|
"invariant": "^2.2.4",
|
|
50
50
|
"lodash": "^4.17.21",
|
|
51
|
-
"tamagui": "^1.0.1-beta.
|
|
51
|
+
"tamagui": "^1.0.1-beta.63"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@babel/plugin-syntax-typescript": "^7.14.5",
|
|
@@ -5,6 +5,7 @@ import { NodePath } from '@babel/traverse'
|
|
|
5
5
|
import * as t from '@babel/types'
|
|
6
6
|
import type { TamaguiConfig } from '@tamagui/core'
|
|
7
7
|
import { createCSSVariable } from '@tamagui/core-node'
|
|
8
|
+
import esbuild from 'esbuild'
|
|
8
9
|
|
|
9
10
|
import { FAILED_EVAL } from '../constants'
|
|
10
11
|
import { evaluateAstNode } from './evaluateAstNode'
|
|
@@ -46,10 +47,14 @@ export function createEvaluator({
|
|
|
46
47
|
return staticNamespace[n.name]
|
|
47
48
|
}
|
|
48
49
|
const evalContext = vm.createContext(staticNamespace)
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
const codeWithTypescriptAnnotations = `(${generate(n as any).code})`
|
|
51
|
+
const code = esbuild
|
|
52
|
+
.transformSync(codeWithTypescriptAnnotations, { loader: 'tsx' })
|
|
53
|
+
.code.replace(/;\n$/, '')
|
|
54
|
+
|
|
55
|
+
if (shouldPrintDebug) {
|
|
56
|
+
console.log('evaluating', code)
|
|
57
|
+
}
|
|
53
58
|
return vm.runInContext(code, evalContext)
|
|
54
59
|
}
|
|
55
60
|
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
PseudoStyles,
|
|
7
7
|
StaticConfigParsed,
|
|
8
8
|
TamaguiInternalConfig,
|
|
9
|
+
expandStyles,
|
|
9
10
|
getSplitStyles,
|
|
10
11
|
mediaQueryConfig,
|
|
11
12
|
normalizeStyleObject,
|
|
@@ -538,6 +539,8 @@ export function createExtractor() {
|
|
|
538
539
|
console.log('Error extracting attribute', err.message, err.stack)
|
|
539
540
|
console.log('node', path.node)
|
|
540
541
|
}
|
|
542
|
+
// dont flatten if we run into error
|
|
543
|
+
inlined.set(`${Math.random()}`, 'spread')
|
|
541
544
|
return {
|
|
542
545
|
type: 'attr',
|
|
543
546
|
value: path.node,
|
|
@@ -735,7 +738,9 @@ export function createExtractor() {
|
|
|
735
738
|
styleValue,
|
|
736
739
|
defaultTheme,
|
|
737
740
|
staticConfig.defaultProps,
|
|
738
|
-
{ resolveVariablesAs: 'auto' }
|
|
741
|
+
{ resolveVariablesAs: 'auto' },
|
|
742
|
+
undefined,
|
|
743
|
+
shouldPrintDebug
|
|
739
744
|
)
|
|
740
745
|
if (out) {
|
|
741
746
|
if (!Array.isArray(out)) {
|
|
@@ -769,7 +774,11 @@ export function createExtractor() {
|
|
|
769
774
|
attr: path.node,
|
|
770
775
|
} as const
|
|
771
776
|
}
|
|
772
|
-
if (
|
|
777
|
+
if (
|
|
778
|
+
validHTMLAttributes[key] ||
|
|
779
|
+
key.startsWith('aria-') ||
|
|
780
|
+
key.startsWith('data-')
|
|
781
|
+
) {
|
|
773
782
|
return attr
|
|
774
783
|
}
|
|
775
784
|
if (shouldPrintDebug) {
|
|
@@ -1404,38 +1413,52 @@ export function createExtractor() {
|
|
|
1404
1413
|
}
|
|
1405
1414
|
|
|
1406
1415
|
// evaluates all static attributes into a simple object
|
|
1407
|
-
|
|
1408
|
-
|
|
1416
|
+
let foundStaticProps = {}
|
|
1417
|
+
for (const key in attrs) {
|
|
1418
|
+
const cur = attrs[key]
|
|
1409
1419
|
if (cur.type === 'style') {
|
|
1410
1420
|
normalizeStyleObject(cur.value)
|
|
1411
|
-
|
|
1421
|
+
foundStaticProps = {
|
|
1422
|
+
...foundStaticProps,
|
|
1423
|
+
...expandStyles(cur.value),
|
|
1424
|
+
}
|
|
1425
|
+
continue
|
|
1412
1426
|
}
|
|
1413
1427
|
if (cur.type === 'attr') {
|
|
1414
1428
|
if (t.isJSXSpreadAttribute(cur.value)) {
|
|
1415
|
-
|
|
1429
|
+
continue
|
|
1416
1430
|
}
|
|
1417
1431
|
if (!t.isJSXIdentifier(cur.value.name)) {
|
|
1418
|
-
|
|
1432
|
+
continue
|
|
1419
1433
|
}
|
|
1420
1434
|
const key = cur.value.name.name
|
|
1421
1435
|
// undefined = boolean true
|
|
1422
1436
|
const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true))
|
|
1423
|
-
if (value
|
|
1424
|
-
|
|
1437
|
+
if (value !== FAILED_EVAL) {
|
|
1438
|
+
foundStaticProps = {
|
|
1439
|
+
...foundStaticProps,
|
|
1440
|
+
[key]: value,
|
|
1441
|
+
}
|
|
1425
1442
|
}
|
|
1426
|
-
acc[key] = value
|
|
1427
1443
|
}
|
|
1428
|
-
|
|
1429
|
-
}, {})
|
|
1444
|
+
}
|
|
1430
1445
|
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1446
|
+
// must preserve exact order
|
|
1447
|
+
const completeProps = {}
|
|
1448
|
+
for (const key in staticConfig.defaultProps) {
|
|
1449
|
+
if (!(key in foundStaticProps)) {
|
|
1450
|
+
completeProps[key] = staticConfig.defaultProps[key]
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
for (const key in foundStaticProps) {
|
|
1454
|
+
completeProps[key] = foundStaticProps[key]
|
|
1434
1455
|
}
|
|
1435
1456
|
|
|
1436
1457
|
if (shouldPrintDebug) {
|
|
1437
1458
|
console.log(' - attrs (combined 🔀): \n', logLines(attrs.map(attrStr).join(', ')))
|
|
1438
1459
|
console.log(' - defaultProps: \n', logLines(objToStr(staticConfig.defaultProps)))
|
|
1460
|
+
// prettier-ignore
|
|
1461
|
+
console.log(' - foundStaticProps: \n', logLines(objToStr(foundStaticProps)))
|
|
1439
1462
|
console.log(' - completeProps: \n', logLines(objToStr(completeProps)))
|
|
1440
1463
|
}
|
|
1441
1464
|
|
|
@@ -1454,10 +1477,17 @@ export function createExtractor() {
|
|
|
1454
1477
|
}
|
|
1455
1478
|
}
|
|
1456
1479
|
try {
|
|
1457
|
-
const out = getSplitStyles(
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1480
|
+
const out = getSplitStyles(
|
|
1481
|
+
props,
|
|
1482
|
+
staticConfig,
|
|
1483
|
+
defaultTheme,
|
|
1484
|
+
{
|
|
1485
|
+
...state,
|
|
1486
|
+
fallbackProps: completeProps,
|
|
1487
|
+
},
|
|
1488
|
+
undefined,
|
|
1489
|
+
props['debug']
|
|
1490
|
+
)
|
|
1461
1491
|
const outStyle = {
|
|
1462
1492
|
...out.style,
|
|
1463
1493
|
...out.pseudos,
|
|
@@ -1503,7 +1533,7 @@ export function createExtractor() {
|
|
|
1503
1533
|
|
|
1504
1534
|
// any extra styles added in postprocess should be added to first group as they wont be overriden
|
|
1505
1535
|
const addInitialStyleKeys = shouldFlatten
|
|
1506
|
-
? difference(Object.keys(completeStyles), Object.keys(
|
|
1536
|
+
? difference(Object.keys(completeStyles), Object.keys(foundStaticProps))
|
|
1507
1537
|
: []
|
|
1508
1538
|
|
|
1509
1539
|
if (addInitialStyleKeys.length) {
|
|
@@ -1525,8 +1555,6 @@ export function createExtractor() {
|
|
|
1525
1555
|
// prettier-ignore
|
|
1526
1556
|
console.log(' -- addInitialStyleKeys', addInitialStyleKeys.join(', '), { shouldFlatten })
|
|
1527
1557
|
// prettier-ignore
|
|
1528
|
-
console.log(' -- completeStaticProps:\n', logLines(objToStr(completeStaticProps)))
|
|
1529
|
-
// prettier-ignore
|
|
1530
1558
|
console.log(' -- completeStyles:\n', logLines(objToStr(completeStyles)))
|
|
1531
1559
|
}
|
|
1532
1560
|
|
|
@@ -1535,7 +1563,6 @@ export function createExtractor() {
|
|
|
1535
1563
|
// fix up ternaries, combine final style values
|
|
1536
1564
|
for (const attr of attrs) {
|
|
1537
1565
|
try {
|
|
1538
|
-
if (shouldPrintDebug) console.log(' *', attrStr(attr))
|
|
1539
1566
|
switch (attr.type) {
|
|
1540
1567
|
case 'ternary':
|
|
1541
1568
|
const a = getStyles(attr.value.alternate, 'ternary.alternate')
|
|
@@ -1545,8 +1572,7 @@ export function createExtractor() {
|
|
|
1545
1572
|
if (shouldPrintDebug) console.log(' => tern ', attrStr(attr))
|
|
1546
1573
|
continue
|
|
1547
1574
|
case 'style':
|
|
1548
|
-
|
|
1549
|
-
if (shouldPrintDebug) console.log(' * styles in', logLines(objToStr(attr.value)))
|
|
1575
|
+
if (shouldPrintDebug) console.log(' * styles in', attr.value)
|
|
1550
1576
|
// expand variants and such
|
|
1551
1577
|
// get the keys we need
|
|
1552
1578
|
const styles = getStyles(attr.value, 'style')
|
|
@@ -1567,6 +1593,11 @@ export function createExtractor() {
|
|
|
1567
1593
|
}
|
|
1568
1594
|
}
|
|
1569
1595
|
|
|
1596
|
+
if (shouldPrintDebug) {
|
|
1597
|
+
// prettier-ignore
|
|
1598
|
+
console.log(' - attrs (ternaries/combined):\n', logLines(attrs.map(attrStr).join(', ')))
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1570
1601
|
tm.mark('jsx-element-styles', shouldPrintDebug === 'verbose')
|
|
1571
1602
|
|
|
1572
1603
|
if (getStyleError) {
|
|
@@ -60,7 +60,9 @@ export function extractMediaStyle(
|
|
|
60
60
|
const screenStr = negate ? 'not all' : 'screen'
|
|
61
61
|
const mediaQuery = `${screenStr} and ${mediaSelector}`
|
|
62
62
|
const precendencePrefix = mediaKeyPrecendence[key]
|
|
63
|
-
const styleInner = style.rules
|
|
63
|
+
const styleInner = style.rules
|
|
64
|
+
.map((rule) => rule.replace(style.identifier, identifier))
|
|
65
|
+
.join(';')
|
|
64
66
|
// combines media queries if they already exist
|
|
65
67
|
let styleRule = ''
|
|
66
68
|
if (styleInner.includes('@media')) {
|
|
@@ -189,17 +189,6 @@ export function extractToClassNames({
|
|
|
189
189
|
t.jsxAttribute(t.jsxIdentifier(style.property), t.stringLiteral(style.identifier))
|
|
190
190
|
)
|
|
191
191
|
}
|
|
192
|
-
|
|
193
|
-
// for (const key in attr.value) {
|
|
194
|
-
// if (pseudos.some((x) => x[0] === key)) {
|
|
195
|
-
// // we handled pseudos above...
|
|
196
|
-
// continue
|
|
197
|
-
// }
|
|
198
|
-
// // leave them as attributes
|
|
199
|
-
// finalAttrs.push(
|
|
200
|
-
// t.jsxAttribute(t.jsxIdentifier(key), t.stringLiteral(attr.value[key]))
|
|
201
|
-
// )
|
|
202
|
-
// }
|
|
203
192
|
} else {
|
|
204
193
|
const styles = addStyles(attr.value)
|
|
205
194
|
const newClassNames = concatClassName(styles.map((x) => x.identifier).join(' '))
|
|
@@ -207,11 +196,6 @@ export function extractToClassNames({
|
|
|
207
196
|
(x) => x.type == 'StringLiteral'
|
|
208
197
|
) as t.StringLiteral | null
|
|
209
198
|
|
|
210
|
-
// const newClassNames = concatClassName(Object.values(attr.value))
|
|
211
|
-
// const existing = finalClassNames.find(
|
|
212
|
-
// (x) => x.type == 'StringLiteral'
|
|
213
|
-
// ) as t.StringLiteral | null
|
|
214
|
-
|
|
215
199
|
if (existing) {
|
|
216
200
|
existing.value = `${existing.value} ${newClassNames}`
|
|
217
201
|
} else {
|
|
@@ -342,20 +326,7 @@ export function extractToClassNames({
|
|
|
342
326
|
|
|
343
327
|
const comment = util.format('/* %s:%s (%s) */', filePath, lineNumbers, originalNodeName)
|
|
344
328
|
|
|
345
|
-
for (const { className, rules
|
|
346
|
-
// console.log('backvalue', identifier, value)
|
|
347
|
-
// ast.program.body.unshift(
|
|
348
|
-
// t.expressionStatement(
|
|
349
|
-
// t.callExpression(
|
|
350
|
-
// t.memberExpression(
|
|
351
|
-
// t.callExpression(t.identifier('require'), [t.stringLiteral('@tamagui/core')]),
|
|
352
|
-
// t.identifier('setIdentifierValue')
|
|
353
|
-
// ),
|
|
354
|
-
// [t.stringLiteral(identifier), t.stringLiteral(value)]
|
|
355
|
-
// )
|
|
356
|
-
// )
|
|
357
|
-
// )
|
|
358
|
-
|
|
329
|
+
for (const { className, rules } of finalStyles) {
|
|
359
330
|
if (cssMap.has(className)) {
|
|
360
331
|
if (comment) {
|
|
361
332
|
const val = cssMap.get(className)!
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createEvaluator.d.ts","sourceRoot":"","sources":["../../src/extractor/createEvaluator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"createEvaluator.d.ts","sourceRoot":"","sources":["../../src/extractor/createEvaluator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAQlD,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,eAAe,EACf,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,EAAE;IACD,aAAa,EAAE,aAAa,CAAA;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACpC,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;CACtC,OAmCY,MAAM,SAGlB;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,OACtD,MAAM,SAOlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createExtractor.d.ts","sourceRoot":"","sources":["../../src/extractor/createExtractor.ts"],"names":[],"mappings":"AAEA,OAAiB,EAAE,QAAQ,EAAW,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAGL,qBAAqB,
|
|
1
|
+
{"version":3,"file":"createExtractor.d.ts","sourceRoot":"","sources":["../../src/extractor/createExtractor.ts"],"names":[],"mappings":"AAEA,OAAiB,EAAE,QAAQ,EAAW,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAGL,qBAAqB,EAStB,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAIL,mBAAmB,EAEpB,MAAM,UAAU,CAAA;AAqCjB,oBAAY,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAI1D,wBAAgB,eAAe;;;;;;;;;;;;;;wBAqBb,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,0PAkBrC,mBAAmB;;;;;;EAmlD3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractMediaStyle.d.ts","sourceRoot":"","sources":["../../src/extractor/extractMediaStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAwC,MAAM,oBAAoB,CAAA;AAIhG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAG/C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/B,aAAa,EAAE,qBAAqB,EACpC,UAAU,EAAE,MAAM,EAClB,UAAU,SAAI,EACd,gBAAgB,GAAE,OAAO,GAAG,SAAiB;;;
|
|
1
|
+
{"version":3,"file":"extractMediaStyle.d.ts","sourceRoot":"","sources":["../../src/extractor/extractMediaStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAwC,MAAM,oBAAoB,CAAA;AAIhG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAG/C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/B,aAAa,EAAE,qBAAqB,EACpC,UAAU,EAAE,MAAM,EAClB,UAAU,SAAI,EACd,gBAAgB,GAAE,OAAO,GAAG,SAAiB;;;SA2E9C;AAiFD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/B,IAAI,EAAE,CAAC,CAAC,UAAU,EAClB,UAAU,EAAE,MAAM,WAiBnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractToClassNames.d.ts","sourceRoot":"","sources":["../../src/extractor/extractToClassNames.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAgC,cAAc,EAAW,MAAM,UAAU,CAAA;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAiB7C,oBAAY,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAA;IACX,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE;IACD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,cAAc,CAAA;IACvB,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"extractToClassNames.d.ts","sourceRoot":"","sources":["../../src/extractor/extractToClassNames.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAgC,cAAc,EAAW,MAAM,UAAU,CAAA;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAiB7C,oBAAY,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAA;IACX,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE;IACD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,cAAc,CAAA;IACvB,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,iBAAiB,GAAG,IAAI,CA4W3B"}
|