'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _warning = require('warning'); var _warning2 = _interopRequireDefault(_warning); var _StyleSheet = require('../StyleSheet'); var _StyleSheet2 = _interopRequireDefault(_StyleSheet); var _moduleId = require('./moduleId'); var _moduleId2 = _interopRequireDefault(_moduleId); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var maxRules = 1e10; var env = process.env.NODE_ENV; /** * Returns a function which generates unique class names based on counters. * When new generator function is created, rule counter is reseted. * We need to reset the rule counter for SSR for each request. */ exports['default'] = function () { var ruleCounter = 0; var defaultPrefix = env === 'production' ? 'c' : ''; return function (rule, sheet) { ruleCounter += 1; if (ruleCounter > maxRules) { (0, _warning2['default'])(false, '[JSS] You might have a memory leak. Rule counter is at %s.', ruleCounter); } var prefix = defaultPrefix; var jssId = ''; if (sheet) { prefix = sheet.options.classNamePrefix || defaultPrefix; if (sheet.options.jss.id != null) jssId += sheet.options.jss.id; } if (env === 'production') { return '' + prefix + _moduleId2['default'] + jssId + ruleCounter; } return prefix + rule.key + '-' + _moduleId2['default'] + (jssId && '-' + jssId) + '-' + ruleCounter; }; };