substyle
Version:
Universal styling for reusable React components
22 lines (18 loc) • 660 B
JavaScript
import coerceSelection from './coerceSelection';
var EMPTY = {};
var memoize = function memoize(substyle) {
return function (select, defaultStyle) {
var cacheKey = defaultStyle || EMPTY;
substyle.memoize = substyle.memoize || new WeakMap();
var mapEntry;
if (!substyle.memoize.has(cacheKey)) {
mapEntry = {};
substyle.memoize.set(cacheKey, mapEntry);
} else {
mapEntry = substyle.memoize.get(cacheKey);
}
var selectHash = coerceSelection(select).join(' ');
return selectHash in mapEntry ? mapEntry[selectHash] : mapEntry[selectHash] = substyle(select || [], defaultStyle);
};
};
export default memoize;