Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 69x 45x 61x 5x 5x 5x 5x 5x 72x 72x 72x 72x 71x 70x 70x 70x 69x 69x 69x 61x 61x 61x 61x 61x 61x 61x 61x 61x 61x 61x 8x | const generateClasses = require('../helpers/generate-classes'); const generateStyles = require('../helpers/generate-styles'); const getStyleObjectValue = require('../helpers/get-style-object-value'); const listDynamicKeys = require('../helpers/list-dynamic-keys'); const listFunctionCallKeys = require('../helpers/list-function-call-keys'); const listFunctionCalls = require('../helpers/list-function-calls'); const listReferences = require('../helpers/list-references'); const listStaticKeys = require('../helpers/list-static-keys'); const { replaceCreateCall, replaceFunctionCalls } = require('../helpers/mutate-ast'); const normalizeArguments = require('../helpers/normalize-arguments'); const { validateReferences, validateStyleObject } = require('../helpers/validate'); const { mapObject, mapObjectValues, filterObjectKeys } = require('../utils/helpers'); const { minifyProperty } = require('../utils/styles'); const stripTypeAssertions = require('../helpers/strip-type-assertions'); const flattenAtRules = require('../helpers/flatten-at-rules'); function normalizeFunctionCalls(callExpressions, styleNames) { const entries = callExpressions.map(id => { return [id.parentPath, normalizeArguments(id.parentPath, styleNames)]; }); return new Map(entries); } function minifyProperties(classes) { return mapObject(classes, ([key, value]) => { const minifiedName = minifyProperty(key); const isObject = typeof value === 'object'; const minifiedValue = isObject ? minifyProperties(value) : value; return [minifiedName, minifiedValue]; }); } function transpileCreate(identifier, options) { const callExpr = identifier.parentPath.parentPath; const objExpr = callExpr.get('arguments.0'); stripTypeAssertions(objExpr); validateStyleObject(objExpr); const styleDefinitions = flattenAtRules(getStyleObjectValue(objExpr)); const styleClasses = generateClasses(styleDefinitions); const references = listReferences(callExpr.parentPath); validateReferences(references); const funcCalls = listFunctionCalls(references); const styleNames = Object.keys(styleDefinitions); const normalizedFuncCalls = normalizeFunctionCalls(funcCalls, styleNames); const staticKeys = listStaticKeys(callExpr, styleNames); const dynamicKeys = listDynamicKeys(references, styleNames); const funcCallKeys = listFunctionCallKeys([...normalizedFuncCalls.values()]); const propKeys = [...staticKeys, ...dynamicKeys]; const filteredStyleValues = filterObjectKeys(styleClasses, propKeys); const allKeys = [...funcCallKeys, ...propKeys]; const filteredDefinitions = filterObjectKeys(styleDefinitions, allKeys); const minifiedStyleValues = options.minifyProperties ? mapObjectValues(filteredStyleValues, minifyProperties) : filteredStyleValues; replaceCreateCall(callExpr, minifiedStyleValues); replaceFunctionCalls(normalizedFuncCalls, styleClasses); return generateStyles(filteredDefinitions); } module.exports = { transpileCreate }; |