Skip to content

Commit

Permalink
Decouple declarations from actual processing
Browse files Browse the repository at this point in the history
  • Loading branch information
cdonohue committed May 31, 2019
1 parent 180ae2f commit d9a4bbe
Showing 1 changed file with 22 additions and 11 deletions.
33 changes: 22 additions & 11 deletions src/createUtilitiesFromConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,10 @@ export default function createUtilitiesFromConfig(configFn = (cfg) => cfg) {
const cssForUtility = (className, isImportant = false) =>
parseDeclarations(utilityClasses[className], isImportant).join(" ")

const styleWith = (classNames = "", isImportant = false) => {
const getDeclarationsForClasses = (classNames = "", isImportant = false) => {
const activeApply = classNames.split(" ").filter((name) => apply[name])

const normalizeClass = css`
${parseDeclarations(normalize(theme), isImportant).join("")}
`
const normalizeDeclarations = parseDeclarations(normalize(theme), isImportant).join("")

const classList = classNames
.split(" ")
Expand All @@ -111,22 +109,33 @@ export default function createUtilitiesFromConfig(configFn = (cfg) => cfg) {
}

const ignoredClasses = []
const activeUtilityClasses = []
const activeDeclarations = []
for (let i = 0; i < classList.length; i++) {
const className = classList[i]

if (utilityClasses[className]) {
activeUtilityClasses.push(css`
${parseDeclarations(utilityClasses[className], isImportant).join("")}
`)
activeDeclarations.push(parseDeclarations(utilityClasses[className], isImportant).join(""))
} else {
ignoredClasses.push(className)
}
}

return [normalizeClass, ...activeUtilityClasses, ...ignoredClasses].join(
" "
)
return {
declarations: [normalizeDeclarations, ...activeDeclarations],
ignoredClasses,
}
}

const processDeclarations = (declarations, processFn) => {
return declarations.map(processFn)
}

const styleWith = (classNames = "", isImportant = false) => {
const { declarations, ignoredClasses } = getDeclarationsForClasses(classNames, isImportant)

return [...processDeclarations(declarations, (declaration) => {
return css`${declaration}`
}), ...ignoredClasses].join(" ")
}

return {
Expand All @@ -139,6 +148,8 @@ export default function createUtilitiesFromConfig(configFn = (cfg) => cfg) {
return cx(styledClasses)
},
utilities: utilityClasses,
getDeclarationsForClasses,
processDeclarations,
styleWith,
}
}

0 comments on commit d9a4bbe

Please sign in to comment.