@tamagui/static 1.0.1-beta.21 → 1.0.1-beta.211
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/constants.js → constants.js} +9 -4
- package/dist/constants.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/accessSafe.js +14 -4
- package/dist/{esm/extractor → extractor}/accessSafe.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/babelParse.js +20 -17
- package/dist/extractor/babelParse.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/buildClassName.js +40 -11
- package/dist/extractor/buildClassName.js.map +7 -0
- package/dist/extractor/bundle.js +117 -0
- package/dist/extractor/bundle.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/createEvaluator.js +19 -14
- package/dist/extractor/createEvaluator.js.map +7 -0
- package/dist/extractor/createExtractor.js +1645 -0
- package/dist/extractor/createExtractor.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/ensureImportingConcat.js +18 -8
- package/dist/extractor/ensureImportingConcat.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/evaluateAstNode.js +14 -6
- package/dist/{esm/extractor → extractor}/evaluateAstNode.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/extractHelpers.js +91 -27
- package/dist/extractor/extractHelpers.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/extractMediaStyle.js +49 -50
- package/dist/extractor/extractMediaStyle.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/extractToClassNames.js +165 -109
- package/dist/extractor/extractToClassNames.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/findTopmostFunction.js +2 -3
- package/dist/{esm/extractor → extractor}/findTopmostFunction.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/generatedUid.js +9 -4
- package/dist/{cjs/extractor → extractor}/generatedUid.js.map +3 -3
- package/dist/{cjs/extractor → extractor}/getPrefixLogs.js +1 -2
- package/dist/extractor/getPrefixLogs.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/getPropValueFromAttributes.js +24 -15
- package/dist/extractor/getPropValueFromAttributes.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/getSourceModule.js +5 -3
- package/dist/{esm/extractor → extractor}/getSourceModule.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/getStaticBindingsForScope.js +88 -38
- package/dist/extractor/getStaticBindingsForScope.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/hoistClassNames.js +5 -4
- package/dist/{esm/extractor → extractor}/hoistClassNames.js.map +3 -3
- package/dist/{cjs/extractor → extractor}/literalToAst.js +26 -34
- package/dist/{cjs/extractor → extractor}/literalToAst.js.map +2 -2
- package/dist/extractor/loadFile.js +21 -0
- package/dist/extractor/loadFile.js.map +7 -0
- package/dist/extractor/loadTamagui.js +421 -0
- package/dist/extractor/loadTamagui.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/logLines.js +3 -3
- package/dist/{cjs/extractor → extractor}/logLines.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/normalizeTernaries.js +13 -36
- package/dist/extractor/normalizeTernaries.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js +7 -5
- package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/timer.js +11 -4
- package/dist/extractor/timer.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js +52 -0
- package/dist/extractor/validHTMLAttributes.js.map +7 -0
- package/dist/getPragmaOptions.js +68 -0
- package/dist/getPragmaOptions.js.map +7 -0
- package/dist/helpers/memoize.js +46 -0
- package/dist/helpers/memoize.js.map +7 -0
- package/dist/{cjs/index.js → index.js} +10 -7
- package/dist/index.js.map +7 -0
- package/dist/require.js +90 -0
- package/dist/require.js.map +7 -0
- package/dist/tamagui-node/tamagui.config.js +6781 -0
- package/dist/{jsx/types.js → tamagui-node/tamaguicore-components.config.js} +0 -0
- package/dist/tamagui-node/tamaguitestdesignsystem-components.config.js +31 -0
- package/dist/{cjs/types.js → types.js} +1 -0
- package/dist/types.js.map +7 -0
- package/dist/webpackPlugin.js +35 -0
- package/dist/webpackPlugin.js.map +7 -0
- package/package.json +47 -35
- package/src/constants.ts +14 -0
- package/src/extractor/accessSafe.ts +18 -0
- package/src/extractor/babelParse.ts +28 -0
- package/src/extractor/buildClassName.ts +77 -0
- package/src/extractor/bundle.ts +110 -0
- package/src/extractor/createEvaluator.ts +73 -0
- package/src/extractor/createExtractor.ts +2133 -0
- package/src/extractor/ensureImportingConcat.ts +32 -0
- package/src/extractor/evaluateAstNode.ts +121 -0
- package/src/extractor/extractHelpers.ts +201 -0
- package/src/extractor/extractMediaStyle.ts +199 -0
- package/src/extractor/extractToClassNames.ts +450 -0
- package/src/extractor/findTopmostFunction.ts +22 -0
- package/src/extractor/generatedUid.ts +43 -0
- package/src/extractor/getPrefixLogs.ts +6 -0
- package/src/extractor/getPropValueFromAttributes.ts +92 -0
- package/src/extractor/getSourceModule.ts +101 -0
- package/src/extractor/getStaticBindingsForScope.ts +227 -0
- package/src/extractor/hoistClassNames.ts +45 -0
- package/src/extractor/literalToAst.ts +84 -0
- package/src/extractor/loadFile.ts +17 -0
- package/src/extractor/loadTamagui.ts +480 -0
- package/src/extractor/logLines.ts +16 -0
- package/src/extractor/normalizeTernaries.ts +63 -0
- package/src/extractor/removeUnusedHooks.ts +76 -0
- package/src/extractor/timer.ts +29 -0
- package/src/extractor/validHTMLAttributes.ts +99 -0
- package/src/getPragmaOptions.ts +53 -0
- package/src/helpers/memoize.ts +21 -0
- package/src/index.ts +11 -0
- package/src/require.ts +107 -0
- package/src/types.ts +98 -0
- package/src/webpackPlugin.ts +9 -0
- package/tamagui.tsconfig.json +5 -0
- package/types/constants.d.ts +1 -1
- package/types/extractor/babelParse.d.ts +2 -1
- package/types/extractor/buildClassName.d.ts +5 -2
- package/types/extractor/bundle.d.ts +13 -0
- package/types/extractor/createEvaluator.d.ts +4 -4
- package/types/extractor/createExtractor.d.ts +26 -11
- package/types/extractor/extractHelpers.d.ts +16 -4
- package/types/extractor/extractMediaStyle.d.ts +3 -3
- package/types/extractor/extractToClassNames.d.ts +5 -9
- package/types/extractor/getPrefixLogs.d.ts +1 -1
- package/types/extractor/getPropValueFromAttributes.d.ts +16 -0
- package/types/extractor/getStaticBindingsForScope.d.ts +2 -1
- package/types/extractor/loadFile.d.ts +1 -0
- package/types/extractor/loadTamagui.d.ts +22 -6
- package/types/extractor/normalizeTernaries.d.ts +1 -1
- package/types/extractor/validHTMLAttributes.d.ts +49 -0
- package/types/getPragmaOptions.d.ts +9 -0
- package/types/helpers/memoize.d.ts +8 -0
- package/types/index.d.ts +9 -7
- package/types/require.d.ts +4 -0
- package/types/types.d.ts +32 -32
- package/types/webpackPlugin.d.ts +4 -0
- package/dist/cjs/constants.js.map +0 -7
- package/dist/cjs/extractor/accessSafe.js.map +0 -7
- package/dist/cjs/extractor/babelParse.js.map +0 -7
- package/dist/cjs/extractor/buildClassName.js.map +0 -7
- package/dist/cjs/extractor/createEvaluator.js.map +0 -7
- package/dist/cjs/extractor/createExtractor.js +0 -1221
- package/dist/cjs/extractor/createExtractor.js.map +0 -7
- package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -7
- package/dist/cjs/extractor/evaluateAstNode.js.map +0 -7
- package/dist/cjs/extractor/extractHelpers.js.map +0 -7
- package/dist/cjs/extractor/extractMediaStyle.js.map +0 -7
- package/dist/cjs/extractor/extractToClassNames.js.map +0 -7
- package/dist/cjs/extractor/findTopmostFunction.js.map +0 -7
- package/dist/cjs/extractor/getPrefixLogs.js.map +0 -7
- package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -7
- package/dist/cjs/extractor/getSourceModule.js.map +0 -7
- package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -7
- package/dist/cjs/extractor/hoistClassNames.js.map +0 -7
- package/dist/cjs/extractor/loadTamagui.js +0 -106
- package/dist/cjs/extractor/loadTamagui.js.map +0 -7
- package/dist/cjs/extractor/normalizeTernaries.js.map +0 -7
- package/dist/cjs/extractor/timer.js.map +0 -7
- package/dist/cjs/extractor/validHTMLAttributes.js.map +0 -7
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/patchReactNativeWeb.js +0 -167
- package/dist/cjs/patchReactNativeWeb.js.map +0 -7
- package/dist/cjs/types.js.map +0 -7
- package/dist/esm/constants.js +0 -14
- package/dist/esm/constants.js.map +0 -7
- package/dist/esm/extractor/accessSafe.js +0 -11
- package/dist/esm/extractor/babelParse.js +0 -30
- package/dist/esm/extractor/babelParse.js.map +0 -7
- package/dist/esm/extractor/buildClassName.js +0 -40
- package/dist/esm/extractor/buildClassName.js.map +0 -7
- package/dist/esm/extractor/createEvaluator.js +0 -52
- package/dist/esm/extractor/createEvaluator.js.map +0 -7
- package/dist/esm/extractor/createExtractor.js +0 -1169
- package/dist/esm/extractor/createExtractor.js.map +0 -7
- package/dist/esm/extractor/ensureImportingConcat.js +0 -24
- package/dist/esm/extractor/ensureImportingConcat.js.map +0 -7
- package/dist/esm/extractor/evaluateAstNode.js +0 -94
- package/dist/esm/extractor/extractHelpers.js +0 -103
- package/dist/esm/extractor/extractHelpers.js.map +0 -7
- package/dist/esm/extractor/extractMediaStyle.js +0 -152
- package/dist/esm/extractor/extractMediaStyle.js.map +0 -7
- package/dist/esm/extractor/extractToClassNames.js +0 -293
- package/dist/esm/extractor/extractToClassNames.js.map +0 -7
- package/dist/esm/extractor/findTopmostFunction.js +0 -23
- package/dist/esm/extractor/generatedUid.js +0 -28
- package/dist/esm/extractor/generatedUid.js.map +0 -7
- package/dist/esm/extractor/getPrefixLogs.js +0 -12
- package/dist/esm/extractor/getPrefixLogs.js.map +0 -7
- package/dist/esm/extractor/getPropValueFromAttributes.js +0 -49
- package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -7
- package/dist/esm/extractor/getSourceModule.js +0 -69
- package/dist/esm/extractor/getStaticBindingsForScope.js +0 -137
- package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -7
- package/dist/esm/extractor/hoistClassNames.js +0 -44
- package/dist/esm/extractor/literalToAst.js +0 -80
- package/dist/esm/extractor/literalToAst.js.map +0 -7
- package/dist/esm/extractor/loadTamagui.js +0 -84
- package/dist/esm/extractor/loadTamagui.js.map +0 -7
- package/dist/esm/extractor/logLines.js +0 -22
- package/dist/esm/extractor/logLines.js.map +0 -7
- package/dist/esm/extractor/normalizeTernaries.js +0 -53
- package/dist/esm/extractor/normalizeTernaries.js.map +0 -7
- package/dist/esm/extractor/removeUnusedHooks.js +0 -80
- package/dist/esm/extractor/removeUnusedHooks.js.map +0 -7
- package/dist/esm/extractor/timer.js +0 -24
- package/dist/esm/extractor/timer.js.map +0 -7
- package/dist/esm/extractor/validHTMLAttributes.js +0 -52
- package/dist/esm/extractor/validHTMLAttributes.js.map +0 -7
- package/dist/esm/index.js +0 -14
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/patchReactNativeWeb.js +0 -142
- package/dist/esm/patchReactNativeWeb.js.map +0 -7
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -7
- package/dist/jsx/constants.js +0 -13
- package/dist/jsx/extractor/accessSafe.js +0 -10
- package/dist/jsx/extractor/babelParse.js +0 -29
- package/dist/jsx/extractor/buildClassName.js +0 -39
- package/dist/jsx/extractor/createEvaluator.js +0 -51
- package/dist/jsx/extractor/createExtractor.js +0 -1168
- package/dist/jsx/extractor/ensureImportingConcat.js +0 -23
- package/dist/jsx/extractor/evaluateAstNode.js +0 -93
- package/dist/jsx/extractor/extractHelpers.js +0 -102
- package/dist/jsx/extractor/extractMediaStyle.js +0 -151
- package/dist/jsx/extractor/extractToClassNames.js +0 -292
- package/dist/jsx/extractor/findTopmostFunction.js +0 -22
- package/dist/jsx/extractor/generatedUid.js +0 -27
- package/dist/jsx/extractor/getPrefixLogs.js +0 -11
- package/dist/jsx/extractor/getPropValueFromAttributes.js +0 -48
- package/dist/jsx/extractor/getSourceModule.js +0 -68
- package/dist/jsx/extractor/getStaticBindingsForScope.js +0 -136
- package/dist/jsx/extractor/hoistClassNames.js +0 -43
- package/dist/jsx/extractor/literalToAst.js +0 -79
- package/dist/jsx/extractor/loadTamagui.js +0 -83
- package/dist/jsx/extractor/logLines.js +0 -21
- package/dist/jsx/extractor/normalizeTernaries.js +0 -52
- package/dist/jsx/extractor/removeUnusedHooks.js +0 -79
- package/dist/jsx/extractor/timer.js +0 -23
- package/dist/jsx/extractor/validHTMLAttributes.js +0 -51
- package/dist/jsx/index.js +0 -13
- package/dist/jsx/patchReactNativeWeb.js +0 -141
- package/types/constants.d.ts.map +0 -1
- package/types/extractor/accessSafe.d.ts.map +0 -1
- package/types/extractor/babelParse.d.ts.map +0 -1
- package/types/extractor/buildClassName.d.ts.map +0 -1
- package/types/extractor/createEvaluator.d.ts.map +0 -1
- package/types/extractor/createExtractor.d.ts.map +0 -1
- package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
- package/types/extractor/evaluateAstNode.d.ts.map +0 -1
- package/types/extractor/extractHelpers.d.ts.map +0 -1
- package/types/extractor/extractMediaStyle.d.ts.map +0 -1
- package/types/extractor/extractToClassNames.d.ts.map +0 -1
- package/types/extractor/findTopmostFunction.d.ts.map +0 -1
- package/types/extractor/generatedUid.d.ts.map +0 -1
- package/types/extractor/getPrefixLogs.d.ts.map +0 -1
- package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
- package/types/extractor/getSourceModule.d.ts.map +0 -1
- package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
- package/types/extractor/hoistClassNames.d.ts.map +0 -1
- package/types/extractor/literalToAst.d.ts.map +0 -1
- package/types/extractor/loadTamagui.d.ts.map +0 -1
- package/types/extractor/logLines.d.ts.map +0 -1
- package/types/extractor/normalizeTernaries.d.ts.map +0 -1
- package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
- package/types/extractor/timer.d.ts.map +0 -1
- package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
- package/types/index.d.ts.map +0 -1
- package/types/patchReactNativeWeb.d.ts +0 -2
- package/types/patchReactNativeWeb.d.ts.map +0 -1
- package/types/types.d.ts.map +0 -1
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/extractMediaStyle.ts"],
|
|
4
|
-
"sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { TamaguiInternalConfig, getStylesAtomic, mediaObjectToString } from '@tamagui/core-node'\nimport { ViewStyle } from 'react-native'\n\nimport { MEDIA_SEP } from '../constants'\nimport { StyleObject, Ternary } from '../types'\nimport { isInsideTamagui, isPresent } from './extractHelpers'\n\nexport function extractMediaStyle(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n tamaguiConfig: TamaguiInternalConfig,\n sourcePath: string,\n importance = 0,\n shouldPrintDebug: boolean | 'verbose' = false\n) {\n const mt = getMediaQueryTernary(ternary, jsxPath, sourcePath)\n if (!mt) {\n return null\n }\n const { key } = mt\n const mq = tamaguiConfig.media[key]\n if (!mq) {\n console.error(`Media query \"${key}\" not found: ${Object.keys(tamaguiConfig.media)}`)\n return null\n }\n const getStyleObj = (styleObj: ViewStyle | null, negate = false) => {\n return styleObj ? { styleObj, negate } : null\n }\n const styleOpts = [\n getStyleObj(ternary.consequent, false),\n getStyleObj(ternary.alternate, true),\n ].filter(isPresent)\n if (shouldPrintDebug && !styleOpts.length) {\n console.log(' media query, no styles?')\n return null\n }\n // for now order first strongest\n const mediaKeys = Object.keys(tamaguiConfig.media)\n const mediaKeyPrecendence = mediaKeys.reduce((acc, cur, i) => {\n acc[cur] = new Array(importance + 1).fill(':root').join('')\n return acc\n }, {})\n let mediaStyles: StyleObject[] = []\n for (const { styleObj, negate } of styleOpts) {\n const styles = getStylesAtomic(styleObj)\n const singleMediaStyles = styles.map((style) => {\n const negKey = negate ? '0' : ''\n const ogPrefix = style.identifier.slice(0, style.identifier.indexOf('-') + 1)\n // adds an extra separator before and after to detect later in concatClassName\n // so it goes from: \"_f-[hash]\"\n // to: \"_f-_sm0_[hash]\" or \"_f-_sm_[hash]\"\n const identifier = `${style.identifier.replace(\n ogPrefix,\n `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`\n )}`\n const className = `.${identifier}`\n const mediaSelector = mediaObjectToString(tamaguiConfig.media[key])\n const screenStr = negate ? 'not all' : 'screen'\n const mediaQuery = `${screenStr} and ${mediaSelector}`\n const precendencePrefix = mediaKeyPrecendence[key]\n const styleInner = style.rules[0].replace(style.identifier, identifier)\n // combines media queries if they already exist\n let styleRule = ''\n if (styleInner.includes('@media')) {\n // combine\n styleRule = styleInner.replace('{', ` and ${mediaQuery} {`)\n } else {\n styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`\n }\n return {\n ...style,\n identifier,\n className,\n rules: [styleRule],\n }\n })\n if (shouldPrintDebug === 'verbose') {\n // prettier-ignore\n console.log(' media styles:', importance, styleObj, singleMediaStyles.map(x => x.identifier).join(', '))\n }\n // add to output\n mediaStyles = [...mediaStyles, ...singleMediaStyles]\n }\n // filter out\n ternary.remove()\n return { mediaStyles, ternaryWithoutMedia: mt.ternaryWithoutMedia }\n}\n\nfunction getMediaQueryTernary(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string\n): null | {\n key: string\n bindingName: string\n ternaryWithoutMedia: Ternary | null\n} {\n // this handles unwrapping logical && media query ternarys\n // first, unwrap if it has media logicalExpression\n if (t.isLogicalExpression(ternary.test) && ternary.test.operator === '&&') {\n // *should* be normalized to always be on left side\n const mediaLeft = getMediaInfoFromExpression(\n ternary.test.left,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (mediaLeft) {\n return {\n ...mediaLeft,\n ternaryWithoutMedia: {\n ...ternary,\n test: ternary.test.right,\n },\n }\n }\n }\n // const media = useMedia()\n // ... media.sm\n const result = getMediaInfoFromExpression(\n ternary.test,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (result) {\n return {\n ...result,\n ternaryWithoutMedia: null,\n }\n }\n return null\n}\n\nfunction getMediaInfoFromExpression(\n test: t.Expression,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string,\n inlineMediaQuery?: string\n) {\n if (inlineMediaQuery) {\n return {\n key: inlineMediaQuery,\n bindingName: inlineMediaQuery,\n }\n }\n if (t.isMemberExpression(test) && t.isIdentifier(test.object) && t.isIdentifier(test.property)) {\n const name = test.object['name']\n const key = test.property['name']\n const bindings = jsxPath.scope.getAllBindings()\n const binding = bindings[name]\n if (!binding) return false\n const bindingNode = binding.path?.node\n if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init) return false\n if (!isValidMediaCall(jsxPath, bindingNode.init, sourcePath)) return false\n return { key, bindingName: name }\n }\n if (t.isIdentifier(test)) {\n const key = test.name\n const node = jsxPath.scope.getBinding(test.name)?.path?.node\n if (!t.isVariableDeclarator(node)) return false\n if (!node.init || !isValidMediaCall(jsxPath, node.init, sourcePath)) return false\n return { key, bindingName: key }\n }\n return null\n}\n\nexport function isValidMediaCall(\n jsxPath: NodePath<t.JSXElement>,\n init: t.Expression,\n sourcePath: string\n) {\n if (!t.isCallExpression(init)) return false\n if (!t.isIdentifier(init.callee)) return false\n // TODO could support renaming useMedia by looking up import first\n if (init.callee.name !== 'useMedia') return false\n const bindings = jsxPath.scope.getAllBindings()\n const mediaBinding = bindings['useMedia']\n if (!mediaBinding) return false\n const useMediaImport = mediaBinding.path.parent\n if (!t.isImportDeclaration(useMediaImport)) return false\n if (useMediaImport.source.value !== 'tamagui') {\n if (!isInsideTamagui(sourcePath)) {\n return false\n }\n }\n return true\n}\n"],
|
|
5
|
-
"mappings": ";;AACA;AACA;AAGA;AAEA;AAEO,2BACL,SACA,SACA,eACA,YACA,aAAa,GACb,mBAAwC,OACxC;AACA,QAAM,KAAK,qBAAqB,SAAS,SAAS,UAAU;AAC5D,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,EACT;AACA,QAAM,EAAE,QAAQ;AAChB,QAAM,KAAK,cAAc,MAAM;AAC/B,MAAI,CAAC,IAAI;AACP,YAAQ,MAAM,gBAAgB,mBAAmB,OAAO,KAAK,cAAc,KAAK,GAAG;AACnF,WAAO;AAAA,EACT;AACA,QAAM,cAAc,wBAAC,UAA4B,SAAS,UAAU;AAClE,WAAO,WAAW,EAAE,UAAU,OAAO,IAAI;AAAA,EAC3C,GAFoB;AAGpB,QAAM,YAAY;AAAA,IAChB,YAAY,QAAQ,YAAY,KAAK;AAAA,IACrC,YAAY,QAAQ,WAAW,IAAI;AAAA,EACrC,EAAE,OAAO,SAAS;AAClB,MAAI,oBAAoB,CAAC,UAAU,QAAQ;AACzC,YAAQ,IAAI,2BAA2B;AACvC,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,OAAO,KAAK,cAAc,KAAK;AACjD,QAAM,sBAAsB,UAAU,OAAO,CAAC,KAAK,KAAK,MAAM;AAC5D,QAAI,OAAO,IAAI,MAAM,aAAa,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,EAAE;AAC1D,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,MAAI,cAA6B,CAAC;AAClC,aAAW,EAAE,UAAU,YAAY,WAAW;AAC5C,UAAM,SAAS,gBAAgB,QAAQ;AACvC,UAAM,oBAAoB,OAAO,IAAI,CAAC,UAAU;AAC9C,YAAM,SAAS,SAAS,MAAM;AAC9B,YAAM,WAAW,MAAM,WAAW,MAAM,GAAG,MAAM,WAAW,QAAQ,GAAG,IAAI,CAAC;AAI5E,YAAM,aAAa,GAAG,MAAM,WAAW,QACrC,UACA,GAAG,WAAW,YAAY,MAAM,SAAS,WAC3C;AACA,YAAM,YAAY,IAAI;AACtB,YAAM,gBAAgB,oBAAoB,cAAc,MAAM,IAAI;AAClE,YAAM,YAAY,SAAS,YAAY;AACvC,YAAM,aAAa,GAAG,iBAAiB;AACvC,YAAM,oBAAoB,oBAAoB;AAC9C,YAAM,aAAa,MAAM,MAAM,GAAG,QAAQ,MAAM,YAAY,UAAU;AAEtE,UAAI,YAAY;AAChB,UAAI,WAAW,SAAS,QAAQ,GAAG;AAEjC,oBAAY,WAAW,QAAQ,KAAK,QAAQ,cAAc;AAAA,MAC5D,OAAO;AACL,oBAAY,UAAU,gBAAgB,qBAAqB;AAAA,MAC7D;AACA,aAAO;AAAA,WACF;AAAA,QACH;AAAA,QACA;AAAA,QACA,OAAO,CAAC,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AACD,QAAI,qBAAqB,WAAW;AAElC,cAAQ,IAAI,mBAAmB,YAAY,UAAU,kBAAkB,IAAI,OAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;AAAA,IAC1G;AAEA,kBAAc,CAAC,GAAG,aAAa,GAAG,iBAAiB;AAAA,EACrD;AAEA,UAAQ,OAAO;AACf,SAAO,EAAE,aAAa,qBAAqB,GAAG,oBAAoB;AACpE;AA/EgB;AAiFhB,8BACE,SACA,SACA,YAKA;AAGA,MAAI,EAAE,oBAAoB,QAAQ,IAAI,KAAK,QAAQ,KAAK,aAAa,MAAM;AAEzE,UAAM,YAAY,2BAChB,QAAQ,KAAK,MACb,SACA,YACA,QAAQ,gBACV;AACA,QAAI,WAAW;AACb,aAAO;AAAA,WACF;AAAA,QACH,qBAAqB;AAAA,aAChB;AAAA,UACH,MAAM,QAAQ,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,QAAM,SAAS,2BACb,QAAQ,MACR,SACA,YACA,QAAQ,gBACV;AACA,MAAI,QAAQ;AACV,WAAO;AAAA,SACF;AAAA,MACH,qBAAqB;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AA5CS;AA8CT,oCACE,MACA,SACA,YACA,kBACA;AA7IF;AA8IE,MAAI,kBAAkB;AACpB,WAAO;AAAA,MACL,KAAK;AAAA,MACL,aAAa;AAAA,IACf;AAAA,EACF;AACA,MAAI,EAAE,mBAAmB,IAAI,KAAK,EAAE,aAAa,KAAK,MAAM,KAAK,EAAE,aAAa,KAAK,QAAQ,GAAG;AAC9F,UAAM,OAAO,KAAK,OAAO;AACzB,UAAM,MAAM,KAAK,SAAS;AAC1B,UAAM,WAAW,QAAQ,MAAM,eAAe;AAC9C,UAAM,UAAU,SAAS;AACzB,QAAI,CAAC;AAAS,aAAO;AACrB,UAAM,cAAc,cAAQ,SAAR,mBAAc;AAClC,QAAI,CAAC,EAAE,qBAAqB,WAAW,KAAK,CAAC,YAAY;AAAM,aAAO;AACtE,QAAI,CAAC,iBAAiB,SAAS,YAAY,MAAM,UAAU;AAAG,aAAO;AACrE,WAAO,EAAE,KAAK,aAAa,KAAK;AAAA,EAClC;AACA,MAAI,EAAE,aAAa,IAAI,GAAG;AACxB,UAAM,MAAM,KAAK;AACjB,UAAM,OAAO,oBAAQ,MAAM,WAAW,KAAK,IAAI,MAAlC,mBAAqC,SAArC,mBAA2C;AACxD,QAAI,CAAC,EAAE,qBAAqB,IAAI;AAAG,aAAO;AAC1C,QAAI,CAAC,KAAK,QAAQ,CAAC,iBAAiB,SAAS,KAAK,MAAM,UAAU;AAAG,aAAO;AAC5E,WAAO,EAAE,KAAK,aAAa,IAAI;AAAA,EACjC;AACA,SAAO;AACT;AA/BS;AAiCF,0BACL,SACA,MACA,YACA;AACA,MAAI,CAAC,EAAE,iBAAiB,IAAI;AAAG,WAAO;AACtC,MAAI,CAAC,EAAE,aAAa,KAAK,MAAM;AAAG,WAAO;AAEzC,MAAI,KAAK,OAAO,SAAS;AAAY,WAAO;AAC5C,QAAM,WAAW,QAAQ,MAAM,eAAe;AAC9C,QAAM,eAAe,SAAS;AAC9B,MAAI,CAAC;AAAc,WAAO;AAC1B,QAAM,iBAAiB,aAAa,KAAK;AACzC,MAAI,CAAC,EAAE,oBAAoB,cAAc;AAAG,WAAO;AACnD,MAAI,eAAe,OAAO,UAAU,WAAW;AAC7C,QAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AApBgB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
import * as path from "path";
|
|
4
|
-
import { basename } from "path";
|
|
5
|
-
import * as util from "util";
|
|
6
|
-
import generate from "@babel/generator";
|
|
7
|
-
import * as t from "@babel/types";
|
|
8
|
-
import { getStylesAtomic } from "@tamagui/core-node";
|
|
9
|
-
import { concatClassName } from "@tamagui/helpers";
|
|
10
|
-
import invariant from "invariant";
|
|
11
|
-
import { CONCAT_CLASSNAME_IMPORT } from "../constants";
|
|
12
|
-
import { babelParse } from "./babelParse";
|
|
13
|
-
import { buildClassName } from "./buildClassName";
|
|
14
|
-
import { ensureImportingConcat } from "./ensureImportingConcat";
|
|
15
|
-
import { isSimpleSpread } from "./extractHelpers";
|
|
16
|
-
import { extractMediaStyle } from "./extractMediaStyle";
|
|
17
|
-
import { getPrefixLogs } from "./getPrefixLogs";
|
|
18
|
-
import { hoistClassNames } from "./hoistClassNames";
|
|
19
|
-
import { literalToAst } from "./literalToAst";
|
|
20
|
-
import { logLines } from "./logLines";
|
|
21
|
-
import { timer } from "./timer";
|
|
22
|
-
const mergeStyleGroups = {
|
|
23
|
-
shadowOpacity: true,
|
|
24
|
-
shadowRadius: true,
|
|
25
|
-
shadowColor: true,
|
|
26
|
-
shadowOffset: true
|
|
27
|
-
};
|
|
28
|
-
function extractToClassNames({
|
|
29
|
-
loader,
|
|
30
|
-
extractor,
|
|
31
|
-
source,
|
|
32
|
-
sourcePath,
|
|
33
|
-
options,
|
|
34
|
-
shouldPrintDebug,
|
|
35
|
-
cssLoaderPath,
|
|
36
|
-
threaded,
|
|
37
|
-
cssPath
|
|
38
|
-
}) {
|
|
39
|
-
var _a;
|
|
40
|
-
const tm = timer();
|
|
41
|
-
if (typeof source !== "string") {
|
|
42
|
-
throw new Error("`source` must be a string of javascript");
|
|
43
|
-
}
|
|
44
|
-
invariant(typeof sourcePath === "string" && path.isAbsolute(sourcePath), "`sourcePath` must be an absolute path to a .js file");
|
|
45
|
-
const shouldLogTiming = (_a = options.logTimings) != null ? _a : true;
|
|
46
|
-
const start = Date.now();
|
|
47
|
-
const mem = shouldLogTiming ? process.memoryUsage() : null;
|
|
48
|
-
let ast;
|
|
49
|
-
try {
|
|
50
|
-
ast = babelParse(source);
|
|
51
|
-
} catch (err) {
|
|
52
|
-
console.error("babel parse error:", sourcePath);
|
|
53
|
-
throw err;
|
|
54
|
-
}
|
|
55
|
-
tm.mark(`babel-parse`, shouldPrintDebug === "verbose");
|
|
56
|
-
const cssMap = /* @__PURE__ */ new Map();
|
|
57
|
-
const existingHoists = {};
|
|
58
|
-
let hasFlattened = false;
|
|
59
|
-
const res = extractor.parse(ast, {
|
|
60
|
-
sourcePath,
|
|
61
|
-
shouldPrintDebug,
|
|
62
|
-
...options,
|
|
63
|
-
getFlattenedNode: ({ tag }) => {
|
|
64
|
-
hasFlattened = true;
|
|
65
|
-
return tag;
|
|
66
|
-
},
|
|
67
|
-
onExtractTag: ({
|
|
68
|
-
attrs,
|
|
69
|
-
node,
|
|
70
|
-
attemptEval,
|
|
71
|
-
jsxPath,
|
|
72
|
-
originalNodeName,
|
|
73
|
-
filePath,
|
|
74
|
-
lineNumbers,
|
|
75
|
-
programPath,
|
|
76
|
-
isFlattened
|
|
77
|
-
}) => {
|
|
78
|
-
var _a2, _b;
|
|
79
|
-
let finalClassNames = [];
|
|
80
|
-
let finalAttrs = [];
|
|
81
|
-
let finalStyles = [];
|
|
82
|
-
const viewStyles = {};
|
|
83
|
-
for (const attr of attrs) {
|
|
84
|
-
if (attr.type === "style") {
|
|
85
|
-
Object.assign(viewStyles, attr.value);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
const ensureNeededPrevStyle = /* @__PURE__ */ __name((style) => {
|
|
89
|
-
var _a3;
|
|
90
|
-
const keys = Object.keys(style);
|
|
91
|
-
if (!keys.some((key) => mergeStyleGroups[key])) {
|
|
92
|
-
return style;
|
|
93
|
-
}
|
|
94
|
-
for (const k in mergeStyleGroups) {
|
|
95
|
-
if (k in viewStyles) {
|
|
96
|
-
style[k] = (_a3 = style[k]) != null ? _a3 : viewStyles[k];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return style;
|
|
100
|
-
}, "ensureNeededPrevStyle");
|
|
101
|
-
const addStyles = /* @__PURE__ */ __name((style) => {
|
|
102
|
-
if (!style)
|
|
103
|
-
return [];
|
|
104
|
-
const styleWithPrev = ensureNeededPrevStyle(style);
|
|
105
|
-
const res2 = getStylesAtomic(styleWithPrev);
|
|
106
|
-
if (res2.length) {
|
|
107
|
-
finalStyles = [...finalStyles, ...res2];
|
|
108
|
-
}
|
|
109
|
-
return res2;
|
|
110
|
-
}, "addStyles");
|
|
111
|
-
let lastMediaImportance = 1;
|
|
112
|
-
for (const attr of attrs) {
|
|
113
|
-
switch (attr.type) {
|
|
114
|
-
case "style":
|
|
115
|
-
if (!isFlattened) {
|
|
116
|
-
const { hoverStyle, pressStyle, focusStyle } = attr.value;
|
|
117
|
-
const pseudos = [
|
|
118
|
-
["hoverStyle", hoverStyle],
|
|
119
|
-
["pressStyle", pressStyle],
|
|
120
|
-
["focusStyle", focusStyle]
|
|
121
|
-
];
|
|
122
|
-
const styles2 = getStylesAtomic(attr.value, {
|
|
123
|
-
splitTransforms: true
|
|
124
|
-
});
|
|
125
|
-
finalStyles = [...finalStyles, ...styles2];
|
|
126
|
-
for (const [key, value] of pseudos) {
|
|
127
|
-
if (value && Object.keys(value).length) {
|
|
128
|
-
finalAttrs.push(t.jsxAttribute(t.jsxIdentifier(key), t.jsxExpressionContainer(literalToAst(value))));
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
for (const style of styles2) {
|
|
132
|
-
finalAttrs.push(t.jsxAttribute(t.jsxIdentifier(style.property), t.stringLiteral(style.identifier)));
|
|
133
|
-
}
|
|
134
|
-
} else {
|
|
135
|
-
const styles2 = addStyles(attr.value);
|
|
136
|
-
const newClassNames = concatClassName(styles2.map((x) => x.identifier).join(" "));
|
|
137
|
-
const existing = finalClassNames.find((x) => x.type == "StringLiteral");
|
|
138
|
-
if (existing) {
|
|
139
|
-
existing.value = `${existing.value} ${newClassNames}`;
|
|
140
|
-
} else {
|
|
141
|
-
finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)];
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
break;
|
|
145
|
-
case "attr":
|
|
146
|
-
const val = attr.value;
|
|
147
|
-
if (t.isJSXSpreadAttribute(val)) {
|
|
148
|
-
if (isSimpleSpread(val)) {
|
|
149
|
-
finalClassNames.push(t.logicalExpression("&&", val.argument, t.memberExpression(val.argument, t.identifier("className"))));
|
|
150
|
-
}
|
|
151
|
-
} else if (val.name.name === "className") {
|
|
152
|
-
const value = val.value;
|
|
153
|
-
if (value) {
|
|
154
|
-
try {
|
|
155
|
-
const evaluatedValue = attemptEval(value);
|
|
156
|
-
finalClassNames.push(t.stringLiteral(evaluatedValue));
|
|
157
|
-
} catch (e) {
|
|
158
|
-
finalClassNames.push(value["expression"]);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
continue;
|
|
162
|
-
}
|
|
163
|
-
finalAttrs.push(val);
|
|
164
|
-
break;
|
|
165
|
-
case "ternary":
|
|
166
|
-
const mediaExtraction = extractMediaStyle(attr.value, jsxPath, extractor.getTamagui(), sourcePath, lastMediaImportance, shouldPrintDebug);
|
|
167
|
-
if (shouldPrintDebug) {
|
|
168
|
-
if (mediaExtraction) {
|
|
169
|
-
console.log("ternary (mediaStyles)", (_b = (_a2 = mediaExtraction.ternaryWithoutMedia) == null ? void 0 : _a2.inlineMediaQuery) != null ? _b : "", mediaExtraction.mediaStyles.map((x) => x.identifier).join("."));
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
if (!mediaExtraction) {
|
|
173
|
-
addTernaryStyle(attr.value, addStyles(attr.value.consequent), addStyles(attr.value.alternate));
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
lastMediaImportance++;
|
|
177
|
-
if (mediaExtraction.mediaStyles) {
|
|
178
|
-
finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles];
|
|
179
|
-
}
|
|
180
|
-
if (mediaExtraction.ternaryWithoutMedia) {
|
|
181
|
-
addTernaryStyle(mediaExtraction.ternaryWithoutMedia, mediaExtraction.mediaStyles, []);
|
|
182
|
-
} else {
|
|
183
|
-
finalClassNames = [
|
|
184
|
-
...finalClassNames,
|
|
185
|
-
...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier))
|
|
186
|
-
];
|
|
187
|
-
}
|
|
188
|
-
break;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
function addTernaryStyle(ternary, a, b) {
|
|
192
|
-
const cCN = a.map((x) => x.identifier).join(" ");
|
|
193
|
-
const aCN = b.map((x) => x.identifier).join(" ");
|
|
194
|
-
if (a.length && b.length) {
|
|
195
|
-
finalClassNames.push(t.conditionalExpression(ternary.test, t.stringLiteral(cCN), t.stringLiteral(aCN)));
|
|
196
|
-
} else {
|
|
197
|
-
finalClassNames.push(t.conditionalExpression(ternary.test, t.stringLiteral(" " + cCN), t.stringLiteral(" " + aCN)));
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
__name(addTernaryStyle, "addTernaryStyle");
|
|
201
|
-
if (shouldPrintDebug) {
|
|
202
|
-
console.log(" finalClassNames\n", logLines(finalClassNames.map((x) => x["value"]).join(" ")));
|
|
203
|
-
}
|
|
204
|
-
node.attributes = finalAttrs;
|
|
205
|
-
if (finalClassNames.length) {
|
|
206
|
-
let names = buildClassName(finalClassNames);
|
|
207
|
-
if (t.isStringLiteral(names)) {
|
|
208
|
-
names.value = concatClassName(names.value);
|
|
209
|
-
}
|
|
210
|
-
const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null;
|
|
211
|
-
let expr = nameExpr;
|
|
212
|
-
if (nameExpr && !t.isIdentifier(nameExpr)) {
|
|
213
|
-
if (!hasFlattened) {
|
|
214
|
-
} else {
|
|
215
|
-
ensureImportingConcat(programPath);
|
|
216
|
-
const simpleSpreads = attrs.filter((x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value));
|
|
217
|
-
expr = t.callExpression(t.identifier(CONCAT_CLASSNAME_IMPORT), [
|
|
218
|
-
expr,
|
|
219
|
-
...simpleSpreads.map((val) => val.value["argument"])
|
|
220
|
-
]);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
node.attributes.push(t.jsxAttribute(t.jsxIdentifier("className"), t.jsxExpressionContainer(expr)));
|
|
224
|
-
}
|
|
225
|
-
const comment = util.format("/* %s:%s (%s) */", filePath, lineNumbers, originalNodeName);
|
|
226
|
-
for (const { className, rules, identifier, value } of finalStyles) {
|
|
227
|
-
if (cssMap.has(className)) {
|
|
228
|
-
if (comment) {
|
|
229
|
-
const val = cssMap.get(className);
|
|
230
|
-
val.commentTexts.push(comment);
|
|
231
|
-
cssMap.set(className, val);
|
|
232
|
-
}
|
|
233
|
-
} else if (rules.length) {
|
|
234
|
-
if (rules.length > 1) {
|
|
235
|
-
console.log(" rules error", { rules });
|
|
236
|
-
throw new Error(`Shouldn't have more than one rule`);
|
|
237
|
-
}
|
|
238
|
-
cssMap.set(className, {
|
|
239
|
-
css: rules[0],
|
|
240
|
-
commentTexts: [comment]
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
if (!res || !res.modified && !res.optimized && !res.flattened) {
|
|
247
|
-
if (shouldPrintDebug) {
|
|
248
|
-
console.log("no res or none modified", res);
|
|
249
|
-
}
|
|
250
|
-
return null;
|
|
251
|
-
}
|
|
252
|
-
const styles = Array.from(cssMap.values()).map((x) => x.css).join("\n").trim();
|
|
253
|
-
if (styles) {
|
|
254
|
-
const cssQuery = threaded ? `cssData=${Buffer.from(styles).toString("base64")}` : `cssPath=${cssPath}`;
|
|
255
|
-
const remReq = loader.remainingRequest;
|
|
256
|
-
const importPath = `${cssPath}!=!${cssLoaderPath}?${cssQuery}!${remReq}`;
|
|
257
|
-
ast.program.body.unshift(t.importDeclaration([], t.stringLiteral(importPath)));
|
|
258
|
-
}
|
|
259
|
-
const result = generate(ast, {
|
|
260
|
-
concise: false,
|
|
261
|
-
filename: sourcePath,
|
|
262
|
-
retainLines: false,
|
|
263
|
-
sourceFileName: sourcePath,
|
|
264
|
-
sourceMaps: true
|
|
265
|
-
}, source);
|
|
266
|
-
if (shouldPrintDebug) {
|
|
267
|
-
console.log("\n -------- output code ------- \n\n", result.code.split("\n").filter((x) => !x.startsWith("//")).join("\n"));
|
|
268
|
-
console.log("\n -------- output style -------- \n\n", styles);
|
|
269
|
-
}
|
|
270
|
-
if (shouldLogTiming) {
|
|
271
|
-
const memUsed = mem ? Math.round((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204 * 10) / 10 : 0;
|
|
272
|
-
const path2 = basename(sourcePath).replace(/\.[jt]sx?$/, "").slice(0, 22).trim().padStart(24);
|
|
273
|
-
const numOptimized = `${res.optimized}`.padStart(3);
|
|
274
|
-
const numFound = `${res.found}`.padStart(3);
|
|
275
|
-
const numFlattened = `${res.flattened}`.padStart(3);
|
|
276
|
-
const memory = process.env.DEBUG && memUsed > 10 ? ` ${memUsed}MB` : "";
|
|
277
|
-
const timing = Date.now() - start;
|
|
278
|
-
const timingWarning = timing > 50 ? "\u26A0\uFE0F" : timing > 150 ? "\u2622\uFE0F" : "";
|
|
279
|
-
const timingStr = `${timing}ms${timingWarning}`.padStart(6);
|
|
280
|
-
console.log(`${getPrefixLogs(options)} ${path2} ${numFound} \xB7 ${numOptimized} \xB7 ${numFlattened} ${timingStr} ${memory ? `(${memory})` : ""}`);
|
|
281
|
-
}
|
|
282
|
-
return {
|
|
283
|
-
ast,
|
|
284
|
-
styles,
|
|
285
|
-
js: result.code,
|
|
286
|
-
map: result.map
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
__name(extractToClassNames, "extractToClassNames");
|
|
290
|
-
export {
|
|
291
|
-
extractToClassNames
|
|
292
|
-
};
|
|
293
|
-
//# sourceMappingURL=extractToClassNames.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 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 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 const viewStyles = {}\n for (const attr of attrs) {\n if (attr.type === 'style') {\n Object.assign(viewStyles, attr.value)\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 // 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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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
function findTopmostFunction(jsxPath) {
|
|
4
|
-
const isFunction = /* @__PURE__ */ __name((path) => path.isArrowFunctionExpression() || path.isFunctionDeclaration() || path.isFunctionExpression(), "isFunction");
|
|
5
|
-
let compFn = jsxPath.findParent(isFunction);
|
|
6
|
-
while (compFn) {
|
|
7
|
-
const parent = compFn.findParent(isFunction);
|
|
8
|
-
if (parent) {
|
|
9
|
-
compFn = parent;
|
|
10
|
-
} else {
|
|
11
|
-
break;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
if (!compFn) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
return compFn;
|
|
18
|
-
}
|
|
19
|
-
__name(findTopmostFunction, "findTopmostFunction");
|
|
20
|
-
export {
|
|
21
|
-
findTopmostFunction
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=findTopmostFunction.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
import * as t from "@babel/types";
|
|
4
|
-
import invariant from "invariant";
|
|
5
|
-
function generateUid(scope, name) {
|
|
6
|
-
invariant(typeof scope === "object", "generateUid expects a scope object as its first parameter");
|
|
7
|
-
invariant(typeof name === "string" && name !== "", "generateUid expects a valid name as its second parameter");
|
|
8
|
-
name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, "");
|
|
9
|
-
let uid;
|
|
10
|
-
let i = 0;
|
|
11
|
-
do {
|
|
12
|
-
if (i > 1) {
|
|
13
|
-
uid = name + i;
|
|
14
|
-
} else {
|
|
15
|
-
uid = name;
|
|
16
|
-
}
|
|
17
|
-
i++;
|
|
18
|
-
} while (scope.hasLabel(uid) || scope.hasBinding(uid) || scope.hasGlobal(uid) || scope.hasReference(uid));
|
|
19
|
-
const program = scope.getProgramParent();
|
|
20
|
-
program.references[uid] = true;
|
|
21
|
-
program.uids[uid] = true;
|
|
22
|
-
return uid;
|
|
23
|
-
}
|
|
24
|
-
__name(generateUid, "generateUid");
|
|
25
|
-
export {
|
|
26
|
-
generateUid
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=generatedUid.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/generatedUid.ts"],
|
|
4
|
-
"sourcesContent": ["import * as t from '@babel/types'\nimport invariant from 'invariant'\n\n// TODO: open a PR upstream\ndeclare module '@babel/types' {\n export function toIdentifier(input: string): string\n}\n\n// A clone of path.scope.generateUid that doesn't prepend underscores\nexport function generateUid(scope: any, name: string): string {\n invariant(typeof scope === 'object', 'generateUid expects a scope object as its first parameter')\n invariant(\n typeof name === 'string' && name !== '',\n 'generateUid expects a valid name as its second parameter'\n )\n\n name = t\n .toIdentifier(name)\n .replace(/^_+/, '')\n .replace(/[0-9]+$/g, '')\n\n let uid\n let i = 0\n do {\n if (i > 1) {\n uid = name + i\n } else {\n uid = name\n }\n i++\n } while (\n scope.hasLabel(uid) ||\n scope.hasBinding(uid) ||\n scope.hasGlobal(uid) ||\n scope.hasReference(uid)\n )\n\n const program = scope.getProgramParent()\n program.references[uid] = true\n program.uids[uid] = true\n\n return uid\n}\n"],
|
|
5
|
-
"mappings": ";;AAAA;AACA;AAQO,qBAAqB,OAAY,MAAsB;AAC5D,YAAU,OAAO,UAAU,UAAU,2DAA2D;AAChG,YACE,OAAO,SAAS,YAAY,SAAS,IACrC,0DACF;AAEA,SAAO,EACJ,aAAa,IAAI,EACjB,QAAQ,OAAO,EAAE,EACjB,QAAQ,YAAY,EAAE;AAEzB,MAAI;AACJ,MAAI,IAAI;AACR,KAAG;AACD,QAAI,IAAI,GAAG;AACT,YAAM,OAAO;AAAA,IACf,OAAO;AACL,YAAM;AAAA,IACR;AACA;AAAA,EACF,SACE,MAAM,SAAS,GAAG,KAClB,MAAM,WAAW,GAAG,KACpB,MAAM,UAAU,GAAG,KACnB,MAAM,aAAa,GAAG;AAGxB,QAAM,UAAU,MAAM,iBAAiB;AACvC,UAAQ,WAAW,OAAO;AAC1B,UAAQ,KAAK,OAAO;AAEpB,SAAO;AACT;AAjCgB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
function getPrefixLogs(options) {
|
|
4
|
-
var _a;
|
|
5
|
-
const { TAMAGUI_TARGET } = process.env;
|
|
6
|
-
return (_a = options == null ? void 0 : options.prefixLogs) != null ? _a : ` ${TAMAGUI_TARGET} | `;
|
|
7
|
-
}
|
|
8
|
-
__name(getPrefixLogs, "getPrefixLogs");
|
|
9
|
-
export {
|
|
10
|
-
getPrefixLogs
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=getPrefixLogs.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/getPrefixLogs.ts"],
|
|
4
|
-
"sourcesContent": ["import { TamaguiOptions } from '../types'\n\nexport function getPrefixLogs(options?: TamaguiOptions) {\n const { TAMAGUI_TARGET } = process.env\n return options?.prefixLogs ?? ` ${TAMAGUI_TARGET} | `\n}\n"],
|
|
5
|
-
"mappings": ";;AAEO,uBAAuB,SAA0B;AAFxD;AAGE,QAAM,EAAE,mBAAmB,QAAQ;AACnC,SAAO,yCAAS,eAAT,YAAuB,IAAI;AACpC;AAHgB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
import generate from "@babel/generator";
|
|
4
|
-
import * as t from "@babel/types";
|
|
5
|
-
import { accessSafe } from "./accessSafe";
|
|
6
|
-
function getPropValueFromAttributes(propName, attrs) {
|
|
7
|
-
let propIndex = -1;
|
|
8
|
-
let jsxAttr = null;
|
|
9
|
-
for (let idx = -1, len = attrs.length; ++idx < len; ) {
|
|
10
|
-
const attr = attrs[idx];
|
|
11
|
-
if (t.isJSXAttribute(attr) && attr.name && attr.name.name === propName) {
|
|
12
|
-
propIndex = idx;
|
|
13
|
-
jsxAttr = attr;
|
|
14
|
-
break;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
if (!jsxAttr || jsxAttr.value == null) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
let propValue = jsxAttr.value;
|
|
21
|
-
if (t.isJSXExpressionContainer(propValue)) {
|
|
22
|
-
propValue = propValue.expression;
|
|
23
|
-
}
|
|
24
|
-
if (t.isJSXEmptyExpression(propValue)) {
|
|
25
|
-
console.error("encountered JSXEmptyExpression");
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
const applicableSpreads = attrs.filter((attr, idx) => {
|
|
29
|
-
if (t.isJSXSpreadAttribute(attr)) {
|
|
30
|
-
if (t.isIdentifier(attr.argument) || t.isMemberExpression(attr.argument)) {
|
|
31
|
-
return idx > propIndex;
|
|
32
|
-
}
|
|
33
|
-
if (t.isLogicalExpression(attr.argument)) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
throw new Error(`unsupported spread of type "${attr.argument.type}": ${generate(attr).code}`);
|
|
37
|
-
}
|
|
38
|
-
return false;
|
|
39
|
-
}).map((attr) => attr.argument);
|
|
40
|
-
if (applicableSpreads.length > 0) {
|
|
41
|
-
propValue = applicableSpreads.reduce((acc, val) => t.logicalExpression("||", accessSafe(val, propName), acc), propValue);
|
|
42
|
-
}
|
|
43
|
-
return propValue;
|
|
44
|
-
}
|
|
45
|
-
__name(getPropValueFromAttributes, "getPropValueFromAttributes");
|
|
46
|
-
export {
|
|
47
|
-
getPropValueFromAttributes
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=getPropValueFromAttributes.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/getPropValueFromAttributes.ts"],
|
|
4
|
-
"sourcesContent": ["import generate from '@babel/generator'\nimport * as t from '@babel/types'\n\nimport { accessSafe } from './accessSafe'\n\n/**\n * getPropValueFromAttributes gets a prop by name from a list of attributes and accounts for potential spread operators.\n * Here's an example. Given this component:\n * ```\n * <Block coolProp=\"wow\" {...spread1} neatProp=\"ok\" {...spread2} />```\n * getPropValueFromAttributes will return the following:\n * - for propName `coolProp`:\n * ```\n * accessSafe(spread1, 'coolProp') || accessSafe(spread2, 'coolProp') || 'wow'```\n * - for propName `neatProp`:\n * ```\n * accessSafe(spread2, 'neatProp') || 'ok'```\n * - for propName `notPresent`: `null`\n *\n * The returned value should (obviously) be placed after spread operators.\n */\nexport function getPropValueFromAttributes(\n propName: string,\n attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[]\n): t.Expression | null {\n let propIndex: number = -1\n let jsxAttr: t.JSXAttribute | null = null\n for (let idx = -1, len = attrs.length; ++idx < len; ) {\n const attr = attrs[idx]\n if (t.isJSXAttribute(attr) && attr.name && attr.name.name === propName) {\n propIndex = idx\n jsxAttr = attr\n break\n }\n }\n\n if (!jsxAttr || jsxAttr.value == null) {\n return null\n }\n\n let propValue:\n | t.JSXElement\n | t.JSXFragment\n | t.StringLiteral\n | t.JSXExpressionContainer\n | t.JSXEmptyExpression\n | t.Expression = jsxAttr.value\n\n if (t.isJSXExpressionContainer(propValue)) {\n propValue = propValue.expression\n }\n\n // TODO how to handle this??\n if (t.isJSXEmptyExpression(propValue)) {\n console.error('encountered JSXEmptyExpression')\n return null\n }\n\n // filter out spread props that occur before propValue\n const applicableSpreads = attrs\n .filter(\n // 1. idx is greater than propValue prop index\n // 2. attr is a spread operator\n (attr, idx): attr is t.JSXSpreadAttribute => {\n if (t.isJSXSpreadAttribute(attr)) {\n if (t.isIdentifier(attr.argument) || t.isMemberExpression(attr.argument)) {\n return idx > propIndex\n }\n if (t.isLogicalExpression(attr.argument)) {\n return false\n }\n throw new Error(\n `unsupported spread of type \"${attr.argument.type}\": ${generate(attr).code}`\n )\n }\n return false\n }\n )\n .map((attr) => attr.argument)\n\n // if spread operators occur after propValue, create a binary expression for each operator\n // i.e. before1.propValue || before2.propValue || propValue\n // TODO: figure out how to do this without all the extra parens\n if (applicableSpreads.length > 0) {\n propValue = applicableSpreads.reduce<t.Expression>(\n (acc, val) => t.logicalExpression('||', accessSafe(val, propName), acc),\n propValue\n )\n }\n\n return propValue\n}\n"],
|
|
5
|
-
"mappings": ";;AAAA;AACA;AAEA;AAkBO,oCACL,UACA,OACqB;AACrB,MAAI,YAAoB;AACxB,MAAI,UAAiC;AACrC,WAAS,MAAM,IAAI,MAAM,MAAM,QAAQ,EAAE,MAAM,OAAO;AACpD,UAAM,OAAO,MAAM;AACnB,QAAI,EAAE,eAAe,IAAI,KAAK,KAAK,QAAQ,KAAK,KAAK,SAAS,UAAU;AACtE,kBAAY;AACZ,gBAAU;AACV;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,WAAW,QAAQ,SAAS,MAAM;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,YAMe,QAAQ;AAE3B,MAAI,EAAE,yBAAyB,SAAS,GAAG;AACzC,gBAAY,UAAU;AAAA,EACxB;AAGA,MAAI,EAAE,qBAAqB,SAAS,GAAG;AACrC,YAAQ,MAAM,gCAAgC;AAC9C,WAAO;AAAA,EACT;AAGA,QAAM,oBAAoB,MACvB,OAGC,CAAC,MAAM,QAAsC;AAC3C,QAAI,EAAE,qBAAqB,IAAI,GAAG;AAChC,UAAI,EAAE,aAAa,KAAK,QAAQ,KAAK,EAAE,mBAAmB,KAAK,QAAQ,GAAG;AACxE,eAAO,MAAM;AAAA,MACf;AACA,UAAI,EAAE,oBAAoB,KAAK,QAAQ,GAAG;AACxC,eAAO;AAAA,MACT;AACA,YAAM,IAAI,MACR,+BAA+B,KAAK,SAAS,UAAU,SAAS,IAAI,EAAE,MACxE;AAAA,IACF;AACA,WAAO;AAAA,EACT,CACF,EACC,IAAI,CAAC,SAAS,KAAK,QAAQ;AAK9B,MAAI,kBAAkB,SAAS,GAAG;AAChC,gBAAY,kBAAkB,OAC5B,CAAC,KAAK,QAAQ,EAAE,kBAAkB,MAAM,WAAW,KAAK,QAAQ,GAAG,GAAG,GACtE,SACF;AAAA,EACF;AAEA,SAAO;AACT;AAtEgB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
import * as t from "@babel/types";
|
|
4
|
-
function getSourceModule(itemName, itemBinding) {
|
|
5
|
-
if (!itemBinding.constant) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
let sourceModule;
|
|
9
|
-
let imported;
|
|
10
|
-
let local;
|
|
11
|
-
let destructured;
|
|
12
|
-
let usesImportSyntax = false;
|
|
13
|
-
const itemNode = itemBinding.path.node;
|
|
14
|
-
if (t.isImportDefaultSpecifier(itemNode) || t.isImportSpecifier(itemNode)) {
|
|
15
|
-
if (t.isImportDeclaration(itemBinding.path.parent)) {
|
|
16
|
-
sourceModule = itemBinding.path.parent.source.value;
|
|
17
|
-
local = itemNode.local.name;
|
|
18
|
-
usesImportSyntax = true;
|
|
19
|
-
if (t.isImportSpecifier(itemNode)) {
|
|
20
|
-
imported = itemNode.imported["name"];
|
|
21
|
-
destructured = true;
|
|
22
|
-
} else {
|
|
23
|
-
imported = itemNode.local.name;
|
|
24
|
-
destructured = false;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
} else if (t.isVariableDeclarator(itemNode) && itemNode.init != null && t.isCallExpression(itemNode.init) && t.isIdentifier(itemNode.init.callee) && itemNode.init.callee.name === "require" && itemNode.init.arguments.length === 1) {
|
|
28
|
-
const firstArg = itemNode.init.arguments[0];
|
|
29
|
-
if (!t.isStringLiteral(firstArg)) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
sourceModule = firstArg.value;
|
|
33
|
-
if (t.isIdentifier(itemNode.id)) {
|
|
34
|
-
local = itemNode.id.name;
|
|
35
|
-
imported = itemNode.id.name;
|
|
36
|
-
destructured = false;
|
|
37
|
-
} else if (t.isObjectPattern(itemNode.id)) {
|
|
38
|
-
for (const objProp of itemNode.id.properties) {
|
|
39
|
-
if (t.isObjectProperty(objProp) && t.isIdentifier(objProp.value) && objProp.value.name === itemName) {
|
|
40
|
-
local = objProp.value.name;
|
|
41
|
-
imported = objProp.key.name;
|
|
42
|
-
destructured = true;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (!local || !imported) {
|
|
47
|
-
console.error("could not find prop with value `%s`", itemName);
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
} else {
|
|
51
|
-
console.error("Unhandled id type: %s", itemNode.id.type);
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
return {
|
|
58
|
-
destructured,
|
|
59
|
-
imported,
|
|
60
|
-
local,
|
|
61
|
-
sourceModule,
|
|
62
|
-
usesImportSyntax
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
__name(getSourceModule, "getSourceModule");
|
|
66
|
-
export {
|
|
67
|
-
getSourceModule
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=getSourceModule.js.map
|