34 lines
No EOL
995 B
JavaScript
34 lines
No EOL
995 B
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = unstable_memoTheme;
|
|
var _preprocessStyles = _interopRequireDefault(require("./preprocessStyles"));
|
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
|
|
// We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to
|
|
// allocate more objects.
|
|
const arg = {
|
|
theme: undefined
|
|
};
|
|
|
|
/**
|
|
* Memoize style function on theme.
|
|
* Intended to be used in styled() calls that only need access to the theme.
|
|
*/
|
|
function unstable_memoTheme(styleFn) {
|
|
let lastValue;
|
|
let lastTheme;
|
|
return function styleMemoized(props) {
|
|
let value = lastValue;
|
|
if (value === undefined || props.theme !== lastTheme) {
|
|
arg.theme = props.theme;
|
|
value = (0, _preprocessStyles.default)(styleFn(arg));
|
|
lastValue = value;
|
|
lastTheme = props.theme;
|
|
}
|
|
return value;
|
|
};
|
|
} |