mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-23 00:45:16 +00:00
72 lines
2.8 KiB
JavaScript
72 lines
2.8 KiB
JavaScript
import nested from '../ThemeProvider/nested';
|
|
/**
|
|
* This is the list of the style rule name we use as drop in replacement for the built-in
|
|
* pseudo classes (:checked, :disabled, :focused, etc.).
|
|
*
|
|
* Why do they exist in the first place?
|
|
* These classes are used at a specificity of 2.
|
|
* It allows them to override previously definied styles as well as
|
|
* being untouched by simple user overrides.
|
|
*/
|
|
|
|
var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected']; // Returns a function which generates unique class names based on counters.
|
|
// When new generator function is created, rule counter is reset.
|
|
// We need to reset the rule counter for SSR for each request.
|
|
//
|
|
// It's inspired by
|
|
// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js
|
|
|
|
export default function createGenerateClassName() {
|
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
var _options$disableGloba = options.disableGlobal,
|
|
disableGlobal = _options$disableGloba === void 0 ? false : _options$disableGloba,
|
|
_options$productionPr = options.productionPrefix,
|
|
productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr,
|
|
_options$seed = options.seed,
|
|
seed = _options$seed === void 0 ? '' : _options$seed;
|
|
var seedPrefix = seed === '' ? '' : "".concat(seed, "-");
|
|
var ruleCounter = 0;
|
|
|
|
var getNextCounterId = function getNextCounterId() {
|
|
ruleCounter += 1;
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
if (ruleCounter >= 1e10) {
|
|
console.warn(['Material-UI: You might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join(''));
|
|
}
|
|
}
|
|
|
|
return ruleCounter;
|
|
};
|
|
|
|
return function (rule, styleSheet) {
|
|
var name = styleSheet.options.name; // Is a global static MUI style?
|
|
|
|
if (name && name.indexOf('Mui') === 0 && !styleSheet.options.link && !disableGlobal) {
|
|
// We can use a shorthand class name, we never use the keys to style the components.
|
|
if (pseudoClasses.indexOf(rule.key) !== -1) {
|
|
return "Mui-".concat(rule.key);
|
|
}
|
|
|
|
var prefix = "".concat(seedPrefix).concat(name, "-").concat(rule.key);
|
|
|
|
if (!styleSheet.options.theme[nested] || seed !== '') {
|
|
return prefix;
|
|
}
|
|
|
|
return "".concat(prefix, "-").concat(getNextCounterId());
|
|
}
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
return "".concat(seedPrefix).concat(productionPrefix).concat(getNextCounterId());
|
|
}
|
|
|
|
var suffix = "".concat(rule.key, "-").concat(getNextCounterId()); // Help with debuggability.
|
|
|
|
if (styleSheet.options.classNamePrefix) {
|
|
return "".concat(seedPrefix).concat(styleSheet.options.classNamePrefix, "-").concat(suffix);
|
|
}
|
|
|
|
return "".concat(seedPrefix).concat(suffix);
|
|
};
|
|
} |