@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.
Files changed (29) hide show
  1. package/dist/cjs/extractor/createEvaluator.js +6 -1
  2. package/dist/cjs/extractor/createEvaluator.js.map +2 -2
  3. package/dist/cjs/extractor/createExtractor.js +32 -20
  4. package/dist/cjs/extractor/createExtractor.js.map +2 -2
  5. package/dist/cjs/extractor/extractMediaStyle.js +1 -1
  6. package/dist/cjs/extractor/extractMediaStyle.js.map +2 -2
  7. package/dist/cjs/extractor/extractToClassNames.js +1 -1
  8. package/dist/cjs/extractor/extractToClassNames.js.map +2 -2
  9. package/dist/esm/extractor/createEvaluator.js +6 -1
  10. package/dist/esm/extractor/createEvaluator.js.map +2 -2
  11. package/dist/esm/extractor/createExtractor.js +37 -23
  12. package/dist/esm/extractor/createExtractor.js.map +2 -2
  13. package/dist/esm/extractor/extractMediaStyle.js +1 -1
  14. package/dist/esm/extractor/extractMediaStyle.js.map +2 -2
  15. package/dist/esm/extractor/extractToClassNames.js +1 -1
  16. package/dist/esm/extractor/extractToClassNames.js.map +2 -2
  17. package/dist/jsx/extractor/createEvaluator.js +6 -1
  18. package/dist/jsx/extractor/createExtractor.js +37 -23
  19. package/dist/jsx/extractor/extractMediaStyle.js +1 -1
  20. package/dist/jsx/extractor/extractToClassNames.js +1 -1
  21. package/package.json +7 -7
  22. package/src/extractor/createEvaluator.ts +9 -4
  23. package/src/extractor/createExtractor.ts +56 -25
  24. package/src/extractor/extractMediaStyle.ts +3 -1
  25. package/src/extractor/extractToClassNames.ts +1 -30
  26. package/types/extractor/createEvaluator.d.ts.map +1 -1
  27. package/types/extractor/createExtractor.d.ts.map +1 -1
  28. package/types/extractor/extractMediaStyle.d.ts.map +1 -1
  29. 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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAsB;AACtB,kBAAyB;AACzB,WAAsB;AAEtB,uBAAqB;AACrB,QAAmB;AACnB,uBAAgC;AAChC,qBAAgC;AAChC,uBAAsB;AAItB,uBAAwC;AAExC,wBAA2B;AAC3B,4BAA+B;AAE/B,mCAAsC;AACtC,4BAA+B;AAC/B,+BAAkC;AAClC,2BAA8B;AAC9B,6BAAgC;AAChC,0BAA6B;AAC7B,sBAAyB;AACzB,mBAAsB;AAEtB,MAAM,mBAAmB;AAAA,EACvB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,aAAa;AAAA,EACb,cAAc;AAChB;AAUO,6BAA6B;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GAW2B;AAC3B,QAAM,KAAK,wBAAM;AAEjB,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AACA,gCACE,OAAO,eAAe,YAAY,KAAK,WAAW,UAAU,GAC5D,qDACF;AAEA,QAAM,kBAAkB,QAAQ,cAAc;AAC9C,QAAM,QAAQ,KAAK,IAAI;AACvB,QAAM,MAAM,kBAAkB,QAAQ,YAAY,IAAI;AAGtD,MAAI;AAEJ,MAAI;AAEF,UAAM,kCAAW,MAAM;AAAA,EACzB,SAAS,KAAP;AACA,YAAQ,MAAM,sBAAsB,UAAU;AAC9C,UAAM;AAAA,EACR;AAEA,KAAG,KAAK,eAAe,qBAAqB,SAAS;AAErD,QAAM,SAAS,oBAAI,IAAqD;AACxE,QAAM,iBAAkD,CAAC;AAEzD,MAAI,eAAe;AAEnB,QAAM,MAAM,UAAU,MAAM,KAAK;AAAA,IAC/B;AAAA,IACA;AAAA,KACG,UAH4B;AAAA,IAI/B,QAAQ;AAAA,IACR,kBAAkB,CAAC,EAAE,UAAU;AAC7B,qBAAe;AACf,aAAO;AAAA,IACT;AAAA,IACA,cAAc,CAAC;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,UACI;AAjHV;AAkHM,UAAI,kBAAqC,CAAC;AAC1C,UAAI,aAAwD,CAAC;AAC7D,UAAI,cAA6B,CAAC;AAElC,UAAI,aAAa,CAAC;AAClB,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,SAAS,SAAS;AACzB,uBAAa,kCACR,aACA,KAAK;AAAA,QAEZ;AAAA,MACF;AAEA,YAAM,wBAAwB,wBAAC,UAAqB;AAElD,cAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,YAAI,CAAC,KAAK,KAAK,CAAC,QAAQ,iBAAiB,IAAI,GAAG;AAC9C,iBAAO;AAAA,QACT;AACA,mBAAW,KAAK,kBAAkB;AAChC,cAAI,KAAK,YAAY;AACnB,kBAAM,KAAK,MAAM,MAAM,WAAW;AAAA,UACpC;AAAA,QACF;AACA,eAAO;AAAA,MACT,GAZ8B;AAc9B,YAAM,YAAY,wBAAC,UAA2C;AAC5D,YAAI,CAAC;AAAO,iBAAO,CAAC;AACpB,cAAM,gBAAgB,sBAAsB,KAAK;AACjD,cAAM,OAAM,sCAAgB,aAAa;AACzC,YAAI,KAAI,QAAQ;AACd,wBAAc,CAAC,GAAG,aAAa,GAAG,IAAG;AAAA,QACvC;AACA,eAAO;AAAA,MACT,GARkB;AAWlB,UAAI,sBAAsB;AAC1B,iBAAW,QAAQ,OAAO;AACxB,gBAAQ,KAAK;AAAA,eACN;AACH,gBAAI,CAAC,aAAa;AAEhB,oBAAM,EAAE,YAAY,YAAY,eAAe,KAAK;AACpD,oBAAM,UAAU;AAAA,gBACd,CAAC,cAAc,UAAU;AAAA,gBACzB,CAAC,cAAc,UAAU;AAAA,gBACzB,CAAC,cAAc,UAAU;AAAA,cAC3B;AAEA,oBAAM,UAAS,sCAAgB,KAAK,OAAO;AAAA,gBACzC,iBAAiB;AAAA,cACnB,CAAC;AACD,4BAAc,CAAC,GAAG,aAAa,GAAG,OAAM;AAExC,yBAAW,CAAC,KAAK,UAAU,SAAS;AAClC,oBAAI,SAAS,OAAO,KAAK,KAAK,EAAE,QAAQ;AACtC,6BAAW,KACT,EAAE,aACA,EAAE,cAAc,GAAG,GACnB,EAAE,uBAAuB,sCAAa,KAAK,CAAC,CAC9C,CACF;AAAA,gBACF;AAAA,cACF;AAEA,yBAAW,SAAS,SAAQ;AAC1B,oBAAI,MAAM,QAAQ;AAChB;AAAA,gBACF;AAEA,2BAAW,KACT,EAAE,aAAa,EAAE,cAAc,MAAM,QAAQ,GAAG,EAAE,cAAc,MAAM,UAAU,CAAC,CACnF;AAAA,cACF;AAAA,YACF,OAAO;AACL,oBAAM,UAAS,UAAU,KAAK,KAAK;AACnC,oBAAM,gBAAgB,oCAAgB,QAAO,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC;AAC/E,oBAAM,WAAW,gBAAgB,KAC/B,CAAC,MAAM,EAAE,QAAQ,eACnB;AAEA,kBAAI,UAAU;AACZ,yBAAS,QAAQ,GAAG,SAAS,SAAS;AAAA,cACxC,OAAO;AACL,kCAAkB,CAAC,GAAG,iBAAiB,EAAE,cAAc,aAAa,CAAC;AAAA,cACvE;AAAA,YACF;AAEA;AAAA,eACG;AACH,kBAAM,MAAM,KAAK;AACjB,gBAAI,EAAE,qBAAqB,GAAG,GAAG;AAC/B,kBAAI,0CAAe,GAAG,GAAG;AACvB,gCAAgB,KACd,EAAE,kBACA,MACA,IAAI,UACJ,EAAE,iBAAiB,IAAI,UAAU,EAAE,WAAW,WAAW,CAAC,CAC5D,CACF;AAAA,cACF;AAAA,YACF,WAAW,IAAI,KAAK,SAAS,aAAa;AACxC,oBAAM,QAAQ,IAAI;AAClB,kBAAI,OAAO;AACT,oBAAI;AACF,wBAAM,iBAAiB,YAAY,KAAK;AACxC,kCAAgB,KAAK,EAAE,cAAc,cAAc,CAAC;AAAA,gBACtD,SAAS,GAAP;AACA,kCAAgB,KAAK,MAAM,aAAa;AAAA,gBAC1C;AAAA,cACF;AACA;AAAA,YACF;AACA,uBAAW,KAAK,GAAG;AACnB;AAAA,eACG;AACH,kBAAM,kBAAkB,gDACtB,KAAK,OACL,SACA,UAAU,WAAW,GACrB,YACA,qBACA,gBACF;AACA,gBAAI,kBAAkB;AACpB,kBAAI,iBAAiB;AAEnB,wBAAQ,IAAI,yBAAyB,uBAAgB,wBAAhB,mBAAqC,qBAAoB,IAAI,gBAAgB,YAAY,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC;AAAA,cAClK;AAAA,YACF;AACA,gBAAI,CAAC,iBAAiB;AACpB,8BACE,KAAK,OACL,UAAU,KAAK,MAAM,UAAU,GAC/B,UAAU,KAAK,MAAM,SAAS,CAChC;AACA;AAAA,YACF;AACA;AACA,gBAAI,gBAAgB,aAAa;AAC/B,4BAAc,CAAC,GAAG,aAAa,GAAG,gBAAgB,WAAW;AAAA,YAC/D;AACA,gBAAI,gBAAgB,qBAAqB;AACvC,8BAAgB,gBAAgB,qBAAqB,gBAAgB,aAAa,CAAC,CAAC;AAAA,YACtF,OAAO;AACL,gCAAkB;AAAA,gBAChB,GAAG;AAAA,gBACH,GAAG,gBAAgB,YAAY,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC;AAAA,cACzE;AAAA,YACF;AACA;AAAA;AAAA,MAEN;AAEA,+BAAyB,SAAkB,GAAQ,GAAQ;AACzD,cAAM,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG;AAC/C,cAAM,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG;AAC/C,YAAI,EAAE,UAAU,EAAE,QAAQ;AACxB,0BAAgB,KACd,EAAE,sBAAsB,QAAQ,MAAM,EAAE,cAAc,GAAG,GAAG,EAAE,cAAc,GAAG,CAAC,CAClF;AAAA,QACF,OAAO;AACL,0BAAgB,KACd,EAAE,sBACA,QAAQ,MACR,EAAE,cAAc,MAAM,GAAG,GACzB,EAAE,cAAc,MAAM,GAAG,CAC3B,CACF;AAAA,QACF;AAAA,MACF;AAhBS;AAkBT,UAAI,kBAAkB;AAEpB,gBAAQ,IAAI,uBAAuB,8BAAS,gBAAgB,IAAI,OAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,MAC7F;AAEA,WAAK,aAAa;AAElB,UAAI,gBAAgB,QAAQ;AAE1B,YAAI,QAAQ,0CAAe,eAAe;AAC1C,YAAI,EAAE,gBAAgB,KAAK,GAAG;AAC5B,gBAAM,QAAQ,oCAAgB,MAAM,KAAK;AAAA,QAC3C;AACA,cAAM,WAAW,QAAQ,4CAAgB,SAAS,gBAAgB,KAAK,IAAI;AAC3E,YAAI,OAAO;AAGX,YAAI,YAAY,CAAC,EAAE,aAAa,QAAQ,GAAG;AACzC,cAAI,CAAC,cAAc;AAAA,UAEnB,OAAO;AACL,oEAAsB,WAAW;AACjC,kBAAM,gBAAgB,MAAM,OAC1B,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,KAAK,0CAAe,EAAE,KAAK,CAClE;AACA,mBAAO,EAAE,eAAe,EAAE,WAAW,wCAAuB,GAAG;AAAA,cAC7D;AAAA,cACA,GAAG,cAAc,IAAI,CAAC,QAAQ,IAAI,MAAM,WAAW;AAAA,YACrD,CAAC;AAAA,UACH;AAAA,QACF;AAEA,aAAK,WAAW,KACd,EAAE,aAAa,EAAE,cAAc,WAAW,GAAG,EAAE,uBAAuB,IAAI,CAAC,CAC7E;AAAA,MACF;AAEA,YAAM,UAAU,KAAK,OAAO,oBAAoB,UAAU,aAAa,gBAAgB;AAEvF,iBAAW,EAAE,WAAW,WAAW,aAAa;AAC9C,YAAI,OAAO,IAAI,SAAS,GAAG;AACzB,cAAI,SAAS;AACX,kBAAM,MAAM,OAAO,IAAI,SAAS;AAChC,gBAAI,aAAa,KAAK,OAAO;AAC7B,mBAAO,IAAI,WAAW,GAAG;AAAA,UAC3B;AAAA,QACF,WAAW,MAAM,QAAQ;AACvB,cAAI,MAAM,SAAS,GAAG;AACpB,oBAAQ,IAAI,iBAAiB,EAAE,MAAM,CAAC;AACtC,kBAAM,IAAI,MAAM,mCAAmC;AAAA,UACrD;AACA,iBAAO,IAAI,WAAW;AAAA,YACpB,KAAK,MAAM;AAAA,YACX,cAAc,CAAC,OAAO;AAAA,UACxB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAC;AAED,MAAI,CAAC,OAAQ,CAAC,IAAI,YAAY,CAAC,IAAI,aAAa,CAAC,IAAI,WAAY;AAC/D,QAAI,kBAAkB;AACpB,cAAQ,IAAI,2BAA2B,GAAG;AAAA,IAC5C;AACA,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,MAAM,KAAK,OAAO,OAAO,CAAC,EACtC,IAAI,CAAC,MAAM,EAAE,GAAG,EAChB,KAAK,IAAI,EACT,KAAK;AAER,MAAI,QAAQ;AACV,UAAM,WAAW,WACb,WAAW,OAAO,KAAK,MAAM,EAAE,SAAS,QAAQ,MAChD,WAAW;AACf,UAAM,SAAS,OAAO;AACtB,UAAM,aAAa,GAAG,aAAa,iBAAiB,YAAY;AAChE,QAAI,QAAQ,KAAK,QAAQ,EAAE,kBAAkB,CAAC,GAAG,EAAE,cAAc,UAAU,CAAC,CAAC;AAAA,EAC/E;AAEA,QAAM,SAAS,8BACb,KACA;AAAA,IACE,SAAS;AAAA,IACT,UAAU;AAAA,IAEV,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,YAAY;AAAA,EACd,GACA,MACF;AAEA,MAAI,kBAAkB;AACpB,YAAQ,IACN,wCACA,OAAO,KACJ,MAAM,IAAI,EACV,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,IAAI,CAAC,EACjC,KAAK,IAAI,CACd;AACA,YAAQ,IAAI,0CAA0C,MAAM;AAAA,EAC9D;AAEA,MAAI,iBAAiB;AACnB,UAAM,UAAU,MACZ,KAAK,MAAQ,SAAQ,YAAY,EAAE,WAAW,IAAI,YAAY,OAAO,OAAQ,EAAE,IAAI,KACnF;AACJ,UAAM,QAAO,0BAAS,UAAU,EAC7B,QAAQ,cAAc,EAAE,EACxB,MAAM,GAAG,EAAE,EACX,KAAK,EACL,SAAS,EAAE;AACd,UAAM,eAAe,GAAG,IAAI,YAAY,SAAS,CAAC;AAClD,UAAM,WAAW,GAAG,IAAI,QAAQ,SAAS,CAAC;AAC1C,UAAM,eAAe,GAAG,IAAI,YAAY,SAAS,CAAC;AAClD,UAAM,SAAS,QAAQ,IAAI,SAAS,UAAU,KAAK,IAAI,cAAc;AACrE,UAAM,SAAS,KAAK,IAAI,IAAI;AAC5B,UAAM,gBAAgB,SAAS,KAAK,iBAAO,SAAS,MAAM,iBAAO;AACjE,UAAM,YAAY,GAAG,WAAW,gBAAgB,SAAS,CAAC;AAC1D,YAAQ,IACN,GAAG,wCACD,OACF,KAAK,UAAS,mBAAgB,uBAAoB,iBAAiB,aACjE,SAAS,IAAI,YAAY,IAE7B;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI,OAAO;AAAA,IACX,KAAK,OAAO;AAAA,EACd;AACF;AAhYgB;",
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 code = `(${generate(n).code})`;
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) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/createEvaluator.ts"],
4
- "sourcesContent": ["import vm from 'vm'\n\nimport generate from '@babel/generator'\nimport { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport type { TamaguiConfig } from '@tamagui/core'\nimport { createCSSVariable } from '@tamagui/core-node'\n\nimport { FAILED_EVAL } from '../constants'\nimport { evaluateAstNode } from './evaluateAstNode'\nimport { isValidThemeHook } from './extractHelpers'\n\nexport function createEvaluator({\n tamaguiConfig,\n staticNamespace,\n sourcePath,\n traversePath,\n shouldPrintDebug,\n}: {\n tamaguiConfig: TamaguiConfig\n staticNamespace: Record<string, any>\n sourcePath: string\n traversePath: NodePath<t.JSXElement>\n shouldPrintDebug: boolean | 'verbose'\n}) {\n // called when evaluateAstNode encounters a dynamic-looking prop\n const evalFn = (n: t.Node) => {\n // themes\n if (\n t.isMemberExpression(n) &&\n t.isIdentifier(n.property) &&\n isValidThemeHook(traversePath, n, sourcePath)\n ) {\n const key = n.property.name\n if (shouldPrintDebug) {\n console.log(' > found theme prop', key)\n }\n console.log('SHOULD FIND THEME (NESTED NOW)', key) // tamaguiConfig.themes)\n // if (!themeKeys.has(key)) {\n // throw new Error(` > accessing non-existent theme key: ${key}`)\n // }\n return createCSSVariable(key)\n }\n // variable\n if (t.isIdentifier(n) && staticNamespace.hasOwnProperty(n.name)) {\n return staticNamespace[n.name]\n }\n const evalContext = vm.createContext(staticNamespace)\n const code = `(${generate(n as any).code})`\n // if (shouldPrintDebug) {\n // console.log('evaluating', { n, code, evalContext })\n // }\n return vm.runInContext(code, evalContext)\n }\n\n return (n: t.Node) => {\n return evaluateAstNode(n, evalFn)\n }\n}\n\nexport function createSafeEvaluator(attemptEval: (n: t.Node) => any) {\n return (n: t.Node) => {\n try {\n return attemptEval(n)\n } catch (err) {\n return FAILED_EVAL\n }\n }\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAEO,yBAAyB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GAOC;AAED,QAAM,SAAS,wBAAC,MAAc;AAE5B,QACE,EAAE,mBAAmB,CAAC,KACtB,EAAE,aAAa,EAAE,QAAQ,KACzB,iBAAiB,cAAc,GAAG,UAAU,GAC5C;AACA,YAAM,MAAM,EAAE,SAAS;AACvB,UAAI,kBAAkB;AACpB,gBAAQ,IAAI,0BAA0B,GAAG;AAAA,MAC3C;AACA,cAAQ,IAAI,kCAAkC,GAAG;AAIjD,aAAO,kBAAkB,GAAG;AAAA,IAC9B;AAEA,QAAI,EAAE,aAAa,CAAC,KAAK,gBAAgB,eAAe,EAAE,IAAI,GAAG;AAC/D,aAAO,gBAAgB,EAAE;AAAA,IAC3B;AACA,UAAM,cAAc,GAAG,cAAc,eAAe;AACpD,UAAM,OAAO,IAAI,SAAS,CAAQ,EAAE;AAIpC,WAAO,GAAG,aAAa,MAAM,WAAW;AAAA,EAC1C,GA3Be;AA6Bf,SAAO,CAAC,MAAc;AACpB,WAAO,gBAAgB,GAAG,MAAM;AAAA,EAClC;AACF;AA9CgB;AAgDT,6BAA6B,aAAiC;AACnE,SAAO,CAAC,MAAc;AACpB,QAAI;AACF,aAAO,YAAY,CAAC;AAAA,IACtB,SAAS,KAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AARgB;",
4
+ "sourcesContent": ["import vm from 'vm'\n\nimport generate from '@babel/generator'\nimport { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport type { TamaguiConfig } from '@tamagui/core'\nimport { createCSSVariable } from '@tamagui/core-node'\nimport esbuild from 'esbuild'\n\nimport { FAILED_EVAL } from '../constants'\nimport { evaluateAstNode } from './evaluateAstNode'\nimport { isValidThemeHook } from './extractHelpers'\n\nexport function createEvaluator({\n tamaguiConfig,\n staticNamespace,\n sourcePath,\n traversePath,\n shouldPrintDebug,\n}: {\n tamaguiConfig: TamaguiConfig\n staticNamespace: Record<string, any>\n sourcePath: string\n traversePath: NodePath<t.JSXElement>\n shouldPrintDebug: boolean | 'verbose'\n}) {\n // called when evaluateAstNode encounters a dynamic-looking prop\n const evalFn = (n: t.Node) => {\n // themes\n if (\n t.isMemberExpression(n) &&\n t.isIdentifier(n.property) &&\n isValidThemeHook(traversePath, n, sourcePath)\n ) {\n const key = n.property.name\n if (shouldPrintDebug) {\n console.log(' > found theme prop', key)\n }\n console.log('SHOULD FIND THEME (NESTED NOW)', key) // tamaguiConfig.themes)\n // if (!themeKeys.has(key)) {\n // throw new Error(` > accessing non-existent theme key: ${key}`)\n // }\n return createCSSVariable(key)\n }\n // variable\n if (t.isIdentifier(n) && staticNamespace.hasOwnProperty(n.name)) {\n return staticNamespace[n.name]\n }\n const evalContext = vm.createContext(staticNamespace)\n const codeWithTypescriptAnnotations = `(${generate(n as any).code})`\n const code = esbuild\n .transformSync(codeWithTypescriptAnnotations, { loader: 'tsx' })\n .code.replace(/;\\n$/, '')\n\n if (shouldPrintDebug) {\n console.log('evaluating', code)\n }\n return vm.runInContext(code, evalContext)\n }\n\n return (n: t.Node) => {\n return evaluateAstNode(n, evalFn)\n }\n}\n\nexport function createSafeEvaluator(attemptEval: (n: t.Node) => any) {\n return (n: t.Node) => {\n try {\n return attemptEval(n)\n } catch (err) {\n return FAILED_EVAL\n }\n }\n}\n"],
5
+ "mappings": ";;AAAA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEO,yBAAyB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GAOC;AAED,QAAM,SAAS,wBAAC,MAAc;AAE5B,QACE,EAAE,mBAAmB,CAAC,KACtB,EAAE,aAAa,EAAE,QAAQ,KACzB,iBAAiB,cAAc,GAAG,UAAU,GAC5C;AACA,YAAM,MAAM,EAAE,SAAS;AACvB,UAAI,kBAAkB;AACpB,gBAAQ,IAAI,0BAA0B,GAAG;AAAA,MAC3C;AACA,cAAQ,IAAI,kCAAkC,GAAG;AAIjD,aAAO,kBAAkB,GAAG;AAAA,IAC9B;AAEA,QAAI,EAAE,aAAa,CAAC,KAAK,gBAAgB,eAAe,EAAE,IAAI,GAAG;AAC/D,aAAO,gBAAgB,EAAE;AAAA,IAC3B;AACA,UAAM,cAAc,GAAG,cAAc,eAAe;AACpD,UAAM,gCAAgC,IAAI,SAAS,CAAQ,EAAE;AAC7D,UAAM,OAAO,QACV,cAAc,+BAA+B,EAAE,QAAQ,MAAM,CAAC,EAC9D,KAAK,QAAQ,QAAQ,EAAE;AAE1B,QAAI,kBAAkB;AACpB,cAAQ,IAAI,cAAc,IAAI;AAAA,IAChC;AACA,WAAO,GAAG,aAAa,MAAM,WAAW;AAAA,EAC1C,GA/Be;AAiCf,SAAO,CAAC,MAAc;AACpB,WAAO,gBAAgB,GAAG,MAAM;AAAA,EAClC;AACF;AAlDgB;AAoDT,6BAA6B,aAAiC;AACnE,SAAO,CAAC,MAAc;AACpB,QAAI;AACF,aAAO,YAAY,CAAC;AAAA,IACtB,SAAS,KAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AARgB;",
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) {
@@ -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
- const completeStaticProps = Object.keys(attrs).reduce((acc, index) => {
998
- const cur = attrs[index];
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
- Object.assign(acc, cur.value);
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
- return acc;
1012
+ continue;
1006
1013
  }
1007
1014
  if (!t.isJSXIdentifier(cur.value.name)) {
1008
- return acc;
1015
+ continue;
1009
1016
  }
1010
- const key = cur.value.name.name;
1017
+ const key2 = cur.value.name.name;
1011
1018
  const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true));
1012
- if (value === FAILED_EVAL) {
1013
- return acc;
1019
+ if (value !== FAILED_EVAL) {
1020
+ foundStaticProps = {
1021
+ ...foundStaticProps,
1022
+ [key2]: value
1023
+ };
1014
1024
  }
1015
- acc[key] = value;
1016
1025
  }
1017
- return acc;
1018
- }, {});
1019
- const completeProps = {
1020
- ...staticConfig.defaultProps,
1021
- ...completeStaticProps
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(completeStaticProps)) : [];
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", logLines(objToStr(attr.value)));
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);