Files
goTorrent/goTorrentWebUI/node_modules/material-ui/styles/createGenerateClassName.js

88 lines
3.5 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createGenerateClassName;
var _warning = require('warning');
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var generatorCounter = 0;
// 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
function createGenerateClassName() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$dangerouslyU = options.dangerouslyUseGlobalCSS,
dangerouslyUseGlobalCSS = _options$dangerouslyU === undefined ? false : _options$dangerouslyU,
_options$productionPr = options.productionPrefix,
productionPrefix = _options$productionPr === undefined ? 'jss' : _options$productionPr;
var escapeRegex = /([[\].#*$><+~=|^:(),"'`\s])/g;
var ruleCounter = 0;
// - HMR can lead to many class name generators being instantiated,
// so the warning is only triggered in production.
// - We expect a class name generator to be instantiated per new request on the server,
// so the warning is only triggered client side.
// - You can get away with having multiple class name generators
// by modifying the `productionPrefix`.
if (process.env.NODE_ENV === 'production' && typeof window !== 'undefined' && productionPrefix === 'jss') {
generatorCounter += 1;
if (generatorCounter > 2) {
// eslint-disable-next-line no-console
console.error(['Material-UI: we have detected more than needed creation of the class name generator.', 'You should only use one class name generator on the client side.', 'If you do otherwise, you take the risk to have conflicting class names in production.'].join('\n'));
}
}
return function (rule, styleSheet) {
ruleCounter += 1;
process.env.NODE_ENV !== "production" ? (0, _warning2.default)(ruleCounter < 1e10, ['Material-UI: you might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join('')) : void 0;
// Code branch the whole block at the expense of more code.
if (dangerouslyUseGlobalCSS) {
if (styleSheet && styleSheet.options.classNamePrefix) {
var prefix = styleSheet.options.classNamePrefix;
// Sanitize the string as will be used to prefix the generated class name.
prefix = prefix.replace(escapeRegex, '-');
if (prefix.match(/^Mui/)) {
return prefix + '-' + rule.key;
}
if (process.env.NODE_ENV !== 'production') {
return prefix + '-' + rule.key + '-' + ruleCounter;
}
}
if (process.env.NODE_ENV === 'production') {
return '' + productionPrefix + ruleCounter;
}
return rule.key + '-' + ruleCounter;
}
if (process.env.NODE_ENV === 'production') {
return '' + productionPrefix + ruleCounter;
}
if (styleSheet && styleSheet.options.classNamePrefix) {
var _prefix = styleSheet.options.classNamePrefix;
// Sanitize the string as will be used to prefix the generated class name.
_prefix = _prefix.replace(escapeRegex, '-');
return _prefix + '-' + rule.key + '-' + ruleCounter;
}
return rule.key + '-' + ruleCounter;
};
}