aphrodite-to-jss
Advanced tools
Comparing version
# Changelog | ||
# Changelog | ||
## 1.1.6 | ||
- Improve performance of `css` calls | ||
## 1.1.5 | ||
@@ -4,0 +10,0 @@ |
@@ -28,12 +28,24 @@ "use strict"; | ||
function flattenRules(rules) { | ||
return rules.reduce((result, rule) => { | ||
const result = []; | ||
_flattenRules(rules, result); | ||
return result; | ||
} | ||
/* | ||
* _flattenRules adds all the valid rules into the provided accumulator | ||
* in an optimized fashion (avoiding unecessary allocations) | ||
*/ | ||
function _flattenRules(rules, accu) { | ||
for (const idx in rules) { | ||
const rule = rules[idx]; | ||
if (!rule) { | ||
return result; | ||
continue; | ||
} | ||
if (rule instanceof Array) { | ||
return result.concat(flattenRules(rule)); | ||
else if (rule instanceof Array) { | ||
_flattenRules(rule, accu); | ||
} | ||
return result.concat([rule]); | ||
}, []); | ||
else { | ||
accu.push(rule); | ||
} | ||
} | ||
} | ||
exports.default = css; |
{ | ||
"name": "aphrodite-to-jss", | ||
"version": "1.1.5", | ||
"version": "1.1.6", | ||
"description": "Aphrodite compatible API on top of JSS.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -37,21 +37,24 @@ import mergeStyles from './mergeStyles'; | ||
function flattenRules(rules: SheetDefinitions): SheetDefinition[] { | ||
return rules.reduce( | ||
( | ||
result: SheetDefinition[], | ||
rule: SheetDefinition | SheetDefinitions | null | undefined | false | ||
) => { | ||
if (!rule) { | ||
return result; | ||
} | ||
const result: SheetDefinition[] = []; | ||
_flattenRules(rules, result); | ||
return result; | ||
} | ||
if (rule instanceof Array) { | ||
return result.concat(flattenRules(rule)); | ||
} | ||
return result.concat([rule]); | ||
}, | ||
[] | ||
); | ||
/* | ||
* _flattenRules adds all the valid rules into the provided accumulator | ||
* in an optimized fashion (avoiding unecessary allocations) | ||
*/ | ||
function _flattenRules(rules: SheetDefinitions, accu: SheetDefinition[]) { | ||
for (const idx in rules) { | ||
const rule = rules[idx]; | ||
if (!rule) { | ||
continue; | ||
} else if (rule instanceof Array) { | ||
_flattenRules(rule, accu); | ||
} else { | ||
accu.push(rule); | ||
} | ||
} | ||
} | ||
export default css; |
188436
0.27%2145
0.75%