{"ast":null,"code":"import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nvar plainObjectConstrurctor = {}.constructor;\n\nfunction cloneStyle(style) {\n  if (style == null || typeof style !== 'object') return style;\n  if (Array.isArray(style)) return style.map(cloneStyle);\n  if (style.constructor !== plainObjectConstrurctor) return style;\n  var newStyle = {};\n\n  for (var name in style) {\n    newStyle[name] = cloneStyle(style[name]);\n  }\n\n  return newStyle;\n}\n/**\n * Create a rule instance.\n */\n\n\nfunction createRule(name, decl, options) {\n  if (name === void 0) {\n    name = 'unnamed';\n  }\n\n  var jss = options.jss;\n  var declCopy = cloneStyle(decl);\n  var rule = jss.plugins.onCreateRule(name, declCopy, options);\n  if (rule) return rule; // It is an at-rule and it has no instance.\n\n  if (name[0] === '@') {\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n  }\n\n  return null;\n}\n\nvar join = function join(value, by) {\n  var result = '';\n\n  for (var i = 0; i < value.length; i++) {\n    // Remove !important from the value, it will be readded later.\n    if (value[i] === '!important') break;\n    if (result) result += by;\n    result += value[i];\n  }\n\n  return result;\n};\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\n\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n  if (ignoreImportant === void 0) {\n    ignoreImportant = false;\n  }\n\n  if (!Array.isArray(value)) return value;\n  var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n  if (Array.isArray(value[0])) {\n    for (var i = 0; i < value.length; i++) {\n      if (value[i] === '!important') break;\n      if (cssValue) cssValue += ', ';\n      cssValue += join(value[i], ' ');\n    }\n  } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n  if (!ignoreImportant && value[value.length - 1] === '!important') {\n    cssValue += ' !important';\n  }\n\n  return cssValue;\n};\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\n\n\nfunction indentStr(str, indent) {\n  var result = '';\n\n  for (var index = 0; index < indent; index++) {\n    result += '  ';\n  }\n\n  return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var result = '';\n  if (!style) return result;\n  var _options = options,\n      _options$indent = _options.indent,\n      indent = _options$indent === void 0 ? 0 : _options$indent;\n  var fallbacks = style.fallbacks;\n  if (selector) indent++; // Apply fallbacks first.\n\n  if (fallbacks) {\n    // Array syntax {fallbacks: [{prop: value}]}\n    if (Array.isArray(fallbacks)) {\n      for (var index = 0; index < fallbacks.length; index++) {\n        var fallback = fallbacks[index];\n\n        for (var prop in fallback) {\n          var value = fallback[prop];\n\n          if (value != null) {\n            if (result) result += '\\n';\n            result += \"\" + indentStr(prop + \": \" + toCssValue(value) + \";\", indent);\n          }\n        }\n      }\n    } else {\n      // Object syntax {fallbacks: {prop: value}}\n      for (var _prop in fallbacks) {\n        var _value = fallbacks[_prop];\n\n        if (_value != null) {\n          if (result) result += '\\n';\n          result += \"\" + indentStr(_prop + \": \" + toCssValue(_value) + \";\", indent);\n        }\n      }\n    }\n  }\n\n  for (var _prop2 in style) {\n    var _value2 = style[_prop2];\n\n    if (_value2 != null && _prop2 !== 'fallbacks') {\n      if (result) result += '\\n';\n      result += \"\" + indentStr(_prop2 + \": \" + toCssValue(_value2) + \";\", indent);\n    }\n  } // Allow empty style in this case, because properties will be added dynamically.\n\n\n  if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n  if (!selector) return result;\n  indent--;\n  if (result) result = \"\\n\" + result + \"\\n\";\n  return indentStr(selector + \" {\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\n\nvar escape = function escape(str) {\n  return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n};\n\nvar BaseStyleRule = /*#__PURE__*/function () {\n  function BaseStyleRule(key, style, options) {\n    this.type = 'style';\n    this.key = void 0;\n    this.isProcessed = false;\n    this.style = void 0;\n    this.renderer = void 0;\n    this.renderable = void 0;\n    this.options = void 0;\n    var sheet = options.sheet,\n        Renderer = options.Renderer;\n    this.key = key;\n    this.options = options;\n    this.style = style;\n    if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n  }\n  /**\n   * Get or set a style property.\n   */\n\n\n  var _proto = BaseStyleRule.prototype;\n\n  _proto.prop = function prop(name, value, options) {\n    // It's a getter.\n    if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n    var force = options ? options.force : false;\n    if (!force && this.style[name] === value) return this;\n    var newValue = value;\n\n    if (!options || options.process !== false) {\n      newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n    }\n\n    var isEmpty = newValue == null || newValue === false;\n    var isDefined = (name in this.style); // Value is empty and wasn't defined before.\n\n    if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n    var remove = isEmpty && isDefined;\n    if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n    if (this.renderable && this.renderer) {\n      if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n      return this;\n    }\n\n    var sheet = this.options.sheet;\n\n    if (sheet && sheet.attached) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n    }\n\n    return this;\n  };\n\n  return BaseStyleRule;\n}();\n\nvar StyleRule = /*#__PURE__*/function (_BaseStyleRule) {\n  _inheritsLoose(StyleRule, _BaseStyleRule);\n\n  function StyleRule(key, style, options) {\n    var _this;\n\n    _this = _BaseStyleRule.call(this, key, style, options) || this;\n    _this.selectorText = void 0;\n    _this.id = void 0;\n    _this.renderable = void 0;\n    var selector = options.selector,\n        scoped = options.scoped,\n        sheet = options.sheet,\n        generateId = options.generateId;\n\n    if (selector) {\n      _this.selectorText = selector;\n    } else if (scoped !== false) {\n      _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n      _this.selectorText = \".\" + escape(_this.id);\n    }\n\n    return _this;\n  }\n  /**\n   * Set selector string.\n   * Attention: use this with caution. Most browsers didn't implement\n   * selectorText setter, so this may result in rerendering of entire Style Sheet.\n   */\n\n\n  var _proto2 = StyleRule.prototype;\n  /**\n   * Apply rule to an element inline.\n   */\n\n  _proto2.applyTo = function applyTo(renderable) {\n    var renderer = this.renderer;\n\n    if (renderer) {\n      var json = this.toJSON();\n\n      for (var prop in json) {\n        renderer.setProperty(renderable, prop, json[prop]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Returns JSON representation of the rule.\n   * Fallbacks are not supported.\n   * Useful for inline styles.\n   */\n  ;\n\n  _proto2.toJSON = function toJSON() {\n    var json = {};\n\n    for (var prop in this.style) {\n      var value = this.style[prop];\n      if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n    }\n\n    return json;\n  }\n  /**\n   * Generates a CSS string.\n   */\n  ;\n\n  _proto2.toString = function toString(options) {\n    var sheet = this.options.sheet;\n    var link = sheet ? sheet.options.link : false;\n    var opts = link ? _extends({}, options, {\n      allowEmpty: true\n    }) : options;\n    return toCss(this.selectorText, this.style, opts);\n  };\n\n  _createClass(StyleRule, [{\n    key: \"selector\",\n    set: function set(selector) {\n      if (selector === this.selectorText) return;\n      this.selectorText = selector;\n      var renderer = this.renderer,\n          renderable = this.renderable;\n      if (!renderable || !renderer) return;\n      var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n      if (!hasChanged) {\n        renderer.replaceRule(renderable, this);\n      }\n    }\n    /**\n     * Get selector string.\n     */\n    ,\n    get: function get() {\n      return this.selectorText;\n    }\n  }]);\n\n  return StyleRule;\n}(BaseStyleRule);\n\nvar pluginStyleRule = {\n  onCreateRule: function onCreateRule(name, style, options) {\n    if (name[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n      return null;\n    }\n\n    return new StyleRule(name, style, options);\n  }\n};\nvar defaultToStringOptions = {\n  indent: 1,\n  children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule = /*#__PURE__*/function () {\n  function ConditionalRule(key, styles, options) {\n    this.type = 'conditional';\n    this.at = void 0;\n    this.key = void 0;\n    this.query = void 0;\n    this.rules = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    var atMatch = key.match(atRegExp);\n    this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n    this.query = options.name || \"@\" + this.at;\n    this.options = options;\n    this.rules = new RuleList(_extends({}, options, {\n      parent: this\n    }));\n\n    for (var name in styles) {\n      this.rules.add(name, styles[name]);\n    }\n\n    this.rules.process();\n  }\n  /**\n   * Get a rule.\n   */\n\n\n  var _proto = ConditionalRule.prototype;\n\n  _proto.getRule = function getRule(name) {\n    return this.rules.get(name);\n  }\n  /**\n   * Get index of a rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(rule) {\n    return this.rules.indexOf(rule);\n  }\n  /**\n   * Create and register rule, run plugins.\n   */\n  ;\n\n  _proto.addRule = function addRule(name, style, options) {\n    var rule = this.rules.add(name, style, options);\n    if (!rule) return null;\n    this.options.jss.plugins.onProcessRule(rule);\n    return rule;\n  }\n  /**\n   * Generates a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(options) {\n    if (options === void 0) {\n      options = defaultToStringOptions;\n    }\n\n    if (options.indent == null) options.indent = defaultToStringOptions.indent;\n    if (options.children == null) options.children = defaultToStringOptions.children;\n\n    if (options.children === false) {\n      return this.query + \" {}\";\n    }\n\n    var children = this.rules.toString(options);\n    return children ? this.query + \" {\\n\" + children + \"\\n}\" : '';\n  };\n\n  return ConditionalRule;\n}();\n\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n  onCreateRule: function onCreateRule(key, styles, options) {\n    return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n  }\n};\nvar defaultToStringOptions$1 = {\n  indent: 1,\n  children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule = /*#__PURE__*/function () {\n  function KeyframesRule(key, frames, options) {\n    this.type = 'keyframes';\n    this.at = '@keyframes';\n    this.key = void 0;\n    this.name = void 0;\n    this.id = void 0;\n    this.rules = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    var nameMatch = key.match(nameRegExp);\n\n    if (nameMatch && nameMatch[1]) {\n      this.name = nameMatch[1];\n    } else {\n      this.name = 'noname';\n      process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n    }\n\n    this.key = this.type + \"-\" + this.name;\n    this.options = options;\n    var scoped = options.scoped,\n        sheet = options.sheet,\n        generateId = options.generateId;\n    this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n    this.rules = new RuleList(_extends({}, options, {\n      parent: this\n    }));\n\n    for (var name in frames) {\n      this.rules.add(name, frames[name], _extends({}, options, {\n        parent: this\n      }));\n    }\n\n    this.rules.process();\n  }\n  /**\n   * Generates a CSS string.\n   */\n\n\n  var _proto = KeyframesRule.prototype;\n\n  _proto.toString = function toString(options) {\n    if (options === void 0) {\n      options = defaultToStringOptions$1;\n    }\n\n    if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n    if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n    if (options.children === false) {\n      return this.at + \" \" + this.id + \" {}\";\n    }\n\n    var children = this.rules.toString(options);\n    if (children) children = \"\\n\" + children + \"\\n\";\n    return this.at + \" \" + this.id + \" {\" + children + \"}\";\n  };\n\n  return KeyframesRule;\n}();\n\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n  if (typeof val === 'string') {\n    return val.replace(refRegExp, function (match, name) {\n      if (name in keyframes) {\n        return keyframes[name];\n      }\n\n      process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n      return match;\n    });\n  }\n\n  return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n  var value = style[prop];\n  var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n  if (refKeyframe !== value) {\n    style[prop] = refKeyframe;\n  }\n};\n\nvar plugin = {\n  onCreateRule: function onCreateRule(key, frames, options) {\n    return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n  },\n  // Animation name ref replacer.\n  onProcessStyle: function onProcessStyle(style, rule, sheet) {\n    if (rule.type !== 'style' || !sheet) return style;\n    if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n    if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n    return style;\n  },\n  onChangeValue: function onChangeValue(val, prop, rule) {\n    var sheet = rule.options.sheet;\n\n    if (!sheet) {\n      return val;\n    }\n\n    switch (prop) {\n      case 'animation':\n        return findReferencedKeyframe(val, sheet.keyframes);\n\n      case 'animation-name':\n        return findReferencedKeyframe(val, sheet.keyframes);\n\n      default:\n        return val;\n    }\n  }\n};\n\nvar KeyframeRule = /*#__PURE__*/function (_BaseStyleRule) {\n  _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n  function KeyframeRule() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _BaseStyleRule.call.apply(_BaseStyleRule, [this].concat(args)) || this;\n    _this.renderable = void 0;\n    return _this;\n  }\n\n  var _proto = KeyframeRule.prototype;\n  /**\n   * Generates a CSS string.\n   */\n\n  _proto.toString = function toString(options) {\n    var sheet = this.options.sheet;\n    var link = sheet ? sheet.options.link : false;\n    var opts = link ? _extends({}, options, {\n      allowEmpty: true\n    }) : options;\n    return toCss(this.key, this.style, opts);\n  };\n\n  return KeyframeRule;\n}(BaseStyleRule);\n\nvar pluginKeyframeRule = {\n  onCreateRule: function onCreateRule(key, style, options) {\n    if (options.parent && options.parent.type === 'keyframes') {\n      return new KeyframeRule(key, style, options);\n    }\n\n    return null;\n  }\n};\n\nvar FontFaceRule = /*#__PURE__*/function () {\n  function FontFaceRule(key, style, options) {\n    this.type = 'font-face';\n    this.at = '@font-face';\n    this.key = void 0;\n    this.style = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    this.style = style;\n    this.options = options;\n  }\n  /**\n   * Generates a CSS string.\n   */\n\n\n  var _proto = FontFaceRule.prototype;\n\n  _proto.toString = function toString(options) {\n    if (Array.isArray(this.style)) {\n      var str = '';\n\n      for (var index = 0; index < this.style.length; index++) {\n        str += toCss(this.at, this.style[index]);\n        if (this.style[index + 1]) str += '\\n';\n      }\n\n      return str;\n    }\n\n    return toCss(this.at, this.style, options);\n  };\n\n  return FontFaceRule;\n}();\n\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n  onCreateRule: function onCreateRule(key, style, options) {\n    return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n  }\n};\n\nvar ViewportRule = /*#__PURE__*/function () {\n  function ViewportRule(key, style, options) {\n    this.type = 'viewport';\n    this.at = '@viewport';\n    this.key = void 0;\n    this.style = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    this.style = style;\n    this.options = options;\n  }\n  /**\n   * Generates a CSS string.\n   */\n\n\n  var _proto = ViewportRule.prototype;\n\n  _proto.toString = function toString(options) {\n    return toCss(this.key, this.style, options);\n  };\n\n  return ViewportRule;\n}();\n\nvar pluginViewportRule = {\n  onCreateRule: function onCreateRule(key, style, options) {\n    return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n  }\n};\n\nvar SimpleRule = /*#__PURE__*/function () {\n  function SimpleRule(key, value, options) {\n    this.type = 'simple';\n    this.key = void 0;\n    this.value = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    this.value = value;\n    this.options = options;\n  }\n  /**\n   * Generates a CSS string.\n   */\n  // eslint-disable-next-line no-unused-vars\n\n\n  var _proto = SimpleRule.prototype;\n\n  _proto.toString = function toString(options) {\n    if (Array.isArray(this.value)) {\n      var str = '';\n\n      for (var index = 0; index < this.value.length; index++) {\n        str += this.key + \" \" + this.value[index] + \";\";\n        if (this.value[index + 1]) str += '\\n';\n      }\n\n      return str;\n    }\n\n    return this.key + \" \" + this.value + \";\";\n  };\n\n  return SimpleRule;\n}();\n\nvar keysMap = {\n  '@charset': true,\n  '@import': true,\n  '@namespace': true\n};\nvar pluginSimpleRule = {\n  onCreateRule: function onCreateRule(key, value, options) {\n    return key in keysMap ? new SimpleRule(key, value, options) : null;\n  }\n};\nvar plugins = [pluginStyleRule, pluginConditionalRule, plugin, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\nvar defaultUpdateOptions = {\n  process: true\n};\nvar forceUpdateOptions = {\n  force: true,\n  process: true\n  /**\n   * Contains rules objects and allows adding/removing etc.\n   * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n   */\n\n};\n\nvar RuleList = /*#__PURE__*/function () {\n  // Rules registry for access by .get() method.\n  // It contains the same rule registered by name and by selector.\n  // Original styles object.\n  // Used to ensure correct rules order.\n  function RuleList(options) {\n    this.map = {};\n    this.raw = {};\n    this.index = [];\n    this.counter = 0;\n    this.options = void 0;\n    this.classes = void 0;\n    this.keyframes = void 0;\n    this.options = options;\n    this.classes = options.classes;\n    this.keyframes = options.keyframes;\n  }\n  /**\n   * Create and register rule.\n   *\n   * Will not render after Style Sheet was rendered the first time.\n   */\n\n\n  var _proto = RuleList.prototype;\n\n  _proto.add = function add(name, decl, ruleOptions) {\n    var _this$options = this.options,\n        parent = _this$options.parent,\n        sheet = _this$options.sheet,\n        jss = _this$options.jss,\n        Renderer = _this$options.Renderer,\n        generateId = _this$options.generateId,\n        scoped = _this$options.scoped;\n\n    var options = _extends({\n      classes: this.classes,\n      parent: parent,\n      sheet: sheet,\n      jss: jss,\n      Renderer: Renderer,\n      generateId: generateId,\n      scoped: scoped,\n      name: name,\n      keyframes: this.keyframes,\n      selector: undefined\n    }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n    // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n    // we need to make the key unique within this RuleList instance scope.\n\n\n    var key = name;\n\n    if (name in this.raw) {\n      key = name + \"-d\" + this.counter++;\n    } // We need to save the original decl before creating the rule\n    // because cache plugin needs to use it as a key to return a cached rule.\n\n\n    this.raw[key] = decl;\n\n    if (key in this.classes) {\n      // E.g. rules inside of @media container\n      options.selector = \".\" + escape(this.classes[key]);\n    }\n\n    var rule = createRule(key, decl, options);\n    if (!rule) return null;\n    this.register(rule);\n    var index = options.index === undefined ? this.index.length : options.index;\n    this.index.splice(index, 0, rule);\n    return rule;\n  }\n  /**\n   * Get a rule.\n   */\n  ;\n\n  _proto.get = function get(name) {\n    return this.map[name];\n  }\n  /**\n   * Delete a rule.\n   */\n  ;\n\n  _proto.remove = function remove(rule) {\n    this.unregister(rule);\n    delete this.raw[rule.key];\n    this.index.splice(this.index.indexOf(rule), 1);\n  }\n  /**\n   * Get index of a rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(rule) {\n    return this.index.indexOf(rule);\n  }\n  /**\n   * Run `onProcessRule()` plugins on every rule.\n   */\n  ;\n\n  _proto.process = function process() {\n    var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n    // we end up with very hard-to-track-down side effects.\n\n    this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n  }\n  /**\n   * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n   */\n  ;\n\n  _proto.register = function register(rule) {\n    this.map[rule.key] = rule;\n\n    if (rule instanceof StyleRule) {\n      this.map[rule.selector] = rule;\n      if (rule.id) this.classes[rule.key] = rule.id;\n    } else if (rule instanceof KeyframesRule && this.keyframes) {\n      this.keyframes[rule.name] = rule.id;\n    }\n  }\n  /**\n   * Unregister a rule.\n   */\n  ;\n\n  _proto.unregister = function unregister(rule) {\n    delete this.map[rule.key];\n\n    if (rule instanceof StyleRule) {\n      delete this.map[rule.selector];\n      delete this.classes[rule.key];\n    } else if (rule instanceof KeyframesRule) {\n      delete this.keyframes[rule.name];\n    }\n  }\n  /**\n   * Update the function values with a new data.\n   */\n  ;\n\n  _proto.update = function update() {\n    var name;\n    var data;\n    var options;\n\n    if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n      name = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n      data = arguments.length <= 1 ? undefined : arguments[1]; // $FlowFixMe[invalid-tuple-index]\n\n      options = arguments.length <= 2 ? undefined : arguments[2];\n    } else {\n      data = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n      options = arguments.length <= 1 ? undefined : arguments[1];\n      name = null;\n    }\n\n    if (name) {\n      this.updateOne(this.map[name], data, options);\n    } else {\n      for (var index = 0; index < this.index.length; index++) {\n        this.updateOne(this.index[index], data, options);\n      }\n    }\n  }\n  /**\n   * Execute plugins, update rule props.\n   */\n  ;\n\n  _proto.updateOne = function updateOne(rule, data, options) {\n    if (options === void 0) {\n      options = defaultUpdateOptions;\n    }\n\n    var _this$options2 = this.options,\n        plugins = _this$options2.jss.plugins,\n        sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n    if (rule.rules instanceof RuleList) {\n      rule.rules.update(data, options);\n      return;\n    }\n\n    var styleRule = rule;\n    var style = styleRule.style;\n    plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n    if (options.process && style && style !== styleRule.style) {\n      // We need to run the plugins in case new `style` relies on syntax plugins.\n      plugins.onProcessStyle(styleRule.style, styleRule, sheet); // Update and add props.\n\n      for (var prop in styleRule.style) {\n        var nextValue = styleRule.style[prop];\n        var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n        // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n        if (nextValue !== prevValue) {\n          styleRule.prop(prop, nextValue, forceUpdateOptions);\n        }\n      } // Remove props.\n\n\n      for (var _prop in style) {\n        var _nextValue = styleRule.style[_prop];\n        var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n        // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n        if (_nextValue == null && _nextValue !== _prevValue) {\n          styleRule.prop(_prop, null, forceUpdateOptions);\n        }\n      }\n    }\n  }\n  /**\n   * Convert rules to a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(options) {\n    var str = '';\n    var sheet = this.options.sheet;\n    var link = sheet ? sheet.options.link : false;\n\n    for (var index = 0; index < this.index.length; index++) {\n      var rule = this.index[index];\n      var css = rule.toString(options); // No need to render an empty rule.\n\n      if (!css && !link) continue;\n      if (str) str += '\\n';\n      str += css;\n    }\n\n    return str;\n  };\n\n  return RuleList;\n}();\n\nvar StyleSheet = /*#__PURE__*/function () {\n  function StyleSheet(styles, options) {\n    this.options = void 0;\n    this.deployed = void 0;\n    this.attached = void 0;\n    this.rules = void 0;\n    this.renderer = void 0;\n    this.classes = void 0;\n    this.keyframes = void 0;\n    this.queue = void 0;\n    this.attached = false;\n    this.deployed = false;\n    this.classes = {};\n    this.keyframes = {};\n    this.options = _extends({}, options, {\n      sheet: this,\n      parent: this,\n      classes: this.classes,\n      keyframes: this.keyframes\n    });\n\n    if (options.Renderer) {\n      this.renderer = new options.Renderer(this);\n    }\n\n    this.rules = new RuleList(this.options);\n\n    for (var name in styles) {\n      this.rules.add(name, styles[name]);\n    }\n\n    this.rules.process();\n  }\n  /**\n   * Attach renderable to the render tree.\n   */\n\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.attach = function attach() {\n    if (this.attached) return this;\n    if (this.renderer) this.renderer.attach();\n    this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n    if (!this.deployed) this.deploy();\n    return this;\n  }\n  /**\n   * Remove renderable from render tree.\n   */\n  ;\n\n  _proto.detach = function detach() {\n    if (!this.attached) return this;\n    if (this.renderer) this.renderer.detach();\n    this.attached = false;\n    return this;\n  }\n  /**\n   * Add a rule to the current stylesheet.\n   * Will insert a rule also after the stylesheet has been rendered first time.\n   */\n  ;\n\n  _proto.addRule = function addRule(name, decl, options) {\n    var queue = this.queue; // Plugins can create rules.\n    // In order to preserve the right order, we need to queue all `.addRule` calls,\n    // which happen after the first `rules.add()` call.\n\n    if (this.attached && !queue) this.queue = [];\n    var rule = this.rules.add(name, decl, options);\n    if (!rule) return null;\n    this.options.jss.plugins.onProcessRule(rule);\n\n    if (this.attached) {\n      if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n      // It will be inserted all together when .attach is called.\n\n      if (queue) queue.push(rule);else {\n        this.insertRule(rule);\n\n        if (this.queue) {\n          this.queue.forEach(this.insertRule, this);\n          this.queue = undefined;\n        }\n      }\n      return rule;\n    } // We can't add rules to a detached style node.\n    // We will redeploy the sheet once user will attach it.\n\n\n    this.deployed = false;\n    return rule;\n  }\n  /**\n   * Insert rule into the StyleSheet\n   */\n  ;\n\n  _proto.insertRule = function insertRule(rule) {\n    if (this.renderer) {\n      this.renderer.insertRule(rule);\n    }\n  }\n  /**\n   * Create and add rules.\n   * Will render also after Style Sheet was rendered the first time.\n   */\n  ;\n\n  _proto.addRules = function addRules(styles, options) {\n    var added = [];\n\n    for (var name in styles) {\n      var rule = this.addRule(name, styles[name], options);\n      if (rule) added.push(rule);\n    }\n\n    return added;\n  }\n  /**\n   * Get a rule by name.\n   */\n  ;\n\n  _proto.getRule = function getRule(name) {\n    return this.rules.get(name);\n  }\n  /**\n   * Delete a rule by name.\n   * Returns `true`: if rule has been deleted from the DOM.\n   */\n  ;\n\n  _proto.deleteRule = function deleteRule(name) {\n    var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n    if (!rule || // Style sheet was created without link: true and attached, in this case we\n    // won't be able to remove the CSS rule from the DOM.\n    this.attached && !rule.renderable) {\n      return false;\n    }\n\n    this.rules.remove(rule);\n\n    if (this.attached && rule.renderable && this.renderer) {\n      return this.renderer.deleteRule(rule.renderable);\n    }\n\n    return true;\n  }\n  /**\n   * Get index of a rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(rule) {\n    return this.rules.indexOf(rule);\n  }\n  /**\n   * Deploy pure CSS string to a renderable.\n   */\n  ;\n\n  _proto.deploy = function deploy() {\n    if (this.renderer) this.renderer.deploy();\n    this.deployed = true;\n    return this;\n  }\n  /**\n   * Update the function values with a new data.\n   */\n  ;\n\n  _proto.update = function update() {\n    var _this$rules;\n\n    (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n    return this;\n  }\n  /**\n   * Updates a single rule.\n   */\n  ;\n\n  _proto.updateOne = function updateOne(rule, data, options) {\n    this.rules.updateOne(rule, data, options);\n    return this;\n  }\n  /**\n   * Convert rules to a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(options) {\n    return this.rules.toString(options);\n  };\n\n  return StyleSheet;\n}();\n\nvar PluginsRegistry = /*#__PURE__*/function () {\n  function PluginsRegistry() {\n    this.plugins = {\n      internal: [],\n      external: []\n    };\n    this.registry = void 0;\n  }\n\n  var _proto = PluginsRegistry.prototype;\n  /**\n   * Call `onCreateRule` hooks and return an object if returned by a hook.\n   */\n\n  _proto.onCreateRule = function onCreateRule(name, decl, options) {\n    for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n      var rule = this.registry.onCreateRule[i](name, decl, options);\n      if (rule) return rule;\n    }\n\n    return null;\n  }\n  /**\n   * Call `onProcessRule` hooks.\n   */\n  ;\n\n  _proto.onProcessRule = function onProcessRule(rule) {\n    if (rule.isProcessed) return;\n    var sheet = rule.options.sheet;\n\n    for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n      this.registry.onProcessRule[i](rule, sheet);\n    }\n\n    if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n    rule.isProcessed = true;\n  }\n  /**\n   * Call `onProcessStyle` hooks.\n   */\n  ;\n\n  _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n    for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n      // $FlowFixMe[prop-missing]\n      rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n    }\n  }\n  /**\n   * Call `onProcessSheet` hooks.\n   */\n  ;\n\n  _proto.onProcessSheet = function onProcessSheet(sheet) {\n    for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n      this.registry.onProcessSheet[i](sheet);\n    }\n  }\n  /**\n   * Call `onUpdate` hooks.\n   */\n  ;\n\n  _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n    for (var i = 0; i < this.registry.onUpdate.length; i++) {\n      this.registry.onUpdate[i](data, rule, sheet, options);\n    }\n  }\n  /**\n   * Call `onChangeValue` hooks.\n   */\n  ;\n\n  _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n    var processedValue = value;\n\n    for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n      processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n    }\n\n    return processedValue;\n  }\n  /**\n   * Register a plugin.\n   */\n  ;\n\n  _proto.use = function use(newPlugin, options) {\n    if (options === void 0) {\n      options = {\n        queue: 'external'\n      };\n    }\n\n    var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n    if (plugins.indexOf(newPlugin) !== -1) {\n      return;\n    }\n\n    plugins.push(newPlugin);\n    this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n      for (var name in plugin) {\n        if (name in registry) {\n          registry[name].push(plugin[name]);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n        }\n      }\n\n      return registry;\n    }, {\n      onCreateRule: [],\n      onProcessRule: [],\n      onProcessStyle: [],\n      onProcessSheet: [],\n      onChangeValue: [],\n      onUpdate: []\n    });\n  };\n\n  return PluginsRegistry;\n}();\n/**\n * Sheets registry to access them all at one place.\n */\n\n\nvar SheetsRegistry = /*#__PURE__*/function () {\n  function SheetsRegistry() {\n    this.registry = [];\n  }\n\n  var _proto = SheetsRegistry.prototype;\n  /**\n   * Register a Style Sheet.\n   */\n\n  _proto.add = function add(sheet) {\n    var registry = this.registry;\n    var index = sheet.options.index;\n    if (registry.indexOf(sheet) !== -1) return;\n\n    if (registry.length === 0 || index >= this.index) {\n      registry.push(sheet);\n      return;\n    } // Find a position.\n\n\n    for (var i = 0; i < registry.length; i++) {\n      if (registry[i].options.index > index) {\n        registry.splice(i, 0, sheet);\n        return;\n      }\n    }\n  }\n  /**\n   * Reset the registry.\n   */\n  ;\n\n  _proto.reset = function reset() {\n    this.registry = [];\n  }\n  /**\n   * Remove a Style Sheet.\n   */\n  ;\n\n  _proto.remove = function remove(sheet) {\n    var index = this.registry.indexOf(sheet);\n    this.registry.splice(index, 1);\n  }\n  /**\n   * Convert all attached sheets to a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        attached = _ref.attached,\n        options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n    var css = '';\n\n    for (var i = 0; i < this.registry.length; i++) {\n      var sheet = this.registry[i];\n\n      if (attached != null && sheet.attached !== attached) {\n        continue;\n      }\n\n      if (css) css += '\\n';\n      css += sheet.toString(options);\n    }\n\n    return css;\n  };\n\n  _createClass(SheetsRegistry, [{\n    key: \"index\",\n\n    /**\n     * Current highest index number.\n     */\n    get: function get() {\n      return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n    }\n  }]);\n\n  return SheetsRegistry;\n}();\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\n\nvar registry = new SheetsRegistry();\n/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\nvar globalThis = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis[ns] == null) globalThis[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis[ns]++;\nvar maxRules = 1e10;\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nvar createGenerateId = function createGenerateId(options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var ruleCounter = 0;\n  return function (rule, sheet) {\n    ruleCounter += 1;\n\n    if (ruleCounter > maxRules) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n    }\n\n    var jssId = '';\n    var prefix = '';\n\n    if (sheet) {\n      if (sheet.options.classNamePrefix) {\n        prefix = sheet.options.classNamePrefix;\n      }\n\n      if (sheet.options.jss.id != null) {\n        jssId = String(sheet.options.jss.id);\n      }\n    }\n\n    if (options.minify) {\n      // Using \"c\" because a number can't be the first char in a class name.\n      return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n    }\n\n    return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n  };\n};\n/**\n * Cache the value from the first time a function is called.\n */\n\n\nvar memoize = function memoize(fn) {\n  var value;\n  return function () {\n    if (!value) value = fn();\n    return value;\n  };\n};\n/**\n * Get a style property value.\n */\n\n\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n  try {\n    // Support CSSTOM.\n    if (cssRule.attributeStyleMap) {\n      return cssRule.attributeStyleMap.get(prop);\n    }\n\n    return cssRule.style.getPropertyValue(prop);\n  } catch (err) {\n    // IE may throw if property is unknown.\n    return '';\n  }\n};\n/**\n * Set a style property.\n */\n\n\nvar setProperty = function setProperty(cssRule, prop, value) {\n  try {\n    var cssValue = value;\n\n    if (Array.isArray(value)) {\n      cssValue = toCssValue(value, true);\n\n      if (value[value.length - 1] === '!important') {\n        cssRule.style.setProperty(prop, cssValue, 'important');\n        return true;\n      }\n    } // Support CSSTOM.\n\n\n    if (cssRule.attributeStyleMap) {\n      cssRule.attributeStyleMap.set(prop, cssValue);\n    } else {\n      cssRule.style.setProperty(prop, cssValue);\n    }\n  } catch (err) {\n    // IE may throw if property is unknown.\n    return false;\n  }\n\n  return true;\n};\n/**\n * Remove a style property.\n */\n\n\nvar removeProperty = function removeProperty(cssRule, prop) {\n  try {\n    // Support CSSTOM.\n    if (cssRule.attributeStyleMap) {\n      cssRule.attributeStyleMap.delete(prop);\n    } else {\n      cssRule.style.removeProperty(prop);\n    }\n  } catch (err) {\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n  }\n};\n/**\n * Set the selector.\n */\n\n\nvar setSelector = function setSelector(cssRule, selectorText) {\n  cssRule.selectorText = selectorText; // Return false if setter was not successful.\n  // Currently works in chrome only.\n\n  return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n  return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n  for (var i = 0; i < registry.length; i++) {\n    var sheet = registry[i];\n\n    if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n      return sheet;\n    }\n  }\n\n  return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n  for (var i = registry.length - 1; i >= 0; i--) {\n    var sheet = registry[i];\n\n    if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n      return sheet;\n    }\n  }\n\n  return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n  var head = getHead();\n\n  for (var i = 0; i < head.childNodes.length; i++) {\n    var node = head.childNodes[i];\n\n    if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n      return node;\n    }\n  }\n\n  return null;\n}\n/**\n * Find a node before which we can insert the sheet.\n */\n\n\nfunction findPrevNode(options) {\n  var registry$1 = registry.registry;\n\n  if (registry$1.length > 0) {\n    // Try to insert before the next higher sheet.\n    var sheet = findHigherSheet(registry$1, options);\n\n    if (sheet && sheet.renderer) {\n      return {\n        parent: sheet.renderer.element.parentNode,\n        node: sheet.renderer.element\n      };\n    } // Otherwise insert after the last attached.\n\n\n    sheet = findHighestSheet(registry$1, options);\n\n    if (sheet && sheet.renderer) {\n      return {\n        parent: sheet.renderer.element.parentNode,\n        node: sheet.renderer.element.nextSibling\n      };\n    }\n  } // Try to find a comment placeholder if registry is empty.\n\n\n  var insertionPoint = options.insertionPoint;\n\n  if (insertionPoint && typeof insertionPoint === 'string') {\n    var comment = findCommentNode(insertionPoint);\n\n    if (comment) {\n      return {\n        parent: comment.parentNode,\n        node: comment.nextSibling\n      };\n    } // If user specifies an insertion point and it can't be found in the document -\n    // bad specificity issues may appear.\n\n\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n  }\n\n  return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n  var insertionPoint = options.insertionPoint;\n  var nextNode = findPrevNode(options);\n\n  if (nextNode !== false && nextNode.parent) {\n    nextNode.parent.insertBefore(style, nextNode.node);\n    return;\n  } // Works with iframes and any node types.\n\n\n  if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n    // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n    var insertionPointElement = insertionPoint;\n    var parentNode = insertionPointElement.parentNode;\n    if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n    return;\n  }\n\n  getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n  var node = document.querySelector('meta[property=\"csp-nonce\"]');\n  return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n  try {\n    if ('insertRule' in container) {\n      var c = container;\n      c.insertRule(rule, index);\n    } // Keyframes rule.\n    else if ('appendRule' in container) {\n        var _c = container;\n\n        _c.appendRule(rule);\n      }\n  } catch (err) {\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n    return false;\n  }\n\n  return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n  var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n  if (index === undefined || index > maxIndex) {\n    // eslint-disable-next-line no-param-reassign\n    return maxIndex;\n  }\n\n  return index;\n};\n\nvar createStyle = function createStyle() {\n  var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n  // insert rules after we insert the style tag.\n  // It seems to kick-off the source order specificity algorithm.\n\n  el.textContent = '\\n';\n  return el;\n};\n\nvar DomRenderer = /*#__PURE__*/function () {\n  // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n  // Will be empty if link: true option is not set, because\n  // it is only for use together with insertRule API.\n  function DomRenderer(sheet) {\n    this.getPropertyValue = getPropertyValue;\n    this.setProperty = setProperty;\n    this.removeProperty = removeProperty;\n    this.setSelector = setSelector;\n    this.element = void 0;\n    this.sheet = void 0;\n    this.hasInsertedRules = false;\n    this.cssRules = []; // There is no sheet when the renderer is used from a standalone StyleRule.\n\n    if (sheet) registry.add(sheet);\n    this.sheet = sheet;\n\n    var _ref = this.sheet ? this.sheet.options : {},\n        media = _ref.media,\n        meta = _ref.meta,\n        element = _ref.element;\n\n    this.element = element || createStyle();\n    this.element.setAttribute('data-jss', '');\n    if (media) this.element.setAttribute('media', media);\n    if (meta) this.element.setAttribute('data-meta', meta);\n    var nonce = getNonce();\n    if (nonce) this.element.setAttribute('nonce', nonce);\n  }\n  /**\n   * Insert style element into render tree.\n   */\n\n\n  var _proto = DomRenderer.prototype;\n\n  _proto.attach = function attach() {\n    // In the case the element node is external and it is already in the DOM.\n    if (this.element.parentNode || !this.sheet) return;\n    insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n    // most browsers create a new CSSStyleSheet, except of all IEs.\n\n    var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n    if (this.hasInsertedRules && deployed) {\n      this.hasInsertedRules = false;\n      this.deploy();\n    }\n  }\n  /**\n   * Remove style element from render tree.\n   */\n  ;\n\n  _proto.detach = function detach() {\n    if (!this.sheet) return;\n    var parentNode = this.element.parentNode;\n    if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n    // Though IE will keep them and we need a consistent behavior.\n\n    if (this.sheet.options.link) {\n      this.cssRules = [];\n      this.element.textContent = '\\n';\n    }\n  }\n  /**\n   * Inject CSS string into element.\n   */\n  ;\n\n  _proto.deploy = function deploy() {\n    var sheet = this.sheet;\n    if (!sheet) return;\n\n    if (sheet.options.link) {\n      this.insertRules(sheet.rules);\n      return;\n    }\n\n    this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n  }\n  /**\n   * Insert RuleList into an element.\n   */\n  ;\n\n  _proto.insertRules = function insertRules(rules, nativeParent) {\n    for (var i = 0; i < rules.index.length; i++) {\n      this.insertRule(rules.index[i], i, nativeParent);\n    }\n  }\n  /**\n   * Insert a rule into element.\n   */\n  ;\n\n  _proto.insertRule = function insertRule(rule, index, nativeParent) {\n    if (nativeParent === void 0) {\n      nativeParent = this.element.sheet;\n    }\n\n    if (rule.rules) {\n      var parent = rule;\n      var latestNativeParent = nativeParent;\n\n      if (rule.type === 'conditional' || rule.type === 'keyframes') {\n        var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n        latestNativeParent = _insertRule(nativeParent, parent.toString({\n          children: false\n        }), _insertionIndex);\n\n        if (latestNativeParent === false) {\n          return false;\n        }\n\n        this.refCssRule(rule, _insertionIndex, latestNativeParent);\n      }\n\n      this.insertRules(parent.rules, latestNativeParent);\n      return latestNativeParent;\n    }\n\n    var ruleStr = rule.toString();\n    if (!ruleStr) return false;\n    var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n    var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n    if (nativeRule === false) {\n      return false;\n    }\n\n    this.hasInsertedRules = true;\n    this.refCssRule(rule, insertionIndex, nativeRule);\n    return nativeRule;\n  };\n\n  _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n    rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n    // like rules inside media queries or keyframes\n\n    if (rule.options.parent instanceof StyleSheet) {\n      this.cssRules[index] = cssRule;\n    }\n  }\n  /**\n   * Delete a rule.\n   */\n  ;\n\n  _proto.deleteRule = function deleteRule(cssRule) {\n    var sheet = this.element.sheet;\n    var index = this.indexOf(cssRule);\n    if (index === -1) return false;\n    sheet.deleteRule(index);\n    this.cssRules.splice(index, 1);\n    return true;\n  }\n  /**\n   * Get index of a CSS Rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(cssRule) {\n    return this.cssRules.indexOf(cssRule);\n  }\n  /**\n   * Generate a new CSS rule and replace the existing one.\n   *\n   * Only used for some old browsers because they can't set a selector.\n   */\n  ;\n\n  _proto.replaceRule = function replaceRule(cssRule, rule) {\n    var index = this.indexOf(cssRule);\n    if (index === -1) return false;\n    this.element.sheet.deleteRule(index);\n    this.cssRules.splice(index, 1);\n    return this.insertRule(rule, index);\n  }\n  /**\n   * Get all rules elements.\n   */\n  ;\n\n  _proto.getRules = function getRules() {\n    return this.element.sheet.cssRules;\n  };\n\n  return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss = /*#__PURE__*/function () {\n  function Jss(options) {\n    this.id = instanceCounter++;\n    this.version = \"10.5.1\";\n    this.plugins = new PluginsRegistry();\n    this.options = {\n      id: {\n        minify: false\n      },\n      createGenerateId: createGenerateId,\n      Renderer: isInBrowser ? DomRenderer : null,\n      plugins: []\n    };\n    this.generateId = createGenerateId({\n      minify: false\n    });\n\n    for (var i = 0; i < plugins.length; i++) {\n      this.plugins.use(plugins[i], {\n        queue: 'internal'\n      });\n    }\n\n    this.setup(options);\n  }\n  /**\n   * Prepares various options, applies plugins.\n   * Should not be used twice on the same instance, because there is no plugins\n   * deduplication logic.\n   */\n\n\n  var _proto = Jss.prototype;\n\n  _proto.setup = function setup(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    if (options.createGenerateId) {\n      this.options.createGenerateId = options.createGenerateId;\n    }\n\n    if (options.id) {\n      this.options.id = _extends({}, this.options.id, options.id);\n    }\n\n    if (options.createGenerateId || options.id) {\n      this.generateId = this.options.createGenerateId(this.options.id);\n    }\n\n    if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n    if ('Renderer' in options) {\n      this.options.Renderer = options.Renderer;\n    } // eslint-disable-next-line prefer-spread\n\n\n    if (options.plugins) this.use.apply(this, options.plugins);\n    return this;\n  }\n  /**\n   * Create a Style Sheet.\n   */\n  ;\n\n  _proto.createStyleSheet = function createStyleSheet(styles, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var _options = options,\n        index = _options.index;\n\n    if (typeof index !== 'number') {\n      index = registry.index === 0 ? 0 : registry.index + 1;\n    }\n\n    var sheet = new StyleSheet(styles, _extends({}, options, {\n      jss: this,\n      generateId: options.generateId || this.generateId,\n      insertionPoint: this.options.insertionPoint,\n      Renderer: this.options.Renderer,\n      index: index\n    }));\n    this.plugins.onProcessSheet(sheet);\n    return sheet;\n  }\n  /**\n   * Detach the Style Sheet and remove it from the registry.\n   */\n  ;\n\n  _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n    sheet.detach();\n    registry.remove(sheet);\n    return this;\n  }\n  /**\n   * Create a rule without a Style Sheet.\n   * [Deprecated] will be removed in the next major version.\n   */\n  ;\n\n  _proto.createRule = function createRule$1(name, style, options) {\n    if (style === void 0) {\n      style = {};\n    }\n\n    if (options === void 0) {\n      options = {};\n    } // Enable rule without name for inline styles.\n\n\n    if (typeof name === 'object') {\n      // $FlowFixMe[incompatible-call]\n      return this.createRule(undefined, name, style);\n    } // $FlowFixMe[incompatible-type]\n\n\n    var ruleOptions = _extends({}, options, {\n      name: name,\n      jss: this,\n      Renderer: this.options.Renderer\n    });\n\n    if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n    if (!ruleOptions.classes) ruleOptions.classes = {};\n    if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n    var rule = createRule(name, style, ruleOptions);\n    if (rule) this.plugins.onProcessRule(rule);\n    return rule;\n  }\n  /**\n   * Register plugin. Passed function will be invoked with a rule instance.\n   */\n  ;\n\n  _proto.use = function use() {\n    var _this = this;\n\n    for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n      plugins[_key] = arguments[_key];\n    }\n\n    plugins.forEach(function (plugin) {\n      _this.plugins.use(plugin);\n    });\n    return this;\n  };\n\n  return Jss;\n}();\n/**\n * Extracts a styles object with only props that contain function values.\n */\n\n\nfunction getDynamicStyles(styles) {\n  var to = null;\n\n  for (var key in styles) {\n    var value = styles[key];\n    var type = typeof value;\n\n    if (type === 'function') {\n      if (!to) to = {};\n      to[key] = value;\n    } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n      var extracted = getDynamicStyles(value);\n\n      if (extracted) {\n        if (!to) to = {};\n        to[key] = extracted;\n      }\n    }\n  }\n\n  return to;\n}\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\n\n\nvar SheetsManager = /*#__PURE__*/function () {\n  function SheetsManager() {\n    this.length = 0;\n    this.sheets = new WeakMap();\n  }\n\n  var _proto = SheetsManager.prototype;\n\n  _proto.get = function get(key) {\n    var entry = this.sheets.get(key);\n    return entry && entry.sheet;\n  };\n\n  _proto.add = function add(key, sheet) {\n    if (this.sheets.has(key)) return;\n    this.length++;\n    this.sheets.set(key, {\n      sheet: sheet,\n      refs: 0\n    });\n  };\n\n  _proto.manage = function manage(key) {\n    var entry = this.sheets.get(key);\n\n    if (entry) {\n      if (entry.refs === 0) {\n        entry.sheet.attach();\n      }\n\n      entry.refs++;\n      return entry.sheet;\n    }\n\n    warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n    return undefined;\n  };\n\n  _proto.unmanage = function unmanage(key) {\n    var entry = this.sheets.get(key);\n\n    if (entry) {\n      if (entry.refs > 0) {\n        entry.refs--;\n        if (entry.refs === 0) entry.sheet.detach();\n      }\n    } else {\n      warning(false, \"SheetsManager: can't find sheet to unmanage\");\n    }\n  };\n\n  _createClass(SheetsManager, [{\n    key: \"size\",\n    get: function get() {\n      return this.length;\n    }\n  }]);\n\n  return SheetsManager;\n}();\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n/**\n * Export a constant indicating if this browser has CSSTOM support.\n * https://developers.google.com/web/updates/2018/03/cssom\n */\n\n\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n/**\n * Creates a new instance of Jss.\n */\n\nvar create = function create(options) {\n  return new Jss(options);\n};\n/**\n * A global Jss instance.\n */\n\n\nvar jss = create();\nexport default jss;\nexport { RuleList, SheetsManager, SheetsRegistry, create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, registry as sheets, toCssValue };","map":{"version":3,"sources":["C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/jss/dist/jss.esm.js"],"names":["_extends","isInBrowser","warning","_createClass","_inheritsLoose","_assertThisInitialized","_objectWithoutPropertiesLoose","plainObjectConstrurctor","constructor","cloneStyle","style","Array","isArray","map","newStyle","name","createRule","decl","options","jss","declCopy","rule","plugins","onCreateRule","process","env","NODE_ENV","join","value","by","result","i","length","toCssValue","ignoreImportant","cssValue","indentStr","str","indent","index","toCss","selector","_options","_options$indent","fallbacks","fallback","prop","_prop","_value","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","escape","replace","BaseStyleRule","key","type","isProcessed","renderer","renderable","sheet","Renderer","_proto","prototype","undefined","force","newValue","onChangeValue","isEmpty","isDefined","remove","removeProperty","setProperty","attached","StyleRule","_BaseStyleRule","_this","call","selectorText","id","scoped","generateId","_proto2","applyTo","json","toJSON","toString","link","opts","set","hasChanged","setSelector","replaceRule","get","pluginStyleRule","parent","defaultToStringOptions","children","atRegExp","ConditionalRule","styles","at","query","rules","atMatch","match","RuleList","add","getRule","indexOf","addRule","onProcessRule","keyRegExp","pluginConditionalRule","test","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","val","keyframes","replaceRef","refKeyframe","plugin","onProcessStyle","KeyframeRule","_len","arguments","args","_key","apply","concat","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","pluginSimpleRule","defaultUpdateOptions","forceUpdateOptions","raw","counter","classes","ruleOptions","_this$options","register","splice","unregister","slice","forEach","update","data","updateOne","_this$options2","styleRule","onUpdate","nextValue","prevValue","_nextValue","_prevValue","css","StyleSheet","deployed","queue","attach","deploy","detach","push","insertRule","addRules","added","deleteRule","_this$rules","PluginsRegistry","internal","external","registry","onProcessSheet","processedValue","use","newPlugin","reduce","SheetsRegistry","reset","_temp","_ref","globalThis","window","Math","self","Function","ns","moduleId","maxRules","createGenerateId","ruleCounter","jssId","prefix","classNamePrefix","String","minify","memoize","fn","getPropertyValue","cssRule","attributeStyleMap","err","delete","message","getHead","document","querySelector","findHigherSheet","insertionPoint","findHighestSheet","findCommentNode","text","head","childNodes","node","nodeType","nodeValue","trim","findPrevNode","registry$1","element","parentNode","nextSibling","comment","insertStyle","nextNode","insertBefore","insertionPointElement","appendChild","getNonce","getAttribute","_insertRule","container","c","_c","appendRule","cssRules","getValidRuleInsertionIndex","maxIndex","createStyle","el","createElement","textContent","DomRenderer","hasInsertedRules","media","meta","setAttribute","nonce","Boolean","removeChild","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","version","setup","createStyleSheet","removeStyleSheet","createRule$1","getDynamicStyles","to","extracted","SheetsManager","sheets","WeakMap","entry","has","refs","manage","unmanage","hasCSSTOMSupport","create"],"mappings":"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","sourcesContent":["import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n  if (style == null || typeof style !== 'object') return style;\n  if (Array.isArray(style)) return style.map(cloneStyle);\n  if (style.constructor !== plainObjectConstrurctor) return style;\n  var newStyle = {};\n\n  for (var name in style) {\n    newStyle[name] = cloneStyle(style[name]);\n  }\n\n  return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n  if (name === void 0) {\n    name = 'unnamed';\n  }\n\n  var jss = options.jss;\n  var declCopy = cloneStyle(decl);\n  var rule = jss.plugins.onCreateRule(name, declCopy, options);\n  if (rule) return rule; // It is an at-rule and it has no instance.\n\n  if (name[0] === '@') {\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n  }\n\n  return null;\n}\n\nvar join = function join(value, by) {\n  var result = '';\n\n  for (var i = 0; i < value.length; i++) {\n    // Remove !important from the value, it will be readded later.\n    if (value[i] === '!important') break;\n    if (result) result += by;\n    result += value[i];\n  }\n\n  return result;\n};\n\n/**\n * Converts array values to string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\nvar toCssValue = function toCssValue(value, ignoreImportant) {\n  if (ignoreImportant === void 0) {\n    ignoreImportant = false;\n  }\n\n  if (!Array.isArray(value)) return value;\n  var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n  if (Array.isArray(value[0])) {\n    for (var i = 0; i < value.length; i++) {\n      if (value[i] === '!important') break;\n      if (cssValue) cssValue += ', ';\n      cssValue += join(value[i], ' ');\n    }\n  } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n  if (!ignoreImportant && value[value.length - 1] === '!important') {\n    cssValue += ' !important';\n  }\n\n  return cssValue;\n};\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\nfunction indentStr(str, indent) {\n  var result = '';\n\n  for (var index = 0; index < indent; index++) {\n    result += '  ';\n  }\n\n  return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var result = '';\n  if (!style) return result;\n  var _options = options,\n      _options$indent = _options.indent,\n      indent = _options$indent === void 0 ? 0 : _options$indent;\n  var fallbacks = style.fallbacks;\n  if (selector) indent++; // Apply fallbacks first.\n\n  if (fallbacks) {\n    // Array syntax {fallbacks: [{prop: value}]}\n    if (Array.isArray(fallbacks)) {\n      for (var index = 0; index < fallbacks.length; index++) {\n        var fallback = fallbacks[index];\n\n        for (var prop in fallback) {\n          var value = fallback[prop];\n\n          if (value != null) {\n            if (result) result += '\\n';\n            result += \"\" + indentStr(prop + \": \" + toCssValue(value) + \";\", indent);\n          }\n        }\n      }\n    } else {\n      // Object syntax {fallbacks: {prop: value}}\n      for (var _prop in fallbacks) {\n        var _value = fallbacks[_prop];\n\n        if (_value != null) {\n          if (result) result += '\\n';\n          result += \"\" + indentStr(_prop + \": \" + toCssValue(_value) + \";\", indent);\n        }\n      }\n    }\n  }\n\n  for (var _prop2 in style) {\n    var _value2 = style[_prop2];\n\n    if (_value2 != null && _prop2 !== 'fallbacks') {\n      if (result) result += '\\n';\n      result += \"\" + indentStr(_prop2 + \": \" + toCssValue(_value2) + \";\", indent);\n    }\n  } // Allow empty style in this case, because properties will be added dynamically.\n\n\n  if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n  if (!selector) return result;\n  indent--;\n  if (result) result = \"\\n\" + result + \"\\n\";\n  return indentStr(selector + \" {\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n  return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n  function BaseStyleRule(key, style, options) {\n    this.type = 'style';\n    this.key = void 0;\n    this.isProcessed = false;\n    this.style = void 0;\n    this.renderer = void 0;\n    this.renderable = void 0;\n    this.options = void 0;\n    var sheet = options.sheet,\n        Renderer = options.Renderer;\n    this.key = key;\n    this.options = options;\n    this.style = style;\n    if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n  }\n  /**\n   * Get or set a style property.\n   */\n\n\n  var _proto = BaseStyleRule.prototype;\n\n  _proto.prop = function prop(name, value, options) {\n    // It's a getter.\n    if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n    var force = options ? options.force : false;\n    if (!force && this.style[name] === value) return this;\n    var newValue = value;\n\n    if (!options || options.process !== false) {\n      newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n    }\n\n    var isEmpty = newValue == null || newValue === false;\n    var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n    if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n    var remove = isEmpty && isDefined;\n    if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n    if (this.renderable && this.renderer) {\n      if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n      return this;\n    }\n\n    var sheet = this.options.sheet;\n\n    if (sheet && sheet.attached) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n    }\n\n    return this;\n  };\n\n  return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n  _inheritsLoose(StyleRule, _BaseStyleRule);\n\n  function StyleRule(key, style, options) {\n    var _this;\n\n    _this = _BaseStyleRule.call(this, key, style, options) || this;\n    _this.selectorText = void 0;\n    _this.id = void 0;\n    _this.renderable = void 0;\n    var selector = options.selector,\n        scoped = options.scoped,\n        sheet = options.sheet,\n        generateId = options.generateId;\n\n    if (selector) {\n      _this.selectorText = selector;\n    } else if (scoped !== false) {\n      _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n      _this.selectorText = \".\" + escape(_this.id);\n    }\n\n    return _this;\n  }\n  /**\n   * Set selector string.\n   * Attention: use this with caution. Most browsers didn't implement\n   * selectorText setter, so this may result in rerendering of entire Style Sheet.\n   */\n\n\n  var _proto2 = StyleRule.prototype;\n\n  /**\n   * Apply rule to an element inline.\n   */\n  _proto2.applyTo = function applyTo(renderable) {\n    var renderer = this.renderer;\n\n    if (renderer) {\n      var json = this.toJSON();\n\n      for (var prop in json) {\n        renderer.setProperty(renderable, prop, json[prop]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Returns JSON representation of the rule.\n   * Fallbacks are not supported.\n   * Useful for inline styles.\n   */\n  ;\n\n  _proto2.toJSON = function toJSON() {\n    var json = {};\n\n    for (var prop in this.style) {\n      var value = this.style[prop];\n      if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n    }\n\n    return json;\n  }\n  /**\n   * Generates a CSS string.\n   */\n  ;\n\n  _proto2.toString = function toString(options) {\n    var sheet = this.options.sheet;\n    var link = sheet ? sheet.options.link : false;\n    var opts = link ? _extends({}, options, {\n      allowEmpty: true\n    }) : options;\n    return toCss(this.selectorText, this.style, opts);\n  };\n\n  _createClass(StyleRule, [{\n    key: \"selector\",\n    set: function set(selector) {\n      if (selector === this.selectorText) return;\n      this.selectorText = selector;\n      var renderer = this.renderer,\n          renderable = this.renderable;\n      if (!renderable || !renderer) return;\n      var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n      if (!hasChanged) {\n        renderer.replaceRule(renderable, this);\n      }\n    }\n    /**\n     * Get selector string.\n     */\n    ,\n    get: function get() {\n      return this.selectorText;\n    }\n  }]);\n\n  return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n  onCreateRule: function onCreateRule(name, style, options) {\n    if (name[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n      return null;\n    }\n\n    return new StyleRule(name, style, options);\n  }\n};\n\nvar defaultToStringOptions = {\n  indent: 1,\n  children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n  function ConditionalRule(key, styles, options) {\n    this.type = 'conditional';\n    this.at = void 0;\n    this.key = void 0;\n    this.query = void 0;\n    this.rules = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    var atMatch = key.match(atRegExp);\n    this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n    this.query = options.name || \"@\" + this.at;\n    this.options = options;\n    this.rules = new RuleList(_extends({}, options, {\n      parent: this\n    }));\n\n    for (var name in styles) {\n      this.rules.add(name, styles[name]);\n    }\n\n    this.rules.process();\n  }\n  /**\n   * Get a rule.\n   */\n\n\n  var _proto = ConditionalRule.prototype;\n\n  _proto.getRule = function getRule(name) {\n    return this.rules.get(name);\n  }\n  /**\n   * Get index of a rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(rule) {\n    return this.rules.indexOf(rule);\n  }\n  /**\n   * Create and register rule, run plugins.\n   */\n  ;\n\n  _proto.addRule = function addRule(name, style, options) {\n    var rule = this.rules.add(name, style, options);\n    if (!rule) return null;\n    this.options.jss.plugins.onProcessRule(rule);\n    return rule;\n  }\n  /**\n   * Generates a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(options) {\n    if (options === void 0) {\n      options = defaultToStringOptions;\n    }\n\n    if (options.indent == null) options.indent = defaultToStringOptions.indent;\n    if (options.children == null) options.children = defaultToStringOptions.children;\n\n    if (options.children === false) {\n      return this.query + \" {}\";\n    }\n\n    var children = this.rules.toString(options);\n    return children ? this.query + \" {\\n\" + children + \"\\n}\" : '';\n  };\n\n  return ConditionalRule;\n}();\nvar keyRegExp = /@media|@supports\\s+/;\nvar pluginConditionalRule = {\n  onCreateRule: function onCreateRule(key, styles, options) {\n    return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n  }\n};\n\nvar defaultToStringOptions$1 = {\n  indent: 1,\n  children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n  function KeyframesRule(key, frames, options) {\n    this.type = 'keyframes';\n    this.at = '@keyframes';\n    this.key = void 0;\n    this.name = void 0;\n    this.id = void 0;\n    this.rules = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    var nameMatch = key.match(nameRegExp);\n\n    if (nameMatch && nameMatch[1]) {\n      this.name = nameMatch[1];\n    } else {\n      this.name = 'noname';\n      process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n    }\n\n    this.key = this.type + \"-\" + this.name;\n    this.options = options;\n    var scoped = options.scoped,\n        sheet = options.sheet,\n        generateId = options.generateId;\n    this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n    this.rules = new RuleList(_extends({}, options, {\n      parent: this\n    }));\n\n    for (var name in frames) {\n      this.rules.add(name, frames[name], _extends({}, options, {\n        parent: this\n      }));\n    }\n\n    this.rules.process();\n  }\n  /**\n   * Generates a CSS string.\n   */\n\n\n  var _proto = KeyframesRule.prototype;\n\n  _proto.toString = function toString(options) {\n    if (options === void 0) {\n      options = defaultToStringOptions$1;\n    }\n\n    if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n    if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n    if (options.children === false) {\n      return this.at + \" \" + this.id + \" {}\";\n    }\n\n    var children = this.rules.toString(options);\n    if (children) children = \"\\n\" + children + \"\\n\";\n    return this.at + \" \" + this.id + \" {\" + children + \"}\";\n  };\n\n  return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n  if (typeof val === 'string') {\n    return val.replace(refRegExp, function (match, name) {\n      if (name in keyframes) {\n        return keyframes[name];\n      }\n\n      process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n      return match;\n    });\n  }\n\n  return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n  var value = style[prop];\n  var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n  if (refKeyframe !== value) {\n    style[prop] = refKeyframe;\n  }\n};\n\nvar plugin = {\n  onCreateRule: function onCreateRule(key, frames, options) {\n    return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n  },\n  // Animation name ref replacer.\n  onProcessStyle: function onProcessStyle(style, rule, sheet) {\n    if (rule.type !== 'style' || !sheet) return style;\n    if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n    if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n    return style;\n  },\n  onChangeValue: function onChangeValue(val, prop, rule) {\n    var sheet = rule.options.sheet;\n\n    if (!sheet) {\n      return val;\n    }\n\n    switch (prop) {\n      case 'animation':\n        return findReferencedKeyframe(val, sheet.keyframes);\n\n      case 'animation-name':\n        return findReferencedKeyframe(val, sheet.keyframes);\n\n      default:\n        return val;\n    }\n  }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n  _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n  function KeyframeRule() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _BaseStyleRule.call.apply(_BaseStyleRule, [this].concat(args)) || this;\n    _this.renderable = void 0;\n    return _this;\n  }\n\n  var _proto = KeyframeRule.prototype;\n\n  /**\n   * Generates a CSS string.\n   */\n  _proto.toString = function toString(options) {\n    var sheet = this.options.sheet;\n    var link = sheet ? sheet.options.link : false;\n    var opts = link ? _extends({}, options, {\n      allowEmpty: true\n    }) : options;\n    return toCss(this.key, this.style, opts);\n  };\n\n  return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n  onCreateRule: function onCreateRule(key, style, options) {\n    if (options.parent && options.parent.type === 'keyframes') {\n      return new KeyframeRule(key, style, options);\n    }\n\n    return null;\n  }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n  function FontFaceRule(key, style, options) {\n    this.type = 'font-face';\n    this.at = '@font-face';\n    this.key = void 0;\n    this.style = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    this.style = style;\n    this.options = options;\n  }\n  /**\n   * Generates a CSS string.\n   */\n\n\n  var _proto = FontFaceRule.prototype;\n\n  _proto.toString = function toString(options) {\n    if (Array.isArray(this.style)) {\n      var str = '';\n\n      for (var index = 0; index < this.style.length; index++) {\n        str += toCss(this.at, this.style[index]);\n        if (this.style[index + 1]) str += '\\n';\n      }\n\n      return str;\n    }\n\n    return toCss(this.at, this.style, options);\n  };\n\n  return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n  onCreateRule: function onCreateRule(key, style, options) {\n    return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n  }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n  function ViewportRule(key, style, options) {\n    this.type = 'viewport';\n    this.at = '@viewport';\n    this.key = void 0;\n    this.style = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    this.style = style;\n    this.options = options;\n  }\n  /**\n   * Generates a CSS string.\n   */\n\n\n  var _proto = ViewportRule.prototype;\n\n  _proto.toString = function toString(options) {\n    return toCss(this.key, this.style, options);\n  };\n\n  return ViewportRule;\n}();\nvar pluginViewportRule = {\n  onCreateRule: function onCreateRule(key, style, options) {\n    return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n  }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n  function SimpleRule(key, value, options) {\n    this.type = 'simple';\n    this.key = void 0;\n    this.value = void 0;\n    this.options = void 0;\n    this.isProcessed = false;\n    this.renderable = void 0;\n    this.key = key;\n    this.value = value;\n    this.options = options;\n  }\n  /**\n   * Generates a CSS string.\n   */\n  // eslint-disable-next-line no-unused-vars\n\n\n  var _proto = SimpleRule.prototype;\n\n  _proto.toString = function toString(options) {\n    if (Array.isArray(this.value)) {\n      var str = '';\n\n      for (var index = 0; index < this.value.length; index++) {\n        str += this.key + \" \" + this.value[index] + \";\";\n        if (this.value[index + 1]) str += '\\n';\n      }\n\n      return str;\n    }\n\n    return this.key + \" \" + this.value + \";\";\n  };\n\n  return SimpleRule;\n}();\nvar keysMap = {\n  '@charset': true,\n  '@import': true,\n  '@namespace': true\n};\nvar pluginSimpleRule = {\n  onCreateRule: function onCreateRule(key, value, options) {\n    return key in keysMap ? new SimpleRule(key, value, options) : null;\n  }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, plugin, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n  process: true\n};\nvar forceUpdateOptions = {\n  force: true,\n  process: true\n  /**\n   * Contains rules objects and allows adding/removing etc.\n   * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n   */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n  // Rules registry for access by .get() method.\n  // It contains the same rule registered by name and by selector.\n  // Original styles object.\n  // Used to ensure correct rules order.\n  function RuleList(options) {\n    this.map = {};\n    this.raw = {};\n    this.index = [];\n    this.counter = 0;\n    this.options = void 0;\n    this.classes = void 0;\n    this.keyframes = void 0;\n    this.options = options;\n    this.classes = options.classes;\n    this.keyframes = options.keyframes;\n  }\n  /**\n   * Create and register rule.\n   *\n   * Will not render after Style Sheet was rendered the first time.\n   */\n\n\n  var _proto = RuleList.prototype;\n\n  _proto.add = function add(name, decl, ruleOptions) {\n    var _this$options = this.options,\n        parent = _this$options.parent,\n        sheet = _this$options.sheet,\n        jss = _this$options.jss,\n        Renderer = _this$options.Renderer,\n        generateId = _this$options.generateId,\n        scoped = _this$options.scoped;\n\n    var options = _extends({\n      classes: this.classes,\n      parent: parent,\n      sheet: sheet,\n      jss: jss,\n      Renderer: Renderer,\n      generateId: generateId,\n      scoped: scoped,\n      name: name,\n      keyframes: this.keyframes,\n      selector: undefined\n    }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n    // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n    // we need to make the key unique within this RuleList instance scope.\n\n\n    var key = name;\n\n    if (name in this.raw) {\n      key = name + \"-d\" + this.counter++;\n    } // We need to save the original decl before creating the rule\n    // because cache plugin needs to use it as a key to return a cached rule.\n\n\n    this.raw[key] = decl;\n\n    if (key in this.classes) {\n      // E.g. rules inside of @media container\n      options.selector = \".\" + escape(this.classes[key]);\n    }\n\n    var rule = createRule(key, decl, options);\n    if (!rule) return null;\n    this.register(rule);\n    var index = options.index === undefined ? this.index.length : options.index;\n    this.index.splice(index, 0, rule);\n    return rule;\n  }\n  /**\n   * Get a rule.\n   */\n  ;\n\n  _proto.get = function get(name) {\n    return this.map[name];\n  }\n  /**\n   * Delete a rule.\n   */\n  ;\n\n  _proto.remove = function remove(rule) {\n    this.unregister(rule);\n    delete this.raw[rule.key];\n    this.index.splice(this.index.indexOf(rule), 1);\n  }\n  /**\n   * Get index of a rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(rule) {\n    return this.index.indexOf(rule);\n  }\n  /**\n   * Run `onProcessRule()` plugins on every rule.\n   */\n  ;\n\n  _proto.process = function process() {\n    var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n    // we end up with very hard-to-track-down side effects.\n\n    this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n  }\n  /**\n   * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n   */\n  ;\n\n  _proto.register = function register(rule) {\n    this.map[rule.key] = rule;\n\n    if (rule instanceof StyleRule) {\n      this.map[rule.selector] = rule;\n      if (rule.id) this.classes[rule.key] = rule.id;\n    } else if (rule instanceof KeyframesRule && this.keyframes) {\n      this.keyframes[rule.name] = rule.id;\n    }\n  }\n  /**\n   * Unregister a rule.\n   */\n  ;\n\n  _proto.unregister = function unregister(rule) {\n    delete this.map[rule.key];\n\n    if (rule instanceof StyleRule) {\n      delete this.map[rule.selector];\n      delete this.classes[rule.key];\n    } else if (rule instanceof KeyframesRule) {\n      delete this.keyframes[rule.name];\n    }\n  }\n  /**\n   * Update the function values with a new data.\n   */\n  ;\n\n  _proto.update = function update() {\n    var name;\n    var data;\n    var options;\n\n    if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n      name = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n      data = arguments.length <= 1 ? undefined : arguments[1]; // $FlowFixMe[invalid-tuple-index]\n\n      options = arguments.length <= 2 ? undefined : arguments[2];\n    } else {\n      data = arguments.length <= 0 ? undefined : arguments[0]; // $FlowFixMe[invalid-tuple-index]\n\n      options = arguments.length <= 1 ? undefined : arguments[1];\n      name = null;\n    }\n\n    if (name) {\n      this.updateOne(this.map[name], data, options);\n    } else {\n      for (var index = 0; index < this.index.length; index++) {\n        this.updateOne(this.index[index], data, options);\n      }\n    }\n  }\n  /**\n   * Execute plugins, update rule props.\n   */\n  ;\n\n  _proto.updateOne = function updateOne(rule, data, options) {\n    if (options === void 0) {\n      options = defaultUpdateOptions;\n    }\n\n    var _this$options2 = this.options,\n        plugins = _this$options2.jss.plugins,\n        sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n    if (rule.rules instanceof RuleList) {\n      rule.rules.update(data, options);\n      return;\n    }\n\n    var styleRule = rule;\n    var style = styleRule.style;\n    plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n    if (options.process && style && style !== styleRule.style) {\n      // We need to run the plugins in case new `style` relies on syntax plugins.\n      plugins.onProcessStyle(styleRule.style, styleRule, sheet); // Update and add props.\n\n      for (var prop in styleRule.style) {\n        var nextValue = styleRule.style[prop];\n        var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n        // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n        if (nextValue !== prevValue) {\n          styleRule.prop(prop, nextValue, forceUpdateOptions);\n        }\n      } // Remove props.\n\n\n      for (var _prop in style) {\n        var _nextValue = styleRule.style[_prop];\n        var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n        // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n        if (_nextValue == null && _nextValue !== _prevValue) {\n          styleRule.prop(_prop, null, forceUpdateOptions);\n        }\n      }\n    }\n  }\n  /**\n   * Convert rules to a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(options) {\n    var str = '';\n    var sheet = this.options.sheet;\n    var link = sheet ? sheet.options.link : false;\n\n    for (var index = 0; index < this.index.length; index++) {\n      var rule = this.index[index];\n      var css = rule.toString(options); // No need to render an empty rule.\n\n      if (!css && !link) continue;\n      if (str) str += '\\n';\n      str += css;\n    }\n\n    return str;\n  };\n\n  return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(styles, options) {\n    this.options = void 0;\n    this.deployed = void 0;\n    this.attached = void 0;\n    this.rules = void 0;\n    this.renderer = void 0;\n    this.classes = void 0;\n    this.keyframes = void 0;\n    this.queue = void 0;\n    this.attached = false;\n    this.deployed = false;\n    this.classes = {};\n    this.keyframes = {};\n    this.options = _extends({}, options, {\n      sheet: this,\n      parent: this,\n      classes: this.classes,\n      keyframes: this.keyframes\n    });\n\n    if (options.Renderer) {\n      this.renderer = new options.Renderer(this);\n    }\n\n    this.rules = new RuleList(this.options);\n\n    for (var name in styles) {\n      this.rules.add(name, styles[name]);\n    }\n\n    this.rules.process();\n  }\n  /**\n   * Attach renderable to the render tree.\n   */\n\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.attach = function attach() {\n    if (this.attached) return this;\n    if (this.renderer) this.renderer.attach();\n    this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n    if (!this.deployed) this.deploy();\n    return this;\n  }\n  /**\n   * Remove renderable from render tree.\n   */\n  ;\n\n  _proto.detach = function detach() {\n    if (!this.attached) return this;\n    if (this.renderer) this.renderer.detach();\n    this.attached = false;\n    return this;\n  }\n  /**\n   * Add a rule to the current stylesheet.\n   * Will insert a rule also after the stylesheet has been rendered first time.\n   */\n  ;\n\n  _proto.addRule = function addRule(name, decl, options) {\n    var queue = this.queue; // Plugins can create rules.\n    // In order to preserve the right order, we need to queue all `.addRule` calls,\n    // which happen after the first `rules.add()` call.\n\n    if (this.attached && !queue) this.queue = [];\n    var rule = this.rules.add(name, decl, options);\n    if (!rule) return null;\n    this.options.jss.plugins.onProcessRule(rule);\n\n    if (this.attached) {\n      if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n      // It will be inserted all together when .attach is called.\n\n      if (queue) queue.push(rule);else {\n        this.insertRule(rule);\n\n        if (this.queue) {\n          this.queue.forEach(this.insertRule, this);\n          this.queue = undefined;\n        }\n      }\n      return rule;\n    } // We can't add rules to a detached style node.\n    // We will redeploy the sheet once user will attach it.\n\n\n    this.deployed = false;\n    return rule;\n  }\n  /**\n   * Insert rule into the StyleSheet\n   */\n  ;\n\n  _proto.insertRule = function insertRule(rule) {\n    if (this.renderer) {\n      this.renderer.insertRule(rule);\n    }\n  }\n  /**\n   * Create and add rules.\n   * Will render also after Style Sheet was rendered the first time.\n   */\n  ;\n\n  _proto.addRules = function addRules(styles, options) {\n    var added = [];\n\n    for (var name in styles) {\n      var rule = this.addRule(name, styles[name], options);\n      if (rule) added.push(rule);\n    }\n\n    return added;\n  }\n  /**\n   * Get a rule by name.\n   */\n  ;\n\n  _proto.getRule = function getRule(name) {\n    return this.rules.get(name);\n  }\n  /**\n   * Delete a rule by name.\n   * Returns `true`: if rule has been deleted from the DOM.\n   */\n  ;\n\n  _proto.deleteRule = function deleteRule(name) {\n    var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n    if (!rule || // Style sheet was created without link: true and attached, in this case we\n    // won't be able to remove the CSS rule from the DOM.\n    this.attached && !rule.renderable) {\n      return false;\n    }\n\n    this.rules.remove(rule);\n\n    if (this.attached && rule.renderable && this.renderer) {\n      return this.renderer.deleteRule(rule.renderable);\n    }\n\n    return true;\n  }\n  /**\n   * Get index of a rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(rule) {\n    return this.rules.indexOf(rule);\n  }\n  /**\n   * Deploy pure CSS string to a renderable.\n   */\n  ;\n\n  _proto.deploy = function deploy() {\n    if (this.renderer) this.renderer.deploy();\n    this.deployed = true;\n    return this;\n  }\n  /**\n   * Update the function values with a new data.\n   */\n  ;\n\n  _proto.update = function update() {\n    var _this$rules;\n\n    (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n    return this;\n  }\n  /**\n   * Updates a single rule.\n   */\n  ;\n\n  _proto.updateOne = function updateOne(rule, data, options) {\n    this.rules.updateOne(rule, data, options);\n    return this;\n  }\n  /**\n   * Convert rules to a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(options) {\n    return this.rules.toString(options);\n  };\n\n  return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n  function PluginsRegistry() {\n    this.plugins = {\n      internal: [],\n      external: []\n    };\n    this.registry = void 0;\n  }\n\n  var _proto = PluginsRegistry.prototype;\n\n  /**\n   * Call `onCreateRule` hooks and return an object if returned by a hook.\n   */\n  _proto.onCreateRule = function onCreateRule(name, decl, options) {\n    for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n      var rule = this.registry.onCreateRule[i](name, decl, options);\n      if (rule) return rule;\n    }\n\n    return null;\n  }\n  /**\n   * Call `onProcessRule` hooks.\n   */\n  ;\n\n  _proto.onProcessRule = function onProcessRule(rule) {\n    if (rule.isProcessed) return;\n    var sheet = rule.options.sheet;\n\n    for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n      this.registry.onProcessRule[i](rule, sheet);\n    }\n\n    if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n    rule.isProcessed = true;\n  }\n  /**\n   * Call `onProcessStyle` hooks.\n   */\n  ;\n\n  _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n    for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n      // $FlowFixMe[prop-missing]\n      rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n    }\n  }\n  /**\n   * Call `onProcessSheet` hooks.\n   */\n  ;\n\n  _proto.onProcessSheet = function onProcessSheet(sheet) {\n    for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n      this.registry.onProcessSheet[i](sheet);\n    }\n  }\n  /**\n   * Call `onUpdate` hooks.\n   */\n  ;\n\n  _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n    for (var i = 0; i < this.registry.onUpdate.length; i++) {\n      this.registry.onUpdate[i](data, rule, sheet, options);\n    }\n  }\n  /**\n   * Call `onChangeValue` hooks.\n   */\n  ;\n\n  _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n    var processedValue = value;\n\n    for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n      processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n    }\n\n    return processedValue;\n  }\n  /**\n   * Register a plugin.\n   */\n  ;\n\n  _proto.use = function use(newPlugin, options) {\n    if (options === void 0) {\n      options = {\n        queue: 'external'\n      };\n    }\n\n    var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n    if (plugins.indexOf(newPlugin) !== -1) {\n      return;\n    }\n\n    plugins.push(newPlugin);\n    this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n      for (var name in plugin) {\n        if (name in registry) {\n          registry[name].push(plugin[name]);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n        }\n      }\n\n      return registry;\n    }, {\n      onCreateRule: [],\n      onProcessRule: [],\n      onProcessStyle: [],\n      onProcessSheet: [],\n      onChangeValue: [],\n      onUpdate: []\n    });\n  };\n\n  return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access them all at one place.\n */\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n  function SheetsRegistry() {\n    this.registry = [];\n  }\n\n  var _proto = SheetsRegistry.prototype;\n\n  /**\n   * Register a Style Sheet.\n   */\n  _proto.add = function add(sheet) {\n    var registry = this.registry;\n    var index = sheet.options.index;\n    if (registry.indexOf(sheet) !== -1) return;\n\n    if (registry.length === 0 || index >= this.index) {\n      registry.push(sheet);\n      return;\n    } // Find a position.\n\n\n    for (var i = 0; i < registry.length; i++) {\n      if (registry[i].options.index > index) {\n        registry.splice(i, 0, sheet);\n        return;\n      }\n    }\n  }\n  /**\n   * Reset the registry.\n   */\n  ;\n\n  _proto.reset = function reset() {\n    this.registry = [];\n  }\n  /**\n   * Remove a Style Sheet.\n   */\n  ;\n\n  _proto.remove = function remove(sheet) {\n    var index = this.registry.indexOf(sheet);\n    this.registry.splice(index, 1);\n  }\n  /**\n   * Convert all attached sheets to a CSS string.\n   */\n  ;\n\n  _proto.toString = function toString(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        attached = _ref.attached,\n        options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n    var css = '';\n\n    for (var i = 0; i < this.registry.length; i++) {\n      var sheet = this.registry[i];\n\n      if (attached != null && sheet.attached !== attached) {\n        continue;\n      }\n\n      if (css) css += '\\n';\n      css += sheet.toString(options);\n    }\n\n    return css;\n  };\n\n  _createClass(SheetsRegistry, [{\n    key: \"index\",\n\n    /**\n     * Current highest index number.\n     */\n    get: function get() {\n      return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n    }\n  }]);\n\n  return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar registry = new SheetsRegistry();\n\n/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar globalThis = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis[ns] == null) globalThis[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis[ns]++;\n\nvar maxRules = 1e10;\n\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\nvar createGenerateId = function createGenerateId(options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var ruleCounter = 0;\n  return function (rule, sheet) {\n    ruleCounter += 1;\n\n    if (ruleCounter > maxRules) {\n      process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n    }\n\n    var jssId = '';\n    var prefix = '';\n\n    if (sheet) {\n      if (sheet.options.classNamePrefix) {\n        prefix = sheet.options.classNamePrefix;\n      }\n\n      if (sheet.options.jss.id != null) {\n        jssId = String(sheet.options.jss.id);\n      }\n    }\n\n    if (options.minify) {\n      // Using \"c\" because a number can't be the first char in a class name.\n      return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n    }\n\n    return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n  };\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\nvar memoize = function memoize(fn) {\n  var value;\n  return function () {\n    if (!value) value = fn();\n    return value;\n  };\n};\n\n/**\n * Get a style property value.\n */\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n  try {\n    // Support CSSTOM.\n    if (cssRule.attributeStyleMap) {\n      return cssRule.attributeStyleMap.get(prop);\n    }\n\n    return cssRule.style.getPropertyValue(prop);\n  } catch (err) {\n    // IE may throw if property is unknown.\n    return '';\n  }\n};\n\n/**\n * Set a style property.\n */\nvar setProperty = function setProperty(cssRule, prop, value) {\n  try {\n    var cssValue = value;\n\n    if (Array.isArray(value)) {\n      cssValue = toCssValue(value, true);\n\n      if (value[value.length - 1] === '!important') {\n        cssRule.style.setProperty(prop, cssValue, 'important');\n        return true;\n      }\n    } // Support CSSTOM.\n\n\n    if (cssRule.attributeStyleMap) {\n      cssRule.attributeStyleMap.set(prop, cssValue);\n    } else {\n      cssRule.style.setProperty(prop, cssValue);\n    }\n  } catch (err) {\n    // IE may throw if property is unknown.\n    return false;\n  }\n\n  return true;\n};\n\n/**\n * Remove a style property.\n */\nvar removeProperty = function removeProperty(cssRule, prop) {\n  try {\n    // Support CSSTOM.\n    if (cssRule.attributeStyleMap) {\n      cssRule.attributeStyleMap.delete(prop);\n    } else {\n      cssRule.style.removeProperty(prop);\n    }\n  } catch (err) {\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n  }\n};\n\n/**\n * Set the selector.\n */\nvar setSelector = function setSelector(cssRule, selectorText) {\n  cssRule.selectorText = selectorText; // Return false if setter was not successful.\n  // Currently works in chrome only.\n\n  return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n  return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n  for (var i = 0; i < registry.length; i++) {\n    var sheet = registry[i];\n\n    if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n      return sheet;\n    }\n  }\n\n  return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n  for (var i = registry.length - 1; i >= 0; i--) {\n    var sheet = registry[i];\n\n    if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n      return sheet;\n    }\n  }\n\n  return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n  var head = getHead();\n\n  for (var i = 0; i < head.childNodes.length; i++) {\n    var node = head.childNodes[i];\n\n    if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n      return node;\n    }\n  }\n\n  return null;\n}\n\n/**\n * Find a node before which we can insert the sheet.\n */\nfunction findPrevNode(options) {\n  var registry$1 = registry.registry;\n\n  if (registry$1.length > 0) {\n    // Try to insert before the next higher sheet.\n    var sheet = findHigherSheet(registry$1, options);\n\n    if (sheet && sheet.renderer) {\n      return {\n        parent: sheet.renderer.element.parentNode,\n        node: sheet.renderer.element\n      };\n    } // Otherwise insert after the last attached.\n\n\n    sheet = findHighestSheet(registry$1, options);\n\n    if (sheet && sheet.renderer) {\n      return {\n        parent: sheet.renderer.element.parentNode,\n        node: sheet.renderer.element.nextSibling\n      };\n    }\n  } // Try to find a comment placeholder if registry is empty.\n\n\n  var insertionPoint = options.insertionPoint;\n\n  if (insertionPoint && typeof insertionPoint === 'string') {\n    var comment = findCommentNode(insertionPoint);\n\n    if (comment) {\n      return {\n        parent: comment.parentNode,\n        node: comment.nextSibling\n      };\n    } // If user specifies an insertion point and it can't be found in the document -\n    // bad specificity issues may appear.\n\n\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n  }\n\n  return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n  var insertionPoint = options.insertionPoint;\n  var nextNode = findPrevNode(options);\n\n  if (nextNode !== false && nextNode.parent) {\n    nextNode.parent.insertBefore(style, nextNode.node);\n    return;\n  } // Works with iframes and any node types.\n\n\n  if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n    // https://stackoverflow.com/questions/41328728/force-casting-in-flow\n    var insertionPointElement = insertionPoint;\n    var parentNode = insertionPointElement.parentNode;\n    if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n    return;\n  }\n\n  getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n  var node = document.querySelector('meta[property=\"csp-nonce\"]');\n  return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n  try {\n    if ('insertRule' in container) {\n      var c = container;\n      c.insertRule(rule, index);\n    } // Keyframes rule.\n    else if ('appendRule' in container) {\n        var _c = container;\n\n        _c.appendRule(rule);\n      }\n  } catch (err) {\n    process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n    return false;\n  }\n\n  return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n  var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n  if (index === undefined || index > maxIndex) {\n    // eslint-disable-next-line no-param-reassign\n    return maxIndex;\n  }\n\n  return index;\n};\n\nvar createStyle = function createStyle() {\n  var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n  // insert rules after we insert the style tag.\n  // It seems to kick-off the source order specificity algorithm.\n\n  el.textContent = '\\n';\n  return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n  // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696\n  // Will be empty if link: true option is not set, because\n  // it is only for use together with insertRule API.\n  function DomRenderer(sheet) {\n    this.getPropertyValue = getPropertyValue;\n    this.setProperty = setProperty;\n    this.removeProperty = removeProperty;\n    this.setSelector = setSelector;\n    this.element = void 0;\n    this.sheet = void 0;\n    this.hasInsertedRules = false;\n    this.cssRules = [];\n    // There is no sheet when the renderer is used from a standalone StyleRule.\n    if (sheet) registry.add(sheet);\n    this.sheet = sheet;\n\n    var _ref = this.sheet ? this.sheet.options : {},\n        media = _ref.media,\n        meta = _ref.meta,\n        element = _ref.element;\n\n    this.element = element || createStyle();\n    this.element.setAttribute('data-jss', '');\n    if (media) this.element.setAttribute('media', media);\n    if (meta) this.element.setAttribute('data-meta', meta);\n    var nonce = getNonce();\n    if (nonce) this.element.setAttribute('nonce', nonce);\n  }\n  /**\n   * Insert style element into render tree.\n   */\n\n\n  var _proto = DomRenderer.prototype;\n\n  _proto.attach = function attach() {\n    // In the case the element node is external and it is already in the DOM.\n    if (this.element.parentNode || !this.sheet) return;\n    insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n    // most browsers create a new CSSStyleSheet, except of all IEs.\n\n    var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n    if (this.hasInsertedRules && deployed) {\n      this.hasInsertedRules = false;\n      this.deploy();\n    }\n  }\n  /**\n   * Remove style element from render tree.\n   */\n  ;\n\n  _proto.detach = function detach() {\n    if (!this.sheet) return;\n    var parentNode = this.element.parentNode;\n    if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n    // Though IE will keep them and we need a consistent behavior.\n\n    if (this.sheet.options.link) {\n      this.cssRules = [];\n      this.element.textContent = '\\n';\n    }\n  }\n  /**\n   * Inject CSS string into element.\n   */\n  ;\n\n  _proto.deploy = function deploy() {\n    var sheet = this.sheet;\n    if (!sheet) return;\n\n    if (sheet.options.link) {\n      this.insertRules(sheet.rules);\n      return;\n    }\n\n    this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n  }\n  /**\n   * Insert RuleList into an element.\n   */\n  ;\n\n  _proto.insertRules = function insertRules(rules, nativeParent) {\n    for (var i = 0; i < rules.index.length; i++) {\n      this.insertRule(rules.index[i], i, nativeParent);\n    }\n  }\n  /**\n   * Insert a rule into element.\n   */\n  ;\n\n  _proto.insertRule = function insertRule(rule, index, nativeParent) {\n    if (nativeParent === void 0) {\n      nativeParent = this.element.sheet;\n    }\n\n    if (rule.rules) {\n      var parent = rule;\n      var latestNativeParent = nativeParent;\n\n      if (rule.type === 'conditional' || rule.type === 'keyframes') {\n        var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n        latestNativeParent = _insertRule(nativeParent, parent.toString({\n          children: false\n        }), _insertionIndex);\n\n        if (latestNativeParent === false) {\n          return false;\n        }\n\n        this.refCssRule(rule, _insertionIndex, latestNativeParent);\n      }\n\n      this.insertRules(parent.rules, latestNativeParent);\n      return latestNativeParent;\n    }\n\n    var ruleStr = rule.toString();\n    if (!ruleStr) return false;\n    var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n    var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n    if (nativeRule === false) {\n      return false;\n    }\n\n    this.hasInsertedRules = true;\n    this.refCssRule(rule, insertionIndex, nativeRule);\n    return nativeRule;\n  };\n\n  _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n    rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n    // like rules inside media queries or keyframes\n\n    if (rule.options.parent instanceof StyleSheet) {\n      this.cssRules[index] = cssRule;\n    }\n  }\n  /**\n   * Delete a rule.\n   */\n  ;\n\n  _proto.deleteRule = function deleteRule(cssRule) {\n    var sheet = this.element.sheet;\n    var index = this.indexOf(cssRule);\n    if (index === -1) return false;\n    sheet.deleteRule(index);\n    this.cssRules.splice(index, 1);\n    return true;\n  }\n  /**\n   * Get index of a CSS Rule.\n   */\n  ;\n\n  _proto.indexOf = function indexOf(cssRule) {\n    return this.cssRules.indexOf(cssRule);\n  }\n  /**\n   * Generate a new CSS rule and replace the existing one.\n   *\n   * Only used for some old browsers because they can't set a selector.\n   */\n  ;\n\n  _proto.replaceRule = function replaceRule(cssRule, rule) {\n    var index = this.indexOf(cssRule);\n    if (index === -1) return false;\n    this.element.sheet.deleteRule(index);\n    this.cssRules.splice(index, 1);\n    return this.insertRule(rule, index);\n  }\n  /**\n   * Get all rules elements.\n   */\n  ;\n\n  _proto.getRules = function getRules() {\n    return this.element.sheet.cssRules;\n  };\n\n  return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n  function Jss(options) {\n    this.id = instanceCounter++;\n    this.version = \"10.5.1\";\n    this.plugins = new PluginsRegistry();\n    this.options = {\n      id: {\n        minify: false\n      },\n      createGenerateId: createGenerateId,\n      Renderer: isInBrowser ? DomRenderer : null,\n      plugins: []\n    };\n    this.generateId = createGenerateId({\n      minify: false\n    });\n\n    for (var i = 0; i < plugins.length; i++) {\n      this.plugins.use(plugins[i], {\n        queue: 'internal'\n      });\n    }\n\n    this.setup(options);\n  }\n  /**\n   * Prepares various options, applies plugins.\n   * Should not be used twice on the same instance, because there is no plugins\n   * deduplication logic.\n   */\n\n\n  var _proto = Jss.prototype;\n\n  _proto.setup = function setup(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    if (options.createGenerateId) {\n      this.options.createGenerateId = options.createGenerateId;\n    }\n\n    if (options.id) {\n      this.options.id = _extends({}, this.options.id, options.id);\n    }\n\n    if (options.createGenerateId || options.id) {\n      this.generateId = this.options.createGenerateId(this.options.id);\n    }\n\n    if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n    if ('Renderer' in options) {\n      this.options.Renderer = options.Renderer;\n    } // eslint-disable-next-line prefer-spread\n\n\n    if (options.plugins) this.use.apply(this, options.plugins);\n    return this;\n  }\n  /**\n   * Create a Style Sheet.\n   */\n  ;\n\n  _proto.createStyleSheet = function createStyleSheet(styles, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var _options = options,\n        index = _options.index;\n\n    if (typeof index !== 'number') {\n      index = registry.index === 0 ? 0 : registry.index + 1;\n    }\n\n    var sheet = new StyleSheet(styles, _extends({}, options, {\n      jss: this,\n      generateId: options.generateId || this.generateId,\n      insertionPoint: this.options.insertionPoint,\n      Renderer: this.options.Renderer,\n      index: index\n    }));\n    this.plugins.onProcessSheet(sheet);\n    return sheet;\n  }\n  /**\n   * Detach the Style Sheet and remove it from the registry.\n   */\n  ;\n\n  _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n    sheet.detach();\n    registry.remove(sheet);\n    return this;\n  }\n  /**\n   * Create a rule without a Style Sheet.\n   * [Deprecated] will be removed in the next major version.\n   */\n  ;\n\n  _proto.createRule = function createRule$1(name, style, options) {\n    if (style === void 0) {\n      style = {};\n    }\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    // Enable rule without name for inline styles.\n    if (typeof name === 'object') {\n      // $FlowFixMe[incompatible-call]\n      return this.createRule(undefined, name, style);\n    } // $FlowFixMe[incompatible-type]\n\n\n    var ruleOptions = _extends({}, options, {\n      name: name,\n      jss: this,\n      Renderer: this.options.Renderer\n    });\n\n    if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n    if (!ruleOptions.classes) ruleOptions.classes = {};\n    if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n    var rule = createRule(name, style, ruleOptions);\n\n    if (rule) this.plugins.onProcessRule(rule);\n    return rule;\n  }\n  /**\n   * Register plugin. Passed function will be invoked with a rule instance.\n   */\n  ;\n\n  _proto.use = function use() {\n    var _this = this;\n\n    for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n      plugins[_key] = arguments[_key];\n    }\n\n    plugins.forEach(function (plugin) {\n      _this.plugins.use(plugin);\n    });\n    return this;\n  };\n\n  return Jss;\n}();\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n  var to = null;\n\n  for (var key in styles) {\n    var value = styles[key];\n    var type = typeof value;\n\n    if (type === 'function') {\n      if (!to) to = {};\n      to[key] = value;\n    } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n      var extracted = getDynamicStyles(value);\n\n      if (extracted) {\n        if (!to) to = {};\n        to[key] = extracted;\n      }\n    }\n  }\n\n  return to;\n}\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n */\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n  function SheetsManager() {\n    this.length = 0;\n    this.sheets = new WeakMap();\n  }\n\n  var _proto = SheetsManager.prototype;\n\n  _proto.get = function get(key) {\n    var entry = this.sheets.get(key);\n    return entry && entry.sheet;\n  };\n\n  _proto.add = function add(key, sheet) {\n    if (this.sheets.has(key)) return;\n    this.length++;\n    this.sheets.set(key, {\n      sheet: sheet,\n      refs: 0\n    });\n  };\n\n  _proto.manage = function manage(key) {\n    var entry = this.sheets.get(key);\n\n    if (entry) {\n      if (entry.refs === 0) {\n        entry.sheet.attach();\n      }\n\n      entry.refs++;\n      return entry.sheet;\n    }\n\n    warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n    return undefined;\n  };\n\n  _proto.unmanage = function unmanage(key) {\n    var entry = this.sheets.get(key);\n\n    if (entry) {\n      if (entry.refs > 0) {\n        entry.refs--;\n        if (entry.refs === 0) entry.sheet.detach();\n      }\n    } else {\n      warning(false, \"SheetsManager: can't find sheet to unmanage\");\n    }\n  };\n\n  _createClass(SheetsManager, [{\n    key: \"size\",\n    get: function get() {\n      return this.length;\n    }\n  }]);\n\n  return SheetsManager;\n}();\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\n\n/**\n * Export a constant indicating if this browser has CSSTOM support.\n * https://developers.google.com/web/updates/2018/03/cssom\n */\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n/**\n * Creates a new instance of Jss.\n */\n\nvar create = function create(options) {\n  return new Jss(options);\n};\n/**\n * A global Jss instance.\n */\n\nvar jss = create();\n\nexport default jss;\nexport { RuleList, SheetsManager, SheetsRegistry, create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, registry as sheets, toCssValue };\n"]},"metadata":{},"sourceType":"module"}