diff --git a/.babelrc b/.babelrc deleted file mode 100644 index a2f3545..0000000 --- a/.babelrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "presets": ["es2015", "stage-0", "react"], - "plugins": [ - "transform-decorators-legacy" - ] -} diff --git a/.gitignore b/.gitignore index 6ea5bcd..240c86f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ node_modules npm-debug.log /.nyc_output /coverage -/lib +package-lock.json diff --git a/.travis.yml b/.travis.yml index f7a64e2..4f8476e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,8 +9,8 @@ os: node_js: - '6' - - '5' - - '4' + - '8' + - '10' before_install: - npm install -g npm diff --git a/LICENSE b/LICENSE index 2901db4..3378cd6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 Trend Micro Inc. +Copyright (c) 2017-present Trend Micro Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index d457ab3..6ccf8d3 100644 --- a/README.md +++ b/README.md @@ -20,31 +20,44 @@ Demo: https://trendmicro-frontend.github.io/react-portal ```js import Portal from '@trendmicro/react-portal'; + + // Use LegacyPortal if you need cross-frame rendering support. + import LegacyPortal from '@trendmicro/react-portal/LegacyPortal'; ``` ## Usage -```js +### Portal + +```jsx This text is transported to the end of document.body. - This text is transported to a specified element. + This text is transported to a DOM element. ``` +### LegacyPortal + +```jsx + + This text is transported to a DOM element within the top window document. + +``` + ## Examples We recommend using [styled-components](https://github.com/styled-components/styled-components) to make style changes, like so: ```js -import Portal from '@trendmicro/react-portal'; import PropTypes from 'prop-types'; -import React from 'react'; import styled, { keyframes } from 'styled-components'; -const StyledPortal = styled(Portal)` +const Overlay = styled.div` position: fixed; top: 0; left: 0; @@ -102,38 +115,51 @@ Fade.defaultProps = { Then you can nest components in the following way: ### Center Modal Vertically -```js - - - - Your modal content goes here - - - -``` - -### Fade-in Animation -```js - - - +```jsx + + + Your modal content goes here - - - + + + +``` + +### Fade-in Animation + +```jsx + + + + + + Your modal content goes here + + + + + ``` ## Fullscreen Modal From Within an Iframe -#### Specify the node property with an DOM element within the top window document +#### Transport children to a DOM element within the top window document -```js - + + + + Your modal content goes here + + + + ``` #### Implement a `persistStyles()` function to synchronize style changes @@ -191,7 +217,13 @@ See a complete example at https://github.com/trendmicro-frontend/react-portal/bl ### Properties -#### Dropdown +#### Portal + +Name | Type | Default | Description +:--- | :--- | :------ | :---------- +node | DOM node | document.body | A root DOM node to render a React element. + +#### LegacyPortal Name | Type | Default | Description :--- | :--- | :------ | :---------- diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..728d703 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,7 @@ +module.exports = { + extends: '@trendmicro/babel-config', + presets: [ + '@babel/preset-env', + '@babel/preset-react' + ] +}; diff --git a/dist/react-component.css b/dist/react-component.css deleted file mode 100644 index 0d3840c..0000000 --- a/dist/react-component.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! react-component v0.1.0 | (c) 2016 Trend Micro Inc. | MIT | https://github.com/trendmicro-frontend/react-component */ -.component---component-title---3F1Z1 { - font-size: 24px; -} - -/*# sourceMappingURL=react-component.css.map*/ \ No newline at end of file diff --git a/dist/react-component.css.map b/dist/react-component.css.map deleted file mode 100644 index 7d03a86..0000000 --- a/dist/react-component.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"../dist/react-component.css","sourceRoot":""} \ No newline at end of file diff --git a/dist/react-component.min.css b/dist/react-component.min.css deleted file mode 100644 index 190389c..0000000 --- a/dist/react-component.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! react-component v0.1.0 | (c) 2016 Trend Micro Inc. | MIT | https://github.com/trendmicro-frontend/react-component */.component---component-title---3F1Z1{font-size:24px} \ No newline at end of file diff --git a/docs/bundle.js b/docs/bundle.js index 9b15035..3e76952 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -1,24579 +1,53 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./index.jsx"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/@trendmicro/react-buttons/dist/react-buttons.css": -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a - * - * Note: replace · with * in the above snippet. - * */ -var COMPONENTS_PER_TAG = 40; - -var BrowserTag = function () { - function BrowserTag(el, isLocal) { - var existingSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; - classCallCheck(this, BrowserTag); - - this.el = el; - this.isLocal = isLocal; - this.ready = false; - - var extractedComps = extractCompsFromCSS(existingSource); - - this.size = extractedComps.length; - this.components = extractedComps.reduce(function (acc, obj) { - acc[obj.componentId] = obj; // eslint-disable-line no-param-reassign - return acc; - }, {}); - } - - BrowserTag.prototype.isFull = function isFull() { - return this.size >= COMPONENTS_PER_TAG; - }; - - BrowserTag.prototype.addComponent = function addComponent(componentId) { - if (!this.ready) this.replaceElement(); - if (this.components[componentId]) throw new Error('Trying to add Component \'' + componentId + '\' twice!'); - - var comp = { componentId: componentId, textNode: document.createTextNode('') }; - this.el.appendChild(comp.textNode); - - this.size += 1; - this.components[componentId] = comp; - }; - - BrowserTag.prototype.inject = function inject(componentId, css, name) { - if (!this.ready) this.replaceElement(); - var comp = this.components[componentId]; - - if (!comp) throw new Error('Must add a new component before you can inject css into it'); - if (comp.textNode.data === '') comp.textNode.appendData('\n/* sc-component-id: ' + componentId + ' */\n'); - - comp.textNode.appendData(css); - if (name) { - var existingNames = this.el.getAttribute(SC_ATTR); - this.el.setAttribute(SC_ATTR, existingNames ? existingNames + ' ' + name : name); - - if (typeof window !== 'undefined' && window.__webpack_nonce__) { - this.el.setAttribute('nonce', window.__webpack_nonce__); - } - } - }; - - BrowserTag.prototype.toHTML = function toHTML() { - return this.el.outerHTML; - }; - - BrowserTag.prototype.toReactElement = function toReactElement() { - throw new Error('BrowserTag doesn\'t implement toReactElement!'); - }; - - BrowserTag.prototype.clone = function clone() { - throw new Error('BrowserTag cannot be cloned!'); - }; - - /* Because we care about source order, before we can inject anything we need to - * create a text node for each component and replace the existing CSS. */ - - - BrowserTag.prototype.replaceElement = function replaceElement() { - var _this = this; - - this.ready = true; - // We have nothing to inject. Use the current el. - if (this.size === 0) return; - - // Build up our replacement style tag - var newEl = this.el.cloneNode(); - newEl.appendChild(document.createTextNode('\n')); - - Object.keys(this.components).forEach(function (key) { - var comp = _this.components[key]; - - // eslint-disable-next-line no-param-reassign - comp.textNode = document.createTextNode(comp.cssFromDOM); - newEl.appendChild(comp.textNode); - }); - - if (!this.el.parentNode) throw new Error("Trying to replace an element that wasn't mounted!"); - - // The ol' switcheroo - this.el.parentNode.replaceChild(newEl, this.el); - this.el = newEl; - }; - - return BrowserTag; -}(); - -/* Factory function to separate DOM operations from logical ones*/ - - -var BrowserStyleSheet = { - create: function create() { - var tags = []; - var names = {}; - - /* Construct existing state from DOM */ - var nodes = document.querySelectorAll('[' + SC_ATTR + ']'); - var nodesLength = nodes.length; - - for (var i = 0; i < nodesLength; i += 1) { - var el = nodes[i]; - - tags.push(new BrowserTag(el, el.getAttribute(LOCAL_ATTR) === 'true', el.innerHTML)); - - var attr = el.getAttribute(SC_ATTR); - if (attr) { - attr.trim().split(/\s+/).forEach(function (name) { - names[name] = true; - }); - } - } - - /* Factory for making more tags */ - var tagConstructor = function tagConstructor(isLocal) { - var el = document.createElement('style'); - el.type = 'text/css'; - el.setAttribute(SC_ATTR, ''); - el.setAttribute(LOCAL_ATTR, isLocal ? 'true' : 'false'); - if (!document.head) throw new Error('Missing document '); - document.head.appendChild(el); - return new BrowserTag(el, isLocal); - }; - - return new StyleSheet(tagConstructor, tags, names); - } -}; - -// -var SC_ATTR = 'data-styled-components'; -var LOCAL_ATTR = 'data-styled-components-is-local'; -var CONTEXT_KEY = '__styled-components-stylesheet__'; - -var instance = null; -// eslint-disable-next-line no-use-before-define -var clones = []; - -var StyleSheet = function () { - function StyleSheet(tagConstructor) { - var tags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var names = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - classCallCheck(this, StyleSheet); - this.hashes = {}; - this.deferredInjections = {}; - - this.tagConstructor = tagConstructor; - this.tags = tags; - this.names = names; - this.constructComponentTagMap(); - } - - StyleSheet.prototype.constructComponentTagMap = function constructComponentTagMap() { - var _this = this; - - this.componentTags = {}; - - this.tags.forEach(function (tag) { - Object.keys(tag.components).forEach(function (componentId) { - _this.componentTags[componentId] = tag; - }); - }); - }; - - /* Best level of caching—get the name from the hash straight away. */ - - - StyleSheet.prototype.getName = function getName(hash) { - return this.hashes[hash.toString()]; - }; - - /* Second level of caching—if the name is already in the dom, don't - * inject anything and record the hash for getName next time. */ - - - StyleSheet.prototype.alreadyInjected = function alreadyInjected(hash, name) { - if (!this.names[name]) return false; - - this.hashes[hash.toString()] = name; - return true; - }; - - /* Third type of caching—don't inject components' componentId twice. */ - - - StyleSheet.prototype.hasInjectedComponent = function hasInjectedComponent(componentId) { - return !!this.componentTags[componentId]; - }; - - StyleSheet.prototype.deferredInject = function deferredInject(componentId, isLocal, css) { - if (this === instance) { - clones.forEach(function (clone) { - clone.deferredInject(componentId, isLocal, css); - }); - } - - this.getOrCreateTag(componentId, isLocal); - this.deferredInjections[componentId] = css; - }; - - StyleSheet.prototype.inject = function inject(componentId, isLocal, css, hash, name) { - if (this === instance) { - clones.forEach(function (clone) { - clone.inject(componentId, isLocal, css); - }); - } - - var tag = this.getOrCreateTag(componentId, isLocal); - - var deferredInjection = this.deferredInjections[componentId]; - if (deferredInjection) { - tag.inject(componentId, deferredInjection); - delete this.deferredInjections[componentId]; - } - - tag.inject(componentId, css, name); - - if (hash && name) { - this.hashes[hash.toString()] = name; - } - }; - - StyleSheet.prototype.toHTML = function toHTML() { - return this.tags.map(function (tag) { - return tag.toHTML(); - }).join(''); - }; - - StyleSheet.prototype.toReactElements = function toReactElements() { - return this.tags.map(function (tag, i) { - return tag.toReactElement('sc-' + i); - }); - }; - - StyleSheet.prototype.getOrCreateTag = function getOrCreateTag(componentId, isLocal) { - var existingTag = this.componentTags[componentId]; - if (existingTag) { - return existingTag; - } - - var lastTag = this.tags[this.tags.length - 1]; - var componentTag = !lastTag || lastTag.isFull() || lastTag.isLocal !== isLocal ? this.createNewTag(isLocal) : lastTag; - this.componentTags[componentId] = componentTag; - componentTag.addComponent(componentId); - return componentTag; - }; - - StyleSheet.prototype.createNewTag = function createNewTag(isLocal) { - var newTag = this.tagConstructor(isLocal); - this.tags.push(newTag); - return newTag; - }; - - StyleSheet.reset = function reset(isServer) { - instance = StyleSheet.create(isServer); - }; - - /* We can make isServer totally implicit once Jest 20 drops and we - * can change environment on a per-test basis. */ - - - StyleSheet.create = function create() { - var isServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : typeof document === 'undefined'; - - return (isServer ? ServerStyleSheet : BrowserStyleSheet).create(); - }; - - StyleSheet.clone = function clone(oldSheet) { - var newSheet = new StyleSheet(oldSheet.tagConstructor, oldSheet.tags.map(function (tag) { - return tag.clone(); - }), _extends({}, oldSheet.names)); - - newSheet.hashes = _extends({}, oldSheet.hashes); - newSheet.deferredInjections = _extends({}, oldSheet.deferredInjections); - clones.push(newSheet); - - return newSheet; - }; - - createClass(StyleSheet, null, [{ - key: 'instance', - get: function get$$1() { - return instance || (instance = StyleSheet.create()); - } - }]); - return StyleSheet; -}(); - -var _StyleSheetManager$ch; - -// -var StyleSheetManager = function (_Component) { - inherits(StyleSheetManager, _Component); - - function StyleSheetManager() { - classCallCheck(this, StyleSheetManager); - return possibleConstructorReturn(this, _Component.apply(this, arguments)); - } - - StyleSheetManager.prototype.getChildContext = function getChildContext() { - var _ref; - - return _ref = {}, _ref[CONTEXT_KEY] = this.props.sheet, _ref; - }; - - StyleSheetManager.prototype.render = function render() { - /* eslint-disable react/prop-types */ - // Flow v0.43.1 will report an error accessing the `children` property, - // but v0.47.0 will not. It is necessary to use a type cast instead of - // a "fixme" comment to satisfy both Flow versions. - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.Children.only(this.props.children); - }; - - return StyleSheetManager; -}(__WEBPACK_IMPORTED_MODULE_2_react__["Component"]); - -StyleSheetManager.childContextTypes = (_StyleSheetManager$ch = {}, _StyleSheetManager$ch[CONTEXT_KEY] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet).isRequired, _StyleSheetManager$ch); - -StyleSheetManager.propTypes = { - sheet: __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet).isRequired -}; - -// -/* eslint-disable no-underscore-dangle */ -var ServerTag = function () { - function ServerTag(isLocal) { - classCallCheck(this, ServerTag); - - this.isLocal = isLocal; - this.components = {}; - this.size = 0; - this.names = []; - } - - ServerTag.prototype.isFull = function isFull() { - return false; - }; - - ServerTag.prototype.addComponent = function addComponent(componentId) { - if (this.components[componentId]) throw new Error('Trying to add Component \'' + componentId + '\' twice!'); - this.components[componentId] = { componentId: componentId, css: '' }; - this.size += 1; - }; - - ServerTag.prototype.concatenateCSS = function concatenateCSS() { - var _this = this; - - return Object.keys(this.components).reduce(function (styles, k) { - return styles + _this.components[k].css; - }, ''); - }; - - ServerTag.prototype.inject = function inject(componentId, css, name) { - var comp = this.components[componentId]; - - if (!comp) throw new Error('Must add a new component before you can inject css into it'); - if (comp.css === '') comp.css = '/* sc-component-id: ' + componentId + ' */\n'; - - comp.css += css.replace(/\n*$/, '\n'); - - if (name) this.names.push(name); - }; - - ServerTag.prototype.toHTML = function toHTML() { - var attrs = ['type="text/css"', SC_ATTR + '="' + this.names.join(' ') + '"', LOCAL_ATTR + '="' + (this.isLocal ? 'true' : 'false') + '"']; - - if (typeof global !== 'undefined' && global.__webpack_nonce__) { - attrs.push('nonce="' + global.__webpack_nonce__ + '"'); - } - - return ''; - }; - - ServerTag.prototype.toReactElement = function toReactElement(key) { - var _attrs; - - var attrs = (_attrs = {}, _attrs[SC_ATTR] = this.names.join(' '), _attrs[LOCAL_ATTR] = this.isLocal.toString(), _attrs); - - if (typeof global !== 'undefined' && global.__webpack_nonce__) { - attrs.nonce = global.__webpack_nonce__; - } - - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement('style', _extends({ - key: key, type: 'text/css' }, attrs, { - dangerouslySetInnerHTML: { __html: this.concatenateCSS() } - })); - }; - - ServerTag.prototype.clone = function clone() { - var _this2 = this; - - var copy = new ServerTag(this.isLocal); - copy.names = [].concat(this.names); - copy.size = this.size; - copy.components = Object.keys(this.components).reduce(function (acc, key) { - acc[key] = _extends({}, _this2.components[key]); // eslint-disable-line no-param-reassign - return acc; - }, {}); - - return copy; - }; - - return ServerTag; -}(); - -var ServerStyleSheet = function () { - function ServerStyleSheet() { - classCallCheck(this, ServerStyleSheet); - - this.instance = StyleSheet.clone(StyleSheet.instance); - } - - ServerStyleSheet.prototype.collectStyles = function collectStyles(children) { - if (this.closed) throw new Error("Can't collect styles once you've called getStyleTags!"); - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - StyleSheetManager, - { sheet: this.instance }, - children - ); - }; - - ServerStyleSheet.prototype.getStyleTags = function getStyleTags() { - if (!this.closed) { - clones.splice(clones.indexOf(this.instance), 1); - this.closed = true; - } - - return this.instance.toHTML(); - }; - - ServerStyleSheet.prototype.getStyleElement = function getStyleElement() { - if (!this.closed) { - clones.splice(clones.indexOf(this.instance), 1); - this.closed = true; - } - - return this.instance.toReactElements(); - }; - - ServerStyleSheet.create = function create() { - return new StyleSheet(function (isLocal) { - return new ServerTag(isLocal); - }); - }; - - return ServerStyleSheet; -}(); - -// - -var LIMIT = 200; - -var createWarnTooManyClasses = (function (displayName) { - var generatedClasses = {}; - var warningSeen = false; - - return function (className) { - if (!warningSeen) { - generatedClasses[className] = true; - if (Object.keys(generatedClasses).length >= LIMIT) { - // Unable to find latestRule in test environment. - /* eslint-disable no-console, prefer-template */ - console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. ' + 'Consider using style property for frequently changed styles.\n' + 'Example:\n' + ' const StyledComp = styled.div`width: 100%;`\n' + ' '); - warningSeen = true; - generatedClasses = {}; - } - } - }; -}); - -// -/* Trying to avoid the unknown-prop errors on styled components - by filtering by React's attribute whitelist. - */ - -/* Logic copied from ReactDOMUnknownPropertyHook */ -var reactProps = { - children: true, - dangerouslySetInnerHTML: true, - key: true, - ref: true, - autoFocus: true, - defaultValue: true, - valueLink: true, - defaultChecked: true, - checkedLink: true, - innerHTML: true, - suppressContentEditableWarning: true, - onFocusIn: true, - onFocusOut: true, - className: true, - - /* List copied from https://facebook.github.io/react/docs/events.html */ - onCopy: true, - onCut: true, - onPaste: true, - onCompositionEnd: true, - onCompositionStart: true, - onCompositionUpdate: true, - onKeyDown: true, - onKeyPress: true, - onKeyUp: true, - onFocus: true, - onBlur: true, - onChange: true, - onInput: true, - onSubmit: true, - onClick: true, - onContextMenu: true, - onDoubleClick: true, - onDrag: true, - onDragEnd: true, - onDragEnter: true, - onDragExit: true, - onDragLeave: true, - onDragOver: true, - onDragStart: true, - onDrop: true, - onMouseDown: true, - onMouseEnter: true, - onMouseLeave: true, - onMouseMove: true, - onMouseOut: true, - onMouseOver: true, - onMouseUp: true, - onSelect: true, - onTouchCancel: true, - onTouchEnd: true, - onTouchMove: true, - onTouchStart: true, - onScroll: true, - onWheel: true, - onAbort: true, - onCanPlay: true, - onCanPlayThrough: true, - onDurationChange: true, - onEmptied: true, - onEncrypted: true, - onEnded: true, - onError: true, - onLoadedData: true, - onLoadedMetadata: true, - onLoadStart: true, - onPause: true, - onPlay: true, - onPlaying: true, - onProgress: true, - onRateChange: true, - onSeeked: true, - onSeeking: true, - onStalled: true, - onSuspend: true, - onTimeUpdate: true, - onVolumeChange: true, - onWaiting: true, - onLoad: true, - onAnimationStart: true, - onAnimationEnd: true, - onAnimationIteration: true, - onTransitionEnd: true, - - onCopyCapture: true, - onCutCapture: true, - onPasteCapture: true, - onCompositionEndCapture: true, - onCompositionStartCapture: true, - onCompositionUpdateCapture: true, - onKeyDownCapture: true, - onKeyPressCapture: true, - onKeyUpCapture: true, - onFocusCapture: true, - onBlurCapture: true, - onChangeCapture: true, - onInputCapture: true, - onSubmitCapture: true, - onClickCapture: true, - onContextMenuCapture: true, - onDoubleClickCapture: true, - onDragCapture: true, - onDragEndCapture: true, - onDragEnterCapture: true, - onDragExitCapture: true, - onDragLeaveCapture: true, - onDragOverCapture: true, - onDragStartCapture: true, - onDropCapture: true, - onMouseDownCapture: true, - onMouseEnterCapture: true, - onMouseLeaveCapture: true, - onMouseMoveCapture: true, - onMouseOutCapture: true, - onMouseOverCapture: true, - onMouseUpCapture: true, - onSelectCapture: true, - onTouchCancelCapture: true, - onTouchEndCapture: true, - onTouchMoveCapture: true, - onTouchStartCapture: true, - onScrollCapture: true, - onWheelCapture: true, - onAbortCapture: true, - onCanPlayCapture: true, - onCanPlayThroughCapture: true, - onDurationChangeCapture: true, - onEmptiedCapture: true, - onEncryptedCapture: true, - onEndedCapture: true, - onErrorCapture: true, - onLoadedDataCapture: true, - onLoadedMetadataCapture: true, - onLoadStartCapture: true, - onPauseCapture: true, - onPlayCapture: true, - onPlayingCapture: true, - onProgressCapture: true, - onRateChangeCapture: true, - onSeekedCapture: true, - onSeekingCapture: true, - onStalledCapture: true, - onSuspendCapture: true, - onTimeUpdateCapture: true, - onVolumeChangeCapture: true, - onWaitingCapture: true, - onLoadCapture: true, - onAnimationStartCapture: true, - onAnimationEndCapture: true, - onAnimationIterationCapture: true, - onTransitionEndCapture: true -}; - -/* From HTMLDOMPropertyConfig */ -var htmlProps = { - /** - * Standard Properties - */ - accept: true, - acceptCharset: true, - accessKey: true, - action: true, - allowFullScreen: true, - allowTransparency: true, - alt: true, - // specifies target context for links with `preload` type - as: true, - async: true, - autoComplete: true, - // autoFocus is polyfilled/normalized by AutoFocusUtils - // autoFocus: true, - autoPlay: true, - capture: true, - cellPadding: true, - cellSpacing: true, - charSet: true, - challenge: true, - checked: true, - cite: true, - classID: true, - className: true, - cols: true, - colSpan: true, - content: true, - contentEditable: true, - contextMenu: true, - controls: true, - coords: true, - crossOrigin: true, - data: true, // For `` acts as `src`. - dateTime: true, - default: true, - defer: true, - dir: true, - disabled: true, - download: true, - draggable: true, - encType: true, - form: true, - formAction: true, - formEncType: true, - formMethod: true, - formNoValidate: true, - formTarget: true, - frameBorder: true, - headers: true, - height: true, - hidden: true, - high: true, - href: true, - hrefLang: true, - htmlFor: true, - httpEquiv: true, - icon: true, - id: true, - inputMode: true, - integrity: true, - is: true, - keyParams: true, - keyType: true, - kind: true, - label: true, - lang: true, - list: true, - loop: true, - low: true, - manifest: true, - marginHeight: true, - marginWidth: true, - max: true, - maxLength: true, - media: true, - mediaGroup: true, - method: true, - min: true, - minLength: true, - // Caution; `option.selected` is not updated if `select.multiple` is - // disabled with `removeAttribute`. - multiple: true, - muted: true, - name: true, - nonce: true, - noValidate: true, - open: true, - optimum: true, - pattern: true, - placeholder: true, - playsInline: true, - poster: true, - preload: true, - profile: true, - radioGroup: true, - readOnly: true, - referrerPolicy: true, - rel: true, - required: true, - reversed: true, - role: true, - rows: true, - rowSpan: true, - sandbox: true, - scope: true, - scoped: true, - scrolling: true, - seamless: true, - selected: true, - shape: true, - size: true, - sizes: true, - span: true, - spellCheck: true, - src: true, - srcDoc: true, - srcLang: true, - srcSet: true, - start: true, - step: true, - style: true, - summary: true, - tabIndex: true, - target: true, - title: true, - // Setting .type throws on non- tags - type: true, - useMap: true, - value: true, - width: true, - wmode: true, - wrap: true, - - /** - * RDFa Properties - */ - about: true, - datatype: true, - inlist: true, - prefix: true, - // property is also supported for OpenGraph in meta tags. - property: true, - resource: true, - typeof: true, - vocab: true, - - /** - * Non-standard Properties - */ - // autoCapitalize and autoCorrect are supported in Mobile Safari for - // keyboard hints. - autoCapitalize: true, - autoCorrect: true, - // autoSave allows WebKit/Blink to persist values of input fields on page reloads - autoSave: true, - // color is for Safari mask-icon link - color: true, - // itemProp, itemScope, itemType are for - // Microdata support. See http://schema.org/docs/gs.html - itemProp: true, - itemScope: true, - itemType: true, - // itemID and itemRef are for Microdata support as well but - // only specified in the WHATWG spec document. See - // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api - itemID: true, - itemRef: true, - // results show looking glass icon and recent searches on input - // search fields in WebKit/Blink - results: true, - // IE-only attribute that specifies security restrictions on an iframe - // as an alternative to the sandbox attribute on IE<10 - security: true, - // IE-only attribute that controls focus behavior - unselectable: 0 -}; - -var svgProps = { - accentHeight: true, - accumulate: true, - additive: true, - alignmentBaseline: true, - allowReorder: true, - alphabetic: true, - amplitude: true, - arabicForm: true, - ascent: true, - attributeName: true, - attributeType: true, - autoReverse: true, - azimuth: true, - baseFrequency: true, - baseProfile: true, - baselineShift: true, - bbox: true, - begin: true, - bias: true, - by: true, - calcMode: true, - capHeight: true, - clip: true, - clipPath: true, - clipRule: true, - clipPathUnits: true, - colorInterpolation: true, - colorInterpolationFilters: true, - colorProfile: true, - colorRendering: true, - contentScriptType: true, - contentStyleType: true, - cursor: true, - cx: true, - cy: true, - d: true, - decelerate: true, - descent: true, - diffuseConstant: true, - direction: true, - display: true, - divisor: true, - dominantBaseline: true, - dur: true, - dx: true, - dy: true, - edgeMode: true, - elevation: true, - enableBackground: true, - end: true, - exponent: true, - externalResourcesRequired: true, - fill: true, - fillOpacity: true, - fillRule: true, - filter: true, - filterRes: true, - filterUnits: true, - floodColor: true, - floodOpacity: true, - focusable: true, - fontFamily: true, - fontSize: true, - fontSizeAdjust: true, - fontStretch: true, - fontStyle: true, - fontVariant: true, - fontWeight: true, - format: true, - from: true, - fx: true, - fy: true, - g1: true, - g2: true, - glyphName: true, - glyphOrientationHorizontal: true, - glyphOrientationVertical: true, - glyphRef: true, - gradientTransform: true, - gradientUnits: true, - hanging: true, - horizAdvX: true, - horizOriginX: true, - ideographic: true, - imageRendering: true, - in: true, - in2: true, - intercept: true, - k: true, - k1: true, - k2: true, - k3: true, - k4: true, - kernelMatrix: true, - kernelUnitLength: true, - kerning: true, - keyPoints: true, - keySplines: true, - keyTimes: true, - lengthAdjust: true, - letterSpacing: true, - lightingColor: true, - limitingConeAngle: true, - local: true, - markerEnd: true, - markerMid: true, - markerStart: true, - markerHeight: true, - markerUnits: true, - markerWidth: true, - mask: true, - maskContentUnits: true, - maskUnits: true, - mathematical: true, - mode: true, - numOctaves: true, - offset: true, - opacity: true, - operator: true, - order: true, - orient: true, - orientation: true, - origin: true, - overflow: true, - overlinePosition: true, - overlineThickness: true, - paintOrder: true, - panose1: true, - pathLength: true, - patternContentUnits: true, - patternTransform: true, - patternUnits: true, - pointerEvents: true, - points: true, - pointsAtX: true, - pointsAtY: true, - pointsAtZ: true, - preserveAlpha: true, - preserveAspectRatio: true, - primitiveUnits: true, - r: true, - radius: true, - refX: true, - refY: true, - renderingIntent: true, - repeatCount: true, - repeatDur: true, - requiredExtensions: true, - requiredFeatures: true, - restart: true, - result: true, - rotate: true, - rx: true, - ry: true, - scale: true, - seed: true, - shapeRendering: true, - slope: true, - spacing: true, - specularConstant: true, - specularExponent: true, - speed: true, - spreadMethod: true, - startOffset: true, - stdDeviation: true, - stemh: true, - stemv: true, - stitchTiles: true, - stopColor: true, - stopOpacity: true, - strikethroughPosition: true, - strikethroughThickness: true, - string: true, - stroke: true, - strokeDasharray: true, - strokeDashoffset: true, - strokeLinecap: true, - strokeLinejoin: true, - strokeMiterlimit: true, - strokeOpacity: true, - strokeWidth: true, - surfaceScale: true, - systemLanguage: true, - tableValues: true, - targetX: true, - targetY: true, - textAnchor: true, - textDecoration: true, - textRendering: true, - textLength: true, - to: true, - transform: true, - u1: true, - u2: true, - underlinePosition: true, - underlineThickness: true, - unicode: true, - unicodeBidi: true, - unicodeRange: true, - unitsPerEm: true, - vAlphabetic: true, - vHanging: true, - vIdeographic: true, - vMathematical: true, - values: true, - vectorEffect: true, - version: true, - vertAdvY: true, - vertOriginX: true, - vertOriginY: true, - viewBox: true, - viewTarget: true, - visibility: true, - widths: true, - wordSpacing: true, - writingMode: true, - x: true, - xHeight: true, - x1: true, - x2: true, - xChannelSelector: true, - xlinkActuate: true, - xlinkArcrole: true, - xlinkHref: true, - xlinkRole: true, - xlinkShow: true, - xlinkTitle: true, - xlinkType: true, - xmlBase: true, - xmlns: true, - xmlnsXlink: true, - xmlLang: true, - xmlSpace: true, - y: true, - y1: true, - y2: true, - yChannelSelector: true, - z: true, - zoomAndPan: true -}; - -/* From DOMProperty */ -var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; -var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040'; -var isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$')); - -var hasOwnProperty = {}.hasOwnProperty; -var validAttr = (function (name) { - return hasOwnProperty.call(htmlProps, name) || hasOwnProperty.call(svgProps, name) || isCustomAttribute(name.toLowerCase()) || hasOwnProperty.call(reactProps, name); -}); - -// - - -function isTag(target) /* : %checks */{ - return typeof target === 'string'; -} - -// - - -function isStyledComponent(target) /* : %checks */{ - return typeof target === 'function' && typeof target.styledComponentId === 'string'; -} - -// - -/* eslint-disable no-undef */ -function getComponentName(target) { - return target.displayName || target.name || 'Component'; -} - -// -/** - * Creates a broadcast that can be listened to, i.e. simple event emitter - * - * @see https://github.com/ReactTraining/react-broadcast - */ - -var createBroadcast = function createBroadcast(initialValue) { - var listeners = []; - var currentValue = initialValue; - - return { - publish: function publish(value) { - currentValue = value; - listeners.forEach(function (listener) { - return listener(currentValue); - }); - }, - subscribe: function subscribe(listener) { - listeners.push(listener); - - // Publish to this subscriber once immediately. - listener(currentValue); - - return function () { - listeners = listeners.filter(function (item) { - return item !== listener; - }); - }; - } - }; -}; - -var _ThemeProvider$childC; -var _ThemeProvider$contex; - -// -/* globals React$Element */ -// NOTE: DO NOT CHANGE, changing this is a semver major change! -var CHANNEL = '__styled-components__'; - -/** - * Provide a theme to an entire react component tree via context and event listeners (have to do - * both context and event emitter as pure components block context updates) - */ - -var ThemeProvider = function (_Component) { - inherits(ThemeProvider, _Component); - - function ThemeProvider() { - classCallCheck(this, ThemeProvider); - - var _this = possibleConstructorReturn(this, _Component.call(this)); - - _this.getTheme = _this.getTheme.bind(_this); - return _this; - } - - ThemeProvider.prototype.componentWillMount = function componentWillMount() { - var _this2 = this; - - // If there is a ThemeProvider wrapper anywhere around this theme provider, merge this theme - // with the outer theme - if (this.context[CHANNEL]) { - var subscribe = this.context[CHANNEL]; - this.unsubscribeToOuter = subscribe(function (theme) { - _this2.outerTheme = theme; - }); - } - this.broadcast = createBroadcast(this.getTheme()); - }; - - ThemeProvider.prototype.getChildContext = function getChildContext() { - var _babelHelpers$extends; - - return _extends({}, this.context, (_babelHelpers$extends = {}, _babelHelpers$extends[CHANNEL] = this.broadcast.subscribe, _babelHelpers$extends)); - }; - - ThemeProvider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { - if (this.props.theme !== nextProps.theme) this.broadcast.publish(this.getTheme(nextProps.theme)); - }; - - ThemeProvider.prototype.componentWillUnmount = function componentWillUnmount() { - if (this.context[CHANNEL]) { - this.unsubscribeToOuter(); - } - }; - - // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation - - - ThemeProvider.prototype.getTheme = function getTheme(passedTheme) { - var theme = passedTheme || this.props.theme; - if (__WEBPACK_IMPORTED_MODULE_4_is_function___default()(theme)) { - var mergedTheme = theme(this.outerTheme); - if (!__WEBPACK_IMPORTED_MODULE_0_is_plain_object___default()(mergedTheme)) { - throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!'); - } - return mergedTheme; - } - if (!__WEBPACK_IMPORTED_MODULE_0_is_plain_object___default()(theme)) { - throw new Error('[ThemeProvider] Please make your theme prop a plain object'); - } - return _extends({}, this.outerTheme, theme); - }; - - ThemeProvider.prototype.render = function render() { - if (!this.props.children) { - return null; - } - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.Children.only(this.props.children); - }; - - return ThemeProvider; -}(__WEBPACK_IMPORTED_MODULE_2_react__["Component"]); - -ThemeProvider.childContextTypes = (_ThemeProvider$childC = {}, _ThemeProvider$childC[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func.isRequired, _ThemeProvider$childC); -ThemeProvider.contextTypes = (_ThemeProvider$contex = {}, _ThemeProvider$contex[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _ThemeProvider$contex); - -var _AbstractStyledCompon; - -// -var AbstractStyledComponent = function (_Component) { - inherits(AbstractStyledComponent, _Component); - - function AbstractStyledComponent() { - classCallCheck(this, AbstractStyledComponent); - return possibleConstructorReturn(this, _Component.apply(this, arguments)); - } - - return AbstractStyledComponent; -}(__WEBPACK_IMPORTED_MODULE_2_react__["Component"]); - -AbstractStyledComponent.contextTypes = (_AbstractStyledCompon = {}, _AbstractStyledCompon[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _AbstractStyledCompon[CONTEXT_KEY] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet), _AbstractStyledCompon); - -// - -var escapeRegex = /[[\].#*$><+~=|^:(),"'`]/g; -var multiDashRegex = /--+/g; - -var _StyledComponent = (function (ComponentStyle, constructWithOptions) { - /* We depend on components having unique IDs */ - var identifiers = {}; - var generateId = function generateId(_displayName, parentComponentId) { - var displayName = typeof _displayName !== 'string' ? 'sc' : _displayName.replace(escapeRegex, '-') // Replace all possible CSS selectors - .replace(multiDashRegex, '-'); // Replace multiple -- with single - - - var nr = (identifiers[displayName] || 0) + 1; - identifiers[displayName] = nr; - - var hash = ComponentStyle.generateName(displayName + nr); - var componentId = displayName + '-' + hash; - return parentComponentId !== undefined ? parentComponentId + '-' + componentId : componentId; - }; - - var BaseStyledComponent = function (_AbstractStyledCompon) { - inherits(BaseStyledComponent, _AbstractStyledCompon); - - function BaseStyledComponent() { - var _temp, _this, _ret; - - classCallCheck(this, BaseStyledComponent); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = possibleConstructorReturn(this, _AbstractStyledCompon.call.apply(_AbstractStyledCompon, [this].concat(args))), _this), _this.attrs = {}, _this.state = { - theme: null, - generatedClassName: '' - }, _temp), possibleConstructorReturn(_this, _ret); - } - - BaseStyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props) { - var attrs = this.constructor.attrs; - - var context = _extends({}, props, { theme: theme }); - if (attrs === undefined) { - return context; - } - - this.attrs = Object.keys(attrs).reduce(function (acc, key) { - var attr = attrs[key]; - // eslint-disable-next-line no-param-reassign - acc[key] = typeof attr === 'function' ? attr(context) : attr; - return acc; - }, {}); - - return _extends({}, context, this.attrs); - }; - - BaseStyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) { - var _constructor = this.constructor, - componentStyle = _constructor.componentStyle, - warnTooManyClasses = _constructor.warnTooManyClasses; - - var executionContext = this.buildExecutionContext(theme, props); - var styleSheet = this.context[CONTEXT_KEY] || StyleSheet.instance; - var className = componentStyle.generateAndInjectStyles(executionContext, styleSheet); - - if (warnTooManyClasses !== undefined) warnTooManyClasses(className); - - return className; - }; - - BaseStyledComponent.prototype.componentWillMount = function componentWillMount() { - var _this2 = this; - - // If there is a theme in the context, subscribe to the event emitter. This - // is necessary due to pure components blocking context updates, this circumvents - // that by updating when an event is emitted - if (this.context[CHANNEL]) { - var subscribe = this.context[CHANNEL]; - this.unsubscribe = subscribe(function (nextTheme) { - // This will be called once immediately - - // Props should take precedence over ThemeProvider, which should take precedence over - // defaultProps, but React automatically puts defaultProps on props. - var defaultProps = _this2.constructor.defaultProps; - - var isDefaultTheme = defaultProps && _this2.props.theme === defaultProps.theme; - var theme = _this2.props.theme && !isDefaultTheme ? _this2.props.theme : nextTheme; - var generatedClassName = _this2.generateAndInjectStyles(theme, _this2.props); - _this2.setState({ theme: theme, generatedClassName: generatedClassName }); - }); - } else { - var theme = this.props.theme || {}; - var generatedClassName = this.generateAndInjectStyles(theme, this.props); - this.setState({ theme: theme, generatedClassName: generatedClassName }); - } - }; - - BaseStyledComponent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { - var _this3 = this; - - this.setState(function (oldState) { - // Props should take precedence over ThemeProvider, which should take precedence over - // defaultProps, but React automatically puts defaultProps on props. - var defaultProps = _this3.constructor.defaultProps; - - var isDefaultTheme = defaultProps && nextProps.theme === defaultProps.theme; - var theme = nextProps.theme && !isDefaultTheme ? nextProps.theme : oldState.theme; - var generatedClassName = _this3.generateAndInjectStyles(theme, nextProps); - - return { theme: theme, generatedClassName: generatedClassName }; - }); - }; - - BaseStyledComponent.prototype.componentWillUnmount = function componentWillUnmount() { - if (this.unsubscribe) { - this.unsubscribe(); - } - }; - - BaseStyledComponent.prototype.render = function render() { - var _this4 = this; - - var innerRef = this.props.innerRef; - var generatedClassName = this.state.generatedClassName; - var _constructor2 = this.constructor, - styledComponentId = _constructor2.styledComponentId, - target = _constructor2.target; - - - var isTargetTag = isTag(target); - - var className = [this.props.className, styledComponentId, this.attrs.className, generatedClassName].filter(Boolean).join(' '); - - var baseProps = _extends({}, this.attrs, { - className: className - }); - - if (isStyledComponent(target)) { - baseProps.innerRef = innerRef; - } else { - baseProps.ref = innerRef; - } - - var propsForElement = Object.keys(this.props).reduce(function (acc, propName) { - // Don't pass through non HTML tags through to HTML elements - // always omit innerRef - if (propName !== 'innerRef' && propName !== 'className' && (!isTargetTag || validAttr(propName))) { - // eslint-disable-next-line no-param-reassign - acc[propName] = _this4.props[propName]; - } - - return acc; - }, baseProps); - - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_react__["createElement"])(target, propsForElement); - }; - - return BaseStyledComponent; - }(AbstractStyledComponent); - - var createStyledComponent = function createStyledComponent(target, options, rules) { - var _StyledComponent$cont; - - var _options$displayName = options.displayName, - displayName = _options$displayName === undefined ? isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')' : _options$displayName, - _options$componentId = options.componentId, - componentId = _options$componentId === undefined ? generateId(options.displayName, options.parentComponentId) : _options$componentId, - _options$ParentCompon = options.ParentComponent, - ParentComponent = _options$ParentCompon === undefined ? BaseStyledComponent : _options$ParentCompon, - extendingRules = options.rules, - attrs = options.attrs; - - - var styledComponentId = options.displayName && options.componentId ? options.displayName + '-' + options.componentId : componentId; - - var warnTooManyClasses = void 0; - if (typeof process !== 'undefined' && "development" !== 'production') { - warnTooManyClasses = createWarnTooManyClasses(displayName); - } - - var componentStyle = new ComponentStyle(extendingRules === undefined ? rules : extendingRules.concat(rules), styledComponentId); - - var StyledComponent = function (_ParentComponent) { - inherits(StyledComponent, _ParentComponent); - - function StyledComponent() { - classCallCheck(this, StyledComponent); - return possibleConstructorReturn(this, _ParentComponent.apply(this, arguments)); - } - - StyledComponent.withComponent = function withComponent(tag) { - var previousComponentId = options.componentId, - optionsToCopy = objectWithoutProperties(options, ['componentId']); - - - var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : getComponentName(tag)); - - var newOptions = _extends({}, optionsToCopy, { - componentId: newComponentId, - ParentComponent: StyledComponent - }); - - return createStyledComponent(tag, newOptions, rules); - }; - - createClass(StyledComponent, null, [{ - key: 'extend', - get: function get$$1() { - var rulesFromOptions = options.rules, - parentComponentId = options.componentId, - optionsToCopy = objectWithoutProperties(options, ['rules', 'componentId']); - - - var newRules = rulesFromOptions === undefined ? rules : rulesFromOptions.concat(rules); - - var newOptions = _extends({}, optionsToCopy, { - rules: newRules, - parentComponentId: parentComponentId, - ParentComponent: StyledComponent - }); - - return constructWithOptions(createStyledComponent, target, newOptions); - } - }]); - return StyledComponent; - }(ParentComponent); - - StyledComponent.contextTypes = (_StyledComponent$cont = {}, _StyledComponent$cont[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _StyledComponent$cont[CONTEXT_KEY] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet), _StyledComponent$cont); - StyledComponent.displayName = displayName; - StyledComponent.styledComponentId = styledComponentId; - StyledComponent.attrs = attrs; - StyledComponent.componentStyle = componentStyle; - StyledComponent.warnTooManyClasses = warnTooManyClasses; - StyledComponent.target = target; - - - return StyledComponent; - }; - - return createStyledComponent; -}); - -// murmurhash2 via https://gist.github.com/raycmorgan/588423 - -function doHash(str, seed) { - var m = 0x5bd1e995; - var r = 24; - var h = seed ^ str.length; - var length = str.length; - var currentIndex = 0; - - while (length >= 4) { - var k = UInt32(str, currentIndex); - - k = Umul32(k, m); - k ^= k >>> r; - k = Umul32(k, m); - - h = Umul32(h, m); - h ^= k; - - currentIndex += 4; - length -= 4; - } - - switch (length) { - case 3: - h ^= UInt16(str, currentIndex); - h ^= str.charCodeAt(currentIndex + 2) << 16; - h = Umul32(h, m); - break; - - case 2: - h ^= UInt16(str, currentIndex); - h = Umul32(h, m); - break; - - case 1: - h ^= str.charCodeAt(currentIndex); - h = Umul32(h, m); - break; - } - - h ^= h >>> 13; - h = Umul32(h, m); - h ^= h >>> 15; - - return h >>> 0; -} - -function UInt32(str, pos) { - return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8) + (str.charCodeAt(pos++) << 16) + (str.charCodeAt(pos) << 24); -} - -function UInt16(str, pos) { - return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8); -} - -function Umul32(n, m) { - n = n | 0; - m = m | 0; - var nlo = n & 0xffff; - var nhi = n >>> 16; - var res = nlo * m + ((nhi * m & 0xffff) << 16) | 0; - return res; -} - -// -/* - ComponentStyle is all the CSS-specific stuff, not - the React-specific stuff. - */ -var _ComponentStyle = (function (nameGenerator, flatten, stringifyRules) { - var ComponentStyle = function () { - function ComponentStyle(rules, componentId) { - classCallCheck(this, ComponentStyle); - - this.rules = rules; - this.componentId = componentId; - if (!StyleSheet.instance.hasInjectedComponent(this.componentId)) { - var placeholder = '.' + componentId + ' {}'; - StyleSheet.instance.deferredInject(componentId, true, placeholder); - } - } - - /* - * Flattens a rule set into valid CSS - * Hashes it, wraps the whole chunk in a .hash1234 {} - * Returns the hash to be injected on render() - * */ - - - ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) { - var flatCSS = flatten(this.rules, executionContext); - var hash = doHash(this.componentId + flatCSS.join('')); - - var existingName = styleSheet.getName(hash); - if (existingName) return existingName; - - var name = nameGenerator(hash); - if (styleSheet.alreadyInjected(hash, name)) return name; - - var css = '\n' + stringifyRules(flatCSS, '.' + name); - styleSheet.inject(this.componentId, true, css, hash, name); - return name; - }; - - ComponentStyle.generateName = function generateName(str) { - return nameGenerator(doHash(str)); - }; - - return ComponentStyle; - }(); - - return ComponentStyle; -}); - -// -// Thanks to ReactDOMFactories for this handy list! - -var domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', - -// SVG -'circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan']; - -// - -var _styled = (function (styledComponent, constructWithOptions) { - var styled = function styled(tag) { - return constructWithOptions(styledComponent, tag); - }; - - // Shorthands for all valid HTML Elements - domElements.forEach(function (domElement) { - styled[domElement] = styled(domElement); - }); - - return styled; -}); - -// -var replaceWhitespace = function replaceWhitespace(str) { - return str.replace(/\s|\\n/g, ''); -}; - -var _keyframes = (function (nameGenerator, stringifyRules, css) { - return function (strings) { - for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - interpolations[_key - 1] = arguments[_key]; - } - - var rules = css.apply(undefined, [strings].concat(interpolations)); - var hash = doHash(replaceWhitespace(JSON.stringify(rules))); - - var existingName = StyleSheet.instance.getName(hash); - if (existingName) return existingName; - - var name = nameGenerator(hash); - if (StyleSheet.instance.alreadyInjected(hash, name)) return name; - - var generatedCSS = stringifyRules(rules, name, '@keyframes'); - StyleSheet.instance.inject('sc-keyframes-' + name, true, generatedCSS, hash, name); - return name; - }; -}); - -// -var _injectGlobal = (function (stringifyRules, css) { - var injectGlobal = function injectGlobal(strings) { - for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - interpolations[_key - 1] = arguments[_key]; - } - - var rules = css.apply(undefined, [strings].concat(interpolations)); - var hash = doHash(JSON.stringify(rules)); - - var componentId = 'sc-global-' + hash; - if (StyleSheet.instance.hasInjectedComponent(componentId)) return; - - StyleSheet.instance.inject(componentId, false, stringifyRules(rules)); - }; - - return injectGlobal; -}); - -// - - -var _constructWithOptions = (function (css) { - var constructWithOptions = function constructWithOptions(componentConstructor, tag) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - if (typeof tag !== 'string' && typeof tag !== 'function') { - // $FlowInvalidInputTest - throw new Error('Cannot create styled-component for component: ' + tag); - } - - /* This is callable directly as a template function */ - var templateFunction = function templateFunction(strings) { - for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - interpolations[_key - 1] = arguments[_key]; - } - - return componentConstructor(tag, options, css.apply(undefined, [strings].concat(interpolations))); - }; - - /* If config methods are called, wrap up a new template function and merge options */ - templateFunction.withConfig = function (config) { - return constructWithOptions(componentConstructor, tag, _extends({}, options, config)); - }; - templateFunction.attrs = function (attrs) { - return constructWithOptions(componentConstructor, tag, _extends({}, options, { - attrs: _extends({}, options.attrs || {}, attrs) })); - }; - - return templateFunction; - }; - - return constructWithOptions; -}); - -// -/* globals ReactClass */ - -var wrapWithTheme = function wrapWithTheme(Component$$1) { - var _WithTheme$contextTyp; - - var componentName = Component$$1.displayName || Component$$1.name || 'Component'; - - var isStyledComponent$$1 = isStyledComponent(Component$$1); - - var WithTheme = function (_React$Component) { - inherits(WithTheme, _React$Component); - - function WithTheme() { - var _temp, _this, _ret; - - classCallCheck(this, WithTheme); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {}, _temp), possibleConstructorReturn(_this, _ret); - } - - // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping - - - WithTheme.prototype.componentWillMount = function componentWillMount() { - var _this2 = this; - - if (!this.context[CHANNEL]) { - throw new Error('[withTheme] Please use ThemeProvider to be able to use withTheme'); - } - - var subscribe = this.context[CHANNEL]; - this.unsubscribe = subscribe(function (theme) { - _this2.setState({ theme: theme }); - }); - }; - - WithTheme.prototype.componentWillUnmount = function componentWillUnmount() { - if (typeof this.unsubscribe === 'function') this.unsubscribe(); - }; - - WithTheme.prototype.render = function render() { - // eslint-disable-next-line react/prop-types - var innerRef = this.props.innerRef; - var theme = this.state.theme; - - - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(Component$$1, _extends({ - theme: theme - }, this.props, { - innerRef: isStyledComponent$$1 ? innerRef : undefined, - ref: isStyledComponent$$1 ? undefined : innerRef - })); - }; - - return WithTheme; - }(__WEBPACK_IMPORTED_MODULE_2_react___default.a.Component); - - WithTheme.displayName = 'WithTheme(' + componentName + ')'; - WithTheme.styledComponentId = 'withTheme'; - WithTheme.contextTypes = (_WithTheme$contextTyp = {}, _WithTheme$contextTyp[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _WithTheme$contextTyp); - - - return __WEBPACK_IMPORTED_MODULE_5_hoist_non_react_statics___default()(WithTheme, Component$$1); -}; - -// - -/* Import singletons */ -/* Import singleton constructors */ -/* Import components */ -/* Import Higher Order Components */ -/* Instantiate singletons */ -var ComponentStyle = _ComponentStyle(generateAlphabeticName, flatten, stringifyRules); -var constructWithOptions = _constructWithOptions(css); -var StyledComponent = _StyledComponent(ComponentStyle, constructWithOptions); - -/* Instantiate exported singletons */ -var keyframes = _keyframes(generateAlphabeticName, stringifyRules, css); -var injectGlobal = _injectGlobal(stringifyRules, css); -var styled = _styled(StyledComponent, constructWithOptions); - -/* harmony default export */ __webpack_exports__["default"] = (styled); - -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("../node_modules/webpack/buildin/global.js"), __webpack_require__("../node_modules/process/browser.js"))) - -/***/ }), - -/***/ "../node_modules/stylis/stylis.js": -/***/ (function(module, exports, __webpack_require__) { - -/* - * __ ___ - * _____/ /___ __/ (_)____ - * / ___/ __/ / / / / / ___/ - * (__ ) /_/ /_/ / / (__ ) - * /____/\__/\__, /_/_/____/ - * /____/ - * - * light - weight css preprocessor @licence MIT + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ -(function (factory) {/* eslint-disable */ - true ? (module['exports'] = factory(null)) : - typeof define === 'function' && define['amd'] ? define(factory(null)) : - (window['stylis'] = factory(null)) -}(/** @param {*=} options */function factory (options) {/* eslint-disable */ - - 'use strict' - - /** - * Notes - * - * The [''] pattern is used to support closure compiler - * the jsdoc signatures are also used to the same effect - * - * ---- - * - * int + int + int === n4 [faster] - * - * vs - * - * int === n1 && int === n2 && int === n3 - * - * ---- - * - * switch (int) { case ints...} [faster] - * - * vs - * - * if (int == 1 && int === 2 ...) - * - * ---- - * - * The (first*n1 + second*n2 + third*n3) format used in the property parser - * is a simple way to hash the sequence of characters - * taking into account the index they occur in - * since any number of 3 character sequences could produce duplicates. - * - * On the other hand sequences that are directly tied to the index of the character - * resolve a far more accurate measure, it's also faster - * to evaluate one condition in a switch statement - * than three in an if statement regardless of the added math. - * - * This allows the vendor prefixer to be both small and fast. - */ - - var nullptn = /^\0+/g /* matches leading null characters */ - var formatptn = /[\0\r\f]/g /* matches new line, null and formfeed characters */ - var colonptn = /: */g /* splits animation rules */ - var cursorptn = /zoo|gra/ /* assert cursor varient */ - var transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */ - var animationptn = /,+\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */ - var propertiesptn = / +\s*(?![^(]*[)])/g /* animation properties */ - var elementptn = / *[\0] */g /* selector elements */ - var selectorptn = /,\r+?/g /* splits selectors */ - var andptn = /([\t\r\n ])*\f?&/g /* match & */ - var escapeptn = /:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g /* matches :global(.*) */ - var invalidptn = /\W+/g /* removes invalid characters from keyframes */ - var keyframeptn = /@(k\w+)\s*(\S*)\s*/ /* matches @keyframes $1 */ - var plcholdrptn = /::(place)/g /* match ::placeholder varient */ - var readonlyptn = /:(read-only)/g /* match :read-only varient */ - var beforeptn = /\s+(?=[{\];=:>])/g /* matches \s before ] ; = : */ - var afterptn = /([[}=:>])\s+/g /* matches \s after characters [ } = : */ - var tailptn = /(\{[^{]+?);(?=\})/g /* matches tail semi-colons ;} */ - var whiteptn = /\s{2,}/g /* matches repeating whitespace */ - var pseudoptn = /([^\(])(:+) */g /* pseudo element */ - var writingptn = /[svh]\w+-[tblr]{2}/ /* match writing mode property values */ - var gradientptn = /([\w-]+t\()/g /* match *gradient property */ - var supportsptn = /\(\s*(.*)\s*\)/g /* match supports (groups) */ - var propertyptn = /([^]*?);/g /* match properties leading semicolon */ - var selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */ - var pseudofmt = /[^]*?(:[rp][el]a[\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */ - var trimptn = /[ \t]+$/ /* match tail whitspace */ - - /* vendors */ - var webkit = '-webkit-' - var moz = '-moz-' - var ms = '-ms-' - - /* character codes */ - var SEMICOLON = 59 /* ; */ - var CLOSEBRACES = 125 /* } */ - var OPENBRACES = 123 /* { */ - var OPENPARENTHESES = 40 /* ( */ - var CLOSEPARENTHESES = 41 /* ) */ - var OPENBRACKET = 91 /* [ */ - var CLOSEBRACKET = 93 /* ] */ - var NEWLINE = 10 /* \n */ - var CARRIAGE = 13 /* \r */ - var TAB = 9 /* \t */ - var AT = 64 /* @ */ - var SPACE = 32 /* */ - var AND = 38 /* & */ - var DASH = 45 /* - */ - var UNDERSCORE = 95 /* _ */ - var STAR = 42 /* * */ - var COMMA = 44 /* , */ - var COLON = 58 /* : */ - var SINGLEQUOTE = 39 /* ' */ - var DOUBLEQUOTE = 34 /* " */ - var FOWARDSLASH = 47 /* / */ - var GREATERTHAN = 62 /* > */ - var PLUS = 43 /* + */ - var TILDE = 126 /* ~ */ - var NULL = 0 /* \0 */ - var FORMFEED = 12 /* \f */ - var VERTICALTAB = 11 /* \v */ - - /* special identifiers */ - var KEYFRAME = 107 /* k */ - var MEDIA = 109 /* m */ - var SUPPORTS = 115 /* s */ - var PLACEHOLDER = 112 /* p */ - var READONLY = 111 /* o */ - var IMPORT = 169 /* i */ - var CHARSET = 163 /* c */ - var DOCUMENT = 100 /* d */ - var PAGE = 112 /* p */ - - var column = 1 /* current column */ - var line = 1 /* current line numebr */ - var pattern = 0 /* :pattern */ - - var cascade = 1 /* #id h1 h2 vs h1#id h2#id */ - var prefix = 1 /* vendor prefix */ - var escape = 1 /* escape :global() pattern */ - var compress = 0 /* compress output */ - var semicolon = 0 /* no/semicolon option */ - var preserve = 0 /* preserve empty selectors */ - - /* empty reference */ - var array = [] - - /* plugins */ - var plugins = [] - var plugged = 0 - var should = null - - /* plugin context */ - var POSTS = -2 - var PREPS = -1 - var UNKWN = 0 - var PROPS = 1 - var BLCKS = 2 - var ATRUL = 3 - - /* plugin newline context */ - var unkwn = 0 - - /* keyframe animation */ - var keyed = 1 - var key = '' - - /* selector namespace */ - var nscopealt = '' - var nscope = '' - - /** - * Compile - * - * @param {Array} parent - * @param {Array} current - * @param {string} body - * @param {number} id - * @param {number} depth - * @return {string} - */ - function compile (parent, current, body, id, depth) { - var bracket = 0 /* brackets [] */ - var comment = 0 /* comments /* // or /* */ - var parentheses = 0 /* functions () */ - var quote = 0 /* quotes '', "" */ - - var first = 0 /* first character code */ - var second = 0 /* second character code */ - var code = 0 /* current character code */ - var tail = 0 /* previous character code */ - var trail = 0 /* character before previous code */ - var peak = 0 /* previous non-whitespace code */ - - var counter = 0 /* count sequence termination */ - var context = 0 /* track current context */ - var atrule = 0 /* track @at-rule context */ - var pseudo = 0 /* track pseudo token index */ - var caret = 0 /* current character index */ - var format = 0 /* control character formating context */ - var insert = 0 /* auto semicolon insertion */ - var invert = 0 /* inverted selector pattern */ - var length = 0 /* generic length address */ - var eof = body.length /* end of file(length) */ - var eol = eof - 1 /* end of file(characters) */ - - var char = '' /* current character */ - var chars = '' /* current buffer of characters */ - var child = '' /* next buffer of characters */ - var out = '' /* compiled body */ - var children = '' /* compiled children */ - var flat = '' /* compiled leafs */ - var selector /* generic selector address */ - var result /* generic address */ - - // ...build body - while (caret < eof) { - code = body.charCodeAt(caret) - - // eof varient - if (caret === eol) { - // last character + noop context, add synthetic padding for noop context to terminate - if (comment + quote + parentheses + bracket !== 0) { - if (comment !== 0) { - code = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH - } - - quote = parentheses = bracket = 0 - eof++ - eol++ - } - } - - if (comment + quote + parentheses + bracket === 0) { - // eof varient - if (caret === eol) { - if (format > 0) { - chars = chars.replace(formatptn, '') - } - - if (chars.trim().length > 0) { - switch (code) { - case SPACE: - case TAB: - case SEMICOLON: - case CARRIAGE: - case NEWLINE: { - break - } - default: { - chars += body.charAt(caret) - } - } - - code = SEMICOLON - } - } - - // auto semicolon insertion - if (insert === 1) { - switch (code) { - // false flags - case OPENBRACES: - case CLOSEBRACES: - case SEMICOLON: - case DOUBLEQUOTE: - case SINGLEQUOTE: - case OPENPARENTHESES: - case CLOSEPARENTHESES: - case COMMA: { - insert = 0 - } - // ignore - case TAB: - case CARRIAGE: - case NEWLINE: - case SPACE: { - break - } - // valid - default: { - insert = 0 - length = caret - first = code - caret-- - code = SEMICOLON - - while (length < eof) { - switch (body.charCodeAt(++length)) { - case NEWLINE: - case CARRIAGE: - case SEMICOLON: { - caret++ - code = first - } - case COLON: - case OPENBRACES: { - length = eof - } - } - } - } - } - } - - // token varient - switch (code) { - case OPENBRACES: { - chars = chars.trim() - first = chars.charCodeAt(0) - counter = 1 - length = ++caret - - while (caret < eof) { - code = body.charCodeAt(caret) - - switch (code) { - case OPENBRACES: { - counter++ - break - } - case CLOSEBRACES: { - counter-- - break - } - } - - if (counter === 0) { - break - } - - caret++ - } - - child = body.substring(length, caret) - - if (first === NULL) { - first = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0) - } - - switch (first) { - // @at-rule - case AT: { - if (format > 0) { - chars = chars.replace(formatptn, '') - } - - second = chars.charCodeAt(1) - - switch (second) { - case DOCUMENT: - case MEDIA: - case SUPPORTS: - case DASH: { - selector = current - break - } - default: { - selector = array - } - } - - child = compile(current, selector, child, second, depth+1) - length = child.length - - // preserve empty @at-rule - if (preserve > 0 && length === 0) { - length = chars.length - } - - // execute plugins, @at-rule context - if (plugged > 0) { - selector = select(array, chars, invert) - result = proxy(ATRUL, child, selector, current, line, column, length, second, depth) - chars = selector.join('') - - if (result !== void 0) { - if ((length = (child = result.trim()).length) === 0) { - second = 0 - child = '' - } - } - } - - if (length > 0) { - switch (second) { - case SUPPORTS: { - chars = chars.replace(supportsptn, supports) - } - case DOCUMENT: - case MEDIA: - case DASH: { - child = chars + '{' + child + '}' - break - } - case KEYFRAME: { - chars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : '')) - child = chars + '{' + child + '}' - - if (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) { - child = '@' + webkit + child + '@' + child - } else { - child = '@' + child - } - break - } - default: { - child = chars + child - - if (id === PAGE) { - child = (out += child, '') - } - } - } - } else { - child = '' - } - - break - } - // selector - default: { - child = compile(current, select(current, chars, invert), child, id, depth+1) - } - } - - children += child - - // reset - context = 0 - insert = 0 - pseudo = 0 - format = 0 - invert = 0 - atrule = 0 - chars = '' - child = '' - code = body.charCodeAt(++caret) - break - } - case CLOSEBRACES: - case SEMICOLON: { - chars = (format > 0 ? chars.replace(formatptn, '') : chars).trim() - - if ((length = chars.length) > 1) { - // monkey-patch missing colon - if (pseudo === 0) { - first = chars.charCodeAt(0) - - // first character is a letter or dash, buffer has a space character - if ((first === DASH || first > 96 && first < 123)) { - length = (chars = chars.replace(' ', ':')).length - } - } - - // execute plugins, property context - if (plugged > 0) { - if ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth)) !== void 0) { - if ((length = (chars = result.trim()).length) === 0) { - chars = '\0\0' - } - } - } - - first = chars.charCodeAt(0) - second = chars.charCodeAt(1) - - switch (first + second) { - case NULL: { - break - } - case IMPORT: - case CHARSET: { - flat += chars + body.charAt(caret) - break - } - default: { - if (chars.charCodeAt(length-1) === COLON) - break - - out += property(chars, first, second, chars.charCodeAt(2)) - } - } - } - - // reset - context = 0 - insert = 0 - pseudo = 0 - format = 0 - invert = 0 - chars = '' - code = body.charCodeAt(++caret) - break - } - } - } - - // parse characters - switch (code) { - case CARRIAGE: - case NEWLINE: { - // auto insert semicolon - if (comment + quote + parentheses + bracket + semicolon === 0) { - // valid non-whitespace characters that - // may precede a newline - switch (peak) { - case CLOSEPARENTHESES: - case SINGLEQUOTE: - case DOUBLEQUOTE: - case AT: - case TILDE: - case GREATERTHAN: - case STAR: - case PLUS: - case FOWARDSLASH: - case DASH: - case COLON: - case COMMA: - case SEMICOLON: - case OPENBRACES: - case CLOSEBRACES: { - break - } - default: { - // current buffer has a colon - if (pseudo > 0) { - insert = 1 - } - } - } - } - - // terminate line comment - if (comment === FOWARDSLASH) { - comment = 0 - } else if (cascade + context === 0) { - format = 1 - chars += '\0' - } - - // execute plugins, newline context - if (plugged * unkwn > 0) { - proxy(UNKWN, chars, current, parent, line, column, out.length, id, depth) - } - - // next line, reset column position - column = 1 - line++ - break - } - case SEMICOLON: - case CLOSEBRACES: { - if (comment + quote + parentheses + bracket === 0) { - column++ - break - } - } - default: { - // increment column position - column++ - - // current character - char = body.charAt(caret) - - // remove comments, escape functions, strings, attributes and prepare selectors - switch (code) { - case TAB: - case SPACE: { - if (quote + bracket + comment === 0) { - switch (tail) { - case COMMA: - case COLON: - case TAB: - case SPACE: { - char = '' - break - } - default: { - if (code !== SPACE) { - char = ' ' - } - } - } - } - break - } - // escape breaking control characters - case NULL: { - char = '\\0' - break - } - case FORMFEED: { - char = '\\f' - break - } - case VERTICALTAB: { - char = '\\v' - break - } - // & - case AND: { - // inverted selector pattern i.e html & - if (quote + comment + bracket === 0 && cascade > 0) { - invert = 1 - format = 1 - char = '\f' + char - } - break - } - // ::paceholder, l - // :read-ony, l - case 108: { - if (quote + comment + bracket + pattern === 0 && pseudo > 0) { - switch (caret - pseudo) { - // ::placeholder - case 2: { - if (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) { - pattern = tail - } - } - // :read-only - case 8: { - if (trail === READONLY) { - pattern = trail - } - } - } - } - break - } - // : - case COLON: { - if (quote + comment + bracket === 0) { - pseudo = caret - } - break - } - // selectors - case COMMA: { - if (comment + parentheses + quote + bracket === 0) { - format = 1 - char += '\r' - } - break - } - // quotes - case DOUBLEQUOTE: { - if (comment === 0) { - quote = quote === code ? 0 : (quote === 0 ? code : quote) - } - break - } - case SINGLEQUOTE: { - if (comment === 0) { - quote = quote === code ? 0 : (quote === 0 ? code : quote) - } - break - } - // attributes - case OPENBRACKET: { - if (quote + comment + parentheses === 0) { - bracket++ - } - break - } - case CLOSEBRACKET: { - if (quote + comment + parentheses === 0) { - bracket-- - } - break - } - // functions - case CLOSEPARENTHESES: { - if (quote + comment + bracket === 0) { - parentheses-- - } - break - } - case OPENPARENTHESES: { - if (quote + comment + bracket === 0) { - if (context === 0) { - switch (tail*2 + trail*3) { - // :matches - case 533: { - break - } - // :global, :not, :nth-child etc... - default: { - counter = 0 - context = 1 - } - } - } - - parentheses++ - } - break - } - case AT: { - if (comment + parentheses + quote + bracket + pseudo + atrule === 0) { - atrule = 1 - } - break - } - // block/line comments - case STAR: - case FOWARDSLASH: { - if (quote + bracket + parentheses > 0) { - break - } - - switch (comment) { - // initialize line/block comment context - case 0: { - switch (code*2 + body.charCodeAt(caret+1)*3) { - // // - case 235: { - comment = FOWARDSLASH - break - } - // /* - case 220: { - length = caret - comment = STAR - break - } - } - break - } - // end block comment context - case STAR: { - if (code === FOWARDSLASH && tail === STAR) { - // /* ... */, ! - if (body.charCodeAt(length+2) === 33) { - out += body.substring(length, caret+1) - } - char = '' - comment = 0 - } - } - } - } - } - - // ignore comment blocks - if (comment === 0) { - // aggressive isolation mode, divide each individual selector - // including selectors in :not function but excluding selectors in :global function - if (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) { - switch (code) { - case COMMA: - case TILDE: - case GREATERTHAN: - case PLUS: - case CLOSEPARENTHESES: - case OPENPARENTHESES: { - if (context === 0) { - // outside of an isolated context i.e nth-child(<...>) - switch (tail) { - case TAB: - case SPACE: - case NEWLINE: - case CARRIAGE: { - char = char + '\0' - break - } - default: { - char = '\0' + char + (code === COMMA ? '' : '\0') - } - } - format = 1 - } else { - // within an isolated context, sleep untill it's terminated - switch (code) { - case OPENPARENTHESES: { - context = ++counter - break - } - case CLOSEPARENTHESES: { - if ((context = --counter) === 0) { - format = 1 - char += '\0' - } - break - } - } - } - break - } - case TAB: - case SPACE: { - switch (tail) { - case NULL: - case OPENBRACES: - case CLOSEBRACES: - case SEMICOLON: - case COMMA: - case FORMFEED: - case TAB: - case SPACE: - case NEWLINE: - case CARRIAGE: { - break - } - default: { - // ignore in isolated contexts - if (context === 0) { - format = 1 - char += '\0' - } - } - } - } - } - } - - // concat buffer of characters - chars += char - - // previous non-whitespace character code - if (code !== SPACE && code !== TAB) { - peak = code - } - } - } - } - - // tail character codes - trail = tail - tail = code - - // visit every character - caret++ - } - - length = out.length - - // preserve empty selector - if (preserve > 0) { - if (length === 0 && children.length === 0 && (current[0].length === 0) === false) { - if (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) { - length = current.join(',').length + 2 - } - } - } - - if (length > 0) { - // cascade isolation mode? - selector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current - - // execute plugins, block context - if (plugged > 0) { - result = proxy(BLCKS, out, selector, parent, line, column, length, id, depth) - - if (result !== void 0 && (out = result).length === 0) { - return flat + out + children - } - } - - out = selector.join(',') + '{' + out + '}' - - if (prefix*pattern !== 0) { - if (prefix === 2 && !vendor(out, 2)) - pattern = 0 - - switch (pattern) { - // ::read-only - case READONLY: { - out = out.replace(readonlyptn, ':'+moz+'$1')+out - break - } - // ::placeholder - case PLACEHOLDER: { - out = ( - out.replace(plcholdrptn, '::' + webkit + 'input-$1') + - out.replace(plcholdrptn, '::' + moz + '$1') + - out.replace(plcholdrptn, ':' + ms + 'input-$1') + out - ) - break - } - } - - pattern = 0 - } - } - - return flat + out + children - } - - /** - * Select - * - * @param {Array} parent - * @param {string} current - * @param {number} invert - * @return {Array} - */ - function select (parent, current, invert) { - var selectors = current.trim().split(selectorptn) - var out = selectors - - var length = selectors.length - var l = parent.length - - switch (l) { - // 0-1 parent selectors - case 0: - case 1: { - for (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) { - out[i] = scope(selector, out[i], invert, l).trim() - } - break - } - // >2 parent selectors, nested - default: { - for (var i = 0, j = 0, out = []; i < length; ++i) { - for (var k = 0; k < l; ++k) { - out[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim() - } - } - } - } - - return out - } - - /** - * Scope - * - * @param {string} parent - * @param {string} current - * @param {number} invert - * @param {number} level - * @return {string} - */ - function scope (parent, current, invert, level) { - var selector = current - var code = selector.charCodeAt(0) - - // trim leading whitespace - if (code < 33) { - code = (selector = selector.trim()).charCodeAt(0) - } - - switch (code) { - // & - case AND: { - switch (cascade + level) { - case 0: - case 1: { - if (parent.trim().length === 0) { - break - } - } - default: { - return selector.replace(andptn, '$1'+parent.trim()) - } - } - break - } - // : - case COLON: { - switch (selector.charCodeAt(1)) { - // g in :global - case 103: { - if (escape > 0 && cascade > 0) { - return selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope) - } - break - } - default: { - // :hover - return parent.trim() + selector - } - } - } - default: { - // html & - if (invert*cascade > 0 && selector.indexOf('\f') > 0) { - return selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim()) - } - } - } - - return parent + selector - } - - /** - * Property - * - * @param {string} input - * @param {number} first - * @param {number} second - * @param {number} third - * @return {string} - */ - function property (input, first, second, third) { - var index = 0 - var out = input + ';' - var hash = (first*2) + (second*3) + (third*4) - var cache - - // animation: a, n, i characters - if (hash === 944) { - return animation(out) - } else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) { - return out - } - - // vendor prefix - switch (hash) { - // text-decoration/text-size-adjust: t, e, x - case 1015: { - // text-size-adjust, - - return out.charCodeAt(9) === DASH ? webkit + out + out : out - } - // filter/fill f, i, l - case 951: { - // filter, t - return out.charCodeAt(3) === 116 ? webkit + out + out : out - } - // color/column, c, o, l - case 963: { - // column, n - return out.charCodeAt(5) === 110 ? webkit + out + out : out - } - // box-decoration-break, b, o, x - case 1009: { - if (out.charCodeAt(4) !== 100) { - break - } - } - // mask, m, a, s - // clip-path, c, l, i - case 969: - case 942: { - return webkit + out + out - } - // appearance: a, p, p - case 978: { - return webkit + out + moz + out + out - } - // hyphens: h, y, p - // user-select: u, s, e - case 1019: - case 983: { - return webkit + out + moz + out + ms + out + out - } - // background/backface-visibility, b, a, c - case 883: { - // backface-visibility, - - return out.charCodeAt(8) === DASH ? webkit + out + out : out - } - // flex: f, l, e - case 932: { - if (out.charCodeAt(4) === DASH) { - switch (out.charCodeAt(5)) { - // flex-grow, g - case 103: { - return webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out - } - // flex-shrink, s - case 115: { - return webkit + out + ms + out.replace('shrink', 'negative') + out - } - // flex-basis, b - case 98: { - return webkit + out + ms + out.replace('basis', 'preferred-size') + out - } - } - } - - return webkit + out + ms + out + out - } - // order: o, r, d - case 964: { - return webkit + out + ms + 'flex' + '-' + out + out - } - // justify-items/justify-content, j, u, s - case 1023: { - // justify-content, c - if (out.charCodeAt(8) !== 99) { - break - } - - cache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify') - return webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out - } - // cursor, c, u, r - case 1005: { - return cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out - } - // writing-mode, w, r, i - case 1000: { - cache = out.substring(13).trim() - index = cache.indexOf('-') + 1 - - switch (cache.charCodeAt(0)+cache.charCodeAt(index)) { - // vertical-lr - case 226: { - cache = out.replace(writingptn, 'tb') - break - } - // vertical-rl - case 232: { - cache = out.replace(writingptn, 'tb-rl') - break - } - // horizontal-tb - case 220: { - cache = out.replace(writingptn, 'lr') - break - } - default: { - return out - } - } - - return webkit + out + ms + cache + out - } - // position: sticky - case 1017: { - if (out.indexOf('sticky', 9) === -1) { - return out - } - } - // display(flex/inline-flex/inline-box): d, i, s - case 975: { - index = (out = input).length - 10 - cache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim() - - switch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) { - // inline- - case 203: { - // inline-box - if (cache.charCodeAt(8) < 111) { - break - } - } - // inline-box/sticky - case 115: { - out = out.replace(cache, webkit+cache)+';'+out - break - } - // inline-flex - // flex - case 207: - case 102: { - out = ( - out.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+ - out.replace(cache, webkit+cache)+';'+ - out.replace(cache, ms+cache+'box')+';'+ - out - ) - } - } - - return out + ';' - } - // align-items, align-center, align-self: a, l, i, - - case 938: { - if (out.charCodeAt(5) === DASH) { - switch (out.charCodeAt(6)) { - // align-items, i - case 105: { - cache = out.replace('-items', '') - return webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out - } - // align-self, s - case 115: { - return webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out - } - // align-content - default: { - return webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '') + out - } - } - } - break - } - // width: min-content / width: max-content - case 953: { - if ((index = out.indexOf('-content', 9)) > 0) { - // width: min-content / width: max-content - if (out.charCodeAt(index - 3) === 109 && out.charCodeAt(index - 4) !== 45) { - cache = out.substring(index - 3) - return 'width:' + webkit + cache + 'width:' + moz + cache + 'width:' + cache - } - } - break - } - // transform, transition: t, r, a - case 962: { - out = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out - - // transitions - if (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) { - return out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out - } - - break - } - } - - return out - } - - var i = 0 - - /** - * Vendor - * - * @param {string} content - * @param {number} context - * @return {boolean} - */ - function vendor (content, context) { - var index = content.indexOf(context === 1 ? ':' : '{') - var key = content.substring(0, context !== 3 ? index : 10) - var value = content.substring(index + 1, content.length - 1) - - return should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context) - } - - /** - * Supports - * - * @param {string} match - * @param {string} group - * @return {string} - */ - function supports (match, group) { - var out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2)) - - return out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')' - } - - /** - * Animation - * - * @param {string} input - * @return {string} - */ - function animation (input) { - var length = input.length - var index = input.indexOf(':', 9) + 1 - var declare = input.substring(0, index).trim() - var out = input.substring(index, length-1).trim() - - switch (input.charCodeAt(9)*keyed) { - case 0: { - break - } - // animation-*, - - case DASH: { - // animation-name, n - if (input.charCodeAt(10) !== 110) { - break - } - } - // animation/animation-name - default: { - // split in case of multiple animations - var list = out.split((out = '', animationptn)) - - for (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) { - var value = list[i] - var items = value.split(propertiesptn) - - while (value = items[index]) { - var peak = value.charCodeAt(0) - - if (keyed === 1 && ( - // letters - (peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE || - // dash but not in sequence i.e -- - (peak === DASH && value.charCodeAt(1) !== DASH) - )) { - // not a number/function - switch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) { - case 1: { - switch (value) { - // not a valid reserved keyword - case 'infinite': case 'alternate': case 'backwards': case 'running': - case 'normal': case 'forwards': case 'both': case 'none': case 'linear': - case 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out': - case 'paused': case 'reverse': case 'alternate-reverse': case 'inherit': - case 'initial': case 'unset': case 'step-start': case 'step-end': { - break - } - default: { - value += key - } - } - } - } - } - - items[index++] = value - } - - out += (i === 0 ? '' : ',') + items.join(' ') - } - } - } - - out = declare + out + ';' - - if (prefix === 1 || (prefix === 2 && vendor(out, 1))) - return webkit + out + out - - return out - } - - /** - * Isolate - * - * @param {Array} current - */ - function isolate (current) { - for (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) { - // split individual elements in a selector i.e h1 h2 === [h1, h2] - var elements = current[i].split(elementptn) - var out = '' - - for (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) { - // empty element - if ((size = (element = elements[j]).length) === 0 && l > 1) { - continue - } - - tail = out.charCodeAt(out.length-1) - code = element.charCodeAt(0) - padding = '' - - if (j !== 0) { - // determine if we need padding - switch (tail) { - case STAR: - case TILDE: - case GREATERTHAN: - case PLUS: - case SPACE: - case OPENPARENTHESES: { - break - } - default: { - padding = ' ' - } - } - } - - switch (code) { - case AND: { - element = padding + nscopealt - } - case TILDE: - case GREATERTHAN: - case PLUS: - case SPACE: - case CLOSEPARENTHESES: - case OPENPARENTHESES: { - break - } - case OPENBRACKET: { - element = padding + element + nscopealt - break - } - case COLON: { - switch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) { - // :global - case 530: { - if (escape > 0) { - element = padding + element.substring(8, size - 1) - break - } - } - // :hover, :nth-child(), ... - default: { - if (j < 1 || elements[j-1].length < 1) { - element = padding + nscopealt + element - } - } - } - break - } - case COMMA: { - padding = '' - } - default: { - if (size > 1 && element.indexOf(':') > 0) { - element = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2') - } else { - element = padding + element + nscopealt - } - } - } - - out += element - } - - selector[i] = out.replace(formatptn, '').trim() - } - - return selector - } - - /** - * Proxy - * - * @param {number} context - * @param {string} content - * @param {Array} selectors - * @param {Array} parents - * @param {number} line - * @param {number} column - * @param {number} length - * @param {number} id - * @param {number} depth - * @return {(string|void|*)} - */ - function proxy (context, content, selectors, parents, line, column, length, id, depth) { - for (var i = 0, out = content, next; i < plugged; ++i) { - switch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth)) { - case void 0: - case false: - case true: - case null: { - break - } - default: { - out = next - } - } - } - - switch (out) { - case void 0: - case false: - case true: - case null: - case content: { - break - } - default: { - return out - } - } - } - - /** - * Minify - * - * @param {(string|*)} output - * @return {string} - */ - function minify (output) { - return output - .replace(formatptn, '') - .replace(beforeptn, '') - .replace(afterptn, '$1') - .replace(tailptn, '$1') - .replace(whiteptn, ' ') - } - - /** - * Use - * - * @param {(Array|function(...?)|number|void)?} plugin - */ - function use (plugin) { - switch (plugin) { - case void 0: - case null: { - plugged = plugins.length = 0 - break - } - default: { - switch (plugin.constructor) { - case Array: { - for (var i = 0, length = plugin.length; i < length; ++i) { - use(plugin[i]) - } - break - } - case Function: { - plugins[plugged++] = plugin - break - } - case Boolean: { - unkwn = !!plugin|0 - } - } - } - } - - return use - } - - /** - * Set - * - * @param {*} options - */ - function set (options) { - for (var name in options) { - var value = options[name] - switch (name) { - case 'keyframe': keyed = value|0; break - case 'global': escape = value|0; break - case 'cascade': cascade = value|0; break - case 'compress': compress = value|0; break - case 'semicolon': semicolon = value|0; break - case 'preserve': preserve = value|0; break - case 'prefix': - should = null - - if (!value) { - prefix = 0 - } else if (typeof value !== 'function') { - prefix = 1 - } else { - prefix = 2 - should = value - } - } - } - - return set - } - - /** - * Stylis - * - * @param {string} selector - * @param {string} input - * @return {*} - */ - function stylis (selector, input) { - if (this !== void 0 && this.constructor === stylis) { - return factory(selector) - } - - // setup - var ns = selector - var code = ns.charCodeAt(0) - - // trim leading whitespace - if (code < 33) { - code = (ns = ns.trim()).charCodeAt(0) - } - - // keyframe/animation namespace - if (keyed > 0) { - key = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-') - } - - // reset, used to assert if a plugin is moneky-patching the return value - code = 1 - - // cascade/isolate - if (cascade === 1) { - nscope = ns - } else { - nscopealt = ns - } - - var selectors = [nscope] - var result - - // execute plugins, pre-process context - if (plugged > 0) { - result = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0) - - if (result !== void 0 && typeof result === 'string') { - input = result - } - } - - // build - var output = compile(array, selectors, input, 0, 0) - - // execute plugins, post-process context - if (plugged > 0) { - result = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0) - - // bypass minification - if (result !== void 0 && typeof(output = result) !== 'string') { - code = 0 - } - } - - // reset - key = '' - nscope = '' - nscopealt = '' - pattern = 0 - line = 1 - column = 1 - - return compress*code === 0 ? output : minify(output) - } - - stylis['use'] = use - stylis['set'] = set - - if (options !== void 0) { - set(options) - } - - return stylis -})); - - -/***/ }), - -/***/ "../node_modules/trendmicro-ui/dist/css/trendmicro-ui.css": -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a "}},nn=function(n,t){return function(){var e,o=((e={})[j]=Y(t),e["data-styled-version"]="4.1.3",e),r=X();return r&&(o.nonce=r),u.a.createElement("style",g({},o,{dangerouslySetInnerHTML:{__html:n()}}))}},tn=function(n){return function(){return Object.keys(n)}},en=function(n){return document.createTextNode(q(n))},on=function n(t,e){var o=void 0===t?Object.create(null):t,r=void 0===e?Object.create(null):e,i=function(n){var t=r[n];return void 0!==t?t:r[n]=[""]},a=function(){var n="";for(var t in r){var e=r[t][0];e&&(n+=q(t)+e)}return n};return{clone:function(){var t=function(n){var t=Object.create(null);for(var e in n)t[e]=g({},n[e]);return t}(o),e=Object.create(null);for(var i in r)e[i]=[r[i][0]];return n(t,e)},css:a,getIds:tn(r),hasNameForId:V(o),insertMarker:i,insertRules:function(n,t,e){i(n)[0]+=t.join(" "),Q(o,n,e)},removeRules:function(n){var t=r[n];void 0!==t&&(t[0]="",J(o,n))},sealed:!1,styleTag:null,toElement:nn(a,o),toHTML:H(a,o)}},rn=function(n,t,e,o,r){if(E&&!e){var i=function(n,t,e){var o=document.createElement("style");o.setAttribute(j,""),o.setAttribute("data-styled-version","4.1.3");var r=X();if(r&&o.setAttribute("nonce",r),o.appendChild(document.createTextNode("")),n&&!t)n.appendChild(o);else{if(!t||!n||!t.parentNode)throw new O(6);t.parentNode.insertBefore(o,e?t:t.nextSibling)}return o}(n,t,o);return N?function(n,t){var e=Object.create(null),o=Object.create(null),r=void 0!==t,i=!1,a=function(t){var r=o[t];return void 0!==r?r:(o[t]=en(t),n.appendChild(o[t]),e[t]=Object.create(null),o[t])},l=function(){var n="";for(var t in o)n+=o[t].data;return n};return{clone:function(){throw new O(5)},css:l,getIds:tn(o),hasNameForId:V(e),insertMarker:a,insertRules:function(n,o,l){for(var u=a(n),s=[],c=o.length,d=0;d0&&(i=!0,t().insertRules(n+"-import",s))},removeRules:function(a){var l=o[a];if(void 0!==l){var u=en(a);n.replaceChild(u,l),o[a]=u,J(e,a),r&&i&&t().removeRules(a+"-import")}},sealed:!1,styleTag:n,toElement:nn(l,e),toHTML:H(l,e)}}(i,r):function(n,t){var e=Object.create(null),o=Object.create(null),r=[],i=void 0!==t,a=!1,l=function(n){var t=o[n];return void 0!==t?t:(o[n]=r.length,r.push(0),J(e,n),o[n])},u=function(){var t=K(n).cssRules,e="";for(var i in o){e+=q(i);for(var a=o[i],l=B(r,a),u=l-r[a];u0&&(a=!0,t().insertRules(o+"-import",b)),r[c]+=f,Q(e,o,s)},removeRules:function(l){var u=o[l];if(void 0!==u){var s=r[u];!function(n,t,e){for(var o=t-e,r=t;r>o;r-=1)n.deleteRule(r)}(K(n),B(r,u)-1,s),r[u]=0,J(e,l),i&&a&&t().removeRules(l+"-import")}},sealed:!1,styleTag:n,toElement:nn(u,e),toHTML:H(u,e)}}(i,r)}return on()},an=/\s+/,ln=void 0;ln=E?N?40:1e3:-1;var un=0,sn=void 0,cn=function(){function n(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:E?document.head:null,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];m(this,n),this.getImportRuleTag=function(){var n=t.importRuleTag;if(void 0!==n)return n;var e=t.tags[0];return t.importRuleTag=rn(t.target,e?e.styleTag:null,t.forceServer,!0)},un+=1,this.id=un,this.forceServer=o,this.target=o?null:e,this.tagMap={},this.deferred={},this.rehydratedNames={},this.ignoreRehydratedNames={},this.tags=[],this.capacity=1,this.clones=[]}return n.prototype.rehydrate=function(){if(!E||this.forceServer)return this;var n=[],t=[],e=!1,o=document.querySelectorAll("style["+j+'][data-styled-version="4.1.3"]'),r=o.length;if(!r)return this;for(var i=0;i0&&void 0!==arguments[0]&&arguments[0];sn=new n(void 0,t).rehydrate()},n.prototype.clone=function(){var t=new n(this.target,this.forceServer);return this.clones.push(t),t.tags=this.tags.map(function(n){for(var e=n.getIds(),o=n.clone(),r=0;r1?t-1:0),o=1;o=4;)t=1540483477*(65535&(t=255&n.charCodeAt(r)|(255&n.charCodeAt(++r))<<8|(255&n.charCodeAt(++r))<<16|(255&n.charCodeAt(++r))<<24))+((1540483477*(t>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(t=1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16)),e-=4,++r;switch(e){case 3:o^=(255&n.charCodeAt(r+2))<<16;case 2:o^=(255&n.charCodeAt(r+1))<<8;case 1:o=1540483477*(65535&(o^=255&n.charCodeAt(r)))+((1540483477*(o>>>16)&65535)<<16)}return((o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16))^o>>>15)>>>0}var xn=52,yn=function(n){return String.fromCharCode(n+(n>25?39:97))};function wn(n){var t="",e=void 0;for(e=n;e>xn;e=Math.floor(e/xn))t=yn(e%xn)+t;return yn(e%xn)+t}function Cn(n,t){for(var e=0;e2&&void 0!==arguments[2]?arguments[2]:_,o=!!e&&n.theme===e.theme;return n.theme&&!o?n.theme:t||e.theme},En=/[[\].#*$><+~=|^:(),"'`-]+/g,Nn=/(^-|-$)/g;function On(n){return n.replace(En,"-").replace(Nn,"")}function Pn(n){return"string"==typeof n&&!0}var Dn={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDerivedStateFromProps:!0,propTypes:!0,type:!0},Ln={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},zn=((_n={})[c.ForwardRef]={$$typeof:!0,render:!0},_n),An=Object.defineProperty,Mn=Object.getOwnPropertyNames,In=Object.getOwnPropertySymbols,Fn=void 0===In?function(){return[]}:In,Un=Object.getOwnPropertyDescriptor,Zn=Object.getPrototypeOf,Wn=Object.prototype,Rn=Array.prototype;function $n(n,t,e){if("string"!=typeof t){var o=Zn(t);o&&o!==Wn&&$n(n,o,e);for(var r=Rn.concat(Mn(t),Fn(t)),i=zn[n.$$typeof]||Dn,a=zn[t.$$typeof]||Dn,l=r.length,u=void 0,s=void 0;l--;)if(s=r[l],!(Ln[s]||e&&e[s]||a&&a[s]||i&&i[s])&&(u=Un(t,s)))try{An(n,s,u)}catch(n){}return n}return n}var Xn=Object(l.createContext)(),Qn=Xn.Consumer,Jn=(function(n){function t(e){m(this,t);var o=y(this,n.call(this,e));return o.getContext=Object(d.a)(o.getContext.bind(o)),o.renderInner=o.renderInner.bind(o),o}v(t,n),t.prototype.render=function(){return this.props.children?u.a.createElement(Xn.Consumer,null,this.renderInner):null},t.prototype.renderInner=function(n){var t=this.getContext(this.props.theme,n);return u.a.createElement(Xn.Provider,{value:t},u.a.Children.only(this.props.children))},t.prototype.getTheme=function(n,t){if(S(n))return n(t);if(null===n||Array.isArray(n)||"object"!==(void 0===n?"undefined":b(n)))throw new O(8);return g({},t,n)},t.prototype.getContext=function(n,t){return this.getTheme(n,t)}}(l.Component),function(){function n(){m(this,n),this.masterSheet=cn.master,this.instance=this.masterSheet.clone(),this.sealed=!1}n.prototype.seal=function(){if(!this.sealed){var n=this.masterSheet.clones.indexOf(this.instance);this.masterSheet.clones.splice(n,1),this.sealed=!0}},n.prototype.collectStyles=function(n){if(this.sealed)throw new O(2);return u.a.createElement(Yn,{sheet:this.instance},n)},n.prototype.getStyleTags=function(){return this.seal(),this.instance.toHTML()},n.prototype.getStyleElement=function(){return this.seal(),this.instance.toReactElements()},n.prototype.interleaveWithNodeStream=function(n){throw new O(3)}}(),Object(l.createContext)()),Vn=Jn.Consumer,Yn=function(n){function t(e){m(this,t);var o=y(this,n.call(this,e));return o.getContext=Object(d.a)(o.getContext),o}return v(t,n),t.prototype.getContext=function(n,t){if(n)return n;if(t)return new cn(t);throw new O(4)},t.prototype.render=function(){var n=this.props,t=n.children,e=n.sheet,o=n.target;return u.a.createElement(Jn.Provider,{value:this.getContext(e,o)},t)},t}(l.Component),Kn=(new Set,{});var Gn=function(n){function t(){m(this,t);var e=y(this,n.call(this));return e.attrs={},e.renderOuter=e.renderOuter.bind(e),e.renderInner=e.renderInner.bind(e),e}return v(t,n),t.prototype.render=function(){return u.a.createElement(Vn,null,this.renderOuter)},t.prototype.renderOuter=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:cn.master;return this.styleSheet=n,this.props.forwardedComponent.componentStyle.isStatic?this.renderInner():u.a.createElement(Qn,null,this.renderInner)},t.prototype.renderInner=function(n){var t=this.props.forwardedComponent,e=t.componentStyle,o=t.defaultProps,r=(t.displayName,t.foldedComponentIds),i=t.styledComponentId,a=t.target,u=void 0;u=e.isStatic?this.generateAndInjectStyles(_,this.props):void 0!==n?this.generateAndInjectStyles(jn(this.props,n,o),this.props):this.generateAndInjectStyles(this.props.theme||_,this.props);var s=this.props.as||this.attrs.as||a,c=Pn(s),d={},f=g({},this.attrs,this.props),b=void 0;for(b in f)"forwardedComponent"!==b&&"as"!==b&&("forwardedRef"===b?d.ref=f[b]:c&&!Object(p.a)(b)||(d[b]=f[b]));return this.props.style&&this.attrs.style&&(d.style=g({},this.attrs.style,this.props.style)),d.className=Array.prototype.concat(r,this.props.className,i,this.attrs.className,u).filter(Boolean).join(" "),Object(l.createElement)(s,d)},t.prototype.buildExecutionContext=function(n,t,e){var o=this,r=g({},t,{theme:n});return e.length?(this.attrs={},e.forEach(function(n){var t,e=n,i=!1,a=void 0,l=void 0;for(l in S(e)&&(e=e(r),i=!0),e)a=e[l],i||!S(a)||(t=a)&&t.prototype&&t.prototype.isReactComponent||T(a)||(a=a(r)),o.attrs[l]=a,r[l]=a}),r):r},t.prototype.generateAndInjectStyles=function(n,t){var e=t.forwardedComponent,o=e.attrs,r=e.componentStyle;e.warnTooManyClasses;return r.isStatic&&!o.length?r.generateAndInjectStyles(_,this.styleSheet):r.generateAndInjectStyles(this.buildExecutionContext(n,t,o),this.styleSheet)},t}(l.Component);function qn(n,t,e){var o=T(n),r=!Pn(n),i=t.displayName,a=void 0===i?function(n){return Pn(n)?"styled."+n:"Styled("+k(n)+")"}(n):i,l=t.componentId,s=void 0===l?function(n,t,e){var o="string"!=typeof t?"sc":On(t),r=(Kn[o]||0)+1;Kn[o]=r;var i=o+"-"+n.generateName(o+r);return e?e+"-"+i:i}(Tn,t.displayName,t.parentComponentId):l,c=t.ParentComponent,d=void 0===c?Gn:c,p=t.attrs,f=void 0===p?C:p,b=t.displayName&&t.componentId?On(t.displayName)+"-"+t.componentId:t.componentId||s,m=o&&n.attrs?Array.prototype.concat(n.attrs,f).filter(Boolean):f,h=new Tn(o?n.componentStyle.rules.concat(e):e,m,b),v=u.a.forwardRef(function(n,t){return u.a.createElement(d,g({},n,{forwardedComponent:v,forwardedRef:t}))});return v.attrs=m,v.componentStyle=h,v.displayName=a,v.foldedComponentIds=o?Array.prototype.concat(n.foldedComponentIds,n.styledComponentId):C,v.styledComponentId=b,v.target=o?n.target:n,v.withComponent=function(n){var o=t.componentId,r=x(t,["componentId"]),i=o&&o+"-"+(Pn(n)?n:On(k(n)));return qn(n,g({},r,{attrs:m,componentId:i,ParentComponent:d}),e)},v.toString=function(){return"."+v.styledComponentId},r&&$n(v,n,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,styledComponentId:!0,target:!0,withComponent:!0}),v}var Bn=function(n){return function n(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_;if(!Object(c.isValidElementType)(e))throw new O(1,String(e));var r=function(){return t(e,o,gn.apply(void 0,arguments))};return r.withConfig=function(r){return n(t,e,g({},o,r))},r.attrs=function(r){return n(t,e,g({},o,{attrs:Array.prototype.concat(o.attrs,r).filter(Boolean)}))},r}(qn,n)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach(function(n){Bn[n]=Bn(n)});!function(){function n(t,e){m(this,n),this.rules=t,this.componentId=e,this.isStatic=Cn(t,C),cn.master.hasId(e)||cn.master.deferredInject(e,[])}n.prototype.createStyles=function(n,t){var e=$(hn(this.rules,n,t),"");t.inject(this.componentId,e)},n.prototype.removeStyles=function(n){var t=this.componentId;n.hasId(t)&&n.remove(t)},n.prototype.renderStyles=function(n,t){this.removeStyles(t),this.createStyles(n,t)}}();E&&(window.scCGSHMRCache={});var Hn=function(n){return n.replace(/\s|\\n/g,"")};function nt(n){for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o])/g,v=/([[}=:>])\s+/g,x=/(\{[^{]+?);(?=\})/g,y=/\s{2,}/g,w=/([^\(])(:+) */g,C=/[svh]\w+-[tblr]{2}/,_=/\(\s*(.*)\s*\)/g,S=/([\s\S]*?);/g,k=/-self|flex-/g,T=/[^]*?(:[rp][el]a[\w-]+)[^]*/,j=/stretch|:\s*\w+\-(?:conte|avail)/,E=/([^-])(image-set\()/,N="-webkit-",O="-moz-",P="-ms-",D=59,L=125,z=123,A=40,M=41,I=91,F=93,U=10,Z=13,W=9,R=64,$=32,X=38,Q=45,J=95,V=42,Y=44,K=58,G=39,q=34,B=47,H=62,nn=43,tn=126,en=0,on=12,rn=11,an=107,ln=109,un=115,sn=112,cn=111,dn=105,pn=99,fn=100,bn=112,mn=1,hn=1,gn=0,vn=1,xn=1,yn=1,wn=0,Cn=0,_n=0,Sn=[],kn=[],Tn=0,jn=null,En=-2,Nn=-1,On=0,Pn=1,Dn=2,Ln=3,zn=0,An=1,Mn="",In="",Fn="";function Un(n,t,r,i,a){for(var l,u,c=0,d=0,p=0,f=0,g=0,v=0,x=0,y=0,C=0,S=0,k=0,T=0,j=0,E=0,J=0,wn=0,kn=0,jn=0,En=0,Nn=r.length,Wn=Nn-1,Vn="",Yn="",Kn="",Gn="",qn="",Bn="";J0&&(Yn=Yn.replace(o,"")),Yn.trim().length>0)){switch(x){case $:case W:case D:case Z:case U:break;default:Yn+=r.charAt(J)}x=D}if(1===kn)switch(x){case z:case L:case D:case q:case G:case A:case M:case Y:kn=0;case W:case Z:case U:case $:break;default:for(kn=0,En=J,g=x,J--,x=D;En0&&(++J,x=g);case z:En=Nn}}switch(x){case z:for(g=(Yn=Yn.trim()).charCodeAt(0),k=1,En=++J;J0&&(Yn=Yn.replace(o,"")),v=Yn.charCodeAt(1)){case fn:case ln:case un:case Q:l=t;break;default:l=Sn}if(En=(Kn=Un(t,l,Kn,v,a+1)).length,_n>0&&0===En&&(En=Yn.length),Tn>0&&(l=Zn(Sn,Yn,jn),u=Qn(Ln,Kn,l,t,hn,mn,En,v,a,i),Yn=l.join(""),void 0!==u&&0===(En=(Kn=u.trim()).length)&&(v=0,Kn="")),En>0)switch(v){case un:Yn=Yn.replace(_,Xn);case fn:case ln:case Q:Kn=Yn+"{"+Kn+"}";break;case an:Kn=(Yn=Yn.replace(b,"$1 $2"+(An>0?Mn:"")))+"{"+Kn+"}",Kn=1===xn||2===xn&&$n("@"+Kn,3)?"@"+N+Kn+"@"+Kn:"@"+Kn;break;default:Kn=Yn+Kn,i===bn&&(Gn+=Kn,Kn="")}else Kn="";break;default:Kn=Un(t,Zn(t,Yn,jn),Kn,i,a+1)}qn+=Kn,T=0,kn=0,E=0,wn=0,jn=0,j=0,Yn="",Kn="",x=r.charCodeAt(++J);break;case L:case D:if((En=(Yn=(wn>0?Yn.replace(o,""):Yn).trim()).length)>1)switch(0===E&&((g=Yn.charCodeAt(0))===Q||g>96&&g<123)&&(En=(Yn=Yn.replace(" ",":")).length),Tn>0&&void 0!==(u=Qn(Pn,Yn,t,n,hn,mn,Gn.length,i,a,i))&&0===(En=(Yn=u.trim()).length)&&(Yn="\0\0"),g=Yn.charCodeAt(0),v=Yn.charCodeAt(1),g){case en:break;case R:if(v===dn||v===pn){Bn+=Yn+r.charAt(J);break}default:if(Yn.charCodeAt(En-1)===K)break;Gn+=Rn(Yn,g,v,Yn.charCodeAt(2))}T=0,kn=0,E=0,wn=0,jn=0,Yn="",x=r.charCodeAt(++J)}}switch(x){case Z:case U:if(d+f+p+c+Cn===0)switch(S){case M:case G:case q:case R:case tn:case H:case V:case nn:case B:case Q:case K:case Y:case D:case z:case L:break;default:E>0&&(kn=1)}d===B?d=0:vn+T===0&&i!==an&&Yn.length>0&&(wn=1,Yn+="\0"),Tn*zn>0&&Qn(On,Yn,t,n,hn,mn,Gn.length,i,a,i),mn=1,hn++;break;case D:case L:if(d+f+p+c===0){mn++;break}default:switch(mn++,Vn=r.charAt(J),x){case W:case $:if(f+c+d===0)switch(y){case Y:case K:case W:case $:Vn="";break;default:x!==$&&(Vn=" ")}break;case en:Vn="\\0";break;case on:Vn="\\f";break;case rn:Vn="\\v";break;case X:f+d+c===0&&vn>0&&(jn=1,wn=1,Vn="\f"+Vn);break;case 108:if(f+d+c+gn===0&&E>0)switch(J-E){case 2:y===sn&&r.charCodeAt(J-3)===K&&(gn=y);case 8:C===cn&&(gn=C)}break;case K:f+d+c===0&&(E=J);break;case Y:d+p+f+c===0&&(wn=1,Vn+="\r");break;case q:case G:0===d&&(f=f===x?0:0===f?x:f);break;case I:f+d+p===0&&c++;break;case F:f+d+p===0&&c--;break;case M:f+d+c===0&&p--;break;case A:if(f+d+c===0){if(0===T)switch(2*y+3*C){case 533:break;default:k=0,T=1}p++}break;case R:d+p+f+c+E+j===0&&(j=1);break;case V:case B:if(f+c+p>0)break;switch(d){case 0:switch(2*x+3*r.charCodeAt(J+1)){case 235:d=B;break;case 220:En=J,d=V}break;case V:x===B&&y===V&&En+2!==J&&(33===r.charCodeAt(En+2)&&(Gn+=r.substring(En,J+1)),Vn="",d=0)}}if(0===d){if(vn+f+c+j===0&&i!==an&&x!==D)switch(x){case Y:case tn:case H:case nn:case M:case A:if(0===T){switch(y){case W:case $:case U:case Z:Vn+="\0";break;default:Vn="\0"+Vn+(x===Y?"":"\0")}wn=1}else switch(x){case A:E+7===J&&108===y&&(E=0),T=++k;break;case M:0==(T=--k)&&(wn=1,Vn+="\0")}break;case W:case $:switch(y){case en:case z:case L:case D:case Y:case on:case W:case $:case U:case Z:break;default:0===T&&(wn=1,Vn+="\0")}}Yn+=Vn,x!==$&&x!==W&&(S=x)}}C=y,y=x,J++}if(En=Gn.length,_n>0&&0===En&&0===qn.length&&0===t[0].length==0&&(i!==ln||1===t.length&&(vn>0?In:Fn)===t[0])&&(En=t.join(",").length+2),En>0){if(l=0===vn&&i!==an?function(n){for(var t,e,r=0,i=n.length,a=Array(i);r1)){if(p=u.charCodeAt(u.length-1),f=e.charCodeAt(0),t="",0!==c)switch(p){case V:case tn:case H:case nn:case $:case A:break;default:t=" "}switch(f){case X:e=t+In;case tn:case H:case nn:case $:case M:case A:break;case I:e=t+e+In;break;case K:switch(2*e.charCodeAt(1)+3*e.charCodeAt(2)){case 530:if(yn>0){e=t+e.substring(8,d-1);break}default:(c<1||l[c-1].length<1)&&(e=t+In+e)}break;case Y:t="";default:e=d>1&&e.indexOf(":")>0?t+e.replace(w,"$1"+In+"$2"):t+e+In}u+=e}a[r]=u.replace(o,"").trim()}return a}(t):t,Tn>0&&void 0!==(u=Qn(Dn,Gn,l,n,hn,mn,En,i,a,i))&&0===(Gn=u).length)return Bn+Gn+qn;if(Gn=l.join(",")+"{"+Gn+"}",xn*gn!=0){switch(2!==xn||$n(Gn,2)||(gn=0),gn){case cn:Gn=Gn.replace(h,":"+O+"$1")+Gn;break;case sn:Gn=Gn.replace(m,"::"+N+"input-$1")+Gn.replace(m,"::"+O+"$1")+Gn.replace(m,":"+P+"input-$1")+Gn}gn=0}}return Bn+Gn+qn}function Zn(n,t,e){var o=t.trim().split(c),r=o,i=o.length,a=n.length;switch(a){case 0:case 1:for(var l=0,u=0===a?"":n[0]+" ";l0&&vn>0)return r.replace(p,"$1").replace(d,"$1"+Fn);break;default:return n.trim()+r.replace(d,"$1"+n.trim())}default:if(e*vn>0&&r.indexOf("\f")>0)return r.replace(d,(n.charCodeAt(0)===K?"":"$1")+n.trim())}return n+r}function Rn(n,t,e,o){var s,c=0,d=n+";",p=2*t+3*e+4*o;if(944===p)return function(n){var t=n.length,e=n.indexOf(":",9)+1,o=n.substring(0,e).trim(),r=n.substring(e,t-1).trim();switch(n.charCodeAt(9)*An){case 0:break;case Q:if(110!==n.charCodeAt(10))break;default:for(var i=r.split((r="",l)),a=0,e=0,t=i.length;aR&&d<90||d>96&&d<123||d===J||d===Q&&s.charCodeAt(1)!==Q))switch(isNaN(parseFloat(s))+(-1!==s.indexOf("("))){case 1:switch(s){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:s+=Mn}}c[e++]=s}r+=(0===a?"":",")+c.join(" ")}}return r=o+r+";",1===xn||2===xn&&$n(r,1)?N+r+r:r}(d);if(0===xn||2===xn&&!$n(d,1))return d;switch(p){case 1015:return 97===d.charCodeAt(10)?N+d+d:d;case 951:return 116===d.charCodeAt(3)?N+d+d:d;case 963:return 110===d.charCodeAt(5)?N+d+d:d;case 1009:if(100!==d.charCodeAt(4))break;case 969:case 942:return N+d+d;case 978:return N+d+O+d+d;case 1019:case 983:return N+d+O+d+P+d+d;case 883:return d.charCodeAt(8)===Q?N+d+d:d.indexOf("image-set(",11)>0?d.replace(E,"$1"+N+"$2")+d:d;case 932:if(d.charCodeAt(4)===Q)switch(d.charCodeAt(5)){case 103:return N+"box-"+d.replace("-grow","")+N+d+P+d.replace("grow","positive")+d;case 115:return N+d+P+d.replace("shrink","negative")+d;case 98:return N+d+P+d.replace("basis","preferred-size")+d}return N+d+P+d+d;case 964:return N+d+P+"flex-"+d+d;case 1023:if(99!==d.charCodeAt(8))break;return s=d.substring(d.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),N+"box-pack"+s+N+d+P+"flex-pack"+s+d;case 1005:return i.test(d)?d.replace(r,":"+N)+d.replace(r,":"+O)+d:d;case 1e3:switch(c=(s=d.substring(13).trim()).indexOf("-")+1,s.charCodeAt(0)+s.charCodeAt(c)){case 226:s=d.replace(C,"tb");break;case 232:s=d.replace(C,"tb-rl");break;case 220:s=d.replace(C,"lr");break;default:return d}return N+d+P+s+d;case 1017:if(-1===d.indexOf("sticky",9))return d;case 975:switch(c=(d=n).length-10,p=(s=(33===d.charCodeAt(c)?d.substring(0,c):d).substring(n.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|s.charCodeAt(7))){case 203:if(s.charCodeAt(8)<111)break;case 115:d=d.replace(s,N+s)+";"+d;break;case 207:case 102:d=d.replace(s,N+(p>102?"inline-":"")+"box")+";"+d.replace(s,N+s)+";"+d.replace(s,P+s+"box")+";"+d}return d+";";case 938:if(d.charCodeAt(5)===Q)switch(d.charCodeAt(6)){case 105:return s=d.replace("-items",""),N+d+N+"box-"+s+P+"flex-"+s+d;case 115:return N+d+P+"flex-item-"+d.replace(k,"")+d;default:return N+d+P+"flex-line-pack"+d.replace("align-content","").replace(k,"")+d}break;case 973:case 989:if(d.charCodeAt(3)!==Q||122===d.charCodeAt(4))break;case 931:case 953:if(!0===j.test(n))return 115===(s=n.substring(n.indexOf(":")+1)).charCodeAt(0)?Rn(n.replace("stretch","fill-available"),t,e,o).replace(":fill-available",":stretch"):d.replace(s,N+s)+d.replace(s,O+s.replace("fill-",""))+d;break;case 962:if(d=N+d+(102===d.charCodeAt(5)?P+d:"")+d,e+o===211&&105===d.charCodeAt(13)&&d.indexOf("transform",10)>0)return d.substring(0,d.indexOf(";",27)+1).replace(a,"$1"+N+"$2")+d}return d}function $n(n,t){var e=n.indexOf(1===t?":":"{"),o=n.substring(0,3!==t?e:10),r=n.substring(e+1,n.length-1);return jn(2!==t?o:o.replace(T,"$1"),r,t)}function Xn(n,t){var e=Rn(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return e!==t+";"?e.replace(S," or ($1)").substring(4):"("+t+")"}function Qn(n,t,e,o,r,i,a,l,u,s){for(var c,d=0,p=t;d0&&(Mn=r.replace(f,i===I?"":"-")),i=1,1===vn?Fn=r:In=r;var a,l=[Fn];Tn>0&&void 0!==(a=Qn(Nn,e,l,l,hn,mn,0,0,0,0))&&"string"==typeof a&&(e=a);var u=Un(Sn,l,e,0,0);return Tn>0&&void 0!==(a=Qn(En,u,l,l,hn,mn,u.length,0,0,0))&&"string"!=typeof(u=a)&&(i=0),Mn="",Fn="",In="",gn=0,hn=1,mn=1,wn*i==0?u:u.replace(o,"").replace(g,"").replace(v,"$1").replace(x,"$1").replace(y," ")}return Yn.use=function n(t){switch(t){case void 0:case null:Tn=kn.length=0;break;default:if("function"==typeof t)kn[Tn++]=t;else if("object"==typeof t)for(var e=0,o=t.length;e tag\n\n// load the styles\nvar content = require(\"!!../../../css-loader/index.js!./react-buttons.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the \n *\n * Note: replace · with * in the above snippet.\n * */\nvar COMPONENTS_PER_TAG = 40;\n\nvar BrowserTag = function () {\n function BrowserTag(el, isLocal) {\n var existingSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n classCallCheck(this, BrowserTag);\n\n this.el = el;\n this.isLocal = isLocal;\n this.ready = false;\n\n var extractedComps = extractCompsFromCSS(existingSource);\n\n this.size = extractedComps.length;\n this.components = extractedComps.reduce(function (acc, obj) {\n acc[obj.componentId] = obj; // eslint-disable-line no-param-reassign\n return acc;\n }, {});\n }\n\n BrowserTag.prototype.isFull = function isFull() {\n return this.size >= COMPONENTS_PER_TAG;\n };\n\n BrowserTag.prototype.addComponent = function addComponent(componentId) {\n if (!this.ready) this.replaceElement();\n if (this.components[componentId]) throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n\n var comp = { componentId: componentId, textNode: document.createTextNode('') };\n this.el.appendChild(comp.textNode);\n\n this.size += 1;\n this.components[componentId] = comp;\n };\n\n BrowserTag.prototype.inject = function inject(componentId, css, name) {\n if (!this.ready) this.replaceElement();\n var comp = this.components[componentId];\n\n if (!comp) throw new Error('Must add a new component before you can inject css into it');\n if (comp.textNode.data === '') comp.textNode.appendData('\\n/* sc-component-id: ' + componentId + ' */\\n');\n\n comp.textNode.appendData(css);\n if (name) {\n var existingNames = this.el.getAttribute(SC_ATTR);\n this.el.setAttribute(SC_ATTR, existingNames ? existingNames + ' ' + name : name);\n\n if (typeof window !== 'undefined' && window.__webpack_nonce__) {\n this.el.setAttribute('nonce', window.__webpack_nonce__);\n }\n }\n };\n\n BrowserTag.prototype.toHTML = function toHTML() {\n return this.el.outerHTML;\n };\n\n BrowserTag.prototype.toReactElement = function toReactElement() {\n throw new Error('BrowserTag doesn\\'t implement toReactElement!');\n };\n\n BrowserTag.prototype.clone = function clone() {\n throw new Error('BrowserTag cannot be cloned!');\n };\n\n /* Because we care about source order, before we can inject anything we need to\n * create a text node for each component and replace the existing CSS. */\n\n\n BrowserTag.prototype.replaceElement = function replaceElement() {\n var _this = this;\n\n this.ready = true;\n // We have nothing to inject. Use the current el.\n if (this.size === 0) return;\n\n // Build up our replacement style tag\n var newEl = this.el.cloneNode();\n newEl.appendChild(document.createTextNode('\\n'));\n\n Object.keys(this.components).forEach(function (key) {\n var comp = _this.components[key];\n\n // eslint-disable-next-line no-param-reassign\n comp.textNode = document.createTextNode(comp.cssFromDOM);\n newEl.appendChild(comp.textNode);\n });\n\n if (!this.el.parentNode) throw new Error(\"Trying to replace an element that wasn't mounted!\");\n\n // The ol' switcheroo\n this.el.parentNode.replaceChild(newEl, this.el);\n this.el = newEl;\n };\n\n return BrowserTag;\n}();\n\n/* Factory function to separate DOM operations from logical ones*/\n\n\nvar BrowserStyleSheet = {\n create: function create() {\n var tags = [];\n var names = {};\n\n /* Construct existing state from DOM */\n var nodes = document.querySelectorAll('[' + SC_ATTR + ']');\n var nodesLength = nodes.length;\n\n for (var i = 0; i < nodesLength; i += 1) {\n var el = nodes[i];\n\n tags.push(new BrowserTag(el, el.getAttribute(LOCAL_ATTR) === 'true', el.innerHTML));\n\n var attr = el.getAttribute(SC_ATTR);\n if (attr) {\n attr.trim().split(/\\s+/).forEach(function (name) {\n names[name] = true;\n });\n }\n }\n\n /* Factory for making more tags */\n var tagConstructor = function tagConstructor(isLocal) {\n var el = document.createElement('style');\n el.type = 'text/css';\n el.setAttribute(SC_ATTR, '');\n el.setAttribute(LOCAL_ATTR, isLocal ? 'true' : 'false');\n if (!document.head) throw new Error('Missing document ');\n document.head.appendChild(el);\n return new BrowserTag(el, isLocal);\n };\n\n return new StyleSheet(tagConstructor, tags, names);\n }\n};\n\n// \nvar SC_ATTR = 'data-styled-components';\nvar LOCAL_ATTR = 'data-styled-components-is-local';\nvar CONTEXT_KEY = '__styled-components-stylesheet__';\n\nvar instance = null;\n// eslint-disable-next-line no-use-before-define\nvar clones = [];\n\nvar StyleSheet = function () {\n function StyleSheet(tagConstructor) {\n var tags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var names = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, StyleSheet);\n this.hashes = {};\n this.deferredInjections = {};\n\n this.tagConstructor = tagConstructor;\n this.tags = tags;\n this.names = names;\n this.constructComponentTagMap();\n }\n\n StyleSheet.prototype.constructComponentTagMap = function constructComponentTagMap() {\n var _this = this;\n\n this.componentTags = {};\n\n this.tags.forEach(function (tag) {\n Object.keys(tag.components).forEach(function (componentId) {\n _this.componentTags[componentId] = tag;\n });\n });\n };\n\n /* Best level of caching—get the name from the hash straight away. */\n\n\n StyleSheet.prototype.getName = function getName(hash) {\n return this.hashes[hash.toString()];\n };\n\n /* Second level of caching—if the name is already in the dom, don't\n * inject anything and record the hash for getName next time. */\n\n\n StyleSheet.prototype.alreadyInjected = function alreadyInjected(hash, name) {\n if (!this.names[name]) return false;\n\n this.hashes[hash.toString()] = name;\n return true;\n };\n\n /* Third type of caching—don't inject components' componentId twice. */\n\n\n StyleSheet.prototype.hasInjectedComponent = function hasInjectedComponent(componentId) {\n return !!this.componentTags[componentId];\n };\n\n StyleSheet.prototype.deferredInject = function deferredInject(componentId, isLocal, css) {\n if (this === instance) {\n clones.forEach(function (clone) {\n clone.deferredInject(componentId, isLocal, css);\n });\n }\n\n this.getOrCreateTag(componentId, isLocal);\n this.deferredInjections[componentId] = css;\n };\n\n StyleSheet.prototype.inject = function inject(componentId, isLocal, css, hash, name) {\n if (this === instance) {\n clones.forEach(function (clone) {\n clone.inject(componentId, isLocal, css);\n });\n }\n\n var tag = this.getOrCreateTag(componentId, isLocal);\n\n var deferredInjection = this.deferredInjections[componentId];\n if (deferredInjection) {\n tag.inject(componentId, deferredInjection);\n delete this.deferredInjections[componentId];\n }\n\n tag.inject(componentId, css, name);\n\n if (hash && name) {\n this.hashes[hash.toString()] = name;\n }\n };\n\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n\n StyleSheet.prototype.toReactElements = function toReactElements() {\n return this.tags.map(function (tag, i) {\n return tag.toReactElement('sc-' + i);\n });\n };\n\n StyleSheet.prototype.getOrCreateTag = function getOrCreateTag(componentId, isLocal) {\n var existingTag = this.componentTags[componentId];\n if (existingTag) {\n return existingTag;\n }\n\n var lastTag = this.tags[this.tags.length - 1];\n var componentTag = !lastTag || lastTag.isFull() || lastTag.isLocal !== isLocal ? this.createNewTag(isLocal) : lastTag;\n this.componentTags[componentId] = componentTag;\n componentTag.addComponent(componentId);\n return componentTag;\n };\n\n StyleSheet.prototype.createNewTag = function createNewTag(isLocal) {\n var newTag = this.tagConstructor(isLocal);\n this.tags.push(newTag);\n return newTag;\n };\n\n StyleSheet.reset = function reset(isServer) {\n instance = StyleSheet.create(isServer);\n };\n\n /* We can make isServer totally implicit once Jest 20 drops and we\n * can change environment on a per-test basis. */\n\n\n StyleSheet.create = function create() {\n var isServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : typeof document === 'undefined';\n\n return (isServer ? ServerStyleSheet : BrowserStyleSheet).create();\n };\n\n StyleSheet.clone = function clone(oldSheet) {\n var newSheet = new StyleSheet(oldSheet.tagConstructor, oldSheet.tags.map(function (tag) {\n return tag.clone();\n }), _extends({}, oldSheet.names));\n\n newSheet.hashes = _extends({}, oldSheet.hashes);\n newSheet.deferredInjections = _extends({}, oldSheet.deferredInjections);\n clones.push(newSheet);\n\n return newSheet;\n };\n\n createClass(StyleSheet, null, [{\n key: 'instance',\n get: function get$$1() {\n return instance || (instance = StyleSheet.create());\n }\n }]);\n return StyleSheet;\n}();\n\nvar _StyleSheetManager$ch;\n\n// \nvar StyleSheetManager = function (_Component) {\n inherits(StyleSheetManager, _Component);\n\n function StyleSheetManager() {\n classCallCheck(this, StyleSheetManager);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n StyleSheetManager.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[CONTEXT_KEY] = this.props.sheet, _ref;\n };\n\n StyleSheetManager.prototype.render = function render() {\n /* eslint-disable react/prop-types */\n // Flow v0.43.1 will report an error accessing the `children` property,\n // but v0.47.0 will not. It is necessary to use a type cast instead of\n // a \"fixme\" comment to satisfy both Flow versions.\n return React.Children.only(this.props.children);\n };\n\n return StyleSheetManager;\n}(Component);\n\nStyleSheetManager.childContextTypes = (_StyleSheetManager$ch = {}, _StyleSheetManager$ch[CONTEXT_KEY] = PropTypes.instanceOf(StyleSheet).isRequired, _StyleSheetManager$ch);\n\nStyleSheetManager.propTypes = {\n sheet: PropTypes.instanceOf(StyleSheet).isRequired\n};\n\n// \n/* eslint-disable no-underscore-dangle */\nvar ServerTag = function () {\n function ServerTag(isLocal) {\n classCallCheck(this, ServerTag);\n\n this.isLocal = isLocal;\n this.components = {};\n this.size = 0;\n this.names = [];\n }\n\n ServerTag.prototype.isFull = function isFull() {\n return false;\n };\n\n ServerTag.prototype.addComponent = function addComponent(componentId) {\n if (this.components[componentId]) throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n this.components[componentId] = { componentId: componentId, css: '' };\n this.size += 1;\n };\n\n ServerTag.prototype.concatenateCSS = function concatenateCSS() {\n var _this = this;\n\n return Object.keys(this.components).reduce(function (styles, k) {\n return styles + _this.components[k].css;\n }, '');\n };\n\n ServerTag.prototype.inject = function inject(componentId, css, name) {\n var comp = this.components[componentId];\n\n if (!comp) throw new Error('Must add a new component before you can inject css into it');\n if (comp.css === '') comp.css = '/* sc-component-id: ' + componentId + ' */\\n';\n\n comp.css += css.replace(/\\n*$/, '\\n');\n\n if (name) this.names.push(name);\n };\n\n ServerTag.prototype.toHTML = function toHTML() {\n var attrs = ['type=\"text/css\"', SC_ATTR + '=\"' + this.names.join(' ') + '\"', LOCAL_ATTR + '=\"' + (this.isLocal ? 'true' : 'false') + '\"'];\n\n if (typeof global !== 'undefined' && global.__webpack_nonce__) {\n attrs.push('nonce=\"' + global.__webpack_nonce__ + '\"');\n }\n\n return '';\n };\n\n ServerTag.prototype.toReactElement = function toReactElement(key) {\n var _attrs;\n\n var attrs = (_attrs = {}, _attrs[SC_ATTR] = this.names.join(' '), _attrs[LOCAL_ATTR] = this.isLocal.toString(), _attrs);\n\n if (typeof global !== 'undefined' && global.__webpack_nonce__) {\n attrs.nonce = global.__webpack_nonce__;\n }\n\n return React.createElement('style', _extends({\n key: key, type: 'text/css' }, attrs, {\n dangerouslySetInnerHTML: { __html: this.concatenateCSS() }\n }));\n };\n\n ServerTag.prototype.clone = function clone() {\n var _this2 = this;\n\n var copy = new ServerTag(this.isLocal);\n copy.names = [].concat(this.names);\n copy.size = this.size;\n copy.components = Object.keys(this.components).reduce(function (acc, key) {\n acc[key] = _extends({}, _this2.components[key]); // eslint-disable-line no-param-reassign\n return acc;\n }, {});\n\n return copy;\n };\n\n return ServerTag;\n}();\n\nvar ServerStyleSheet = function () {\n function ServerStyleSheet() {\n classCallCheck(this, ServerStyleSheet);\n\n this.instance = StyleSheet.clone(StyleSheet.instance);\n }\n\n ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {\n if (this.closed) throw new Error(\"Can't collect styles once you've called getStyleTags!\");\n return React.createElement(\n StyleSheetManager,\n { sheet: this.instance },\n children\n );\n };\n\n ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {\n if (!this.closed) {\n clones.splice(clones.indexOf(this.instance), 1);\n this.closed = true;\n }\n\n return this.instance.toHTML();\n };\n\n ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {\n if (!this.closed) {\n clones.splice(clones.indexOf(this.instance), 1);\n this.closed = true;\n }\n\n return this.instance.toReactElements();\n };\n\n ServerStyleSheet.create = function create() {\n return new StyleSheet(function (isLocal) {\n return new ServerTag(isLocal);\n });\n };\n\n return ServerStyleSheet;\n}();\n\n// \n\nvar LIMIT = 200;\n\nvar createWarnTooManyClasses = (function (displayName) {\n var generatedClasses = {};\n var warningSeen = false;\n\n return function (className) {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n /* eslint-disable no-console, prefer-template */\n console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. ' + 'Consider using style property for frequently changed styles.\\n' + 'Example:\\n' + ' const StyledComp = styled.div`width: 100%;`\\n' + ' ');\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n});\n\n// \n/* Trying to avoid the unknown-prop errors on styled components\n by filtering by React's attribute whitelist.\n */\n\n/* Logic copied from ReactDOMUnknownPropertyHook */\nvar reactProps = {\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true,\n autoFocus: true,\n defaultValue: true,\n valueLink: true,\n defaultChecked: true,\n checkedLink: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n onFocusIn: true,\n onFocusOut: true,\n className: true,\n\n /* List copied from https://facebook.github.io/react/docs/events.html */\n onCopy: true,\n onCut: true,\n onPaste: true,\n onCompositionEnd: true,\n onCompositionStart: true,\n onCompositionUpdate: true,\n onKeyDown: true,\n onKeyPress: true,\n onKeyUp: true,\n onFocus: true,\n onBlur: true,\n onChange: true,\n onInput: true,\n onSubmit: true,\n onClick: true,\n onContextMenu: true,\n onDoubleClick: true,\n onDrag: true,\n onDragEnd: true,\n onDragEnter: true,\n onDragExit: true,\n onDragLeave: true,\n onDragOver: true,\n onDragStart: true,\n onDrop: true,\n onMouseDown: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseMove: true,\n onMouseOut: true,\n onMouseOver: true,\n onMouseUp: true,\n onSelect: true,\n onTouchCancel: true,\n onTouchEnd: true,\n onTouchMove: true,\n onTouchStart: true,\n onScroll: true,\n onWheel: true,\n onAbort: true,\n onCanPlay: true,\n onCanPlayThrough: true,\n onDurationChange: true,\n onEmptied: true,\n onEncrypted: true,\n onEnded: true,\n onError: true,\n onLoadedData: true,\n onLoadedMetadata: true,\n onLoadStart: true,\n onPause: true,\n onPlay: true,\n onPlaying: true,\n onProgress: true,\n onRateChange: true,\n onSeeked: true,\n onSeeking: true,\n onStalled: true,\n onSuspend: true,\n onTimeUpdate: true,\n onVolumeChange: true,\n onWaiting: true,\n onLoad: true,\n onAnimationStart: true,\n onAnimationEnd: true,\n onAnimationIteration: true,\n onTransitionEnd: true,\n\n onCopyCapture: true,\n onCutCapture: true,\n onPasteCapture: true,\n onCompositionEndCapture: true,\n onCompositionStartCapture: true,\n onCompositionUpdateCapture: true,\n onKeyDownCapture: true,\n onKeyPressCapture: true,\n onKeyUpCapture: true,\n onFocusCapture: true,\n onBlurCapture: true,\n onChangeCapture: true,\n onInputCapture: true,\n onSubmitCapture: true,\n onClickCapture: true,\n onContextMenuCapture: true,\n onDoubleClickCapture: true,\n onDragCapture: true,\n onDragEndCapture: true,\n onDragEnterCapture: true,\n onDragExitCapture: true,\n onDragLeaveCapture: true,\n onDragOverCapture: true,\n onDragStartCapture: true,\n onDropCapture: true,\n onMouseDownCapture: true,\n onMouseEnterCapture: true,\n onMouseLeaveCapture: true,\n onMouseMoveCapture: true,\n onMouseOutCapture: true,\n onMouseOverCapture: true,\n onMouseUpCapture: true,\n onSelectCapture: true,\n onTouchCancelCapture: true,\n onTouchEndCapture: true,\n onTouchMoveCapture: true,\n onTouchStartCapture: true,\n onScrollCapture: true,\n onWheelCapture: true,\n onAbortCapture: true,\n onCanPlayCapture: true,\n onCanPlayThroughCapture: true,\n onDurationChangeCapture: true,\n onEmptiedCapture: true,\n onEncryptedCapture: true,\n onEndedCapture: true,\n onErrorCapture: true,\n onLoadedDataCapture: true,\n onLoadedMetadataCapture: true,\n onLoadStartCapture: true,\n onPauseCapture: true,\n onPlayCapture: true,\n onPlayingCapture: true,\n onProgressCapture: true,\n onRateChangeCapture: true,\n onSeekedCapture: true,\n onSeekingCapture: true,\n onStalledCapture: true,\n onSuspendCapture: true,\n onTimeUpdateCapture: true,\n onVolumeChangeCapture: true,\n onWaitingCapture: true,\n onLoadCapture: true,\n onAnimationStartCapture: true,\n onAnimationEndCapture: true,\n onAnimationIterationCapture: true,\n onTransitionEndCapture: true\n};\n\n/* From HTMLDOMPropertyConfig */\nvar htmlProps = {\n /**\n * Standard Properties\n */\n accept: true,\n acceptCharset: true,\n accessKey: true,\n action: true,\n allowFullScreen: true,\n allowTransparency: true,\n alt: true,\n // specifies target context for links with `preload` type\n as: true,\n async: true,\n autoComplete: true,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: true,\n autoPlay: true,\n capture: true,\n cellPadding: true,\n cellSpacing: true,\n charSet: true,\n challenge: true,\n checked: true,\n cite: true,\n classID: true,\n className: true,\n cols: true,\n colSpan: true,\n content: true,\n contentEditable: true,\n contextMenu: true,\n controls: true,\n coords: true,\n crossOrigin: true,\n data: true, // For `` acts as `src`.\n dateTime: true,\n default: true,\n defer: true,\n dir: true,\n disabled: true,\n download: true,\n draggable: true,\n encType: true,\n form: true,\n formAction: true,\n formEncType: true,\n formMethod: true,\n formNoValidate: true,\n formTarget: true,\n frameBorder: true,\n headers: true,\n height: true,\n hidden: true,\n high: true,\n href: true,\n hrefLang: true,\n htmlFor: true,\n httpEquiv: true,\n icon: true,\n id: true,\n inputMode: true,\n integrity: true,\n is: true,\n keyParams: true,\n keyType: true,\n kind: true,\n label: true,\n lang: true,\n list: true,\n loop: true,\n low: true,\n manifest: true,\n marginHeight: true,\n marginWidth: true,\n max: true,\n maxLength: true,\n media: true,\n mediaGroup: true,\n method: true,\n min: true,\n minLength: true,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: true,\n muted: true,\n name: true,\n nonce: true,\n noValidate: true,\n open: true,\n optimum: true,\n pattern: true,\n placeholder: true,\n playsInline: true,\n poster: true,\n preload: true,\n profile: true,\n radioGroup: true,\n readOnly: true,\n referrerPolicy: true,\n rel: true,\n required: true,\n reversed: true,\n role: true,\n rows: true,\n rowSpan: true,\n sandbox: true,\n scope: true,\n scoped: true,\n scrolling: true,\n seamless: true,\n selected: true,\n shape: true,\n size: true,\n sizes: true,\n span: true,\n spellCheck: true,\n src: true,\n srcDoc: true,\n srcLang: true,\n srcSet: true,\n start: true,\n step: true,\n style: true,\n summary: true,\n tabIndex: true,\n target: true,\n title: true,\n // Setting .type throws on non- tags\n type: true,\n useMap: true,\n value: true,\n width: true,\n wmode: true,\n wrap: true,\n\n /**\n * RDFa Properties\n */\n about: true,\n datatype: true,\n inlist: true,\n prefix: true,\n // property is also supported for OpenGraph in meta tags.\n property: true,\n resource: true,\n typeof: true,\n vocab: true,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: true,\n autoCorrect: true,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: true,\n // color is for Safari mask-icon link\n color: true,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: true,\n itemScope: true,\n itemType: true,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: true,\n itemRef: true,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: true,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: true,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n};\n\nvar svgProps = {\n accentHeight: true,\n accumulate: true,\n additive: true,\n alignmentBaseline: true,\n allowReorder: true,\n alphabetic: true,\n amplitude: true,\n arabicForm: true,\n ascent: true,\n attributeName: true,\n attributeType: true,\n autoReverse: true,\n azimuth: true,\n baseFrequency: true,\n baseProfile: true,\n baselineShift: true,\n bbox: true,\n begin: true,\n bias: true,\n by: true,\n calcMode: true,\n capHeight: true,\n clip: true,\n clipPath: true,\n clipRule: true,\n clipPathUnits: true,\n colorInterpolation: true,\n colorInterpolationFilters: true,\n colorProfile: true,\n colorRendering: true,\n contentScriptType: true,\n contentStyleType: true,\n cursor: true,\n cx: true,\n cy: true,\n d: true,\n decelerate: true,\n descent: true,\n diffuseConstant: true,\n direction: true,\n display: true,\n divisor: true,\n dominantBaseline: true,\n dur: true,\n dx: true,\n dy: true,\n edgeMode: true,\n elevation: true,\n enableBackground: true,\n end: true,\n exponent: true,\n externalResourcesRequired: true,\n fill: true,\n fillOpacity: true,\n fillRule: true,\n filter: true,\n filterRes: true,\n filterUnits: true,\n floodColor: true,\n floodOpacity: true,\n focusable: true,\n fontFamily: true,\n fontSize: true,\n fontSizeAdjust: true,\n fontStretch: true,\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n format: true,\n from: true,\n fx: true,\n fy: true,\n g1: true,\n g2: true,\n glyphName: true,\n glyphOrientationHorizontal: true,\n glyphOrientationVertical: true,\n glyphRef: true,\n gradientTransform: true,\n gradientUnits: true,\n hanging: true,\n horizAdvX: true,\n horizOriginX: true,\n ideographic: true,\n imageRendering: true,\n in: true,\n in2: true,\n intercept: true,\n k: true,\n k1: true,\n k2: true,\n k3: true,\n k4: true,\n kernelMatrix: true,\n kernelUnitLength: true,\n kerning: true,\n keyPoints: true,\n keySplines: true,\n keyTimes: true,\n lengthAdjust: true,\n letterSpacing: true,\n lightingColor: true,\n limitingConeAngle: true,\n local: true,\n markerEnd: true,\n markerMid: true,\n markerStart: true,\n markerHeight: true,\n markerUnits: true,\n markerWidth: true,\n mask: true,\n maskContentUnits: true,\n maskUnits: true,\n mathematical: true,\n mode: true,\n numOctaves: true,\n offset: true,\n opacity: true,\n operator: true,\n order: true,\n orient: true,\n orientation: true,\n origin: true,\n overflow: true,\n overlinePosition: true,\n overlineThickness: true,\n paintOrder: true,\n panose1: true,\n pathLength: true,\n patternContentUnits: true,\n patternTransform: true,\n patternUnits: true,\n pointerEvents: true,\n points: true,\n pointsAtX: true,\n pointsAtY: true,\n pointsAtZ: true,\n preserveAlpha: true,\n preserveAspectRatio: true,\n primitiveUnits: true,\n r: true,\n radius: true,\n refX: true,\n refY: true,\n renderingIntent: true,\n repeatCount: true,\n repeatDur: true,\n requiredExtensions: true,\n requiredFeatures: true,\n restart: true,\n result: true,\n rotate: true,\n rx: true,\n ry: true,\n scale: true,\n seed: true,\n shapeRendering: true,\n slope: true,\n spacing: true,\n specularConstant: true,\n specularExponent: true,\n speed: true,\n spreadMethod: true,\n startOffset: true,\n stdDeviation: true,\n stemh: true,\n stemv: true,\n stitchTiles: true,\n stopColor: true,\n stopOpacity: true,\n strikethroughPosition: true,\n strikethroughThickness: true,\n string: true,\n stroke: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeLinecap: true,\n strokeLinejoin: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n surfaceScale: true,\n systemLanguage: true,\n tableValues: true,\n targetX: true,\n targetY: true,\n textAnchor: true,\n textDecoration: true,\n textRendering: true,\n textLength: true,\n to: true,\n transform: true,\n u1: true,\n u2: true,\n underlinePosition: true,\n underlineThickness: true,\n unicode: true,\n unicodeBidi: true,\n unicodeRange: true,\n unitsPerEm: true,\n vAlphabetic: true,\n vHanging: true,\n vIdeographic: true,\n vMathematical: true,\n values: true,\n vectorEffect: true,\n version: true,\n vertAdvY: true,\n vertOriginX: true,\n vertOriginY: true,\n viewBox: true,\n viewTarget: true,\n visibility: true,\n widths: true,\n wordSpacing: true,\n writingMode: true,\n x: true,\n xHeight: true,\n x1: true,\n x2: true,\n xChannelSelector: true,\n xlinkActuate: true,\n xlinkArcrole: true,\n xlinkHref: true,\n xlinkRole: true,\n xlinkShow: true,\n xlinkTitle: true,\n xlinkType: true,\n xmlBase: true,\n xmlns: true,\n xmlnsXlink: true,\n xmlLang: true,\n xmlSpace: true,\n y: true,\n y1: true,\n y2: true,\n yChannelSelector: true,\n z: true,\n zoomAndPan: true\n};\n\n/* From DOMProperty */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nvar isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\n\nvar hasOwnProperty = {}.hasOwnProperty;\nvar validAttr = (function (name) {\n return hasOwnProperty.call(htmlProps, name) || hasOwnProperty.call(svgProps, name) || isCustomAttribute(name.toLowerCase()) || hasOwnProperty.call(reactProps, name);\n});\n\n// \n\n\nfunction isTag(target) /* : %checks */{\n return typeof target === 'string';\n}\n\n// \n\n\nfunction isStyledComponent(target) /* : %checks */{\n return typeof target === 'function' && typeof target.styledComponentId === 'string';\n}\n\n// \n\n/* eslint-disable no-undef */\nfunction getComponentName(target) {\n return target.displayName || target.name || 'Component';\n}\n\n// \n/**\n * Creates a broadcast that can be listened to, i.e. simple event emitter\n *\n * @see https://github.com/ReactTraining/react-broadcast\n */\n\nvar createBroadcast = function createBroadcast(initialValue) {\n var listeners = [];\n var currentValue = initialValue;\n\n return {\n publish: function publish(value) {\n currentValue = value;\n listeners.forEach(function (listener) {\n return listener(currentValue);\n });\n },\n subscribe: function subscribe(listener) {\n listeners.push(listener);\n\n // Publish to this subscriber once immediately.\n listener(currentValue);\n\n return function () {\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n };\n};\n\nvar _ThemeProvider$childC;\nvar _ThemeProvider$contex;\n\n// \n/* globals React$Element */\n// NOTE: DO NOT CHANGE, changing this is a semver major change!\nvar CHANNEL = '__styled-components__';\n\n/**\n * Provide a theme to an entire react component tree via context and event listeners (have to do\n * both context and event emitter as pure components block context updates)\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n\n function ThemeProvider() {\n classCallCheck(this, ThemeProvider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this));\n\n _this.getTheme = _this.getTheme.bind(_this);\n return _this;\n }\n\n ThemeProvider.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // If there is a ThemeProvider wrapper anywhere around this theme provider, merge this theme\n // with the outer theme\n if (this.context[CHANNEL]) {\n var subscribe = this.context[CHANNEL];\n this.unsubscribeToOuter = subscribe(function (theme) {\n _this2.outerTheme = theme;\n });\n }\n this.broadcast = createBroadcast(this.getTheme());\n };\n\n ThemeProvider.prototype.getChildContext = function getChildContext() {\n var _babelHelpers$extends;\n\n return _extends({}, this.context, (_babelHelpers$extends = {}, _babelHelpers$extends[CHANNEL] = this.broadcast.subscribe, _babelHelpers$extends));\n };\n\n ThemeProvider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.theme !== nextProps.theme) this.broadcast.publish(this.getTheme(nextProps.theme));\n };\n\n ThemeProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[CHANNEL]) {\n this.unsubscribeToOuter();\n }\n };\n\n // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n\n\n ThemeProvider.prototype.getTheme = function getTheme(passedTheme) {\n var theme = passedTheme || this.props.theme;\n if (isFunction(theme)) {\n var mergedTheme = theme(this.outerTheme);\n if (!isPlainObject(mergedTheme)) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n return mergedTheme;\n }\n if (!isPlainObject(theme)) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n return _extends({}, this.outerTheme, theme);\n };\n\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) {\n return null;\n }\n return React.Children.only(this.props.children);\n };\n\n return ThemeProvider;\n}(Component);\n\nThemeProvider.childContextTypes = (_ThemeProvider$childC = {}, _ThemeProvider$childC[CHANNEL] = PropTypes.func.isRequired, _ThemeProvider$childC);\nThemeProvider.contextTypes = (_ThemeProvider$contex = {}, _ThemeProvider$contex[CHANNEL] = PropTypes.func, _ThemeProvider$contex);\n\nvar _AbstractStyledCompon;\n\n// \nvar AbstractStyledComponent = function (_Component) {\n inherits(AbstractStyledComponent, _Component);\n\n function AbstractStyledComponent() {\n classCallCheck(this, AbstractStyledComponent);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n return AbstractStyledComponent;\n}(Component);\n\nAbstractStyledComponent.contextTypes = (_AbstractStyledCompon = {}, _AbstractStyledCompon[CHANNEL] = PropTypes.func, _AbstractStyledCompon[CONTEXT_KEY] = PropTypes.instanceOf(StyleSheet), _AbstractStyledCompon);\n\n// \n\nvar escapeRegex = /[[\\].#*$><+~=|^:(),\"'`]/g;\nvar multiDashRegex = /--+/g;\n\nvar _StyledComponent = (function (ComponentStyle, constructWithOptions) {\n /* We depend on components having unique IDs */\n var identifiers = {};\n var generateId = function generateId(_displayName, parentComponentId) {\n var displayName = typeof _displayName !== 'string' ? 'sc' : _displayName.replace(escapeRegex, '-') // Replace all possible CSS selectors\n .replace(multiDashRegex, '-'); // Replace multiple -- with single -\n\n var nr = (identifiers[displayName] || 0) + 1;\n identifiers[displayName] = nr;\n\n var hash = ComponentStyle.generateName(displayName + nr);\n var componentId = displayName + '-' + hash;\n return parentComponentId !== undefined ? parentComponentId + '-' + componentId : componentId;\n };\n\n var BaseStyledComponent = function (_AbstractStyledCompon) {\n inherits(BaseStyledComponent, _AbstractStyledCompon);\n\n function BaseStyledComponent() {\n var _temp, _this, _ret;\n\n classCallCheck(this, BaseStyledComponent);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _AbstractStyledCompon.call.apply(_AbstractStyledCompon, [this].concat(args))), _this), _this.attrs = {}, _this.state = {\n theme: null,\n generatedClassName: ''\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n BaseStyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props) {\n var attrs = this.constructor.attrs;\n\n var context = _extends({}, props, { theme: theme });\n if (attrs === undefined) {\n return context;\n }\n\n this.attrs = Object.keys(attrs).reduce(function (acc, key) {\n var attr = attrs[key];\n // eslint-disable-next-line no-param-reassign\n acc[key] = typeof attr === 'function' ? attr(context) : attr;\n return acc;\n }, {});\n\n return _extends({}, context, this.attrs);\n };\n\n BaseStyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var _constructor = this.constructor,\n componentStyle = _constructor.componentStyle,\n warnTooManyClasses = _constructor.warnTooManyClasses;\n\n var executionContext = this.buildExecutionContext(theme, props);\n var styleSheet = this.context[CONTEXT_KEY] || StyleSheet.instance;\n var className = componentStyle.generateAndInjectStyles(executionContext, styleSheet);\n\n if (warnTooManyClasses !== undefined) warnTooManyClasses(className);\n\n return className;\n };\n\n BaseStyledComponent.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // If there is a theme in the context, subscribe to the event emitter. This\n // is necessary due to pure components blocking context updates, this circumvents\n // that by updating when an event is emitted\n if (this.context[CHANNEL]) {\n var subscribe = this.context[CHANNEL];\n this.unsubscribe = subscribe(function (nextTheme) {\n // This will be called once immediately\n\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n var defaultProps = _this2.constructor.defaultProps;\n\n var isDefaultTheme = defaultProps && _this2.props.theme === defaultProps.theme;\n var theme = _this2.props.theme && !isDefaultTheme ? _this2.props.theme : nextTheme;\n var generatedClassName = _this2.generateAndInjectStyles(theme, _this2.props);\n _this2.setState({ theme: theme, generatedClassName: generatedClassName });\n });\n } else {\n var theme = this.props.theme || {};\n var generatedClassName = this.generateAndInjectStyles(theme, this.props);\n this.setState({ theme: theme, generatedClassName: generatedClassName });\n }\n };\n\n BaseStyledComponent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n this.setState(function (oldState) {\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n var defaultProps = _this3.constructor.defaultProps;\n\n var isDefaultTheme = defaultProps && nextProps.theme === defaultProps.theme;\n var theme = nextProps.theme && !isDefaultTheme ? nextProps.theme : oldState.theme;\n var generatedClassName = _this3.generateAndInjectStyles(theme, nextProps);\n\n return { theme: theme, generatedClassName: generatedClassName };\n });\n };\n\n BaseStyledComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n };\n\n BaseStyledComponent.prototype.render = function render() {\n var _this4 = this;\n\n var innerRef = this.props.innerRef;\n var generatedClassName = this.state.generatedClassName;\n var _constructor2 = this.constructor,\n styledComponentId = _constructor2.styledComponentId,\n target = _constructor2.target;\n\n\n var isTargetTag = isTag(target);\n\n var className = [this.props.className, styledComponentId, this.attrs.className, generatedClassName].filter(Boolean).join(' ');\n\n var baseProps = _extends({}, this.attrs, {\n className: className\n });\n\n if (isStyledComponent(target)) {\n baseProps.innerRef = innerRef;\n } else {\n baseProps.ref = innerRef;\n }\n\n var propsForElement = Object.keys(this.props).reduce(function (acc, propName) {\n // Don't pass through non HTML tags through to HTML elements\n // always omit innerRef\n if (propName !== 'innerRef' && propName !== 'className' && (!isTargetTag || validAttr(propName))) {\n // eslint-disable-next-line no-param-reassign\n acc[propName] = _this4.props[propName];\n }\n\n return acc;\n }, baseProps);\n\n return createElement(target, propsForElement);\n };\n\n return BaseStyledComponent;\n }(AbstractStyledComponent);\n\n var createStyledComponent = function createStyledComponent(target, options, rules) {\n var _StyledComponent$cont;\n\n var _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')' : _options$displayName,\n _options$componentId = options.componentId,\n componentId = _options$componentId === undefined ? generateId(options.displayName, options.parentComponentId) : _options$componentId,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? BaseStyledComponent : _options$ParentCompon,\n extendingRules = options.rules,\n attrs = options.attrs;\n\n\n var styledComponentId = options.displayName && options.componentId ? options.displayName + '-' + options.componentId : componentId;\n\n var warnTooManyClasses = void 0;\n if (typeof process !== 'undefined' && \"development\" !== 'production') {\n warnTooManyClasses = createWarnTooManyClasses(displayName);\n }\n\n var componentStyle = new ComponentStyle(extendingRules === undefined ? rules : extendingRules.concat(rules), styledComponentId);\n\n var StyledComponent = function (_ParentComponent) {\n inherits(StyledComponent, _ParentComponent);\n\n function StyledComponent() {\n classCallCheck(this, StyledComponent);\n return possibleConstructorReturn(this, _ParentComponent.apply(this, arguments));\n }\n\n StyledComponent.withComponent = function withComponent(tag) {\n var previousComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['componentId']);\n\n\n var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : getComponentName(tag));\n\n var newOptions = _extends({}, optionsToCopy, {\n componentId: newComponentId,\n ParentComponent: StyledComponent\n });\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n createClass(StyledComponent, null, [{\n key: 'extend',\n get: function get$$1() {\n var rulesFromOptions = options.rules,\n parentComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['rules', 'componentId']);\n\n\n var newRules = rulesFromOptions === undefined ? rules : rulesFromOptions.concat(rules);\n\n var newOptions = _extends({}, optionsToCopy, {\n rules: newRules,\n parentComponentId: parentComponentId,\n ParentComponent: StyledComponent\n });\n\n return constructWithOptions(createStyledComponent, target, newOptions);\n }\n }]);\n return StyledComponent;\n }(ParentComponent);\n\n StyledComponent.contextTypes = (_StyledComponent$cont = {}, _StyledComponent$cont[CHANNEL] = PropTypes.func, _StyledComponent$cont[CONTEXT_KEY] = PropTypes.instanceOf(StyleSheet), _StyledComponent$cont);\n StyledComponent.displayName = displayName;\n StyledComponent.styledComponentId = styledComponentId;\n StyledComponent.attrs = attrs;\n StyledComponent.componentStyle = componentStyle;\n StyledComponent.warnTooManyClasses = warnTooManyClasses;\n StyledComponent.target = target;\n\n\n return StyledComponent;\n };\n\n return createStyledComponent;\n});\n\n// murmurhash2 via https://gist.github.com/raycmorgan/588423\n\nfunction doHash(str, seed) {\n var m = 0x5bd1e995;\n var r = 24;\n var h = seed ^ str.length;\n var length = str.length;\n var currentIndex = 0;\n\n while (length >= 4) {\n var k = UInt32(str, currentIndex);\n\n k = Umul32(k, m);\n k ^= k >>> r;\n k = Umul32(k, m);\n\n h = Umul32(h, m);\n h ^= k;\n\n currentIndex += 4;\n length -= 4;\n }\n\n switch (length) {\n case 3:\n h ^= UInt16(str, currentIndex);\n h ^= str.charCodeAt(currentIndex + 2) << 16;\n h = Umul32(h, m);\n break;\n\n case 2:\n h ^= UInt16(str, currentIndex);\n h = Umul32(h, m);\n break;\n\n case 1:\n h ^= str.charCodeAt(currentIndex);\n h = Umul32(h, m);\n break;\n }\n\n h ^= h >>> 13;\n h = Umul32(h, m);\n h ^= h >>> 15;\n\n return h >>> 0;\n}\n\nfunction UInt32(str, pos) {\n return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8) + (str.charCodeAt(pos++) << 16) + (str.charCodeAt(pos) << 24);\n}\n\nfunction UInt16(str, pos) {\n return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8);\n}\n\nfunction Umul32(n, m) {\n n = n | 0;\n m = m | 0;\n var nlo = n & 0xffff;\n var nhi = n >>> 16;\n var res = nlo * m + ((nhi * m & 0xffff) << 16) | 0;\n return res;\n}\n\n// \n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\nvar _ComponentStyle = (function (nameGenerator, flatten, stringifyRules) {\n var ComponentStyle = function () {\n function ComponentStyle(rules, componentId) {\n classCallCheck(this, ComponentStyle);\n\n this.rules = rules;\n this.componentId = componentId;\n if (!StyleSheet.instance.hasInjectedComponent(this.componentId)) {\n var placeholder = '.' + componentId + ' {}';\n StyleSheet.instance.deferredInject(componentId, true, placeholder);\n }\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n\n\n ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {\n var flatCSS = flatten(this.rules, executionContext);\n var hash = doHash(this.componentId + flatCSS.join(''));\n\n var existingName = styleSheet.getName(hash);\n if (existingName) return existingName;\n\n var name = nameGenerator(hash);\n if (styleSheet.alreadyInjected(hash, name)) return name;\n\n var css = '\\n' + stringifyRules(flatCSS, '.' + name);\n styleSheet.inject(this.componentId, true, css, hash, name);\n return name;\n };\n\n ComponentStyle.generateName = function generateName(str) {\n return nameGenerator(doHash(str));\n };\n\n return ComponentStyle;\n }();\n\n return ComponentStyle;\n});\n\n// \n// Thanks to ReactDOMFactories for this handy list!\n\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// \n\nvar _styled = (function (styledComponent, constructWithOptions) {\n var styled = function styled(tag) {\n return constructWithOptions(styledComponent, tag);\n };\n\n // Shorthands for all valid HTML Elements\n domElements.forEach(function (domElement) {\n styled[domElement] = styled(domElement);\n });\n\n return styled;\n});\n\n// \nvar replaceWhitespace = function replaceWhitespace(str) {\n return str.replace(/\\s|\\\\n/g, '');\n};\n\nvar _keyframes = (function (nameGenerator, stringifyRules, css) {\n return function (strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var hash = doHash(replaceWhitespace(JSON.stringify(rules)));\n\n var existingName = StyleSheet.instance.getName(hash);\n if (existingName) return existingName;\n\n var name = nameGenerator(hash);\n if (StyleSheet.instance.alreadyInjected(hash, name)) return name;\n\n var generatedCSS = stringifyRules(rules, name, '@keyframes');\n StyleSheet.instance.inject('sc-keyframes-' + name, true, generatedCSS, hash, name);\n return name;\n };\n});\n\n// \nvar _injectGlobal = (function (stringifyRules, css) {\n var injectGlobal = function injectGlobal(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var hash = doHash(JSON.stringify(rules));\n\n var componentId = 'sc-global-' + hash;\n if (StyleSheet.instance.hasInjectedComponent(componentId)) return;\n\n StyleSheet.instance.inject(componentId, false, stringifyRules(rules));\n };\n\n return injectGlobal;\n});\n\n// \n\n\nvar _constructWithOptions = (function (css) {\n var constructWithOptions = function constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof tag !== 'string' && typeof tag !== 'function') {\n // $FlowInvalidInputTest\n throw new Error('Cannot create styled-component for component: ' + tag);\n }\n\n /* This is callable directly as a template function */\n var templateFunction = function templateFunction(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n return componentConstructor(tag, options, css.apply(undefined, [strings].concat(interpolations)));\n };\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: _extends({}, options.attrs || {}, attrs) }));\n };\n\n return templateFunction;\n };\n\n return constructWithOptions;\n});\n\n// \n/* globals ReactClass */\n\nvar wrapWithTheme = function wrapWithTheme(Component$$1) {\n var _WithTheme$contextTyp;\n\n var componentName = Component$$1.displayName || Component$$1.name || 'Component';\n\n var isStyledComponent$$1 = isStyledComponent(Component$$1);\n\n var WithTheme = function (_React$Component) {\n inherits(WithTheme, _React$Component);\n\n function WithTheme() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithTheme);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {}, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping\n\n\n WithTheme.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n if (!this.context[CHANNEL]) {\n throw new Error('[withTheme] Please use ThemeProvider to be able to use withTheme');\n }\n\n var subscribe = this.context[CHANNEL];\n this.unsubscribe = subscribe(function (theme) {\n _this2.setState({ theme: theme });\n });\n };\n\n WithTheme.prototype.componentWillUnmount = function componentWillUnmount() {\n if (typeof this.unsubscribe === 'function') this.unsubscribe();\n };\n\n WithTheme.prototype.render = function render() {\n // eslint-disable-next-line react/prop-types\n var innerRef = this.props.innerRef;\n var theme = this.state.theme;\n\n\n return React.createElement(Component$$1, _extends({\n theme: theme\n }, this.props, {\n innerRef: isStyledComponent$$1 ? innerRef : undefined,\n ref: isStyledComponent$$1 ? undefined : innerRef\n }));\n };\n\n return WithTheme;\n }(React.Component);\n\n WithTheme.displayName = 'WithTheme(' + componentName + ')';\n WithTheme.styledComponentId = 'withTheme';\n WithTheme.contextTypes = (_WithTheme$contextTyp = {}, _WithTheme$contextTyp[CHANNEL] = PropTypes.func, _WithTheme$contextTyp);\n\n\n return hoistStatics(WithTheme, Component$$1);\n};\n\n// \n\n/* Import singletons */\n/* Import singleton constructors */\n/* Import components */\n/* Import Higher Order Components */\n/* Instantiate singletons */\nvar ComponentStyle = _ComponentStyle(generateAlphabeticName, flatten, stringifyRules);\nvar constructWithOptions = _constructWithOptions(css);\nvar StyledComponent = _StyledComponent(ComponentStyle, constructWithOptions);\n\n/* Instantiate exported singletons */\nvar keyframes = _keyframes(generateAlphabeticName, stringifyRules, css);\nvar injectGlobal = _injectGlobal(stringifyRules, css);\nvar styled = _styled(StyledComponent, constructWithOptions);\n\nexport { css, keyframes, injectGlobal, ThemeProvider, wrapWithTheme as withTheme, ServerStyleSheet, StyleSheetManager };export default styled;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/styled-components/dist/styled-components.es.js\n// module id = ../node_modules/styled-components/dist/styled-components.es.js\n// module chunks = 0","/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory(null)) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory(null)) :\n\t\t\t(window['stylis'] = factory(null))\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The [''] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([^]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /* */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 169 /* i */\n\tvar CHARSET = 163 /* c */\n\tvar DOCUMENT = 100 /* d */\n\tvar PAGE = 112 /* p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array} parent\n\t * @param {Array} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(++length)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first + second) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase IMPORT:\n\t\t\t\t\t\t\t\tcase CHARSET: {\n\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON)\n\t\t\t\t\t\t\t\t\t\tbreak\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::paceholder, l\n\t\t\t\t\t\t// :read-ony, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR) {\n\t\t\t\t\t\t\t\t\t\t// /* ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-size-adjust, -\n\t\t\t\treturn out.charCodeAt(9) === DASH ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\treturn out.charCodeAt(8) === DASH ? webkit + out + out : out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// width: min-content / width: max-content\n\t\t\tcase 953: {\n\t\t\t\tif ((index = out.indexOf('-content', 9)) > 0) {\n\t\t\t\t\t// width: min-content / width: max-content\n\t\t\t\t\tif (out.charCodeAt(index - 3) === 109 && out.charCodeAt(index - 4) !== 45) {\n\t\t\t\t\t\tcache = out.substring(index - 3)\n\t\t\t\t\t\treturn 'width:' + webkit + cache + 'width:' + moz + cache + 'width:' + cache\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\tvar i = 0\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array} selectors\n\t * @param {Array} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch (out) {\n\t\t\tcase void 0:\n\t\t\tcase false:\n\t\t\tcase true:\n\t\t\tcase null:\n\t\t\tcase content: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn out\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tswitch (plugin.constructor) {\n\t\t\t\t\tcase Array: {\n\t\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase Function: {\n\t\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase Boolean: {\n\t\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/stylis/stylis.js\n// module id = ../node_modules/stylis/stylis.js\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a ';\n };\n};\n\n/* takes a css factory function and outputs an element factory */\nvar wrapAsElement = function wrapAsElement(css, names) {\n return function () {\n var _props;\n\n var props = (_props = {}, _props[SC_ATTR] = stringifyNames(names), _props[SC_VERSION_ATTR] = \"4.1.3\", _props);\n\n var nonce = getNonce();\n if (nonce) {\n // $FlowFixMe\n props.nonce = nonce;\n }\n\n // eslint-disable-next-line react/no-danger\n return React.createElement('style', _extends({}, props, { dangerouslySetInnerHTML: { __html: css() } }));\n };\n};\n\nvar getIdsFromMarkersFactory = function getIdsFromMarkersFactory(markers) {\n return function () {\n return Object.keys(markers);\n };\n};\n\n/* speedy tags utilise insertRule */\nvar makeSpeedyTag = function makeSpeedyTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n var sizes = [];\n\n var extractImport = getImportRuleTag !== undefined;\n /* indicates whether getImportRuleTag was called */\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = sizes.length;\n sizes.push(0);\n resetIdNames(names, id);\n\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var sheet = sheetForTag(el);\n var insertIndex = addUpUntilIndex(sizes, marker);\n\n var injectedRules = 0;\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var cssRule = cssRules[i];\n var mayHaveImport = extractImport; /* @import rules are reordered to appear first */\n if (mayHaveImport && cssRule.indexOf('@import') !== -1) {\n importRules.push(cssRule);\n } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) {\n mayHaveImport = false;\n injectedRules += 1;\n }\n }\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n\n sizes[marker] += injectedRules; /* add up no of injected rules */\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n\n var size = sizes[marker];\n var sheet = sheetForTag(el);\n var removalIndex = addUpUntilIndex(sizes, marker) - 1;\n deleteRules(sheet, removalIndex, size);\n sizes[marker] = 0;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var _sheetForTag = sheetForTag(el),\n cssRules = _sheetForTag.cssRules;\n\n var str = '';\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += makeTextMarker(id);\n var marker = markers[id];\n var end = addUpUntilIndex(sizes, marker);\n var size = sizes[marker];\n for (var i = end - size; i < end; i += 1) {\n var rule = cssRules[i];\n if (rule !== undefined) {\n str += rule.cssText;\n }\n }\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeTextNode = function makeTextNode(id) {\n return document.createTextNode(makeTextMarker(id));\n};\n\nvar makeBrowserTag = function makeBrowserTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n\n var extractImport = getImportRuleTag !== undefined;\n\n /* indicates whether getImportRuleTag was called */\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = makeTextNode(id);\n el.appendChild(markers[id]);\n names[id] = Object.create(null);\n\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var rule = cssRules[i];\n var mayHaveImport = extractImport;\n if (mayHaveImport && rule.indexOf('@import') !== -1) {\n importRules.push(rule);\n } else {\n mayHaveImport = false;\n var separator = i === cssRulesSize - 1 ? '' : ' ';\n marker.appendData('' + rule + separator);\n }\n }\n\n addNameForId(names, id, name);\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n\n /* create new empty text node and replace the current one */\n var newMarker = makeTextNode(id);\n el.replaceChild(newMarker, marker);\n markers[id] = newMarker;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var str = '';\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += markers[id].data;\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeServerTag = function makeServerTag(namesArg, markersArg) {\n var names = namesArg === undefined ? Object.create(null) : namesArg;\n var markers = markersArg === undefined ? Object.create(null) : markersArg;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n return markers[id] = [''];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n marker[0] += cssRules.join(' ');\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n marker[0] = '';\n resetIdNames(names, id);\n };\n\n var css = function css() {\n var str = '';\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n var cssForId = markers[id][0];\n if (cssForId) {\n str += makeTextMarker(id) + cssForId;\n }\n }\n return str;\n };\n\n var clone = function clone() {\n var namesClone = cloneNames(names);\n var markersClone = Object.create(null);\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n markersClone[id] = [markers[id][0]];\n }\n\n return makeServerTag(namesClone, markersClone);\n };\n\n var tag = {\n clone: clone,\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: null,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n\n return tag;\n};\n\nvar makeTag = function makeTag(target, tagEl, forceServer, insertBefore, getImportRuleTag) {\n if (IS_BROWSER && !forceServer) {\n var el = makeStyleTag(target, tagEl, insertBefore);\n\n if (DISABLE_SPEEDY) {\n return makeBrowserTag(el, getImportRuleTag);\n } else {\n return makeSpeedyTag(el, getImportRuleTag);\n }\n }\n\n return makeServerTag();\n};\n\nvar rehydrate = function rehydrate(tag, els, extracted) {\n /* add all extracted components to the new tag */\n for (var i = 0, len = extracted.length; i < len; i += 1) {\n var _extracted$i = extracted[i],\n componentId = _extracted$i.componentId,\n cssFromDOM = _extracted$i.cssFromDOM;\n\n var cssRules = splitByRules(cssFromDOM);\n tag.insertRules(componentId, cssRules);\n }\n\n /* remove old HTMLStyleElements, since they have been rehydrated */\n for (var _i = 0, _len = els.length; _i < _len; _i += 1) {\n var el = els[_i];\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n};\n\n// \n\nvar SPLIT_REGEX = /\\s+/;\n\n/* determine the maximum number of components before tags are sharded */\nvar MAX_SIZE = void 0;\nif (IS_BROWSER) {\n /* in speedy mode we can keep a lot more rules in a sheet before a slowdown can be expected */\n MAX_SIZE = DISABLE_SPEEDY ? 40 : 1000;\n} else {\n /* for servers we do not need to shard at all */\n MAX_SIZE = -1;\n}\n\nvar sheetRunningId = 0;\nvar master = void 0;\n\nvar StyleSheet = function () {\n\n /* a map from ids to tags */\n\n /* deferred rules for a given id */\n\n /* this is used for not reinjecting rules via hasNameForId() */\n\n /* when rules for an id are removed using remove() we have to ignore rehydratedNames for it */\n\n /* a list of tags belonging to this StyleSheet */\n\n /* a tag for import rules */\n\n /* current capacity until a new tag must be created */\n\n /* children (aka clones) of this StyleSheet inheriting all and future injections */\n\n function StyleSheet() {\n var _this = this;\n\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IS_BROWSER ? document.head : null;\n var forceServer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n classCallCheck(this, StyleSheet);\n\n this.getImportRuleTag = function () {\n var importRuleTag = _this.importRuleTag;\n\n if (importRuleTag !== undefined) {\n return importRuleTag;\n }\n\n var firstTag = _this.tags[0];\n var insertBefore = true;\n\n return _this.importRuleTag = makeTag(_this.target, firstTag ? firstTag.styleTag : null, _this.forceServer, insertBefore);\n };\n\n sheetRunningId += 1;\n this.id = sheetRunningId;\n this.forceServer = forceServer;\n this.target = forceServer ? null : target;\n this.tagMap = {};\n this.deferred = {};\n this.rehydratedNames = {};\n this.ignoreRehydratedNames = {};\n this.tags = [];\n this.capacity = 1;\n this.clones = [];\n }\n\n /* rehydrate all SSR'd style tags */\n\n\n StyleSheet.prototype.rehydrate = function rehydrate$$1() {\n if (!IS_BROWSER || this.forceServer) return this;\n\n var els = [];\n var extracted = [];\n var isStreamed = false;\n\n /* retrieve all of our SSR style elements from the DOM */\n var nodes = document.querySelectorAll('style[' + SC_ATTR + '][' + SC_VERSION_ATTR + '=\"' + \"4.1.3\" + '\"]');\n\n var nodesSize = nodes.length;\n\n /* abort rehydration if no previous style tags were found */\n if (!nodesSize) return this;\n\n for (var i = 0; i < nodesSize; i += 1) {\n var el = nodes[i];\n\n /* check if style tag is a streamed tag */\n if (!isStreamed) isStreamed = !!el.getAttribute(SC_STREAM_ATTR);\n\n /* retrieve all component names */\n var elNames = (el.getAttribute(SC_ATTR) || '').trim().split(SPLIT_REGEX);\n var elNamesSize = elNames.length;\n for (var j = 0, name; j < elNamesSize; j += 1) {\n name = elNames[j];\n /* add rehydrated name to sheet to avoid re-adding styles */\n this.rehydratedNames[name] = true;\n }\n\n /* extract all components and their CSS */\n extracted.push.apply(extracted, extractComps(el.textContent));\n\n /* store original HTMLStyleElement */\n els.push(el);\n }\n\n /* abort rehydration if nothing was extracted */\n var extractedSize = extracted.length;\n if (!extractedSize) return this;\n\n /* create a tag to be used for rehydration */\n var tag = this.makeTag(null);\n\n rehydrate(tag, els, extracted);\n\n /* reset capacity and adjust MAX_SIZE by the initial size of the rehydration */\n this.capacity = Math.max(1, MAX_SIZE - extractedSize);\n this.tags.push(tag);\n\n /* retrieve all component ids */\n for (var _j = 0; _j < extractedSize; _j += 1) {\n this.tagMap[extracted[_j].componentId] = tag;\n }\n\n return this;\n };\n\n /* retrieve a \"master\" instance of StyleSheet which is typically used when no other is available\n * The master StyleSheet is targeted by createGlobalStyle, keyframes, and components outside of any\n * StyleSheetManager's context */\n\n\n /* reset the internal \"master\" instance */\n StyleSheet.reset = function reset() {\n var forceServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n master = new StyleSheet(undefined, forceServer).rehydrate();\n };\n\n /* adds \"children\" to the StyleSheet that inherit all of the parents' rules\n * while their own rules do not affect the parent */\n\n\n StyleSheet.prototype.clone = function clone() {\n var sheet = new StyleSheet(this.target, this.forceServer);\n\n /* add to clone array */\n this.clones.push(sheet);\n\n /* clone all tags */\n sheet.tags = this.tags.map(function (tag) {\n var ids = tag.getIds();\n var newTag = tag.clone();\n\n /* reconstruct tagMap */\n for (var i = 0; i < ids.length; i += 1) {\n sheet.tagMap[ids[i]] = newTag;\n }\n\n return newTag;\n });\n\n /* clone other maps */\n sheet.rehydratedNames = _extends({}, this.rehydratedNames);\n sheet.deferred = _extends({}, this.deferred);\n\n return sheet;\n };\n\n /* force StyleSheet to create a new tag on the next injection */\n\n\n StyleSheet.prototype.sealAllTags = function sealAllTags() {\n this.capacity = 1;\n\n this.tags.forEach(function (tag) {\n // eslint-disable-next-line no-param-reassign\n tag.sealed = true;\n });\n };\n\n StyleSheet.prototype.makeTag = function makeTag$$1(tag) {\n var lastEl = tag ? tag.styleTag : null;\n var insertBefore = false;\n\n return makeTag(this.target, lastEl, this.forceServer, insertBefore, this.getImportRuleTag);\n };\n\n /* get a tag for a given componentId, assign the componentId to one, or shard */\n StyleSheet.prototype.getTagForId = function getTagForId(id) {\n /* simply return a tag, when the componentId was already assigned one */\n var prev = this.tagMap[id];\n if (prev !== undefined && !prev.sealed) {\n return prev;\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n /* shard (create a new tag) if the tag is exhausted (See MAX_SIZE) */\n this.capacity -= 1;\n\n if (this.capacity === 0) {\n this.capacity = MAX_SIZE;\n tag = this.makeTag(tag);\n this.tags.push(tag);\n }\n\n return this.tagMap[id] = tag;\n };\n\n /* mainly for createGlobalStyle to check for its id */\n\n\n StyleSheet.prototype.hasId = function hasId(id) {\n return this.tagMap[id] !== undefined;\n };\n\n /* caching layer checking id+name to already have a corresponding tag and injected rules */\n\n\n StyleSheet.prototype.hasNameForId = function hasNameForId(id, name) {\n /* exception for rehydrated names which are checked separately */\n if (this.ignoreRehydratedNames[id] === undefined && this.rehydratedNames[name]) {\n return true;\n }\n\n var tag = this.tagMap[id];\n return tag !== undefined && tag.hasNameForId(id, name);\n };\n\n /* registers a componentId and registers it on its tag */\n\n\n StyleSheet.prototype.deferredInject = function deferredInject(id, cssRules) {\n /* don't inject when the id is already registered */\n if (this.tagMap[id] !== undefined) return;\n\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].deferredInject(id, cssRules);\n }\n\n this.getTagForId(id).insertMarker(id);\n this.deferred[id] = cssRules;\n };\n\n /* injects rules for a given id with a name that will need to be cached */\n\n\n StyleSheet.prototype.inject = function inject(id, cssRules, name) {\n var clones = this.clones;\n\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].inject(id, cssRules, name);\n }\n\n var tag = this.getTagForId(id);\n\n /* add deferred rules for component */\n if (this.deferred[id] !== undefined) {\n // Combine passed cssRules with previously deferred CSS rules\n // NOTE: We cannot mutate the deferred array itself as all clones\n // do the same (see clones[i].inject)\n var rules = this.deferred[id].concat(cssRules);\n tag.insertRules(id, rules, name);\n\n this.deferred[id] = undefined;\n } else {\n tag.insertRules(id, cssRules, name);\n }\n };\n\n /* removes all rules for a given id, which doesn't remove its marker but resets it */\n\n\n StyleSheet.prototype.remove = function remove(id) {\n var tag = this.tagMap[id];\n if (tag === undefined) return;\n\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].remove(id);\n }\n\n /* remove all rules from the tag */\n tag.removeRules(id);\n\n /* ignore possible rehydrated names */\n this.ignoreRehydratedNames[id] = true;\n\n /* delete possible deferred rules */\n this.deferred[id] = undefined;\n };\n\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n\n StyleSheet.prototype.toReactElements = function toReactElements() {\n var id = this.id;\n\n\n return this.tags.map(function (tag, i) {\n var key = 'sc-' + id + '-' + i;\n return cloneElement(tag.toElement(), { key: key });\n });\n };\n\n createClass(StyleSheet, null, [{\n key: 'master',\n get: function get$$1() {\n return master || (master = new StyleSheet().rehydrate());\n }\n\n /* NOTE: This is just for backwards-compatibility with jest-styled-components */\n\n }, {\n key: 'instance',\n get: function get$$1() {\n return StyleSheet.master;\n }\n }]);\n return StyleSheet;\n}();\n\n// \n\nvar Keyframes = function () {\n function Keyframes(name, rules) {\n var _this = this;\n\n classCallCheck(this, Keyframes);\n\n this.inject = function (styleSheet) {\n if (!styleSheet.hasNameForId(_this.id, _this.name)) {\n styleSheet.inject(_this.id, _this.rules, _this.name);\n }\n };\n\n this.toString = function () {\n throw new StyledComponentsError(12, String(_this.name));\n };\n\n this.name = name;\n this.rules = rules;\n\n this.id = 'sc-keyframes-' + name;\n }\n\n Keyframes.prototype.getName = function getName() {\n return this.name;\n };\n\n return Keyframes;\n}();\n\n// \n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return string.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\n// \n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nfunction addUnitIfNeeded(name, value) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless)) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return String(value).trim();\n}\n\n// \n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nvar isFalsish = function isFalsish(chunk) {\n return chunk === undefined || chunk === null || chunk === false || chunk === '';\n};\n\nvar objToCss = function objToCss(obj, prevKey) {\n var css = Object.keys(obj).filter(function (key) {\n return !isFalsish(obj[key]);\n }).map(function (key) {\n if (isPlainObject(obj[key])) return objToCss(obj[key], key);\n return hyphenateStyleName(key) + ': ' + addUnitIfNeeded(key, obj[key]) + ';';\n }).join(' ');\n return prevKey ? prevKey + ' {\\n ' + css + '\\n}' : css;\n};\n\nfunction flatten(chunk, executionContext, styleSheet) {\n if (Array.isArray(chunk)) {\n var ruleSet = [];\n\n for (var i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet);\n\n if (result === null) continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return null;\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return '.' + chunk.styledComponentId;\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (executionContext) {\n var shouldThrow = false;\n\n try {\n // eslint-disable-next-line new-cap\n if (isElement(new chunk(executionContext))) {\n shouldThrow = true;\n }\n } catch (e) {\n /* */\n }\n\n if (shouldThrow) {\n throw new StyledComponentsError(13, getComponentName(chunk));\n }\n\n return flatten(chunk(executionContext), executionContext, styleSheet);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet);\n return chunk.getName();\n } else return chunk;\n }\n\n /* Handle objects */\n return isPlainObject(chunk) ? objToCss(chunk) : chunk.toString();\n}\n\n// \n\nfunction css(styles) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)));\n }\n\n // $FlowFixMe\n return flatten(interleave(styles, interpolations));\n}\n\n// \n\nfunction constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n\n if (!isValidElementType(tag)) {\n throw new StyledComponentsError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n var templateFunction = function templateFunction() {\n return componentConstructor(tag, options, css.apply(undefined, arguments));\n };\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n\n /* Modify/inject new props at runtime */\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean)\n }));\n };\n\n return templateFunction;\n}\n\n// \n// Source: https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash(c) {\n for (var e = c.length | 0, a = e | 0, d = 0, b; e >= 4;) {\n b = c.charCodeAt(d) & 255 | (c.charCodeAt(++d) & 255) << 8 | (c.charCodeAt(++d) & 255) << 16 | (c.charCodeAt(++d) & 255) << 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), b ^= b >>> 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16) ^ b, e -= 4, ++d;\n }\n switch (e) {\n case 3:\n a ^= (c.charCodeAt(d + 2) & 255) << 16;\n case 2:\n a ^= (c.charCodeAt(d + 1) & 255) << 8;\n case 1:\n a ^= c.charCodeAt(d) & 255, a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n }\n a ^= a >>> 13;\n a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n return (a ^ a >>> 15) >>> 0;\n}\n\n// \n/* eslint-disable no-bitwise */\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nvar charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nvar getAlphabeticChar = function getAlphabeticChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n};\n\n/* input a number, usually a hash and convert it to base-52 */\nfunction generateAlphabeticName(code) {\n var name = '';\n var x = void 0;\n\n /* get a char and divide by alphabet-length */\n for (x = code; x > charsLength; x = Math.floor(x / charsLength)) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return getAlphabeticChar(x % charsLength) + name;\n}\n\n// \n\nfunction hasFunctionObjectKey(obj) {\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (var key in obj) {\n if (isFunction(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isStaticRules(rules, attrs) {\n for (var i = 0; i < rules.length; i += 1) {\n var rule = rules[i];\n\n // recursive case\n if (Array.isArray(rule) && !isStaticRules(rule, attrs)) {\n return false;\n } else if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n if (attrs.some(function (x) {\n return isFunction(x) || hasFunctionObjectKey(x);\n })) return false;\n\n return true;\n}\n\n// \n\nvar isHMREnabled = process.env.NODE_ENV !== 'production' && typeof module !== 'undefined' && module.hot;\n\n/* combines hashStr (murmurhash) and nameGenerator for convenience */\nvar hasher = function hasher(str) {\n return generateAlphabeticName(murmurhash(str));\n};\n\n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\n\nvar ComponentStyle = function () {\n function ComponentStyle(rules, attrs, componentId) {\n classCallCheck(this, ComponentStyle);\n\n this.rules = rules;\n this.isStatic = !isHMREnabled && isStaticRules(rules, attrs);\n this.componentId = componentId;\n\n if (!StyleSheet.master.hasId(componentId)) {\n StyleSheet.master.deferredInject(componentId, []);\n }\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n\n\n ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {\n var isStatic = this.isStatic,\n componentId = this.componentId,\n lastClassName = this.lastClassName;\n\n if (IS_BROWSER && isStatic && typeof lastClassName === 'string' && styleSheet.hasNameForId(componentId, lastClassName)) {\n return lastClassName;\n }\n\n var flatCSS = flatten(this.rules, executionContext, styleSheet);\n var name = hasher(this.componentId + flatCSS.join(''));\n if (!styleSheet.hasNameForId(componentId, name)) {\n styleSheet.inject(this.componentId, stringifyRules(flatCSS, '.' + name, undefined, componentId), name);\n }\n\n this.lastClassName = name;\n return name;\n };\n\n ComponentStyle.generateName = function generateName(str) {\n return hasher(str);\n };\n\n return ComponentStyle;\n}();\n\n// \n\nvar LIMIT = 200;\n\nvar createWarnTooManyClasses = (function (displayName) {\n var generatedClasses = {};\n var warningSeen = false;\n\n return function (className) {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n /* eslint-disable no-console, prefer-template */\n console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. \\n' + 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' + 'Example:\\n' + ' const Component = styled.div.attrs({\\n' + ' style: ({ background }) => ({\\n' + ' background,\\n' + ' }),\\n' + ' })`width: 100%;`\\n\\n' + ' ');\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n});\n\n// \n\nvar determineTheme = (function (props, fallbackTheme) {\n var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n\n /* eslint-disable react/prop-types, flowtype-errors/show-errors */\n var isDefaultTheme = defaultProps ? props.theme === defaultProps.theme : false;\n var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme || defaultProps.theme;\n /* eslint-enable */\n\n return theme;\n});\n\n// \nvar escapeRegex = /[[\\].#*$><+~=|^:(),\"'`-]+/g;\nvar dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nfunction escape(str) {\n return str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n\n// \n\nfunction isTag(target) {\n return typeof target === 'string' && (process.env.NODE_ENV !== 'production' ? target.charAt(0) === target.charAt(0).toLowerCase() : true);\n}\n\n// \n\nfunction generateDisplayName(target) {\n // $FlowFixMe\n return isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')';\n}\n\nvar _TYPE_STATICS;\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDerivedStateFromProps: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar TYPE_STATICS = (_TYPE_STATICS = {}, _TYPE_STATICS[ForwardRef] = {\n $$typeof: true,\n render: true\n}, _TYPE_STATICS);\n\nvar defineProperty$1 = Object.defineProperty,\n getOwnPropertyNames = Object.getOwnPropertyNames,\n _Object$getOwnPropert = Object.getOwnPropertySymbols,\n getOwnPropertySymbols = _Object$getOwnPropert === undefined ? function () {\n return [];\n} : _Object$getOwnPropert,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor,\n getPrototypeOf = Object.getPrototypeOf,\n objectPrototype = Object.prototype;\nvar arrayPrototype = Array.prototype;\n\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n\n var keys = arrayPrototype.concat(getOwnPropertyNames(sourceComponent),\n // $FlowFixMe\n getOwnPropertySymbols(sourceComponent));\n\n var targetStatics = TYPE_STATICS[targetComponent.$$typeof] || REACT_STATICS;\n\n var sourceStatics = TYPE_STATICS[sourceComponent.$$typeof] || REACT_STATICS;\n\n var i = keys.length;\n var descriptor = void 0;\n var key = void 0;\n\n // eslint-disable-next-line no-plusplus\n while (i--) {\n key = keys[i];\n\n if (\n // $FlowFixMe\n !KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) &&\n // $FlowFixMe\n !(targetStatics && targetStatics[key])) {\n descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n if (descriptor) {\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {\n /* fail silently */\n }\n }\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\n// \nfunction isDerivedReactComponent(fn) {\n return !!(fn && fn.prototype && fn.prototype.isReactComponent);\n}\n\n// \n// Helper to call a given function, only once\nvar once = (function (cb) {\n var called = false;\n\n return function () {\n if (!called) {\n called = true;\n cb.apply(undefined, arguments);\n }\n };\n});\n\n// \n\nvar ThemeContext = createContext();\n\nvar ThemeConsumer = ThemeContext.Consumer;\n\n/**\n * Provide a theme to an entire react component tree via context\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n\n function ThemeProvider(props) {\n classCallCheck(this, ThemeProvider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.getContext = memoize(_this.getContext.bind(_this));\n _this.renderInner = _this.renderInner.bind(_this);\n return _this;\n }\n\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) return null;\n\n return React.createElement(\n ThemeContext.Consumer,\n null,\n this.renderInner\n );\n };\n\n ThemeProvider.prototype.renderInner = function renderInner(outerTheme) {\n var context = this.getContext(this.props.theme, outerTheme);\n\n return React.createElement(\n ThemeContext.Provider,\n { value: context },\n React.Children.only(this.props.children)\n );\n };\n\n /**\n * Get the theme from the props, supporting both (outerTheme) => {}\n * as well as object notation\n */\n\n\n ThemeProvider.prototype.getTheme = function getTheme(theme, outerTheme) {\n if (isFunction(theme)) {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme === null || Array.isArray(mergedTheme) || (typeof mergedTheme === 'undefined' ? 'undefined' : _typeof(mergedTheme)) !== 'object')) {\n throw new StyledComponentsError(7);\n }\n\n return mergedTheme;\n }\n\n if (theme === null || Array.isArray(theme) || (typeof theme === 'undefined' ? 'undefined' : _typeof(theme)) !== 'object') {\n throw new StyledComponentsError(8);\n }\n\n return _extends({}, outerTheme, theme);\n };\n\n ThemeProvider.prototype.getContext = function getContext(theme, outerTheme) {\n return this.getTheme(theme, outerTheme);\n };\n\n return ThemeProvider;\n}(Component);\n\n// \n\nvar ServerStyleSheet = function () {\n function ServerStyleSheet() {\n classCallCheck(this, ServerStyleSheet);\n\n /* The master sheet might be reset, so keep a reference here */\n this.masterSheet = StyleSheet.master;\n this.instance = this.masterSheet.clone();\n this.sealed = false;\n }\n\n /**\n * Mark the ServerStyleSheet as being fully emitted and manually GC it from the\n * StyleSheet singleton.\n */\n\n\n ServerStyleSheet.prototype.seal = function seal() {\n if (!this.sealed) {\n /* Remove sealed StyleSheets from the master sheet */\n var index = this.masterSheet.clones.indexOf(this.instance);\n this.masterSheet.clones.splice(index, 1);\n this.sealed = true;\n }\n };\n\n ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {\n if (this.sealed) {\n throw new StyledComponentsError(2);\n }\n\n return React.createElement(\n StyleSheetManager,\n { sheet: this.instance },\n children\n );\n };\n\n ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {\n this.seal();\n return this.instance.toHTML();\n };\n\n ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {\n this.seal();\n return this.instance.toReactElements();\n };\n\n ServerStyleSheet.prototype.interleaveWithNodeStream = function interleaveWithNodeStream(readableStream) {\n var _this = this;\n\n {\n throw new StyledComponentsError(3);\n }\n\n /* the tag index keeps track of which tags have already been emitted */\n var instance = this.instance;\n\n var instanceTagIndex = 0;\n\n var streamAttr = SC_STREAM_ATTR + '=\"true\"';\n\n var transformer = new stream.Transform({\n transform: function appendStyleChunks(chunk, /* encoding */_, callback) {\n var tags = instance.tags;\n\n var html = '';\n\n /* retrieve html for each new style tag */\n for (; instanceTagIndex < tags.length; instanceTagIndex += 1) {\n var tag = tags[instanceTagIndex];\n html += tag.toHTML(streamAttr);\n }\n\n /* force our StyleSheets to emit entirely new tags */\n instance.sealAllTags();\n\n /* prepend style html to chunk */\n this.push(html + chunk);\n callback();\n }\n });\n\n readableStream.on('end', function () {\n return _this.seal();\n });\n readableStream.on('error', function (err) {\n _this.seal();\n\n // forward the error to the transform stream\n transformer.emit('error', err);\n });\n\n return readableStream.pipe(transformer);\n };\n\n return ServerStyleSheet;\n}();\n\n// \n\nvar StyleSheetContext = createContext();\n\nvar StyleSheetConsumer = StyleSheetContext.Consumer;\n\nvar StyleSheetManager = function (_Component) {\n inherits(StyleSheetManager, _Component);\n\n function StyleSheetManager(props) {\n classCallCheck(this, StyleSheetManager);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.getContext = memoize(_this.getContext);\n return _this;\n }\n\n StyleSheetManager.prototype.getContext = function getContext(sheet, target) {\n if (sheet) {\n return sheet;\n } else if (target) {\n return new StyleSheet(target);\n } else {\n throw new StyledComponentsError(4);\n }\n };\n\n StyleSheetManager.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n sheet = _props.sheet,\n target = _props.target;\n\n\n return React.createElement(\n StyleSheetContext.Provider,\n { value: this.getContext(sheet, target) },\n process.env.NODE_ENV !== 'production' ? React.Children.only(children) : children\n );\n };\n\n return StyleSheetManager;\n}(Component);\nprocess.env.NODE_ENV !== \"production\" ? StyleSheetManager.propTypes = {\n sheet: PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]),\n\n target: PropTypes.shape({\n appendChild: PropTypes.func.isRequired\n })\n} : void 0;\n\n// \n\nvar didWarnAboutClassNameUsage = new Set();\n\nvar classNameUsageCheckInjector = (function (target) {\n var elementClassName = '';\n\n var targetCDM = target.componentDidMount;\n\n // eslint-disable-next-line no-param-reassign\n target.componentDidMount = function componentDidMount() {\n if (typeof targetCDM === 'function') {\n targetCDM.call(this);\n }\n\n var forwardTarget = this.props.forwardedComponent.target;\n\n if (target.props && target.props.suppressClassNameWarning || target.attrs && target.attrs.suppressClassNameWarning || didWarnAboutClassNameUsage.has(forwardTarget)) {\n return;\n }\n\n didWarnAboutClassNameUsage.add(forwardTarget);\n\n var classNames = elementClassName.replace(/ +/g, ' ').trim().split(' ');\n // eslint-disable-next-line react/no-find-dom-node\n var node = ReactDOM.findDOMNode(this);\n var selector = classNames.map(function (s) {\n return '.' + s;\n }).join('');\n\n if (node && node.nodeType === 1 && !classNames.every(function (className) {\n return node.classList && node.classList.contains(className);\n }) && !node.querySelector(selector)) {\n console.warn('It looks like you\\'ve wrapped styled() around your React component (' + getComponentName(forwardTarget) + '), but the className prop is not being passed down to a child. No styles will be rendered unless className is composed within your React component.');\n }\n };\n\n var prevRenderInner = target.renderInner;\n\n // eslint-disable-next-line no-param-reassign\n target.renderInner = function renderInner() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var element = prevRenderInner.apply(this, args);\n\n elementClassName = element.props.className;\n\n return element;\n };\n});\n\n// \n\nvar identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(_ComponentStyle, _displayName, parentComponentId) {\n var displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName);\n\n /**\n * This ensures uniqueness if two components happen to share\n * the same displayName.\n */\n var nr = (identifiers[displayName] || 0) + 1;\n identifiers[displayName] = nr;\n\n var componentId = displayName + '-' + _ComponentStyle.generateName(displayName + nr);\n\n return parentComponentId ? parentComponentId + '-' + componentId : componentId;\n}\n\n// $FlowFixMe\n\nvar StyledComponent = function (_Component) {\n inherits(StyledComponent, _Component);\n\n function StyledComponent() {\n classCallCheck(this, StyledComponent);\n\n var _this = possibleConstructorReturn(this, _Component.call(this));\n\n _this.attrs = {};\n\n _this.renderOuter = _this.renderOuter.bind(_this);\n _this.renderInner = _this.renderInner.bind(_this);\n\n if (process.env.NODE_ENV !== 'production') {\n _this.warnInnerRef = once(function (displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('The \"innerRef\" API has been removed in styled-components v4 in favor of React 16 ref forwarding, use \"ref\" instead like a typical component. \"innerRef\" was detected on component \"' + displayName + '\".')\n );\n });\n\n _this.warnAttrsFnObjectKeyDeprecated = once(function (key, displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('Functions as object-form attrs({}) keys are now deprecated and will be removed in a future version of styled-components. Switch to the new attrs(props => ({})) syntax instead for easier and more powerful composition. The attrs key in question is \"' + key + '\" on component \"' + displayName + '\".')\n );\n });\n\n _this.warnNonStyledComponentAttrsObjectKey = once(function (key, displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('It looks like you\\'ve used a non styled-component as the value for the \"' + key + '\" prop in an object-form attrs constructor of \"' + displayName + '\".\\n' + 'You should use the new function-form attrs constructor which avoids this issue: attrs(props => ({ yourStuff }))\\n' + \"To continue using the deprecated object syntax, you'll need to wrap your component prop in a function to make it available inside the styled component (you'll still get the deprecation warning though.)\\n\" + ('For example, { ' + key + ': () => InnerComponent } instead of { ' + key + ': InnerComponent }'))\n );\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && IS_BROWSER) {\n classNameUsageCheckInjector(_this);\n }\n return _this;\n }\n\n StyledComponent.prototype.render = function render() {\n return React.createElement(\n StyleSheetConsumer,\n null,\n this.renderOuter\n );\n };\n\n StyledComponent.prototype.renderOuter = function renderOuter() {\n var styleSheet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : StyleSheet.master;\n\n this.styleSheet = styleSheet;\n\n // No need to subscribe a static component to theme changes, it won't change anything\n if (this.props.forwardedComponent.componentStyle.isStatic) return this.renderInner();\n\n return React.createElement(\n ThemeConsumer,\n null,\n this.renderInner\n );\n };\n\n StyledComponent.prototype.renderInner = function renderInner(theme) {\n var _props$forwardedCompo = this.props.forwardedComponent,\n componentStyle = _props$forwardedCompo.componentStyle,\n defaultProps = _props$forwardedCompo.defaultProps,\n displayName = _props$forwardedCompo.displayName,\n foldedComponentIds = _props$forwardedCompo.foldedComponentIds,\n styledComponentId = _props$forwardedCompo.styledComponentId,\n target = _props$forwardedCompo.target;\n\n\n var generatedClassName = void 0;\n if (componentStyle.isStatic) {\n generatedClassName = this.generateAndInjectStyles(EMPTY_OBJECT, this.props);\n } else if (theme !== undefined) {\n generatedClassName = this.generateAndInjectStyles(determineTheme(this.props, theme, defaultProps), this.props);\n } else {\n generatedClassName = this.generateAndInjectStyles(this.props.theme || EMPTY_OBJECT, this.props);\n }\n\n var elementToBeCreated = this.props.as || this.attrs.as || target;\n var isTargetTag = isTag(elementToBeCreated);\n\n var propsForElement = {};\n var computedProps = _extends({}, this.attrs, this.props);\n\n var key = void 0;\n // eslint-disable-next-line guard-for-in\n for (key in computedProps) {\n if (process.env.NODE_ENV !== 'production' && key === 'innerRef' && isTargetTag) {\n this.warnInnerRef(displayName);\n }\n\n if (key === 'forwardedComponent' || key === 'as') continue;else if (key === 'forwardedRef') propsForElement.ref = computedProps[key];else if (!isTargetTag || validAttr(key)) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (this.props.style && this.attrs.style) {\n propsForElement.style = _extends({}, this.attrs.style, this.props.style);\n }\n\n propsForElement.className = Array.prototype.concat(foldedComponentIds, this.props.className, styledComponentId, this.attrs.className, generatedClassName).filter(Boolean).join(' ');\n\n return createElement(elementToBeCreated, propsForElement);\n };\n\n StyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props, attrs) {\n var _this2 = this;\n\n var context = _extends({}, props, { theme: theme });\n\n if (!attrs.length) return context;\n\n this.attrs = {};\n\n attrs.forEach(function (attrDef) {\n var resolvedAttrDef = attrDef;\n var attrDefWasFn = false;\n var attr = void 0;\n var key = void 0;\n\n if (isFunction(resolvedAttrDef)) {\n // $FlowFixMe\n resolvedAttrDef = resolvedAttrDef(context);\n attrDefWasFn = true;\n }\n\n /* eslint-disable guard-for-in */\n // $FlowFixMe\n for (key in resolvedAttrDef) {\n attr = resolvedAttrDef[key];\n\n if (!attrDefWasFn) {\n if (isFunction(attr) && !isDerivedReactComponent(attr) && !isStyledComponent(attr)) {\n if (process.env.NODE_ENV !== 'production') {\n _this2.warnAttrsFnObjectKeyDeprecated(key, props.forwardedComponent.displayName);\n }\n\n attr = attr(context);\n\n if (process.env.NODE_ENV !== 'production' && React.isValidElement(attr)) {\n _this2.warnNonStyledComponentAttrsObjectKey(key, props.forwardedComponent.displayName);\n }\n }\n }\n\n _this2.attrs[key] = attr;\n context[key] = attr;\n }\n /* eslint-enable */\n });\n\n return context;\n };\n\n StyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var _props$forwardedCompo2 = props.forwardedComponent,\n attrs = _props$forwardedCompo2.attrs,\n componentStyle = _props$forwardedCompo2.componentStyle,\n warnTooManyClasses = _props$forwardedCompo2.warnTooManyClasses;\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n\n if (componentStyle.isStatic && !attrs.length) {\n return componentStyle.generateAndInjectStyles(EMPTY_OBJECT, this.styleSheet);\n }\n\n var className = componentStyle.generateAndInjectStyles(this.buildExecutionContext(theme, props, attrs), this.styleSheet);\n\n if (process.env.NODE_ENV !== 'production' && warnTooManyClasses) warnTooManyClasses(className);\n\n return className;\n };\n\n return StyledComponent;\n}(Component);\n\nfunction createStyledComponent(target, options, rules) {\n var isTargetStyledComp = isStyledComponent(target);\n var isClass = !isTag(target);\n\n var _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? generateDisplayName(target) : _options$displayName,\n _options$componentId = options.componentId,\n componentId = _options$componentId === undefined ? generateId(ComponentStyle, options.displayName, options.parentComponentId) : _options$componentId,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? StyledComponent : _options$ParentCompon,\n _options$attrs = options.attrs,\n attrs = _options$attrs === undefined ? EMPTY_ARRAY : _options$attrs;\n\n\n var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + '-' + options.componentId : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n var finalAttrs =\n // $FlowFixMe\n isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs;\n\n var componentStyle = new ComponentStyle(isTargetStyledComp ? // fold the underlying StyledComponent rules up (implicit extend)\n // $FlowFixMe\n target.componentStyle.rules.concat(rules) : rules, finalAttrs, styledComponentId);\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n var WrappedStyledComponent = React.forwardRef(function (props, ref) {\n return React.createElement(ParentComponent, _extends({}, props, { forwardedComponent: WrappedStyledComponent, forwardedRef: ref }));\n });\n\n // $FlowFixMe\n WrappedStyledComponent.attrs = finalAttrs;\n // $FlowFixMe\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n\n // $FlowFixMe\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp ? // $FlowFixMe\n Array.prototype.concat(target.foldedComponentIds, target.styledComponentId) : EMPTY_ARRAY;\n\n // $FlowFixMe\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n // $FlowFixMe\n WrappedStyledComponent.target = isTargetStyledComp ? target.target : target;\n\n // $FlowFixMe\n WrappedStyledComponent.withComponent = function withComponent(tag) {\n var previousComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['componentId']);\n\n\n var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : escape(getComponentName(tag)));\n\n var newOptions = _extends({}, optionsToCopy, {\n attrs: finalAttrs,\n componentId: newComponentId,\n ParentComponent: ParentComponent\n });\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName);\n }\n\n // $FlowFixMe\n WrappedStyledComponent.toString = function () {\n return '.' + WrappedStyledComponent.styledComponentId;\n };\n\n if (isClass) {\n hoistNonReactStatics(WrappedStyledComponent, target, {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n styledComponentId: true,\n target: true,\n withComponent: true\n });\n }\n\n return WrappedStyledComponent;\n}\n\n// \n// Thanks to ReactDOMFactories for this handy list!\n\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// \n\nvar styled = function styled(tag) {\n return constructWithOptions(createStyledComponent, tag);\n};\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(function (domElement) {\n styled[domElement] = styled(domElement);\n});\n\n// \n\nvar GlobalStyle = function () {\n function GlobalStyle(rules, componentId) {\n classCallCheck(this, GlobalStyle);\n\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules, EMPTY_ARRAY);\n\n if (!StyleSheet.master.hasId(componentId)) {\n StyleSheet.master.deferredInject(componentId, []);\n }\n }\n\n GlobalStyle.prototype.createStyles = function createStyles(executionContext, styleSheet) {\n var flatCSS = flatten(this.rules, executionContext, styleSheet);\n var css = stringifyRules(flatCSS, '');\n\n styleSheet.inject(this.componentId, css);\n };\n\n GlobalStyle.prototype.removeStyles = function removeStyles(styleSheet) {\n var componentId = this.componentId;\n\n if (styleSheet.hasId(componentId)) {\n styleSheet.remove(componentId);\n }\n };\n\n // TODO: overwrite in-place instead of remove+create?\n\n\n GlobalStyle.prototype.renderStyles = function renderStyles(executionContext, styleSheet) {\n this.removeStyles(styleSheet);\n this.createStyles(executionContext, styleSheet);\n };\n\n return GlobalStyle;\n}();\n\n// \n\n// place our cache into shared context so it'll persist between HMRs\nif (IS_BROWSER) {\n window.scCGSHMRCache = {};\n}\n\nfunction createGlobalStyle(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var id = 'sc-global-' + murmurhash(JSON.stringify(rules));\n var style = new GlobalStyle(rules, id);\n\n var GlobalStyleComponent = function (_React$Component) {\n inherits(GlobalStyleComponent, _React$Component);\n\n function GlobalStyleComponent() {\n classCallCheck(this, GlobalStyleComponent);\n\n var _this = possibleConstructorReturn(this, _React$Component.call(this));\n\n var _this$constructor = _this.constructor,\n globalStyle = _this$constructor.globalStyle,\n styledComponentId = _this$constructor.styledComponentId;\n\n\n if (IS_BROWSER) {\n window.scCGSHMRCache[styledComponentId] = (window.scCGSHMRCache[styledComponentId] || 0) + 1;\n }\n\n /**\n * This fixes HMR compatibility. Don't ask me why, but this combination of\n * caching the closure variables via statics and then persisting the statics in\n * state works across HMR where no other combination did. ¯\\_(ツ)_/¯\n */\n _this.state = {\n globalStyle: globalStyle,\n styledComponentId: styledComponentId\n };\n return _this;\n }\n\n GlobalStyleComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n if (window.scCGSHMRCache[this.state.styledComponentId]) {\n window.scCGSHMRCache[this.state.styledComponentId] -= 1;\n }\n /**\n * Depending on the order \"render\" is called this can cause the styles to be lost\n * until the next render pass of the remaining instance, which may\n * not be immediate.\n */\n if (window.scCGSHMRCache[this.state.styledComponentId] === 0) {\n this.state.globalStyle.removeStyles(this.styleSheet);\n }\n };\n\n GlobalStyleComponent.prototype.render = function render() {\n var _this2 = this;\n\n if (process.env.NODE_ENV !== 'production' && React.Children.count(this.props.children)) {\n // eslint-disable-next-line no-console\n console.warn('The global style component ' + this.state.styledComponentId + ' was given child JSX. createGlobalStyle does not render children.');\n }\n\n return React.createElement(\n StyleSheetConsumer,\n null,\n function (styleSheet) {\n _this2.styleSheet = styleSheet || StyleSheet.master;\n\n var globalStyle = _this2.state.globalStyle;\n\n\n if (globalStyle.isStatic) {\n globalStyle.renderStyles(STATIC_EXECUTION_CONTEXT, _this2.styleSheet);\n\n return null;\n } else {\n return React.createElement(\n ThemeConsumer,\n null,\n function (theme) {\n // $FlowFixMe\n var defaultProps = _this2.constructor.defaultProps;\n\n\n var context = _extends({}, _this2.props);\n\n if (typeof theme !== 'undefined') {\n context.theme = determineTheme(_this2.props, theme, defaultProps);\n }\n\n globalStyle.renderStyles(context, _this2.styleSheet);\n\n return null;\n }\n );\n }\n }\n );\n };\n\n return GlobalStyleComponent;\n }(React.Component);\n\n GlobalStyleComponent.globalStyle = style;\n GlobalStyleComponent.styledComponentId = id;\n\n\n return GlobalStyleComponent;\n}\n\n// \n\nvar replaceWhitespace = function replaceWhitespace(str) {\n return str.replace(/\\s|\\\\n/g, '');\n};\n\nfunction keyframes(strings) {\n /* Warning if you've used keyframes on React Native */\n if (process.env.NODE_ENV !== 'production' && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n console.warn('`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.');\n }\n\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n\n var name = generateAlphabeticName(murmurhash(replaceWhitespace(JSON.stringify(rules))));\n\n return new Keyframes(name, stringifyRules(rules, name, '@keyframes'));\n}\n\n// \n\nvar withTheme = (function (Component$$1) {\n var WithTheme = React.forwardRef(function (props, ref) {\n return React.createElement(\n ThemeConsumer,\n null,\n function (theme) {\n // $FlowFixMe\n var defaultProps = Component$$1.defaultProps;\n\n var themeProp = determineTheme(props, theme, defaultProps);\n\n if (process.env.NODE_ENV !== 'production' && themeProp === undefined) {\n // eslint-disable-next-line no-console\n console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + getComponentName(Component$$1) + '\"');\n }\n\n return React.createElement(Component$$1, _extends({}, props, { theme: themeProp, ref: ref }));\n }\n );\n });\n\n hoistNonReactStatics(WithTheme, Component$$1);\n\n WithTheme.displayName = 'WithTheme(' + getComponentName(Component$$1) + ')';\n\n return WithTheme;\n});\n\n// \n\n/* eslint-disable */\nvar __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS = {\n StyleSheet: StyleSheet\n};\n\n// \n\n/* Warning if you've imported this file on React Native */\nif (process.env.NODE_ENV !== 'production' && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n // eslint-disable-next-line no-console\n console.warn(\"It looks like you've imported 'styled-components' on React Native.\\n\" + \"Perhaps you're looking to import 'styled-components/native'?\\n\" + 'Read more about this at https://www.styled-components.com/docs/basics#react-native');\n}\n\n/* Warning if there are several instances of styled-components */\nif (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && typeof window !== 'undefined' && typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Node.js') === -1 && navigator.userAgent.indexOf('jsdom') === -1) {\n window['__styled-components-init__'] = window['__styled-components-init__'] || 0;\n\n if (window['__styled-components-init__'] === 1) {\n // eslint-disable-next-line no-console\n console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. \" + 'This may cause dynamic styles not rendering properly, errors happening during rehydration process ' + 'and makes your application bigger without a good reason.\\n\\n' + 'See https://s-c.sh/2BAXzed for more info.');\n }\n\n window['__styled-components-init__'] += 1;\n}\n\n//\n\nexport default styled;\nexport { css, keyframes, createGlobalStyle, isStyledComponent, ThemeConsumer, ThemeContext, ThemeProvider, withTheme, ServerStyleSheet, StyleSheetManager, __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS };\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","(function (factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory()) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory()) :\n\t\t\t(window['stylisRuleSheet'] = factory())\n}(function () {\n\n\t'use strict'\n\n\treturn function (insertRule) {\n\t\tvar delimiter = '/*|*/'\n\t\tvar needle = delimiter+'}'\n\n\t\tfunction toSheet (block) {\n\t\t\tif (block)\n\t\t\t\ttry {\n\t\t\t\t\tinsertRule(block + '}')\n\t\t\t\t} catch (e) {}\n\t\t}\n\n\t\treturn function ruleSheet (context, content, selectors, parents, line, column, length, ns, depth, at) {\n\t\t\tswitch (context) {\n\t\t\t\t// property\n\t\t\t\tcase 1:\n\t\t\t\t\t// @import\n\t\t\t\t\tif (depth === 0 && content.charCodeAt(0) === 64)\n\t\t\t\t\t\treturn insertRule(content+';'), ''\n\t\t\t\t\tbreak\n\t\t\t\t// selector\n\t\t\t\tcase 2:\n\t\t\t\t\tif (ns === 0)\n\t\t\t\t\t\treturn content + delimiter\n\t\t\t\t\tbreak\n\t\t\t\t// at-rule\n\t\t\t\tcase 3:\n\t\t\t\t\tswitch (ns) {\n\t\t\t\t\t\t// @font-face, @page\n\t\t\t\t\t\tcase 102:\n\t\t\t\t\t\tcase 112:\n\t\t\t\t\t\t\treturn insertRule(selectors[0]+content), ''\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn content + (at === 0 ? delimiter : '')\n\t\t\t\t\t}\n\t\t\t\tcase -2:\n\t\t\t\t\tcontent.split(needle).forEach(toSheet)\n\t\t\t}\n\t\t}\n\t}\n}))\n","!function(e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(null):\"function\"==typeof define&&define.amd?define(e(null)):window.stylis=e(null)}(function e(a){\"use strict\";var r=/^\\0+/g,c=/[\\0\\r\\f]/g,s=/: */g,t=/zoo|gra/,i=/([,: ])(transform)/g,f=/,+\\s*(?![^(]*[)])/g,n=/ +\\s*(?![^(]*[)])/g,l=/ *[\\0] */g,o=/,\\r+?/g,h=/([\\t\\r\\n ])*\\f?&/g,u=/:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g,d=/\\W+/g,b=/@(k\\w+)\\s*(\\S*)\\s*/,p=/::(place)/g,k=/:(read-only)/g,g=/\\s+(?=[{\\];=:>])/g,A=/([[}=:>])\\s+/g,C=/(\\{[^{]+?);(?=\\})/g,w=/\\s{2,}/g,v=/([^\\(])(:+) */g,m=/[svh]\\w+-[tblr]{2}/,x=/\\(\\s*(.*)\\s*\\)/g,$=/([\\s\\S]*?);/g,y=/-self|flex-/g,O=/[^]*?(:[rp][el]a[\\w-]+)[^]*/,j=/stretch|:\\s*\\w+\\-(?:conte|avail)/,z=/([^-])(image-set\\()/,N=\"-webkit-\",S=\"-moz-\",F=\"-ms-\",W=59,q=125,B=123,D=40,E=41,G=91,H=93,I=10,J=13,K=9,L=64,M=32,P=38,Q=45,R=95,T=42,U=44,V=58,X=39,Y=34,Z=47,_=62,ee=43,ae=126,re=0,ce=12,se=11,te=107,ie=109,fe=115,ne=112,le=111,oe=105,he=99,ue=100,de=112,be=1,pe=1,ke=0,ge=1,Ae=1,Ce=1,we=0,ve=0,me=0,xe=[],$e=[],ye=0,Oe=null,je=-2,ze=-1,Ne=0,Se=1,Fe=2,We=3,qe=0,Be=1,De=\"\",Ee=\"\",Ge=\"\";function He(e,a,s,t,i){for(var f,n,o=0,h=0,u=0,d=0,g=0,A=0,C=0,w=0,m=0,$=0,y=0,O=0,j=0,z=0,R=0,we=0,$e=0,Oe=0,je=0,ze=s.length,Je=ze-1,Re=\"\",Te=\"\",Ue=\"\",Ve=\"\",Xe=\"\",Ye=\"\";R0)Te=Te.replace(c,\"\");if(Te.trim().length>0){switch(C){case M:case K:case W:case J:case I:break;default:Te+=s.charAt(R)}C=W}}if(1===$e)switch(C){case B:case q:case W:case Y:case X:case D:case E:case U:$e=0;case K:case J:case I:case M:break;default:for($e=0,je=R,g=C,R--,C=W;je0)++R,C=g;case B:je=ze}}switch(C){case B:for(g=(Te=Te.trim()).charCodeAt(0),y=1,je=++R;R0)Te=Te.replace(c,\"\");switch(A=Te.charCodeAt(1)){case ue:case ie:case fe:case Q:f=a;break;default:f=xe}if(je=(Ue=He(a,f,Ue,A,i+1)).length,me>0&&0===je)je=Te.length;if(ye>0)if(f=Ie(xe,Te,Oe),n=Pe(We,Ue,f,a,pe,be,je,A,i,t),Te=f.join(\"\"),void 0!==n)if(0===(je=(Ue=n.trim()).length))A=0,Ue=\"\";if(je>0)switch(A){case fe:Te=Te.replace(x,Me);case ue:case ie:case Q:Ue=Te+\"{\"+Ue+\"}\";break;case te:if(Ue=(Te=Te.replace(b,\"$1 $2\"+(Be>0?De:\"\")))+\"{\"+Ue+\"}\",1===Ae||2===Ae&&Le(\"@\"+Ue,3))Ue=\"@\"+N+Ue+\"@\"+Ue;else Ue=\"@\"+Ue;break;default:if(Ue=Te+Ue,t===de)Ve+=Ue,Ue=\"\"}else Ue=\"\";break;default:Ue=He(a,Ie(a,Te,Oe),Ue,t,i+1)}Xe+=Ue,O=0,$e=0,z=0,we=0,Oe=0,j=0,Te=\"\",Ue=\"\",C=s.charCodeAt(++R);break;case q:case W:if((je=(Te=(we>0?Te.replace(c,\"\"):Te).trim()).length)>1){if(0===z)if((g=Te.charCodeAt(0))===Q||g>96&&g<123)je=(Te=Te.replace(\" \",\":\")).length;if(ye>0)if(void 0!==(n=Pe(Se,Te,a,e,pe,be,Ve.length,t,i,t)))if(0===(je=(Te=n.trim()).length))Te=\"\\0\\0\";switch(g=Te.charCodeAt(0),A=Te.charCodeAt(1),g){case re:break;case L:if(A===oe||A===he){Ye+=Te+s.charAt(R);break}default:if(Te.charCodeAt(je-1)===V)break;Ve+=Ke(Te,g,A,Te.charCodeAt(2))}}O=0,$e=0,z=0,we=0,Oe=0,Te=\"\",C=s.charCodeAt(++R)}}switch(C){case J:case I:if(h+d+u+o+ve===0)switch($){case E:case X:case Y:case L:case ae:case _:case T:case ee:case Z:case Q:case V:case U:case W:case B:case q:break;default:if(z>0)$e=1}if(h===Z)h=0;else if(ge+O===0&&t!==te&&Te.length>0)we=1,Te+=\"\\0\";if(ye*qe>0)Pe(Ne,Te,a,e,pe,be,Ve.length,t,i,t);be=1,pe++;break;case W:case q:if(h+d+u+o===0){be++;break}default:switch(be++,Re=s.charAt(R),C){case K:case M:if(d+o+h===0)switch(w){case U:case V:case K:case M:Re=\"\";break;default:if(C!==M)Re=\" \"}break;case re:Re=\"\\\\0\";break;case ce:Re=\"\\\\f\";break;case se:Re=\"\\\\v\";break;case P:if(d+h+o===0&&ge>0)Oe=1,we=1,Re=\"\\f\"+Re;break;case 108:if(d+h+o+ke===0&&z>0)switch(R-z){case 2:if(w===ne&&s.charCodeAt(R-3)===V)ke=w;case 8:if(m===le)ke=m}break;case V:if(d+h+o===0)z=R;break;case U:if(h+u+d+o===0)we=1,Re+=\"\\r\";break;case Y:case X:if(0===h)d=d===C?0:0===d?C:d;break;case G:if(d+h+u===0)o++;break;case H:if(d+h+u===0)o--;break;case E:if(d+h+o===0)u--;break;case D:if(d+h+o===0){if(0===O)switch(2*w+3*m){case 533:break;default:y=0,O=1}u++}break;case L:if(h+u+d+o+z+j===0)j=1;break;case T:case Z:if(d+o+u>0)break;switch(h){case 0:switch(2*C+3*s.charCodeAt(R+1)){case 235:h=Z;break;case 220:je=R,h=T}break;case T:if(C===Z&&w===T&&je+2!==R){if(33===s.charCodeAt(je+2))Ve+=s.substring(je,R+1);Re=\"\",h=0}}}if(0===h){if(ge+d+o+j===0&&t!==te&&C!==W)switch(C){case U:case ae:case _:case ee:case E:case D:if(0===O){switch(w){case K:case M:case I:case J:Re+=\"\\0\";break;default:Re=\"\\0\"+Re+(C===U?\"\":\"\\0\")}we=1}else switch(C){case D:if(z+7===R&&108===w)z=0;O=++y;break;case E:if(0==(O=--y))we=1,Re+=\"\\0\"}break;case K:case M:switch(w){case re:case B:case q:case W:case U:case ce:case K:case M:case I:case J:break;default:if(0===O)we=1,Re+=\"\\0\"}}if(Te+=Re,C!==M&&C!==K)$=C}}m=w,w=C,R++}if(je=Ve.length,me>0)if(0===je&&0===Xe.length&&0===a[0].length==false)if(t!==ie||1===a.length&&(ge>0?Ee:Ge)===a[0])je=a.join(\",\").length+2;if(je>0){if(f=0===ge&&t!==te?function(e){for(var a,r,s=0,t=e.length,i=Array(t);s1)continue;if(u=n.charCodeAt(n.length-1),d=r.charCodeAt(0),a=\"\",0!==o)switch(u){case T:case ae:case _:case ee:case M:case D:break;default:a=\" \"}switch(d){case P:r=a+Ee;case ae:case _:case ee:case M:case E:case D:break;case G:r=a+r+Ee;break;case V:switch(2*r.charCodeAt(1)+3*r.charCodeAt(2)){case 530:if(Ce>0){r=a+r.substring(8,h-1);break}default:if(o<1||f[o-1].length<1)r=a+Ee+r}break;case U:a=\"\";default:if(h>1&&r.indexOf(\":\")>0)r=a+r.replace(v,\"$1\"+Ee+\"$2\");else r=a+r+Ee}n+=r}i[s]=n.replace(c,\"\").trim()}return i}(a):a,ye>0)if(void 0!==(n=Pe(Fe,Ve,f,e,pe,be,je,t,i,t))&&0===(Ve=n).length)return Ye+Ve+Xe;if(Ve=f.join(\",\")+\"{\"+Ve+\"}\",Ae*ke!=0){if(2===Ae&&!Le(Ve,2))ke=0;switch(ke){case le:Ve=Ve.replace(k,\":\"+S+\"$1\")+Ve;break;case ne:Ve=Ve.replace(p,\"::\"+N+\"input-$1\")+Ve.replace(p,\"::\"+S+\"$1\")+Ve.replace(p,\":\"+F+\"input-$1\")+Ve}ke=0}}return Ye+Ve+Xe}function Ie(e,a,r){var c=a.trim().split(o),s=c,t=c.length,i=e.length;switch(i){case 0:case 1:for(var f=0,n=0===i?\"\":e[0]+\" \";f0&&ge>0)return s.replace(u,\"$1\").replace(h,\"$1\"+Ge);break;default:return e.trim()+s.replace(h,\"$1\"+e.trim())}default:if(r*ge>0&&s.indexOf(\"\\f\")>0)return s.replace(h,(e.charCodeAt(0)===V?\"\":\"$1\")+e.trim())}return e+s}function Ke(e,a,r,c){var l,o=0,h=e+\";\",u=2*a+3*r+4*c;if(944===u)return function(e){var a=e.length,r=e.indexOf(\":\",9)+1,c=e.substring(0,r).trim(),s=e.substring(r,a-1).trim();switch(e.charCodeAt(9)*Be){case 0:break;case Q:if(110!==e.charCodeAt(10))break;default:for(var t=s.split((s=\"\",f)),i=0,r=0,a=t.length;iL&&h<90||h>96&&h<123||h===R||h===Q&&l.charCodeAt(1)!==Q))switch(isNaN(parseFloat(l))+(-1!==l.indexOf(\"(\"))){case 1:switch(l){case\"infinite\":case\"alternate\":case\"backwards\":case\"running\":case\"normal\":case\"forwards\":case\"both\":case\"none\":case\"linear\":case\"ease\":case\"ease-in\":case\"ease-out\":case\"ease-in-out\":case\"paused\":case\"reverse\":case\"alternate-reverse\":case\"inherit\":case\"initial\":case\"unset\":case\"step-start\":case\"step-end\":break;default:l+=De}}o[r++]=l}s+=(0===i?\"\":\",\")+o.join(\" \")}}if(s=c+s+\";\",1===Ae||2===Ae&&Le(s,1))return N+s+s;return s}(h);else if(0===Ae||2===Ae&&!Le(h,1))return h;switch(u){case 1015:return 97===h.charCodeAt(10)?N+h+h:h;case 951:return 116===h.charCodeAt(3)?N+h+h:h;case 963:return 110===h.charCodeAt(5)?N+h+h:h;case 1009:if(100!==h.charCodeAt(4))break;case 969:case 942:return N+h+h;case 978:return N+h+S+h+h;case 1019:case 983:return N+h+S+h+F+h+h;case 883:if(h.charCodeAt(8)===Q)return N+h+h;if(h.indexOf(\"image-set(\",11)>0)return h.replace(z,\"$1\"+N+\"$2\")+h;return h;case 932:if(h.charCodeAt(4)===Q)switch(h.charCodeAt(5)){case 103:return N+\"box-\"+h.replace(\"-grow\",\"\")+N+h+F+h.replace(\"grow\",\"positive\")+h;case 115:return N+h+F+h.replace(\"shrink\",\"negative\")+h;case 98:return N+h+F+h.replace(\"basis\",\"preferred-size\")+h}return N+h+F+h+h;case 964:return N+h+F+\"flex-\"+h+h;case 1023:if(99!==h.charCodeAt(8))break;return l=h.substring(h.indexOf(\":\",15)).replace(\"flex-\",\"\").replace(\"space-between\",\"justify\"),N+\"box-pack\"+l+N+h+F+\"flex-pack\"+l+h;case 1005:return t.test(h)?h.replace(s,\":\"+N)+h.replace(s,\":\"+S)+h:h;case 1e3:switch(o=(l=h.substring(13).trim()).indexOf(\"-\")+1,l.charCodeAt(0)+l.charCodeAt(o)){case 226:l=h.replace(m,\"tb\");break;case 232:l=h.replace(m,\"tb-rl\");break;case 220:l=h.replace(m,\"lr\");break;default:return h}return N+h+F+l+h;case 1017:if(-1===h.indexOf(\"sticky\",9))return h;case 975:switch(o=(h=e).length-10,u=(l=(33===h.charCodeAt(o)?h.substring(0,o):h).substring(e.indexOf(\":\",7)+1).trim()).charCodeAt(0)+(0|l.charCodeAt(7))){case 203:if(l.charCodeAt(8)<111)break;case 115:h=h.replace(l,N+l)+\";\"+h;break;case 207:case 102:h=h.replace(l,N+(u>102?\"inline-\":\"\")+\"box\")+\";\"+h.replace(l,N+l)+\";\"+h.replace(l,F+l+\"box\")+\";\"+h}return h+\";\";case 938:if(h.charCodeAt(5)===Q)switch(h.charCodeAt(6)){case 105:return l=h.replace(\"-items\",\"\"),N+h+N+\"box-\"+l+F+\"flex-\"+l+h;case 115:return N+h+F+\"flex-item-\"+h.replace(y,\"\")+h;default:return N+h+F+\"flex-line-pack\"+h.replace(\"align-content\",\"\").replace(y,\"\")+h}break;case 973:case 989:if(h.charCodeAt(3)!==Q||122===h.charCodeAt(4))break;case 931:case 953:if(true===j.test(e))if(115===(l=e.substring(e.indexOf(\":\")+1)).charCodeAt(0))return Ke(e.replace(\"stretch\",\"fill-available\"),a,r,c).replace(\":fill-available\",\":stretch\");else return h.replace(l,N+l)+h.replace(l,S+l.replace(\"fill-\",\"\"))+h;break;case 962:if(h=N+h+(102===h.charCodeAt(5)?F+h:\"\")+h,r+c===211&&105===h.charCodeAt(13)&&h.indexOf(\"transform\",10)>0)return h.substring(0,h.indexOf(\";\",27)+1).replace(i,\"$1\"+N+\"$2\")+h}return h}function Le(e,a){var r=e.indexOf(1===a?\":\":\"{\"),c=e.substring(0,3!==a?r:10),s=e.substring(r+1,e.length-1);return Oe(2!==a?c:c.replace(O,\"$1\"),s,a)}function Me(e,a){var r=Ke(a,a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2));return r!==a+\";\"?r.replace($,\" or ($1)\").substring(4):\"(\"+a+\")\"}function Pe(e,a,r,c,s,t,i,f,n,l){for(var o,h=0,u=a;h0)De=s.replace(d,t===G?\"\":\"-\");if(t=1,1===ge)Ge=s;else Ee=s;var i,f=[Ge];if(ye>0)if(void 0!==(i=Pe(ze,r,f,f,pe,be,0,0,0,0))&&\"string\"==typeof i)r=i;var n=He(xe,f,r,0,0);if(ye>0)if(void 0!==(i=Pe(je,n,f,f,pe,be,n.length,0,0,0))&&\"string\"!=typeof(n=i))t=0;return De=\"\",Ge=\"\",Ee=\"\",ke=0,pe=1,be=1,we*t==0?n:n.replace(c,\"\").replace(g,\"\").replace(A,\"$1\").replace(C,\"$1\").replace(w,\" \")}if(Te.use=function e(a){switch(a){case void 0:case null:ye=$e.length=0;break;default:if(\"function\"==typeof a)$e[ye++]=a;else if(\"object\"==typeof a)for(var r=0,c=a.length;r (\n
\n
\n {props.children}\n
\n
\n);\n","import PropTypes from 'prop-types';\nimport styled, { keyframes } from 'styled-components';\n\nconst fadeIn = keyframes`\n from {\n transform: scale(.25);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n`;\n\nconst fadeOut = keyframes`\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(.25);\n opacity: 0;\n }\n`;\n\nconst Fade = styled.div`\n display: inline-block;\n visibility: ${props => (props.out ? 'hidden' : 'visible')};\n animation: ${props => (props.out ? fadeOut : fadeIn)} ${props => (props.timeout / 1000).toFixed(2)}s linear;\n transition: visibility ${props => (props.timeout / 1000).toFixed(2)}s linear;\n`;\nFade.propTypes = {\n out: PropTypes.bool,\n timeout: PropTypes.number\n};\nFade.defaultProps = {\n out: false,\n timeout: 150\n};\n\nexport default Fade;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport Anchor from '@trendmicro/react-anchor';\nimport { Button } from '@trendmicro/react-buttons';\nimport styles from './Navbar.styl';\n\nexport default class extends Component {\n static propTypes = {\n name: PropTypes.string,\n url: PropTypes.string\n };\n\n state = {\n collapseIn: false\n };\n\n render() {\n const { name, url } = this.props;\n\n return (\n \n
\n
\n {\n this.setState({ collapseIn: !this.state.collapseIn });\n }}\n >\n Toggle navigation\n \n \n \n \n {name}\n
\n \n {\n window.location = url;\n }}\n >\n \n GitHub\n \n
\n \n \n );\n }\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nclass Portal extends React.Component {\n static propTypes = {\n node: PropTypes.any\n };\n\n constructor(props) {\n super(props);\n\n this.node = document.createElement('div');\n this.node.setAttribute('data-reactportal', '');\n }\n\n componentDidMount() {\n if (this.props.node) {\n this.props.node.appendChild(this.node);\n } else {\n document.body.appendChild(this.node);\n }\n }\n\n componentWillUnmount() {\n if (this.node) {\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n this.node = null;\n }\n }\n\n render() {\n return ReactDOM.createPortal(\n this.props.children,\n this.node\n );\n }\n}\n\nexport default Portal;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nclass Portal extends React.Component {\n static propTypes = {\n node: PropTypes.any\n };\n\n constructor(props) {\n super(props);\n\n this.node = document.createElement('div');\n this.node.setAttribute('data-reactportal', '');\n }\n\n componentDidMount() {\n if (this.props.node) {\n this.props.node.appendChild(this.node);\n } else {\n document.body.appendChild(this.node);\n }\n\n this.componentDidUpdate();\n }\n\n componentWillUnmount() {\n if (this.node) {\n ReactDOM.unmountComponentAtNode(this.node);\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n this.node = null;\n }\n }\n\n componentDidUpdate() {\n ReactDOM.render(\n this.props.children,\n this.node\n );\n }\n\n render() {\n return null;\n }\n}\n\nexport default Portal;\n","import ReactDOM from 'react-dom';\nimport Portal from './Portal';\nimport LegacyPortal from './LegacyPortal';\n\nexport default !!(ReactDOM.createPortal) ? Portal : LegacyPortal;\n","import 'trendmicro-ui/dist/css/trendmicro-ui.css';\nimport '@trendmicro/react-buttons/dist/react-buttons.css';\nimport { Button } from '@trendmicro/react-buttons';\nimport React, { PureComponent } from 'react';\nimport ReactDOM from 'react-dom';\nimport styled from 'styled-components';\nimport Section from './Section';\nimport Fade from './Fade';\nimport Navbar from './Navbar';\nimport Portal from '../src';\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n color: #fff;\n background-color: rgba(0, 0, 0, .7);\n z-index: 1000;\n`;\n\nconst VerticallyCenter = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n`;\n\nconst Modal = styled.div`\n background-color: #fff;\n min-width: 360px;\n min-height: 240px;\n`;\n\nclass App extends PureComponent {\n state = {\n modal1: false,\n modal2: false\n };\n\n render() {\n const name = 'React Portal';\n const url = 'https://github.com/trendmicro-frontend/react-portal';\n\n return (\n
\n \n
\n
\n
\n
\n

Modal Window

\n {\n this.setState({ modal1: true, modal2: false });\n }}\n >\n Open\n \n {this.state.modal1 &&\n \n \n \n \n \n \n

Modal #1

\n
\n
\n {\n this.setState({\n modal1: false,\n modal2: true\n });\n }}\n >\n Close Modal\n \n
\n
\n
\n
\n
\n
\n
\n }\n {this.state.modal2 &&\n \n \n \n \n \n \n

Modal #2

\n
\n
\n {\n this.setState({\n modal1: false,\n modal2: false\n });\n }}\n >\n Close Modal\n \n
\n
\n
\n
\n
\n
\n
\n }\n
\n
\n
\n
\n

Fullscreen Modal From Within an Iframe

\n

Parent Window

\n \n
\n
\n
\n
\n
\n );\n }\n}\n\nReactDOM.render(\n ,\n document.getElementById('container')\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/iframe.bundle.js b/docs/iframe.bundle.js index f67a24d..8272e93 100644 --- a/docs/iframe.bundle.js +++ b/docs/iframe.bundle.js @@ -1,24182 +1,53 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./iframe.jsx"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/@trendmicro/react-buttons/dist/react-buttons.css": -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a - * - * Note: replace · with * in the above snippet. - * */ -var COMPONENTS_PER_TAG = 40; - -var BrowserTag = function () { - function BrowserTag(el, isLocal) { - var existingSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; - classCallCheck(this, BrowserTag); - - this.el = el; - this.isLocal = isLocal; - this.ready = false; - - var extractedComps = extractCompsFromCSS(existingSource); - - this.size = extractedComps.length; - this.components = extractedComps.reduce(function (acc, obj) { - acc[obj.componentId] = obj; // eslint-disable-line no-param-reassign - return acc; - }, {}); - } - - BrowserTag.prototype.isFull = function isFull() { - return this.size >= COMPONENTS_PER_TAG; - }; - - BrowserTag.prototype.addComponent = function addComponent(componentId) { - if (!this.ready) this.replaceElement(); - if (this.components[componentId]) throw new Error('Trying to add Component \'' + componentId + '\' twice!'); - - var comp = { componentId: componentId, textNode: document.createTextNode('') }; - this.el.appendChild(comp.textNode); - - this.size += 1; - this.components[componentId] = comp; - }; - - BrowserTag.prototype.inject = function inject(componentId, css, name) { - if (!this.ready) this.replaceElement(); - var comp = this.components[componentId]; - - if (!comp) throw new Error('Must add a new component before you can inject css into it'); - if (comp.textNode.data === '') comp.textNode.appendData('\n/* sc-component-id: ' + componentId + ' */\n'); - - comp.textNode.appendData(css); - if (name) { - var existingNames = this.el.getAttribute(SC_ATTR); - this.el.setAttribute(SC_ATTR, existingNames ? existingNames + ' ' + name : name); - - if (typeof window !== 'undefined' && window.__webpack_nonce__) { - this.el.setAttribute('nonce', window.__webpack_nonce__); - } - } - }; - - BrowserTag.prototype.toHTML = function toHTML() { - return this.el.outerHTML; - }; - - BrowserTag.prototype.toReactElement = function toReactElement() { - throw new Error('BrowserTag doesn\'t implement toReactElement!'); - }; - - BrowserTag.prototype.clone = function clone() { - throw new Error('BrowserTag cannot be cloned!'); - }; - - /* Because we care about source order, before we can inject anything we need to - * create a text node for each component and replace the existing CSS. */ - - - BrowserTag.prototype.replaceElement = function replaceElement() { - var _this = this; - - this.ready = true; - // We have nothing to inject. Use the current el. - if (this.size === 0) return; - - // Build up our replacement style tag - var newEl = this.el.cloneNode(); - newEl.appendChild(document.createTextNode('\n')); - - Object.keys(this.components).forEach(function (key) { - var comp = _this.components[key]; - - // eslint-disable-next-line no-param-reassign - comp.textNode = document.createTextNode(comp.cssFromDOM); - newEl.appendChild(comp.textNode); - }); - - if (!this.el.parentNode) throw new Error("Trying to replace an element that wasn't mounted!"); - - // The ol' switcheroo - this.el.parentNode.replaceChild(newEl, this.el); - this.el = newEl; - }; - - return BrowserTag; -}(); - -/* Factory function to separate DOM operations from logical ones*/ - - -var BrowserStyleSheet = { - create: function create() { - var tags = []; - var names = {}; - - /* Construct existing state from DOM */ - var nodes = document.querySelectorAll('[' + SC_ATTR + ']'); - var nodesLength = nodes.length; - - for (var i = 0; i < nodesLength; i += 1) { - var el = nodes[i]; - - tags.push(new BrowserTag(el, el.getAttribute(LOCAL_ATTR) === 'true', el.innerHTML)); - - var attr = el.getAttribute(SC_ATTR); - if (attr) { - attr.trim().split(/\s+/).forEach(function (name) { - names[name] = true; - }); - } - } - - /* Factory for making more tags */ - var tagConstructor = function tagConstructor(isLocal) { - var el = document.createElement('style'); - el.type = 'text/css'; - el.setAttribute(SC_ATTR, ''); - el.setAttribute(LOCAL_ATTR, isLocal ? 'true' : 'false'); - if (!document.head) throw new Error('Missing document '); - document.head.appendChild(el); - return new BrowserTag(el, isLocal); - }; - - return new StyleSheet(tagConstructor, tags, names); - } -}; - -// -var SC_ATTR = 'data-styled-components'; -var LOCAL_ATTR = 'data-styled-components-is-local'; -var CONTEXT_KEY = '__styled-components-stylesheet__'; - -var instance = null; -// eslint-disable-next-line no-use-before-define -var clones = []; - -var StyleSheet = function () { - function StyleSheet(tagConstructor) { - var tags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var names = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - classCallCheck(this, StyleSheet); - this.hashes = {}; - this.deferredInjections = {}; - - this.tagConstructor = tagConstructor; - this.tags = tags; - this.names = names; - this.constructComponentTagMap(); - } - - StyleSheet.prototype.constructComponentTagMap = function constructComponentTagMap() { - var _this = this; - - this.componentTags = {}; - - this.tags.forEach(function (tag) { - Object.keys(tag.components).forEach(function (componentId) { - _this.componentTags[componentId] = tag; - }); - }); - }; - - /* Best level of caching—get the name from the hash straight away. */ - - - StyleSheet.prototype.getName = function getName(hash) { - return this.hashes[hash.toString()]; - }; - - /* Second level of caching—if the name is already in the dom, don't - * inject anything and record the hash for getName next time. */ - - - StyleSheet.prototype.alreadyInjected = function alreadyInjected(hash, name) { - if (!this.names[name]) return false; - - this.hashes[hash.toString()] = name; - return true; - }; - - /* Third type of caching—don't inject components' componentId twice. */ - - - StyleSheet.prototype.hasInjectedComponent = function hasInjectedComponent(componentId) { - return !!this.componentTags[componentId]; - }; - - StyleSheet.prototype.deferredInject = function deferredInject(componentId, isLocal, css) { - if (this === instance) { - clones.forEach(function (clone) { - clone.deferredInject(componentId, isLocal, css); - }); - } - - this.getOrCreateTag(componentId, isLocal); - this.deferredInjections[componentId] = css; - }; - - StyleSheet.prototype.inject = function inject(componentId, isLocal, css, hash, name) { - if (this === instance) { - clones.forEach(function (clone) { - clone.inject(componentId, isLocal, css); - }); - } - - var tag = this.getOrCreateTag(componentId, isLocal); - - var deferredInjection = this.deferredInjections[componentId]; - if (deferredInjection) { - tag.inject(componentId, deferredInjection); - delete this.deferredInjections[componentId]; - } - - tag.inject(componentId, css, name); - - if (hash && name) { - this.hashes[hash.toString()] = name; - } - }; - - StyleSheet.prototype.toHTML = function toHTML() { - return this.tags.map(function (tag) { - return tag.toHTML(); - }).join(''); - }; - - StyleSheet.prototype.toReactElements = function toReactElements() { - return this.tags.map(function (tag, i) { - return tag.toReactElement('sc-' + i); - }); - }; - - StyleSheet.prototype.getOrCreateTag = function getOrCreateTag(componentId, isLocal) { - var existingTag = this.componentTags[componentId]; - if (existingTag) { - return existingTag; - } - - var lastTag = this.tags[this.tags.length - 1]; - var componentTag = !lastTag || lastTag.isFull() || lastTag.isLocal !== isLocal ? this.createNewTag(isLocal) : lastTag; - this.componentTags[componentId] = componentTag; - componentTag.addComponent(componentId); - return componentTag; - }; - - StyleSheet.prototype.createNewTag = function createNewTag(isLocal) { - var newTag = this.tagConstructor(isLocal); - this.tags.push(newTag); - return newTag; - }; - - StyleSheet.reset = function reset(isServer) { - instance = StyleSheet.create(isServer); - }; - - /* We can make isServer totally implicit once Jest 20 drops and we - * can change environment on a per-test basis. */ - - - StyleSheet.create = function create() { - var isServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : typeof document === 'undefined'; - - return (isServer ? ServerStyleSheet : BrowserStyleSheet).create(); - }; - - StyleSheet.clone = function clone(oldSheet) { - var newSheet = new StyleSheet(oldSheet.tagConstructor, oldSheet.tags.map(function (tag) { - return tag.clone(); - }), _extends({}, oldSheet.names)); - - newSheet.hashes = _extends({}, oldSheet.hashes); - newSheet.deferredInjections = _extends({}, oldSheet.deferredInjections); - clones.push(newSheet); - - return newSheet; - }; - - createClass(StyleSheet, null, [{ - key: 'instance', - get: function get$$1() { - return instance || (instance = StyleSheet.create()); - } - }]); - return StyleSheet; -}(); - -var _StyleSheetManager$ch; - -// -var StyleSheetManager = function (_Component) { - inherits(StyleSheetManager, _Component); - - function StyleSheetManager() { - classCallCheck(this, StyleSheetManager); - return possibleConstructorReturn(this, _Component.apply(this, arguments)); - } - - StyleSheetManager.prototype.getChildContext = function getChildContext() { - var _ref; - - return _ref = {}, _ref[CONTEXT_KEY] = this.props.sheet, _ref; - }; - - StyleSheetManager.prototype.render = function render() { - /* eslint-disable react/prop-types */ - // Flow v0.43.1 will report an error accessing the `children` property, - // but v0.47.0 will not. It is necessary to use a type cast instead of - // a "fixme" comment to satisfy both Flow versions. - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.Children.only(this.props.children); - }; - - return StyleSheetManager; -}(__WEBPACK_IMPORTED_MODULE_2_react__["Component"]); - -StyleSheetManager.childContextTypes = (_StyleSheetManager$ch = {}, _StyleSheetManager$ch[CONTEXT_KEY] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet).isRequired, _StyleSheetManager$ch); - -StyleSheetManager.propTypes = { - sheet: __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet).isRequired -}; - -// -/* eslint-disable no-underscore-dangle */ -var ServerTag = function () { - function ServerTag(isLocal) { - classCallCheck(this, ServerTag); - - this.isLocal = isLocal; - this.components = {}; - this.size = 0; - this.names = []; - } - - ServerTag.prototype.isFull = function isFull() { - return false; - }; - - ServerTag.prototype.addComponent = function addComponent(componentId) { - if (this.components[componentId]) throw new Error('Trying to add Component \'' + componentId + '\' twice!'); - this.components[componentId] = { componentId: componentId, css: '' }; - this.size += 1; - }; - - ServerTag.prototype.concatenateCSS = function concatenateCSS() { - var _this = this; - - return Object.keys(this.components).reduce(function (styles, k) { - return styles + _this.components[k].css; - }, ''); - }; - - ServerTag.prototype.inject = function inject(componentId, css, name) { - var comp = this.components[componentId]; - - if (!comp) throw new Error('Must add a new component before you can inject css into it'); - if (comp.css === '') comp.css = '/* sc-component-id: ' + componentId + ' */\n'; - - comp.css += css.replace(/\n*$/, '\n'); - - if (name) this.names.push(name); - }; - - ServerTag.prototype.toHTML = function toHTML() { - var attrs = ['type="text/css"', SC_ATTR + '="' + this.names.join(' ') + '"', LOCAL_ATTR + '="' + (this.isLocal ? 'true' : 'false') + '"']; - - if (typeof global !== 'undefined' && global.__webpack_nonce__) { - attrs.push('nonce="' + global.__webpack_nonce__ + '"'); - } - - return ''; - }; - - ServerTag.prototype.toReactElement = function toReactElement(key) { - var _attrs; - - var attrs = (_attrs = {}, _attrs[SC_ATTR] = this.names.join(' '), _attrs[LOCAL_ATTR] = this.isLocal.toString(), _attrs); - - if (typeof global !== 'undefined' && global.__webpack_nonce__) { - attrs.nonce = global.__webpack_nonce__; - } - - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement('style', _extends({ - key: key, type: 'text/css' }, attrs, { - dangerouslySetInnerHTML: { __html: this.concatenateCSS() } - })); - }; - - ServerTag.prototype.clone = function clone() { - var _this2 = this; - - var copy = new ServerTag(this.isLocal); - copy.names = [].concat(this.names); - copy.size = this.size; - copy.components = Object.keys(this.components).reduce(function (acc, key) { - acc[key] = _extends({}, _this2.components[key]); // eslint-disable-line no-param-reassign - return acc; - }, {}); - - return copy; - }; - - return ServerTag; -}(); - -var ServerStyleSheet = function () { - function ServerStyleSheet() { - classCallCheck(this, ServerStyleSheet); - - this.instance = StyleSheet.clone(StyleSheet.instance); - } - - ServerStyleSheet.prototype.collectStyles = function collectStyles(children) { - if (this.closed) throw new Error("Can't collect styles once you've called getStyleTags!"); - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement( - StyleSheetManager, - { sheet: this.instance }, - children - ); - }; - - ServerStyleSheet.prototype.getStyleTags = function getStyleTags() { - if (!this.closed) { - clones.splice(clones.indexOf(this.instance), 1); - this.closed = true; - } - - return this.instance.toHTML(); - }; - - ServerStyleSheet.prototype.getStyleElement = function getStyleElement() { - if (!this.closed) { - clones.splice(clones.indexOf(this.instance), 1); - this.closed = true; - } - - return this.instance.toReactElements(); - }; - - ServerStyleSheet.create = function create() { - return new StyleSheet(function (isLocal) { - return new ServerTag(isLocal); - }); - }; - - return ServerStyleSheet; -}(); - -// - -var LIMIT = 200; - -var createWarnTooManyClasses = (function (displayName) { - var generatedClasses = {}; - var warningSeen = false; - - return function (className) { - if (!warningSeen) { - generatedClasses[className] = true; - if (Object.keys(generatedClasses).length >= LIMIT) { - // Unable to find latestRule in test environment. - /* eslint-disable no-console, prefer-template */ - console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. ' + 'Consider using style property for frequently changed styles.\n' + 'Example:\n' + ' const StyledComp = styled.div`width: 100%;`\n' + ' '); - warningSeen = true; - generatedClasses = {}; - } - } - }; -}); - -// -/* Trying to avoid the unknown-prop errors on styled components - by filtering by React's attribute whitelist. - */ - -/* Logic copied from ReactDOMUnknownPropertyHook */ -var reactProps = { - children: true, - dangerouslySetInnerHTML: true, - key: true, - ref: true, - autoFocus: true, - defaultValue: true, - valueLink: true, - defaultChecked: true, - checkedLink: true, - innerHTML: true, - suppressContentEditableWarning: true, - onFocusIn: true, - onFocusOut: true, - className: true, - - /* List copied from https://facebook.github.io/react/docs/events.html */ - onCopy: true, - onCut: true, - onPaste: true, - onCompositionEnd: true, - onCompositionStart: true, - onCompositionUpdate: true, - onKeyDown: true, - onKeyPress: true, - onKeyUp: true, - onFocus: true, - onBlur: true, - onChange: true, - onInput: true, - onSubmit: true, - onClick: true, - onContextMenu: true, - onDoubleClick: true, - onDrag: true, - onDragEnd: true, - onDragEnter: true, - onDragExit: true, - onDragLeave: true, - onDragOver: true, - onDragStart: true, - onDrop: true, - onMouseDown: true, - onMouseEnter: true, - onMouseLeave: true, - onMouseMove: true, - onMouseOut: true, - onMouseOver: true, - onMouseUp: true, - onSelect: true, - onTouchCancel: true, - onTouchEnd: true, - onTouchMove: true, - onTouchStart: true, - onScroll: true, - onWheel: true, - onAbort: true, - onCanPlay: true, - onCanPlayThrough: true, - onDurationChange: true, - onEmptied: true, - onEncrypted: true, - onEnded: true, - onError: true, - onLoadedData: true, - onLoadedMetadata: true, - onLoadStart: true, - onPause: true, - onPlay: true, - onPlaying: true, - onProgress: true, - onRateChange: true, - onSeeked: true, - onSeeking: true, - onStalled: true, - onSuspend: true, - onTimeUpdate: true, - onVolumeChange: true, - onWaiting: true, - onLoad: true, - onAnimationStart: true, - onAnimationEnd: true, - onAnimationIteration: true, - onTransitionEnd: true, - - onCopyCapture: true, - onCutCapture: true, - onPasteCapture: true, - onCompositionEndCapture: true, - onCompositionStartCapture: true, - onCompositionUpdateCapture: true, - onKeyDownCapture: true, - onKeyPressCapture: true, - onKeyUpCapture: true, - onFocusCapture: true, - onBlurCapture: true, - onChangeCapture: true, - onInputCapture: true, - onSubmitCapture: true, - onClickCapture: true, - onContextMenuCapture: true, - onDoubleClickCapture: true, - onDragCapture: true, - onDragEndCapture: true, - onDragEnterCapture: true, - onDragExitCapture: true, - onDragLeaveCapture: true, - onDragOverCapture: true, - onDragStartCapture: true, - onDropCapture: true, - onMouseDownCapture: true, - onMouseEnterCapture: true, - onMouseLeaveCapture: true, - onMouseMoveCapture: true, - onMouseOutCapture: true, - onMouseOverCapture: true, - onMouseUpCapture: true, - onSelectCapture: true, - onTouchCancelCapture: true, - onTouchEndCapture: true, - onTouchMoveCapture: true, - onTouchStartCapture: true, - onScrollCapture: true, - onWheelCapture: true, - onAbortCapture: true, - onCanPlayCapture: true, - onCanPlayThroughCapture: true, - onDurationChangeCapture: true, - onEmptiedCapture: true, - onEncryptedCapture: true, - onEndedCapture: true, - onErrorCapture: true, - onLoadedDataCapture: true, - onLoadedMetadataCapture: true, - onLoadStartCapture: true, - onPauseCapture: true, - onPlayCapture: true, - onPlayingCapture: true, - onProgressCapture: true, - onRateChangeCapture: true, - onSeekedCapture: true, - onSeekingCapture: true, - onStalledCapture: true, - onSuspendCapture: true, - onTimeUpdateCapture: true, - onVolumeChangeCapture: true, - onWaitingCapture: true, - onLoadCapture: true, - onAnimationStartCapture: true, - onAnimationEndCapture: true, - onAnimationIterationCapture: true, - onTransitionEndCapture: true -}; - -/* From HTMLDOMPropertyConfig */ -var htmlProps = { - /** - * Standard Properties - */ - accept: true, - acceptCharset: true, - accessKey: true, - action: true, - allowFullScreen: true, - allowTransparency: true, - alt: true, - // specifies target context for links with `preload` type - as: true, - async: true, - autoComplete: true, - // autoFocus is polyfilled/normalized by AutoFocusUtils - // autoFocus: true, - autoPlay: true, - capture: true, - cellPadding: true, - cellSpacing: true, - charSet: true, - challenge: true, - checked: true, - cite: true, - classID: true, - className: true, - cols: true, - colSpan: true, - content: true, - contentEditable: true, - contextMenu: true, - controls: true, - coords: true, - crossOrigin: true, - data: true, // For `` acts as `src`. - dateTime: true, - default: true, - defer: true, - dir: true, - disabled: true, - download: true, - draggable: true, - encType: true, - form: true, - formAction: true, - formEncType: true, - formMethod: true, - formNoValidate: true, - formTarget: true, - frameBorder: true, - headers: true, - height: true, - hidden: true, - high: true, - href: true, - hrefLang: true, - htmlFor: true, - httpEquiv: true, - icon: true, - id: true, - inputMode: true, - integrity: true, - is: true, - keyParams: true, - keyType: true, - kind: true, - label: true, - lang: true, - list: true, - loop: true, - low: true, - manifest: true, - marginHeight: true, - marginWidth: true, - max: true, - maxLength: true, - media: true, - mediaGroup: true, - method: true, - min: true, - minLength: true, - // Caution; `option.selected` is not updated if `select.multiple` is - // disabled with `removeAttribute`. - multiple: true, - muted: true, - name: true, - nonce: true, - noValidate: true, - open: true, - optimum: true, - pattern: true, - placeholder: true, - playsInline: true, - poster: true, - preload: true, - profile: true, - radioGroup: true, - readOnly: true, - referrerPolicy: true, - rel: true, - required: true, - reversed: true, - role: true, - rows: true, - rowSpan: true, - sandbox: true, - scope: true, - scoped: true, - scrolling: true, - seamless: true, - selected: true, - shape: true, - size: true, - sizes: true, - span: true, - spellCheck: true, - src: true, - srcDoc: true, - srcLang: true, - srcSet: true, - start: true, - step: true, - style: true, - summary: true, - tabIndex: true, - target: true, - title: true, - // Setting .type throws on non- tags - type: true, - useMap: true, - value: true, - width: true, - wmode: true, - wrap: true, - - /** - * RDFa Properties - */ - about: true, - datatype: true, - inlist: true, - prefix: true, - // property is also supported for OpenGraph in meta tags. - property: true, - resource: true, - typeof: true, - vocab: true, - - /** - * Non-standard Properties - */ - // autoCapitalize and autoCorrect are supported in Mobile Safari for - // keyboard hints. - autoCapitalize: true, - autoCorrect: true, - // autoSave allows WebKit/Blink to persist values of input fields on page reloads - autoSave: true, - // color is for Safari mask-icon link - color: true, - // itemProp, itemScope, itemType are for - // Microdata support. See http://schema.org/docs/gs.html - itemProp: true, - itemScope: true, - itemType: true, - // itemID and itemRef are for Microdata support as well but - // only specified in the WHATWG spec document. See - // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api - itemID: true, - itemRef: true, - // results show looking glass icon and recent searches on input - // search fields in WebKit/Blink - results: true, - // IE-only attribute that specifies security restrictions on an iframe - // as an alternative to the sandbox attribute on IE<10 - security: true, - // IE-only attribute that controls focus behavior - unselectable: 0 -}; - -var svgProps = { - accentHeight: true, - accumulate: true, - additive: true, - alignmentBaseline: true, - allowReorder: true, - alphabetic: true, - amplitude: true, - arabicForm: true, - ascent: true, - attributeName: true, - attributeType: true, - autoReverse: true, - azimuth: true, - baseFrequency: true, - baseProfile: true, - baselineShift: true, - bbox: true, - begin: true, - bias: true, - by: true, - calcMode: true, - capHeight: true, - clip: true, - clipPath: true, - clipRule: true, - clipPathUnits: true, - colorInterpolation: true, - colorInterpolationFilters: true, - colorProfile: true, - colorRendering: true, - contentScriptType: true, - contentStyleType: true, - cursor: true, - cx: true, - cy: true, - d: true, - decelerate: true, - descent: true, - diffuseConstant: true, - direction: true, - display: true, - divisor: true, - dominantBaseline: true, - dur: true, - dx: true, - dy: true, - edgeMode: true, - elevation: true, - enableBackground: true, - end: true, - exponent: true, - externalResourcesRequired: true, - fill: true, - fillOpacity: true, - fillRule: true, - filter: true, - filterRes: true, - filterUnits: true, - floodColor: true, - floodOpacity: true, - focusable: true, - fontFamily: true, - fontSize: true, - fontSizeAdjust: true, - fontStretch: true, - fontStyle: true, - fontVariant: true, - fontWeight: true, - format: true, - from: true, - fx: true, - fy: true, - g1: true, - g2: true, - glyphName: true, - glyphOrientationHorizontal: true, - glyphOrientationVertical: true, - glyphRef: true, - gradientTransform: true, - gradientUnits: true, - hanging: true, - horizAdvX: true, - horizOriginX: true, - ideographic: true, - imageRendering: true, - in: true, - in2: true, - intercept: true, - k: true, - k1: true, - k2: true, - k3: true, - k4: true, - kernelMatrix: true, - kernelUnitLength: true, - kerning: true, - keyPoints: true, - keySplines: true, - keyTimes: true, - lengthAdjust: true, - letterSpacing: true, - lightingColor: true, - limitingConeAngle: true, - local: true, - markerEnd: true, - markerMid: true, - markerStart: true, - markerHeight: true, - markerUnits: true, - markerWidth: true, - mask: true, - maskContentUnits: true, - maskUnits: true, - mathematical: true, - mode: true, - numOctaves: true, - offset: true, - opacity: true, - operator: true, - order: true, - orient: true, - orientation: true, - origin: true, - overflow: true, - overlinePosition: true, - overlineThickness: true, - paintOrder: true, - panose1: true, - pathLength: true, - patternContentUnits: true, - patternTransform: true, - patternUnits: true, - pointerEvents: true, - points: true, - pointsAtX: true, - pointsAtY: true, - pointsAtZ: true, - preserveAlpha: true, - preserveAspectRatio: true, - primitiveUnits: true, - r: true, - radius: true, - refX: true, - refY: true, - renderingIntent: true, - repeatCount: true, - repeatDur: true, - requiredExtensions: true, - requiredFeatures: true, - restart: true, - result: true, - rotate: true, - rx: true, - ry: true, - scale: true, - seed: true, - shapeRendering: true, - slope: true, - spacing: true, - specularConstant: true, - specularExponent: true, - speed: true, - spreadMethod: true, - startOffset: true, - stdDeviation: true, - stemh: true, - stemv: true, - stitchTiles: true, - stopColor: true, - stopOpacity: true, - strikethroughPosition: true, - strikethroughThickness: true, - string: true, - stroke: true, - strokeDasharray: true, - strokeDashoffset: true, - strokeLinecap: true, - strokeLinejoin: true, - strokeMiterlimit: true, - strokeOpacity: true, - strokeWidth: true, - surfaceScale: true, - systemLanguage: true, - tableValues: true, - targetX: true, - targetY: true, - textAnchor: true, - textDecoration: true, - textRendering: true, - textLength: true, - to: true, - transform: true, - u1: true, - u2: true, - underlinePosition: true, - underlineThickness: true, - unicode: true, - unicodeBidi: true, - unicodeRange: true, - unitsPerEm: true, - vAlphabetic: true, - vHanging: true, - vIdeographic: true, - vMathematical: true, - values: true, - vectorEffect: true, - version: true, - vertAdvY: true, - vertOriginX: true, - vertOriginY: true, - viewBox: true, - viewTarget: true, - visibility: true, - widths: true, - wordSpacing: true, - writingMode: true, - x: true, - xHeight: true, - x1: true, - x2: true, - xChannelSelector: true, - xlinkActuate: true, - xlinkArcrole: true, - xlinkHref: true, - xlinkRole: true, - xlinkShow: true, - xlinkTitle: true, - xlinkType: true, - xmlBase: true, - xmlns: true, - xmlnsXlink: true, - xmlLang: true, - xmlSpace: true, - y: true, - y1: true, - y2: true, - yChannelSelector: true, - z: true, - zoomAndPan: true -}; - -/* From DOMProperty */ -var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; -var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040'; -var isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$')); - -var hasOwnProperty = {}.hasOwnProperty; -var validAttr = (function (name) { - return hasOwnProperty.call(htmlProps, name) || hasOwnProperty.call(svgProps, name) || isCustomAttribute(name.toLowerCase()) || hasOwnProperty.call(reactProps, name); -}); - -// - - -function isTag(target) /* : %checks */{ - return typeof target === 'string'; -} - -// - - -function isStyledComponent(target) /* : %checks */{ - return typeof target === 'function' && typeof target.styledComponentId === 'string'; -} - -// - -/* eslint-disable no-undef */ -function getComponentName(target) { - return target.displayName || target.name || 'Component'; -} - -// -/** - * Creates a broadcast that can be listened to, i.e. simple event emitter - * - * @see https://github.com/ReactTraining/react-broadcast - */ - -var createBroadcast = function createBroadcast(initialValue) { - var listeners = []; - var currentValue = initialValue; - - return { - publish: function publish(value) { - currentValue = value; - listeners.forEach(function (listener) { - return listener(currentValue); - }); - }, - subscribe: function subscribe(listener) { - listeners.push(listener); - - // Publish to this subscriber once immediately. - listener(currentValue); - - return function () { - listeners = listeners.filter(function (item) { - return item !== listener; - }); - }; - } - }; -}; - -var _ThemeProvider$childC; -var _ThemeProvider$contex; - -// -/* globals React$Element */ -// NOTE: DO NOT CHANGE, changing this is a semver major change! -var CHANNEL = '__styled-components__'; - -/** - * Provide a theme to an entire react component tree via context and event listeners (have to do - * both context and event emitter as pure components block context updates) - */ - -var ThemeProvider = function (_Component) { - inherits(ThemeProvider, _Component); - - function ThemeProvider() { - classCallCheck(this, ThemeProvider); - - var _this = possibleConstructorReturn(this, _Component.call(this)); - - _this.getTheme = _this.getTheme.bind(_this); - return _this; - } - - ThemeProvider.prototype.componentWillMount = function componentWillMount() { - var _this2 = this; - - // If there is a ThemeProvider wrapper anywhere around this theme provider, merge this theme - // with the outer theme - if (this.context[CHANNEL]) { - var subscribe = this.context[CHANNEL]; - this.unsubscribeToOuter = subscribe(function (theme) { - _this2.outerTheme = theme; - }); - } - this.broadcast = createBroadcast(this.getTheme()); - }; - - ThemeProvider.prototype.getChildContext = function getChildContext() { - var _babelHelpers$extends; - - return _extends({}, this.context, (_babelHelpers$extends = {}, _babelHelpers$extends[CHANNEL] = this.broadcast.subscribe, _babelHelpers$extends)); - }; - - ThemeProvider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { - if (this.props.theme !== nextProps.theme) this.broadcast.publish(this.getTheme(nextProps.theme)); - }; - - ThemeProvider.prototype.componentWillUnmount = function componentWillUnmount() { - if (this.context[CHANNEL]) { - this.unsubscribeToOuter(); - } - }; - - // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation - - - ThemeProvider.prototype.getTheme = function getTheme(passedTheme) { - var theme = passedTheme || this.props.theme; - if (__WEBPACK_IMPORTED_MODULE_4_is_function___default()(theme)) { - var mergedTheme = theme(this.outerTheme); - if (!__WEBPACK_IMPORTED_MODULE_0_is_plain_object___default()(mergedTheme)) { - throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!'); - } - return mergedTheme; - } - if (!__WEBPACK_IMPORTED_MODULE_0_is_plain_object___default()(theme)) { - throw new Error('[ThemeProvider] Please make your theme prop a plain object'); - } - return _extends({}, this.outerTheme, theme); - }; - - ThemeProvider.prototype.render = function render() { - if (!this.props.children) { - return null; - } - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.Children.only(this.props.children); - }; - - return ThemeProvider; -}(__WEBPACK_IMPORTED_MODULE_2_react__["Component"]); - -ThemeProvider.childContextTypes = (_ThemeProvider$childC = {}, _ThemeProvider$childC[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func.isRequired, _ThemeProvider$childC); -ThemeProvider.contextTypes = (_ThemeProvider$contex = {}, _ThemeProvider$contex[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _ThemeProvider$contex); - -var _AbstractStyledCompon; - -// -var AbstractStyledComponent = function (_Component) { - inherits(AbstractStyledComponent, _Component); - - function AbstractStyledComponent() { - classCallCheck(this, AbstractStyledComponent); - return possibleConstructorReturn(this, _Component.apply(this, arguments)); - } - - return AbstractStyledComponent; -}(__WEBPACK_IMPORTED_MODULE_2_react__["Component"]); - -AbstractStyledComponent.contextTypes = (_AbstractStyledCompon = {}, _AbstractStyledCompon[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _AbstractStyledCompon[CONTEXT_KEY] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet), _AbstractStyledCompon); - -// - -var escapeRegex = /[[\].#*$><+~=|^:(),"'`]/g; -var multiDashRegex = /--+/g; - -var _StyledComponent = (function (ComponentStyle, constructWithOptions) { - /* We depend on components having unique IDs */ - var identifiers = {}; - var generateId = function generateId(_displayName, parentComponentId) { - var displayName = typeof _displayName !== 'string' ? 'sc' : _displayName.replace(escapeRegex, '-') // Replace all possible CSS selectors - .replace(multiDashRegex, '-'); // Replace multiple -- with single - - - var nr = (identifiers[displayName] || 0) + 1; - identifiers[displayName] = nr; - - var hash = ComponentStyle.generateName(displayName + nr); - var componentId = displayName + '-' + hash; - return parentComponentId !== undefined ? parentComponentId + '-' + componentId : componentId; - }; - - var BaseStyledComponent = function (_AbstractStyledCompon) { - inherits(BaseStyledComponent, _AbstractStyledCompon); - - function BaseStyledComponent() { - var _temp, _this, _ret; - - classCallCheck(this, BaseStyledComponent); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = possibleConstructorReturn(this, _AbstractStyledCompon.call.apply(_AbstractStyledCompon, [this].concat(args))), _this), _this.attrs = {}, _this.state = { - theme: null, - generatedClassName: '' - }, _temp), possibleConstructorReturn(_this, _ret); - } - - BaseStyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props) { - var attrs = this.constructor.attrs; - - var context = _extends({}, props, { theme: theme }); - if (attrs === undefined) { - return context; - } - - this.attrs = Object.keys(attrs).reduce(function (acc, key) { - var attr = attrs[key]; - // eslint-disable-next-line no-param-reassign - acc[key] = typeof attr === 'function' ? attr(context) : attr; - return acc; - }, {}); - - return _extends({}, context, this.attrs); - }; - - BaseStyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) { - var _constructor = this.constructor, - componentStyle = _constructor.componentStyle, - warnTooManyClasses = _constructor.warnTooManyClasses; - - var executionContext = this.buildExecutionContext(theme, props); - var styleSheet = this.context[CONTEXT_KEY] || StyleSheet.instance; - var className = componentStyle.generateAndInjectStyles(executionContext, styleSheet); - - if (warnTooManyClasses !== undefined) warnTooManyClasses(className); - - return className; - }; - - BaseStyledComponent.prototype.componentWillMount = function componentWillMount() { - var _this2 = this; - - // If there is a theme in the context, subscribe to the event emitter. This - // is necessary due to pure components blocking context updates, this circumvents - // that by updating when an event is emitted - if (this.context[CHANNEL]) { - var subscribe = this.context[CHANNEL]; - this.unsubscribe = subscribe(function (nextTheme) { - // This will be called once immediately - - // Props should take precedence over ThemeProvider, which should take precedence over - // defaultProps, but React automatically puts defaultProps on props. - var defaultProps = _this2.constructor.defaultProps; - - var isDefaultTheme = defaultProps && _this2.props.theme === defaultProps.theme; - var theme = _this2.props.theme && !isDefaultTheme ? _this2.props.theme : nextTheme; - var generatedClassName = _this2.generateAndInjectStyles(theme, _this2.props); - _this2.setState({ theme: theme, generatedClassName: generatedClassName }); - }); - } else { - var theme = this.props.theme || {}; - var generatedClassName = this.generateAndInjectStyles(theme, this.props); - this.setState({ theme: theme, generatedClassName: generatedClassName }); - } - }; - - BaseStyledComponent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { - var _this3 = this; - - this.setState(function (oldState) { - // Props should take precedence over ThemeProvider, which should take precedence over - // defaultProps, but React automatically puts defaultProps on props. - var defaultProps = _this3.constructor.defaultProps; - - var isDefaultTheme = defaultProps && nextProps.theme === defaultProps.theme; - var theme = nextProps.theme && !isDefaultTheme ? nextProps.theme : oldState.theme; - var generatedClassName = _this3.generateAndInjectStyles(theme, nextProps); - - return { theme: theme, generatedClassName: generatedClassName }; - }); - }; - - BaseStyledComponent.prototype.componentWillUnmount = function componentWillUnmount() { - if (this.unsubscribe) { - this.unsubscribe(); - } - }; - - BaseStyledComponent.prototype.render = function render() { - var _this4 = this; - - var innerRef = this.props.innerRef; - var generatedClassName = this.state.generatedClassName; - var _constructor2 = this.constructor, - styledComponentId = _constructor2.styledComponentId, - target = _constructor2.target; - - - var isTargetTag = isTag(target); - - var className = [this.props.className, styledComponentId, this.attrs.className, generatedClassName].filter(Boolean).join(' '); - - var baseProps = _extends({}, this.attrs, { - className: className - }); - - if (isStyledComponent(target)) { - baseProps.innerRef = innerRef; - } else { - baseProps.ref = innerRef; - } - - var propsForElement = Object.keys(this.props).reduce(function (acc, propName) { - // Don't pass through non HTML tags through to HTML elements - // always omit innerRef - if (propName !== 'innerRef' && propName !== 'className' && (!isTargetTag || validAttr(propName))) { - // eslint-disable-next-line no-param-reassign - acc[propName] = _this4.props[propName]; - } - - return acc; - }, baseProps); - - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_react__["createElement"])(target, propsForElement); - }; - - return BaseStyledComponent; - }(AbstractStyledComponent); - - var createStyledComponent = function createStyledComponent(target, options, rules) { - var _StyledComponent$cont; - - var _options$displayName = options.displayName, - displayName = _options$displayName === undefined ? isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')' : _options$displayName, - _options$componentId = options.componentId, - componentId = _options$componentId === undefined ? generateId(options.displayName, options.parentComponentId) : _options$componentId, - _options$ParentCompon = options.ParentComponent, - ParentComponent = _options$ParentCompon === undefined ? BaseStyledComponent : _options$ParentCompon, - extendingRules = options.rules, - attrs = options.attrs; - - - var styledComponentId = options.displayName && options.componentId ? options.displayName + '-' + options.componentId : componentId; - - var warnTooManyClasses = void 0; - if (typeof process !== 'undefined' && "development" !== 'production') { - warnTooManyClasses = createWarnTooManyClasses(displayName); - } - - var componentStyle = new ComponentStyle(extendingRules === undefined ? rules : extendingRules.concat(rules), styledComponentId); - - var StyledComponent = function (_ParentComponent) { - inherits(StyledComponent, _ParentComponent); - - function StyledComponent() { - classCallCheck(this, StyledComponent); - return possibleConstructorReturn(this, _ParentComponent.apply(this, arguments)); - } - - StyledComponent.withComponent = function withComponent(tag) { - var previousComponentId = options.componentId, - optionsToCopy = objectWithoutProperties(options, ['componentId']); - - - var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : getComponentName(tag)); - - var newOptions = _extends({}, optionsToCopy, { - componentId: newComponentId, - ParentComponent: StyledComponent - }); - - return createStyledComponent(tag, newOptions, rules); - }; - - createClass(StyledComponent, null, [{ - key: 'extend', - get: function get$$1() { - var rulesFromOptions = options.rules, - parentComponentId = options.componentId, - optionsToCopy = objectWithoutProperties(options, ['rules', 'componentId']); - - - var newRules = rulesFromOptions === undefined ? rules : rulesFromOptions.concat(rules); - - var newOptions = _extends({}, optionsToCopy, { - rules: newRules, - parentComponentId: parentComponentId, - ParentComponent: StyledComponent - }); - - return constructWithOptions(createStyledComponent, target, newOptions); - } - }]); - return StyledComponent; - }(ParentComponent); - - StyledComponent.contextTypes = (_StyledComponent$cont = {}, _StyledComponent$cont[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _StyledComponent$cont[CONTEXT_KEY] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.instanceOf(StyleSheet), _StyledComponent$cont); - StyledComponent.displayName = displayName; - StyledComponent.styledComponentId = styledComponentId; - StyledComponent.attrs = attrs; - StyledComponent.componentStyle = componentStyle; - StyledComponent.warnTooManyClasses = warnTooManyClasses; - StyledComponent.target = target; - - - return StyledComponent; - }; - - return createStyledComponent; -}); - -// murmurhash2 via https://gist.github.com/raycmorgan/588423 - -function doHash(str, seed) { - var m = 0x5bd1e995; - var r = 24; - var h = seed ^ str.length; - var length = str.length; - var currentIndex = 0; - - while (length >= 4) { - var k = UInt32(str, currentIndex); - - k = Umul32(k, m); - k ^= k >>> r; - k = Umul32(k, m); - - h = Umul32(h, m); - h ^= k; - - currentIndex += 4; - length -= 4; - } - - switch (length) { - case 3: - h ^= UInt16(str, currentIndex); - h ^= str.charCodeAt(currentIndex + 2) << 16; - h = Umul32(h, m); - break; - - case 2: - h ^= UInt16(str, currentIndex); - h = Umul32(h, m); - break; - - case 1: - h ^= str.charCodeAt(currentIndex); - h = Umul32(h, m); - break; - } - - h ^= h >>> 13; - h = Umul32(h, m); - h ^= h >>> 15; - - return h >>> 0; -} - -function UInt32(str, pos) { - return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8) + (str.charCodeAt(pos++) << 16) + (str.charCodeAt(pos) << 24); -} - -function UInt16(str, pos) { - return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8); -} - -function Umul32(n, m) { - n = n | 0; - m = m | 0; - var nlo = n & 0xffff; - var nhi = n >>> 16; - var res = nlo * m + ((nhi * m & 0xffff) << 16) | 0; - return res; -} - -// -/* - ComponentStyle is all the CSS-specific stuff, not - the React-specific stuff. - */ -var _ComponentStyle = (function (nameGenerator, flatten, stringifyRules) { - var ComponentStyle = function () { - function ComponentStyle(rules, componentId) { - classCallCheck(this, ComponentStyle); - - this.rules = rules; - this.componentId = componentId; - if (!StyleSheet.instance.hasInjectedComponent(this.componentId)) { - var placeholder = '.' + componentId + ' {}'; - StyleSheet.instance.deferredInject(componentId, true, placeholder); - } - } - - /* - * Flattens a rule set into valid CSS - * Hashes it, wraps the whole chunk in a .hash1234 {} - * Returns the hash to be injected on render() - * */ - - - ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) { - var flatCSS = flatten(this.rules, executionContext); - var hash = doHash(this.componentId + flatCSS.join('')); - - var existingName = styleSheet.getName(hash); - if (existingName) return existingName; - - var name = nameGenerator(hash); - if (styleSheet.alreadyInjected(hash, name)) return name; - - var css = '\n' + stringifyRules(flatCSS, '.' + name); - styleSheet.inject(this.componentId, true, css, hash, name); - return name; - }; - - ComponentStyle.generateName = function generateName(str) { - return nameGenerator(doHash(str)); - }; - - return ComponentStyle; - }(); - - return ComponentStyle; -}); - -// -// Thanks to ReactDOMFactories for this handy list! - -var domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', - -// SVG -'circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan']; - -// - -var _styled = (function (styledComponent, constructWithOptions) { - var styled = function styled(tag) { - return constructWithOptions(styledComponent, tag); - }; - - // Shorthands for all valid HTML Elements - domElements.forEach(function (domElement) { - styled[domElement] = styled(domElement); - }); - - return styled; -}); - -// -var replaceWhitespace = function replaceWhitespace(str) { - return str.replace(/\s|\\n/g, ''); -}; - -var _keyframes = (function (nameGenerator, stringifyRules, css) { - return function (strings) { - for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - interpolations[_key - 1] = arguments[_key]; - } - - var rules = css.apply(undefined, [strings].concat(interpolations)); - var hash = doHash(replaceWhitespace(JSON.stringify(rules))); - - var existingName = StyleSheet.instance.getName(hash); - if (existingName) return existingName; - - var name = nameGenerator(hash); - if (StyleSheet.instance.alreadyInjected(hash, name)) return name; - - var generatedCSS = stringifyRules(rules, name, '@keyframes'); - StyleSheet.instance.inject('sc-keyframes-' + name, true, generatedCSS, hash, name); - return name; - }; -}); - -// -var _injectGlobal = (function (stringifyRules, css) { - var injectGlobal = function injectGlobal(strings) { - for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - interpolations[_key - 1] = arguments[_key]; - } - - var rules = css.apply(undefined, [strings].concat(interpolations)); - var hash = doHash(JSON.stringify(rules)); - - var componentId = 'sc-global-' + hash; - if (StyleSheet.instance.hasInjectedComponent(componentId)) return; - - StyleSheet.instance.inject(componentId, false, stringifyRules(rules)); - }; - - return injectGlobal; -}); - -// - - -var _constructWithOptions = (function (css) { - var constructWithOptions = function constructWithOptions(componentConstructor, tag) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - if (typeof tag !== 'string' && typeof tag !== 'function') { - // $FlowInvalidInputTest - throw new Error('Cannot create styled-component for component: ' + tag); - } - - /* This is callable directly as a template function */ - var templateFunction = function templateFunction(strings) { - for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - interpolations[_key - 1] = arguments[_key]; - } - - return componentConstructor(tag, options, css.apply(undefined, [strings].concat(interpolations))); - }; - - /* If config methods are called, wrap up a new template function and merge options */ - templateFunction.withConfig = function (config) { - return constructWithOptions(componentConstructor, tag, _extends({}, options, config)); - }; - templateFunction.attrs = function (attrs) { - return constructWithOptions(componentConstructor, tag, _extends({}, options, { - attrs: _extends({}, options.attrs || {}, attrs) })); - }; - - return templateFunction; - }; - - return constructWithOptions; -}); - -// -/* globals ReactClass */ - -var wrapWithTheme = function wrapWithTheme(Component$$1) { - var _WithTheme$contextTyp; - - var componentName = Component$$1.displayName || Component$$1.name || 'Component'; - - var isStyledComponent$$1 = isStyledComponent(Component$$1); - - var WithTheme = function (_React$Component) { - inherits(WithTheme, _React$Component); - - function WithTheme() { - var _temp, _this, _ret; - - classCallCheck(this, WithTheme); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {}, _temp), possibleConstructorReturn(_this, _ret); - } - - // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping - - - WithTheme.prototype.componentWillMount = function componentWillMount() { - var _this2 = this; - - if (!this.context[CHANNEL]) { - throw new Error('[withTheme] Please use ThemeProvider to be able to use withTheme'); - } - - var subscribe = this.context[CHANNEL]; - this.unsubscribe = subscribe(function (theme) { - _this2.setState({ theme: theme }); - }); - }; - - WithTheme.prototype.componentWillUnmount = function componentWillUnmount() { - if (typeof this.unsubscribe === 'function') this.unsubscribe(); - }; - - WithTheme.prototype.render = function render() { - // eslint-disable-next-line react/prop-types - var innerRef = this.props.innerRef; - var theme = this.state.theme; - - - return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(Component$$1, _extends({ - theme: theme - }, this.props, { - innerRef: isStyledComponent$$1 ? innerRef : undefined, - ref: isStyledComponent$$1 ? undefined : innerRef - })); - }; - - return WithTheme; - }(__WEBPACK_IMPORTED_MODULE_2_react___default.a.Component); - - WithTheme.displayName = 'WithTheme(' + componentName + ')'; - WithTheme.styledComponentId = 'withTheme'; - WithTheme.contextTypes = (_WithTheme$contextTyp = {}, _WithTheme$contextTyp[CHANNEL] = __WEBPACK_IMPORTED_MODULE_3_prop_types___default.a.func, _WithTheme$contextTyp); - - - return __WEBPACK_IMPORTED_MODULE_5_hoist_non_react_statics___default()(WithTheme, Component$$1); -}; - -// - -/* Import singletons */ -/* Import singleton constructors */ -/* Import components */ -/* Import Higher Order Components */ -/* Instantiate singletons */ -var ComponentStyle = _ComponentStyle(generateAlphabeticName, flatten, stringifyRules); -var constructWithOptions = _constructWithOptions(css); -var StyledComponent = _StyledComponent(ComponentStyle, constructWithOptions); - -/* Instantiate exported singletons */ -var keyframes = _keyframes(generateAlphabeticName, stringifyRules, css); -var injectGlobal = _injectGlobal(stringifyRules, css); -var styled = _styled(StyledComponent, constructWithOptions); - -/* harmony default export */ __webpack_exports__["default"] = (styled); - -/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__("../node_modules/webpack/buildin/global.js"), __webpack_require__("../node_modules/process/browser.js"))) - -/***/ }), - -/***/ "../node_modules/stylis/stylis.js": -/***/ (function(module, exports, __webpack_require__) { - -/* - * __ ___ - * _____/ /___ __/ (_)____ - * / ___/ __/ / / / / / ___/ - * (__ ) /_/ /_/ / / (__ ) - * /____/\__/\__, /_/_/____/ - * /____/ - * - * light - weight css preprocessor @licence MIT + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ -(function (factory) {/* eslint-disable */ - true ? (module['exports'] = factory(null)) : - typeof define === 'function' && define['amd'] ? define(factory(null)) : - (window['stylis'] = factory(null)) -}(/** @param {*=} options */function factory (options) {/* eslint-disable */ - - 'use strict' - - /** - * Notes - * - * The [''] pattern is used to support closure compiler - * the jsdoc signatures are also used to the same effect - * - * ---- - * - * int + int + int === n4 [faster] - * - * vs - * - * int === n1 && int === n2 && int === n3 - * - * ---- - * - * switch (int) { case ints...} [faster] - * - * vs - * - * if (int == 1 && int === 2 ...) - * - * ---- - * - * The (first*n1 + second*n2 + third*n3) format used in the property parser - * is a simple way to hash the sequence of characters - * taking into account the index they occur in - * since any number of 3 character sequences could produce duplicates. - * - * On the other hand sequences that are directly tied to the index of the character - * resolve a far more accurate measure, it's also faster - * to evaluate one condition in a switch statement - * than three in an if statement regardless of the added math. - * - * This allows the vendor prefixer to be both small and fast. - */ - - var nullptn = /^\0+/g /* matches leading null characters */ - var formatptn = /[\0\r\f]/g /* matches new line, null and formfeed characters */ - var colonptn = /: */g /* splits animation rules */ - var cursorptn = /zoo|gra/ /* assert cursor varient */ - var transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */ - var animationptn = /,+\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */ - var propertiesptn = / +\s*(?![^(]*[)])/g /* animation properties */ - var elementptn = / *[\0] */g /* selector elements */ - var selectorptn = /,\r+?/g /* splits selectors */ - var andptn = /([\t\r\n ])*\f?&/g /* match & */ - var escapeptn = /:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g /* matches :global(.*) */ - var invalidptn = /\W+/g /* removes invalid characters from keyframes */ - var keyframeptn = /@(k\w+)\s*(\S*)\s*/ /* matches @keyframes $1 */ - var plcholdrptn = /::(place)/g /* match ::placeholder varient */ - var readonlyptn = /:(read-only)/g /* match :read-only varient */ - var beforeptn = /\s+(?=[{\];=:>])/g /* matches \s before ] ; = : */ - var afterptn = /([[}=:>])\s+/g /* matches \s after characters [ } = : */ - var tailptn = /(\{[^{]+?);(?=\})/g /* matches tail semi-colons ;} */ - var whiteptn = /\s{2,}/g /* matches repeating whitespace */ - var pseudoptn = /([^\(])(:+) */g /* pseudo element */ - var writingptn = /[svh]\w+-[tblr]{2}/ /* match writing mode property values */ - var gradientptn = /([\w-]+t\()/g /* match *gradient property */ - var supportsptn = /\(\s*(.*)\s*\)/g /* match supports (groups) */ - var propertyptn = /([^]*?);/g /* match properties leading semicolon */ - var selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */ - var pseudofmt = /[^]*?(:[rp][el]a[\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */ - var trimptn = /[ \t]+$/ /* match tail whitspace */ - - /* vendors */ - var webkit = '-webkit-' - var moz = '-moz-' - var ms = '-ms-' - - /* character codes */ - var SEMICOLON = 59 /* ; */ - var CLOSEBRACES = 125 /* } */ - var OPENBRACES = 123 /* { */ - var OPENPARENTHESES = 40 /* ( */ - var CLOSEPARENTHESES = 41 /* ) */ - var OPENBRACKET = 91 /* [ */ - var CLOSEBRACKET = 93 /* ] */ - var NEWLINE = 10 /* \n */ - var CARRIAGE = 13 /* \r */ - var TAB = 9 /* \t */ - var AT = 64 /* @ */ - var SPACE = 32 /* */ - var AND = 38 /* & */ - var DASH = 45 /* - */ - var UNDERSCORE = 95 /* _ */ - var STAR = 42 /* * */ - var COMMA = 44 /* , */ - var COLON = 58 /* : */ - var SINGLEQUOTE = 39 /* ' */ - var DOUBLEQUOTE = 34 /* " */ - var FOWARDSLASH = 47 /* / */ - var GREATERTHAN = 62 /* > */ - var PLUS = 43 /* + */ - var TILDE = 126 /* ~ */ - var NULL = 0 /* \0 */ - var FORMFEED = 12 /* \f */ - var VERTICALTAB = 11 /* \v */ - - /* special identifiers */ - var KEYFRAME = 107 /* k */ - var MEDIA = 109 /* m */ - var SUPPORTS = 115 /* s */ - var PLACEHOLDER = 112 /* p */ - var READONLY = 111 /* o */ - var IMPORT = 169 /* i */ - var CHARSET = 163 /* c */ - var DOCUMENT = 100 /* d */ - var PAGE = 112 /* p */ - - var column = 1 /* current column */ - var line = 1 /* current line numebr */ - var pattern = 0 /* :pattern */ - - var cascade = 1 /* #id h1 h2 vs h1#id h2#id */ - var prefix = 1 /* vendor prefix */ - var escape = 1 /* escape :global() pattern */ - var compress = 0 /* compress output */ - var semicolon = 0 /* no/semicolon option */ - var preserve = 0 /* preserve empty selectors */ - - /* empty reference */ - var array = [] - - /* plugins */ - var plugins = [] - var plugged = 0 - var should = null - - /* plugin context */ - var POSTS = -2 - var PREPS = -1 - var UNKWN = 0 - var PROPS = 1 - var BLCKS = 2 - var ATRUL = 3 - - /* plugin newline context */ - var unkwn = 0 - - /* keyframe animation */ - var keyed = 1 - var key = '' - - /* selector namespace */ - var nscopealt = '' - var nscope = '' - - /** - * Compile - * - * @param {Array} parent - * @param {Array} current - * @param {string} body - * @param {number} id - * @param {number} depth - * @return {string} - */ - function compile (parent, current, body, id, depth) { - var bracket = 0 /* brackets [] */ - var comment = 0 /* comments /* // or /* */ - var parentheses = 0 /* functions () */ - var quote = 0 /* quotes '', "" */ - - var first = 0 /* first character code */ - var second = 0 /* second character code */ - var code = 0 /* current character code */ - var tail = 0 /* previous character code */ - var trail = 0 /* character before previous code */ - var peak = 0 /* previous non-whitespace code */ - - var counter = 0 /* count sequence termination */ - var context = 0 /* track current context */ - var atrule = 0 /* track @at-rule context */ - var pseudo = 0 /* track pseudo token index */ - var caret = 0 /* current character index */ - var format = 0 /* control character formating context */ - var insert = 0 /* auto semicolon insertion */ - var invert = 0 /* inverted selector pattern */ - var length = 0 /* generic length address */ - var eof = body.length /* end of file(length) */ - var eol = eof - 1 /* end of file(characters) */ - - var char = '' /* current character */ - var chars = '' /* current buffer of characters */ - var child = '' /* next buffer of characters */ - var out = '' /* compiled body */ - var children = '' /* compiled children */ - var flat = '' /* compiled leafs */ - var selector /* generic selector address */ - var result /* generic address */ - - // ...build body - while (caret < eof) { - code = body.charCodeAt(caret) - - // eof varient - if (caret === eol) { - // last character + noop context, add synthetic padding for noop context to terminate - if (comment + quote + parentheses + bracket !== 0) { - if (comment !== 0) { - code = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH - } - - quote = parentheses = bracket = 0 - eof++ - eol++ - } - } - - if (comment + quote + parentheses + bracket === 0) { - // eof varient - if (caret === eol) { - if (format > 0) { - chars = chars.replace(formatptn, '') - } - - if (chars.trim().length > 0) { - switch (code) { - case SPACE: - case TAB: - case SEMICOLON: - case CARRIAGE: - case NEWLINE: { - break - } - default: { - chars += body.charAt(caret) - } - } - - code = SEMICOLON - } - } - - // auto semicolon insertion - if (insert === 1) { - switch (code) { - // false flags - case OPENBRACES: - case CLOSEBRACES: - case SEMICOLON: - case DOUBLEQUOTE: - case SINGLEQUOTE: - case OPENPARENTHESES: - case CLOSEPARENTHESES: - case COMMA: { - insert = 0 - } - // ignore - case TAB: - case CARRIAGE: - case NEWLINE: - case SPACE: { - break - } - // valid - default: { - insert = 0 - length = caret - first = code - caret-- - code = SEMICOLON - - while (length < eof) { - switch (body.charCodeAt(++length)) { - case NEWLINE: - case CARRIAGE: - case SEMICOLON: { - caret++ - code = first - } - case COLON: - case OPENBRACES: { - length = eof - } - } - } - } - } - } - - // token varient - switch (code) { - case OPENBRACES: { - chars = chars.trim() - first = chars.charCodeAt(0) - counter = 1 - length = ++caret - - while (caret < eof) { - code = body.charCodeAt(caret) - - switch (code) { - case OPENBRACES: { - counter++ - break - } - case CLOSEBRACES: { - counter-- - break - } - } - - if (counter === 0) { - break - } - - caret++ - } - - child = body.substring(length, caret) - - if (first === NULL) { - first = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0) - } - - switch (first) { - // @at-rule - case AT: { - if (format > 0) { - chars = chars.replace(formatptn, '') - } - - second = chars.charCodeAt(1) - - switch (second) { - case DOCUMENT: - case MEDIA: - case SUPPORTS: - case DASH: { - selector = current - break - } - default: { - selector = array - } - } - - child = compile(current, selector, child, second, depth+1) - length = child.length - - // preserve empty @at-rule - if (preserve > 0 && length === 0) { - length = chars.length - } - - // execute plugins, @at-rule context - if (plugged > 0) { - selector = select(array, chars, invert) - result = proxy(ATRUL, child, selector, current, line, column, length, second, depth) - chars = selector.join('') - - if (result !== void 0) { - if ((length = (child = result.trim()).length) === 0) { - second = 0 - child = '' - } - } - } - - if (length > 0) { - switch (second) { - case SUPPORTS: { - chars = chars.replace(supportsptn, supports) - } - case DOCUMENT: - case MEDIA: - case DASH: { - child = chars + '{' + child + '}' - break - } - case KEYFRAME: { - chars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : '')) - child = chars + '{' + child + '}' - - if (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) { - child = '@' + webkit + child + '@' + child - } else { - child = '@' + child - } - break - } - default: { - child = chars + child - - if (id === PAGE) { - child = (out += child, '') - } - } - } - } else { - child = '' - } - - break - } - // selector - default: { - child = compile(current, select(current, chars, invert), child, id, depth+1) - } - } - - children += child - - // reset - context = 0 - insert = 0 - pseudo = 0 - format = 0 - invert = 0 - atrule = 0 - chars = '' - child = '' - code = body.charCodeAt(++caret) - break - } - case CLOSEBRACES: - case SEMICOLON: { - chars = (format > 0 ? chars.replace(formatptn, '') : chars).trim() - - if ((length = chars.length) > 1) { - // monkey-patch missing colon - if (pseudo === 0) { - first = chars.charCodeAt(0) - - // first character is a letter or dash, buffer has a space character - if ((first === DASH || first > 96 && first < 123)) { - length = (chars = chars.replace(' ', ':')).length - } - } - - // execute plugins, property context - if (plugged > 0) { - if ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth)) !== void 0) { - if ((length = (chars = result.trim()).length) === 0) { - chars = '\0\0' - } - } - } - - first = chars.charCodeAt(0) - second = chars.charCodeAt(1) - - switch (first + second) { - case NULL: { - break - } - case IMPORT: - case CHARSET: { - flat += chars + body.charAt(caret) - break - } - default: { - if (chars.charCodeAt(length-1) === COLON) - break - - out += property(chars, first, second, chars.charCodeAt(2)) - } - } - } - - // reset - context = 0 - insert = 0 - pseudo = 0 - format = 0 - invert = 0 - chars = '' - code = body.charCodeAt(++caret) - break - } - } - } - - // parse characters - switch (code) { - case CARRIAGE: - case NEWLINE: { - // auto insert semicolon - if (comment + quote + parentheses + bracket + semicolon === 0) { - // valid non-whitespace characters that - // may precede a newline - switch (peak) { - case CLOSEPARENTHESES: - case SINGLEQUOTE: - case DOUBLEQUOTE: - case AT: - case TILDE: - case GREATERTHAN: - case STAR: - case PLUS: - case FOWARDSLASH: - case DASH: - case COLON: - case COMMA: - case SEMICOLON: - case OPENBRACES: - case CLOSEBRACES: { - break - } - default: { - // current buffer has a colon - if (pseudo > 0) { - insert = 1 - } - } - } - } - - // terminate line comment - if (comment === FOWARDSLASH) { - comment = 0 - } else if (cascade + context === 0) { - format = 1 - chars += '\0' - } - - // execute plugins, newline context - if (plugged * unkwn > 0) { - proxy(UNKWN, chars, current, parent, line, column, out.length, id, depth) - } - - // next line, reset column position - column = 1 - line++ - break - } - case SEMICOLON: - case CLOSEBRACES: { - if (comment + quote + parentheses + bracket === 0) { - column++ - break - } - } - default: { - // increment column position - column++ - - // current character - char = body.charAt(caret) - - // remove comments, escape functions, strings, attributes and prepare selectors - switch (code) { - case TAB: - case SPACE: { - if (quote + bracket + comment === 0) { - switch (tail) { - case COMMA: - case COLON: - case TAB: - case SPACE: { - char = '' - break - } - default: { - if (code !== SPACE) { - char = ' ' - } - } - } - } - break - } - // escape breaking control characters - case NULL: { - char = '\\0' - break - } - case FORMFEED: { - char = '\\f' - break - } - case VERTICALTAB: { - char = '\\v' - break - } - // & - case AND: { - // inverted selector pattern i.e html & - if (quote + comment + bracket === 0 && cascade > 0) { - invert = 1 - format = 1 - char = '\f' + char - } - break - } - // ::paceholder, l - // :read-ony, l - case 108: { - if (quote + comment + bracket + pattern === 0 && pseudo > 0) { - switch (caret - pseudo) { - // ::placeholder - case 2: { - if (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) { - pattern = tail - } - } - // :read-only - case 8: { - if (trail === READONLY) { - pattern = trail - } - } - } - } - break - } - // : - case COLON: { - if (quote + comment + bracket === 0) { - pseudo = caret - } - break - } - // selectors - case COMMA: { - if (comment + parentheses + quote + bracket === 0) { - format = 1 - char += '\r' - } - break - } - // quotes - case DOUBLEQUOTE: { - if (comment === 0) { - quote = quote === code ? 0 : (quote === 0 ? code : quote) - } - break - } - case SINGLEQUOTE: { - if (comment === 0) { - quote = quote === code ? 0 : (quote === 0 ? code : quote) - } - break - } - // attributes - case OPENBRACKET: { - if (quote + comment + parentheses === 0) { - bracket++ - } - break - } - case CLOSEBRACKET: { - if (quote + comment + parentheses === 0) { - bracket-- - } - break - } - // functions - case CLOSEPARENTHESES: { - if (quote + comment + bracket === 0) { - parentheses-- - } - break - } - case OPENPARENTHESES: { - if (quote + comment + bracket === 0) { - if (context === 0) { - switch (tail*2 + trail*3) { - // :matches - case 533: { - break - } - // :global, :not, :nth-child etc... - default: { - counter = 0 - context = 1 - } - } - } - - parentheses++ - } - break - } - case AT: { - if (comment + parentheses + quote + bracket + pseudo + atrule === 0) { - atrule = 1 - } - break - } - // block/line comments - case STAR: - case FOWARDSLASH: { - if (quote + bracket + parentheses > 0) { - break - } - - switch (comment) { - // initialize line/block comment context - case 0: { - switch (code*2 + body.charCodeAt(caret+1)*3) { - // // - case 235: { - comment = FOWARDSLASH - break - } - // /* - case 220: { - length = caret - comment = STAR - break - } - } - break - } - // end block comment context - case STAR: { - if (code === FOWARDSLASH && tail === STAR) { - // /* ... */, ! - if (body.charCodeAt(length+2) === 33) { - out += body.substring(length, caret+1) - } - char = '' - comment = 0 - } - } - } - } - } - - // ignore comment blocks - if (comment === 0) { - // aggressive isolation mode, divide each individual selector - // including selectors in :not function but excluding selectors in :global function - if (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) { - switch (code) { - case COMMA: - case TILDE: - case GREATERTHAN: - case PLUS: - case CLOSEPARENTHESES: - case OPENPARENTHESES: { - if (context === 0) { - // outside of an isolated context i.e nth-child(<...>) - switch (tail) { - case TAB: - case SPACE: - case NEWLINE: - case CARRIAGE: { - char = char + '\0' - break - } - default: { - char = '\0' + char + (code === COMMA ? '' : '\0') - } - } - format = 1 - } else { - // within an isolated context, sleep untill it's terminated - switch (code) { - case OPENPARENTHESES: { - context = ++counter - break - } - case CLOSEPARENTHESES: { - if ((context = --counter) === 0) { - format = 1 - char += '\0' - } - break - } - } - } - break - } - case TAB: - case SPACE: { - switch (tail) { - case NULL: - case OPENBRACES: - case CLOSEBRACES: - case SEMICOLON: - case COMMA: - case FORMFEED: - case TAB: - case SPACE: - case NEWLINE: - case CARRIAGE: { - break - } - default: { - // ignore in isolated contexts - if (context === 0) { - format = 1 - char += '\0' - } - } - } - } - } - } - - // concat buffer of characters - chars += char - - // previous non-whitespace character code - if (code !== SPACE && code !== TAB) { - peak = code - } - } - } - } - - // tail character codes - trail = tail - tail = code - - // visit every character - caret++ - } - - length = out.length - - // preserve empty selector - if (preserve > 0) { - if (length === 0 && children.length === 0 && (current[0].length === 0) === false) { - if (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) { - length = current.join(',').length + 2 - } - } - } - - if (length > 0) { - // cascade isolation mode? - selector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current - - // execute plugins, block context - if (plugged > 0) { - result = proxy(BLCKS, out, selector, parent, line, column, length, id, depth) - - if (result !== void 0 && (out = result).length === 0) { - return flat + out + children - } - } - - out = selector.join(',') + '{' + out + '}' - - if (prefix*pattern !== 0) { - if (prefix === 2 && !vendor(out, 2)) - pattern = 0 - - switch (pattern) { - // ::read-only - case READONLY: { - out = out.replace(readonlyptn, ':'+moz+'$1')+out - break - } - // ::placeholder - case PLACEHOLDER: { - out = ( - out.replace(plcholdrptn, '::' + webkit + 'input-$1') + - out.replace(plcholdrptn, '::' + moz + '$1') + - out.replace(plcholdrptn, ':' + ms + 'input-$1') + out - ) - break - } - } - - pattern = 0 - } - } - - return flat + out + children - } - - /** - * Select - * - * @param {Array} parent - * @param {string} current - * @param {number} invert - * @return {Array} - */ - function select (parent, current, invert) { - var selectors = current.trim().split(selectorptn) - var out = selectors - - var length = selectors.length - var l = parent.length - - switch (l) { - // 0-1 parent selectors - case 0: - case 1: { - for (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) { - out[i] = scope(selector, out[i], invert, l).trim() - } - break - } - // >2 parent selectors, nested - default: { - for (var i = 0, j = 0, out = []; i < length; ++i) { - for (var k = 0; k < l; ++k) { - out[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim() - } - } - } - } - - return out - } - - /** - * Scope - * - * @param {string} parent - * @param {string} current - * @param {number} invert - * @param {number} level - * @return {string} - */ - function scope (parent, current, invert, level) { - var selector = current - var code = selector.charCodeAt(0) - - // trim leading whitespace - if (code < 33) { - code = (selector = selector.trim()).charCodeAt(0) - } - - switch (code) { - // & - case AND: { - switch (cascade + level) { - case 0: - case 1: { - if (parent.trim().length === 0) { - break - } - } - default: { - return selector.replace(andptn, '$1'+parent.trim()) - } - } - break - } - // : - case COLON: { - switch (selector.charCodeAt(1)) { - // g in :global - case 103: { - if (escape > 0 && cascade > 0) { - return selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope) - } - break - } - default: { - // :hover - return parent.trim() + selector - } - } - } - default: { - // html & - if (invert*cascade > 0 && selector.indexOf('\f') > 0) { - return selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim()) - } - } - } - - return parent + selector - } - - /** - * Property - * - * @param {string} input - * @param {number} first - * @param {number} second - * @param {number} third - * @return {string} - */ - function property (input, first, second, third) { - var index = 0 - var out = input + ';' - var hash = (first*2) + (second*3) + (third*4) - var cache - - // animation: a, n, i characters - if (hash === 944) { - return animation(out) - } else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) { - return out - } - - // vendor prefix - switch (hash) { - // text-decoration/text-size-adjust: t, e, x - case 1015: { - // text-size-adjust, - - return out.charCodeAt(9) === DASH ? webkit + out + out : out - } - // filter/fill f, i, l - case 951: { - // filter, t - return out.charCodeAt(3) === 116 ? webkit + out + out : out - } - // color/column, c, o, l - case 963: { - // column, n - return out.charCodeAt(5) === 110 ? webkit + out + out : out - } - // box-decoration-break, b, o, x - case 1009: { - if (out.charCodeAt(4) !== 100) { - break - } - } - // mask, m, a, s - // clip-path, c, l, i - case 969: - case 942: { - return webkit + out + out - } - // appearance: a, p, p - case 978: { - return webkit + out + moz + out + out - } - // hyphens: h, y, p - // user-select: u, s, e - case 1019: - case 983: { - return webkit + out + moz + out + ms + out + out - } - // background/backface-visibility, b, a, c - case 883: { - // backface-visibility, - - return out.charCodeAt(8) === DASH ? webkit + out + out : out - } - // flex: f, l, e - case 932: { - if (out.charCodeAt(4) === DASH) { - switch (out.charCodeAt(5)) { - // flex-grow, g - case 103: { - return webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out - } - // flex-shrink, s - case 115: { - return webkit + out + ms + out.replace('shrink', 'negative') + out - } - // flex-basis, b - case 98: { - return webkit + out + ms + out.replace('basis', 'preferred-size') + out - } - } - } - - return webkit + out + ms + out + out - } - // order: o, r, d - case 964: { - return webkit + out + ms + 'flex' + '-' + out + out - } - // justify-items/justify-content, j, u, s - case 1023: { - // justify-content, c - if (out.charCodeAt(8) !== 99) { - break - } - - cache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify') - return webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out - } - // cursor, c, u, r - case 1005: { - return cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out - } - // writing-mode, w, r, i - case 1000: { - cache = out.substring(13).trim() - index = cache.indexOf('-') + 1 - - switch (cache.charCodeAt(0)+cache.charCodeAt(index)) { - // vertical-lr - case 226: { - cache = out.replace(writingptn, 'tb') - break - } - // vertical-rl - case 232: { - cache = out.replace(writingptn, 'tb-rl') - break - } - // horizontal-tb - case 220: { - cache = out.replace(writingptn, 'lr') - break - } - default: { - return out - } - } - - return webkit + out + ms + cache + out - } - // position: sticky - case 1017: { - if (out.indexOf('sticky', 9) === -1) { - return out - } - } - // display(flex/inline-flex/inline-box): d, i, s - case 975: { - index = (out = input).length - 10 - cache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim() - - switch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) { - // inline- - case 203: { - // inline-box - if (cache.charCodeAt(8) < 111) { - break - } - } - // inline-box/sticky - case 115: { - out = out.replace(cache, webkit+cache)+';'+out - break - } - // inline-flex - // flex - case 207: - case 102: { - out = ( - out.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+ - out.replace(cache, webkit+cache)+';'+ - out.replace(cache, ms+cache+'box')+';'+ - out - ) - } - } - - return out + ';' - } - // align-items, align-center, align-self: a, l, i, - - case 938: { - if (out.charCodeAt(5) === DASH) { - switch (out.charCodeAt(6)) { - // align-items, i - case 105: { - cache = out.replace('-items', '') - return webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out - } - // align-self, s - case 115: { - return webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out - } - // align-content - default: { - return webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '') + out - } - } - } - break - } - // width: min-content / width: max-content - case 953: { - if ((index = out.indexOf('-content', 9)) > 0) { - // width: min-content / width: max-content - if (out.charCodeAt(index - 3) === 109 && out.charCodeAt(index - 4) !== 45) { - cache = out.substring(index - 3) - return 'width:' + webkit + cache + 'width:' + moz + cache + 'width:' + cache - } - } - break - } - // transform, transition: t, r, a - case 962: { - out = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out - - // transitions - if (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) { - return out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out - } - - break - } - } - - return out - } - - var i = 0 - - /** - * Vendor - * - * @param {string} content - * @param {number} context - * @return {boolean} - */ - function vendor (content, context) { - var index = content.indexOf(context === 1 ? ':' : '{') - var key = content.substring(0, context !== 3 ? index : 10) - var value = content.substring(index + 1, content.length - 1) - - return should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context) - } - - /** - * Supports - * - * @param {string} match - * @param {string} group - * @return {string} - */ - function supports (match, group) { - var out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2)) - - return out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')' - } - - /** - * Animation - * - * @param {string} input - * @return {string} - */ - function animation (input) { - var length = input.length - var index = input.indexOf(':', 9) + 1 - var declare = input.substring(0, index).trim() - var out = input.substring(index, length-1).trim() - - switch (input.charCodeAt(9)*keyed) { - case 0: { - break - } - // animation-*, - - case DASH: { - // animation-name, n - if (input.charCodeAt(10) !== 110) { - break - } - } - // animation/animation-name - default: { - // split in case of multiple animations - var list = out.split((out = '', animationptn)) - - for (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) { - var value = list[i] - var items = value.split(propertiesptn) - - while (value = items[index]) { - var peak = value.charCodeAt(0) - - if (keyed === 1 && ( - // letters - (peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE || - // dash but not in sequence i.e -- - (peak === DASH && value.charCodeAt(1) !== DASH) - )) { - // not a number/function - switch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) { - case 1: { - switch (value) { - // not a valid reserved keyword - case 'infinite': case 'alternate': case 'backwards': case 'running': - case 'normal': case 'forwards': case 'both': case 'none': case 'linear': - case 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out': - case 'paused': case 'reverse': case 'alternate-reverse': case 'inherit': - case 'initial': case 'unset': case 'step-start': case 'step-end': { - break - } - default: { - value += key - } - } - } - } - } - - items[index++] = value - } - - out += (i === 0 ? '' : ',') + items.join(' ') - } - } - } - - out = declare + out + ';' - - if (prefix === 1 || (prefix === 2 && vendor(out, 1))) - return webkit + out + out - - return out - } - - /** - * Isolate - * - * @param {Array} current - */ - function isolate (current) { - for (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) { - // split individual elements in a selector i.e h1 h2 === [h1, h2] - var elements = current[i].split(elementptn) - var out = '' - - for (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) { - // empty element - if ((size = (element = elements[j]).length) === 0 && l > 1) { - continue - } - - tail = out.charCodeAt(out.length-1) - code = element.charCodeAt(0) - padding = '' - - if (j !== 0) { - // determine if we need padding - switch (tail) { - case STAR: - case TILDE: - case GREATERTHAN: - case PLUS: - case SPACE: - case OPENPARENTHESES: { - break - } - default: { - padding = ' ' - } - } - } - - switch (code) { - case AND: { - element = padding + nscopealt - } - case TILDE: - case GREATERTHAN: - case PLUS: - case SPACE: - case CLOSEPARENTHESES: - case OPENPARENTHESES: { - break - } - case OPENBRACKET: { - element = padding + element + nscopealt - break - } - case COLON: { - switch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) { - // :global - case 530: { - if (escape > 0) { - element = padding + element.substring(8, size - 1) - break - } - } - // :hover, :nth-child(), ... - default: { - if (j < 1 || elements[j-1].length < 1) { - element = padding + nscopealt + element - } - } - } - break - } - case COMMA: { - padding = '' - } - default: { - if (size > 1 && element.indexOf(':') > 0) { - element = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2') - } else { - element = padding + element + nscopealt - } - } - } - - out += element - } - - selector[i] = out.replace(formatptn, '').trim() - } - - return selector - } - - /** - * Proxy - * - * @param {number} context - * @param {string} content - * @param {Array} selectors - * @param {Array} parents - * @param {number} line - * @param {number} column - * @param {number} length - * @param {number} id - * @param {number} depth - * @return {(string|void|*)} - */ - function proxy (context, content, selectors, parents, line, column, length, id, depth) { - for (var i = 0, out = content, next; i < plugged; ++i) { - switch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth)) { - case void 0: - case false: - case true: - case null: { - break - } - default: { - out = next - } - } - } - - switch (out) { - case void 0: - case false: - case true: - case null: - case content: { - break - } - default: { - return out - } - } - } - - /** - * Minify - * - * @param {(string|*)} output - * @return {string} - */ - function minify (output) { - return output - .replace(formatptn, '') - .replace(beforeptn, '') - .replace(afterptn, '$1') - .replace(tailptn, '$1') - .replace(whiteptn, ' ') - } - - /** - * Use - * - * @param {(Array|function(...?)|number|void)?} plugin - */ - function use (plugin) { - switch (plugin) { - case void 0: - case null: { - plugged = plugins.length = 0 - break - } - default: { - switch (plugin.constructor) { - case Array: { - for (var i = 0, length = plugin.length; i < length; ++i) { - use(plugin[i]) - } - break - } - case Function: { - plugins[plugged++] = plugin - break - } - case Boolean: { - unkwn = !!plugin|0 - } - } - } - } - - return use - } - - /** - * Set - * - * @param {*} options - */ - function set (options) { - for (var name in options) { - var value = options[name] - switch (name) { - case 'keyframe': keyed = value|0; break - case 'global': escape = value|0; break - case 'cascade': cascade = value|0; break - case 'compress': compress = value|0; break - case 'semicolon': semicolon = value|0; break - case 'preserve': preserve = value|0; break - case 'prefix': - should = null - - if (!value) { - prefix = 0 - } else if (typeof value !== 'function') { - prefix = 1 - } else { - prefix = 2 - should = value - } - } - } - - return set - } - - /** - * Stylis - * - * @param {string} selector - * @param {string} input - * @return {*} - */ - function stylis (selector, input) { - if (this !== void 0 && this.constructor === stylis) { - return factory(selector) - } - - // setup - var ns = selector - var code = ns.charCodeAt(0) - - // trim leading whitespace - if (code < 33) { - code = (ns = ns.trim()).charCodeAt(0) - } - - // keyframe/animation namespace - if (keyed > 0) { - key = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-') - } - - // reset, used to assert if a plugin is moneky-patching the return value - code = 1 - - // cascade/isolate - if (cascade === 1) { - nscope = ns - } else { - nscopealt = ns - } - - var selectors = [nscope] - var result - - // execute plugins, pre-process context - if (plugged > 0) { - result = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0) - - if (result !== void 0 && typeof result === 'string') { - input = result - } - } - - // build - var output = compile(array, selectors, input, 0, 0) - - // execute plugins, post-process context - if (plugged > 0) { - result = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0) - - // bypass minification - if (result !== void 0 && typeof(output = result) !== 'string') { - code = 0 - } - } - - // reset - key = '' - nscope = '' - nscopealt = '' - pattern = 0 - line = 1 - column = 1 - - return compress*code === 0 ? output : minify(output) - } - - stylis['use'] = use - stylis['set'] = set - - if (options !== void 0) { - set(options) - } - - return stylis -})); - - -/***/ }), - -/***/ "../node_modules/trendmicro-ui/dist/css/trendmicro-ui.css": -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a "}},nn=function(n,t){return function(){var e,o=((e={})[k]=J(t),e["data-styled-version"]="4.1.3",e),r=X();return r&&(o.nonce=r),u.a.createElement("style",g({},o,{dangerouslySetInnerHTML:{__html:n()}}))}},tn=function(n){return function(){return Object.keys(n)}},en=function(n){return document.createTextNode(q(n))},on=function n(t,e){var o=void 0===t?Object.create(null):t,r=void 0===e?Object.create(null):e,i=function(n){var t=r[n];return void 0!==t?t:r[n]=[""]},a=function(){var n="";for(var t in r){var e=r[t][0];e&&(n+=q(t)+e)}return n};return{clone:function(){var t=function(n){var t=Object.create(null);for(var e in n)t[e]=g({},n[e]);return t}(o),e=Object.create(null);for(var i in r)e[i]=[r[i][0]];return n(t,e)},css:a,getIds:tn(r),hasNameForId:Q(o),insertMarker:i,insertRules:function(n,t,e){i(n)[0]+=t.join(" "),V(o,n,e)},removeRules:function(n){var t=r[n];void 0!==t&&(t[0]="",Y(o,n))},sealed:!1,styleTag:null,toElement:nn(a,o),toHTML:H(a,o)}},rn=function(n,t,e,o,r){if(E&&!e){var i=function(n,t,e){var o=document.createElement("style");o.setAttribute(k,""),o.setAttribute("data-styled-version","4.1.3");var r=X();if(r&&o.setAttribute("nonce",r),o.appendChild(document.createTextNode("")),n&&!t)n.appendChild(o);else{if(!t||!n||!t.parentNode)throw new O(6);t.parentNode.insertBefore(o,e?t:t.nextSibling)}return o}(n,t,o);return N?function(n,t){var e=Object.create(null),o=Object.create(null),r=void 0!==t,i=!1,a=function(t){var r=o[t];return void 0!==r?r:(o[t]=en(t),n.appendChild(o[t]),e[t]=Object.create(null),o[t])},l=function(){var n="";for(var t in o)n+=o[t].data;return n};return{clone:function(){throw new O(5)},css:l,getIds:tn(o),hasNameForId:Q(e),insertMarker:a,insertRules:function(n,o,l){for(var u=a(n),s=[],c=o.length,d=0;d0&&(i=!0,t().insertRules(n+"-import",s))},removeRules:function(a){var l=o[a];if(void 0!==l){var u=en(a);n.replaceChild(u,l),o[a]=u,Y(e,a),r&&i&&t().removeRules(a+"-import")}},sealed:!1,styleTag:n,toElement:nn(l,e),toHTML:H(l,e)}}(i,r):function(n,t){var e=Object.create(null),o=Object.create(null),r=[],i=void 0!==t,a=!1,l=function(n){var t=o[n];return void 0!==t?t:(o[n]=r.length,r.push(0),Y(e,n),o[n])},u=function(){var t=K(n).cssRules,e="";for(var i in o){e+=q(i);for(var a=o[i],l=B(r,a),u=l-r[a];u0&&(a=!0,t().insertRules(o+"-import",b)),r[c]+=f,V(e,o,s)},removeRules:function(l){var u=o[l];if(void 0!==u){var s=r[u];!function(n,t,e){for(var o=t-e,r=t;r>o;r-=1)n.deleteRule(r)}(K(n),B(r,u)-1,s),r[u]=0,Y(e,l),i&&a&&t().removeRules(l+"-import")}},sealed:!1,styleTag:n,toElement:nn(u,e),toHTML:H(u,e)}}(i,r)}return on()},an=/\s+/,ln=void 0;ln=E?N?40:1e3:-1;var un=0,sn=void 0,cn=function(){function n(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:E?document.head:null,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];h(this,n),this.getImportRuleTag=function(){var n=t.importRuleTag;if(void 0!==n)return n;var e=t.tags[0];return t.importRuleTag=rn(t.target,e?e.styleTag:null,t.forceServer,!0)},un+=1,this.id=un,this.forceServer=o,this.target=o?null:e,this.tagMap={},this.deferred={},this.rehydratedNames={},this.ignoreRehydratedNames={},this.tags=[],this.capacity=1,this.clones=[]}return n.prototype.rehydrate=function(){if(!E||this.forceServer)return this;var n=[],t=[],e=!1,o=document.querySelectorAll("style["+k+'][data-styled-version="4.1.3"]'),r=o.length;if(!r)return this;for(var i=0;i0&&void 0!==arguments[0]&&arguments[0];sn=new n(void 0,t).rehydrate()},n.prototype.clone=function(){var t=new n(this.target,this.forceServer);return this.clones.push(t),t.tags=this.tags.map(function(n){for(var e=n.getIds(),o=n.clone(),r=0;r1?t-1:0),o=1;o=4;)t=1540483477*(65535&(t=255&n.charCodeAt(r)|(255&n.charCodeAt(++r))<<8|(255&n.charCodeAt(++r))<<16|(255&n.charCodeAt(++r))<<24))+((1540483477*(t>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(t=1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16)),e-=4,++r;switch(e){case 3:o^=(255&n.charCodeAt(r+2))<<16;case 2:o^=(255&n.charCodeAt(r+1))<<8;case 1:o=1540483477*(65535&(o^=255&n.charCodeAt(r)))+((1540483477*(o>>>16)&65535)<<16)}return((o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16))^o>>>15)>>>0}var xn=52,yn=function(n){return String.fromCharCode(n+(n>25?39:97))};function wn(n){var t="",e=void 0;for(e=n;e>xn;e=Math.floor(e/xn))t=yn(e%xn)+t;return yn(e%xn)+t}function Cn(n,t){for(var e=0;e2&&void 0!==arguments[2]?arguments[2]:_,o=!!e&&n.theme===e.theme;return n.theme&&!o?n.theme:t||e.theme},En=/[[\].#*$><+~=|^:(),"'`-]+/g,Nn=/(^-|-$)/g;function On(n){return n.replace(En,"-").replace(Nn,"")}function Pn(n){return"string"==typeof n&&!0}var Dn={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDerivedStateFromProps:!0,propTypes:!0,type:!0},An={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Ln=((_n={})[c.ForwardRef]={$$typeof:!0,render:!0},_n),zn=Object.defineProperty,In=Object.getOwnPropertyNames,Mn=Object.getOwnPropertySymbols,Fn=void 0===Mn?function(){return[]}:Mn,Un=Object.getOwnPropertyDescriptor,Zn=Object.getPrototypeOf,Wn=Object.prototype,$n=Array.prototype;function Rn(n,t,e){if("string"!=typeof t){var o=Zn(t);o&&o!==Wn&&Rn(n,o,e);for(var r=$n.concat(In(t),Fn(t)),i=Ln[n.$$typeof]||Dn,a=Ln[t.$$typeof]||Dn,l=r.length,u=void 0,s=void 0;l--;)if(s=r[l],!(An[s]||e&&e[s]||a&&a[s]||i&&i[s])&&(u=Un(t,s)))try{zn(n,s,u)}catch(n){}return n}return n}var Xn=Object(l.createContext)(),Vn=Xn.Consumer,Yn=(function(n){function t(e){h(this,t);var o=y(this,n.call(this,e));return o.getContext=Object(d.a)(o.getContext.bind(o)),o.renderInner=o.renderInner.bind(o),o}v(t,n),t.prototype.render=function(){return this.props.children?u.a.createElement(Xn.Consumer,null,this.renderInner):null},t.prototype.renderInner=function(n){var t=this.getContext(this.props.theme,n);return u.a.createElement(Xn.Provider,{value:t},u.a.Children.only(this.props.children))},t.prototype.getTheme=function(n,t){if(T(n))return n(t);if(null===n||Array.isArray(n)||"object"!==(void 0===n?"undefined":b(n)))throw new O(8);return g({},t,n)},t.prototype.getContext=function(n,t){return this.getTheme(n,t)}}(l.Component),function(){function n(){h(this,n),this.masterSheet=cn.master,this.instance=this.masterSheet.clone(),this.sealed=!1}n.prototype.seal=function(){if(!this.sealed){var n=this.masterSheet.clones.indexOf(this.instance);this.masterSheet.clones.splice(n,1),this.sealed=!0}},n.prototype.collectStyles=function(n){if(this.sealed)throw new O(2);return u.a.createElement(Jn,{sheet:this.instance},n)},n.prototype.getStyleTags=function(){return this.seal(),this.instance.toHTML()},n.prototype.getStyleElement=function(){return this.seal(),this.instance.toReactElements()},n.prototype.interleaveWithNodeStream=function(n){throw new O(3)}}(),Object(l.createContext)()),Qn=Yn.Consumer,Jn=function(n){function t(e){h(this,t);var o=y(this,n.call(this,e));return o.getContext=Object(d.a)(o.getContext),o}return v(t,n),t.prototype.getContext=function(n,t){if(n)return n;if(t)return new cn(t);throw new O(4)},t.prototype.render=function(){var n=this.props,t=n.children,e=n.sheet,o=n.target;return u.a.createElement(Yn.Provider,{value:this.getContext(e,o)},t)},t}(l.Component),Kn=(new Set,{});var Gn=function(n){function t(){h(this,t);var e=y(this,n.call(this));return e.attrs={},e.renderOuter=e.renderOuter.bind(e),e.renderInner=e.renderInner.bind(e),e}return v(t,n),t.prototype.render=function(){return u.a.createElement(Qn,null,this.renderOuter)},t.prototype.renderOuter=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:cn.master;return this.styleSheet=n,this.props.forwardedComponent.componentStyle.isStatic?this.renderInner():u.a.createElement(Vn,null,this.renderInner)},t.prototype.renderInner=function(n){var t=this.props.forwardedComponent,e=t.componentStyle,o=t.defaultProps,r=(t.displayName,t.foldedComponentIds),i=t.styledComponentId,a=t.target,u=void 0;u=e.isStatic?this.generateAndInjectStyles(_,this.props):void 0!==n?this.generateAndInjectStyles(kn(this.props,n,o),this.props):this.generateAndInjectStyles(this.props.theme||_,this.props);var s=this.props.as||this.attrs.as||a,c=Pn(s),d={},f=g({},this.attrs,this.props),b=void 0;for(b in f)"forwardedComponent"!==b&&"as"!==b&&("forwardedRef"===b?d.ref=f[b]:c&&!Object(p.a)(b)||(d[b]=f[b]));return this.props.style&&this.attrs.style&&(d.style=g({},this.attrs.style,this.props.style)),d.className=Array.prototype.concat(r,this.props.className,i,this.attrs.className,u).filter(Boolean).join(" "),Object(l.createElement)(s,d)},t.prototype.buildExecutionContext=function(n,t,e){var o=this,r=g({},t,{theme:n});return e.length?(this.attrs={},e.forEach(function(n){var t,e=n,i=!1,a=void 0,l=void 0;for(l in T(e)&&(e=e(r),i=!0),e)a=e[l],i||!T(a)||(t=a)&&t.prototype&&t.prototype.isReactComponent||j(a)||(a=a(r)),o.attrs[l]=a,r[l]=a}),r):r},t.prototype.generateAndInjectStyles=function(n,t){var e=t.forwardedComponent,o=e.attrs,r=e.componentStyle;e.warnTooManyClasses;return r.isStatic&&!o.length?r.generateAndInjectStyles(_,this.styleSheet):r.generateAndInjectStyles(this.buildExecutionContext(n,t,o),this.styleSheet)},t}(l.Component);function qn(n,t,e){var o=j(n),r=!Pn(n),i=t.displayName,a=void 0===i?function(n){return Pn(n)?"styled."+n:"Styled("+S(n)+")"}(n):i,l=t.componentId,s=void 0===l?function(n,t,e){var o="string"!=typeof t?"sc":On(t),r=(Kn[o]||0)+1;Kn[o]=r;var i=o+"-"+n.generateName(o+r);return e?e+"-"+i:i}(jn,t.displayName,t.parentComponentId):l,c=t.ParentComponent,d=void 0===c?Gn:c,p=t.attrs,f=void 0===p?C:p,b=t.displayName&&t.componentId?On(t.displayName)+"-"+t.componentId:t.componentId||s,h=o&&n.attrs?Array.prototype.concat(n.attrs,f).filter(Boolean):f,m=new jn(o?n.componentStyle.rules.concat(e):e,h,b),v=u.a.forwardRef(function(n,t){return u.a.createElement(d,g({},n,{forwardedComponent:v,forwardedRef:t}))});return v.attrs=h,v.componentStyle=m,v.displayName=a,v.foldedComponentIds=o?Array.prototype.concat(n.foldedComponentIds,n.styledComponentId):C,v.styledComponentId=b,v.target=o?n.target:n,v.withComponent=function(n){var o=t.componentId,r=x(t,["componentId"]),i=o&&o+"-"+(Pn(n)?n:On(S(n)));return qn(n,g({},r,{attrs:h,componentId:i,ParentComponent:d}),e)},v.toString=function(){return"."+v.styledComponentId},r&&Rn(v,n,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,styledComponentId:!0,target:!0,withComponent:!0}),v}var Bn=function(n){return function n(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:_;if(!Object(c.isValidElementType)(e))throw new O(1,String(e));var r=function(){return t(e,o,gn.apply(void 0,arguments))};return r.withConfig=function(r){return n(t,e,g({},o,r))},r.attrs=function(r){return n(t,e,g({},o,{attrs:Array.prototype.concat(o.attrs,r).filter(Boolean)}))},r}(qn,n)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach(function(n){Bn[n]=Bn(n)});!function(){function n(t,e){h(this,n),this.rules=t,this.componentId=e,this.isStatic=Cn(t,C),cn.master.hasId(e)||cn.master.deferredInject(e,[])}n.prototype.createStyles=function(n,t){var e=R(mn(this.rules,n,t),"");t.inject(this.componentId,e)},n.prototype.removeStyles=function(n){var t=this.componentId;n.hasId(t)&&n.remove(t)},n.prototype.renderStyles=function(n,t){this.removeStyles(t),this.createStyles(n,t)}}();E&&(window.scCGSHMRCache={});var Hn=function(n){return n.replace(/\s|\\n/g,"")};function nt(n){for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o])/g,v=/([[}=:>])\s+/g,x=/(\{[^{]+?);(?=\})/g,y=/\s{2,}/g,w=/([^\(])(:+) */g,C=/[svh]\w+-[tblr]{2}/,_=/\(\s*(.*)\s*\)/g,T=/([\s\S]*?);/g,S=/-self|flex-/g,j=/[^]*?(:[rp][el]a[\w-]+)[^]*/,k=/stretch|:\s*\w+\-(?:conte|avail)/,E=/([^-])(image-set\()/,N="-webkit-",O="-moz-",P="-ms-",D=59,A=125,L=123,z=40,I=41,M=91,F=93,U=10,Z=13,W=9,$=64,R=32,X=38,V=45,Y=95,Q=42,J=44,K=58,G=39,q=34,B=47,H=62,nn=43,tn=126,en=0,on=12,rn=11,an=107,ln=109,un=115,sn=112,cn=111,dn=105,pn=99,fn=100,bn=112,hn=1,mn=1,gn=0,vn=1,xn=1,yn=1,wn=0,Cn=0,_n=0,Tn=[],Sn=[],jn=0,kn=null,En=-2,Nn=-1,On=0,Pn=1,Dn=2,An=3,Ln=0,zn=1,In="",Mn="",Fn="";function Un(n,t,r,i,a){for(var l,u,c=0,d=0,p=0,f=0,g=0,v=0,x=0,y=0,C=0,T=0,S=0,j=0,k=0,E=0,Y=0,wn=0,Sn=0,kn=0,En=0,Nn=r.length,Wn=Nn-1,Qn="",Jn="",Kn="",Gn="",qn="",Bn="";Y0&&(Jn=Jn.replace(o,"")),Jn.trim().length>0)){switch(x){case R:case W:case D:case Z:case U:break;default:Jn+=r.charAt(Y)}x=D}if(1===Sn)switch(x){case L:case A:case D:case q:case G:case z:case I:case J:Sn=0;case W:case Z:case U:case R:break;default:for(Sn=0,En=Y,g=x,Y--,x=D;En0&&(++Y,x=g);case L:En=Nn}}switch(x){case L:for(g=(Jn=Jn.trim()).charCodeAt(0),S=1,En=++Y;Y0&&(Jn=Jn.replace(o,"")),v=Jn.charCodeAt(1)){case fn:case ln:case un:case V:l=t;break;default:l=Tn}if(En=(Kn=Un(t,l,Kn,v,a+1)).length,_n>0&&0===En&&(En=Jn.length),jn>0&&(l=Zn(Tn,Jn,kn),u=Vn(An,Kn,l,t,mn,hn,En,v,a,i),Jn=l.join(""),void 0!==u&&0===(En=(Kn=u.trim()).length)&&(v=0,Kn="")),En>0)switch(v){case un:Jn=Jn.replace(_,Xn);case fn:case ln:case V:Kn=Jn+"{"+Kn+"}";break;case an:Kn=(Jn=Jn.replace(b,"$1 $2"+(zn>0?In:"")))+"{"+Kn+"}",Kn=1===xn||2===xn&&Rn("@"+Kn,3)?"@"+N+Kn+"@"+Kn:"@"+Kn;break;default:Kn=Jn+Kn,i===bn&&(Gn+=Kn,Kn="")}else Kn="";break;default:Kn=Un(t,Zn(t,Jn,kn),Kn,i,a+1)}qn+=Kn,j=0,Sn=0,E=0,wn=0,kn=0,k=0,Jn="",Kn="",x=r.charCodeAt(++Y);break;case A:case D:if((En=(Jn=(wn>0?Jn.replace(o,""):Jn).trim()).length)>1)switch(0===E&&((g=Jn.charCodeAt(0))===V||g>96&&g<123)&&(En=(Jn=Jn.replace(" ",":")).length),jn>0&&void 0!==(u=Vn(Pn,Jn,t,n,mn,hn,Gn.length,i,a,i))&&0===(En=(Jn=u.trim()).length)&&(Jn="\0\0"),g=Jn.charCodeAt(0),v=Jn.charCodeAt(1),g){case en:break;case $:if(v===dn||v===pn){Bn+=Jn+r.charAt(Y);break}default:if(Jn.charCodeAt(En-1)===K)break;Gn+=$n(Jn,g,v,Jn.charCodeAt(2))}j=0,Sn=0,E=0,wn=0,kn=0,Jn="",x=r.charCodeAt(++Y)}}switch(x){case Z:case U:if(d+f+p+c+Cn===0)switch(T){case I:case G:case q:case $:case tn:case H:case Q:case nn:case B:case V:case K:case J:case D:case L:case A:break;default:E>0&&(Sn=1)}d===B?d=0:vn+j===0&&i!==an&&Jn.length>0&&(wn=1,Jn+="\0"),jn*Ln>0&&Vn(On,Jn,t,n,mn,hn,Gn.length,i,a,i),hn=1,mn++;break;case D:case A:if(d+f+p+c===0){hn++;break}default:switch(hn++,Qn=r.charAt(Y),x){case W:case R:if(f+c+d===0)switch(y){case J:case K:case W:case R:Qn="";break;default:x!==R&&(Qn=" ")}break;case en:Qn="\\0";break;case on:Qn="\\f";break;case rn:Qn="\\v";break;case X:f+d+c===0&&vn>0&&(kn=1,wn=1,Qn="\f"+Qn);break;case 108:if(f+d+c+gn===0&&E>0)switch(Y-E){case 2:y===sn&&r.charCodeAt(Y-3)===K&&(gn=y);case 8:C===cn&&(gn=C)}break;case K:f+d+c===0&&(E=Y);break;case J:d+p+f+c===0&&(wn=1,Qn+="\r");break;case q:case G:0===d&&(f=f===x?0:0===f?x:f);break;case M:f+d+p===0&&c++;break;case F:f+d+p===0&&c--;break;case I:f+d+c===0&&p--;break;case z:if(f+d+c===0){if(0===j)switch(2*y+3*C){case 533:break;default:S=0,j=1}p++}break;case $:d+p+f+c+E+k===0&&(k=1);break;case Q:case B:if(f+c+p>0)break;switch(d){case 0:switch(2*x+3*r.charCodeAt(Y+1)){case 235:d=B;break;case 220:En=Y,d=Q}break;case Q:x===B&&y===Q&&En+2!==Y&&(33===r.charCodeAt(En+2)&&(Gn+=r.substring(En,Y+1)),Qn="",d=0)}}if(0===d){if(vn+f+c+k===0&&i!==an&&x!==D)switch(x){case J:case tn:case H:case nn:case I:case z:if(0===j){switch(y){case W:case R:case U:case Z:Qn+="\0";break;default:Qn="\0"+Qn+(x===J?"":"\0")}wn=1}else switch(x){case z:E+7===Y&&108===y&&(E=0),j=++S;break;case I:0==(j=--S)&&(wn=1,Qn+="\0")}break;case W:case R:switch(y){case en:case L:case A:case D:case J:case on:case W:case R:case U:case Z:break;default:0===j&&(wn=1,Qn+="\0")}}Jn+=Qn,x!==R&&x!==W&&(T=x)}}C=y,y=x,Y++}if(En=Gn.length,_n>0&&0===En&&0===qn.length&&0===t[0].length==0&&(i!==ln||1===t.length&&(vn>0?Mn:Fn)===t[0])&&(En=t.join(",").length+2),En>0){if(l=0===vn&&i!==an?function(n){for(var t,e,r=0,i=n.length,a=Array(i);r1)){if(p=u.charCodeAt(u.length-1),f=e.charCodeAt(0),t="",0!==c)switch(p){case Q:case tn:case H:case nn:case R:case z:break;default:t=" "}switch(f){case X:e=t+Mn;case tn:case H:case nn:case R:case I:case z:break;case M:e=t+e+Mn;break;case K:switch(2*e.charCodeAt(1)+3*e.charCodeAt(2)){case 530:if(yn>0){e=t+e.substring(8,d-1);break}default:(c<1||l[c-1].length<1)&&(e=t+Mn+e)}break;case J:t="";default:e=d>1&&e.indexOf(":")>0?t+e.replace(w,"$1"+Mn+"$2"):t+e+Mn}u+=e}a[r]=u.replace(o,"").trim()}return a}(t):t,jn>0&&void 0!==(u=Vn(Dn,Gn,l,n,mn,hn,En,i,a,i))&&0===(Gn=u).length)return Bn+Gn+qn;if(Gn=l.join(",")+"{"+Gn+"}",xn*gn!=0){switch(2!==xn||Rn(Gn,2)||(gn=0),gn){case cn:Gn=Gn.replace(m,":"+O+"$1")+Gn;break;case sn:Gn=Gn.replace(h,"::"+N+"input-$1")+Gn.replace(h,"::"+O+"$1")+Gn.replace(h,":"+P+"input-$1")+Gn}gn=0}}return Bn+Gn+qn}function Zn(n,t,e){var o=t.trim().split(c),r=o,i=o.length,a=n.length;switch(a){case 0:case 1:for(var l=0,u=0===a?"":n[0]+" ";l0&&vn>0)return r.replace(p,"$1").replace(d,"$1"+Fn);break;default:return n.trim()+r.replace(d,"$1"+n.trim())}default:if(e*vn>0&&r.indexOf("\f")>0)return r.replace(d,(n.charCodeAt(0)===K?"":"$1")+n.trim())}return n+r}function $n(n,t,e,o){var s,c=0,d=n+";",p=2*t+3*e+4*o;if(944===p)return function(n){var t=n.length,e=n.indexOf(":",9)+1,o=n.substring(0,e).trim(),r=n.substring(e,t-1).trim();switch(n.charCodeAt(9)*zn){case 0:break;case V:if(110!==n.charCodeAt(10))break;default:for(var i=r.split((r="",l)),a=0,e=0,t=i.length;a$&&d<90||d>96&&d<123||d===Y||d===V&&s.charCodeAt(1)!==V))switch(isNaN(parseFloat(s))+(-1!==s.indexOf("("))){case 1:switch(s){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:s+=In}}c[e++]=s}r+=(0===a?"":",")+c.join(" ")}}return r=o+r+";",1===xn||2===xn&&Rn(r,1)?N+r+r:r}(d);if(0===xn||2===xn&&!Rn(d,1))return d;switch(p){case 1015:return 97===d.charCodeAt(10)?N+d+d:d;case 951:return 116===d.charCodeAt(3)?N+d+d:d;case 963:return 110===d.charCodeAt(5)?N+d+d:d;case 1009:if(100!==d.charCodeAt(4))break;case 969:case 942:return N+d+d;case 978:return N+d+O+d+d;case 1019:case 983:return N+d+O+d+P+d+d;case 883:return d.charCodeAt(8)===V?N+d+d:d.indexOf("image-set(",11)>0?d.replace(E,"$1"+N+"$2")+d:d;case 932:if(d.charCodeAt(4)===V)switch(d.charCodeAt(5)){case 103:return N+"box-"+d.replace("-grow","")+N+d+P+d.replace("grow","positive")+d;case 115:return N+d+P+d.replace("shrink","negative")+d;case 98:return N+d+P+d.replace("basis","preferred-size")+d}return N+d+P+d+d;case 964:return N+d+P+"flex-"+d+d;case 1023:if(99!==d.charCodeAt(8))break;return s=d.substring(d.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),N+"box-pack"+s+N+d+P+"flex-pack"+s+d;case 1005:return i.test(d)?d.replace(r,":"+N)+d.replace(r,":"+O)+d:d;case 1e3:switch(c=(s=d.substring(13).trim()).indexOf("-")+1,s.charCodeAt(0)+s.charCodeAt(c)){case 226:s=d.replace(C,"tb");break;case 232:s=d.replace(C,"tb-rl");break;case 220:s=d.replace(C,"lr");break;default:return d}return N+d+P+s+d;case 1017:if(-1===d.indexOf("sticky",9))return d;case 975:switch(c=(d=n).length-10,p=(s=(33===d.charCodeAt(c)?d.substring(0,c):d).substring(n.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|s.charCodeAt(7))){case 203:if(s.charCodeAt(8)<111)break;case 115:d=d.replace(s,N+s)+";"+d;break;case 207:case 102:d=d.replace(s,N+(p>102?"inline-":"")+"box")+";"+d.replace(s,N+s)+";"+d.replace(s,P+s+"box")+";"+d}return d+";";case 938:if(d.charCodeAt(5)===V)switch(d.charCodeAt(6)){case 105:return s=d.replace("-items",""),N+d+N+"box-"+s+P+"flex-"+s+d;case 115:return N+d+P+"flex-item-"+d.replace(S,"")+d;default:return N+d+P+"flex-line-pack"+d.replace("align-content","").replace(S,"")+d}break;case 973:case 989:if(d.charCodeAt(3)!==V||122===d.charCodeAt(4))break;case 931:case 953:if(!0===k.test(n))return 115===(s=n.substring(n.indexOf(":")+1)).charCodeAt(0)?$n(n.replace("stretch","fill-available"),t,e,o).replace(":fill-available",":stretch"):d.replace(s,N+s)+d.replace(s,O+s.replace("fill-",""))+d;break;case 962:if(d=N+d+(102===d.charCodeAt(5)?P+d:"")+d,e+o===211&&105===d.charCodeAt(13)&&d.indexOf("transform",10)>0)return d.substring(0,d.indexOf(";",27)+1).replace(a,"$1"+N+"$2")+d}return d}function Rn(n,t){var e=n.indexOf(1===t?":":"{"),o=n.substring(0,3!==t?e:10),r=n.substring(e+1,n.length-1);return kn(2!==t?o:o.replace(j,"$1"),r,t)}function Xn(n,t){var e=$n(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return e!==t+";"?e.replace(T," or ($1)").substring(4):"("+t+")"}function Vn(n,t,e,o,r,i,a,l,u,s){for(var c,d=0,p=t;d0&&(In=r.replace(f,i===M?"":"-")),i=1,1===vn?Fn=r:Mn=r;var a,l=[Fn];jn>0&&void 0!==(a=Vn(Nn,e,l,l,mn,hn,0,0,0,0))&&"string"==typeof a&&(e=a);var u=Un(Tn,l,e,0,0);return jn>0&&void 0!==(a=Vn(En,u,l,l,mn,hn,u.length,0,0,0))&&"string"!=typeof(u=a)&&(i=0),In="",Fn="",Mn="",gn=0,mn=1,hn=1,wn*i==0?u:u.replace(o,"").replace(g,"").replace(v,"$1").replace(x,"$1").replace(y," ")}return Jn.use=function n(t){switch(t){case void 0:case null:jn=Sn.length=0;break;default:if("function"==typeof t)Sn[jn++]=t;else if("object"==typeof t)for(var e=0,o=t.length;e tag\n\n// load the styles\nvar content = require(\"!!../../../css-loader/index.js!./react-buttons.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the \n *\n * Note: replace · with * in the above snippet.\n * */\nvar COMPONENTS_PER_TAG = 40;\n\nvar BrowserTag = function () {\n function BrowserTag(el, isLocal) {\n var existingSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n classCallCheck(this, BrowserTag);\n\n this.el = el;\n this.isLocal = isLocal;\n this.ready = false;\n\n var extractedComps = extractCompsFromCSS(existingSource);\n\n this.size = extractedComps.length;\n this.components = extractedComps.reduce(function (acc, obj) {\n acc[obj.componentId] = obj; // eslint-disable-line no-param-reassign\n return acc;\n }, {});\n }\n\n BrowserTag.prototype.isFull = function isFull() {\n return this.size >= COMPONENTS_PER_TAG;\n };\n\n BrowserTag.prototype.addComponent = function addComponent(componentId) {\n if (!this.ready) this.replaceElement();\n if (this.components[componentId]) throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n\n var comp = { componentId: componentId, textNode: document.createTextNode('') };\n this.el.appendChild(comp.textNode);\n\n this.size += 1;\n this.components[componentId] = comp;\n };\n\n BrowserTag.prototype.inject = function inject(componentId, css, name) {\n if (!this.ready) this.replaceElement();\n var comp = this.components[componentId];\n\n if (!comp) throw new Error('Must add a new component before you can inject css into it');\n if (comp.textNode.data === '') comp.textNode.appendData('\\n/* sc-component-id: ' + componentId + ' */\\n');\n\n comp.textNode.appendData(css);\n if (name) {\n var existingNames = this.el.getAttribute(SC_ATTR);\n this.el.setAttribute(SC_ATTR, existingNames ? existingNames + ' ' + name : name);\n\n if (typeof window !== 'undefined' && window.__webpack_nonce__) {\n this.el.setAttribute('nonce', window.__webpack_nonce__);\n }\n }\n };\n\n BrowserTag.prototype.toHTML = function toHTML() {\n return this.el.outerHTML;\n };\n\n BrowserTag.prototype.toReactElement = function toReactElement() {\n throw new Error('BrowserTag doesn\\'t implement toReactElement!');\n };\n\n BrowserTag.prototype.clone = function clone() {\n throw new Error('BrowserTag cannot be cloned!');\n };\n\n /* Because we care about source order, before we can inject anything we need to\n * create a text node for each component and replace the existing CSS. */\n\n\n BrowserTag.prototype.replaceElement = function replaceElement() {\n var _this = this;\n\n this.ready = true;\n // We have nothing to inject. Use the current el.\n if (this.size === 0) return;\n\n // Build up our replacement style tag\n var newEl = this.el.cloneNode();\n newEl.appendChild(document.createTextNode('\\n'));\n\n Object.keys(this.components).forEach(function (key) {\n var comp = _this.components[key];\n\n // eslint-disable-next-line no-param-reassign\n comp.textNode = document.createTextNode(comp.cssFromDOM);\n newEl.appendChild(comp.textNode);\n });\n\n if (!this.el.parentNode) throw new Error(\"Trying to replace an element that wasn't mounted!\");\n\n // The ol' switcheroo\n this.el.parentNode.replaceChild(newEl, this.el);\n this.el = newEl;\n };\n\n return BrowserTag;\n}();\n\n/* Factory function to separate DOM operations from logical ones*/\n\n\nvar BrowserStyleSheet = {\n create: function create() {\n var tags = [];\n var names = {};\n\n /* Construct existing state from DOM */\n var nodes = document.querySelectorAll('[' + SC_ATTR + ']');\n var nodesLength = nodes.length;\n\n for (var i = 0; i < nodesLength; i += 1) {\n var el = nodes[i];\n\n tags.push(new BrowserTag(el, el.getAttribute(LOCAL_ATTR) === 'true', el.innerHTML));\n\n var attr = el.getAttribute(SC_ATTR);\n if (attr) {\n attr.trim().split(/\\s+/).forEach(function (name) {\n names[name] = true;\n });\n }\n }\n\n /* Factory for making more tags */\n var tagConstructor = function tagConstructor(isLocal) {\n var el = document.createElement('style');\n el.type = 'text/css';\n el.setAttribute(SC_ATTR, '');\n el.setAttribute(LOCAL_ATTR, isLocal ? 'true' : 'false');\n if (!document.head) throw new Error('Missing document ');\n document.head.appendChild(el);\n return new BrowserTag(el, isLocal);\n };\n\n return new StyleSheet(tagConstructor, tags, names);\n }\n};\n\n// \nvar SC_ATTR = 'data-styled-components';\nvar LOCAL_ATTR = 'data-styled-components-is-local';\nvar CONTEXT_KEY = '__styled-components-stylesheet__';\n\nvar instance = null;\n// eslint-disable-next-line no-use-before-define\nvar clones = [];\n\nvar StyleSheet = function () {\n function StyleSheet(tagConstructor) {\n var tags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var names = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, StyleSheet);\n this.hashes = {};\n this.deferredInjections = {};\n\n this.tagConstructor = tagConstructor;\n this.tags = tags;\n this.names = names;\n this.constructComponentTagMap();\n }\n\n StyleSheet.prototype.constructComponentTagMap = function constructComponentTagMap() {\n var _this = this;\n\n this.componentTags = {};\n\n this.tags.forEach(function (tag) {\n Object.keys(tag.components).forEach(function (componentId) {\n _this.componentTags[componentId] = tag;\n });\n });\n };\n\n /* Best level of caching—get the name from the hash straight away. */\n\n\n StyleSheet.prototype.getName = function getName(hash) {\n return this.hashes[hash.toString()];\n };\n\n /* Second level of caching—if the name is already in the dom, don't\n * inject anything and record the hash for getName next time. */\n\n\n StyleSheet.prototype.alreadyInjected = function alreadyInjected(hash, name) {\n if (!this.names[name]) return false;\n\n this.hashes[hash.toString()] = name;\n return true;\n };\n\n /* Third type of caching—don't inject components' componentId twice. */\n\n\n StyleSheet.prototype.hasInjectedComponent = function hasInjectedComponent(componentId) {\n return !!this.componentTags[componentId];\n };\n\n StyleSheet.prototype.deferredInject = function deferredInject(componentId, isLocal, css) {\n if (this === instance) {\n clones.forEach(function (clone) {\n clone.deferredInject(componentId, isLocal, css);\n });\n }\n\n this.getOrCreateTag(componentId, isLocal);\n this.deferredInjections[componentId] = css;\n };\n\n StyleSheet.prototype.inject = function inject(componentId, isLocal, css, hash, name) {\n if (this === instance) {\n clones.forEach(function (clone) {\n clone.inject(componentId, isLocal, css);\n });\n }\n\n var tag = this.getOrCreateTag(componentId, isLocal);\n\n var deferredInjection = this.deferredInjections[componentId];\n if (deferredInjection) {\n tag.inject(componentId, deferredInjection);\n delete this.deferredInjections[componentId];\n }\n\n tag.inject(componentId, css, name);\n\n if (hash && name) {\n this.hashes[hash.toString()] = name;\n }\n };\n\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n\n StyleSheet.prototype.toReactElements = function toReactElements() {\n return this.tags.map(function (tag, i) {\n return tag.toReactElement('sc-' + i);\n });\n };\n\n StyleSheet.prototype.getOrCreateTag = function getOrCreateTag(componentId, isLocal) {\n var existingTag = this.componentTags[componentId];\n if (existingTag) {\n return existingTag;\n }\n\n var lastTag = this.tags[this.tags.length - 1];\n var componentTag = !lastTag || lastTag.isFull() || lastTag.isLocal !== isLocal ? this.createNewTag(isLocal) : lastTag;\n this.componentTags[componentId] = componentTag;\n componentTag.addComponent(componentId);\n return componentTag;\n };\n\n StyleSheet.prototype.createNewTag = function createNewTag(isLocal) {\n var newTag = this.tagConstructor(isLocal);\n this.tags.push(newTag);\n return newTag;\n };\n\n StyleSheet.reset = function reset(isServer) {\n instance = StyleSheet.create(isServer);\n };\n\n /* We can make isServer totally implicit once Jest 20 drops and we\n * can change environment on a per-test basis. */\n\n\n StyleSheet.create = function create() {\n var isServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : typeof document === 'undefined';\n\n return (isServer ? ServerStyleSheet : BrowserStyleSheet).create();\n };\n\n StyleSheet.clone = function clone(oldSheet) {\n var newSheet = new StyleSheet(oldSheet.tagConstructor, oldSheet.tags.map(function (tag) {\n return tag.clone();\n }), _extends({}, oldSheet.names));\n\n newSheet.hashes = _extends({}, oldSheet.hashes);\n newSheet.deferredInjections = _extends({}, oldSheet.deferredInjections);\n clones.push(newSheet);\n\n return newSheet;\n };\n\n createClass(StyleSheet, null, [{\n key: 'instance',\n get: function get$$1() {\n return instance || (instance = StyleSheet.create());\n }\n }]);\n return StyleSheet;\n}();\n\nvar _StyleSheetManager$ch;\n\n// \nvar StyleSheetManager = function (_Component) {\n inherits(StyleSheetManager, _Component);\n\n function StyleSheetManager() {\n classCallCheck(this, StyleSheetManager);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n StyleSheetManager.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[CONTEXT_KEY] = this.props.sheet, _ref;\n };\n\n StyleSheetManager.prototype.render = function render() {\n /* eslint-disable react/prop-types */\n // Flow v0.43.1 will report an error accessing the `children` property,\n // but v0.47.0 will not. It is necessary to use a type cast instead of\n // a \"fixme\" comment to satisfy both Flow versions.\n return React.Children.only(this.props.children);\n };\n\n return StyleSheetManager;\n}(Component);\n\nStyleSheetManager.childContextTypes = (_StyleSheetManager$ch = {}, _StyleSheetManager$ch[CONTEXT_KEY] = PropTypes.instanceOf(StyleSheet).isRequired, _StyleSheetManager$ch);\n\nStyleSheetManager.propTypes = {\n sheet: PropTypes.instanceOf(StyleSheet).isRequired\n};\n\n// \n/* eslint-disable no-underscore-dangle */\nvar ServerTag = function () {\n function ServerTag(isLocal) {\n classCallCheck(this, ServerTag);\n\n this.isLocal = isLocal;\n this.components = {};\n this.size = 0;\n this.names = [];\n }\n\n ServerTag.prototype.isFull = function isFull() {\n return false;\n };\n\n ServerTag.prototype.addComponent = function addComponent(componentId) {\n if (this.components[componentId]) throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n this.components[componentId] = { componentId: componentId, css: '' };\n this.size += 1;\n };\n\n ServerTag.prototype.concatenateCSS = function concatenateCSS() {\n var _this = this;\n\n return Object.keys(this.components).reduce(function (styles, k) {\n return styles + _this.components[k].css;\n }, '');\n };\n\n ServerTag.prototype.inject = function inject(componentId, css, name) {\n var comp = this.components[componentId];\n\n if (!comp) throw new Error('Must add a new component before you can inject css into it');\n if (comp.css === '') comp.css = '/* sc-component-id: ' + componentId + ' */\\n';\n\n comp.css += css.replace(/\\n*$/, '\\n');\n\n if (name) this.names.push(name);\n };\n\n ServerTag.prototype.toHTML = function toHTML() {\n var attrs = ['type=\"text/css\"', SC_ATTR + '=\"' + this.names.join(' ') + '\"', LOCAL_ATTR + '=\"' + (this.isLocal ? 'true' : 'false') + '\"'];\n\n if (typeof global !== 'undefined' && global.__webpack_nonce__) {\n attrs.push('nonce=\"' + global.__webpack_nonce__ + '\"');\n }\n\n return '';\n };\n\n ServerTag.prototype.toReactElement = function toReactElement(key) {\n var _attrs;\n\n var attrs = (_attrs = {}, _attrs[SC_ATTR] = this.names.join(' '), _attrs[LOCAL_ATTR] = this.isLocal.toString(), _attrs);\n\n if (typeof global !== 'undefined' && global.__webpack_nonce__) {\n attrs.nonce = global.__webpack_nonce__;\n }\n\n return React.createElement('style', _extends({\n key: key, type: 'text/css' }, attrs, {\n dangerouslySetInnerHTML: { __html: this.concatenateCSS() }\n }));\n };\n\n ServerTag.prototype.clone = function clone() {\n var _this2 = this;\n\n var copy = new ServerTag(this.isLocal);\n copy.names = [].concat(this.names);\n copy.size = this.size;\n copy.components = Object.keys(this.components).reduce(function (acc, key) {\n acc[key] = _extends({}, _this2.components[key]); // eslint-disable-line no-param-reassign\n return acc;\n }, {});\n\n return copy;\n };\n\n return ServerTag;\n}();\n\nvar ServerStyleSheet = function () {\n function ServerStyleSheet() {\n classCallCheck(this, ServerStyleSheet);\n\n this.instance = StyleSheet.clone(StyleSheet.instance);\n }\n\n ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {\n if (this.closed) throw new Error(\"Can't collect styles once you've called getStyleTags!\");\n return React.createElement(\n StyleSheetManager,\n { sheet: this.instance },\n children\n );\n };\n\n ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {\n if (!this.closed) {\n clones.splice(clones.indexOf(this.instance), 1);\n this.closed = true;\n }\n\n return this.instance.toHTML();\n };\n\n ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {\n if (!this.closed) {\n clones.splice(clones.indexOf(this.instance), 1);\n this.closed = true;\n }\n\n return this.instance.toReactElements();\n };\n\n ServerStyleSheet.create = function create() {\n return new StyleSheet(function (isLocal) {\n return new ServerTag(isLocal);\n });\n };\n\n return ServerStyleSheet;\n}();\n\n// \n\nvar LIMIT = 200;\n\nvar createWarnTooManyClasses = (function (displayName) {\n var generatedClasses = {};\n var warningSeen = false;\n\n return function (className) {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n /* eslint-disable no-console, prefer-template */\n console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. ' + 'Consider using style property for frequently changed styles.\\n' + 'Example:\\n' + ' const StyledComp = styled.div`width: 100%;`\\n' + ' ');\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n});\n\n// \n/* Trying to avoid the unknown-prop errors on styled components\n by filtering by React's attribute whitelist.\n */\n\n/* Logic copied from ReactDOMUnknownPropertyHook */\nvar reactProps = {\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true,\n autoFocus: true,\n defaultValue: true,\n valueLink: true,\n defaultChecked: true,\n checkedLink: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n onFocusIn: true,\n onFocusOut: true,\n className: true,\n\n /* List copied from https://facebook.github.io/react/docs/events.html */\n onCopy: true,\n onCut: true,\n onPaste: true,\n onCompositionEnd: true,\n onCompositionStart: true,\n onCompositionUpdate: true,\n onKeyDown: true,\n onKeyPress: true,\n onKeyUp: true,\n onFocus: true,\n onBlur: true,\n onChange: true,\n onInput: true,\n onSubmit: true,\n onClick: true,\n onContextMenu: true,\n onDoubleClick: true,\n onDrag: true,\n onDragEnd: true,\n onDragEnter: true,\n onDragExit: true,\n onDragLeave: true,\n onDragOver: true,\n onDragStart: true,\n onDrop: true,\n onMouseDown: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseMove: true,\n onMouseOut: true,\n onMouseOver: true,\n onMouseUp: true,\n onSelect: true,\n onTouchCancel: true,\n onTouchEnd: true,\n onTouchMove: true,\n onTouchStart: true,\n onScroll: true,\n onWheel: true,\n onAbort: true,\n onCanPlay: true,\n onCanPlayThrough: true,\n onDurationChange: true,\n onEmptied: true,\n onEncrypted: true,\n onEnded: true,\n onError: true,\n onLoadedData: true,\n onLoadedMetadata: true,\n onLoadStart: true,\n onPause: true,\n onPlay: true,\n onPlaying: true,\n onProgress: true,\n onRateChange: true,\n onSeeked: true,\n onSeeking: true,\n onStalled: true,\n onSuspend: true,\n onTimeUpdate: true,\n onVolumeChange: true,\n onWaiting: true,\n onLoad: true,\n onAnimationStart: true,\n onAnimationEnd: true,\n onAnimationIteration: true,\n onTransitionEnd: true,\n\n onCopyCapture: true,\n onCutCapture: true,\n onPasteCapture: true,\n onCompositionEndCapture: true,\n onCompositionStartCapture: true,\n onCompositionUpdateCapture: true,\n onKeyDownCapture: true,\n onKeyPressCapture: true,\n onKeyUpCapture: true,\n onFocusCapture: true,\n onBlurCapture: true,\n onChangeCapture: true,\n onInputCapture: true,\n onSubmitCapture: true,\n onClickCapture: true,\n onContextMenuCapture: true,\n onDoubleClickCapture: true,\n onDragCapture: true,\n onDragEndCapture: true,\n onDragEnterCapture: true,\n onDragExitCapture: true,\n onDragLeaveCapture: true,\n onDragOverCapture: true,\n onDragStartCapture: true,\n onDropCapture: true,\n onMouseDownCapture: true,\n onMouseEnterCapture: true,\n onMouseLeaveCapture: true,\n onMouseMoveCapture: true,\n onMouseOutCapture: true,\n onMouseOverCapture: true,\n onMouseUpCapture: true,\n onSelectCapture: true,\n onTouchCancelCapture: true,\n onTouchEndCapture: true,\n onTouchMoveCapture: true,\n onTouchStartCapture: true,\n onScrollCapture: true,\n onWheelCapture: true,\n onAbortCapture: true,\n onCanPlayCapture: true,\n onCanPlayThroughCapture: true,\n onDurationChangeCapture: true,\n onEmptiedCapture: true,\n onEncryptedCapture: true,\n onEndedCapture: true,\n onErrorCapture: true,\n onLoadedDataCapture: true,\n onLoadedMetadataCapture: true,\n onLoadStartCapture: true,\n onPauseCapture: true,\n onPlayCapture: true,\n onPlayingCapture: true,\n onProgressCapture: true,\n onRateChangeCapture: true,\n onSeekedCapture: true,\n onSeekingCapture: true,\n onStalledCapture: true,\n onSuspendCapture: true,\n onTimeUpdateCapture: true,\n onVolumeChangeCapture: true,\n onWaitingCapture: true,\n onLoadCapture: true,\n onAnimationStartCapture: true,\n onAnimationEndCapture: true,\n onAnimationIterationCapture: true,\n onTransitionEndCapture: true\n};\n\n/* From HTMLDOMPropertyConfig */\nvar htmlProps = {\n /**\n * Standard Properties\n */\n accept: true,\n acceptCharset: true,\n accessKey: true,\n action: true,\n allowFullScreen: true,\n allowTransparency: true,\n alt: true,\n // specifies target context for links with `preload` type\n as: true,\n async: true,\n autoComplete: true,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: true,\n autoPlay: true,\n capture: true,\n cellPadding: true,\n cellSpacing: true,\n charSet: true,\n challenge: true,\n checked: true,\n cite: true,\n classID: true,\n className: true,\n cols: true,\n colSpan: true,\n content: true,\n contentEditable: true,\n contextMenu: true,\n controls: true,\n coords: true,\n crossOrigin: true,\n data: true, // For `` acts as `src`.\n dateTime: true,\n default: true,\n defer: true,\n dir: true,\n disabled: true,\n download: true,\n draggable: true,\n encType: true,\n form: true,\n formAction: true,\n formEncType: true,\n formMethod: true,\n formNoValidate: true,\n formTarget: true,\n frameBorder: true,\n headers: true,\n height: true,\n hidden: true,\n high: true,\n href: true,\n hrefLang: true,\n htmlFor: true,\n httpEquiv: true,\n icon: true,\n id: true,\n inputMode: true,\n integrity: true,\n is: true,\n keyParams: true,\n keyType: true,\n kind: true,\n label: true,\n lang: true,\n list: true,\n loop: true,\n low: true,\n manifest: true,\n marginHeight: true,\n marginWidth: true,\n max: true,\n maxLength: true,\n media: true,\n mediaGroup: true,\n method: true,\n min: true,\n minLength: true,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: true,\n muted: true,\n name: true,\n nonce: true,\n noValidate: true,\n open: true,\n optimum: true,\n pattern: true,\n placeholder: true,\n playsInline: true,\n poster: true,\n preload: true,\n profile: true,\n radioGroup: true,\n readOnly: true,\n referrerPolicy: true,\n rel: true,\n required: true,\n reversed: true,\n role: true,\n rows: true,\n rowSpan: true,\n sandbox: true,\n scope: true,\n scoped: true,\n scrolling: true,\n seamless: true,\n selected: true,\n shape: true,\n size: true,\n sizes: true,\n span: true,\n spellCheck: true,\n src: true,\n srcDoc: true,\n srcLang: true,\n srcSet: true,\n start: true,\n step: true,\n style: true,\n summary: true,\n tabIndex: true,\n target: true,\n title: true,\n // Setting .type throws on non- tags\n type: true,\n useMap: true,\n value: true,\n width: true,\n wmode: true,\n wrap: true,\n\n /**\n * RDFa Properties\n */\n about: true,\n datatype: true,\n inlist: true,\n prefix: true,\n // property is also supported for OpenGraph in meta tags.\n property: true,\n resource: true,\n typeof: true,\n vocab: true,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: true,\n autoCorrect: true,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: true,\n // color is for Safari mask-icon link\n color: true,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: true,\n itemScope: true,\n itemType: true,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: true,\n itemRef: true,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: true,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: true,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n};\n\nvar svgProps = {\n accentHeight: true,\n accumulate: true,\n additive: true,\n alignmentBaseline: true,\n allowReorder: true,\n alphabetic: true,\n amplitude: true,\n arabicForm: true,\n ascent: true,\n attributeName: true,\n attributeType: true,\n autoReverse: true,\n azimuth: true,\n baseFrequency: true,\n baseProfile: true,\n baselineShift: true,\n bbox: true,\n begin: true,\n bias: true,\n by: true,\n calcMode: true,\n capHeight: true,\n clip: true,\n clipPath: true,\n clipRule: true,\n clipPathUnits: true,\n colorInterpolation: true,\n colorInterpolationFilters: true,\n colorProfile: true,\n colorRendering: true,\n contentScriptType: true,\n contentStyleType: true,\n cursor: true,\n cx: true,\n cy: true,\n d: true,\n decelerate: true,\n descent: true,\n diffuseConstant: true,\n direction: true,\n display: true,\n divisor: true,\n dominantBaseline: true,\n dur: true,\n dx: true,\n dy: true,\n edgeMode: true,\n elevation: true,\n enableBackground: true,\n end: true,\n exponent: true,\n externalResourcesRequired: true,\n fill: true,\n fillOpacity: true,\n fillRule: true,\n filter: true,\n filterRes: true,\n filterUnits: true,\n floodColor: true,\n floodOpacity: true,\n focusable: true,\n fontFamily: true,\n fontSize: true,\n fontSizeAdjust: true,\n fontStretch: true,\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n format: true,\n from: true,\n fx: true,\n fy: true,\n g1: true,\n g2: true,\n glyphName: true,\n glyphOrientationHorizontal: true,\n glyphOrientationVertical: true,\n glyphRef: true,\n gradientTransform: true,\n gradientUnits: true,\n hanging: true,\n horizAdvX: true,\n horizOriginX: true,\n ideographic: true,\n imageRendering: true,\n in: true,\n in2: true,\n intercept: true,\n k: true,\n k1: true,\n k2: true,\n k3: true,\n k4: true,\n kernelMatrix: true,\n kernelUnitLength: true,\n kerning: true,\n keyPoints: true,\n keySplines: true,\n keyTimes: true,\n lengthAdjust: true,\n letterSpacing: true,\n lightingColor: true,\n limitingConeAngle: true,\n local: true,\n markerEnd: true,\n markerMid: true,\n markerStart: true,\n markerHeight: true,\n markerUnits: true,\n markerWidth: true,\n mask: true,\n maskContentUnits: true,\n maskUnits: true,\n mathematical: true,\n mode: true,\n numOctaves: true,\n offset: true,\n opacity: true,\n operator: true,\n order: true,\n orient: true,\n orientation: true,\n origin: true,\n overflow: true,\n overlinePosition: true,\n overlineThickness: true,\n paintOrder: true,\n panose1: true,\n pathLength: true,\n patternContentUnits: true,\n patternTransform: true,\n patternUnits: true,\n pointerEvents: true,\n points: true,\n pointsAtX: true,\n pointsAtY: true,\n pointsAtZ: true,\n preserveAlpha: true,\n preserveAspectRatio: true,\n primitiveUnits: true,\n r: true,\n radius: true,\n refX: true,\n refY: true,\n renderingIntent: true,\n repeatCount: true,\n repeatDur: true,\n requiredExtensions: true,\n requiredFeatures: true,\n restart: true,\n result: true,\n rotate: true,\n rx: true,\n ry: true,\n scale: true,\n seed: true,\n shapeRendering: true,\n slope: true,\n spacing: true,\n specularConstant: true,\n specularExponent: true,\n speed: true,\n spreadMethod: true,\n startOffset: true,\n stdDeviation: true,\n stemh: true,\n stemv: true,\n stitchTiles: true,\n stopColor: true,\n stopOpacity: true,\n strikethroughPosition: true,\n strikethroughThickness: true,\n string: true,\n stroke: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeLinecap: true,\n strokeLinejoin: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n surfaceScale: true,\n systemLanguage: true,\n tableValues: true,\n targetX: true,\n targetY: true,\n textAnchor: true,\n textDecoration: true,\n textRendering: true,\n textLength: true,\n to: true,\n transform: true,\n u1: true,\n u2: true,\n underlinePosition: true,\n underlineThickness: true,\n unicode: true,\n unicodeBidi: true,\n unicodeRange: true,\n unitsPerEm: true,\n vAlphabetic: true,\n vHanging: true,\n vIdeographic: true,\n vMathematical: true,\n values: true,\n vectorEffect: true,\n version: true,\n vertAdvY: true,\n vertOriginX: true,\n vertOriginY: true,\n viewBox: true,\n viewTarget: true,\n visibility: true,\n widths: true,\n wordSpacing: true,\n writingMode: true,\n x: true,\n xHeight: true,\n x1: true,\n x2: true,\n xChannelSelector: true,\n xlinkActuate: true,\n xlinkArcrole: true,\n xlinkHref: true,\n xlinkRole: true,\n xlinkShow: true,\n xlinkTitle: true,\n xlinkType: true,\n xmlBase: true,\n xmlns: true,\n xmlnsXlink: true,\n xmlLang: true,\n xmlSpace: true,\n y: true,\n y1: true,\n y2: true,\n yChannelSelector: true,\n z: true,\n zoomAndPan: true\n};\n\n/* From DOMProperty */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nvar isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\n\nvar hasOwnProperty = {}.hasOwnProperty;\nvar validAttr = (function (name) {\n return hasOwnProperty.call(htmlProps, name) || hasOwnProperty.call(svgProps, name) || isCustomAttribute(name.toLowerCase()) || hasOwnProperty.call(reactProps, name);\n});\n\n// \n\n\nfunction isTag(target) /* : %checks */{\n return typeof target === 'string';\n}\n\n// \n\n\nfunction isStyledComponent(target) /* : %checks */{\n return typeof target === 'function' && typeof target.styledComponentId === 'string';\n}\n\n// \n\n/* eslint-disable no-undef */\nfunction getComponentName(target) {\n return target.displayName || target.name || 'Component';\n}\n\n// \n/**\n * Creates a broadcast that can be listened to, i.e. simple event emitter\n *\n * @see https://github.com/ReactTraining/react-broadcast\n */\n\nvar createBroadcast = function createBroadcast(initialValue) {\n var listeners = [];\n var currentValue = initialValue;\n\n return {\n publish: function publish(value) {\n currentValue = value;\n listeners.forEach(function (listener) {\n return listener(currentValue);\n });\n },\n subscribe: function subscribe(listener) {\n listeners.push(listener);\n\n // Publish to this subscriber once immediately.\n listener(currentValue);\n\n return function () {\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n };\n};\n\nvar _ThemeProvider$childC;\nvar _ThemeProvider$contex;\n\n// \n/* globals React$Element */\n// NOTE: DO NOT CHANGE, changing this is a semver major change!\nvar CHANNEL = '__styled-components__';\n\n/**\n * Provide a theme to an entire react component tree via context and event listeners (have to do\n * both context and event emitter as pure components block context updates)\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n\n function ThemeProvider() {\n classCallCheck(this, ThemeProvider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this));\n\n _this.getTheme = _this.getTheme.bind(_this);\n return _this;\n }\n\n ThemeProvider.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // If there is a ThemeProvider wrapper anywhere around this theme provider, merge this theme\n // with the outer theme\n if (this.context[CHANNEL]) {\n var subscribe = this.context[CHANNEL];\n this.unsubscribeToOuter = subscribe(function (theme) {\n _this2.outerTheme = theme;\n });\n }\n this.broadcast = createBroadcast(this.getTheme());\n };\n\n ThemeProvider.prototype.getChildContext = function getChildContext() {\n var _babelHelpers$extends;\n\n return _extends({}, this.context, (_babelHelpers$extends = {}, _babelHelpers$extends[CHANNEL] = this.broadcast.subscribe, _babelHelpers$extends));\n };\n\n ThemeProvider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.theme !== nextProps.theme) this.broadcast.publish(this.getTheme(nextProps.theme));\n };\n\n ThemeProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[CHANNEL]) {\n this.unsubscribeToOuter();\n }\n };\n\n // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n\n\n ThemeProvider.prototype.getTheme = function getTheme(passedTheme) {\n var theme = passedTheme || this.props.theme;\n if (isFunction(theme)) {\n var mergedTheme = theme(this.outerTheme);\n if (!isPlainObject(mergedTheme)) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n return mergedTheme;\n }\n if (!isPlainObject(theme)) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n return _extends({}, this.outerTheme, theme);\n };\n\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) {\n return null;\n }\n return React.Children.only(this.props.children);\n };\n\n return ThemeProvider;\n}(Component);\n\nThemeProvider.childContextTypes = (_ThemeProvider$childC = {}, _ThemeProvider$childC[CHANNEL] = PropTypes.func.isRequired, _ThemeProvider$childC);\nThemeProvider.contextTypes = (_ThemeProvider$contex = {}, _ThemeProvider$contex[CHANNEL] = PropTypes.func, _ThemeProvider$contex);\n\nvar _AbstractStyledCompon;\n\n// \nvar AbstractStyledComponent = function (_Component) {\n inherits(AbstractStyledComponent, _Component);\n\n function AbstractStyledComponent() {\n classCallCheck(this, AbstractStyledComponent);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n return AbstractStyledComponent;\n}(Component);\n\nAbstractStyledComponent.contextTypes = (_AbstractStyledCompon = {}, _AbstractStyledCompon[CHANNEL] = PropTypes.func, _AbstractStyledCompon[CONTEXT_KEY] = PropTypes.instanceOf(StyleSheet), _AbstractStyledCompon);\n\n// \n\nvar escapeRegex = /[[\\].#*$><+~=|^:(),\"'`]/g;\nvar multiDashRegex = /--+/g;\n\nvar _StyledComponent = (function (ComponentStyle, constructWithOptions) {\n /* We depend on components having unique IDs */\n var identifiers = {};\n var generateId = function generateId(_displayName, parentComponentId) {\n var displayName = typeof _displayName !== 'string' ? 'sc' : _displayName.replace(escapeRegex, '-') // Replace all possible CSS selectors\n .replace(multiDashRegex, '-'); // Replace multiple -- with single -\n\n var nr = (identifiers[displayName] || 0) + 1;\n identifiers[displayName] = nr;\n\n var hash = ComponentStyle.generateName(displayName + nr);\n var componentId = displayName + '-' + hash;\n return parentComponentId !== undefined ? parentComponentId + '-' + componentId : componentId;\n };\n\n var BaseStyledComponent = function (_AbstractStyledCompon) {\n inherits(BaseStyledComponent, _AbstractStyledCompon);\n\n function BaseStyledComponent() {\n var _temp, _this, _ret;\n\n classCallCheck(this, BaseStyledComponent);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _AbstractStyledCompon.call.apply(_AbstractStyledCompon, [this].concat(args))), _this), _this.attrs = {}, _this.state = {\n theme: null,\n generatedClassName: ''\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n BaseStyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props) {\n var attrs = this.constructor.attrs;\n\n var context = _extends({}, props, { theme: theme });\n if (attrs === undefined) {\n return context;\n }\n\n this.attrs = Object.keys(attrs).reduce(function (acc, key) {\n var attr = attrs[key];\n // eslint-disable-next-line no-param-reassign\n acc[key] = typeof attr === 'function' ? attr(context) : attr;\n return acc;\n }, {});\n\n return _extends({}, context, this.attrs);\n };\n\n BaseStyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var _constructor = this.constructor,\n componentStyle = _constructor.componentStyle,\n warnTooManyClasses = _constructor.warnTooManyClasses;\n\n var executionContext = this.buildExecutionContext(theme, props);\n var styleSheet = this.context[CONTEXT_KEY] || StyleSheet.instance;\n var className = componentStyle.generateAndInjectStyles(executionContext, styleSheet);\n\n if (warnTooManyClasses !== undefined) warnTooManyClasses(className);\n\n return className;\n };\n\n BaseStyledComponent.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // If there is a theme in the context, subscribe to the event emitter. This\n // is necessary due to pure components blocking context updates, this circumvents\n // that by updating when an event is emitted\n if (this.context[CHANNEL]) {\n var subscribe = this.context[CHANNEL];\n this.unsubscribe = subscribe(function (nextTheme) {\n // This will be called once immediately\n\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n var defaultProps = _this2.constructor.defaultProps;\n\n var isDefaultTheme = defaultProps && _this2.props.theme === defaultProps.theme;\n var theme = _this2.props.theme && !isDefaultTheme ? _this2.props.theme : nextTheme;\n var generatedClassName = _this2.generateAndInjectStyles(theme, _this2.props);\n _this2.setState({ theme: theme, generatedClassName: generatedClassName });\n });\n } else {\n var theme = this.props.theme || {};\n var generatedClassName = this.generateAndInjectStyles(theme, this.props);\n this.setState({ theme: theme, generatedClassName: generatedClassName });\n }\n };\n\n BaseStyledComponent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n this.setState(function (oldState) {\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n var defaultProps = _this3.constructor.defaultProps;\n\n var isDefaultTheme = defaultProps && nextProps.theme === defaultProps.theme;\n var theme = nextProps.theme && !isDefaultTheme ? nextProps.theme : oldState.theme;\n var generatedClassName = _this3.generateAndInjectStyles(theme, nextProps);\n\n return { theme: theme, generatedClassName: generatedClassName };\n });\n };\n\n BaseStyledComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n };\n\n BaseStyledComponent.prototype.render = function render() {\n var _this4 = this;\n\n var innerRef = this.props.innerRef;\n var generatedClassName = this.state.generatedClassName;\n var _constructor2 = this.constructor,\n styledComponentId = _constructor2.styledComponentId,\n target = _constructor2.target;\n\n\n var isTargetTag = isTag(target);\n\n var className = [this.props.className, styledComponentId, this.attrs.className, generatedClassName].filter(Boolean).join(' ');\n\n var baseProps = _extends({}, this.attrs, {\n className: className\n });\n\n if (isStyledComponent(target)) {\n baseProps.innerRef = innerRef;\n } else {\n baseProps.ref = innerRef;\n }\n\n var propsForElement = Object.keys(this.props).reduce(function (acc, propName) {\n // Don't pass through non HTML tags through to HTML elements\n // always omit innerRef\n if (propName !== 'innerRef' && propName !== 'className' && (!isTargetTag || validAttr(propName))) {\n // eslint-disable-next-line no-param-reassign\n acc[propName] = _this4.props[propName];\n }\n\n return acc;\n }, baseProps);\n\n return createElement(target, propsForElement);\n };\n\n return BaseStyledComponent;\n }(AbstractStyledComponent);\n\n var createStyledComponent = function createStyledComponent(target, options, rules) {\n var _StyledComponent$cont;\n\n var _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')' : _options$displayName,\n _options$componentId = options.componentId,\n componentId = _options$componentId === undefined ? generateId(options.displayName, options.parentComponentId) : _options$componentId,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? BaseStyledComponent : _options$ParentCompon,\n extendingRules = options.rules,\n attrs = options.attrs;\n\n\n var styledComponentId = options.displayName && options.componentId ? options.displayName + '-' + options.componentId : componentId;\n\n var warnTooManyClasses = void 0;\n if (typeof process !== 'undefined' && \"development\" !== 'production') {\n warnTooManyClasses = createWarnTooManyClasses(displayName);\n }\n\n var componentStyle = new ComponentStyle(extendingRules === undefined ? rules : extendingRules.concat(rules), styledComponentId);\n\n var StyledComponent = function (_ParentComponent) {\n inherits(StyledComponent, _ParentComponent);\n\n function StyledComponent() {\n classCallCheck(this, StyledComponent);\n return possibleConstructorReturn(this, _ParentComponent.apply(this, arguments));\n }\n\n StyledComponent.withComponent = function withComponent(tag) {\n var previousComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['componentId']);\n\n\n var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : getComponentName(tag));\n\n var newOptions = _extends({}, optionsToCopy, {\n componentId: newComponentId,\n ParentComponent: StyledComponent\n });\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n createClass(StyledComponent, null, [{\n key: 'extend',\n get: function get$$1() {\n var rulesFromOptions = options.rules,\n parentComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['rules', 'componentId']);\n\n\n var newRules = rulesFromOptions === undefined ? rules : rulesFromOptions.concat(rules);\n\n var newOptions = _extends({}, optionsToCopy, {\n rules: newRules,\n parentComponentId: parentComponentId,\n ParentComponent: StyledComponent\n });\n\n return constructWithOptions(createStyledComponent, target, newOptions);\n }\n }]);\n return StyledComponent;\n }(ParentComponent);\n\n StyledComponent.contextTypes = (_StyledComponent$cont = {}, _StyledComponent$cont[CHANNEL] = PropTypes.func, _StyledComponent$cont[CONTEXT_KEY] = PropTypes.instanceOf(StyleSheet), _StyledComponent$cont);\n StyledComponent.displayName = displayName;\n StyledComponent.styledComponentId = styledComponentId;\n StyledComponent.attrs = attrs;\n StyledComponent.componentStyle = componentStyle;\n StyledComponent.warnTooManyClasses = warnTooManyClasses;\n StyledComponent.target = target;\n\n\n return StyledComponent;\n };\n\n return createStyledComponent;\n});\n\n// murmurhash2 via https://gist.github.com/raycmorgan/588423\n\nfunction doHash(str, seed) {\n var m = 0x5bd1e995;\n var r = 24;\n var h = seed ^ str.length;\n var length = str.length;\n var currentIndex = 0;\n\n while (length >= 4) {\n var k = UInt32(str, currentIndex);\n\n k = Umul32(k, m);\n k ^= k >>> r;\n k = Umul32(k, m);\n\n h = Umul32(h, m);\n h ^= k;\n\n currentIndex += 4;\n length -= 4;\n }\n\n switch (length) {\n case 3:\n h ^= UInt16(str, currentIndex);\n h ^= str.charCodeAt(currentIndex + 2) << 16;\n h = Umul32(h, m);\n break;\n\n case 2:\n h ^= UInt16(str, currentIndex);\n h = Umul32(h, m);\n break;\n\n case 1:\n h ^= str.charCodeAt(currentIndex);\n h = Umul32(h, m);\n break;\n }\n\n h ^= h >>> 13;\n h = Umul32(h, m);\n h ^= h >>> 15;\n\n return h >>> 0;\n}\n\nfunction UInt32(str, pos) {\n return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8) + (str.charCodeAt(pos++) << 16) + (str.charCodeAt(pos) << 24);\n}\n\nfunction UInt16(str, pos) {\n return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8);\n}\n\nfunction Umul32(n, m) {\n n = n | 0;\n m = m | 0;\n var nlo = n & 0xffff;\n var nhi = n >>> 16;\n var res = nlo * m + ((nhi * m & 0xffff) << 16) | 0;\n return res;\n}\n\n// \n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\nvar _ComponentStyle = (function (nameGenerator, flatten, stringifyRules) {\n var ComponentStyle = function () {\n function ComponentStyle(rules, componentId) {\n classCallCheck(this, ComponentStyle);\n\n this.rules = rules;\n this.componentId = componentId;\n if (!StyleSheet.instance.hasInjectedComponent(this.componentId)) {\n var placeholder = '.' + componentId + ' {}';\n StyleSheet.instance.deferredInject(componentId, true, placeholder);\n }\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n\n\n ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {\n var flatCSS = flatten(this.rules, executionContext);\n var hash = doHash(this.componentId + flatCSS.join(''));\n\n var existingName = styleSheet.getName(hash);\n if (existingName) return existingName;\n\n var name = nameGenerator(hash);\n if (styleSheet.alreadyInjected(hash, name)) return name;\n\n var css = '\\n' + stringifyRules(flatCSS, '.' + name);\n styleSheet.inject(this.componentId, true, css, hash, name);\n return name;\n };\n\n ComponentStyle.generateName = function generateName(str) {\n return nameGenerator(doHash(str));\n };\n\n return ComponentStyle;\n }();\n\n return ComponentStyle;\n});\n\n// \n// Thanks to ReactDOMFactories for this handy list!\n\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// \n\nvar _styled = (function (styledComponent, constructWithOptions) {\n var styled = function styled(tag) {\n return constructWithOptions(styledComponent, tag);\n };\n\n // Shorthands for all valid HTML Elements\n domElements.forEach(function (domElement) {\n styled[domElement] = styled(domElement);\n });\n\n return styled;\n});\n\n// \nvar replaceWhitespace = function replaceWhitespace(str) {\n return str.replace(/\\s|\\\\n/g, '');\n};\n\nvar _keyframes = (function (nameGenerator, stringifyRules, css) {\n return function (strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var hash = doHash(replaceWhitespace(JSON.stringify(rules)));\n\n var existingName = StyleSheet.instance.getName(hash);\n if (existingName) return existingName;\n\n var name = nameGenerator(hash);\n if (StyleSheet.instance.alreadyInjected(hash, name)) return name;\n\n var generatedCSS = stringifyRules(rules, name, '@keyframes');\n StyleSheet.instance.inject('sc-keyframes-' + name, true, generatedCSS, hash, name);\n return name;\n };\n});\n\n// \nvar _injectGlobal = (function (stringifyRules, css) {\n var injectGlobal = function injectGlobal(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var hash = doHash(JSON.stringify(rules));\n\n var componentId = 'sc-global-' + hash;\n if (StyleSheet.instance.hasInjectedComponent(componentId)) return;\n\n StyleSheet.instance.inject(componentId, false, stringifyRules(rules));\n };\n\n return injectGlobal;\n});\n\n// \n\n\nvar _constructWithOptions = (function (css) {\n var constructWithOptions = function constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof tag !== 'string' && typeof tag !== 'function') {\n // $FlowInvalidInputTest\n throw new Error('Cannot create styled-component for component: ' + tag);\n }\n\n /* This is callable directly as a template function */\n var templateFunction = function templateFunction(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n return componentConstructor(tag, options, css.apply(undefined, [strings].concat(interpolations)));\n };\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: _extends({}, options.attrs || {}, attrs) }));\n };\n\n return templateFunction;\n };\n\n return constructWithOptions;\n});\n\n// \n/* globals ReactClass */\n\nvar wrapWithTheme = function wrapWithTheme(Component$$1) {\n var _WithTheme$contextTyp;\n\n var componentName = Component$$1.displayName || Component$$1.name || 'Component';\n\n var isStyledComponent$$1 = isStyledComponent(Component$$1);\n\n var WithTheme = function (_React$Component) {\n inherits(WithTheme, _React$Component);\n\n function WithTheme() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithTheme);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {}, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping\n\n\n WithTheme.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n if (!this.context[CHANNEL]) {\n throw new Error('[withTheme] Please use ThemeProvider to be able to use withTheme');\n }\n\n var subscribe = this.context[CHANNEL];\n this.unsubscribe = subscribe(function (theme) {\n _this2.setState({ theme: theme });\n });\n };\n\n WithTheme.prototype.componentWillUnmount = function componentWillUnmount() {\n if (typeof this.unsubscribe === 'function') this.unsubscribe();\n };\n\n WithTheme.prototype.render = function render() {\n // eslint-disable-next-line react/prop-types\n var innerRef = this.props.innerRef;\n var theme = this.state.theme;\n\n\n return React.createElement(Component$$1, _extends({\n theme: theme\n }, this.props, {\n innerRef: isStyledComponent$$1 ? innerRef : undefined,\n ref: isStyledComponent$$1 ? undefined : innerRef\n }));\n };\n\n return WithTheme;\n }(React.Component);\n\n WithTheme.displayName = 'WithTheme(' + componentName + ')';\n WithTheme.styledComponentId = 'withTheme';\n WithTheme.contextTypes = (_WithTheme$contextTyp = {}, _WithTheme$contextTyp[CHANNEL] = PropTypes.func, _WithTheme$contextTyp);\n\n\n return hoistStatics(WithTheme, Component$$1);\n};\n\n// \n\n/* Import singletons */\n/* Import singleton constructors */\n/* Import components */\n/* Import Higher Order Components */\n/* Instantiate singletons */\nvar ComponentStyle = _ComponentStyle(generateAlphabeticName, flatten, stringifyRules);\nvar constructWithOptions = _constructWithOptions(css);\nvar StyledComponent = _StyledComponent(ComponentStyle, constructWithOptions);\n\n/* Instantiate exported singletons */\nvar keyframes = _keyframes(generateAlphabeticName, stringifyRules, css);\nvar injectGlobal = _injectGlobal(stringifyRules, css);\nvar styled = _styled(StyledComponent, constructWithOptions);\n\nexport { css, keyframes, injectGlobal, ThemeProvider, wrapWithTheme as withTheme, ServerStyleSheet, StyleSheetManager };export default styled;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/styled-components/dist/styled-components.es.js\n// module id = ../node_modules/styled-components/dist/styled-components.es.js\n// module chunks = 0","/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory(null)) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory(null)) :\n\t\t\t(window['stylis'] = factory(null))\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The [''] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([^]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /* */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 169 /* i */\n\tvar CHARSET = 163 /* c */\n\tvar DOCUMENT = 100 /* d */\n\tvar PAGE = 112 /* p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array} parent\n\t * @param {Array} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(++length)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first + second) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase IMPORT:\n\t\t\t\t\t\t\t\tcase CHARSET: {\n\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON)\n\t\t\t\t\t\t\t\t\t\tbreak\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::paceholder, l\n\t\t\t\t\t\t// :read-ony, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR) {\n\t\t\t\t\t\t\t\t\t\t// /* ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-size-adjust, -\n\t\t\t\treturn out.charCodeAt(9) === DASH ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\treturn out.charCodeAt(8) === DASH ? webkit + out + out : out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// width: min-content / width: max-content\n\t\t\tcase 953: {\n\t\t\t\tif ((index = out.indexOf('-content', 9)) > 0) {\n\t\t\t\t\t// width: min-content / width: max-content\n\t\t\t\t\tif (out.charCodeAt(index - 3) === 109 && out.charCodeAt(index - 4) !== 45) {\n\t\t\t\t\t\tcache = out.substring(index - 3)\n\t\t\t\t\t\treturn 'width:' + webkit + cache + 'width:' + moz + cache + 'width:' + cache\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\tvar i = 0\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array} selectors\n\t * @param {Array} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch (out) {\n\t\t\tcase void 0:\n\t\t\tcase false:\n\t\t\tcase true:\n\t\t\tcase null:\n\t\t\tcase content: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn out\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tswitch (plugin.constructor) {\n\t\t\t\t\tcase Array: {\n\t\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase Function: {\n\t\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase Boolean: {\n\t\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/stylis/stylis.js\n// module id = ../node_modules/stylis/stylis.js\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a ';\n };\n};\n\n/* takes a css factory function and outputs an element factory */\nvar wrapAsElement = function wrapAsElement(css, names) {\n return function () {\n var _props;\n\n var props = (_props = {}, _props[SC_ATTR] = stringifyNames(names), _props[SC_VERSION_ATTR] = \"4.1.3\", _props);\n\n var nonce = getNonce();\n if (nonce) {\n // $FlowFixMe\n props.nonce = nonce;\n }\n\n // eslint-disable-next-line react/no-danger\n return React.createElement('style', _extends({}, props, { dangerouslySetInnerHTML: { __html: css() } }));\n };\n};\n\nvar getIdsFromMarkersFactory = function getIdsFromMarkersFactory(markers) {\n return function () {\n return Object.keys(markers);\n };\n};\n\n/* speedy tags utilise insertRule */\nvar makeSpeedyTag = function makeSpeedyTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n var sizes = [];\n\n var extractImport = getImportRuleTag !== undefined;\n /* indicates whether getImportRuleTag was called */\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = sizes.length;\n sizes.push(0);\n resetIdNames(names, id);\n\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var sheet = sheetForTag(el);\n var insertIndex = addUpUntilIndex(sizes, marker);\n\n var injectedRules = 0;\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var cssRule = cssRules[i];\n var mayHaveImport = extractImport; /* @import rules are reordered to appear first */\n if (mayHaveImport && cssRule.indexOf('@import') !== -1) {\n importRules.push(cssRule);\n } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) {\n mayHaveImport = false;\n injectedRules += 1;\n }\n }\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n\n sizes[marker] += injectedRules; /* add up no of injected rules */\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n\n var size = sizes[marker];\n var sheet = sheetForTag(el);\n var removalIndex = addUpUntilIndex(sizes, marker) - 1;\n deleteRules(sheet, removalIndex, size);\n sizes[marker] = 0;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var _sheetForTag = sheetForTag(el),\n cssRules = _sheetForTag.cssRules;\n\n var str = '';\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += makeTextMarker(id);\n var marker = markers[id];\n var end = addUpUntilIndex(sizes, marker);\n var size = sizes[marker];\n for (var i = end - size; i < end; i += 1) {\n var rule = cssRules[i];\n if (rule !== undefined) {\n str += rule.cssText;\n }\n }\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeTextNode = function makeTextNode(id) {\n return document.createTextNode(makeTextMarker(id));\n};\n\nvar makeBrowserTag = function makeBrowserTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n\n var extractImport = getImportRuleTag !== undefined;\n\n /* indicates whether getImportRuleTag was called */\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = makeTextNode(id);\n el.appendChild(markers[id]);\n names[id] = Object.create(null);\n\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var rule = cssRules[i];\n var mayHaveImport = extractImport;\n if (mayHaveImport && rule.indexOf('@import') !== -1) {\n importRules.push(rule);\n } else {\n mayHaveImport = false;\n var separator = i === cssRulesSize - 1 ? '' : ' ';\n marker.appendData('' + rule + separator);\n }\n }\n\n addNameForId(names, id, name);\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n\n /* create new empty text node and replace the current one */\n var newMarker = makeTextNode(id);\n el.replaceChild(newMarker, marker);\n markers[id] = newMarker;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var str = '';\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += markers[id].data;\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeServerTag = function makeServerTag(namesArg, markersArg) {\n var names = namesArg === undefined ? Object.create(null) : namesArg;\n var markers = markersArg === undefined ? Object.create(null) : markersArg;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n return markers[id] = [''];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n marker[0] += cssRules.join(' ');\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n marker[0] = '';\n resetIdNames(names, id);\n };\n\n var css = function css() {\n var str = '';\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n var cssForId = markers[id][0];\n if (cssForId) {\n str += makeTextMarker(id) + cssForId;\n }\n }\n return str;\n };\n\n var clone = function clone() {\n var namesClone = cloneNames(names);\n var markersClone = Object.create(null);\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n markersClone[id] = [markers[id][0]];\n }\n\n return makeServerTag(namesClone, markersClone);\n };\n\n var tag = {\n clone: clone,\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: null,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n\n return tag;\n};\n\nvar makeTag = function makeTag(target, tagEl, forceServer, insertBefore, getImportRuleTag) {\n if (IS_BROWSER && !forceServer) {\n var el = makeStyleTag(target, tagEl, insertBefore);\n\n if (DISABLE_SPEEDY) {\n return makeBrowserTag(el, getImportRuleTag);\n } else {\n return makeSpeedyTag(el, getImportRuleTag);\n }\n }\n\n return makeServerTag();\n};\n\nvar rehydrate = function rehydrate(tag, els, extracted) {\n /* add all extracted components to the new tag */\n for (var i = 0, len = extracted.length; i < len; i += 1) {\n var _extracted$i = extracted[i],\n componentId = _extracted$i.componentId,\n cssFromDOM = _extracted$i.cssFromDOM;\n\n var cssRules = splitByRules(cssFromDOM);\n tag.insertRules(componentId, cssRules);\n }\n\n /* remove old HTMLStyleElements, since they have been rehydrated */\n for (var _i = 0, _len = els.length; _i < _len; _i += 1) {\n var el = els[_i];\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n};\n\n// \n\nvar SPLIT_REGEX = /\\s+/;\n\n/* determine the maximum number of components before tags are sharded */\nvar MAX_SIZE = void 0;\nif (IS_BROWSER) {\n /* in speedy mode we can keep a lot more rules in a sheet before a slowdown can be expected */\n MAX_SIZE = DISABLE_SPEEDY ? 40 : 1000;\n} else {\n /* for servers we do not need to shard at all */\n MAX_SIZE = -1;\n}\n\nvar sheetRunningId = 0;\nvar master = void 0;\n\nvar StyleSheet = function () {\n\n /* a map from ids to tags */\n\n /* deferred rules for a given id */\n\n /* this is used for not reinjecting rules via hasNameForId() */\n\n /* when rules for an id are removed using remove() we have to ignore rehydratedNames for it */\n\n /* a list of tags belonging to this StyleSheet */\n\n /* a tag for import rules */\n\n /* current capacity until a new tag must be created */\n\n /* children (aka clones) of this StyleSheet inheriting all and future injections */\n\n function StyleSheet() {\n var _this = this;\n\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IS_BROWSER ? document.head : null;\n var forceServer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n classCallCheck(this, StyleSheet);\n\n this.getImportRuleTag = function () {\n var importRuleTag = _this.importRuleTag;\n\n if (importRuleTag !== undefined) {\n return importRuleTag;\n }\n\n var firstTag = _this.tags[0];\n var insertBefore = true;\n\n return _this.importRuleTag = makeTag(_this.target, firstTag ? firstTag.styleTag : null, _this.forceServer, insertBefore);\n };\n\n sheetRunningId += 1;\n this.id = sheetRunningId;\n this.forceServer = forceServer;\n this.target = forceServer ? null : target;\n this.tagMap = {};\n this.deferred = {};\n this.rehydratedNames = {};\n this.ignoreRehydratedNames = {};\n this.tags = [];\n this.capacity = 1;\n this.clones = [];\n }\n\n /* rehydrate all SSR'd style tags */\n\n\n StyleSheet.prototype.rehydrate = function rehydrate$$1() {\n if (!IS_BROWSER || this.forceServer) return this;\n\n var els = [];\n var extracted = [];\n var isStreamed = false;\n\n /* retrieve all of our SSR style elements from the DOM */\n var nodes = document.querySelectorAll('style[' + SC_ATTR + '][' + SC_VERSION_ATTR + '=\"' + \"4.1.3\" + '\"]');\n\n var nodesSize = nodes.length;\n\n /* abort rehydration if no previous style tags were found */\n if (!nodesSize) return this;\n\n for (var i = 0; i < nodesSize; i += 1) {\n var el = nodes[i];\n\n /* check if style tag is a streamed tag */\n if (!isStreamed) isStreamed = !!el.getAttribute(SC_STREAM_ATTR);\n\n /* retrieve all component names */\n var elNames = (el.getAttribute(SC_ATTR) || '').trim().split(SPLIT_REGEX);\n var elNamesSize = elNames.length;\n for (var j = 0, name; j < elNamesSize; j += 1) {\n name = elNames[j];\n /* add rehydrated name to sheet to avoid re-adding styles */\n this.rehydratedNames[name] = true;\n }\n\n /* extract all components and their CSS */\n extracted.push.apply(extracted, extractComps(el.textContent));\n\n /* store original HTMLStyleElement */\n els.push(el);\n }\n\n /* abort rehydration if nothing was extracted */\n var extractedSize = extracted.length;\n if (!extractedSize) return this;\n\n /* create a tag to be used for rehydration */\n var tag = this.makeTag(null);\n\n rehydrate(tag, els, extracted);\n\n /* reset capacity and adjust MAX_SIZE by the initial size of the rehydration */\n this.capacity = Math.max(1, MAX_SIZE - extractedSize);\n this.tags.push(tag);\n\n /* retrieve all component ids */\n for (var _j = 0; _j < extractedSize; _j += 1) {\n this.tagMap[extracted[_j].componentId] = tag;\n }\n\n return this;\n };\n\n /* retrieve a \"master\" instance of StyleSheet which is typically used when no other is available\n * The master StyleSheet is targeted by createGlobalStyle, keyframes, and components outside of any\n * StyleSheetManager's context */\n\n\n /* reset the internal \"master\" instance */\n StyleSheet.reset = function reset() {\n var forceServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n master = new StyleSheet(undefined, forceServer).rehydrate();\n };\n\n /* adds \"children\" to the StyleSheet that inherit all of the parents' rules\n * while their own rules do not affect the parent */\n\n\n StyleSheet.prototype.clone = function clone() {\n var sheet = new StyleSheet(this.target, this.forceServer);\n\n /* add to clone array */\n this.clones.push(sheet);\n\n /* clone all tags */\n sheet.tags = this.tags.map(function (tag) {\n var ids = tag.getIds();\n var newTag = tag.clone();\n\n /* reconstruct tagMap */\n for (var i = 0; i < ids.length; i += 1) {\n sheet.tagMap[ids[i]] = newTag;\n }\n\n return newTag;\n });\n\n /* clone other maps */\n sheet.rehydratedNames = _extends({}, this.rehydratedNames);\n sheet.deferred = _extends({}, this.deferred);\n\n return sheet;\n };\n\n /* force StyleSheet to create a new tag on the next injection */\n\n\n StyleSheet.prototype.sealAllTags = function sealAllTags() {\n this.capacity = 1;\n\n this.tags.forEach(function (tag) {\n // eslint-disable-next-line no-param-reassign\n tag.sealed = true;\n });\n };\n\n StyleSheet.prototype.makeTag = function makeTag$$1(tag) {\n var lastEl = tag ? tag.styleTag : null;\n var insertBefore = false;\n\n return makeTag(this.target, lastEl, this.forceServer, insertBefore, this.getImportRuleTag);\n };\n\n /* get a tag for a given componentId, assign the componentId to one, or shard */\n StyleSheet.prototype.getTagForId = function getTagForId(id) {\n /* simply return a tag, when the componentId was already assigned one */\n var prev = this.tagMap[id];\n if (prev !== undefined && !prev.sealed) {\n return prev;\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n /* shard (create a new tag) if the tag is exhausted (See MAX_SIZE) */\n this.capacity -= 1;\n\n if (this.capacity === 0) {\n this.capacity = MAX_SIZE;\n tag = this.makeTag(tag);\n this.tags.push(tag);\n }\n\n return this.tagMap[id] = tag;\n };\n\n /* mainly for createGlobalStyle to check for its id */\n\n\n StyleSheet.prototype.hasId = function hasId(id) {\n return this.tagMap[id] !== undefined;\n };\n\n /* caching layer checking id+name to already have a corresponding tag and injected rules */\n\n\n StyleSheet.prototype.hasNameForId = function hasNameForId(id, name) {\n /* exception for rehydrated names which are checked separately */\n if (this.ignoreRehydratedNames[id] === undefined && this.rehydratedNames[name]) {\n return true;\n }\n\n var tag = this.tagMap[id];\n return tag !== undefined && tag.hasNameForId(id, name);\n };\n\n /* registers a componentId and registers it on its tag */\n\n\n StyleSheet.prototype.deferredInject = function deferredInject(id, cssRules) {\n /* don't inject when the id is already registered */\n if (this.tagMap[id] !== undefined) return;\n\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].deferredInject(id, cssRules);\n }\n\n this.getTagForId(id).insertMarker(id);\n this.deferred[id] = cssRules;\n };\n\n /* injects rules for a given id with a name that will need to be cached */\n\n\n StyleSheet.prototype.inject = function inject(id, cssRules, name) {\n var clones = this.clones;\n\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].inject(id, cssRules, name);\n }\n\n var tag = this.getTagForId(id);\n\n /* add deferred rules for component */\n if (this.deferred[id] !== undefined) {\n // Combine passed cssRules with previously deferred CSS rules\n // NOTE: We cannot mutate the deferred array itself as all clones\n // do the same (see clones[i].inject)\n var rules = this.deferred[id].concat(cssRules);\n tag.insertRules(id, rules, name);\n\n this.deferred[id] = undefined;\n } else {\n tag.insertRules(id, cssRules, name);\n }\n };\n\n /* removes all rules for a given id, which doesn't remove its marker but resets it */\n\n\n StyleSheet.prototype.remove = function remove(id) {\n var tag = this.tagMap[id];\n if (tag === undefined) return;\n\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].remove(id);\n }\n\n /* remove all rules from the tag */\n tag.removeRules(id);\n\n /* ignore possible rehydrated names */\n this.ignoreRehydratedNames[id] = true;\n\n /* delete possible deferred rules */\n this.deferred[id] = undefined;\n };\n\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n\n StyleSheet.prototype.toReactElements = function toReactElements() {\n var id = this.id;\n\n\n return this.tags.map(function (tag, i) {\n var key = 'sc-' + id + '-' + i;\n return cloneElement(tag.toElement(), { key: key });\n });\n };\n\n createClass(StyleSheet, null, [{\n key: 'master',\n get: function get$$1() {\n return master || (master = new StyleSheet().rehydrate());\n }\n\n /* NOTE: This is just for backwards-compatibility with jest-styled-components */\n\n }, {\n key: 'instance',\n get: function get$$1() {\n return StyleSheet.master;\n }\n }]);\n return StyleSheet;\n}();\n\n// \n\nvar Keyframes = function () {\n function Keyframes(name, rules) {\n var _this = this;\n\n classCallCheck(this, Keyframes);\n\n this.inject = function (styleSheet) {\n if (!styleSheet.hasNameForId(_this.id, _this.name)) {\n styleSheet.inject(_this.id, _this.rules, _this.name);\n }\n };\n\n this.toString = function () {\n throw new StyledComponentsError(12, String(_this.name));\n };\n\n this.name = name;\n this.rules = rules;\n\n this.id = 'sc-keyframes-' + name;\n }\n\n Keyframes.prototype.getName = function getName() {\n return this.name;\n };\n\n return Keyframes;\n}();\n\n// \n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return string.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\n// \n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nfunction addUnitIfNeeded(name, value) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless)) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return String(value).trim();\n}\n\n// \n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nvar isFalsish = function isFalsish(chunk) {\n return chunk === undefined || chunk === null || chunk === false || chunk === '';\n};\n\nvar objToCss = function objToCss(obj, prevKey) {\n var css = Object.keys(obj).filter(function (key) {\n return !isFalsish(obj[key]);\n }).map(function (key) {\n if (isPlainObject(obj[key])) return objToCss(obj[key], key);\n return hyphenateStyleName(key) + ': ' + addUnitIfNeeded(key, obj[key]) + ';';\n }).join(' ');\n return prevKey ? prevKey + ' {\\n ' + css + '\\n}' : css;\n};\n\nfunction flatten(chunk, executionContext, styleSheet) {\n if (Array.isArray(chunk)) {\n var ruleSet = [];\n\n for (var i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet);\n\n if (result === null) continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return null;\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return '.' + chunk.styledComponentId;\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (executionContext) {\n var shouldThrow = false;\n\n try {\n // eslint-disable-next-line new-cap\n if (isElement(new chunk(executionContext))) {\n shouldThrow = true;\n }\n } catch (e) {\n /* */\n }\n\n if (shouldThrow) {\n throw new StyledComponentsError(13, getComponentName(chunk));\n }\n\n return flatten(chunk(executionContext), executionContext, styleSheet);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet);\n return chunk.getName();\n } else return chunk;\n }\n\n /* Handle objects */\n return isPlainObject(chunk) ? objToCss(chunk) : chunk.toString();\n}\n\n// \n\nfunction css(styles) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)));\n }\n\n // $FlowFixMe\n return flatten(interleave(styles, interpolations));\n}\n\n// \n\nfunction constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n\n if (!isValidElementType(tag)) {\n throw new StyledComponentsError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n var templateFunction = function templateFunction() {\n return componentConstructor(tag, options, css.apply(undefined, arguments));\n };\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n\n /* Modify/inject new props at runtime */\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean)\n }));\n };\n\n return templateFunction;\n}\n\n// \n// Source: https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash(c) {\n for (var e = c.length | 0, a = e | 0, d = 0, b; e >= 4;) {\n b = c.charCodeAt(d) & 255 | (c.charCodeAt(++d) & 255) << 8 | (c.charCodeAt(++d) & 255) << 16 | (c.charCodeAt(++d) & 255) << 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), b ^= b >>> 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16) ^ b, e -= 4, ++d;\n }\n switch (e) {\n case 3:\n a ^= (c.charCodeAt(d + 2) & 255) << 16;\n case 2:\n a ^= (c.charCodeAt(d + 1) & 255) << 8;\n case 1:\n a ^= c.charCodeAt(d) & 255, a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n }\n a ^= a >>> 13;\n a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n return (a ^ a >>> 15) >>> 0;\n}\n\n// \n/* eslint-disable no-bitwise */\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nvar charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nvar getAlphabeticChar = function getAlphabeticChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n};\n\n/* input a number, usually a hash and convert it to base-52 */\nfunction generateAlphabeticName(code) {\n var name = '';\n var x = void 0;\n\n /* get a char and divide by alphabet-length */\n for (x = code; x > charsLength; x = Math.floor(x / charsLength)) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return getAlphabeticChar(x % charsLength) + name;\n}\n\n// \n\nfunction hasFunctionObjectKey(obj) {\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (var key in obj) {\n if (isFunction(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isStaticRules(rules, attrs) {\n for (var i = 0; i < rules.length; i += 1) {\n var rule = rules[i];\n\n // recursive case\n if (Array.isArray(rule) && !isStaticRules(rule, attrs)) {\n return false;\n } else if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n if (attrs.some(function (x) {\n return isFunction(x) || hasFunctionObjectKey(x);\n })) return false;\n\n return true;\n}\n\n// \n\nvar isHMREnabled = process.env.NODE_ENV !== 'production' && typeof module !== 'undefined' && module.hot;\n\n/* combines hashStr (murmurhash) and nameGenerator for convenience */\nvar hasher = function hasher(str) {\n return generateAlphabeticName(murmurhash(str));\n};\n\n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\n\nvar ComponentStyle = function () {\n function ComponentStyle(rules, attrs, componentId) {\n classCallCheck(this, ComponentStyle);\n\n this.rules = rules;\n this.isStatic = !isHMREnabled && isStaticRules(rules, attrs);\n this.componentId = componentId;\n\n if (!StyleSheet.master.hasId(componentId)) {\n StyleSheet.master.deferredInject(componentId, []);\n }\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n\n\n ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {\n var isStatic = this.isStatic,\n componentId = this.componentId,\n lastClassName = this.lastClassName;\n\n if (IS_BROWSER && isStatic && typeof lastClassName === 'string' && styleSheet.hasNameForId(componentId, lastClassName)) {\n return lastClassName;\n }\n\n var flatCSS = flatten(this.rules, executionContext, styleSheet);\n var name = hasher(this.componentId + flatCSS.join(''));\n if (!styleSheet.hasNameForId(componentId, name)) {\n styleSheet.inject(this.componentId, stringifyRules(flatCSS, '.' + name, undefined, componentId), name);\n }\n\n this.lastClassName = name;\n return name;\n };\n\n ComponentStyle.generateName = function generateName(str) {\n return hasher(str);\n };\n\n return ComponentStyle;\n}();\n\n// \n\nvar LIMIT = 200;\n\nvar createWarnTooManyClasses = (function (displayName) {\n var generatedClasses = {};\n var warningSeen = false;\n\n return function (className) {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n /* eslint-disable no-console, prefer-template */\n console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. \\n' + 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' + 'Example:\\n' + ' const Component = styled.div.attrs({\\n' + ' style: ({ background }) => ({\\n' + ' background,\\n' + ' }),\\n' + ' })`width: 100%;`\\n\\n' + ' ');\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n});\n\n// \n\nvar determineTheme = (function (props, fallbackTheme) {\n var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n\n /* eslint-disable react/prop-types, flowtype-errors/show-errors */\n var isDefaultTheme = defaultProps ? props.theme === defaultProps.theme : false;\n var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme || defaultProps.theme;\n /* eslint-enable */\n\n return theme;\n});\n\n// \nvar escapeRegex = /[[\\].#*$><+~=|^:(),\"'`-]+/g;\nvar dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nfunction escape(str) {\n return str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n\n// \n\nfunction isTag(target) {\n return typeof target === 'string' && (process.env.NODE_ENV !== 'production' ? target.charAt(0) === target.charAt(0).toLowerCase() : true);\n}\n\n// \n\nfunction generateDisplayName(target) {\n // $FlowFixMe\n return isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')';\n}\n\nvar _TYPE_STATICS;\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDerivedStateFromProps: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar TYPE_STATICS = (_TYPE_STATICS = {}, _TYPE_STATICS[ForwardRef] = {\n $$typeof: true,\n render: true\n}, _TYPE_STATICS);\n\nvar defineProperty$1 = Object.defineProperty,\n getOwnPropertyNames = Object.getOwnPropertyNames,\n _Object$getOwnPropert = Object.getOwnPropertySymbols,\n getOwnPropertySymbols = _Object$getOwnPropert === undefined ? function () {\n return [];\n} : _Object$getOwnPropert,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor,\n getPrototypeOf = Object.getPrototypeOf,\n objectPrototype = Object.prototype;\nvar arrayPrototype = Array.prototype;\n\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n\n var keys = arrayPrototype.concat(getOwnPropertyNames(sourceComponent),\n // $FlowFixMe\n getOwnPropertySymbols(sourceComponent));\n\n var targetStatics = TYPE_STATICS[targetComponent.$$typeof] || REACT_STATICS;\n\n var sourceStatics = TYPE_STATICS[sourceComponent.$$typeof] || REACT_STATICS;\n\n var i = keys.length;\n var descriptor = void 0;\n var key = void 0;\n\n // eslint-disable-next-line no-plusplus\n while (i--) {\n key = keys[i];\n\n if (\n // $FlowFixMe\n !KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) &&\n // $FlowFixMe\n !(targetStatics && targetStatics[key])) {\n descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n if (descriptor) {\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {\n /* fail silently */\n }\n }\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\n// \nfunction isDerivedReactComponent(fn) {\n return !!(fn && fn.prototype && fn.prototype.isReactComponent);\n}\n\n// \n// Helper to call a given function, only once\nvar once = (function (cb) {\n var called = false;\n\n return function () {\n if (!called) {\n called = true;\n cb.apply(undefined, arguments);\n }\n };\n});\n\n// \n\nvar ThemeContext = createContext();\n\nvar ThemeConsumer = ThemeContext.Consumer;\n\n/**\n * Provide a theme to an entire react component tree via context\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n\n function ThemeProvider(props) {\n classCallCheck(this, ThemeProvider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.getContext = memoize(_this.getContext.bind(_this));\n _this.renderInner = _this.renderInner.bind(_this);\n return _this;\n }\n\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) return null;\n\n return React.createElement(\n ThemeContext.Consumer,\n null,\n this.renderInner\n );\n };\n\n ThemeProvider.prototype.renderInner = function renderInner(outerTheme) {\n var context = this.getContext(this.props.theme, outerTheme);\n\n return React.createElement(\n ThemeContext.Provider,\n { value: context },\n React.Children.only(this.props.children)\n );\n };\n\n /**\n * Get the theme from the props, supporting both (outerTheme) => {}\n * as well as object notation\n */\n\n\n ThemeProvider.prototype.getTheme = function getTheme(theme, outerTheme) {\n if (isFunction(theme)) {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme === null || Array.isArray(mergedTheme) || (typeof mergedTheme === 'undefined' ? 'undefined' : _typeof(mergedTheme)) !== 'object')) {\n throw new StyledComponentsError(7);\n }\n\n return mergedTheme;\n }\n\n if (theme === null || Array.isArray(theme) || (typeof theme === 'undefined' ? 'undefined' : _typeof(theme)) !== 'object') {\n throw new StyledComponentsError(8);\n }\n\n return _extends({}, outerTheme, theme);\n };\n\n ThemeProvider.prototype.getContext = function getContext(theme, outerTheme) {\n return this.getTheme(theme, outerTheme);\n };\n\n return ThemeProvider;\n}(Component);\n\n// \n\nvar ServerStyleSheet = function () {\n function ServerStyleSheet() {\n classCallCheck(this, ServerStyleSheet);\n\n /* The master sheet might be reset, so keep a reference here */\n this.masterSheet = StyleSheet.master;\n this.instance = this.masterSheet.clone();\n this.sealed = false;\n }\n\n /**\n * Mark the ServerStyleSheet as being fully emitted and manually GC it from the\n * StyleSheet singleton.\n */\n\n\n ServerStyleSheet.prototype.seal = function seal() {\n if (!this.sealed) {\n /* Remove sealed StyleSheets from the master sheet */\n var index = this.masterSheet.clones.indexOf(this.instance);\n this.masterSheet.clones.splice(index, 1);\n this.sealed = true;\n }\n };\n\n ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {\n if (this.sealed) {\n throw new StyledComponentsError(2);\n }\n\n return React.createElement(\n StyleSheetManager,\n { sheet: this.instance },\n children\n );\n };\n\n ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {\n this.seal();\n return this.instance.toHTML();\n };\n\n ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {\n this.seal();\n return this.instance.toReactElements();\n };\n\n ServerStyleSheet.prototype.interleaveWithNodeStream = function interleaveWithNodeStream(readableStream) {\n var _this = this;\n\n {\n throw new StyledComponentsError(3);\n }\n\n /* the tag index keeps track of which tags have already been emitted */\n var instance = this.instance;\n\n var instanceTagIndex = 0;\n\n var streamAttr = SC_STREAM_ATTR + '=\"true\"';\n\n var transformer = new stream.Transform({\n transform: function appendStyleChunks(chunk, /* encoding */_, callback) {\n var tags = instance.tags;\n\n var html = '';\n\n /* retrieve html for each new style tag */\n for (; instanceTagIndex < tags.length; instanceTagIndex += 1) {\n var tag = tags[instanceTagIndex];\n html += tag.toHTML(streamAttr);\n }\n\n /* force our StyleSheets to emit entirely new tags */\n instance.sealAllTags();\n\n /* prepend style html to chunk */\n this.push(html + chunk);\n callback();\n }\n });\n\n readableStream.on('end', function () {\n return _this.seal();\n });\n readableStream.on('error', function (err) {\n _this.seal();\n\n // forward the error to the transform stream\n transformer.emit('error', err);\n });\n\n return readableStream.pipe(transformer);\n };\n\n return ServerStyleSheet;\n}();\n\n// \n\nvar StyleSheetContext = createContext();\n\nvar StyleSheetConsumer = StyleSheetContext.Consumer;\n\nvar StyleSheetManager = function (_Component) {\n inherits(StyleSheetManager, _Component);\n\n function StyleSheetManager(props) {\n classCallCheck(this, StyleSheetManager);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.getContext = memoize(_this.getContext);\n return _this;\n }\n\n StyleSheetManager.prototype.getContext = function getContext(sheet, target) {\n if (sheet) {\n return sheet;\n } else if (target) {\n return new StyleSheet(target);\n } else {\n throw new StyledComponentsError(4);\n }\n };\n\n StyleSheetManager.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n sheet = _props.sheet,\n target = _props.target;\n\n\n return React.createElement(\n StyleSheetContext.Provider,\n { value: this.getContext(sheet, target) },\n process.env.NODE_ENV !== 'production' ? React.Children.only(children) : children\n );\n };\n\n return StyleSheetManager;\n}(Component);\nprocess.env.NODE_ENV !== \"production\" ? StyleSheetManager.propTypes = {\n sheet: PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]),\n\n target: PropTypes.shape({\n appendChild: PropTypes.func.isRequired\n })\n} : void 0;\n\n// \n\nvar didWarnAboutClassNameUsage = new Set();\n\nvar classNameUsageCheckInjector = (function (target) {\n var elementClassName = '';\n\n var targetCDM = target.componentDidMount;\n\n // eslint-disable-next-line no-param-reassign\n target.componentDidMount = function componentDidMount() {\n if (typeof targetCDM === 'function') {\n targetCDM.call(this);\n }\n\n var forwardTarget = this.props.forwardedComponent.target;\n\n if (target.props && target.props.suppressClassNameWarning || target.attrs && target.attrs.suppressClassNameWarning || didWarnAboutClassNameUsage.has(forwardTarget)) {\n return;\n }\n\n didWarnAboutClassNameUsage.add(forwardTarget);\n\n var classNames = elementClassName.replace(/ +/g, ' ').trim().split(' ');\n // eslint-disable-next-line react/no-find-dom-node\n var node = ReactDOM.findDOMNode(this);\n var selector = classNames.map(function (s) {\n return '.' + s;\n }).join('');\n\n if (node && node.nodeType === 1 && !classNames.every(function (className) {\n return node.classList && node.classList.contains(className);\n }) && !node.querySelector(selector)) {\n console.warn('It looks like you\\'ve wrapped styled() around your React component (' + getComponentName(forwardTarget) + '), but the className prop is not being passed down to a child. No styles will be rendered unless className is composed within your React component.');\n }\n };\n\n var prevRenderInner = target.renderInner;\n\n // eslint-disable-next-line no-param-reassign\n target.renderInner = function renderInner() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var element = prevRenderInner.apply(this, args);\n\n elementClassName = element.props.className;\n\n return element;\n };\n});\n\n// \n\nvar identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(_ComponentStyle, _displayName, parentComponentId) {\n var displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName);\n\n /**\n * This ensures uniqueness if two components happen to share\n * the same displayName.\n */\n var nr = (identifiers[displayName] || 0) + 1;\n identifiers[displayName] = nr;\n\n var componentId = displayName + '-' + _ComponentStyle.generateName(displayName + nr);\n\n return parentComponentId ? parentComponentId + '-' + componentId : componentId;\n}\n\n// $FlowFixMe\n\nvar StyledComponent = function (_Component) {\n inherits(StyledComponent, _Component);\n\n function StyledComponent() {\n classCallCheck(this, StyledComponent);\n\n var _this = possibleConstructorReturn(this, _Component.call(this));\n\n _this.attrs = {};\n\n _this.renderOuter = _this.renderOuter.bind(_this);\n _this.renderInner = _this.renderInner.bind(_this);\n\n if (process.env.NODE_ENV !== 'production') {\n _this.warnInnerRef = once(function (displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('The \"innerRef\" API has been removed in styled-components v4 in favor of React 16 ref forwarding, use \"ref\" instead like a typical component. \"innerRef\" was detected on component \"' + displayName + '\".')\n );\n });\n\n _this.warnAttrsFnObjectKeyDeprecated = once(function (key, displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('Functions as object-form attrs({}) keys are now deprecated and will be removed in a future version of styled-components. Switch to the new attrs(props => ({})) syntax instead for easier and more powerful composition. The attrs key in question is \"' + key + '\" on component \"' + displayName + '\".')\n );\n });\n\n _this.warnNonStyledComponentAttrsObjectKey = once(function (key, displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('It looks like you\\'ve used a non styled-component as the value for the \"' + key + '\" prop in an object-form attrs constructor of \"' + displayName + '\".\\n' + 'You should use the new function-form attrs constructor which avoids this issue: attrs(props => ({ yourStuff }))\\n' + \"To continue using the deprecated object syntax, you'll need to wrap your component prop in a function to make it available inside the styled component (you'll still get the deprecation warning though.)\\n\" + ('For example, { ' + key + ': () => InnerComponent } instead of { ' + key + ': InnerComponent }'))\n );\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && IS_BROWSER) {\n classNameUsageCheckInjector(_this);\n }\n return _this;\n }\n\n StyledComponent.prototype.render = function render() {\n return React.createElement(\n StyleSheetConsumer,\n null,\n this.renderOuter\n );\n };\n\n StyledComponent.prototype.renderOuter = function renderOuter() {\n var styleSheet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : StyleSheet.master;\n\n this.styleSheet = styleSheet;\n\n // No need to subscribe a static component to theme changes, it won't change anything\n if (this.props.forwardedComponent.componentStyle.isStatic) return this.renderInner();\n\n return React.createElement(\n ThemeConsumer,\n null,\n this.renderInner\n );\n };\n\n StyledComponent.prototype.renderInner = function renderInner(theme) {\n var _props$forwardedCompo = this.props.forwardedComponent,\n componentStyle = _props$forwardedCompo.componentStyle,\n defaultProps = _props$forwardedCompo.defaultProps,\n displayName = _props$forwardedCompo.displayName,\n foldedComponentIds = _props$forwardedCompo.foldedComponentIds,\n styledComponentId = _props$forwardedCompo.styledComponentId,\n target = _props$forwardedCompo.target;\n\n\n var generatedClassName = void 0;\n if (componentStyle.isStatic) {\n generatedClassName = this.generateAndInjectStyles(EMPTY_OBJECT, this.props);\n } else if (theme !== undefined) {\n generatedClassName = this.generateAndInjectStyles(determineTheme(this.props, theme, defaultProps), this.props);\n } else {\n generatedClassName = this.generateAndInjectStyles(this.props.theme || EMPTY_OBJECT, this.props);\n }\n\n var elementToBeCreated = this.props.as || this.attrs.as || target;\n var isTargetTag = isTag(elementToBeCreated);\n\n var propsForElement = {};\n var computedProps = _extends({}, this.attrs, this.props);\n\n var key = void 0;\n // eslint-disable-next-line guard-for-in\n for (key in computedProps) {\n if (process.env.NODE_ENV !== 'production' && key === 'innerRef' && isTargetTag) {\n this.warnInnerRef(displayName);\n }\n\n if (key === 'forwardedComponent' || key === 'as') continue;else if (key === 'forwardedRef') propsForElement.ref = computedProps[key];else if (!isTargetTag || validAttr(key)) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (this.props.style && this.attrs.style) {\n propsForElement.style = _extends({}, this.attrs.style, this.props.style);\n }\n\n propsForElement.className = Array.prototype.concat(foldedComponentIds, this.props.className, styledComponentId, this.attrs.className, generatedClassName).filter(Boolean).join(' ');\n\n return createElement(elementToBeCreated, propsForElement);\n };\n\n StyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props, attrs) {\n var _this2 = this;\n\n var context = _extends({}, props, { theme: theme });\n\n if (!attrs.length) return context;\n\n this.attrs = {};\n\n attrs.forEach(function (attrDef) {\n var resolvedAttrDef = attrDef;\n var attrDefWasFn = false;\n var attr = void 0;\n var key = void 0;\n\n if (isFunction(resolvedAttrDef)) {\n // $FlowFixMe\n resolvedAttrDef = resolvedAttrDef(context);\n attrDefWasFn = true;\n }\n\n /* eslint-disable guard-for-in */\n // $FlowFixMe\n for (key in resolvedAttrDef) {\n attr = resolvedAttrDef[key];\n\n if (!attrDefWasFn) {\n if (isFunction(attr) && !isDerivedReactComponent(attr) && !isStyledComponent(attr)) {\n if (process.env.NODE_ENV !== 'production') {\n _this2.warnAttrsFnObjectKeyDeprecated(key, props.forwardedComponent.displayName);\n }\n\n attr = attr(context);\n\n if (process.env.NODE_ENV !== 'production' && React.isValidElement(attr)) {\n _this2.warnNonStyledComponentAttrsObjectKey(key, props.forwardedComponent.displayName);\n }\n }\n }\n\n _this2.attrs[key] = attr;\n context[key] = attr;\n }\n /* eslint-enable */\n });\n\n return context;\n };\n\n StyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var _props$forwardedCompo2 = props.forwardedComponent,\n attrs = _props$forwardedCompo2.attrs,\n componentStyle = _props$forwardedCompo2.componentStyle,\n warnTooManyClasses = _props$forwardedCompo2.warnTooManyClasses;\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n\n if (componentStyle.isStatic && !attrs.length) {\n return componentStyle.generateAndInjectStyles(EMPTY_OBJECT, this.styleSheet);\n }\n\n var className = componentStyle.generateAndInjectStyles(this.buildExecutionContext(theme, props, attrs), this.styleSheet);\n\n if (process.env.NODE_ENV !== 'production' && warnTooManyClasses) warnTooManyClasses(className);\n\n return className;\n };\n\n return StyledComponent;\n}(Component);\n\nfunction createStyledComponent(target, options, rules) {\n var isTargetStyledComp = isStyledComponent(target);\n var isClass = !isTag(target);\n\n var _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? generateDisplayName(target) : _options$displayName,\n _options$componentId = options.componentId,\n componentId = _options$componentId === undefined ? generateId(ComponentStyle, options.displayName, options.parentComponentId) : _options$componentId,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? StyledComponent : _options$ParentCompon,\n _options$attrs = options.attrs,\n attrs = _options$attrs === undefined ? EMPTY_ARRAY : _options$attrs;\n\n\n var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + '-' + options.componentId : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n var finalAttrs =\n // $FlowFixMe\n isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs;\n\n var componentStyle = new ComponentStyle(isTargetStyledComp ? // fold the underlying StyledComponent rules up (implicit extend)\n // $FlowFixMe\n target.componentStyle.rules.concat(rules) : rules, finalAttrs, styledComponentId);\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n var WrappedStyledComponent = React.forwardRef(function (props, ref) {\n return React.createElement(ParentComponent, _extends({}, props, { forwardedComponent: WrappedStyledComponent, forwardedRef: ref }));\n });\n\n // $FlowFixMe\n WrappedStyledComponent.attrs = finalAttrs;\n // $FlowFixMe\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n\n // $FlowFixMe\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp ? // $FlowFixMe\n Array.prototype.concat(target.foldedComponentIds, target.styledComponentId) : EMPTY_ARRAY;\n\n // $FlowFixMe\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n // $FlowFixMe\n WrappedStyledComponent.target = isTargetStyledComp ? target.target : target;\n\n // $FlowFixMe\n WrappedStyledComponent.withComponent = function withComponent(tag) {\n var previousComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['componentId']);\n\n\n var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : escape(getComponentName(tag)));\n\n var newOptions = _extends({}, optionsToCopy, {\n attrs: finalAttrs,\n componentId: newComponentId,\n ParentComponent: ParentComponent\n });\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName);\n }\n\n // $FlowFixMe\n WrappedStyledComponent.toString = function () {\n return '.' + WrappedStyledComponent.styledComponentId;\n };\n\n if (isClass) {\n hoistNonReactStatics(WrappedStyledComponent, target, {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n styledComponentId: true,\n target: true,\n withComponent: true\n });\n }\n\n return WrappedStyledComponent;\n}\n\n// \n// Thanks to ReactDOMFactories for this handy list!\n\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// \n\nvar styled = function styled(tag) {\n return constructWithOptions(createStyledComponent, tag);\n};\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(function (domElement) {\n styled[domElement] = styled(domElement);\n});\n\n// \n\nvar GlobalStyle = function () {\n function GlobalStyle(rules, componentId) {\n classCallCheck(this, GlobalStyle);\n\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules, EMPTY_ARRAY);\n\n if (!StyleSheet.master.hasId(componentId)) {\n StyleSheet.master.deferredInject(componentId, []);\n }\n }\n\n GlobalStyle.prototype.createStyles = function createStyles(executionContext, styleSheet) {\n var flatCSS = flatten(this.rules, executionContext, styleSheet);\n var css = stringifyRules(flatCSS, '');\n\n styleSheet.inject(this.componentId, css);\n };\n\n GlobalStyle.prototype.removeStyles = function removeStyles(styleSheet) {\n var componentId = this.componentId;\n\n if (styleSheet.hasId(componentId)) {\n styleSheet.remove(componentId);\n }\n };\n\n // TODO: overwrite in-place instead of remove+create?\n\n\n GlobalStyle.prototype.renderStyles = function renderStyles(executionContext, styleSheet) {\n this.removeStyles(styleSheet);\n this.createStyles(executionContext, styleSheet);\n };\n\n return GlobalStyle;\n}();\n\n// \n\n// place our cache into shared context so it'll persist between HMRs\nif (IS_BROWSER) {\n window.scCGSHMRCache = {};\n}\n\nfunction createGlobalStyle(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var id = 'sc-global-' + murmurhash(JSON.stringify(rules));\n var style = new GlobalStyle(rules, id);\n\n var GlobalStyleComponent = function (_React$Component) {\n inherits(GlobalStyleComponent, _React$Component);\n\n function GlobalStyleComponent() {\n classCallCheck(this, GlobalStyleComponent);\n\n var _this = possibleConstructorReturn(this, _React$Component.call(this));\n\n var _this$constructor = _this.constructor,\n globalStyle = _this$constructor.globalStyle,\n styledComponentId = _this$constructor.styledComponentId;\n\n\n if (IS_BROWSER) {\n window.scCGSHMRCache[styledComponentId] = (window.scCGSHMRCache[styledComponentId] || 0) + 1;\n }\n\n /**\n * This fixes HMR compatibility. Don't ask me why, but this combination of\n * caching the closure variables via statics and then persisting the statics in\n * state works across HMR where no other combination did. ¯\\_(ツ)_/¯\n */\n _this.state = {\n globalStyle: globalStyle,\n styledComponentId: styledComponentId\n };\n return _this;\n }\n\n GlobalStyleComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n if (window.scCGSHMRCache[this.state.styledComponentId]) {\n window.scCGSHMRCache[this.state.styledComponentId] -= 1;\n }\n /**\n * Depending on the order \"render\" is called this can cause the styles to be lost\n * until the next render pass of the remaining instance, which may\n * not be immediate.\n */\n if (window.scCGSHMRCache[this.state.styledComponentId] === 0) {\n this.state.globalStyle.removeStyles(this.styleSheet);\n }\n };\n\n GlobalStyleComponent.prototype.render = function render() {\n var _this2 = this;\n\n if (process.env.NODE_ENV !== 'production' && React.Children.count(this.props.children)) {\n // eslint-disable-next-line no-console\n console.warn('The global style component ' + this.state.styledComponentId + ' was given child JSX. createGlobalStyle does not render children.');\n }\n\n return React.createElement(\n StyleSheetConsumer,\n null,\n function (styleSheet) {\n _this2.styleSheet = styleSheet || StyleSheet.master;\n\n var globalStyle = _this2.state.globalStyle;\n\n\n if (globalStyle.isStatic) {\n globalStyle.renderStyles(STATIC_EXECUTION_CONTEXT, _this2.styleSheet);\n\n return null;\n } else {\n return React.createElement(\n ThemeConsumer,\n null,\n function (theme) {\n // $FlowFixMe\n var defaultProps = _this2.constructor.defaultProps;\n\n\n var context = _extends({}, _this2.props);\n\n if (typeof theme !== 'undefined') {\n context.theme = determineTheme(_this2.props, theme, defaultProps);\n }\n\n globalStyle.renderStyles(context, _this2.styleSheet);\n\n return null;\n }\n );\n }\n }\n );\n };\n\n return GlobalStyleComponent;\n }(React.Component);\n\n GlobalStyleComponent.globalStyle = style;\n GlobalStyleComponent.styledComponentId = id;\n\n\n return GlobalStyleComponent;\n}\n\n// \n\nvar replaceWhitespace = function replaceWhitespace(str) {\n return str.replace(/\\s|\\\\n/g, '');\n};\n\nfunction keyframes(strings) {\n /* Warning if you've used keyframes on React Native */\n if (process.env.NODE_ENV !== 'production' && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n console.warn('`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.');\n }\n\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n\n var name = generateAlphabeticName(murmurhash(replaceWhitespace(JSON.stringify(rules))));\n\n return new Keyframes(name, stringifyRules(rules, name, '@keyframes'));\n}\n\n// \n\nvar withTheme = (function (Component$$1) {\n var WithTheme = React.forwardRef(function (props, ref) {\n return React.createElement(\n ThemeConsumer,\n null,\n function (theme) {\n // $FlowFixMe\n var defaultProps = Component$$1.defaultProps;\n\n var themeProp = determineTheme(props, theme, defaultProps);\n\n if (process.env.NODE_ENV !== 'production' && themeProp === undefined) {\n // eslint-disable-next-line no-console\n console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + getComponentName(Component$$1) + '\"');\n }\n\n return React.createElement(Component$$1, _extends({}, props, { theme: themeProp, ref: ref }));\n }\n );\n });\n\n hoistNonReactStatics(WithTheme, Component$$1);\n\n WithTheme.displayName = 'WithTheme(' + getComponentName(Component$$1) + ')';\n\n return WithTheme;\n});\n\n// \n\n/* eslint-disable */\nvar __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS = {\n StyleSheet: StyleSheet\n};\n\n// \n\n/* Warning if you've imported this file on React Native */\nif (process.env.NODE_ENV !== 'production' && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n // eslint-disable-next-line no-console\n console.warn(\"It looks like you've imported 'styled-components' on React Native.\\n\" + \"Perhaps you're looking to import 'styled-components/native'?\\n\" + 'Read more about this at https://www.styled-components.com/docs/basics#react-native');\n}\n\n/* Warning if there are several instances of styled-components */\nif (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && typeof window !== 'undefined' && typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Node.js') === -1 && navigator.userAgent.indexOf('jsdom') === -1) {\n window['__styled-components-init__'] = window['__styled-components-init__'] || 0;\n\n if (window['__styled-components-init__'] === 1) {\n // eslint-disable-next-line no-console\n console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. \" + 'This may cause dynamic styles not rendering properly, errors happening during rehydration process ' + 'and makes your application bigger without a good reason.\\n\\n' + 'See https://s-c.sh/2BAXzed for more info.');\n }\n\n window['__styled-components-init__'] += 1;\n}\n\n//\n\nexport default styled;\nexport { css, keyframes, createGlobalStyle, isStyledComponent, ThemeConsumer, ThemeContext, ThemeProvider, withTheme, ServerStyleSheet, StyleSheetManager, __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS };\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","(function (factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory()) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory()) :\n\t\t\t(window['stylisRuleSheet'] = factory())\n}(function () {\n\n\t'use strict'\n\n\treturn function (insertRule) {\n\t\tvar delimiter = '/*|*/'\n\t\tvar needle = delimiter+'}'\n\n\t\tfunction toSheet (block) {\n\t\t\tif (block)\n\t\t\t\ttry {\n\t\t\t\t\tinsertRule(block + '}')\n\t\t\t\t} catch (e) {}\n\t\t}\n\n\t\treturn function ruleSheet (context, content, selectors, parents, line, column, length, ns, depth, at) {\n\t\t\tswitch (context) {\n\t\t\t\t// property\n\t\t\t\tcase 1:\n\t\t\t\t\t// @import\n\t\t\t\t\tif (depth === 0 && content.charCodeAt(0) === 64)\n\t\t\t\t\t\treturn insertRule(content+';'), ''\n\t\t\t\t\tbreak\n\t\t\t\t// selector\n\t\t\t\tcase 2:\n\t\t\t\t\tif (ns === 0)\n\t\t\t\t\t\treturn content + delimiter\n\t\t\t\t\tbreak\n\t\t\t\t// at-rule\n\t\t\t\tcase 3:\n\t\t\t\t\tswitch (ns) {\n\t\t\t\t\t\t// @font-face, @page\n\t\t\t\t\t\tcase 102:\n\t\t\t\t\t\tcase 112:\n\t\t\t\t\t\t\treturn insertRule(selectors[0]+content), ''\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn content + (at === 0 ? delimiter : '')\n\t\t\t\t\t}\n\t\t\t\tcase -2:\n\t\t\t\t\tcontent.split(needle).forEach(toSheet)\n\t\t\t}\n\t\t}\n\t}\n}))\n","!function(e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(null):\"function\"==typeof define&&define.amd?define(e(null)):window.stylis=e(null)}(function e(a){\"use strict\";var r=/^\\0+/g,c=/[\\0\\r\\f]/g,s=/: */g,t=/zoo|gra/,i=/([,: ])(transform)/g,f=/,+\\s*(?![^(]*[)])/g,n=/ +\\s*(?![^(]*[)])/g,l=/ *[\\0] */g,o=/,\\r+?/g,h=/([\\t\\r\\n ])*\\f?&/g,u=/:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g,d=/\\W+/g,b=/@(k\\w+)\\s*(\\S*)\\s*/,p=/::(place)/g,k=/:(read-only)/g,g=/\\s+(?=[{\\];=:>])/g,A=/([[}=:>])\\s+/g,C=/(\\{[^{]+?);(?=\\})/g,w=/\\s{2,}/g,v=/([^\\(])(:+) */g,m=/[svh]\\w+-[tblr]{2}/,x=/\\(\\s*(.*)\\s*\\)/g,$=/([\\s\\S]*?);/g,y=/-self|flex-/g,O=/[^]*?(:[rp][el]a[\\w-]+)[^]*/,j=/stretch|:\\s*\\w+\\-(?:conte|avail)/,z=/([^-])(image-set\\()/,N=\"-webkit-\",S=\"-moz-\",F=\"-ms-\",W=59,q=125,B=123,D=40,E=41,G=91,H=93,I=10,J=13,K=9,L=64,M=32,P=38,Q=45,R=95,T=42,U=44,V=58,X=39,Y=34,Z=47,_=62,ee=43,ae=126,re=0,ce=12,se=11,te=107,ie=109,fe=115,ne=112,le=111,oe=105,he=99,ue=100,de=112,be=1,pe=1,ke=0,ge=1,Ae=1,Ce=1,we=0,ve=0,me=0,xe=[],$e=[],ye=0,Oe=null,je=-2,ze=-1,Ne=0,Se=1,Fe=2,We=3,qe=0,Be=1,De=\"\",Ee=\"\",Ge=\"\";function He(e,a,s,t,i){for(var f,n,o=0,h=0,u=0,d=0,g=0,A=0,C=0,w=0,m=0,$=0,y=0,O=0,j=0,z=0,R=0,we=0,$e=0,Oe=0,je=0,ze=s.length,Je=ze-1,Re=\"\",Te=\"\",Ue=\"\",Ve=\"\",Xe=\"\",Ye=\"\";R0)Te=Te.replace(c,\"\");if(Te.trim().length>0){switch(C){case M:case K:case W:case J:case I:break;default:Te+=s.charAt(R)}C=W}}if(1===$e)switch(C){case B:case q:case W:case Y:case X:case D:case E:case U:$e=0;case K:case J:case I:case M:break;default:for($e=0,je=R,g=C,R--,C=W;je0)++R,C=g;case B:je=ze}}switch(C){case B:for(g=(Te=Te.trim()).charCodeAt(0),y=1,je=++R;R0)Te=Te.replace(c,\"\");switch(A=Te.charCodeAt(1)){case ue:case ie:case fe:case Q:f=a;break;default:f=xe}if(je=(Ue=He(a,f,Ue,A,i+1)).length,me>0&&0===je)je=Te.length;if(ye>0)if(f=Ie(xe,Te,Oe),n=Pe(We,Ue,f,a,pe,be,je,A,i,t),Te=f.join(\"\"),void 0!==n)if(0===(je=(Ue=n.trim()).length))A=0,Ue=\"\";if(je>0)switch(A){case fe:Te=Te.replace(x,Me);case ue:case ie:case Q:Ue=Te+\"{\"+Ue+\"}\";break;case te:if(Ue=(Te=Te.replace(b,\"$1 $2\"+(Be>0?De:\"\")))+\"{\"+Ue+\"}\",1===Ae||2===Ae&&Le(\"@\"+Ue,3))Ue=\"@\"+N+Ue+\"@\"+Ue;else Ue=\"@\"+Ue;break;default:if(Ue=Te+Ue,t===de)Ve+=Ue,Ue=\"\"}else Ue=\"\";break;default:Ue=He(a,Ie(a,Te,Oe),Ue,t,i+1)}Xe+=Ue,O=0,$e=0,z=0,we=0,Oe=0,j=0,Te=\"\",Ue=\"\",C=s.charCodeAt(++R);break;case q:case W:if((je=(Te=(we>0?Te.replace(c,\"\"):Te).trim()).length)>1){if(0===z)if((g=Te.charCodeAt(0))===Q||g>96&&g<123)je=(Te=Te.replace(\" \",\":\")).length;if(ye>0)if(void 0!==(n=Pe(Se,Te,a,e,pe,be,Ve.length,t,i,t)))if(0===(je=(Te=n.trim()).length))Te=\"\\0\\0\";switch(g=Te.charCodeAt(0),A=Te.charCodeAt(1),g){case re:break;case L:if(A===oe||A===he){Ye+=Te+s.charAt(R);break}default:if(Te.charCodeAt(je-1)===V)break;Ve+=Ke(Te,g,A,Te.charCodeAt(2))}}O=0,$e=0,z=0,we=0,Oe=0,Te=\"\",C=s.charCodeAt(++R)}}switch(C){case J:case I:if(h+d+u+o+ve===0)switch($){case E:case X:case Y:case L:case ae:case _:case T:case ee:case Z:case Q:case V:case U:case W:case B:case q:break;default:if(z>0)$e=1}if(h===Z)h=0;else if(ge+O===0&&t!==te&&Te.length>0)we=1,Te+=\"\\0\";if(ye*qe>0)Pe(Ne,Te,a,e,pe,be,Ve.length,t,i,t);be=1,pe++;break;case W:case q:if(h+d+u+o===0){be++;break}default:switch(be++,Re=s.charAt(R),C){case K:case M:if(d+o+h===0)switch(w){case U:case V:case K:case M:Re=\"\";break;default:if(C!==M)Re=\" \"}break;case re:Re=\"\\\\0\";break;case ce:Re=\"\\\\f\";break;case se:Re=\"\\\\v\";break;case P:if(d+h+o===0&&ge>0)Oe=1,we=1,Re=\"\\f\"+Re;break;case 108:if(d+h+o+ke===0&&z>0)switch(R-z){case 2:if(w===ne&&s.charCodeAt(R-3)===V)ke=w;case 8:if(m===le)ke=m}break;case V:if(d+h+o===0)z=R;break;case U:if(h+u+d+o===0)we=1,Re+=\"\\r\";break;case Y:case X:if(0===h)d=d===C?0:0===d?C:d;break;case G:if(d+h+u===0)o++;break;case H:if(d+h+u===0)o--;break;case E:if(d+h+o===0)u--;break;case D:if(d+h+o===0){if(0===O)switch(2*w+3*m){case 533:break;default:y=0,O=1}u++}break;case L:if(h+u+d+o+z+j===0)j=1;break;case T:case Z:if(d+o+u>0)break;switch(h){case 0:switch(2*C+3*s.charCodeAt(R+1)){case 235:h=Z;break;case 220:je=R,h=T}break;case T:if(C===Z&&w===T&&je+2!==R){if(33===s.charCodeAt(je+2))Ve+=s.substring(je,R+1);Re=\"\",h=0}}}if(0===h){if(ge+d+o+j===0&&t!==te&&C!==W)switch(C){case U:case ae:case _:case ee:case E:case D:if(0===O){switch(w){case K:case M:case I:case J:Re+=\"\\0\";break;default:Re=\"\\0\"+Re+(C===U?\"\":\"\\0\")}we=1}else switch(C){case D:if(z+7===R&&108===w)z=0;O=++y;break;case E:if(0==(O=--y))we=1,Re+=\"\\0\"}break;case K:case M:switch(w){case re:case B:case q:case W:case U:case ce:case K:case M:case I:case J:break;default:if(0===O)we=1,Re+=\"\\0\"}}if(Te+=Re,C!==M&&C!==K)$=C}}m=w,w=C,R++}if(je=Ve.length,me>0)if(0===je&&0===Xe.length&&0===a[0].length==false)if(t!==ie||1===a.length&&(ge>0?Ee:Ge)===a[0])je=a.join(\",\").length+2;if(je>0){if(f=0===ge&&t!==te?function(e){for(var a,r,s=0,t=e.length,i=Array(t);s1)continue;if(u=n.charCodeAt(n.length-1),d=r.charCodeAt(0),a=\"\",0!==o)switch(u){case T:case ae:case _:case ee:case M:case D:break;default:a=\" \"}switch(d){case P:r=a+Ee;case ae:case _:case ee:case M:case E:case D:break;case G:r=a+r+Ee;break;case V:switch(2*r.charCodeAt(1)+3*r.charCodeAt(2)){case 530:if(Ce>0){r=a+r.substring(8,h-1);break}default:if(o<1||f[o-1].length<1)r=a+Ee+r}break;case U:a=\"\";default:if(h>1&&r.indexOf(\":\")>0)r=a+r.replace(v,\"$1\"+Ee+\"$2\");else r=a+r+Ee}n+=r}i[s]=n.replace(c,\"\").trim()}return i}(a):a,ye>0)if(void 0!==(n=Pe(Fe,Ve,f,e,pe,be,je,t,i,t))&&0===(Ve=n).length)return Ye+Ve+Xe;if(Ve=f.join(\",\")+\"{\"+Ve+\"}\",Ae*ke!=0){if(2===Ae&&!Le(Ve,2))ke=0;switch(ke){case le:Ve=Ve.replace(k,\":\"+S+\"$1\")+Ve;break;case ne:Ve=Ve.replace(p,\"::\"+N+\"input-$1\")+Ve.replace(p,\"::\"+S+\"$1\")+Ve.replace(p,\":\"+F+\"input-$1\")+Ve}ke=0}}return Ye+Ve+Xe}function Ie(e,a,r){var c=a.trim().split(o),s=c,t=c.length,i=e.length;switch(i){case 0:case 1:for(var f=0,n=0===i?\"\":e[0]+\" \";f0&&ge>0)return s.replace(u,\"$1\").replace(h,\"$1\"+Ge);break;default:return e.trim()+s.replace(h,\"$1\"+e.trim())}default:if(r*ge>0&&s.indexOf(\"\\f\")>0)return s.replace(h,(e.charCodeAt(0)===V?\"\":\"$1\")+e.trim())}return e+s}function Ke(e,a,r,c){var l,o=0,h=e+\";\",u=2*a+3*r+4*c;if(944===u)return function(e){var a=e.length,r=e.indexOf(\":\",9)+1,c=e.substring(0,r).trim(),s=e.substring(r,a-1).trim();switch(e.charCodeAt(9)*Be){case 0:break;case Q:if(110!==e.charCodeAt(10))break;default:for(var t=s.split((s=\"\",f)),i=0,r=0,a=t.length;iL&&h<90||h>96&&h<123||h===R||h===Q&&l.charCodeAt(1)!==Q))switch(isNaN(parseFloat(l))+(-1!==l.indexOf(\"(\"))){case 1:switch(l){case\"infinite\":case\"alternate\":case\"backwards\":case\"running\":case\"normal\":case\"forwards\":case\"both\":case\"none\":case\"linear\":case\"ease\":case\"ease-in\":case\"ease-out\":case\"ease-in-out\":case\"paused\":case\"reverse\":case\"alternate-reverse\":case\"inherit\":case\"initial\":case\"unset\":case\"step-start\":case\"step-end\":break;default:l+=De}}o[r++]=l}s+=(0===i?\"\":\",\")+o.join(\" \")}}if(s=c+s+\";\",1===Ae||2===Ae&&Le(s,1))return N+s+s;return s}(h);else if(0===Ae||2===Ae&&!Le(h,1))return h;switch(u){case 1015:return 97===h.charCodeAt(10)?N+h+h:h;case 951:return 116===h.charCodeAt(3)?N+h+h:h;case 963:return 110===h.charCodeAt(5)?N+h+h:h;case 1009:if(100!==h.charCodeAt(4))break;case 969:case 942:return N+h+h;case 978:return N+h+S+h+h;case 1019:case 983:return N+h+S+h+F+h+h;case 883:if(h.charCodeAt(8)===Q)return N+h+h;if(h.indexOf(\"image-set(\",11)>0)return h.replace(z,\"$1\"+N+\"$2\")+h;return h;case 932:if(h.charCodeAt(4)===Q)switch(h.charCodeAt(5)){case 103:return N+\"box-\"+h.replace(\"-grow\",\"\")+N+h+F+h.replace(\"grow\",\"positive\")+h;case 115:return N+h+F+h.replace(\"shrink\",\"negative\")+h;case 98:return N+h+F+h.replace(\"basis\",\"preferred-size\")+h}return N+h+F+h+h;case 964:return N+h+F+\"flex-\"+h+h;case 1023:if(99!==h.charCodeAt(8))break;return l=h.substring(h.indexOf(\":\",15)).replace(\"flex-\",\"\").replace(\"space-between\",\"justify\"),N+\"box-pack\"+l+N+h+F+\"flex-pack\"+l+h;case 1005:return t.test(h)?h.replace(s,\":\"+N)+h.replace(s,\":\"+S)+h:h;case 1e3:switch(o=(l=h.substring(13).trim()).indexOf(\"-\")+1,l.charCodeAt(0)+l.charCodeAt(o)){case 226:l=h.replace(m,\"tb\");break;case 232:l=h.replace(m,\"tb-rl\");break;case 220:l=h.replace(m,\"lr\");break;default:return h}return N+h+F+l+h;case 1017:if(-1===h.indexOf(\"sticky\",9))return h;case 975:switch(o=(h=e).length-10,u=(l=(33===h.charCodeAt(o)?h.substring(0,o):h).substring(e.indexOf(\":\",7)+1).trim()).charCodeAt(0)+(0|l.charCodeAt(7))){case 203:if(l.charCodeAt(8)<111)break;case 115:h=h.replace(l,N+l)+\";\"+h;break;case 207:case 102:h=h.replace(l,N+(u>102?\"inline-\":\"\")+\"box\")+\";\"+h.replace(l,N+l)+\";\"+h.replace(l,F+l+\"box\")+\";\"+h}return h+\";\";case 938:if(h.charCodeAt(5)===Q)switch(h.charCodeAt(6)){case 105:return l=h.replace(\"-items\",\"\"),N+h+N+\"box-\"+l+F+\"flex-\"+l+h;case 115:return N+h+F+\"flex-item-\"+h.replace(y,\"\")+h;default:return N+h+F+\"flex-line-pack\"+h.replace(\"align-content\",\"\").replace(y,\"\")+h}break;case 973:case 989:if(h.charCodeAt(3)!==Q||122===h.charCodeAt(4))break;case 931:case 953:if(true===j.test(e))if(115===(l=e.substring(e.indexOf(\":\")+1)).charCodeAt(0))return Ke(e.replace(\"stretch\",\"fill-available\"),a,r,c).replace(\":fill-available\",\":stretch\");else return h.replace(l,N+l)+h.replace(l,S+l.replace(\"fill-\",\"\"))+h;break;case 962:if(h=N+h+(102===h.charCodeAt(5)?F+h:\"\")+h,r+c===211&&105===h.charCodeAt(13)&&h.indexOf(\"transform\",10)>0)return h.substring(0,h.indexOf(\";\",27)+1).replace(i,\"$1\"+N+\"$2\")+h}return h}function Le(e,a){var r=e.indexOf(1===a?\":\":\"{\"),c=e.substring(0,3!==a?r:10),s=e.substring(r+1,e.length-1);return Oe(2!==a?c:c.replace(O,\"$1\"),s,a)}function Me(e,a){var r=Ke(a,a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2));return r!==a+\";\"?r.replace($,\" or ($1)\").substring(4):\"(\"+a+\")\"}function Pe(e,a,r,c,s,t,i,f,n,l){for(var o,h=0,u=a;h0)De=s.replace(d,t===G?\"\":\"-\");if(t=1,1===ge)Ge=s;else Ee=s;var i,f=[Ge];if(ye>0)if(void 0!==(i=Pe(ze,r,f,f,pe,be,0,0,0,0))&&\"string\"==typeof i)r=i;var n=He(xe,f,r,0,0);if(ye>0)if(void 0!==(i=Pe(je,n,f,f,pe,be,n.length,0,0,0))&&\"string\"!=typeof(n=i))t=0;return De=\"\",Ge=\"\",Ee=\"\",ke=0,pe=1,be=1,we*t==0?n:n.replace(c,\"\").replace(g,\"\").replace(A,\"$1\").replace(C,\"$1\").replace(w,\" \")}if(Te.use=function e(a){switch(a){case void 0:case null:ye=$e.length=0;break;default:if(\"function\"==typeof a)$e[ye++]=a;else if(\"object\"==typeof a)for(var r=0,c=a.length;r (props.out ? 'hidden' : 'visible')};\n animation: ${props => (props.out ? fadeOut : fadeIn)} ${props => (props.timeout / 1000).toFixed(2)}s linear;\n transition: visibility ${props => (props.timeout / 1000).toFixed(2)}s linear;\n`;\nFade.propTypes = {\n out: PropTypes.bool,\n timeout: PropTypes.number\n};\nFade.defaultProps = {\n out: false,\n timeout: 150\n};\n\nexport default Fade;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nclass Portal extends React.Component {\n static propTypes = {\n node: PropTypes.any\n };\n\n constructor(props) {\n super(props);\n\n this.node = document.createElement('div');\n this.node.setAttribute('data-reactportal', '');\n }\n\n componentDidMount() {\n if (this.props.node) {\n this.props.node.appendChild(this.node);\n } else {\n document.body.appendChild(this.node);\n }\n\n this.componentDidUpdate();\n }\n\n componentWillUnmount() {\n if (this.node) {\n ReactDOM.unmountComponentAtNode(this.node);\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n this.node = null;\n }\n }\n\n componentDidUpdate() {\n ReactDOM.render(\n this.props.children,\n this.node\n );\n }\n\n render() {\n return null;\n }\n}\n\nexport default Portal;\n","import 'trendmicro-ui/dist/css/trendmicro-ui.css';\nimport '@trendmicro/react-buttons/dist/react-buttons.css';\nimport { Button } from '@trendmicro/react-buttons';\nimport React, { PureComponent } from 'react';\nimport ReactDOM from 'react-dom';\nimport styled from 'styled-components';\nimport Fade from './Fade';\nimport LegacyPortal from '../src/LegacyPortal';\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n color: #fff;\n background-color: rgba(0, 0, 0, .7);\n z-index: 1000;\n`;\n\nconst VerticallyCenter = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n`;\n\nconst Modal = styled.div`\n background-color: #fff;\n min-width: 360px;\n min-height: 240px;\n`;\n\nclass App extends PureComponent {\n state = {\n open: false\n };\n\n openModal = () => {\n this.setState({ open: true });\n };\n closeModal = () => {\n this.setState({ open: false });\n };\n\n persistStyles = () => {\n const parent = window.top;\n if (parent === window) {\n return;\n }\n\n const parentDocument = parent.document;\n const parentHead = parentDocument.getElementsByTagName('head')[0];\n\n const parentStyles = Array.prototype.slice.call(parentDocument.getElementsByTagName('style') || []);\n parentStyles.forEach(style => {\n if (style.getAttribute('data-cloned')) {\n style.parentNode.removeChild(style);\n }\n });\n\n const now = Date.now();\n const styles = document.getElementsByTagName('style');\n for (let i = 0; i < styles.length; ++i) {\n const style = styles[i].cloneNode(true);\n style.setAttribute('data-cloned', true);\n style.setAttribute('data-ctime', now);\n parentHead.appendChild(style);\n }\n };\n\n componentDidMount() {\n this.persistStyles();\n\n const target = document.head;\n const config = {\n attributes: true,\n attributeOldValue: false,\n characterData: true,\n characterDataOldValue: false,\n childList: true,\n subtree: true\n };\n this.observer = new MutationObserver(mutations => {\n this.persistStyles();\n });\n this.observer.observe(target, config);\n }\n render() {\n const { open } = this.state;\n\n return (\n
\n

Iframe

\n {!open &&\n \n }\n {open &&\n \n \n \n \n \n \n

Modal Content

\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n }\n
\n );\n }\n}\n\nReactDOM.render(\n ,\n document.getElementById('container')\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/iframe.html b/docs/iframe.html index a5d2db9..12cdcb5 100644 --- a/docs/iframe.html +++ b/docs/iframe.html @@ -11,5 +11,5 @@
- + diff --git a/docs/index.html b/docs/index.html index 53ccc00..a48d136 100644 --- a/docs/index.html +++ b/docs/index.html @@ -12,5 +12,5 @@
- + diff --git a/examples/Navbar.jsx b/examples/Navbar.jsx index d2f9cf8..6eb032c 100644 --- a/examples/Navbar.jsx +++ b/examples/Navbar.jsx @@ -1,6 +1,7 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; +import Anchor from '@trendmicro/react-anchor'; import { Button } from '@trendmicro/react-buttons'; import styles from './Navbar.styl'; @@ -36,7 +37,7 @@ export default class extends Component { - {name} + {name}
Open } {open && - - - - - -

Modal Content

-
-
- -
-
-
-
-
-
+ + + + + +

Modal Content

+
+
+ +
+
+
+
+
+
+ }
); diff --git a/examples/index.jsx b/examples/index.jsx index 91ff557..4632ed4 100644 --- a/examples/index.jsx +++ b/examples/index.jsx @@ -9,7 +9,7 @@ import Fade from './Fade'; import Navbar from './Navbar'; import Portal from '../src'; -const StyledPortal = styled(Portal)` +const Overlay = styled.div` position: fixed; top: 0; left: 0; @@ -59,56 +59,60 @@ class App extends PureComponent { Open {this.state.modal1 && - - - - - -

Modal #1

-
-
- -
-
-
-
-
-
+ + + + + + +

Modal #1

+
+
+ +
+
+
+
+
+
+
} {this.state.modal2 && - - - - - -

Modal #2

-
-
- -
-
-
-
-
-
+ + + + + + +

Modal #2

+
+
+ +
+
+
+
+
+
+
} diff --git a/examples/webpack.config.js b/examples/webpack.config.js index 7752a73..b28f91e 100644 --- a/examples/webpack.config.js +++ b/examples/webpack.config.js @@ -3,6 +3,7 @@ const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const stylusLoader = require('stylus-loader'); const nib = require('nib'); +const babelConfig = require('../babel.config'); const webpackConfig = { devtool: 'source-map', @@ -20,15 +21,11 @@ const webpackConfig = { enforce: 'pre', exclude: /node_modules/ }, - { - test: /\.styl$/, - loader: 'stylint-loader', - enforce: 'pre' - }, { test: /\.jsx?$/, loader: 'babel-loader', - exclude: /(node_modules|bower_components)/ + exclude: /node_modules/, + options: babelConfig }, { test: /\.styl$/, diff --git a/package.json b/package.json index 95cb46f..3518096 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,21 @@ { "name": "@trendmicro/react-portal", - "version": "0.4.3", + "version": "1.0.0", "description": "React Portal component", - "main": "lib/index.js", + "main": "index.js", "files": [ - "dist", - "lib" + "*.js" ], "scripts": { "prepublish": "npm run lint && npm test && npm run clean && npm run build && npm run build-examples", - "build": "babel --out-dir ./lib ./src", + "build": "babel --out-dir . ./src", "build-examples": "cd examples; webpack", - "clean": "rm -f lib/*", + "clean": "del index.js Portal.js LegacyPortal.js", "demo": "http-server -p 8000 docs/", "lint": "eslint ./src", "lint:fix": "eslint --fix ./src", - "test": "tap test/*.js --node-arg=--require --node-arg=babel-register --node-arg=--require --node-arg=babel-polyfill", - "coveralls": "tap test/*.js --coverage --coverage-report=text-lcov --nyc-arg=--require --nyc-arg=babel-register --nyc-arg=--require --nyc-arg=babel-polyfill | coveralls", + "test": "tap test/*.js --node-arg=--require --node-arg=@babel/register --node-arg=--require --node-arg=@babel/polyfill", + "coveralls": "tap test/*.js --coverage --coverage-report=text-lcov --nyc-arg=--require --nyc-arg=@babel/register --nyc-arg=--require --nyc-arg=@babel/polyfill | coveralls", "dev": "cd examples; webpack-dev-server --hot --inline --host 0.0.0.0 --port 8000 --content-base ../docs" }, "repository": { @@ -41,44 +40,47 @@ "react-portal" ], "peerDependencies": { - "react": "^0.14.0 || >=15.0.0", - "react-dom": "^0.14.0 || >=15.0.0" + "react": ">=16.0.0", + "react-dom": ">=16.0.0" }, "dependencies": {}, "devDependencies": { - "@trendmicro/react-buttons": "~1.0.3", - "babel-cli": "~6.24.0", - "babel-core": "~6.24.0", - "babel-eslint": "~7.2.2", - "babel-loader": "~6.4.0", - "babel-plugin-transform-decorators-legacy": "~1.3.4", - "babel-preset-es2015": "~6.24.0", - "babel-preset-react": "~6.24.1", - "babel-preset-stage-0": "~6.24.1", - "coveralls": "~2.13.0", - "css-loader": "~0.28.0", - "eslint": "~4.5.0", - "eslint-config-trendmicro": "~1.0.0", - "eslint-loader": "~1.7.1", - "eslint-plugin-import": "~2.7.0", - "eslint-plugin-jsx-a11y": "~5.1.1", - "eslint-plugin-react": "~7.3.0", - "file-loader": "~0.11.1", - "html-webpack-plugin": "~2.28.0", - "http-server": "~0.9.0", + "@babel/cli": "~7.2.3", + "@babel/core": "~7.2.2", + "@babel/polyfill": "~7.2.5", + "@babel/preset-env": "~7.2.3", + "@babel/preset-react": "~7.0.0", + "@babel/register": "~7.0.0", + "@trendmicro/babel-config": "~1.0.0-alpha", + "@trendmicro/react-anchor": "~0.5.6", + "@trendmicro/react-buttons": "~1.3.1", + "babel-eslint": "~10.0.1", + "babel-loader": "~8.0.4", + "coveralls": "~3.0.2", + "css-loader": "~1.0.0", + "del-cli": "~1.1.0", + "eslint": "~5.11.1", + "eslint-config-trendmicro": "~1.4.1", + "eslint-loader": "~2.1.1", + "eslint-plugin-import": "~2.14.0", + "eslint-plugin-jsx-a11y": "~6.1.2", + "eslint-plugin-react": "~7.11.1", + "file-loader": "~3.0.1", + "html-webpack-plugin": "~3.2.0", + "http-server": "~0.11.1", "nib": "~1.1.2", "prop-types": "^15.5.10", - "react": "^0.14.0 || >=15.0.0", - "react-dom": "^0.14.0 || >=15.0.0", - "style-loader": "~0.16.1", - "styled-components": "~2.1.2", + "react": ">=16.0.0", + "react-dom": ">=16.0.0", + "style-loader": "~0.23.1", + "styled-components": "~4.1.3", "stylint": "~1.5.9", - "stylint-loader": "~1.0.0", "stylus-loader": "~3.0.1", - "tap": "~10.3.0", - "trendmicro-ui": "~0.4.0", - "url-loader": "~0.5.8", - "webpack": "~2.4.1", - "webpack-dev-server": "~2.4.1" + "tap": "~12.1.1", + "trendmicro-ui": "~0.5.2", + "url-loader": "~1.1.2", + "webpack": "~4.28.2", + "webpack-cli": "~3.1.2", + "webpack-dev-server": "~3.1.14" } } diff --git a/src/LegacyPortal.jsx b/src/LegacyPortal.jsx new file mode 100644 index 0000000..c965ead --- /dev/null +++ b/src/LegacyPortal.jsx @@ -0,0 +1,49 @@ +import PropTypes from 'prop-types'; +import React from 'react'; +import ReactDOM from 'react-dom'; + +class Portal extends React.Component { + static propTypes = { + node: PropTypes.any + }; + + constructor(props) { + super(props); + + this.node = document.createElement('div'); + this.node.setAttribute('data-reactportal', ''); + } + + componentDidMount() { + if (this.props.node) { + this.props.node.appendChild(this.node); + } else { + document.body.appendChild(this.node); + } + + this.componentDidUpdate(); + } + + componentWillUnmount() { + if (this.node) { + ReactDOM.unmountComponentAtNode(this.node); + if (this.node.parentNode) { + this.node.parentNode.removeChild(this.node); + } + this.node = null; + } + } + + componentDidUpdate() { + ReactDOM.render( + this.props.children, + this.node + ); + } + + render() { + return null; + } +} + +export default Portal; diff --git a/src/Portal.jsx b/src/Portal.jsx index 7edf458..1290da0 100644 --- a/src/Portal.jsx +++ b/src/Portal.jsx @@ -1,48 +1,42 @@ import PropTypes from 'prop-types'; -import React, { PureComponent } from 'react'; +import React from 'react'; import ReactDOM from 'react-dom'; -class Portal extends PureComponent { +class Portal extends React.Component { static propTypes = { node: PropTypes.any }; - node = null; + constructor(props) { + super(props); - componentDidMount() { - if (!this.node) { - this.node = document.createElement('div'); - this.node.setAttribute('data-reactportal', ''); + this.node = document.createElement('div'); + this.node.setAttribute('data-reactportal', ''); + } - if (this.props.node) { - this.props.node.appendChild(this.node); - } else { - document.body.appendChild(this.node); - } + componentDidMount() { + if (this.props.node) { + this.props.node.appendChild(this.node); + } else { + document.body.appendChild(this.node); } - this.componentDidUpdate(); } + componentWillUnmount() { if (this.node) { - ReactDOM.unmountComponentAtNode(this.node); if (this.node.parentNode) { this.node.parentNode.removeChild(this.node); } this.node = null; } } - componentDidUpdate() { - const props = { ...this.props }; - delete props.node; - ReactDOM.render( -
, + render() { + return ReactDOM.createPortal( + this.props.children, this.node ); } - render() { - return null; - } } export default Portal; diff --git a/src/index.js b/src/index.js index 42cb233..24dc3a2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,5 @@ +import ReactDOM from 'react-dom'; import Portal from './Portal'; +import LegacyPortal from './LegacyPortal'; -module.exports = Portal; +export default !!(ReactDOM.createPortal) ? Portal : LegacyPortal;