|  |  |  |  | 'use strict'; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Object.defineProperty(exports, '__esModule', { value: true }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var reactPrimitives = _interopDefault(require('react-primitives')); | 
					
						
							|  |  |  |  | var transformDeclPairs = _interopDefault(require('css-to-react-native')); | 
					
						
							|  |  |  |  | var reactIs = require('react-is'); | 
					
						
							|  |  |  |  | var React = require('react'); | 
					
						
							|  |  |  |  | var React__default = _interopDefault(React); | 
					
						
							|  |  |  |  | require('shallowequal'); | 
					
						
							|  |  |  |  | var Stylis = _interopDefault(require('@emotion/stylis')); | 
					
						
							|  |  |  |  | var unitless = _interopDefault(require('@emotion/unitless')); | 
					
						
							|  |  |  |  | var supportsColor = _interopDefault(require('supports-color')); | 
					
						
							|  |  |  |  | var hoist = _interopDefault(require('hoist-non-react-statics')); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* eslint-disable no-bitwise */ | 
					
						
							|  |  |  |  | var AD_REPLACER_R = /(a)(d)/gi; | 
					
						
							|  |  |  |  | /* This is the "capacity" of our alphabet i.e. 2x26 for all letters plus their capitalised | 
					
						
							|  |  |  |  |  * counterparts */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var charsLength = 52; | 
					
						
							|  |  |  |  | /* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var getAlphabeticChar = function getAlphabeticChar(code) { | 
					
						
							|  |  |  |  |   return String.fromCharCode(code + (code > 25 ? 39 : 97)); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | /* input a number, usually a hash and convert it to base-52 */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function generateAlphabeticName(code) { | 
					
						
							|  |  |  |  |   var name = ''; | 
					
						
							|  |  |  |  |   var x; | 
					
						
							|  |  |  |  |   /* get a char and divide by alphabet-length */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (x = Math.abs(code); x > charsLength; x = x / charsLength | 0) { | 
					
						
							|  |  |  |  |     name = getAlphabeticChar(x % charsLength) + name; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2'); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* eslint-disable */ | 
					
						
							|  |  |  |  | var SEED = 5381; // When we have separate strings it's useful to run a progressive
 | 
					
						
							|  |  |  |  | // version of djb2 where we pretend that we're still looping over
 | 
					
						
							|  |  |  |  | // the same string
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var phash = function phash(h, x) { | 
					
						
							|  |  |  |  |   var i = x.length; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   while (i) { | 
					
						
							|  |  |  |  |     h = h * 33 ^ x.charCodeAt(--i); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return h; | 
					
						
							|  |  |  |  | }; // This is a djb2 hashing function
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var hash = function hash(x) { | 
					
						
							|  |  |  |  |   return phash(SEED, x); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var generateComponentId = (function (str) { | 
					
						
							|  |  |  |  |   return generateAlphabeticName(hash(str) >>> 0); | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function getComponentName(target) { | 
					
						
							|  |  |  |  |   return (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) || // $FlowFixMe
 | 
					
						
							|  |  |  |  |   target.displayName || // $FlowFixMe
 | 
					
						
							|  |  |  |  |   target.name || 'Component'; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function isFunction(test) { | 
					
						
							|  |  |  |  |   return typeof test === 'function'; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function isStatelessFunction(test) { | 
					
						
							|  |  |  |  |   return typeof test === 'function' && !(test.prototype && test.prototype.isReactComponent); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var isPlainObject = (function (x) { | 
					
						
							|  |  |  |  |   return x !== null && typeof x === 'object' && (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' && !reactIs.typeOf(x); | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function isStyledComponent(target) { | 
					
						
							|  |  |  |  |   return target && typeof target.styledComponentId === 'string'; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function _defineProperties(target, props) { | 
					
						
							|  |  |  |  |   for (var i = 0; i < props.length; i++) { | 
					
						
							|  |  |  |  |     var descriptor = props[i]; | 
					
						
							|  |  |  |  |     descriptor.enumerable = descriptor.enumerable || false; | 
					
						
							|  |  |  |  |     descriptor.configurable = true; | 
					
						
							|  |  |  |  |     if ("value" in descriptor) descriptor.writable = true; | 
					
						
							|  |  |  |  |     Object.defineProperty(target, descriptor.key, descriptor); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function _createClass(Constructor, protoProps, staticProps) { | 
					
						
							|  |  |  |  |   if (protoProps) _defineProperties(Constructor.prototype, protoProps); | 
					
						
							|  |  |  |  |   if (staticProps) _defineProperties(Constructor, staticProps); | 
					
						
							|  |  |  |  |   return Constructor; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function _extends() { | 
					
						
							|  |  |  |  |   _extends = Object.assign || function (target) { | 
					
						
							|  |  |  |  |     for (var i = 1; i < arguments.length; i++) { | 
					
						
							|  |  |  |  |       var source = arguments[i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (var key in source) { | 
					
						
							|  |  |  |  |         if (Object.prototype.hasOwnProperty.call(source, key)) { | 
					
						
							|  |  |  |  |           target[key] = source[key]; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return target; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return _extends.apply(this, arguments); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function _inheritsLoose(subClass, superClass) { | 
					
						
							|  |  |  |  |   subClass.prototype = Object.create(superClass.prototype); | 
					
						
							|  |  |  |  |   subClass.prototype.constructor = subClass; | 
					
						
							|  |  |  |  |   subClass.__proto__ = superClass; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function _objectWithoutPropertiesLoose(source, excluded) { | 
					
						
							|  |  |  |  |   if (source == null) return {}; | 
					
						
							|  |  |  |  |   var target = {}; | 
					
						
							|  |  |  |  |   var sourceKeys = Object.keys(source); | 
					
						
							|  |  |  |  |   var key, i; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (i = 0; i < sourceKeys.length; i++) { | 
					
						
							|  |  |  |  |     key = sourceKeys[i]; | 
					
						
							|  |  |  |  |     if (excluded.indexOf(key) >= 0) continue; | 
					
						
							|  |  |  |  |     target[key] = source[key]; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return target; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var SC_ATTR = typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || 'data-styled'; | 
					
						
							|  |  |  |  | var SC_ATTR_ACTIVE = 'active'; | 
					
						
							|  |  |  |  | var SC_ATTR_VERSION = 'data-styled-version'; | 
					
						
							|  |  |  |  | var SC_VERSION = "5.3.6"; | 
					
						
							|  |  |  |  | var SPLITTER = '/*!sc*/\n'; | 
					
						
							|  |  |  |  | var IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window; | 
					
						
							|  |  |  |  | var DISABLE_SPEEDY = Boolean(typeof SC_DISABLE_SPEEDY === 'boolean' ? SC_DISABLE_SPEEDY : typeof process !== 'undefined' && typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' && process.env.REACT_APP_SC_DISABLE_SPEEDY !== '' ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false' ? false : process.env.REACT_APP_SC_DISABLE_SPEEDY : typeof process !== 'undefined' && typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== '' ? process.env.SC_DISABLE_SPEEDY === 'false' ? false : process.env.SC_DISABLE_SPEEDY : process.env.NODE_ENV !== 'production'); // Shared empty execution context when generating static styles
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var EMPTY_ARRAY = Object.freeze([]); | 
					
						
							|  |  |  |  | var EMPTY_OBJECT = Object.freeze({}); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var errorMap = { | 
					
						
							|  |  |  |  |   "1": "Cannot create styled-component for component: %s.\n\n", | 
					
						
							|  |  |  |  |   "2": "Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\n\n- Are you trying to reuse it across renders?\n- Are you accidentally calling collectStyles twice?\n\n", | 
					
						
							|  |  |  |  |   "3": "Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\n\n", | 
					
						
							|  |  |  |  |   "4": "The `StyleSheetManager` expects a valid target or sheet prop!\n\n- Does this error occur on the client and is your target falsy?\n- Does this error occur on the server and is the sheet falsy?\n\n", | 
					
						
							|  |  |  |  |   "5": "The clone method cannot be used on the client!\n\n- Are you running in a client-like environment on the server?\n- Are you trying to run SSR on the client?\n\n", | 
					
						
							|  |  |  |  |   "6": "Trying to insert a new style tag, but the given Node is unmounted!\n\n- Are you using a custom target that isn't mounted?\n- Does your document not have a valid head element?\n- Have you accidentally removed a style tag manually?\n\n", | 
					
						
							|  |  |  |  |   "7": "ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\n\n```js\ntheme={() => ({})}\n```\n\n", | 
					
						
							|  |  |  |  |   "8": "ThemeProvider: Please make your \"theme\" prop an object.\n\n", | 
					
						
							|  |  |  |  |   "9": "Missing document `<head>`\n\n", | 
					
						
							|  |  |  |  |   "10": "Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\n\n", | 
					
						
							|  |  |  |  |   "11": "_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\n\n", | 
					
						
							|  |  |  |  |   "12": "It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\`\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\n\n", | 
					
						
							|  |  |  |  |   "13": "%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\n\n", | 
					
						
							|  |  |  |  |   "14": "ThemeProvider: \"theme\" prop is required.\n\n", | 
					
						
							|  |  |  |  |   "15": "A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\n\n```js\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\n```\n\n", | 
					
						
							|  |  |  |  |   "16": "Reached the limit of how many styled components may be created at group %s.\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\nas for instance in your render method then you may be running into this limitation.\n\n", | 
					
						
							|  |  |  |  |   "17": "CSSStyleSheet could not be found on HTMLStyleElement.\nHas styled-components' style tag been unmounted or altered by another script?\n" | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var ERRORS = process.env.NODE_ENV !== 'production' ? errorMap : {}; | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * super basic version of sprintf | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function format() { | 
					
						
							|  |  |  |  |   var a = arguments.length <= 0 ? undefined : arguments[0]; | 
					
						
							|  |  |  |  |   var b = []; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var c = 1, len = arguments.length; c < len; c += 1) { | 
					
						
							|  |  |  |  |     b.push(c < 0 || arguments.length <= c ? undefined : arguments[c]); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   b.forEach(function (d) { | 
					
						
							|  |  |  |  |     a = a.replace(/%[a-z]/, d); | 
					
						
							|  |  |  |  |   }); | 
					
						
							|  |  |  |  |   return a; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Create an error file out of errors.md for development and a simple web link to the full errors | 
					
						
							|  |  |  |  |  * in production mode. | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function throwStyledComponentsError(code) { | 
					
						
							|  |  |  |  |   for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | 
					
						
							|  |  |  |  |     interpolations[_key - 1] = arguments[_key]; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (process.env.NODE_ENV === 'production') { | 
					
						
							|  |  |  |  |     throw new Error("An error occurred. See https://git.io/JUIaE#" + code + " for more information." + (interpolations.length > 0 ? " Args: " + interpolations.join(', ') : '')); | 
					
						
							|  |  |  |  |   } else { | 
					
						
							|  |  |  |  |     throw new Error(format.apply(void 0, [ERRORS[code]].concat(interpolations)).trim()); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | /** Create a GroupedTag with an underlying Tag implementation */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var makeGroupedTag = function makeGroupedTag(tag) { | 
					
						
							|  |  |  |  |   return new DefaultGroupedTag(tag); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | var BASE_SIZE = 1 << 9; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var DefaultGroupedTag = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function DefaultGroupedTag(tag) { | 
					
						
							|  |  |  |  |     this.groupSizes = new Uint32Array(BASE_SIZE); | 
					
						
							|  |  |  |  |     this.length = BASE_SIZE; | 
					
						
							|  |  |  |  |     this.tag = tag; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = DefaultGroupedTag.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.indexOfGroup = function indexOfGroup(group) { | 
					
						
							|  |  |  |  |     var index = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = 0; i < group; i++) { | 
					
						
							|  |  |  |  |       index += this.groupSizes[i]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return index; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.insertRules = function insertRules(group, rules) { | 
					
						
							|  |  |  |  |     if (group >= this.groupSizes.length) { | 
					
						
							|  |  |  |  |       var oldBuffer = this.groupSizes; | 
					
						
							|  |  |  |  |       var oldSize = oldBuffer.length; | 
					
						
							|  |  |  |  |       var newSize = oldSize; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       while (group >= newSize) { | 
					
						
							|  |  |  |  |         newSize <<= 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (newSize < 0) { | 
					
						
							|  |  |  |  |           throwStyledComponentsError(16, "" + group); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.groupSizes = new Uint32Array(newSize); | 
					
						
							|  |  |  |  |       this.groupSizes.set(oldBuffer); | 
					
						
							|  |  |  |  |       this.length = newSize; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (var i = oldSize; i < newSize; i++) { | 
					
						
							|  |  |  |  |         this.groupSizes[i] = 0; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var ruleIndex = this.indexOfGroup(group + 1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var _i = 0, l = rules.length; _i < l; _i++) { | 
					
						
							|  |  |  |  |       if (this.tag.insertRule(ruleIndex, rules[_i])) { | 
					
						
							|  |  |  |  |         this.groupSizes[group]++; | 
					
						
							|  |  |  |  |         ruleIndex++; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.clearGroup = function clearGroup(group) { | 
					
						
							|  |  |  |  |     if (group < this.length) { | 
					
						
							|  |  |  |  |       var length = this.groupSizes[group]; | 
					
						
							|  |  |  |  |       var startIndex = this.indexOfGroup(group); | 
					
						
							|  |  |  |  |       var endIndex = startIndex + length; | 
					
						
							|  |  |  |  |       this.groupSizes[group] = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (var i = startIndex; i < endIndex; i++) { | 
					
						
							|  |  |  |  |         this.tag.deleteRule(startIndex); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.getGroup = function getGroup(group) { | 
					
						
							|  |  |  |  |     var css = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (group >= this.length || this.groupSizes[group] === 0) { | 
					
						
							|  |  |  |  |       return css; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var length = this.groupSizes[group]; | 
					
						
							|  |  |  |  |     var startIndex = this.indexOfGroup(group); | 
					
						
							|  |  |  |  |     var endIndex = startIndex + length; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = startIndex; i < endIndex; i++) { | 
					
						
							|  |  |  |  |       css += "" + this.tag.getRule(i) + SPLITTER; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return css; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return DefaultGroupedTag; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var MAX_SMI = 1 << 31 - 1; | 
					
						
							|  |  |  |  | var groupIDRegister = new Map(); | 
					
						
							|  |  |  |  | var reverseRegister = new Map(); | 
					
						
							|  |  |  |  | var nextFreeGroup = 1; | 
					
						
							|  |  |  |  | var getGroupForId = function getGroupForId(id) { | 
					
						
							|  |  |  |  |   if (groupIDRegister.has(id)) { | 
					
						
							|  |  |  |  |     return groupIDRegister.get(id); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   while (reverseRegister.has(nextFreeGroup)) { | 
					
						
							|  |  |  |  |     nextFreeGroup++; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var group = nextFreeGroup++; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (process.env.NODE_ENV !== 'production' && ((group | 0) < 0 || group > MAX_SMI)) { | 
					
						
							|  |  |  |  |     throwStyledComponentsError(16, "" + group); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   groupIDRegister.set(id, group); | 
					
						
							|  |  |  |  |   reverseRegister.set(group, id); | 
					
						
							|  |  |  |  |   return group; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | var getIdForGroup = function getIdForGroup(group) { | 
					
						
							|  |  |  |  |   return reverseRegister.get(group); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | var setGroupForId = function setGroupForId(id, group) { | 
					
						
							|  |  |  |  |   if (group >= nextFreeGroup) { | 
					
						
							|  |  |  |  |     nextFreeGroup = group + 1; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   groupIDRegister.set(id, group); | 
					
						
							|  |  |  |  |   reverseRegister.set(group, id); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var SELECTOR = "style[" + SC_ATTR + "][" + SC_ATTR_VERSION + "=\"" + SC_VERSION + "\"]"; | 
					
						
							|  |  |  |  | var MARKER_RE = new RegExp("^" + SC_ATTR + "\\.g(\\d+)\\[id=\"([\\w\\d-]+)\"\\].*?\"([^\"]*)"); | 
					
						
							|  |  |  |  | var outputSheet = function outputSheet(sheet) { | 
					
						
							|  |  |  |  |   var tag = sheet.getTag(); | 
					
						
							|  |  |  |  |   var length = tag.length; | 
					
						
							|  |  |  |  |   var css = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var group = 0; group < length; group++) { | 
					
						
							|  |  |  |  |     var id = getIdForGroup(group); | 
					
						
							|  |  |  |  |     if (id === undefined) continue; | 
					
						
							|  |  |  |  |     var names = sheet.names.get(id); | 
					
						
							|  |  |  |  |     var rules = tag.getGroup(group); | 
					
						
							|  |  |  |  |     if (!names || !rules || !names.size) continue; | 
					
						
							|  |  |  |  |     var selector = SC_ATTR + ".g" + group + "[id=\"" + id + "\"]"; | 
					
						
							|  |  |  |  |     var content = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (names !== undefined) { | 
					
						
							|  |  |  |  |       names.forEach(function (name) { | 
					
						
							|  |  |  |  |         if (name.length > 0) { | 
					
						
							|  |  |  |  |           content += name + ","; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } // NOTE: It's easier to collect rules and have the marker
 | 
					
						
							|  |  |  |  |     // after the actual rules to simplify the rehydration
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     css += "" + rules + selector + "{content:\"" + content + "\"}" + SPLITTER; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return css; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var rehydrateNamesFromContent = function rehydrateNamesFromContent(sheet, id, content) { | 
					
						
							|  |  |  |  |   var names = content.split(','); | 
					
						
							|  |  |  |  |   var name; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var i = 0, l = names.length; i < l; i++) { | 
					
						
							|  |  |  |  |     // eslint-disable-next-line
 | 
					
						
							|  |  |  |  |     if (name = names[i]) { | 
					
						
							|  |  |  |  |       sheet.registerName(id, name); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var rehydrateSheetFromTag = function rehydrateSheetFromTag(sheet, style) { | 
					
						
							|  |  |  |  |   var parts = (style.textContent || '').split(SPLITTER); | 
					
						
							|  |  |  |  |   var rules = []; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var i = 0, l = parts.length; i < l; i++) { | 
					
						
							|  |  |  |  |     var part = parts[i].trim(); | 
					
						
							|  |  |  |  |     if (!part) continue; | 
					
						
							|  |  |  |  |     var marker = part.match(MARKER_RE); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (marker) { | 
					
						
							|  |  |  |  |       var group = parseInt(marker[1], 10) | 0; | 
					
						
							|  |  |  |  |       var id = marker[2]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (group !== 0) { | 
					
						
							|  |  |  |  |         // Rehydrate componentId to group index mapping
 | 
					
						
							|  |  |  |  |         setGroupForId(id, group); // Rehydrate names and rules
 | 
					
						
							|  |  |  |  |         // looks like: data-styled.g11[id="idA"]{content:"nameA,"}
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         rehydrateNamesFromContent(sheet, id, marker[3]); | 
					
						
							|  |  |  |  |         sheet.getTag().insertRules(group, rules); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       rules.length = 0; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       rules.push(part); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var rehydrateSheet = function rehydrateSheet(sheet) { | 
					
						
							|  |  |  |  |   var nodes = document.querySelectorAll(SELECTOR); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var i = 0, l = nodes.length; i < l; i++) { | 
					
						
							|  |  |  |  |     var node = nodes[i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) { | 
					
						
							|  |  |  |  |       rehydrateSheetFromTag(sheet, node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (node.parentNode) { | 
					
						
							|  |  |  |  |         node.parentNode.removeChild(node); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* eslint-disable camelcase, no-undef */ | 
					
						
							|  |  |  |  | var getNonce = function getNonce() { | 
					
						
							|  |  |  |  |   return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var ELEMENT_TYPE = 1; | 
					
						
							|  |  |  |  | /* Node.ELEMENT_TYPE */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** Find last style element if any inside target */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var findLastStyleTag = function findLastStyleTag(target) { | 
					
						
							|  |  |  |  |   var childNodes = target.childNodes; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var i = childNodes.length; i >= 0; i--) { | 
					
						
							|  |  |  |  |     var child = childNodes[i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) { | 
					
						
							|  |  |  |  |       return child; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return undefined; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | /** Create a style element inside `target` or <head> after the last */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var makeStyleTag = function makeStyleTag(target) { | 
					
						
							|  |  |  |  |   var head = document.head; | 
					
						
							|  |  |  |  |   var parent = target || head; | 
					
						
							|  |  |  |  |   var style = document.createElement('style'); | 
					
						
							|  |  |  |  |   var prevStyle = findLastStyleTag(parent); | 
					
						
							|  |  |  |  |   var nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null; | 
					
						
							|  |  |  |  |   style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE); | 
					
						
							|  |  |  |  |   style.setAttribute(SC_ATTR_VERSION, SC_VERSION); | 
					
						
							|  |  |  |  |   var nonce = getNonce(); | 
					
						
							|  |  |  |  |   if (nonce) style.setAttribute('nonce', nonce); | 
					
						
							|  |  |  |  |   parent.insertBefore(style, nextSibling); | 
					
						
							|  |  |  |  |   return style; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | /** Get the CSSStyleSheet instance for a given style element */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var getSheet = function getSheet(tag) { | 
					
						
							|  |  |  |  |   if (tag.sheet) { | 
					
						
							|  |  |  |  |     return tag.sheet; | 
					
						
							|  |  |  |  |   } // Avoid Firefox quirk where the style element might not have a sheet property
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _document = document, | 
					
						
							|  |  |  |  |       styleSheets = _document.styleSheets; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var i = 0, l = styleSheets.length; i < l; i++) { | 
					
						
							|  |  |  |  |     var sheet = styleSheets[i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (sheet.ownerNode === tag) { | 
					
						
							|  |  |  |  |       return sheet; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   throwStyledComponentsError(17); | 
					
						
							|  |  |  |  |   return undefined; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | /** Create a CSSStyleSheet-like tag depending on the environment */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var makeTag = function makeTag(_ref) { | 
					
						
							|  |  |  |  |   var isServer = _ref.isServer, | 
					
						
							|  |  |  |  |       useCSSOMInjection = _ref.useCSSOMInjection, | 
					
						
							|  |  |  |  |       target = _ref.target; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (isServer) { | 
					
						
							|  |  |  |  |     return new VirtualTag(target); | 
					
						
							|  |  |  |  |   } else if (useCSSOMInjection) { | 
					
						
							|  |  |  |  |     return new CSSOMTag(target); | 
					
						
							|  |  |  |  |   } else { | 
					
						
							|  |  |  |  |     return new TextTag(target); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | var CSSOMTag = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function CSSOMTag(target) { | 
					
						
							|  |  |  |  |     var element = this.element = makeStyleTag(target); // Avoid Edge bug where empty style elements don't create sheets
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     element.appendChild(document.createTextNode('')); | 
					
						
							|  |  |  |  |     this.sheet = getSheet(element); | 
					
						
							|  |  |  |  |     this.length = 0; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = CSSOMTag.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.insertRule = function insertRule(index, rule) { | 
					
						
							|  |  |  |  |     try { | 
					
						
							|  |  |  |  |       this.sheet.insertRule(rule, index); | 
					
						
							|  |  |  |  |       this.length++; | 
					
						
							|  |  |  |  |       return true; | 
					
						
							|  |  |  |  |     } catch (_error) { | 
					
						
							|  |  |  |  |       return false; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.deleteRule = function deleteRule(index) { | 
					
						
							|  |  |  |  |     this.sheet.deleteRule(index); | 
					
						
							|  |  |  |  |     this.length--; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.getRule = function getRule(index) { | 
					
						
							|  |  |  |  |     var rule = this.sheet.cssRules[index]; // Avoid IE11 quirk where cssText is inaccessible on some invalid rules
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (rule !== undefined && typeof rule.cssText === 'string') { | 
					
						
							|  |  |  |  |       return rule.cssText; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return ''; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return CSSOMTag; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | /** A Tag that emulates the CSSStyleSheet API but uses text nodes */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var TextTag = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function TextTag(target) { | 
					
						
							|  |  |  |  |     var element = this.element = makeStyleTag(target); | 
					
						
							|  |  |  |  |     this.nodes = element.childNodes; | 
					
						
							|  |  |  |  |     this.length = 0; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto2 = TextTag.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto2.insertRule = function insertRule(index, rule) { | 
					
						
							|  |  |  |  |     if (index <= this.length && index >= 0) { | 
					
						
							|  |  |  |  |       var node = document.createTextNode(rule); | 
					
						
							|  |  |  |  |       var refNode = this.nodes[index]; | 
					
						
							|  |  |  |  |       this.element.insertBefore(node, refNode || null); | 
					
						
							|  |  |  |  |       this.length++; | 
					
						
							|  |  |  |  |       return true; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return false; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto2.deleteRule = function deleteRule(index) { | 
					
						
							|  |  |  |  |     this.element.removeChild(this.nodes[index]); | 
					
						
							|  |  |  |  |     this.length--; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto2.getRule = function getRule(index) { | 
					
						
							|  |  |  |  |     if (index < this.length) { | 
					
						
							|  |  |  |  |       return this.nodes[index].textContent; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return ''; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return TextTag; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | /** A completely virtual (server-side) Tag that doesn't manipulate the DOM */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var VirtualTag = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function VirtualTag(_target) { | 
					
						
							|  |  |  |  |     this.rules = []; | 
					
						
							|  |  |  |  |     this.length = 0; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto3 = VirtualTag.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto3.insertRule = function insertRule(index, rule) { | 
					
						
							|  |  |  |  |     if (index <= this.length) { | 
					
						
							|  |  |  |  |       this.rules.splice(index, 0, rule); | 
					
						
							|  |  |  |  |       this.length++; | 
					
						
							|  |  |  |  |       return true; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return false; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto3.deleteRule = function deleteRule(index) { | 
					
						
							|  |  |  |  |     this.rules.splice(index, 1); | 
					
						
							|  |  |  |  |     this.length--; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto3.getRule = function getRule(index) { | 
					
						
							|  |  |  |  |     if (index < this.length) { | 
					
						
							|  |  |  |  |       return this.rules[index]; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return ''; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return VirtualTag; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var SHOULD_REHYDRATE = IS_BROWSER; | 
					
						
							|  |  |  |  | var defaultOptions = { | 
					
						
							|  |  |  |  |   isServer: !IS_BROWSER, | 
					
						
							|  |  |  |  |   useCSSOMInjection: !DISABLE_SPEEDY | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | /** Contains the main stylesheet logic for stringification and caching */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var StyleSheet = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   /** Register a group ID to give it an index */ | 
					
						
							|  |  |  |  |   StyleSheet.registerId = function registerId(id) { | 
					
						
							|  |  |  |  |     return getGroupForId(id); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function StyleSheet(options, globalStyles, names) { | 
					
						
							|  |  |  |  |     if (options === void 0) { | 
					
						
							|  |  |  |  |       options = EMPTY_OBJECT; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (globalStyles === void 0) { | 
					
						
							|  |  |  |  |       globalStyles = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.options = _extends({}, defaultOptions, {}, options); | 
					
						
							|  |  |  |  |     this.gs = globalStyles; | 
					
						
							|  |  |  |  |     this.names = new Map(names); | 
					
						
							|  |  |  |  |     this.server = !!options.isServer; // We rehydrate only once and use the sheet that is created first
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) { | 
					
						
							|  |  |  |  |       SHOULD_REHYDRATE = false; | 
					
						
							|  |  |  |  |       rehydrateSheet(this); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = StyleSheet.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.reconstructWithOptions = function reconstructWithOptions(options, withNames) { | 
					
						
							|  |  |  |  |     if (withNames === void 0) { | 
					
						
							|  |  |  |  |       withNames = true; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return new StyleSheet(_extends({}, this.options, {}, options), this.gs, withNames && this.names || undefined); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.allocateGSInstance = function allocateGSInstance(id) { | 
					
						
							|  |  |  |  |     return this.gs[id] = (this.gs[id] || 0) + 1; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Lazily initialises a GroupedTag for when it's actually needed */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.getTag = function getTag() { | 
					
						
							|  |  |  |  |     return this.tag || (this.tag = makeGroupedTag(makeTag(this.options))); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Check whether a name is known for caching */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.hasNameForId = function hasNameForId(id, name) { | 
					
						
							|  |  |  |  |     return this.names.has(id) && this.names.get(id).has(name); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Mark a group's name as known for caching */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.registerName = function registerName(id, name) { | 
					
						
							|  |  |  |  |     getGroupForId(id); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!this.names.has(id)) { | 
					
						
							|  |  |  |  |       var groupNames = new Set(); | 
					
						
							|  |  |  |  |       groupNames.add(name); | 
					
						
							|  |  |  |  |       this.names.set(id, groupNames); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       this.names.get(id).add(name); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Insert new rules which also marks the name as known */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.insertRules = function insertRules(id, name, rules) { | 
					
						
							|  |  |  |  |     this.registerName(id, name); | 
					
						
							|  |  |  |  |     this.getTag().insertRules(getGroupForId(id), rules); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Clears all cached names for a given group ID */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.clearNames = function clearNames(id) { | 
					
						
							|  |  |  |  |     if (this.names.has(id)) { | 
					
						
							|  |  |  |  |       this.names.get(id).clear(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Clears all rules for a given group ID */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.clearRules = function clearRules(id) { | 
					
						
							|  |  |  |  |     this.getTag().clearGroup(getGroupForId(id)); | 
					
						
							|  |  |  |  |     this.clearNames(id); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Clears the entire tag which deletes all rules but not its names */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.clearTag = function clearTag() { | 
					
						
							|  |  |  |  |     // NOTE: This does not clear the names, since it's only used during SSR
 | 
					
						
							|  |  |  |  |     // so that we can continuously output only new rules
 | 
					
						
							|  |  |  |  |     this.tag = undefined; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** Outputs the current sheet as a CSS string with markers for SSR */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toString = function toString() { | 
					
						
							|  |  |  |  |     return outputSheet(this); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return StyleSheet; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * MIT License | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Copyright (c) 2016 Sultan Tarimo | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Permission is hereby granted, free of charge, to any person obtaining a copy of | 
					
						
							|  |  |  |  |  * this software and associated documentation files (the "Software"), | 
					
						
							|  |  |  |  |  * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | 
					
						
							|  |  |  |  |  * sell copies of the Software and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * The above copyright notice and this permission notice shall be included in all | 
					
						
							|  |  |  |  |  * copies or substantial portions of the Software. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 
					
						
							|  |  |  |  |  * OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
					
						
							|  |  |  |  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
					
						
							|  |  |  |  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | 
					
						
							|  |  |  |  |  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR | 
					
						
							|  |  |  |  |  * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* eslint-disable */ | 
					
						
							|  |  |  |  | function insertRulePlugin (insertRule) { | 
					
						
							|  |  |  |  |   var delimiter = '/*|*/'; | 
					
						
							|  |  |  |  |   var needle = delimiter + "}"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function toSheet(block) { | 
					
						
							|  |  |  |  |     if (block) { | 
					
						
							|  |  |  |  |       try { | 
					
						
							|  |  |  |  |         insertRule(block + "}"); | 
					
						
							|  |  |  |  |       } catch (e) {} | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) { | 
					
						
							|  |  |  |  |     switch (context) { | 
					
						
							|  |  |  |  |       // property
 | 
					
						
							|  |  |  |  |       case 1: | 
					
						
							|  |  |  |  |         // @import
 | 
					
						
							|  |  |  |  |         if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(content + ";"), ''; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       // selector
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case 2: | 
					
						
							|  |  |  |  |         if (ns === 0) return content + delimiter; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       // at-rule
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case 3: | 
					
						
							|  |  |  |  |         switch (ns) { | 
					
						
							|  |  |  |  |           // @font-face, @page
 | 
					
						
							|  |  |  |  |           case 102: | 
					
						
							|  |  |  |  |           case 112: | 
					
						
							|  |  |  |  |             return insertRule(selectors[0] + content), ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           default: | 
					
						
							|  |  |  |  |             return content + (at === 0 ? delimiter : ''); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case -2: | 
					
						
							|  |  |  |  |         content.split(needle).forEach(toSheet); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var COMMENT_REGEX = /^\s*\/\/.*$/gm; | 
					
						
							|  |  |  |  | var COMPLEX_SELECTOR_PREFIX = [':', '[', '.', '#']; | 
					
						
							|  |  |  |  | function createStylisInstance(_temp) { | 
					
						
							|  |  |  |  |   var _ref = _temp === void 0 ? EMPTY_OBJECT : _temp, | 
					
						
							|  |  |  |  |       _ref$options = _ref.options, | 
					
						
							|  |  |  |  |       options = _ref$options === void 0 ? EMPTY_OBJECT : _ref$options, | 
					
						
							|  |  |  |  |       _ref$plugins = _ref.plugins, | 
					
						
							|  |  |  |  |       plugins = _ref$plugins === void 0 ? EMPTY_ARRAY : _ref$plugins; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var stylis = new Stylis(options); // Wrap `insertRulePlugin to build a list of rules,
 | 
					
						
							|  |  |  |  |   // and then make our own plugin to return the rules. This
 | 
					
						
							|  |  |  |  |   // makes it easier to hook into the existing SSR architecture
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var parsingRules = []; // eslint-disable-next-line consistent-return
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var returnRulesPlugin = function returnRulesPlugin(context) { | 
					
						
							|  |  |  |  |     if (context === -2) { | 
					
						
							|  |  |  |  |       var parsedRules = parsingRules; | 
					
						
							|  |  |  |  |       parsingRules = []; | 
					
						
							|  |  |  |  |       return parsedRules; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var parseRulesPlugin = insertRulePlugin(function (rule) { | 
					
						
							|  |  |  |  |     parsingRules.push(rule); | 
					
						
							|  |  |  |  |   }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _componentId; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _selector; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _selectorRegexp; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _consecutiveSelfRefRegExp; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var selfReferenceReplacer = function selfReferenceReplacer(match, offset, string) { | 
					
						
							|  |  |  |  |     if ( // do not replace the first occurrence if it is complex (has a modifier)
 | 
					
						
							|  |  |  |  |     (offset === 0 ? COMPLEX_SELECTOR_PREFIX.indexOf(string[_selector.length]) === -1 : true) && // no consecutive self refs (.b.b); that is a precedence boost and treated differently
 | 
					
						
							|  |  |  |  |     !string.match(_consecutiveSelfRefRegExp)) { | 
					
						
							|  |  |  |  |       return "." + _componentId; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return match; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * When writing a style like | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * & + & { | 
					
						
							|  |  |  |  |    *   color: red; | 
					
						
							|  |  |  |  |    * } | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * The second ampersand should be a reference to the static component class. stylis | 
					
						
							|  |  |  |  |    * has no knowledge of static class so we have to intelligently replace the base selector. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * https://github.com/thysultan/stylis.js/tree/v3.5.4#plugins <- more info about the context phase values
 | 
					
						
							|  |  |  |  |    * "2" means this plugin is taking effect at the very end after all other processing is complete | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var selfReferenceReplacementPlugin = function selfReferenceReplacementPlugin(context, _, selectors) { | 
					
						
							|  |  |  |  |     if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) { | 
					
						
							|  |  |  |  |       // eslint-disable-next-line no-param-reassign
 | 
					
						
							|  |  |  |  |       selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   stylis.use([].concat(plugins, [selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin])); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function stringifyRules(css, selector, prefix, componentId) { | 
					
						
							|  |  |  |  |     if (componentId === void 0) { | 
					
						
							|  |  |  |  |       componentId = '&'; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var flatCSS = css.replace(COMMENT_REGEX, ''); | 
					
						
							|  |  |  |  |     var cssStr = selector && prefix ? prefix + " " + selector + " { " + flatCSS + " }" : flatCSS; // stylis has no concept of state to be passed to plugins
 | 
					
						
							|  |  |  |  |     // but since JS is single-threaded, we can rely on that to ensure
 | 
					
						
							|  |  |  |  |     // these properties stay in sync with the current stylis run
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _componentId = componentId; | 
					
						
							|  |  |  |  |     _selector = selector; | 
					
						
							|  |  |  |  |     _selectorRegexp = new RegExp("\\" + _selector + "\\b", 'g'); | 
					
						
							|  |  |  |  |     _consecutiveSelfRefRegExp = new RegExp("(\\" + _selector + "\\b){2,}"); | 
					
						
							|  |  |  |  |     return stylis(prefix || !selector ? '' : selector, cssStr); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   stringifyRules.hash = plugins.length ? plugins.reduce(function (acc, plugin) { | 
					
						
							|  |  |  |  |     if (!plugin.name) { | 
					
						
							|  |  |  |  |       throwStyledComponentsError(15); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return phash(acc, plugin.name); | 
					
						
							|  |  |  |  |   }, SEED).toString() : ''; | 
					
						
							|  |  |  |  |   return stringifyRules; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var StyleSheetContext = React__default.createContext(); | 
					
						
							|  |  |  |  | var StyleSheetConsumer = StyleSheetContext.Consumer; | 
					
						
							|  |  |  |  | var StylisContext = React__default.createContext(); | 
					
						
							|  |  |  |  | var StylisConsumer = StylisContext.Consumer; | 
					
						
							|  |  |  |  | var masterSheet = new StyleSheet(); | 
					
						
							|  |  |  |  | var masterStylis = createStylisInstance(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Keyframes = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function Keyframes(name, rules) { | 
					
						
							|  |  |  |  |     var _this = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.inject = function (styleSheet, stylisInstance) { | 
					
						
							|  |  |  |  |       if (stylisInstance === void 0) { | 
					
						
							|  |  |  |  |         stylisInstance = masterStylis; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       var resolvedName = _this.name + stylisInstance.hash; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (!styleSheet.hasNameForId(_this.id, resolvedName)) { | 
					
						
							|  |  |  |  |         styleSheet.insertRules(_this.id, resolvedName, stylisInstance(_this.rules, resolvedName, '@keyframes')); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.toString = function () { | 
					
						
							|  |  |  |  |       return throwStyledComponentsError(12, String(_this.name)); | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.name = name; | 
					
						
							|  |  |  |  |     this.id = "sc-keyframes-" + name; | 
					
						
							|  |  |  |  |     this.rules = rules; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Keyframes.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.getName = function getName(stylisInstance) { | 
					
						
							|  |  |  |  |     if (stylisInstance === void 0) { | 
					
						
							|  |  |  |  |       stylisInstance = masterStylis; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return this.name + stylisInstance.hash; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Keyframes; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * inlined version of | 
					
						
							|  |  |  |  |  * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js
 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | var uppercaseCheck = /([A-Z])/; | 
					
						
							|  |  |  |  | var uppercasePattern = /([A-Z])/g; | 
					
						
							|  |  |  |  | var msPattern = /^ms-/; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var prefixAndLowerCase = function prefixAndLowerCase(_char) { | 
					
						
							|  |  |  |  |   return "-" + _char.toLowerCase(); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Hyphenates a camelcased CSS property name, for example: | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  *   > hyphenateStyleName('backgroundColor') | 
					
						
							|  |  |  |  |  *   < "background-color" | 
					
						
							|  |  |  |  |  *   > hyphenateStyleName('MozTransition') | 
					
						
							|  |  |  |  |  *   < "-moz-transition" | 
					
						
							|  |  |  |  |  *   > hyphenateStyleName('msTransition') | 
					
						
							|  |  |  |  |  *   < "-ms-transition" | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
 | 
					
						
							|  |  |  |  |  * is converted to `-ms-`. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @param {string} string | 
					
						
							|  |  |  |  |  * @return {string} | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function hyphenateStyleName(string) { | 
					
						
							|  |  |  |  |   return uppercaseCheck.test(string) ? string.replace(uppercasePattern, prefixAndLowerCase).replace(msPattern, '-ms-') : string; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function addUnitIfNeeded(name, value) { | 
					
						
							|  |  |  |  |   // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133
 | 
					
						
							|  |  |  |  |   // $FlowFixMe
 | 
					
						
							|  |  |  |  |   if (value == null || typeof value === 'boolean' || value === '') { | 
					
						
							|  |  |  |  |     return ''; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (typeof value === 'number' && value !== 0 && !(name in unitless)) { | 
					
						
							|  |  |  |  |     return value + "px"; // Presumes implicit 'px' suffix for unitless numbers
 | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return String(value).trim(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * It's falsish not falsy because 0 is allowed. | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var isFalsish = function isFalsish(chunk) { | 
					
						
							|  |  |  |  |   return chunk === undefined || chunk === null || chunk === false || chunk === ''; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var objToCssArray = function objToCssArray(obj, prevKey) { | 
					
						
							|  |  |  |  |   var rules = []; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var key in obj) { | 
					
						
							|  |  |  |  |     if (!obj.hasOwnProperty(key) || isFalsish(obj[key])) continue; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (Array.isArray(obj[key]) && obj[key].isCss || isFunction(obj[key])) { | 
					
						
							|  |  |  |  |       rules.push(hyphenateStyleName(key) + ":", obj[key], ';'); | 
					
						
							|  |  |  |  |     } else if (isPlainObject(obj[key])) { | 
					
						
							|  |  |  |  |       rules.push.apply(rules, objToCssArray(obj[key], key)); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       rules.push(hyphenateStyleName(key) + ": " + addUnitIfNeeded(key, obj[key]) + ";"); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return prevKey ? [prevKey + " {"].concat(rules, ['}']) : rules; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | function flatten(chunk, executionContext, styleSheet, stylisInstance) { | 
					
						
							|  |  |  |  |   if (Array.isArray(chunk)) { | 
					
						
							|  |  |  |  |     var ruleSet = []; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = 0, len = chunk.length, result; i < len; i += 1) { | 
					
						
							|  |  |  |  |       result = flatten(chunk[i], executionContext, styleSheet, stylisInstance); | 
					
						
							|  |  |  |  |       if (result === '') continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return ruleSet; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (isFalsish(chunk)) { | 
					
						
							|  |  |  |  |     return ''; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /* Handle other components */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (isStyledComponent(chunk)) { | 
					
						
							|  |  |  |  |     return "." + chunk.styledComponentId; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /* Either execute or defer the function */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (isFunction(chunk)) { | 
					
						
							|  |  |  |  |     if (isStatelessFunction(chunk) && executionContext) { | 
					
						
							|  |  |  |  |       var _result = chunk(executionContext); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (process.env.NODE_ENV !== 'production' && reactIs.isElement(_result)) { | 
					
						
							|  |  |  |  |         // eslint-disable-next-line no-console
 | 
					
						
							|  |  |  |  |         console.warn(getComponentName(chunk) + " is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details."); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       return flatten(_result, executionContext, styleSheet, stylisInstance); | 
					
						
							|  |  |  |  |     } else return chunk; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (chunk instanceof Keyframes) { | 
					
						
							|  |  |  |  |     if (styleSheet) { | 
					
						
							|  |  |  |  |       chunk.inject(styleSheet, stylisInstance); | 
					
						
							|  |  |  |  |       return chunk.getName(stylisInstance); | 
					
						
							|  |  |  |  |     } else return chunk; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /* Handle objects */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var printed = {}; | 
					
						
							|  |  |  |  | function warnOnce(message) { | 
					
						
							|  |  |  |  |   if (printed[message]) return; | 
					
						
							|  |  |  |  |   printed[message] = true; | 
					
						
							|  |  |  |  |   if (typeof console !== 'undefined' && console.warn) console.warn(message); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var SINGLE_QUOTE = "'".charCodeAt(0); | 
					
						
							|  |  |  |  | var DOUBLE_QUOTE = '"'.charCodeAt(0); | 
					
						
							|  |  |  |  | var BACKSLASH = '\\'.charCodeAt(0); | 
					
						
							|  |  |  |  | var SLASH = '/'.charCodeAt(0); | 
					
						
							|  |  |  |  | var NEWLINE = '\n'.charCodeAt(0); | 
					
						
							|  |  |  |  | var SPACE = ' '.charCodeAt(0); | 
					
						
							|  |  |  |  | var FEED = '\f'.charCodeAt(0); | 
					
						
							|  |  |  |  | var TAB = '\t'.charCodeAt(0); | 
					
						
							|  |  |  |  | var CR = '\r'.charCodeAt(0); | 
					
						
							|  |  |  |  | var OPEN_SQUARE = '['.charCodeAt(0); | 
					
						
							|  |  |  |  | var CLOSE_SQUARE = ']'.charCodeAt(0); | 
					
						
							|  |  |  |  | var OPEN_PARENTHESES = '('.charCodeAt(0); | 
					
						
							|  |  |  |  | var CLOSE_PARENTHESES = ')'.charCodeAt(0); | 
					
						
							|  |  |  |  | var OPEN_CURLY = '{'.charCodeAt(0); | 
					
						
							|  |  |  |  | var CLOSE_CURLY = '}'.charCodeAt(0); | 
					
						
							|  |  |  |  | var SEMICOLON = ';'.charCodeAt(0); | 
					
						
							|  |  |  |  | var ASTERISK = '*'.charCodeAt(0); | 
					
						
							|  |  |  |  | var COLON = ':'.charCodeAt(0); | 
					
						
							|  |  |  |  | var AT = '@'.charCodeAt(0); | 
					
						
							|  |  |  |  | var RE_AT_END = /[ \n\t\r\f\{\(\)'"\\;/\[\]#]/g; | 
					
						
							|  |  |  |  | var RE_WORD_END = /[ \n\t\r\f\(\)\{\}:;@!'"\\\]\[#]|\/(?=\*)/g; | 
					
						
							|  |  |  |  | var RE_BAD_BRACKET = /.[\\\/\("'\n]/; | 
					
						
							|  |  |  |  | function tokenize(input, options) { | 
					
						
							|  |  |  |  |   if (options === void 0) { | 
					
						
							|  |  |  |  |     options = {}; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var tokens = []; | 
					
						
							|  |  |  |  |   var css = input.css.valueOf(); | 
					
						
							|  |  |  |  |   var ignore = options.ignoreErrors; | 
					
						
							|  |  |  |  |   var code, next, quote, lines, last, content, escape, nextLine, nextOffset, escaped, escapePos, prev, n; | 
					
						
							|  |  |  |  |   var length = css.length; | 
					
						
							|  |  |  |  |   var offset = -1; | 
					
						
							|  |  |  |  |   var line = 1; | 
					
						
							|  |  |  |  |   var pos = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function unclosed(what) { | 
					
						
							|  |  |  |  |     throw input.error("Unclosed " + what, line, pos - offset); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   while (pos < length) { | 
					
						
							|  |  |  |  |     code = css.charCodeAt(pos); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) { | 
					
						
							|  |  |  |  |       offset = pos; | 
					
						
							|  |  |  |  |       line += 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     switch (code) { | 
					
						
							|  |  |  |  |       case NEWLINE: | 
					
						
							|  |  |  |  |       case SPACE: | 
					
						
							|  |  |  |  |       case TAB: | 
					
						
							|  |  |  |  |       case CR: | 
					
						
							|  |  |  |  |       case FEED: | 
					
						
							|  |  |  |  |         next = pos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         do { | 
					
						
							|  |  |  |  |           next += 1; | 
					
						
							|  |  |  |  |           code = css.charCodeAt(next); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (code === NEWLINE) { | 
					
						
							|  |  |  |  |             offset = next; | 
					
						
							|  |  |  |  |             line += 1; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         tokens.push(['space', css.slice(pos, next)]); | 
					
						
							|  |  |  |  |         pos = next - 1; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case OPEN_SQUARE: | 
					
						
							|  |  |  |  |         tokens.push(['[', '[', line, pos - offset]); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case CLOSE_SQUARE: | 
					
						
							|  |  |  |  |         tokens.push([']', ']', line, pos - offset]); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case OPEN_CURLY: | 
					
						
							|  |  |  |  |         tokens.push(['{', '{', line, pos - offset]); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case CLOSE_CURLY: | 
					
						
							|  |  |  |  |         tokens.push(['}', '}', line, pos - offset]); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case COLON: | 
					
						
							|  |  |  |  |         tokens.push([':', ':', line, pos - offset]); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case SEMICOLON: | 
					
						
							|  |  |  |  |         tokens.push([';', ';', line, pos - offset]); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case OPEN_PARENTHESES: | 
					
						
							|  |  |  |  |         prev = tokens.length ? tokens[tokens.length - 1][1] : ''; | 
					
						
							|  |  |  |  |         n = css.charCodeAt(pos + 1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) { | 
					
						
							|  |  |  |  |           next = pos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           do { | 
					
						
							|  |  |  |  |             escaped = false; | 
					
						
							|  |  |  |  |             next = css.indexOf(')', next + 1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (next === -1) { | 
					
						
							|  |  |  |  |               if (ignore) { | 
					
						
							|  |  |  |  |                 next = pos; | 
					
						
							|  |  |  |  |                 break; | 
					
						
							|  |  |  |  |               } else { | 
					
						
							|  |  |  |  |                 unclosed('bracket'); | 
					
						
							|  |  |  |  |               } | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             escapePos = next; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             while (css.charCodeAt(escapePos - 1) === BACKSLASH) { | 
					
						
							|  |  |  |  |               escapePos -= 1; | 
					
						
							|  |  |  |  |               escaped = !escaped; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           } while (escaped); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           tokens.push(['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); | 
					
						
							|  |  |  |  |           pos = next; | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           next = css.indexOf(')', pos + 1); | 
					
						
							|  |  |  |  |           content = css.slice(pos, next + 1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (next === -1 || RE_BAD_BRACKET.test(content)) { | 
					
						
							|  |  |  |  |             tokens.push(['(', '(', line, pos - offset]); | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             tokens.push(['brackets', content, line, pos - offset, line, next - offset]); | 
					
						
							|  |  |  |  |             pos = next; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case CLOSE_PARENTHESES: | 
					
						
							|  |  |  |  |         tokens.push([')', ')', line, pos - offset]); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case SINGLE_QUOTE: | 
					
						
							|  |  |  |  |       case DOUBLE_QUOTE: | 
					
						
							|  |  |  |  |         quote = code === SINGLE_QUOTE ? "'" : '"'; | 
					
						
							|  |  |  |  |         next = pos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         do { | 
					
						
							|  |  |  |  |           escaped = false; | 
					
						
							|  |  |  |  |           next = css.indexOf(quote, next + 1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (next === -1) { | 
					
						
							|  |  |  |  |             if (ignore) { | 
					
						
							|  |  |  |  |               next = pos + 1; | 
					
						
							|  |  |  |  |               break; | 
					
						
							|  |  |  |  |             } else { | 
					
						
							|  |  |  |  |               unclosed('quote'); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           escapePos = next; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           while (css.charCodeAt(escapePos - 1) === BACKSLASH) { | 
					
						
							|  |  |  |  |             escapePos -= 1; | 
					
						
							|  |  |  |  |             escaped = !escaped; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } while (escaped); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         content = css.slice(pos, next + 1); | 
					
						
							|  |  |  |  |         lines = content.split('\n'); | 
					
						
							|  |  |  |  |         last = lines.length - 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (last > 0) { | 
					
						
							|  |  |  |  |           nextLine = line + last; | 
					
						
							|  |  |  |  |           nextOffset = next - lines[last].length; | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           nextLine = line; | 
					
						
							|  |  |  |  |           nextOffset = offset; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset]); | 
					
						
							|  |  |  |  |         offset = nextOffset; | 
					
						
							|  |  |  |  |         line = nextLine; | 
					
						
							|  |  |  |  |         pos = next; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case AT: | 
					
						
							|  |  |  |  |         RE_AT_END.lastIndex = pos + 1; | 
					
						
							|  |  |  |  |         RE_AT_END.test(css); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (RE_AT_END.lastIndex === 0) { | 
					
						
							|  |  |  |  |           next = css.length - 1; | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           next = RE_AT_END.lastIndex - 2; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         tokens.push(['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); | 
					
						
							|  |  |  |  |         pos = next; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       case BACKSLASH: | 
					
						
							|  |  |  |  |         next = pos; | 
					
						
							|  |  |  |  |         escape = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         while (css.charCodeAt(next + 1) === BACKSLASH) { | 
					
						
							|  |  |  |  |           next += 1; | 
					
						
							|  |  |  |  |           escape = !escape; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         code = css.charCodeAt(next + 1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) { | 
					
						
							|  |  |  |  |           next += 1; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); | 
					
						
							|  |  |  |  |         pos = next; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       default: | 
					
						
							|  |  |  |  |         if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { | 
					
						
							|  |  |  |  |           next = css.indexOf('*/', pos + 2) + 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (next === 0) { | 
					
						
							|  |  |  |  |             if (ignore) { | 
					
						
							|  |  |  |  |               next = css.length; | 
					
						
							|  |  |  |  |             } else { | 
					
						
							|  |  |  |  |               unclosed('comment'); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           content = css.slice(pos, next + 1); | 
					
						
							|  |  |  |  |           lines = content.split('\n'); | 
					
						
							|  |  |  |  |           last = lines.length - 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (last > 0) { | 
					
						
							|  |  |  |  |             nextLine = line + last; | 
					
						
							|  |  |  |  |             nextOffset = next - lines[last].length; | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             nextLine = line; | 
					
						
							|  |  |  |  |             nextOffset = offset; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           tokens.push(['comment', content, line, pos - offset, nextLine, next - nextOffset]); | 
					
						
							|  |  |  |  |           offset = nextOffset; | 
					
						
							|  |  |  |  |           line = nextLine; | 
					
						
							|  |  |  |  |           pos = next; | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           RE_WORD_END.lastIndex = pos + 1; | 
					
						
							|  |  |  |  |           RE_WORD_END.test(css); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (RE_WORD_END.lastIndex === 0) { | 
					
						
							|  |  |  |  |             next = css.length - 1; | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             next = RE_WORD_END.lastIndex - 2; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); | 
					
						
							|  |  |  |  |           pos = next; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     pos++; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return tokens; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var HIGHLIGHT_THEME = { | 
					
						
							|  |  |  |  |   brackets: [36, 39], | 
					
						
							|  |  |  |  |   // cyan
 | 
					
						
							|  |  |  |  |   string: [31, 39], | 
					
						
							|  |  |  |  |   // red
 | 
					
						
							|  |  |  |  |   'at-word': [31, 39], | 
					
						
							|  |  |  |  |   // red
 | 
					
						
							|  |  |  |  |   comment: [90, 39], | 
					
						
							|  |  |  |  |   // gray
 | 
					
						
							|  |  |  |  |   '{': [32, 39], | 
					
						
							|  |  |  |  |   // green
 | 
					
						
							|  |  |  |  |   '}': [32, 39], | 
					
						
							|  |  |  |  |   // green
 | 
					
						
							|  |  |  |  |   ':': [1, 22], | 
					
						
							|  |  |  |  |   // bold
 | 
					
						
							|  |  |  |  |   ';': [1, 22], | 
					
						
							|  |  |  |  |   // bold
 | 
					
						
							|  |  |  |  |   '(': [1, 22], | 
					
						
							|  |  |  |  |   // bold
 | 
					
						
							|  |  |  |  |   ')': [1, 22] // bold
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function code(color) { | 
					
						
							|  |  |  |  |   return "\x1B[" + color + "m"; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function terminalHighlight(css) { | 
					
						
							|  |  |  |  |   var tokens = tokenize(new Input(css), { | 
					
						
							|  |  |  |  |     ignoreErrors: true | 
					
						
							|  |  |  |  |   }); | 
					
						
							|  |  |  |  |   var result = []; | 
					
						
							|  |  |  |  |   tokens.forEach(function (token) { | 
					
						
							|  |  |  |  |     var color = HIGHLIGHT_THEME[token[0]]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (color) { | 
					
						
							|  |  |  |  |       result.push(token[1].split(/\r?\n/).map(function (i) { | 
					
						
							|  |  |  |  |         return code(color[0]) + i + code(color[1]); | 
					
						
							|  |  |  |  |       }).join('\n')); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       result.push(token[1]); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }); | 
					
						
							|  |  |  |  |   return result.join(''); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * The CSS parser throws this error for broken CSS. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Custom parsers can throw this error for broken custom syntax using | 
					
						
							|  |  |  |  |  * the {@link Node#error} method. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * PostCSS will use the input source map to detect the original error location. | 
					
						
							|  |  |  |  |  * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS, | 
					
						
							|  |  |  |  |  * PostCSS will show the original position in the Sass file. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * If you need the position in the PostCSS input | 
					
						
							|  |  |  |  |  * (e.g., to debug the previous compiler), use `error.input.file`. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * // Catching and checking syntax error
 | 
					
						
							|  |  |  |  |  * try { | 
					
						
							|  |  |  |  |  *   postcss.parse('a{') | 
					
						
							|  |  |  |  |  * } catch (error) { | 
					
						
							|  |  |  |  |  *   if ( error.name === 'CssSyntaxError' ) { | 
					
						
							|  |  |  |  |  *     error //=> CssSyntaxError
 | 
					
						
							|  |  |  |  |  *   } | 
					
						
							|  |  |  |  |  * } | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * // Raising error from plugin
 | 
					
						
							|  |  |  |  |  * throw node.error('Unknown variable', { plugin: 'postcss-vars' }); | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var CssSyntaxError = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @param {string} message  - error message | 
					
						
							|  |  |  |  |    * @param {number} [line]   - source line of the error | 
					
						
							|  |  |  |  |    * @param {number} [column] - source column of the error | 
					
						
							|  |  |  |  |    * @param {string} [source] - source code of the broken file | 
					
						
							|  |  |  |  |    * @param {string} [file]   - absolute path to the broken file | 
					
						
							|  |  |  |  |    * @param {string} [plugin] - PostCSS plugin name, if error came from plugin | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   function CssSyntaxError(message, line, column, source, file, plugin) { | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - Always equal to `'CssSyntaxError'`. You should | 
					
						
							|  |  |  |  |      *                    always check error type | 
					
						
							|  |  |  |  |      *                    by `error.name === 'CssSyntaxError'` instead of | 
					
						
							|  |  |  |  |      *                    `error instanceof CssSyntaxError`, because | 
					
						
							|  |  |  |  |      *                    npm could have several PostCSS versions. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * if ( error.name === 'CssSyntaxError' ) { | 
					
						
							|  |  |  |  |      *   error //=> CssSyntaxError
 | 
					
						
							|  |  |  |  |      * } | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     this.name = 'CssSyntaxError'; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - Error message. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * error.message //=> 'Unclosed block'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.reason = message; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (file) { | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {string} - Absolute path to the broken file. | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * error.file       //=> 'a.sass'
 | 
					
						
							|  |  |  |  |        * error.input.file //=> 'a.css'
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  |       this.file = file; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (source) { | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {string} - Source code of the broken file. | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * error.source       //=> 'a { b {} }'
 | 
					
						
							|  |  |  |  |        * error.input.column //=> 'a b { }'
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  |       this.source = source; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (plugin) { | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {string} - Plugin name, if error came from plugin. | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * error.plugin //=> 'postcss-vars'
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  |       this.plugin = plugin; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof line !== 'undefined' && typeof column !== 'undefined') { | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {number} - Source line of the error. | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * error.line       //=> 2
 | 
					
						
							|  |  |  |  |        * error.input.line //=> 4
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  |       this.line = line; | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {number} - Source column of the error. | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * error.column       //=> 1
 | 
					
						
							|  |  |  |  |        * error.input.column //=> 4
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.column = column; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.setMessage(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (Error.captureStackTrace) { | 
					
						
							|  |  |  |  |       Error.captureStackTrace(this, CssSyntaxError); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = CssSyntaxError.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.setMessage = function setMessage() { | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - Full error text in the GNU error format | 
					
						
							|  |  |  |  |      *                    with plugin, file, line and column. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * error.message //=> 'a.css:1:1: Unclosed block'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     this.message = this.plugin ? this.plugin + ": " : ''; | 
					
						
							|  |  |  |  |     this.message += this.file ? this.file : '<css input>'; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof this.line !== 'undefined') { | 
					
						
							|  |  |  |  |       this.message += ":" + this.line + ":" + this.column; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.message += ": " + this.reason; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a few lines of CSS source that caused the error. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * If the CSS has an input source map without `sourceContent`, | 
					
						
							|  |  |  |  |    * this method will return an empty string. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {boolean} [color] whether arrow will be colored red by terminal | 
					
						
							|  |  |  |  |    *                          color codes. By default, PostCSS will detect | 
					
						
							|  |  |  |  |    *                          color support by `process.stdout.isTTY` | 
					
						
							|  |  |  |  |    *                          and `process.env.NODE_DISABLE_COLORS`. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * error.showSourceCode() //=> "  4 | }
 | 
					
						
							|  |  |  |  |    *                        //      5 | a {
 | 
					
						
							|  |  |  |  |    *                        //    > 6 |   bad
 | 
					
						
							|  |  |  |  |    *                        //        |   ^
 | 
					
						
							|  |  |  |  |    *                        //      7 | }
 | 
					
						
							|  |  |  |  |    *                        //      8 | b {"
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string} few lines of CSS source that caused the error | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.showSourceCode = function showSourceCode(color) { | 
					
						
							|  |  |  |  |     var _this = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!this.source) return ''; | 
					
						
							|  |  |  |  |     var css = this.source; | 
					
						
							|  |  |  |  |     if (typeof color === 'undefined') color = supportsColor; | 
					
						
							|  |  |  |  |     if (color) css = terminalHighlight(css); | 
					
						
							|  |  |  |  |     var lines = css.split(/\r?\n/); | 
					
						
							|  |  |  |  |     var start = Math.max(this.line - 3, 0); | 
					
						
							|  |  |  |  |     var end = Math.min(this.line + 2, lines.length); | 
					
						
							|  |  |  |  |     var maxWidth = String(end).length; | 
					
						
							|  |  |  |  |     return lines.slice(start, end).map(function (line, index) { | 
					
						
							|  |  |  |  |       var number = start + 1 + index; | 
					
						
							|  |  |  |  |       var padded = (" " + number).slice(-maxWidth); | 
					
						
							|  |  |  |  |       var gutter = " " + padded + " | "; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (number === _this.line) { | 
					
						
							|  |  |  |  |         var spacing = gutter.replace(/\d/g, ' ') + line.slice(0, _this.column - 1).replace(/[^\t]/g, ' '); | 
					
						
							|  |  |  |  |         return ">" + gutter + line + "\n " + spacing + "^"; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         return " " + gutter + line; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }).join('\n'); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns error position, message and source code of the broken part. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block
 | 
					
						
							|  |  |  |  |    *                  //    > 1 | a {
 | 
					
						
							|  |  |  |  |    *                  //        | ^"
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string} error position, message and source code | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toString = function toString() { | 
					
						
							|  |  |  |  |     var code = this.showSourceCode(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (code) { | 
					
						
							|  |  |  |  |       code = "\n\n" + code + "\n"; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return this.name + ": " + this.message + code; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(CssSyntaxError, [{ | 
					
						
							|  |  |  |  |     key: "generated", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('CssSyntaxError#generated is deprecated. Use input instead.'); | 
					
						
							|  |  |  |  |       return this.input; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof CssSyntaxError# | 
					
						
							|  |  |  |  |      * @member {Input} input - Input object with PostCSS internal information | 
					
						
							|  |  |  |  |      *                         about input file. If input has source map | 
					
						
							|  |  |  |  |      *                         from previous tool, PostCSS will use origin | 
					
						
							|  |  |  |  |      *                         (for example, Sass) source. You can use this | 
					
						
							|  |  |  |  |      *                         object to get PostCSS input source. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * error.input.file //=> 'a.css'
 | 
					
						
							|  |  |  |  |      * error.file       //=> 'a.sass'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return CssSyntaxError; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* eslint-disable valid-jsdoc */ | 
					
						
							|  |  |  |  | var defaultRaw = { | 
					
						
							|  |  |  |  |   colon: ': ', | 
					
						
							|  |  |  |  |   indent: '    ', | 
					
						
							|  |  |  |  |   beforeDecl: '\n', | 
					
						
							|  |  |  |  |   beforeRule: '\n', | 
					
						
							|  |  |  |  |   beforeOpen: ' ', | 
					
						
							|  |  |  |  |   beforeClose: '\n', | 
					
						
							|  |  |  |  |   beforeComment: '\n', | 
					
						
							|  |  |  |  |   after: '\n', | 
					
						
							|  |  |  |  |   emptyBody: '', | 
					
						
							|  |  |  |  |   commentLeft: ' ', | 
					
						
							|  |  |  |  |   commentRight: ' ' | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function capitalize(str) { | 
					
						
							|  |  |  |  |   return str[0].toUpperCase() + str.slice(1); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Stringifier = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function Stringifier(builder) { | 
					
						
							|  |  |  |  |     this.builder = builder; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Stringifier.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.stringify = function stringify(node, semicolon) { | 
					
						
							|  |  |  |  |     this[node.type](node, semicolon); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.root = function root(node) { | 
					
						
							|  |  |  |  |     this.body(node); | 
					
						
							|  |  |  |  |     if (node.raws.after) this.builder(node.raws.after); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.comment = function comment(node) { | 
					
						
							|  |  |  |  |     var left = this.raw(node, 'left', 'commentLeft'); | 
					
						
							|  |  |  |  |     var right = this.raw(node, 'right', 'commentRight'); | 
					
						
							|  |  |  |  |     this.builder("/*" + left + node.text + right + "*/", node); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.decl = function decl(node, semicolon) { | 
					
						
							|  |  |  |  |     var between = this.raw(node, 'between', 'colon'); | 
					
						
							|  |  |  |  |     var string = node.prop + between + this.rawValue(node, 'value'); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node.important) { | 
					
						
							|  |  |  |  |       string += node.raws.important || ' !important'; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (semicolon) string += ';'; | 
					
						
							|  |  |  |  |     this.builder(string, node); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rule = function rule(node) { | 
					
						
							|  |  |  |  |     this.block(node, this.rawValue(node, 'selector')); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.atrule = function atrule(node, semicolon) { | 
					
						
							|  |  |  |  |     var name = "@" + node.name; | 
					
						
							|  |  |  |  |     var params = node.params ? this.rawValue(node, 'params') : ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof node.raws.afterName !== 'undefined') { | 
					
						
							|  |  |  |  |       name += node.raws.afterName; | 
					
						
							|  |  |  |  |     } else if (params) { | 
					
						
							|  |  |  |  |       name += ' '; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node.nodes) { | 
					
						
							|  |  |  |  |       this.block(node, name + params); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       var end = (node.raws.between || '') + (semicolon ? ';' : ''); | 
					
						
							|  |  |  |  |       this.builder(name + params + end, node); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.body = function body(node) { | 
					
						
							|  |  |  |  |     var last = node.nodes.length - 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (last > 0) { | 
					
						
							|  |  |  |  |       if (node.nodes[last].type !== 'comment') break; | 
					
						
							|  |  |  |  |       last -= 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var semicolon = this.raw(node, 'semicolon'); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = 0; i < node.nodes.length; i++) { | 
					
						
							|  |  |  |  |       var child = node.nodes[i]; | 
					
						
							|  |  |  |  |       var before = this.raw(child, 'before'); | 
					
						
							|  |  |  |  |       if (before) this.builder(before); | 
					
						
							|  |  |  |  |       this.stringify(child, last !== i || semicolon); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.block = function block(node, start) { | 
					
						
							|  |  |  |  |     var between = this.raw(node, 'between', 'beforeOpen'); | 
					
						
							|  |  |  |  |     this.builder(start + between + "{", node, 'start'); | 
					
						
							|  |  |  |  |     var after; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node.nodes && node.nodes.length) { | 
					
						
							|  |  |  |  |       this.body(node); | 
					
						
							|  |  |  |  |       after = this.raw(node, 'after'); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       after = this.raw(node, 'after', 'emptyBody'); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (after) this.builder(after); | 
					
						
							|  |  |  |  |     this.builder('}', node, 'end'); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.raw = function raw(node, own, detect) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     if (!detect) detect = own; // Already had
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (own) { | 
					
						
							|  |  |  |  |       value = node.raws[own]; | 
					
						
							|  |  |  |  |       if (typeof value !== 'undefined') return value; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var parent = node.parent; // Hack for first rule in CSS
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (detect === 'before') { | 
					
						
							|  |  |  |  |       if (!parent || parent.type === 'root' && parent.first === node) { | 
					
						
							|  |  |  |  |         return ''; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } // Floating child without parent
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!parent) return defaultRaw[detect]; // Detect style by other nodes
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var root = node.root(); | 
					
						
							|  |  |  |  |     if (!root.rawCache) root.rawCache = {}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof root.rawCache[detect] !== 'undefined') { | 
					
						
							|  |  |  |  |       return root.rawCache[detect]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (detect === 'before' || detect === 'after') { | 
					
						
							|  |  |  |  |       return this.beforeAfter(node, detect); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       var method = "raw" + capitalize(detect); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (this[method]) { | 
					
						
							|  |  |  |  |         value = this[method](root, node); | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         root.walk(function (i) { | 
					
						
							|  |  |  |  |           value = i.raws[own]; | 
					
						
							|  |  |  |  |           if (typeof value !== 'undefined') return false; | 
					
						
							|  |  |  |  |         }); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof value === 'undefined') value = defaultRaw[detect]; | 
					
						
							|  |  |  |  |     root.rawCache[detect] = value; | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawSemicolon = function rawSemicolon(root) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walk(function (i) { | 
					
						
							|  |  |  |  |       if (i.nodes && i.nodes.length && i.last.type === 'decl') { | 
					
						
							|  |  |  |  |         value = i.raws.semicolon; | 
					
						
							|  |  |  |  |         if (typeof value !== 'undefined') return false; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawEmptyBody = function rawEmptyBody(root) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walk(function (i) { | 
					
						
							|  |  |  |  |       if (i.nodes && i.nodes.length === 0) { | 
					
						
							|  |  |  |  |         value = i.raws.after; | 
					
						
							|  |  |  |  |         if (typeof value !== 'undefined') return false; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawIndent = function rawIndent(root) { | 
					
						
							|  |  |  |  |     if (root.raws.indent) return root.raws.indent; | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walk(function (i) { | 
					
						
							|  |  |  |  |       var p = i.parent; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (p && p !== root && p.parent && p.parent === root) { | 
					
						
							|  |  |  |  |         if (typeof i.raws.before !== 'undefined') { | 
					
						
							|  |  |  |  |           var parts = i.raws.before.split('\n'); | 
					
						
							|  |  |  |  |           value = parts[parts.length - 1]; | 
					
						
							|  |  |  |  |           value = value.replace(/[^\s]/g, ''); | 
					
						
							|  |  |  |  |           return false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawBeforeComment = function rawBeforeComment(root, node) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walkComments(function (i) { | 
					
						
							|  |  |  |  |       if (typeof i.raws.before !== 'undefined') { | 
					
						
							|  |  |  |  |         value = i.raws.before; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (value.indexOf('\n') !== -1) { | 
					
						
							|  |  |  |  |           value = value.replace(/[^\n]+$/, ''); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return false; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof value === 'undefined') { | 
					
						
							|  |  |  |  |       value = this.raw(node, null, 'beforeDecl'); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawBeforeDecl = function rawBeforeDecl(root, node) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walkDecls(function (i) { | 
					
						
							|  |  |  |  |       if (typeof i.raws.before !== 'undefined') { | 
					
						
							|  |  |  |  |         value = i.raws.before; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (value.indexOf('\n') !== -1) { | 
					
						
							|  |  |  |  |           value = value.replace(/[^\n]+$/, ''); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return false; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof value === 'undefined') { | 
					
						
							|  |  |  |  |       value = this.raw(node, null, 'beforeRule'); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawBeforeRule = function rawBeforeRule(root) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walk(function (i) { | 
					
						
							|  |  |  |  |       if (i.nodes && (i.parent !== root || root.first !== i)) { | 
					
						
							|  |  |  |  |         if (typeof i.raws.before !== 'undefined') { | 
					
						
							|  |  |  |  |           value = i.raws.before; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (value.indexOf('\n') !== -1) { | 
					
						
							|  |  |  |  |             value = value.replace(/[^\n]+$/, ''); | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           return false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawBeforeClose = function rawBeforeClose(root) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walk(function (i) { | 
					
						
							|  |  |  |  |       if (i.nodes && i.nodes.length > 0) { | 
					
						
							|  |  |  |  |         if (typeof i.raws.after !== 'undefined') { | 
					
						
							|  |  |  |  |           value = i.raws.after; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (value.indexOf('\n') !== -1) { | 
					
						
							|  |  |  |  |             value = value.replace(/[^\n]+$/, ''); | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           return false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawBeforeOpen = function rawBeforeOpen(root) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walk(function (i) { | 
					
						
							|  |  |  |  |       if (i.type !== 'decl') { | 
					
						
							|  |  |  |  |         value = i.raws.between; | 
					
						
							|  |  |  |  |         if (typeof value !== 'undefined') return false; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawColon = function rawColon(root) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  |     root.walkDecls(function (i) { | 
					
						
							|  |  |  |  |       if (typeof i.raws.between !== 'undefined') { | 
					
						
							|  |  |  |  |         value = i.raws.between.replace(/[^\s:]/g, ''); | 
					
						
							|  |  |  |  |         return false; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.beforeAfter = function beforeAfter(node, detect) { | 
					
						
							|  |  |  |  |     var value; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node.type === 'decl') { | 
					
						
							|  |  |  |  |       value = this.raw(node, null, 'beforeDecl'); | 
					
						
							|  |  |  |  |     } else if (node.type === 'comment') { | 
					
						
							|  |  |  |  |       value = this.raw(node, null, 'beforeComment'); | 
					
						
							|  |  |  |  |     } else if (detect === 'before') { | 
					
						
							|  |  |  |  |       value = this.raw(node, null, 'beforeRule'); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       value = this.raw(node, null, 'beforeClose'); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var buf = node.parent; | 
					
						
							|  |  |  |  |     var depth = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (buf && buf.type !== 'root') { | 
					
						
							|  |  |  |  |       depth += 1; | 
					
						
							|  |  |  |  |       buf = buf.parent; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (value.indexOf('\n') !== -1) { | 
					
						
							|  |  |  |  |       var indent = this.raw(node, null, 'indent'); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (indent.length) { | 
					
						
							|  |  |  |  |         for (var step = 0; step < depth; step++) { | 
					
						
							|  |  |  |  |           value += indent; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rawValue = function rawValue(node, prop) { | 
					
						
							|  |  |  |  |     var value = node[prop]; | 
					
						
							|  |  |  |  |     var raw = node.raws[prop]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (raw && raw.value === value) { | 
					
						
							|  |  |  |  |       return raw.raw; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return value; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Stringifier; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function stringify(node, builder) { | 
					
						
							|  |  |  |  |   var str = new Stringifier(builder); | 
					
						
							|  |  |  |  |   str.stringify(node); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef {object} position | 
					
						
							|  |  |  |  |  * @property {number} line   - source line in file | 
					
						
							|  |  |  |  |  * @property {number} column - source column in file | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef {object} source | 
					
						
							|  |  |  |  |  * @property {Input} input    - {@link Input} with input file | 
					
						
							|  |  |  |  |  * @property {position} start - The starting position of the node’s source | 
					
						
							|  |  |  |  |  * @property {position} end   - The ending position of the node’s source | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var cloneNode = function cloneNode(obj, parent) { | 
					
						
							|  |  |  |  |   var cloned = new obj.constructor(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var i in obj) { | 
					
						
							|  |  |  |  |     if (!obj.hasOwnProperty(i)) continue; | 
					
						
							|  |  |  |  |     var value = obj[i]; | 
					
						
							|  |  |  |  |     var type = typeof value; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (i === 'parent' && type === 'object') { | 
					
						
							|  |  |  |  |       if (parent) cloned[i] = parent; | 
					
						
							|  |  |  |  |     } else if (i === 'source') { | 
					
						
							|  |  |  |  |       cloned[i] = value; | 
					
						
							|  |  |  |  |     } else if (value instanceof Array) { | 
					
						
							|  |  |  |  |       cloned[i] = value.map(function (j) { | 
					
						
							|  |  |  |  |         return cloneNode(j, cloned); | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } else if (i !== 'before' && i !== 'after' && i !== 'between' && i !== 'semicolon') { | 
					
						
							|  |  |  |  |       if (type === 'object' && value !== null) value = cloneNode(value); | 
					
						
							|  |  |  |  |       cloned[i] = value; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return cloned; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * All node classes inherit the following common methods. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @abstract | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Node = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @param {object} [defaults] - value for node properties | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   function Node(defaults) { | 
					
						
							|  |  |  |  |     if (defaults === void 0) { | 
					
						
							|  |  |  |  |       defaults = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.raws = {}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var name in defaults) { | 
					
						
							|  |  |  |  |       this[name] = defaults[name]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a CssSyntaxError instance containing the original position | 
					
						
							|  |  |  |  |    * of the node in the source, showing line and column numbers and also | 
					
						
							|  |  |  |  |    * a small excerpt to facilitate debugging. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * If present, an input source map will be used to get the original position | 
					
						
							|  |  |  |  |    * of the source, even from a previous compilation step | 
					
						
							|  |  |  |  |    * (e.g., from Sass compilation). | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * This method produces very useful error messages. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string} message     - error description | 
					
						
							|  |  |  |  |    * @param {object} [opts]      - options | 
					
						
							|  |  |  |  |    * @param {string} opts.plugin - plugin name that created this error. | 
					
						
							|  |  |  |  |    *                               PostCSS will set it automatically. | 
					
						
							|  |  |  |  |    * @param {string} opts.word   - a word inside a node’s string that should | 
					
						
							|  |  |  |  |    *                               be highlighted as the source of the error | 
					
						
							|  |  |  |  |    * @param {number} opts.index  - an index inside a node’s string that should | 
					
						
							|  |  |  |  |    *                               be highlighted as the source of the error | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {CssSyntaxError} error object to throw it | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * if ( !variables[name] ) { | 
					
						
							|  |  |  |  |    *   throw decl.error('Unknown variable ' + name, { word: name }); | 
					
						
							|  |  |  |  |    *   // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
 | 
					
						
							|  |  |  |  |    *   //   color: $black
 | 
					
						
							|  |  |  |  |    *   // a
 | 
					
						
							|  |  |  |  |    *   //          ^
 | 
					
						
							|  |  |  |  |    *   //   background: white
 | 
					
						
							|  |  |  |  |    * } | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Node.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.error = function error(message, opts) { | 
					
						
							|  |  |  |  |     if (opts === void 0) { | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.source) { | 
					
						
							|  |  |  |  |       var pos = this.positionBy(opts); | 
					
						
							|  |  |  |  |       return this.source.input.error(message, pos.line, pos.column, opts); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return new CssSyntaxError(message); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * This method is provided as a convenience wrapper for {@link Result#warn}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Result} result      - the {@link Result} instance | 
					
						
							|  |  |  |  |    *                               that will receive the warning | 
					
						
							|  |  |  |  |    * @param {string} text        - warning message | 
					
						
							|  |  |  |  |    * @param {object} [opts]      - options | 
					
						
							|  |  |  |  |    * @param {string} opts.plugin - plugin name that created this warning. | 
					
						
							|  |  |  |  |    *                               PostCSS will set it automatically. | 
					
						
							|  |  |  |  |    * @param {string} opts.word   - a word inside a node’s string that should | 
					
						
							|  |  |  |  |    *                               be highlighted as the source of the warning | 
					
						
							|  |  |  |  |    * @param {number} opts.index  - an index inside a node’s string that should | 
					
						
							|  |  |  |  |    *                               be highlighted as the source of the warning | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Warning} created warning object | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const plugin = postcss.plugin('postcss-deprecated', () => { | 
					
						
							|  |  |  |  |    *   return (root, result) => { | 
					
						
							|  |  |  |  |    *     root.walkDecls('bad', decl => { | 
					
						
							|  |  |  |  |    *       decl.warn(result, 'Deprecated property bad'); | 
					
						
							|  |  |  |  |    *     }); | 
					
						
							|  |  |  |  |    *   }; | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.warn = function warn(result, text, opts) { | 
					
						
							|  |  |  |  |     var data = { | 
					
						
							|  |  |  |  |       node: this | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i in opts) { | 
					
						
							|  |  |  |  |       data[i] = opts[i]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return result.warn(text, data); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Removes the node from its parent and cleans the parent properties | 
					
						
							|  |  |  |  |    * from the node and its children. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * if ( decl.prop.match(/^-webkit-/) ) { | 
					
						
							|  |  |  |  |    *   decl.remove(); | 
					
						
							|  |  |  |  |    * } | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} node to make calls chain | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.remove = function remove() { | 
					
						
							|  |  |  |  |     if (this.parent) { | 
					
						
							|  |  |  |  |       this.parent.removeChild(this); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.parent = undefined; | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a CSS string representing the node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {stringifier|syntax} [stringifier] - a syntax to use | 
					
						
							|  |  |  |  |    *                                             in string generation | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string} CSS string of this node | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * postcss.rule({ selector: 'a' }).toString() //=> "a {}"
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toString = function toString(stringifier) { | 
					
						
							|  |  |  |  |     if (stringifier === void 0) { | 
					
						
							|  |  |  |  |       stringifier = stringify; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (stringifier.stringify) stringifier = stringifier.stringify; | 
					
						
							|  |  |  |  |     var result = ''; | 
					
						
							|  |  |  |  |     stringifier(this, function (i) { | 
					
						
							|  |  |  |  |       result += i; | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return result; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a clone of the node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * The resulting cloned node and its (cloned) children will have | 
					
						
							|  |  |  |  |    * a clean parent and code style properties. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {object} [overrides] - new properties to override in the clone. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const cloned = decl.clone({ prop: '-moz-' + decl.prop }); | 
					
						
							|  |  |  |  |    * cloned.raws.before  //=> undefined
 | 
					
						
							|  |  |  |  |    * cloned.parent       //=> undefined
 | 
					
						
							|  |  |  |  |    * cloned.toString()   //=> -moz-transform: scale(0)
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} clone of the node | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.clone = function clone(overrides) { | 
					
						
							|  |  |  |  |     if (overrides === void 0) { | 
					
						
							|  |  |  |  |       overrides = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var cloned = cloneNode(this); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var name in overrides) { | 
					
						
							|  |  |  |  |       cloned[name] = overrides[name]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return cloned; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Shortcut to clone the node and insert the resulting cloned node | 
					
						
							|  |  |  |  |    * before the current node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {object} [overrides] - new properties to override in the clone. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * decl.cloneBefore({ prop: '-moz-' + decl.prop }); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} - new node | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.cloneBefore = function cloneBefore(overrides) { | 
					
						
							|  |  |  |  |     if (overrides === void 0) { | 
					
						
							|  |  |  |  |       overrides = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var cloned = this.clone(overrides); | 
					
						
							|  |  |  |  |     this.parent.insertBefore(this, cloned); | 
					
						
							|  |  |  |  |     return cloned; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Shortcut to clone the node and insert the resulting cloned node | 
					
						
							|  |  |  |  |    * after the current node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {object} [overrides] - new properties to override in the clone. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} - new node | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.cloneAfter = function cloneAfter(overrides) { | 
					
						
							|  |  |  |  |     if (overrides === void 0) { | 
					
						
							|  |  |  |  |       overrides = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var cloned = this.clone(overrides); | 
					
						
							|  |  |  |  |     this.parent.insertAfter(this, cloned); | 
					
						
							|  |  |  |  |     return cloned; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Inserts node(s) before the current node and removes the current node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {...Node} nodes - node(s) to replace current one | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * if ( atrule.name == 'mixin' ) { | 
					
						
							|  |  |  |  |    *   atrule.replaceWith(mixinRules[atrule.params]); | 
					
						
							|  |  |  |  |    * } | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} current node to methods chain | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.replaceWith = function replaceWith() { | 
					
						
							|  |  |  |  |     var _this = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.parent) { | 
					
						
							|  |  |  |  |       for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) { | 
					
						
							|  |  |  |  |         nodes[_key] = arguments[_key]; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |         _this.parent.insertBefore(_this, node); | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |       this.remove(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Removes the node from its current parent and inserts it | 
					
						
							|  |  |  |  |    * at the end of `newParent`. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * This will clean the `before` and `after` code {@link Node#raws} data | 
					
						
							|  |  |  |  |    * from the node and replace them with the indentation style of `newParent`. | 
					
						
							|  |  |  |  |    * It will also clean the `between` property | 
					
						
							|  |  |  |  |    * if `newParent` is in another {@link Root}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Container} newParent - container node where the current node | 
					
						
							|  |  |  |  |    *                                will be moved | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * atrule.moveTo(atrule.root()); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} current node to methods chain | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.moveTo = function moveTo(newParent) { | 
					
						
							|  |  |  |  |     this.cleanRaws(this.root() === newParent.root()); | 
					
						
							|  |  |  |  |     this.remove(); | 
					
						
							|  |  |  |  |     newParent.append(this); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Removes the node from its current parent and inserts it into | 
					
						
							|  |  |  |  |    * a new parent before `otherNode`. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * This will also clean the node’s code style properties just as it would | 
					
						
							|  |  |  |  |    * in {@link Node#moveTo}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Node} otherNode - node that will be before current node | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} current node to methods chain | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.moveBefore = function moveBefore(otherNode) { | 
					
						
							|  |  |  |  |     this.cleanRaws(this.root() === otherNode.root()); | 
					
						
							|  |  |  |  |     this.remove(); | 
					
						
							|  |  |  |  |     otherNode.parent.insertBefore(otherNode, this); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Removes the node from its current parent and inserts it into | 
					
						
							|  |  |  |  |    * a new parent after `otherNode`. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * This will also clean the node’s code style properties just as it would | 
					
						
							|  |  |  |  |    * in {@link Node#moveTo}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Node} otherNode - node that will be after current node | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} current node to methods chain | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.moveAfter = function moveAfter(otherNode) { | 
					
						
							|  |  |  |  |     this.cleanRaws(this.root() === otherNode.root()); | 
					
						
							|  |  |  |  |     this.remove(); | 
					
						
							|  |  |  |  |     otherNode.parent.insertAfter(otherNode, this); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns the next child of the node’s parent. | 
					
						
							|  |  |  |  |    * Returns `undefined` if the current node is the last child. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node|undefined} next node | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * if ( comment.text === 'delete next' ) { | 
					
						
							|  |  |  |  |    *   const next = comment.next(); | 
					
						
							|  |  |  |  |    *   if ( next ) { | 
					
						
							|  |  |  |  |    *     next.remove(); | 
					
						
							|  |  |  |  |    *   } | 
					
						
							|  |  |  |  |    * } | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.next = function next() { | 
					
						
							|  |  |  |  |     var index = this.parent.index(this); | 
					
						
							|  |  |  |  |     return this.parent.nodes[index + 1]; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns the previous child of the node’s parent. | 
					
						
							|  |  |  |  |    * Returns `undefined` if the current node is the first child. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node|undefined} previous node | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const annotation = decl.prev(); | 
					
						
							|  |  |  |  |    * if ( annotation.type == 'comment' ) { | 
					
						
							|  |  |  |  |    *  readAnnotation(annotation.text); | 
					
						
							|  |  |  |  |    * } | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.prev = function prev() { | 
					
						
							|  |  |  |  |     var index = this.parent.index(this); | 
					
						
							|  |  |  |  |     return this.parent.nodes[index - 1]; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toJSON = function toJSON() { | 
					
						
							|  |  |  |  |     var fixed = {}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var name in this) { | 
					
						
							|  |  |  |  |       if (!this.hasOwnProperty(name)) continue; | 
					
						
							|  |  |  |  |       if (name === 'parent') continue; | 
					
						
							|  |  |  |  |       var value = this[name]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (value instanceof Array) { | 
					
						
							|  |  |  |  |         fixed[name] = value.map(function (i) { | 
					
						
							|  |  |  |  |           if (typeof i === 'object' && i.toJSON) { | 
					
						
							|  |  |  |  |             return i.toJSON(); | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             return i; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         }); | 
					
						
							|  |  |  |  |       } else if (typeof value === 'object' && value.toJSON) { | 
					
						
							|  |  |  |  |         fixed[name] = value.toJSON(); | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         fixed[name] = value; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return fixed; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a {@link Node#raws} value. If the node is missing | 
					
						
							|  |  |  |  |    * the code style property (because the node was manually built or cloned), | 
					
						
							|  |  |  |  |    * PostCSS will try to autodetect the code style property by looking | 
					
						
							|  |  |  |  |    * at other nodes in the tree. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string} prop          - name of code style property | 
					
						
							|  |  |  |  |    * @param {string} [defaultType] - name of default value, it can be missed | 
					
						
							|  |  |  |  |    *                                 if the value is the same as prop | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const root = postcss.parse('a { background: white }'); | 
					
						
							|  |  |  |  |    * root.nodes[0].append({ prop: 'color', value: 'black' }); | 
					
						
							|  |  |  |  |    * root.nodes[0].nodes[1].raws.before   //=> undefined
 | 
					
						
							|  |  |  |  |    * root.nodes[0].nodes[1].raw('before') //=> ' '
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string} code style value | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.raw = function raw(prop, defaultType) { | 
					
						
							|  |  |  |  |     var str = new Stringifier(); | 
					
						
							|  |  |  |  |     return str.raw(this, prop, defaultType); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Finds the Root instance of the node’s tree. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * root.nodes[0].nodes[0].root() === root | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Root} root parent | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.root = function root() { | 
					
						
							|  |  |  |  |     var result = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (result.parent) { | 
					
						
							|  |  |  |  |       result = result.parent; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return result; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.cleanRaws = function cleanRaws(keepBetween) { | 
					
						
							|  |  |  |  |     delete this.raws.before; | 
					
						
							|  |  |  |  |     delete this.raws.after; | 
					
						
							|  |  |  |  |     if (!keepBetween) delete this.raws.between; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.positionInside = function positionInside(index) { | 
					
						
							|  |  |  |  |     var string = this.toString(); | 
					
						
							|  |  |  |  |     var column = this.source.start.column; | 
					
						
							|  |  |  |  |     var line = this.source.start.line; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = 0; i < index; i++) { | 
					
						
							|  |  |  |  |       if (string[i] === '\n') { | 
					
						
							|  |  |  |  |         column = 1; | 
					
						
							|  |  |  |  |         line += 1; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         column += 1; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return { | 
					
						
							|  |  |  |  |       line: line, | 
					
						
							|  |  |  |  |       column: column | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.positionBy = function positionBy(opts) { | 
					
						
							|  |  |  |  |     var pos = this.source.start; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (opts.index) { | 
					
						
							|  |  |  |  |       pos = this.positionInside(opts.index); | 
					
						
							|  |  |  |  |     } else if (opts.word) { | 
					
						
							|  |  |  |  |       var index = this.toString().indexOf(opts.word); | 
					
						
							|  |  |  |  |       if (index !== -1) pos = this.positionInside(index); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return pos; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.removeSelf = function removeSelf() { | 
					
						
							|  |  |  |  |     warnOnce('Node#removeSelf is deprecated. Use Node#remove.'); | 
					
						
							|  |  |  |  |     return this.remove(); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.replace = function replace(nodes) { | 
					
						
							|  |  |  |  |     warnOnce('Node#replace is deprecated. Use Node#replaceWith'); | 
					
						
							|  |  |  |  |     return this.replaceWith(nodes); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.style = function style(own, detect) { | 
					
						
							|  |  |  |  |     warnOnce('Node#style() is deprecated. Use Node#raw()'); | 
					
						
							|  |  |  |  |     return this.raw(own, detect); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.cleanStyles = function cleanStyles(keepBetween) { | 
					
						
							|  |  |  |  |     warnOnce('Node#cleanStyles() is deprecated. Use Node#cleanRaws()'); | 
					
						
							|  |  |  |  |     return this.cleanRaws(keepBetween); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(Node, [{ | 
					
						
							|  |  |  |  |     key: "before", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Node#before is deprecated. Use Node#raws.before'); | 
					
						
							|  |  |  |  |       return this.raws.before; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Node#before is deprecated. Use Node#raws.before'); | 
					
						
							|  |  |  |  |       this.raws.before = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "between", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Node#between is deprecated. Use Node#raws.between'); | 
					
						
							|  |  |  |  |       return this.raws.between; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Node#between is deprecated. Use Node#raws.between'); | 
					
						
							|  |  |  |  |       this.raws.between = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Node# | 
					
						
							|  |  |  |  |      * @member {string} type - String representing the node’s type. | 
					
						
							|  |  |  |  |      *                         Possible values are `root`, `atrule`, `rule`, | 
					
						
							|  |  |  |  |      *                         `decl`, or `comment`. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Node# | 
					
						
							|  |  |  |  |      * @member {Container} parent - the node’s parent node. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * root.nodes[0].parent == root; | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Node# | 
					
						
							|  |  |  |  |      * @member {source} source - the input source of the node | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * The property is used in source map generation. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * If you create a node manually (e.g., with `postcss.decl()`), | 
					
						
							|  |  |  |  |      * that node will not have a `source` property and will be absent | 
					
						
							|  |  |  |  |      * from the source map. For this reason, the plugin developer should | 
					
						
							|  |  |  |  |      * consider cloning nodes to create new ones (in which case the new node’s | 
					
						
							|  |  |  |  |      * source will reference the original, cloned node) or setting | 
					
						
							|  |  |  |  |      * the `source` property manually. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * ```js
 | 
					
						
							|  |  |  |  |      * // Bad
 | 
					
						
							|  |  |  |  |      * const prefixed = postcss.decl({ | 
					
						
							|  |  |  |  |      *   prop: '-moz-' + decl.prop, | 
					
						
							|  |  |  |  |      *   value: decl.value | 
					
						
							|  |  |  |  |      * }); | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * // Good
 | 
					
						
							|  |  |  |  |      * const prefixed = decl.clone({ prop: '-moz-' + decl.prop }); | 
					
						
							|  |  |  |  |      * ```
 | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * ```js
 | 
					
						
							|  |  |  |  |      * if ( atrule.name == 'add-link' ) { | 
					
						
							|  |  |  |  |      *   const rule = postcss.rule({ selector: 'a', source: atrule.source }); | 
					
						
							|  |  |  |  |      *   atrule.parent.insertBefore(atrule, rule); | 
					
						
							|  |  |  |  |      * } | 
					
						
							|  |  |  |  |      * ```
 | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * decl.source.input.from //=> '/home/ai/a.sass'
 | 
					
						
							|  |  |  |  |      * decl.source.start      //=> { line: 10, column: 2 }
 | 
					
						
							|  |  |  |  |      * decl.source.end        //=> { line: 10, column: 12 }
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Node# | 
					
						
							|  |  |  |  |      * @member {object} raws - Information to generate byte-to-byte equal | 
					
						
							|  |  |  |  |      *                         node string as it was in the origin input. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * Every parser saves its own properties, | 
					
						
							|  |  |  |  |      * but the default CSS parser uses: | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * * `before`: the space symbols before the node. It also stores `*` | 
					
						
							|  |  |  |  |      *   and `_` symbols before the declaration (IE hack). | 
					
						
							|  |  |  |  |      * * `after`: the space symbols after the last child of the node | 
					
						
							|  |  |  |  |      *   to the end of the node. | 
					
						
							|  |  |  |  |      * * `between`: the symbols between the property and value | 
					
						
							|  |  |  |  |      *   for declarations, selector and `{` for rules, or last parameter | 
					
						
							|  |  |  |  |      *   and `{` for at-rules. | 
					
						
							|  |  |  |  |      * * `semicolon`: contains true if the last child has | 
					
						
							|  |  |  |  |      *   an (optional) semicolon. | 
					
						
							|  |  |  |  |      * * `afterName`: the space between the at-rule name and its parameters. | 
					
						
							|  |  |  |  |      * * `left`: the space symbols between `/*` and the comment’s text. | 
					
						
							|  |  |  |  |      * * `right`: the space symbols between the comment’s text | 
					
						
							|  |  |  |  |      *   and <code>*/</code>. | 
					
						
							|  |  |  |  |      * * `important`: the content of the important statement, | 
					
						
							|  |  |  |  |      *   if it is not just `!important`. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * PostCSS cleans selectors, declaration values and at-rule parameters | 
					
						
							|  |  |  |  |      * from comments and extra spaces, but it stores origin content in raws | 
					
						
							|  |  |  |  |      * properties. As such, if you don’t change a declaration’s value, | 
					
						
							|  |  |  |  |      * PostCSS will use the raw value with comments. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a {\n  color:black\n}') | 
					
						
							|  |  |  |  |      * root.first.first.raws //=> { before: '\n  ', between: ':' }
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Node; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Represents a CSS declaration. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @extends Node | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const root = postcss.parse('a { color: black }'); | 
					
						
							|  |  |  |  |  * const decl = root.first.first; | 
					
						
							|  |  |  |  |  * decl.type       //=> 'decl'
 | 
					
						
							|  |  |  |  |  * decl.toString() //=> ' color: black'
 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Declaration = /*#__PURE__*/function (_Node) { | 
					
						
							|  |  |  |  |   _inheritsLoose(Declaration, _Node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function Declaration(defaults) { | 
					
						
							|  |  |  |  |     var _this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _this = _Node.call(this, defaults) || this; | 
					
						
							|  |  |  |  |     _this.type = 'decl'; | 
					
						
							|  |  |  |  |     return _this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(Declaration, [{ | 
					
						
							|  |  |  |  |     key: "_value", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Node#_value was deprecated. Use Node#raws.value'); | 
					
						
							|  |  |  |  |       return this.raws.value; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Node#_value was deprecated. Use Node#raws.value'); | 
					
						
							|  |  |  |  |       this.raws.value = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "_important", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Node#_important was deprecated. Use Node#raws.important'); | 
					
						
							|  |  |  |  |       return this.raws.important; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Node#_important was deprecated. Use Node#raws.important'); | 
					
						
							|  |  |  |  |       this.raws.important = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Declaration# | 
					
						
							|  |  |  |  |      * @member {string} prop - the declaration’s property name | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a { color: black }'); | 
					
						
							|  |  |  |  |      * const decl = root.first.first; | 
					
						
							|  |  |  |  |      * decl.prop //=> 'color'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Declaration# | 
					
						
							|  |  |  |  |      * @member {string} value - the declaration’s value | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a { color: black }'); | 
					
						
							|  |  |  |  |      * const decl = root.first.first; | 
					
						
							|  |  |  |  |      * decl.value //=> 'black'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Declaration# | 
					
						
							|  |  |  |  |      * @member {boolean} important - `true` if the declaration | 
					
						
							|  |  |  |  |      *                               has an !important annotation. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a { color: black !important; color: red }'); | 
					
						
							|  |  |  |  |      * root.first.first.important //=> true
 | 
					
						
							|  |  |  |  |      * root.first.last.important  //=> undefined
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Declaration# | 
					
						
							|  |  |  |  |      * @member {object} raws - Information to generate byte-to-byte equal | 
					
						
							|  |  |  |  |      *                         node string as it was in the origin input. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * Every parser saves its own properties, | 
					
						
							|  |  |  |  |      * but the default CSS parser uses: | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * * `before`: the space symbols before the node. It also stores `*` | 
					
						
							|  |  |  |  |      *   and `_` symbols before the declaration (IE hack). | 
					
						
							|  |  |  |  |      * * `between`: the symbols between the property and value | 
					
						
							|  |  |  |  |      *   for declarations, selector and `{` for rules, or last parameter | 
					
						
							|  |  |  |  |      *   and `{` for at-rules. | 
					
						
							|  |  |  |  |      * * `important`: the content of the important statement, | 
					
						
							|  |  |  |  |      *   if it is not just `!important`. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * PostCSS cleans declaration from comments and extra spaces, | 
					
						
							|  |  |  |  |      * but it stores origin content in raws properties. | 
					
						
							|  |  |  |  |      * As such, if you don’t change a declaration’s value, | 
					
						
							|  |  |  |  |      * PostCSS will use the raw value with comments. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a {\n  color:black\n}') | 
					
						
							|  |  |  |  |      * root.first.first.raws //=> { before: '\n  ', between: ':' }
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Declaration; | 
					
						
							|  |  |  |  | }(Node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Represents a comment between declarations or statements (rule and at-rules). | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Comments inside selectors, at-rule parameters, or declaration values | 
					
						
							|  |  |  |  |  * will be stored in the `raws` properties explained above. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @extends Node | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Comment = /*#__PURE__*/function (_Node) { | 
					
						
							|  |  |  |  |   _inheritsLoose(Comment, _Node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function Comment(defaults) { | 
					
						
							|  |  |  |  |     var _this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _this = _Node.call(this, defaults) || this; | 
					
						
							|  |  |  |  |     _this.type = 'comment'; | 
					
						
							|  |  |  |  |     return _this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(Comment, [{ | 
					
						
							|  |  |  |  |     key: "left", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Comment#left was deprecated. Use Comment#raws.left'); | 
					
						
							|  |  |  |  |       return this.raws.left; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Comment#left was deprecated. Use Comment#raws.left'); | 
					
						
							|  |  |  |  |       this.raws.left = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "right", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Comment#right was deprecated. Use Comment#raws.right'); | 
					
						
							|  |  |  |  |       return this.raws.right; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Comment#right was deprecated. Use Comment#raws.right'); | 
					
						
							|  |  |  |  |       this.raws.right = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Comment# | 
					
						
							|  |  |  |  |      * @member {string} text - the comment’s text | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Comment# | 
					
						
							|  |  |  |  |      * @member {object} raws - Information to generate byte-to-byte equal | 
					
						
							|  |  |  |  |      *                         node string as it was in the origin input. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * Every parser saves its own properties, | 
					
						
							|  |  |  |  |      * but the default CSS parser uses: | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * * `before`: the space symbols before the node. | 
					
						
							|  |  |  |  |      * * `left`: the space symbols between `/*` and the comment’s text. | 
					
						
							|  |  |  |  |      * * `right`: the space symbols between the comment’s text. | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Comment; | 
					
						
							|  |  |  |  | }(Node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Parser = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function Parser(input) { | 
					
						
							|  |  |  |  |     this.input = input; | 
					
						
							|  |  |  |  |     this.pos = 0; | 
					
						
							|  |  |  |  |     this.root = new Root(); | 
					
						
							|  |  |  |  |     this.current = this.root; | 
					
						
							|  |  |  |  |     this.spaces = ''; | 
					
						
							|  |  |  |  |     this.semicolon = false; | 
					
						
							|  |  |  |  |     this.root.source = { | 
					
						
							|  |  |  |  |       input: input, | 
					
						
							|  |  |  |  |       start: { | 
					
						
							|  |  |  |  |         line: 1, | 
					
						
							|  |  |  |  |         column: 1 | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Parser.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.tokenize = function tokenize$1() { | 
					
						
							|  |  |  |  |     this.tokens = tokenize(this.input); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.loop = function loop() { | 
					
						
							|  |  |  |  |     var token; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (this.pos < this.tokens.length) { | 
					
						
							|  |  |  |  |       token = this.tokens[this.pos]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       switch (token[0]) { | 
					
						
							|  |  |  |  |         case 'space': | 
					
						
							|  |  |  |  |         case ';': | 
					
						
							|  |  |  |  |           this.spaces += token[1]; | 
					
						
							|  |  |  |  |           break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         case '}': | 
					
						
							|  |  |  |  |           this.end(token); | 
					
						
							|  |  |  |  |           break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         case 'comment': | 
					
						
							|  |  |  |  |           this.comment(token); | 
					
						
							|  |  |  |  |           break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         case 'at-word': | 
					
						
							|  |  |  |  |           this.atrule(token); | 
					
						
							|  |  |  |  |           break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         case '{': | 
					
						
							|  |  |  |  |           this.emptyRule(token); | 
					
						
							|  |  |  |  |           break; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         default: | 
					
						
							|  |  |  |  |           this.other(); | 
					
						
							|  |  |  |  |           break; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.pos += 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.endFile(); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.comment = function comment(token) { | 
					
						
							|  |  |  |  |     var node = new Comment(); | 
					
						
							|  |  |  |  |     this.init(node, token[2], token[3]); | 
					
						
							|  |  |  |  |     node.source.end = { | 
					
						
							|  |  |  |  |       line: token[4], | 
					
						
							|  |  |  |  |       column: token[5] | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     var text = token[1].slice(2, -2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (/^\s*$/.test(text)) { | 
					
						
							|  |  |  |  |       node.text = ''; | 
					
						
							|  |  |  |  |       node.raws.left = text; | 
					
						
							|  |  |  |  |       node.raws.right = ''; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/); | 
					
						
							|  |  |  |  |       node.text = match[2]; | 
					
						
							|  |  |  |  |       node.raws.left = match[1]; | 
					
						
							|  |  |  |  |       node.raws.right = match[3]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.emptyRule = function emptyRule(token) { | 
					
						
							|  |  |  |  |     var node = new Rule(); | 
					
						
							|  |  |  |  |     this.init(node, token[2], token[3]); | 
					
						
							|  |  |  |  |     node.selector = ''; | 
					
						
							|  |  |  |  |     node.raws.between = ''; | 
					
						
							|  |  |  |  |     this.current = node; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.other = function other() { | 
					
						
							|  |  |  |  |     var token; | 
					
						
							|  |  |  |  |     var end = false; | 
					
						
							|  |  |  |  |     var type = null; | 
					
						
							|  |  |  |  |     var colon = false; | 
					
						
							|  |  |  |  |     var bracket = null; | 
					
						
							|  |  |  |  |     var brackets = []; | 
					
						
							|  |  |  |  |     var start = this.pos; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (this.pos < this.tokens.length) { | 
					
						
							|  |  |  |  |       token = this.tokens[this.pos]; | 
					
						
							|  |  |  |  |       type = token[0]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (type === '(' || type === '[') { | 
					
						
							|  |  |  |  |         if (!bracket) bracket = token; | 
					
						
							|  |  |  |  |         brackets.push(type === '(' ? ')' : ']'); | 
					
						
							|  |  |  |  |       } else if (brackets.length === 0) { | 
					
						
							|  |  |  |  |         if (type === ';') { | 
					
						
							|  |  |  |  |           if (colon) { | 
					
						
							|  |  |  |  |             this.decl(this.tokens.slice(start, this.pos + 1)); | 
					
						
							|  |  |  |  |             return; | 
					
						
							|  |  |  |  |           } else { | 
					
						
							|  |  |  |  |             break; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         } else if (type === '{') { | 
					
						
							|  |  |  |  |           this.rule(this.tokens.slice(start, this.pos + 1)); | 
					
						
							|  |  |  |  |           return; | 
					
						
							|  |  |  |  |         } else if (type === '}') { | 
					
						
							|  |  |  |  |           this.pos -= 1; | 
					
						
							|  |  |  |  |           end = true; | 
					
						
							|  |  |  |  |           break; | 
					
						
							|  |  |  |  |         } else if (type === ':') { | 
					
						
							|  |  |  |  |           colon = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } else if (type === brackets[brackets.length - 1]) { | 
					
						
							|  |  |  |  |         brackets.pop(); | 
					
						
							|  |  |  |  |         if (brackets.length === 0) bracket = null; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.pos += 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.pos === this.tokens.length) { | 
					
						
							|  |  |  |  |       this.pos -= 1; | 
					
						
							|  |  |  |  |       end = true; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (brackets.length > 0) this.unclosedBracket(bracket); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (end && colon) { | 
					
						
							|  |  |  |  |       while (this.pos > start) { | 
					
						
							|  |  |  |  |         token = this.tokens[this.pos][0]; | 
					
						
							|  |  |  |  |         if (token !== 'space' && token !== 'comment') break; | 
					
						
							|  |  |  |  |         this.pos -= 1; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.decl(this.tokens.slice(start, this.pos + 1)); | 
					
						
							|  |  |  |  |       return; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.unknownWord(start); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rule = function rule(tokens) { | 
					
						
							|  |  |  |  |     tokens.pop(); | 
					
						
							|  |  |  |  |     var node = new Rule(); | 
					
						
							|  |  |  |  |     this.init(node, tokens[0][2], tokens[0][3]); | 
					
						
							|  |  |  |  |     node.raws.between = this.spacesFromEnd(tokens); | 
					
						
							|  |  |  |  |     this.raw(node, 'selector', tokens); | 
					
						
							|  |  |  |  |     this.current = node; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.decl = function decl(tokens) { | 
					
						
							|  |  |  |  |     var node = new Declaration(); | 
					
						
							|  |  |  |  |     this.init(node); | 
					
						
							|  |  |  |  |     var last = tokens[tokens.length - 1]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (last[0] === ';') { | 
					
						
							|  |  |  |  |       this.semicolon = true; | 
					
						
							|  |  |  |  |       tokens.pop(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (last[4]) { | 
					
						
							|  |  |  |  |       node.source.end = { | 
					
						
							|  |  |  |  |         line: last[4], | 
					
						
							|  |  |  |  |         column: last[5] | 
					
						
							|  |  |  |  |       }; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       node.source.end = { | 
					
						
							|  |  |  |  |         line: last[2], | 
					
						
							|  |  |  |  |         column: last[3] | 
					
						
							|  |  |  |  |       }; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (tokens[0][0] !== 'word') { | 
					
						
							|  |  |  |  |       node.raws.before += tokens.shift()[1]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     node.source.start = { | 
					
						
							|  |  |  |  |       line: tokens[0][2], | 
					
						
							|  |  |  |  |       column: tokens[0][3] | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     node.prop = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (tokens.length) { | 
					
						
							|  |  |  |  |       var type = tokens[0][0]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (type === ':' || type === 'space' || type === 'comment') { | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       node.prop += tokens.shift()[1]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     node.raws.between = ''; | 
					
						
							|  |  |  |  |     var token; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (tokens.length) { | 
					
						
							|  |  |  |  |       token = tokens.shift(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (token[0] === ':') { | 
					
						
							|  |  |  |  |         node.raws.between += token[1]; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         node.raws.between += token[1]; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node.prop[0] === '_' || node.prop[0] === '*') { | 
					
						
							|  |  |  |  |       node.raws.before += node.prop[0]; | 
					
						
							|  |  |  |  |       node.prop = node.prop.slice(1); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     node.raws.between += this.spacesFromStart(tokens); | 
					
						
							|  |  |  |  |     this.precheckMissedSemicolon(tokens); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = tokens.length - 1; i > 0; i--) { | 
					
						
							|  |  |  |  |       token = tokens[i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (token[1] === '!important') { | 
					
						
							|  |  |  |  |         node.important = true; | 
					
						
							|  |  |  |  |         var string = this.stringFrom(tokens, i); | 
					
						
							|  |  |  |  |         string = this.spacesFromEnd(tokens) + string; | 
					
						
							|  |  |  |  |         if (string !== ' !important') node.raws.important = string; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } else if (token[1] === 'important') { | 
					
						
							|  |  |  |  |         var cache = tokens.slice(0); | 
					
						
							|  |  |  |  |         var str = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         for (var j = i; j > 0; j--) { | 
					
						
							|  |  |  |  |           var _type = cache[j][0]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           if (str.trim().indexOf('!') === 0 && _type !== 'space') { | 
					
						
							|  |  |  |  |             break; | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           str = cache.pop()[1] + str; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (str.trim().indexOf('!') === 0) { | 
					
						
							|  |  |  |  |           node.important = true; | 
					
						
							|  |  |  |  |           node.raws.important = str; | 
					
						
							|  |  |  |  |           tokens = cache; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (token[0] !== 'space' && token[0] !== 'comment') { | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.raw(node, 'value', tokens); | 
					
						
							|  |  |  |  |     if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.atrule = function atrule(token) { | 
					
						
							|  |  |  |  |     var node = new AtRule(); | 
					
						
							|  |  |  |  |     node.name = token[1].slice(1); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node.name === '') { | 
					
						
							|  |  |  |  |       this.unnamedAtrule(node, token); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.init(node, token[2], token[3]); | 
					
						
							|  |  |  |  |     var last = false; | 
					
						
							|  |  |  |  |     var open = false; | 
					
						
							|  |  |  |  |     var params = []; | 
					
						
							|  |  |  |  |     this.pos += 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (this.pos < this.tokens.length) { | 
					
						
							|  |  |  |  |       token = this.tokens[this.pos]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (token[0] === ';') { | 
					
						
							|  |  |  |  |         node.source.end = { | 
					
						
							|  |  |  |  |           line: token[2], | 
					
						
							|  |  |  |  |           column: token[3] | 
					
						
							|  |  |  |  |         }; | 
					
						
							|  |  |  |  |         this.semicolon = true; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } else if (token[0] === '{') { | 
					
						
							|  |  |  |  |         open = true; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } else if (token[0] === '}') { | 
					
						
							|  |  |  |  |         this.end(token); | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         params.push(token); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.pos += 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.pos === this.tokens.length) { | 
					
						
							|  |  |  |  |       last = true; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     node.raws.between = this.spacesFromEnd(params); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (params.length) { | 
					
						
							|  |  |  |  |       node.raws.afterName = this.spacesFromStart(params); | 
					
						
							|  |  |  |  |       this.raw(node, 'params', params); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (last) { | 
					
						
							|  |  |  |  |         token = params[params.length - 1]; | 
					
						
							|  |  |  |  |         node.source.end = { | 
					
						
							|  |  |  |  |           line: token[4], | 
					
						
							|  |  |  |  |           column: token[5] | 
					
						
							|  |  |  |  |         }; | 
					
						
							|  |  |  |  |         this.spaces = node.raws.between; | 
					
						
							|  |  |  |  |         node.raws.between = ''; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       node.raws.afterName = ''; | 
					
						
							|  |  |  |  |       node.params = ''; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (open) { | 
					
						
							|  |  |  |  |       node.nodes = []; | 
					
						
							|  |  |  |  |       this.current = node; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.end = function end(token) { | 
					
						
							|  |  |  |  |     if (this.current.nodes && this.current.nodes.length) { | 
					
						
							|  |  |  |  |       this.current.raws.semicolon = this.semicolon; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.semicolon = false; | 
					
						
							|  |  |  |  |     this.current.raws.after = (this.current.raws.after || '') + this.spaces; | 
					
						
							|  |  |  |  |     this.spaces = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.current.parent) { | 
					
						
							|  |  |  |  |       this.current.source.end = { | 
					
						
							|  |  |  |  |         line: token[2], | 
					
						
							|  |  |  |  |         column: token[3] | 
					
						
							|  |  |  |  |       }; | 
					
						
							|  |  |  |  |       this.current = this.current.parent; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       this.unexpectedClose(token); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.endFile = function endFile() { | 
					
						
							|  |  |  |  |     if (this.current.parent) this.unclosedBlock(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.current.nodes && this.current.nodes.length) { | 
					
						
							|  |  |  |  |       this.current.raws.semicolon = this.semicolon; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.current.raws.after = (this.current.raws.after || '') + this.spaces; | 
					
						
							|  |  |  |  |   } // Helpers
 | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.init = function init(node, line, column) { | 
					
						
							|  |  |  |  |     this.current.push(node); | 
					
						
							|  |  |  |  |     node.source = { | 
					
						
							|  |  |  |  |       start: { | 
					
						
							|  |  |  |  |         line: line, | 
					
						
							|  |  |  |  |         column: column | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       input: this.input | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     node.raws.before = this.spaces; | 
					
						
							|  |  |  |  |     this.spaces = ''; | 
					
						
							|  |  |  |  |     if (node.type !== 'comment') this.semicolon = false; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.raw = function raw(node, prop, tokens) { | 
					
						
							|  |  |  |  |     var token, type; | 
					
						
							|  |  |  |  |     var length = tokens.length; | 
					
						
							|  |  |  |  |     var value = ''; | 
					
						
							|  |  |  |  |     var clean = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = 0; i < length; i += 1) { | 
					
						
							|  |  |  |  |       token = tokens[i]; | 
					
						
							|  |  |  |  |       type = token[0]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (type === 'comment' || type === 'space' && i === length - 1) { | 
					
						
							|  |  |  |  |         clean = false; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         value += token[1]; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!clean) { | 
					
						
							|  |  |  |  |       var raw = tokens.reduce(function (all, i) { | 
					
						
							|  |  |  |  |         return all + i[1]; | 
					
						
							|  |  |  |  |       }, ''); | 
					
						
							|  |  |  |  |       node.raws[prop] = { | 
					
						
							|  |  |  |  |         value: value, | 
					
						
							|  |  |  |  |         raw: raw | 
					
						
							|  |  |  |  |       }; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     node[prop] = value; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.spacesFromEnd = function spacesFromEnd(tokens) { | 
					
						
							|  |  |  |  |     var lastTokenType; | 
					
						
							|  |  |  |  |     var spaces = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (tokens.length) { | 
					
						
							|  |  |  |  |       lastTokenType = tokens[tokens.length - 1][0]; | 
					
						
							|  |  |  |  |       if (lastTokenType !== 'space' && lastTokenType !== 'comment') break; | 
					
						
							|  |  |  |  |       spaces = tokens.pop()[1] + spaces; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return spaces; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.spacesFromStart = function spacesFromStart(tokens) { | 
					
						
							|  |  |  |  |     var next; | 
					
						
							|  |  |  |  |     var spaces = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (tokens.length) { | 
					
						
							|  |  |  |  |       next = tokens[0][0]; | 
					
						
							|  |  |  |  |       if (next !== 'space' && next !== 'comment') break; | 
					
						
							|  |  |  |  |       spaces += tokens.shift()[1]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return spaces; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.stringFrom = function stringFrom(tokens, from) { | 
					
						
							|  |  |  |  |     var result = ''; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = from; i < tokens.length; i++) { | 
					
						
							|  |  |  |  |       result += tokens[i][1]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     tokens.splice(from, tokens.length - from); | 
					
						
							|  |  |  |  |     return result; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.colon = function colon(tokens) { | 
					
						
							|  |  |  |  |     var brackets = 0; | 
					
						
							|  |  |  |  |     var token, type, prev; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = 0; i < tokens.length; i++) { | 
					
						
							|  |  |  |  |       token = tokens[i]; | 
					
						
							|  |  |  |  |       type = token[0]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (type === '(') { | 
					
						
							|  |  |  |  |         brackets += 1; | 
					
						
							|  |  |  |  |       } else if (type === ')') { | 
					
						
							|  |  |  |  |         brackets -= 1; | 
					
						
							|  |  |  |  |       } else if (brackets === 0 && type === ':') { | 
					
						
							|  |  |  |  |         if (!prev) { | 
					
						
							|  |  |  |  |           this.doubleColon(token); | 
					
						
							|  |  |  |  |         } else if (prev[0] === 'word' && prev[1] === 'progid') { | 
					
						
							|  |  |  |  |           continue; | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           return i; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       prev = token; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return false; | 
					
						
							|  |  |  |  |   } // Errors
 | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unclosedBracket = function unclosedBracket(bracket) { | 
					
						
							|  |  |  |  |     throw this.input.error('Unclosed bracket', bracket[2], bracket[3]); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unknownWord = function unknownWord(start) { | 
					
						
							|  |  |  |  |     var token = this.tokens[start]; | 
					
						
							|  |  |  |  |     throw this.input.error('Unknown word', token[2], token[3]); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unexpectedClose = function unexpectedClose(token) { | 
					
						
							|  |  |  |  |     throw this.input.error('Unexpected }', token[2], token[3]); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unclosedBlock = function unclosedBlock() { | 
					
						
							|  |  |  |  |     var pos = this.current.source.start; | 
					
						
							|  |  |  |  |     throw this.input.error('Unclosed block', pos.line, pos.column); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.doubleColon = function doubleColon(token) { | 
					
						
							|  |  |  |  |     throw this.input.error('Double colon', token[2], token[3]); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unnamedAtrule = function unnamedAtrule(node, token) { | 
					
						
							|  |  |  |  |     throw this.input.error('At-rule without name', token[2], token[3]); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) { | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) { | 
					
						
							|  |  |  |  |     var colon = this.colon(tokens); | 
					
						
							|  |  |  |  |     if (colon === false) return; | 
					
						
							|  |  |  |  |     var founded = 0; | 
					
						
							|  |  |  |  |     var token; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var j = colon - 1; j >= 0; j--) { | 
					
						
							|  |  |  |  |       token = tokens[j]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (token[0] !== 'space') { | 
					
						
							|  |  |  |  |         founded += 1; | 
					
						
							|  |  |  |  |         if (founded === 2) break; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     throw this.input.error('Missed semicolon', token[2], token[3]); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Parser; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function parse(css, opts) { | 
					
						
							|  |  |  |  |   if (opts && opts.safe) { | 
					
						
							|  |  |  |  |     throw new Error('Option safe was removed. ' + 'Use parser: require("postcss-safe-parser")'); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var input = new Input(css, opts); | 
					
						
							|  |  |  |  |   var parser = new Parser(input); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   try { | 
					
						
							|  |  |  |  |     parser.tokenize(); | 
					
						
							|  |  |  |  |     parser.loop(); | 
					
						
							|  |  |  |  |   } catch (e) { | 
					
						
							|  |  |  |  |     if (e.name === 'CssSyntaxError' && opts && opts.from) { | 
					
						
							|  |  |  |  |       if (/\.scss$/i.test(opts.from)) { | 
					
						
							|  |  |  |  |         e.message += '\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser'; | 
					
						
							|  |  |  |  |       } else if (/\.less$/i.test(opts.from)) { | 
					
						
							|  |  |  |  |         e.message += '\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser'; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     throw e; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return parser.root; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function cleanSource(nodes) { | 
					
						
							|  |  |  |  |   return nodes.map(function (i) { | 
					
						
							|  |  |  |  |     if (i.nodes) i.nodes = cleanSource(i.nodes); | 
					
						
							|  |  |  |  |     delete i.source; | 
					
						
							|  |  |  |  |     return i; | 
					
						
							|  |  |  |  |   }); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback childCondition | 
					
						
							|  |  |  |  |  * @param {Node} node    - container child | 
					
						
							|  |  |  |  |  * @param {number} index - child index | 
					
						
							|  |  |  |  |  * @param {Node[]} nodes - all container children | 
					
						
							|  |  |  |  |  * @return {boolean} | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback childIterator | 
					
						
							|  |  |  |  |  * @param {Node} node    - container child | 
					
						
							|  |  |  |  |  * @param {number} index - child index | 
					
						
							|  |  |  |  |  * @return {false|undefined} returning `false` will break iteration | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes | 
					
						
							|  |  |  |  |  * inherit some common methods to help work with their children. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * Note that all containers can store any content. If you write a rule inside | 
					
						
							|  |  |  |  |  * a rule, PostCSS will parse it. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @extends Node | 
					
						
							|  |  |  |  |  * @abstract | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Container = /*#__PURE__*/function (_Node) { | 
					
						
							|  |  |  |  |   _inheritsLoose(Container, _Node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function Container() { | 
					
						
							|  |  |  |  |     return _Node.apply(this, arguments) || this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Container.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.push = function push(child) { | 
					
						
							|  |  |  |  |     child.parent = this; | 
					
						
							|  |  |  |  |     this.nodes.push(child); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Iterates through the container’s immediate children, | 
					
						
							|  |  |  |  |    * calling `callback` for each child. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Returning `false` in the callback will break iteration. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * This method only iterates through the container’s immediate children. | 
					
						
							|  |  |  |  |    * If you need to recursively iterate through all the container’s descendant | 
					
						
							|  |  |  |  |    * nodes, use {@link Container#walk}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe | 
					
						
							|  |  |  |  |    * if you are mutating the array of child nodes during iteration. | 
					
						
							|  |  |  |  |    * PostCSS will adjust the current index to match the mutations. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {childIterator} callback - iterator receives each node and index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {false|undefined} returns `false` if iteration was broke | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const root = postcss.parse('a { color: black; z-index: 1 }'); | 
					
						
							|  |  |  |  |    * const rule = root.first; | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * for ( let decl of rule.nodes ) { | 
					
						
							|  |  |  |  |    *     decl.cloneBefore({ prop: '-webkit-' + decl.prop }); | 
					
						
							|  |  |  |  |    *     // Cycle will be infinite, because cloneBefore moves the current node
 | 
					
						
							|  |  |  |  |    *     // to the next index
 | 
					
						
							|  |  |  |  |    * } | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * rule.each(decl => { | 
					
						
							|  |  |  |  |    *     decl.cloneBefore({ prop: '-webkit-' + decl.prop }); | 
					
						
							|  |  |  |  |    *     // Will be executed only for color and z-index
 | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.each = function each(callback) { | 
					
						
							|  |  |  |  |     if (!this.lastEach) this.lastEach = 0; | 
					
						
							|  |  |  |  |     if (!this.indexes) this.indexes = {}; | 
					
						
							|  |  |  |  |     this.lastEach += 1; | 
					
						
							|  |  |  |  |     var id = this.lastEach; | 
					
						
							|  |  |  |  |     this.indexes[id] = 0; | 
					
						
							|  |  |  |  |     if (!this.nodes) return undefined; | 
					
						
							|  |  |  |  |     var index, result; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (this.indexes[id] < this.nodes.length) { | 
					
						
							|  |  |  |  |       index = this.indexes[id]; | 
					
						
							|  |  |  |  |       result = callback(this.nodes[index], index); | 
					
						
							|  |  |  |  |       if (result === false) break; | 
					
						
							|  |  |  |  |       this.indexes[id] += 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     delete this.indexes[id]; | 
					
						
							|  |  |  |  |     return result; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Traverses the container’s descendant nodes, calling callback | 
					
						
							|  |  |  |  |    * for each node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Like container.each(), this method is safe to use | 
					
						
							|  |  |  |  |    * if you are mutating arrays during iteration. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * If you only need to iterate through the container’s immediate children, | 
					
						
							|  |  |  |  |    * use {@link Container#each}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {childIterator} callback - iterator receives each node and index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {false|undefined} returns `false` if iteration was broke | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * root.walk(node => { | 
					
						
							|  |  |  |  |    *   // Traverses all descendant nodes.
 | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.walk = function walk(callback) { | 
					
						
							|  |  |  |  |     return this.each(function (child, i) { | 
					
						
							|  |  |  |  |       var result = callback(child, i); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (result !== false && child.walk) { | 
					
						
							|  |  |  |  |         result = child.walk(callback); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       return result; | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Traverses the container’s descendant nodes, calling callback | 
					
						
							|  |  |  |  |    * for each declaration node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * If you pass a filter, iteration will only happen over declarations | 
					
						
							|  |  |  |  |    * with matching properties. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Like {@link Container#each}, this method is safe | 
					
						
							|  |  |  |  |    * to use if you are mutating arrays during iteration. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string|RegExp} [prop]   - string or regular expression | 
					
						
							|  |  |  |  |    *                                   to filter declarations by property name | 
					
						
							|  |  |  |  |    * @param {childIterator} callback - iterator receives each node and index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {false|undefined} returns `false` if iteration was broke | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * root.walkDecls(decl => { | 
					
						
							|  |  |  |  |    *   checkPropertySupport(decl.prop); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * root.walkDecls('border-radius', decl => { | 
					
						
							|  |  |  |  |    *   decl.remove(); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * root.walkDecls(/^background/, decl => { | 
					
						
							|  |  |  |  |    *   decl.value = takeFirstColorFromGradient(decl.value); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.walkDecls = function walkDecls(prop, callback) { | 
					
						
							|  |  |  |  |     if (!callback) { | 
					
						
							|  |  |  |  |       callback = prop; | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'decl') { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } else if (prop instanceof RegExp) { | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'decl' && prop.test(child.prop)) { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'decl' && child.prop === prop) { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Traverses the container’s descendant nodes, calling callback | 
					
						
							|  |  |  |  |    * for each rule node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * If you pass a filter, iteration will only happen over rules | 
					
						
							|  |  |  |  |    * with matching selectors. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Like {@link Container#each}, this method is safe | 
					
						
							|  |  |  |  |    * to use if you are mutating arrays during iteration. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string|RegExp} [selector] - string or regular expression | 
					
						
							|  |  |  |  |    *                                     to filter rules by selector | 
					
						
							|  |  |  |  |    * @param {childIterator} callback   - iterator receives each node and index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {false|undefined} returns `false` if iteration was broke | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const selectors = []; | 
					
						
							|  |  |  |  |    * root.walkRules(rule => { | 
					
						
							|  |  |  |  |    *   selectors.push(rule.selector); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    * console.log(`Your CSS uses ${selectors.length} selectors`); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.walkRules = function walkRules(selector, callback) { | 
					
						
							|  |  |  |  |     if (!callback) { | 
					
						
							|  |  |  |  |       callback = selector; | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'rule') { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } else if (selector instanceof RegExp) { | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'rule' && selector.test(child.selector)) { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'rule' && child.selector === selector) { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Traverses the container’s descendant nodes, calling callback | 
					
						
							|  |  |  |  |    * for each at-rule node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * If you pass a filter, iteration will only happen over at-rules | 
					
						
							|  |  |  |  |    * that have matching names. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Like {@link Container#each}, this method is safe | 
					
						
							|  |  |  |  |    * to use if you are mutating arrays during iteration. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string|RegExp} [name]   - string or regular expression | 
					
						
							|  |  |  |  |    *                                   to filter at-rules by name | 
					
						
							|  |  |  |  |    * @param {childIterator} callback - iterator receives each node and index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {false|undefined} returns `false` if iteration was broke | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * root.walkAtRules(rule => { | 
					
						
							|  |  |  |  |    *   if ( isOld(rule.name) ) rule.remove(); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * let first = false; | 
					
						
							|  |  |  |  |    * root.walkAtRules('charset', rule => { | 
					
						
							|  |  |  |  |    *   if ( !first ) { | 
					
						
							|  |  |  |  |    *     first = true; | 
					
						
							|  |  |  |  |    *   } else { | 
					
						
							|  |  |  |  |    *     rule.remove(); | 
					
						
							|  |  |  |  |    *   } | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.walkAtRules = function walkAtRules(name, callback) { | 
					
						
							|  |  |  |  |     if (!callback) { | 
					
						
							|  |  |  |  |       callback = name; | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'atrule') { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } else if (name instanceof RegExp) { | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'atrule' && name.test(child.name)) { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |         if (child.type === 'atrule' && child.name === name) { | 
					
						
							|  |  |  |  |           return callback(child, i); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Traverses the container’s descendant nodes, calling callback | 
					
						
							|  |  |  |  |    * for each comment node. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Like {@link Container#each}, this method is safe | 
					
						
							|  |  |  |  |    * to use if you are mutating arrays during iteration. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {childIterator} callback - iterator receives each node and index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {false|undefined} returns `false` if iteration was broke | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * root.walkComments(comment => { | 
					
						
							|  |  |  |  |    *   comment.remove(); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.walkComments = function walkComments(callback) { | 
					
						
							|  |  |  |  |     return this.walk(function (child, i) { | 
					
						
							|  |  |  |  |       if (child.type === 'comment') { | 
					
						
							|  |  |  |  |         return callback(child, i); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Inserts new nodes to the start of the container. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {...(Node|object|string|Node[])} children - new nodes | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} this node for methods chain | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const decl1 = postcss.decl({ prop: 'color', value: 'black' }); | 
					
						
							|  |  |  |  |    * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' }); | 
					
						
							|  |  |  |  |    * rule.append(decl1, decl2); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * root.append({ name: 'charset', params: '"UTF-8"' });  // at-rule
 | 
					
						
							|  |  |  |  |    * root.append({ selector: 'a' });                       // rule
 | 
					
						
							|  |  |  |  |    * rule.append({ prop: 'color', value: 'black' });       // declaration
 | 
					
						
							|  |  |  |  |    * rule.append({ text: 'Comment' })                      // comment
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * root.append('a {}'); | 
					
						
							|  |  |  |  |    * root.first.append('color: black; z-index: 1'); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.append = function append() { | 
					
						
							|  |  |  |  |     var _this = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) { | 
					
						
							|  |  |  |  |       children[_key] = arguments[_key]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     children.forEach(function (child) { | 
					
						
							|  |  |  |  |       var nodes = _this.normalize(child, _this.last); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |         return _this.nodes.push(node); | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Inserts new nodes to the end of the container. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {...(Node|object|string|Node[])} children - new nodes | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} this node for methods chain | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const decl1 = postcss.decl({ prop: 'color', value: 'black' }); | 
					
						
							|  |  |  |  |    * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' }); | 
					
						
							|  |  |  |  |    * rule.prepend(decl1, decl2); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * root.append({ name: 'charset', params: '"UTF-8"' });  // at-rule
 | 
					
						
							|  |  |  |  |    * root.append({ selector: 'a' });                       // rule
 | 
					
						
							|  |  |  |  |    * rule.append({ prop: 'color', value: 'black' });       // declaration
 | 
					
						
							|  |  |  |  |    * rule.append({ text: 'Comment' })                      // comment
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * root.append('a {}'); | 
					
						
							|  |  |  |  |    * root.first.append('color: black; z-index: 1'); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.prepend = function prepend() { | 
					
						
							|  |  |  |  |     var _this2 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | 
					
						
							|  |  |  |  |       children[_key2] = arguments[_key2]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     children = children.reverse(); | 
					
						
							|  |  |  |  |     children.forEach(function (child) { | 
					
						
							|  |  |  |  |       var nodes = _this2.normalize(child, _this2.first, 'prepend').reverse(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |         return _this2.nodes.unshift(node); | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (var id in _this2.indexes) { | 
					
						
							|  |  |  |  |         _this2.indexes[id] = _this2.indexes[id] + nodes.length; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.cleanRaws = function cleanRaws(keepBetween) { | 
					
						
							|  |  |  |  |     _Node.prototype.cleanRaws.call(this, keepBetween); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.nodes) { | 
					
						
							|  |  |  |  |       this.nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |         return node.cleanRaws(keepBetween); | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Insert new node before old node within the container. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Node|number} exist             - child or child’s index. | 
					
						
							|  |  |  |  |    * @param {Node|object|string|Node[]} add - new node | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} this node for methods chain | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop })); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.insertBefore = function insertBefore(exist, add) { | 
					
						
							|  |  |  |  |     var _this3 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     exist = this.index(exist); | 
					
						
							|  |  |  |  |     var type = exist === 0 ? 'prepend' : false; | 
					
						
							|  |  |  |  |     var nodes = this.normalize(add, this.nodes[exist], type).reverse(); | 
					
						
							|  |  |  |  |     nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |       return _this3.nodes.splice(exist, 0, node); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     var index; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var id in this.indexes) { | 
					
						
							|  |  |  |  |       index = this.indexes[id]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (exist <= index) { | 
					
						
							|  |  |  |  |         this.indexes[id] = index + nodes.length; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Insert new node after old node within the container. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Node|number} exist             - child or child’s index | 
					
						
							|  |  |  |  |    * @param {Node|object|string|Node[]} add - new node | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} this node for methods chain | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.insertAfter = function insertAfter(exist, add) { | 
					
						
							|  |  |  |  |     var _this4 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     exist = this.index(exist); | 
					
						
							|  |  |  |  |     var nodes = this.normalize(add, this.nodes[exist]).reverse(); | 
					
						
							|  |  |  |  |     nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |       return _this4.nodes.splice(exist + 1, 0, node); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     var index; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var id in this.indexes) { | 
					
						
							|  |  |  |  |       index = this.indexes[id]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (exist < index) { | 
					
						
							|  |  |  |  |         this.indexes[id] = index + nodes.length; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.remove = function remove(child) { | 
					
						
							|  |  |  |  |     if (typeof child !== 'undefined') { | 
					
						
							|  |  |  |  |       warnOnce('Container#remove is deprecated. ' + 'Use Container#removeChild'); | 
					
						
							|  |  |  |  |       this.removeChild(child); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       _Node.prototype.remove.call(this); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Removes node from the container and cleans the parent properties | 
					
						
							|  |  |  |  |    * from the node and its children. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Node|number} child - child or child’s index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} this node for methods chain | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * rule.nodes.length  //=> 5
 | 
					
						
							|  |  |  |  |    * rule.removeChild(decl); | 
					
						
							|  |  |  |  |    * rule.nodes.length  //=> 4
 | 
					
						
							|  |  |  |  |    * decl.parent        //=> undefined
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.removeChild = function removeChild(child) { | 
					
						
							|  |  |  |  |     child = this.index(child); | 
					
						
							|  |  |  |  |     this.nodes[child].parent = undefined; | 
					
						
							|  |  |  |  |     this.nodes.splice(child, 1); | 
					
						
							|  |  |  |  |     var index; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var id in this.indexes) { | 
					
						
							|  |  |  |  |       index = this.indexes[id]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (index >= child) { | 
					
						
							|  |  |  |  |         this.indexes[id] = index - 1; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Removes all children from the container | 
					
						
							|  |  |  |  |    * and cleans their parent properties. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Node} this node for methods chain | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * rule.removeAll(); | 
					
						
							|  |  |  |  |    * rule.nodes.length //=> 0
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.removeAll = function removeAll() { | 
					
						
							|  |  |  |  |     this.nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |       return node.parent = undefined; | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     this.nodes = []; | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |      * Passes all declaration values within the container that match pattern | 
					
						
							|  |  |  |  |      * through callback, replacing those values with the returned result | 
					
						
							|  |  |  |  |      * of callback. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This method is useful if you are using a custom unit or function | 
					
						
							|  |  |  |  |      * and need to iterate through all values. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @param {string|RegExp} pattern      - replace pattern | 
					
						
							|  |  |  |  |      * @param {object} opts                - options to speed up the search | 
					
						
							|  |  |  |  |      * @param {string|string[]} opts.props - an array of property names | 
					
						
							|  |  |  |  |      * @param {string} opts.fast           - string that’s used | 
					
						
							|  |  |  |  |      *                                       to narrow down values and speed up | 
					
						
							|  |  |  |  |                                              the regexp search | 
					
						
							|  |  |  |  |      * @param {function|string} callback   - string to replace pattern | 
					
						
							|  |  |  |  |      *                                       or callback that returns a new | 
					
						
							|  |  |  |  |      *                                       value. | 
					
						
							|  |  |  |  |      *                                       The callback will receive | 
					
						
							|  |  |  |  |      *                                       the same arguments as those | 
					
						
							|  |  |  |  |      *                                       passed to a function parameter | 
					
						
							|  |  |  |  |      *                                       of `String#replace`. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @return {Node} this node for methods chain | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * root.replaceValues(/\d+rem/, { fast: 'rem' }, string => { | 
					
						
							|  |  |  |  |      *   return 15 * parseInt(string) + 'px'; | 
					
						
							|  |  |  |  |      * }); | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.replaceValues = function replaceValues(pattern, opts, callback) { | 
					
						
							|  |  |  |  |     if (!callback) { | 
					
						
							|  |  |  |  |       callback = opts; | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.walkDecls(function (decl) { | 
					
						
							|  |  |  |  |       if (opts.props && opts.props.indexOf(decl.prop) === -1) return; | 
					
						
							|  |  |  |  |       if (opts.fast && decl.value.indexOf(opts.fast) === -1) return; | 
					
						
							|  |  |  |  |       decl.value = decl.value.replace(pattern, callback); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns `true` if callback returns `true` | 
					
						
							|  |  |  |  |    * for all of the container’s children. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {childCondition} condition - iterator returns true or false. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {boolean} is every child pass condition | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const noPrefixes = rule.every(i => i.prop[0] !== '-'); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.every = function every(condition) { | 
					
						
							|  |  |  |  |     return this.nodes.every(condition); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns `true` if callback returns `true` for (at least) one | 
					
						
							|  |  |  |  |    * of the container’s children. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {childCondition} condition - iterator returns true or false. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {boolean} is some child pass condition | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const hasPrefix = rule.some(i => i.prop[0] === '-'); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.some = function some(condition) { | 
					
						
							|  |  |  |  |     return this.nodes.some(condition); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a `child`’s index within the {@link Container#nodes} array. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Node} child - child of the current container. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {number} child index | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * rule.index( rule.nodes[2] ) //=> 2
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.index = function index(child) { | 
					
						
							|  |  |  |  |     if (typeof child === 'number') { | 
					
						
							|  |  |  |  |       return child; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return this.nodes.indexOf(child); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * The container’s first child. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @type {Node} | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * rule.first == rules.nodes[0]; | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.normalize = function normalize(nodes, sample) { | 
					
						
							|  |  |  |  |     var _this5 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof nodes === 'string') { | 
					
						
							|  |  |  |  |       nodes = cleanSource(parse(nodes).nodes); | 
					
						
							|  |  |  |  |     } else if (!Array.isArray(nodes)) { | 
					
						
							|  |  |  |  |       if (nodes.type === 'root') { | 
					
						
							|  |  |  |  |         nodes = nodes.nodes; | 
					
						
							|  |  |  |  |       } else if (nodes.type) { | 
					
						
							|  |  |  |  |         nodes = [nodes]; | 
					
						
							|  |  |  |  |       } else if (nodes.prop) { | 
					
						
							|  |  |  |  |         if (typeof nodes.value === 'undefined') { | 
					
						
							|  |  |  |  |           throw new Error('Value field is missed in node creation'); | 
					
						
							|  |  |  |  |         } else if (typeof nodes.value !== 'string') { | 
					
						
							|  |  |  |  |           nodes.value = String(nodes.value); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         nodes = [new Declaration(nodes)]; | 
					
						
							|  |  |  |  |       } else if (nodes.selector) { | 
					
						
							|  |  |  |  |         nodes = [new Rule(nodes)]; | 
					
						
							|  |  |  |  |       } else if (nodes.name) { | 
					
						
							|  |  |  |  |         nodes = [new AtRule(nodes)]; | 
					
						
							|  |  |  |  |       } else if (nodes.text) { | 
					
						
							|  |  |  |  |         nodes = [new Comment(nodes)]; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         throw new Error('Unknown node type in node creation'); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var processed = nodes.map(function (i) { | 
					
						
							|  |  |  |  |       if (typeof i.raws === 'undefined') i = _this5.rebuild(i); | 
					
						
							|  |  |  |  |       if (i.parent) i = i.clone(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (typeof i.raws.before === 'undefined') { | 
					
						
							|  |  |  |  |         if (sample && typeof sample.raws.before !== 'undefined') { | 
					
						
							|  |  |  |  |           i.raws.before = sample.raws.before.replace(/[^\s]/g, ''); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       i.parent = _this5; | 
					
						
							|  |  |  |  |       return i; | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return processed; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.rebuild = function rebuild(node, parent) { | 
					
						
							|  |  |  |  |     var _this6 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var fix; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (node.type === 'root') { | 
					
						
							|  |  |  |  |       fix = new Root(); | 
					
						
							|  |  |  |  |     } else if (node.type === 'atrule') { | 
					
						
							|  |  |  |  |       fix = new AtRule(); | 
					
						
							|  |  |  |  |     } else if (node.type === 'rule') { | 
					
						
							|  |  |  |  |       fix = new Rule(); | 
					
						
							|  |  |  |  |     } else if (node.type === 'decl') { | 
					
						
							|  |  |  |  |       fix = new Declaration(); | 
					
						
							|  |  |  |  |     } else if (node.type === 'comment') { | 
					
						
							|  |  |  |  |       fix = new Comment(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i in node) { | 
					
						
							|  |  |  |  |       if (i === 'nodes') { | 
					
						
							|  |  |  |  |         fix.nodes = node.nodes.map(function (j) { | 
					
						
							|  |  |  |  |           return _this6.rebuild(j, fix); | 
					
						
							|  |  |  |  |         }); | 
					
						
							|  |  |  |  |       } else if (i === 'parent' && parent) { | 
					
						
							|  |  |  |  |         fix.parent = parent; | 
					
						
							|  |  |  |  |       } else if (node.hasOwnProperty(i)) { | 
					
						
							|  |  |  |  |         fix[i] = node[i]; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return fix; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.eachInside = function eachInside(callback) { | 
					
						
							|  |  |  |  |     warnOnce('Container#eachInside is deprecated. ' + 'Use Container#walk instead.'); | 
					
						
							|  |  |  |  |     return this.walk(callback); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.eachDecl = function eachDecl(prop, callback) { | 
					
						
							|  |  |  |  |     warnOnce('Container#eachDecl is deprecated. ' + 'Use Container#walkDecls instead.'); | 
					
						
							|  |  |  |  |     return this.walkDecls(prop, callback); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.eachRule = function eachRule(selector, callback) { | 
					
						
							|  |  |  |  |     warnOnce('Container#eachRule is deprecated. ' + 'Use Container#walkRules instead.'); | 
					
						
							|  |  |  |  |     return this.walkRules(selector, callback); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.eachAtRule = function eachAtRule(name, callback) { | 
					
						
							|  |  |  |  |     warnOnce('Container#eachAtRule is deprecated. ' + 'Use Container#walkAtRules instead.'); | 
					
						
							|  |  |  |  |     return this.walkAtRules(name, callback); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.eachComment = function eachComment(callback) { | 
					
						
							|  |  |  |  |     warnOnce('Container#eachComment is deprecated. ' + 'Use Container#walkComments instead.'); | 
					
						
							|  |  |  |  |     return this.walkComments(callback); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(Container, [{ | 
					
						
							|  |  |  |  |     key: "first", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       if (!this.nodes) return undefined; | 
					
						
							|  |  |  |  |       return this.nodes[0]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * The container’s last child. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @type {Node} | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * rule.last == rule.nodes[rule.nodes.length - 1]; | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "last", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       if (!this.nodes) return undefined; | 
					
						
							|  |  |  |  |       return this.nodes[this.nodes.length - 1]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "semicolon", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Node#semicolon is deprecated. Use Node#raws.semicolon'); | 
					
						
							|  |  |  |  |       return this.raws.semicolon; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Node#semicolon is deprecated. Use Node#raws.semicolon'); | 
					
						
							|  |  |  |  |       this.raws.semicolon = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "after", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Node#after is deprecated. Use Node#raws.after'); | 
					
						
							|  |  |  |  |       return this.raws.after; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Node#after is deprecated. Use Node#raws.after'); | 
					
						
							|  |  |  |  |       this.raws.after = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Container# | 
					
						
							|  |  |  |  |      * @member {Node[]} nodes - an array containing the container’s children | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a { color: black }'); | 
					
						
							|  |  |  |  |      * root.nodes.length           //=> 1
 | 
					
						
							|  |  |  |  |      * root.nodes[0].selector      //=> 'a'
 | 
					
						
							|  |  |  |  |      * root.nodes[0].nodes[0].prop //=> 'color'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Container; | 
					
						
							|  |  |  |  | }(Node); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Represents an at-rule. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * If it’s followed in the CSS by a {} block, this node will have | 
					
						
							|  |  |  |  |  * a nodes property representing its children. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @extends Container | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const root = postcss.parse('@charset "UTF-8"; @media print {}'); | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * const charset = root.first; | 
					
						
							|  |  |  |  |  * charset.type  //=> 'atrule'
 | 
					
						
							|  |  |  |  |  * charset.nodes //=> undefined
 | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * const media = root.last; | 
					
						
							|  |  |  |  |  * media.nodes   //=> []
 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var AtRule = /*#__PURE__*/function (_Container) { | 
					
						
							|  |  |  |  |   _inheritsLoose(AtRule, _Container); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function AtRule(defaults) { | 
					
						
							|  |  |  |  |     var _this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _this = _Container.call(this, defaults) || this; | 
					
						
							|  |  |  |  |     _this.type = 'atrule'; | 
					
						
							|  |  |  |  |     return _this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = AtRule.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.append = function append() { | 
					
						
							|  |  |  |  |     var _Container$prototype$; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!this.nodes) this.nodes = []; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) { | 
					
						
							|  |  |  |  |       children[_key] = arguments[_key]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children)); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.prepend = function prepend() { | 
					
						
							|  |  |  |  |     var _Container$prototype$2; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!this.nodes) this.nodes = []; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | 
					
						
							|  |  |  |  |       children[_key2] = arguments[_key2]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children)); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(AtRule, [{ | 
					
						
							|  |  |  |  |     key: "afterName", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('AtRule#afterName was deprecated. Use AtRule#raws.afterName'); | 
					
						
							|  |  |  |  |       return this.raws.afterName; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('AtRule#afterName was deprecated. Use AtRule#raws.afterName'); | 
					
						
							|  |  |  |  |       this.raws.afterName = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "_params", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('AtRule#_params was deprecated. Use AtRule#raws.params'); | 
					
						
							|  |  |  |  |       return this.raws.params; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('AtRule#_params was deprecated. Use AtRule#raws.params'); | 
					
						
							|  |  |  |  |       this.raws.params = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof AtRule# | 
					
						
							|  |  |  |  |      * @member {string} name - the at-rule’s name immediately follows the `@` | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root  = postcss.parse('@media print {}'); | 
					
						
							|  |  |  |  |      * media.name //=> 'media'
 | 
					
						
							|  |  |  |  |      * const media = root.first; | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof AtRule# | 
					
						
							|  |  |  |  |      * @member {string} params - the at-rule’s parameters, the values | 
					
						
							|  |  |  |  |      *                           that follow the at-rule’s name but precede | 
					
						
							|  |  |  |  |      *                           any {} block | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root  = postcss.parse('@media print, screen {}'); | 
					
						
							|  |  |  |  |      * const media = root.first; | 
					
						
							|  |  |  |  |      * media.params //=> 'print, screen'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof AtRule# | 
					
						
							|  |  |  |  |      * @member {object} raws - Information to generate byte-to-byte equal | 
					
						
							|  |  |  |  |      *                         node string as it was in the origin input. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * Every parser saves its own properties, | 
					
						
							|  |  |  |  |      * but the default CSS parser uses: | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * * `before`: the space symbols before the node. It also stores `*` | 
					
						
							|  |  |  |  |      *   and `_` symbols before the declaration (IE hack). | 
					
						
							|  |  |  |  |      * * `after`: the space symbols after the last child of the node | 
					
						
							|  |  |  |  |      *   to the end of the node. | 
					
						
							|  |  |  |  |      * * `between`: the symbols between the property and value | 
					
						
							|  |  |  |  |      *   for declarations, selector and `{` for rules, or last parameter | 
					
						
							|  |  |  |  |      *   and `{` for at-rules. | 
					
						
							|  |  |  |  |      * * `semicolon`: contains true if the last child has | 
					
						
							|  |  |  |  |      *   an (optional) semicolon. | 
					
						
							|  |  |  |  |      * * `afterName`: the space between the at-rule name and its parameters. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * PostCSS cleans at-rule parameters from comments and extra spaces, | 
					
						
							|  |  |  |  |      * but it stores origin content in raws properties. | 
					
						
							|  |  |  |  |      * As such, if you don’t change a declaration’s value, | 
					
						
							|  |  |  |  |      * PostCSS will use the raw value with comments. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('  @media\nprint {\n}') | 
					
						
							|  |  |  |  |      * root.first.first.raws //=> { before: '  ',
 | 
					
						
							|  |  |  |  |      *                       //     between: ' ',
 | 
					
						
							|  |  |  |  |      *                       //     afterName: '\n',
 | 
					
						
							|  |  |  |  |      *                       //     after: '\n' }
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return AtRule; | 
					
						
							|  |  |  |  | }(Container); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Contains helpers for safely splitting lists of CSS values, | 
					
						
							|  |  |  |  |  * preserving parentheses and quotes. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const list = postcss.list; | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @namespace list | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | var list = { | 
					
						
							|  |  |  |  |   split: function split(string, separators, last) { | 
					
						
							|  |  |  |  |     var array = []; | 
					
						
							|  |  |  |  |     var current = ''; | 
					
						
							|  |  |  |  |     var split = false; | 
					
						
							|  |  |  |  |     var func = 0; | 
					
						
							|  |  |  |  |     var quote = false; | 
					
						
							|  |  |  |  |     var escape = false; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var i = 0; i < string.length; i++) { | 
					
						
							|  |  |  |  |       var letter = string[i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (quote) { | 
					
						
							|  |  |  |  |         if (escape) { | 
					
						
							|  |  |  |  |           escape = false; | 
					
						
							|  |  |  |  |         } else if (letter === '\\') { | 
					
						
							|  |  |  |  |           escape = true; | 
					
						
							|  |  |  |  |         } else if (letter === quote) { | 
					
						
							|  |  |  |  |           quote = false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } else if (letter === '"' || letter === "'") { | 
					
						
							|  |  |  |  |         quote = letter; | 
					
						
							|  |  |  |  |       } else if (letter === '(') { | 
					
						
							|  |  |  |  |         func += 1; | 
					
						
							|  |  |  |  |       } else if (letter === ')') { | 
					
						
							|  |  |  |  |         if (func > 0) func -= 1; | 
					
						
							|  |  |  |  |       } else if (func === 0) { | 
					
						
							|  |  |  |  |         if (separators.indexOf(letter) !== -1) split = true; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (split) { | 
					
						
							|  |  |  |  |         if (current !== '') array.push(current.trim()); | 
					
						
							|  |  |  |  |         current = ''; | 
					
						
							|  |  |  |  |         split = false; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         current += letter; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (last || current !== '') array.push(current.trim()); | 
					
						
							|  |  |  |  |     return array; | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Safely splits space-separated values (such as those for `background`, | 
					
						
							|  |  |  |  |    * `border-radius`, and other shorthand properties). | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string} string - space-separated values | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string[]} splitted values | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   space: function space(string) { | 
					
						
							|  |  |  |  |     var spaces = [' ', '\n', '\t']; | 
					
						
							|  |  |  |  |     return list.split(string, spaces); | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Safely splits comma-separated values (such as those for `transition-*` | 
					
						
							|  |  |  |  |    * and `background` properties). | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string} string - comma-separated values | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string[]} splitted values | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * postcss.list.comma('black, linear-gradient(white, black)') | 
					
						
							|  |  |  |  |    * //=> ['black', 'linear-gradient(white, black)']
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   comma: function comma(string) { | 
					
						
							|  |  |  |  |     var comma = ','; | 
					
						
							|  |  |  |  |     return list.split(string, [comma], true); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Represents a CSS rule: a selector followed by a declaration block. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @extends Container | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const root = postcss.parse('a{}'); | 
					
						
							|  |  |  |  |  * const rule = root.first; | 
					
						
							|  |  |  |  |  * rule.type       //=> 'rule'
 | 
					
						
							|  |  |  |  |  * rule.toString() //=> 'a{}'
 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Rule = /*#__PURE__*/function (_Container) { | 
					
						
							|  |  |  |  |   _inheritsLoose(Rule, _Container); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function Rule(defaults) { | 
					
						
							|  |  |  |  |     var _this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _this = _Container.call(this, defaults) || this; | 
					
						
							|  |  |  |  |     _this.type = 'rule'; | 
					
						
							|  |  |  |  |     if (!_this.nodes) _this.nodes = []; | 
					
						
							|  |  |  |  |     return _this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * An array containing the rule’s individual selectors. | 
					
						
							|  |  |  |  |    * Groups of selectors are split at commas. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @type {string[]} | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const root = postcss.parse('a, b { }'); | 
					
						
							|  |  |  |  |    * const rule = root.first; | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * rule.selector  //=> 'a, b'
 | 
					
						
							|  |  |  |  |    * rule.selectors //=> ['a', 'b']
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * rule.selectors = ['a', 'strong']; | 
					
						
							|  |  |  |  |    * rule.selector //=> 'a, strong'
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(Rule, [{ | 
					
						
							|  |  |  |  |     key: "selectors", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return list.comma(this.selector); | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(values) { | 
					
						
							|  |  |  |  |       var match = this.selector ? this.selector.match(/,\s*/) : null; | 
					
						
							|  |  |  |  |       var sep = match ? match[0] : "," + this.raw('between', 'beforeOpen'); | 
					
						
							|  |  |  |  |       this.selector = values.join(sep); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "_selector", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       warnOnce('Rule#_selector is deprecated. Use Rule#raws.selector'); | 
					
						
							|  |  |  |  |       return this.raws.selector; | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     set: function set(val) { | 
					
						
							|  |  |  |  |       warnOnce('Rule#_selector is deprecated. Use Rule#raws.selector'); | 
					
						
							|  |  |  |  |       this.raws.selector = val; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Rule# | 
					
						
							|  |  |  |  |      * @member {string} selector - the rule’s full selector represented | 
					
						
							|  |  |  |  |      *                             as a string | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a, b { }'); | 
					
						
							|  |  |  |  |      * const rule = root.first; | 
					
						
							|  |  |  |  |      * rule.selector //=> 'a, b'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @memberof Rule# | 
					
						
							|  |  |  |  |      * @member {object} raws - Information to generate byte-to-byte equal | 
					
						
							|  |  |  |  |      *                         node string as it was in the origin input. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * Every parser saves its own properties, | 
					
						
							|  |  |  |  |      * but the default CSS parser uses: | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * * `before`: the space symbols before the node. It also stores `*` | 
					
						
							|  |  |  |  |      *   and `_` symbols before the declaration (IE hack). | 
					
						
							|  |  |  |  |      * * `after`: the space symbols after the last child of the node | 
					
						
							|  |  |  |  |      *   to the end of the node. | 
					
						
							|  |  |  |  |      * * `between`: the symbols between the property and value | 
					
						
							|  |  |  |  |      *   for declarations, selector and `{` for rules, or last parameter | 
					
						
							|  |  |  |  |      *   and `{` for at-rules. | 
					
						
							|  |  |  |  |      * * `semicolon`: contains true if the last child has | 
					
						
							|  |  |  |  |      *   an (optional) semicolon. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * PostCSS cleans selectors from comments and extra spaces, | 
					
						
							|  |  |  |  |      * but it stores origin content in raws properties. | 
					
						
							|  |  |  |  |      * As such, if you don’t change a declaration’s value, | 
					
						
							|  |  |  |  |      * PostCSS will use the raw value with comments. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const root = postcss.parse('a {\n  color:black\n}') | 
					
						
							|  |  |  |  |      * root.first.first.raws //=> { before: '', between: ' ', after: '\n' }
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Rule; | 
					
						
							|  |  |  |  | }(Container); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Represents a plugin’s warning. It can be created using {@link Node#warn}. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * if ( decl.important ) { | 
					
						
							|  |  |  |  |  *     decl.warn(result, 'Avoid !important', { word: '!important' }); | 
					
						
							|  |  |  |  |  * } | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | var Warning = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @param {string} text        - warning message | 
					
						
							|  |  |  |  |    * @param {Object} [opts]      - warning options | 
					
						
							|  |  |  |  |    * @param {Node}   opts.node   - CSS node that caused the warning | 
					
						
							|  |  |  |  |    * @param {string} opts.word   - word in CSS source that caused the warning | 
					
						
							|  |  |  |  |    * @param {number} opts.index  - index in CSS node string that caused | 
					
						
							|  |  |  |  |    *                               the warning | 
					
						
							|  |  |  |  |    * @param {string} opts.plugin - name of the plugin that created | 
					
						
							|  |  |  |  |    *                               this warning. {@link Result#warn} fills | 
					
						
							|  |  |  |  |    *                               this property automatically. | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   function Warning(text, opts) { | 
					
						
							|  |  |  |  |     if (opts === void 0) { | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - Type to filter warnings from | 
					
						
							|  |  |  |  |      *                    {@link Result#messages}. Always equal | 
					
						
							|  |  |  |  |      *                    to `"warning"`. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const nonWarning = result.messages.filter(i => i.type !== 'warning') | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     this.type = 'warning'; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - The warning message. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * warning.text //=> 'Try to avoid !important'
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.text = text; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (opts.node && opts.node.source) { | 
					
						
							|  |  |  |  |       var pos = opts.node.positionBy(opts); | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {number} - Line in the input file | 
					
						
							|  |  |  |  |        *                    with this warning’s source | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * warning.line //=> 5
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.line = pos.line; | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {number} - Column in the input file | 
					
						
							|  |  |  |  |        *                    with this warning’s source. | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * warning.column //=> 6
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.column = pos.column; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var opt in opts) { | 
					
						
							|  |  |  |  |       this[opt] = opts[opt]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a warning position and message. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string} warning position and message | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Warning.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toString = function toString() { | 
					
						
							|  |  |  |  |     if (this.node) { | 
					
						
							|  |  |  |  |       return this.node.error(this.text, { | 
					
						
							|  |  |  |  |         plugin: this.plugin, | 
					
						
							|  |  |  |  |         index: this.index, | 
					
						
							|  |  |  |  |         word: this.word | 
					
						
							|  |  |  |  |       }).message; | 
					
						
							|  |  |  |  |     } else if (this.plugin) { | 
					
						
							|  |  |  |  |       return this.plugin + ": " + this.text; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return this.text; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @memberof Warning# | 
					
						
							|  |  |  |  |    * @member {string} plugin - The name of the plugin that created | 
					
						
							|  |  |  |  |    *                           it will fill this property automatically. | 
					
						
							|  |  |  |  |    *                           this warning. When you call {@link Node#warn} | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * warning.plugin //=> 'postcss-important'
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @memberof Warning# | 
					
						
							|  |  |  |  |    * @member {Node} node - Contains the CSS node that caused the warning. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * warning.node.toString() //=> 'color: white !important'
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Warning; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef  {object} Message | 
					
						
							|  |  |  |  |  * @property {string} type   - message type | 
					
						
							|  |  |  |  |  * @property {string} plugin - source PostCSS plugin name | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Provides the result of the PostCSS transformations. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * A Result instance is returned by {@link LazyResult#then} | 
					
						
							|  |  |  |  |  * or {@link Root#toResult} methods. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * postcss([cssnext]).process(css).then(function (result) { | 
					
						
							|  |  |  |  |  *    console.log(result.css); | 
					
						
							|  |  |  |  |  * }); | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * var result2 = postcss.parse(css).toResult(); | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Result = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @param {Processor} processor - processor used for this transformation. | 
					
						
							|  |  |  |  |    * @param {Root}      root      - Root node after all transformations. | 
					
						
							|  |  |  |  |    * @param {processOptions} opts - options from the {@link Processor#process} | 
					
						
							|  |  |  |  |    *                                or {@link Root#toResult} | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   function Result(processor, root, opts) { | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {Processor} - The Processor instance used | 
					
						
							|  |  |  |  |      *                       for this transformation. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * for ( let plugin of result.processor.plugins) { | 
					
						
							|  |  |  |  |      *   if ( plugin.postcssPlugin === 'postcss-bad' ) { | 
					
						
							|  |  |  |  |      *     throw 'postcss-good is incompatible with postcss-bad'; | 
					
						
							|  |  |  |  |      *   } | 
					
						
							|  |  |  |  |      * }); | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     this.processor = processor; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {Message[]} - Contains messages from plugins | 
					
						
							|  |  |  |  |      *                       (e.g., warnings or custom messages). | 
					
						
							|  |  |  |  |      *                       Each message should have type | 
					
						
							|  |  |  |  |      *                       and plugin properties. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * postcss.plugin('postcss-min-browser', () => { | 
					
						
							|  |  |  |  |      *   return (root, result) => { | 
					
						
							|  |  |  |  |      *     var browsers = detectMinBrowsersByCanIUse(root); | 
					
						
							|  |  |  |  |      *     result.messages.push({ | 
					
						
							|  |  |  |  |      *       type:    'min-browser', | 
					
						
							|  |  |  |  |      *       plugin:  'postcss-min-browser', | 
					
						
							|  |  |  |  |      *       browsers: browsers | 
					
						
							|  |  |  |  |      *     }); | 
					
						
							|  |  |  |  |      *   }; | 
					
						
							|  |  |  |  |      * }); | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.messages = []; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {Root} - Root node after all transformations. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * root.toResult().root == root; | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.root = root; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {processOptions} - Options from the {@link Processor#process} | 
					
						
							|  |  |  |  |      *                            or {@link Root#toResult} call | 
					
						
							|  |  |  |  |      *                            that produced this Result instance. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * root.toResult(opts).opts == opts; | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.opts = opts; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - A CSS string representing of {@link Result#root}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * postcss.parse('a{}').toResult().css //=> "a{}"
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.css = undefined; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {SourceMapGenerator} - An instance of `SourceMapGenerator` | 
					
						
							|  |  |  |  |      *                                class from the `source-map` library, | 
					
						
							|  |  |  |  |      *                                representing changes | 
					
						
							|  |  |  |  |      *                                to the {@link Result#root} instance. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * result.map.toJSON() //=> { version: 3, file: 'a.css', … }
 | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * if ( result.map ) { | 
					
						
							|  |  |  |  |      *   fs.writeFileSync(result.opts.to + '.map', result.map.toString()); | 
					
						
							|  |  |  |  |      * } | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.map = undefined; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns for @{link Result#css} content. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * result + '' === result.css | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string} string representing of {@link Result#root} | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Result.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toString = function toString() { | 
					
						
							|  |  |  |  |     return this.css; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Creates an instance of {@link Warning} and adds it | 
					
						
							|  |  |  |  |    * to {@link Result#messages}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string} text        - warning message | 
					
						
							|  |  |  |  |    * @param {Object} [opts]      - warning options | 
					
						
							|  |  |  |  |    * @param {Node}   opts.node   - CSS node that caused the warning | 
					
						
							|  |  |  |  |    * @param {string} opts.word   - word in CSS source that caused the warning | 
					
						
							|  |  |  |  |    * @param {number} opts.index  - index in CSS node string that caused | 
					
						
							|  |  |  |  |    *                               the warning | 
					
						
							|  |  |  |  |    * @param {string} opts.plugin - name of the plugin that created | 
					
						
							|  |  |  |  |    *                               this warning. {@link Result#warn} fills | 
					
						
							|  |  |  |  |    *                               this property automatically. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Warning} created warning | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.warn = function warn(text, opts) { | 
					
						
							|  |  |  |  |     if (opts === void 0) { | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!opts.plugin) { | 
					
						
							|  |  |  |  |       if (this.lastPlugin && this.lastPlugin.postcssPlugin) { | 
					
						
							|  |  |  |  |         opts.plugin = this.lastPlugin.postcssPlugin; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var warning = new Warning(text, opts); | 
					
						
							|  |  |  |  |     this.messages.push(warning); | 
					
						
							|  |  |  |  |     return warning; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns warnings from plugins. Filters {@link Warning} instances | 
					
						
							|  |  |  |  |    * from {@link Result#messages}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * result.warnings().forEach(warn => { | 
					
						
							|  |  |  |  |    *   console.warn(warn.toString()); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Warning[]} warnings from plugins | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.warnings = function warnings() { | 
					
						
							|  |  |  |  |     return this.messages.filter(function (i) { | 
					
						
							|  |  |  |  |       return i.type === 'warning'; | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * An alias for the {@link Result#css} property. | 
					
						
							|  |  |  |  |    * Use it with syntaxes that generate non-CSS output. | 
					
						
							|  |  |  |  |    * @type {string} | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * result.css === result.content; | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(Result, [{ | 
					
						
							|  |  |  |  |     key: "content", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.css; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Result; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function isPromise(obj) { | 
					
						
							|  |  |  |  |   return typeof obj === 'object' && typeof obj.then === 'function'; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback onFulfilled | 
					
						
							|  |  |  |  |  * @param {Result} result | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback onRejected | 
					
						
							|  |  |  |  |  * @param {Error} error | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * A Promise proxy for the result of PostCSS transformations. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * A `LazyResult` instance is returned by {@link Processor#process}. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const lazy = postcss([cssnext]).process(css); | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var LazyResult = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   function LazyResult(processor, css, opts) { | 
					
						
							|  |  |  |  |     this.stringified = false; | 
					
						
							|  |  |  |  |     this.processed = false; | 
					
						
							|  |  |  |  |     var root; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (typeof css === 'object' && css.type === 'root') { | 
					
						
							|  |  |  |  |       root = css; | 
					
						
							|  |  |  |  |     } else if (css instanceof LazyResult || css instanceof Result) { | 
					
						
							|  |  |  |  |       root = css.root; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (css.map) { | 
					
						
							|  |  |  |  |         if (typeof opts.map === 'undefined') opts.map = {}; | 
					
						
							|  |  |  |  |         if (!opts.map.inline) opts.map.inline = false; | 
					
						
							|  |  |  |  |         opts.map.prev = css.map; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       var parser = parse; | 
					
						
							|  |  |  |  |       if (opts.syntax) parser = opts.syntax.parse; | 
					
						
							|  |  |  |  |       if (opts.parser) parser = opts.parser; | 
					
						
							|  |  |  |  |       if (parser.parse) parser = parser.parse; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       try { | 
					
						
							|  |  |  |  |         root = parser(css, opts); | 
					
						
							|  |  |  |  |       } catch (error) { | 
					
						
							|  |  |  |  |         this.error = error; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.result = new Result(processor, root, opts); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a {@link Processor} instance, which will be used | 
					
						
							|  |  |  |  |    * for CSS transformations. | 
					
						
							|  |  |  |  |    * @type {Processor} | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = LazyResult.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Processes input CSS through synchronous plugins | 
					
						
							|  |  |  |  |    * and calls {@link Result#warnings()}. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Warning[]} warnings from plugins | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   _proto.warnings = function warnings() { | 
					
						
							|  |  |  |  |     return this.sync().warnings(); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Alias for the {@link LazyResult#css} property. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * lazy + '' === lazy.css; | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {string} output CSS | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toString = function toString() { | 
					
						
							|  |  |  |  |     return this.css; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Processes input CSS through synchronous and asynchronous plugins | 
					
						
							|  |  |  |  |    * and calls `onFulfilled` with a Result instance. If a plugin throws | 
					
						
							|  |  |  |  |    * an error, the `onRejected` callback will be executed. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * It implements standard Promise API. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {onFulfilled} onFulfilled - callback will be executed | 
					
						
							|  |  |  |  |    *                                    when all plugins will finish work | 
					
						
							|  |  |  |  |    * @param {onRejected}  onRejected  - callback will be execited on any error | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Promise} Promise API to make queue | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * postcss([cssnext]).process(css).then(result => { | 
					
						
							|  |  |  |  |    *   console.log(result.css); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.then = function then(onFulfilled, onRejected) { | 
					
						
							|  |  |  |  |     return this.async().then(onFulfilled, onRejected); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Processes input CSS through synchronous and asynchronous plugins | 
					
						
							|  |  |  |  |    * and calls onRejected for each error thrown in any plugin. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * It implements standard Promise API. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {onRejected} onRejected - callback will be execited on any error | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Promise} Promise API to make queue | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * postcss([cssnext]).process(css).then(result => { | 
					
						
							|  |  |  |  |    *   console.log(result.css); | 
					
						
							|  |  |  |  |    * }).catch(error => { | 
					
						
							|  |  |  |  |    *   console.error(error); | 
					
						
							|  |  |  |  |    * }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto["catch"] = function _catch(onRejected) { | 
					
						
							|  |  |  |  |     return this.async()["catch"](onRejected); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.handleError = function handleError(error, plugin) { | 
					
						
							|  |  |  |  |     try { | 
					
						
							|  |  |  |  |       this.error = error; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (error.name === 'CssSyntaxError' && !error.plugin) { | 
					
						
							|  |  |  |  |         error.plugin = plugin.postcssPlugin; | 
					
						
							|  |  |  |  |         error.setMessage(); | 
					
						
							|  |  |  |  |       } else if (plugin.postcssVersion) { | 
					
						
							|  |  |  |  |         var pluginName = plugin.postcssPlugin; | 
					
						
							|  |  |  |  |         var pluginVer = plugin.postcssVersion; | 
					
						
							|  |  |  |  |         var runtimeVer = this.result.processor.version; | 
					
						
							|  |  |  |  |         var a = pluginVer.split('.'); | 
					
						
							|  |  |  |  |         var b = runtimeVer.split('.'); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { | 
					
						
							|  |  |  |  |           warnOnce("" + ('Your current PostCSS version ' + 'is ') + runtimeVer + ", but " + pluginName + " " + ("uses " + pluginVer + ". Perhaps this is ") + "the source of the error below."); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } catch (err) { | 
					
						
							|  |  |  |  |       if (console && console.error) console.error(err); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.asyncTick = function asyncTick(resolve, reject) { | 
					
						
							|  |  |  |  |     var _this = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.plugin >= this.processor.plugins.length) { | 
					
						
							|  |  |  |  |       this.processed = true; | 
					
						
							|  |  |  |  |       return resolve(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     try { | 
					
						
							|  |  |  |  |       var plugin = this.processor.plugins[this.plugin]; | 
					
						
							|  |  |  |  |       var promise = this.run(plugin); | 
					
						
							|  |  |  |  |       this.plugin += 1; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (isPromise(promise)) { | 
					
						
							|  |  |  |  |         promise.then(function () { | 
					
						
							|  |  |  |  |           _this.asyncTick(resolve, reject); | 
					
						
							|  |  |  |  |         })["catch"](function (error) { | 
					
						
							|  |  |  |  |           _this.handleError(error, plugin); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |           _this.processed = true; | 
					
						
							|  |  |  |  |           reject(error); | 
					
						
							|  |  |  |  |         }); | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         this.asyncTick(resolve, reject); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } catch (error) { | 
					
						
							|  |  |  |  |       this.processed = true; | 
					
						
							|  |  |  |  |       reject(error); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.async = function async() { | 
					
						
							|  |  |  |  |     var _this2 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.processed) { | 
					
						
							|  |  |  |  |       return new Promise(function (resolve, reject) { | 
					
						
							|  |  |  |  |         if (_this2.error) { | 
					
						
							|  |  |  |  |           reject(_this2.error); | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           resolve(_this2.stringify()); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.processing) { | 
					
						
							|  |  |  |  |       return this.processing; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.processing = new Promise(function (resolve, reject) { | 
					
						
							|  |  |  |  |       if (_this2.error) return reject(_this2.error); | 
					
						
							|  |  |  |  |       _this2.plugin = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       _this2.asyncTick(resolve, reject); | 
					
						
							|  |  |  |  |     }).then(function () { | 
					
						
							|  |  |  |  |       _this2.processed = true; | 
					
						
							|  |  |  |  |       return _this2.stringify(); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return this.processing; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.sync = function sync() { | 
					
						
							|  |  |  |  |     var _this3 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.processed) return this.result; | 
					
						
							|  |  |  |  |     this.processed = true; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.processing) { | 
					
						
							|  |  |  |  |       throw new Error('Use process(css).then(cb) to work with async plugins'); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.error) throw this.error; | 
					
						
							|  |  |  |  |     this.result.processor.plugins.forEach(function (plugin) { | 
					
						
							|  |  |  |  |       var promise = _this3.run(plugin); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (isPromise(promise)) { | 
					
						
							|  |  |  |  |         throw new Error('Use process(css).then(cb) to work with async plugins'); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return this.result; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.run = function run(plugin) { | 
					
						
							|  |  |  |  |     this.result.lastPlugin = plugin; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     try { | 
					
						
							|  |  |  |  |       return plugin(this.result.root, this.result); | 
					
						
							|  |  |  |  |     } catch (error) { | 
					
						
							|  |  |  |  |       this.handleError(error, plugin); | 
					
						
							|  |  |  |  |       throw error; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.stringify = function stringify$1() { | 
					
						
							|  |  |  |  |     if (this.stringified) return this.result; | 
					
						
							|  |  |  |  |     this.stringified = true; | 
					
						
							|  |  |  |  |     this.sync(); | 
					
						
							|  |  |  |  |     var opts = this.result.opts; | 
					
						
							|  |  |  |  |     var str = stringify; | 
					
						
							|  |  |  |  |     if (opts.syntax) str = opts.syntax.stringify; | 
					
						
							|  |  |  |  |     if (opts.stringifier) str = opts.stringifier; | 
					
						
							|  |  |  |  |     if (str.stringify) str = str.stringify; | 
					
						
							|  |  |  |  |     var result = ''; | 
					
						
							|  |  |  |  |     str(this.root, function (i) { | 
					
						
							|  |  |  |  |       result += i; | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     this.result.css = result; | 
					
						
							|  |  |  |  |     return this.result; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(LazyResult, [{ | 
					
						
							|  |  |  |  |     key: "processor", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.result.processor; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * Options from the {@link Processor#process} call. | 
					
						
							|  |  |  |  |      * @type {processOptions} | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "opts", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.result.opts; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * Processes input CSS through synchronous plugins, converts `Root` | 
					
						
							|  |  |  |  |      * to a CSS string and returns {@link Result#css}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This property will only work with synchronous plugins. | 
					
						
							|  |  |  |  |      * If the processor contains any asynchronous plugins | 
					
						
							|  |  |  |  |      * it will throw an error. This is why this method is only | 
					
						
							|  |  |  |  |      * for debug purpose, you should always use {@link LazyResult#then}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @type {string} | 
					
						
							|  |  |  |  |      * @see Result#css | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "css", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.stringify().css; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * An alias for the `css` property. Use it with syntaxes | 
					
						
							|  |  |  |  |      * that generate non-CSS output. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This property will only work with synchronous plugins. | 
					
						
							|  |  |  |  |      * If the processor contains any asynchronous plugins | 
					
						
							|  |  |  |  |      * it will throw an error. This is why this method is only | 
					
						
							|  |  |  |  |      * for debug purpose, you should always use {@link LazyResult#then}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @type {string} | 
					
						
							|  |  |  |  |      * @see Result#content | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "content", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.stringify().content; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * Processes input CSS through synchronous plugins | 
					
						
							|  |  |  |  |      * and returns {@link Result#map}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This property will only work with synchronous plugins. | 
					
						
							|  |  |  |  |      * If the processor contains any asynchronous plugins | 
					
						
							|  |  |  |  |      * it will throw an error. This is why this method is only | 
					
						
							|  |  |  |  |      * for debug purpose, you should always use {@link LazyResult#then}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @type {SourceMapGenerator} | 
					
						
							|  |  |  |  |      * @see Result#map | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "map", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.stringify().map; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * Processes input CSS through synchronous plugins | 
					
						
							|  |  |  |  |      * and returns {@link Result#root}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This property will only work with synchronous plugins. If the processor | 
					
						
							|  |  |  |  |      * contains any asynchronous plugins it will throw an error. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This is why this method is only for debug purpose, | 
					
						
							|  |  |  |  |      * you should always use {@link LazyResult#then}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @type {Root} | 
					
						
							|  |  |  |  |      * @see Result#root | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "root", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.sync().root; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * Processes input CSS through synchronous plugins | 
					
						
							|  |  |  |  |      * and returns {@link Result#messages}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This property will only work with synchronous plugins. If the processor | 
					
						
							|  |  |  |  |      * contains any asynchronous plugins it will throw an error. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * This is why this method is only for debug purpose, | 
					
						
							|  |  |  |  |      * you should always use {@link LazyResult#then}. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @type {Message[]} | 
					
						
							|  |  |  |  |      * @see Result#messages | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   }, { | 
					
						
							|  |  |  |  |     key: "messages", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.sync().messages; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return LazyResult; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback builder | 
					
						
							|  |  |  |  |  * @param {string} part          - part of generated CSS connected to this node | 
					
						
							|  |  |  |  |  * @param {Node}   node          - AST node | 
					
						
							|  |  |  |  |  * @param {"start"|"end"} [type] - node’s part type | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback parser | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @param {string|toString} css   - string with input CSS or any object | 
					
						
							|  |  |  |  |  *                                  with toString() method, like a Buffer | 
					
						
							|  |  |  |  |  * @param {processOptions} [opts] - options with only `from` and `map` keys | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @return {Root} PostCSS AST | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback stringifier | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @param {Node} node       - start node for stringifing. Usually {@link Root}. | 
					
						
							|  |  |  |  |  * @param {builder} builder - function to concatenate CSS from node’s parts | 
					
						
							|  |  |  |  |  *                            or generate string and source map | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @return {void} | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef {object} syntax | 
					
						
							|  |  |  |  |  * @property {parser} parse          - function to generate AST by string | 
					
						
							|  |  |  |  |  * @property {stringifier} stringify - function to generate string by AST | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef {object} toString | 
					
						
							|  |  |  |  |  * @property {function} toString | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @callback pluginFunction | 
					
						
							|  |  |  |  |  * @param {Root} root     - parsed input CSS | 
					
						
							|  |  |  |  |  * @param {Result} result - result to set warnings or check other plugins | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef {object} Plugin | 
					
						
							|  |  |  |  |  * @property {function} postcss - PostCSS plugin function | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef {object} processOptions | 
					
						
							|  |  |  |  |  * @property {string} from             - the path of the CSS source file. | 
					
						
							|  |  |  |  |  *                                       You should always set `from`, | 
					
						
							|  |  |  |  |  *                                       because it is used in source map | 
					
						
							|  |  |  |  |  *                                       generation and syntax error messages. | 
					
						
							|  |  |  |  |  * @property {string} to               - the path where you’ll put the output | 
					
						
							|  |  |  |  |  *                                       CSS file. You should always set `to` | 
					
						
							|  |  |  |  |  *                                       to generate correct source maps. | 
					
						
							|  |  |  |  |  * @property {parser} parser           - function to generate AST by string | 
					
						
							|  |  |  |  |  * @property {stringifier} stringifier - class to generate string by AST | 
					
						
							|  |  |  |  |  * @property {syntax} syntax           - object with `parse` and `stringify` | 
					
						
							|  |  |  |  |  * @property {object} map              - source map options | 
					
						
							|  |  |  |  |  * @property {boolean} map.inline                    - does source map should | 
					
						
							|  |  |  |  |  *                                                     be embedded in the output | 
					
						
							|  |  |  |  |  *                                                     CSS as a base64-encoded | 
					
						
							|  |  |  |  |  *                                                     comment | 
					
						
							|  |  |  |  |  * @property {string|object|false|function} map.prev - source map content | 
					
						
							|  |  |  |  |  *                                                     from a previous | 
					
						
							|  |  |  |  |  *                                                     processing step | 
					
						
							|  |  |  |  |  *                                                     (for example, Sass). | 
					
						
							|  |  |  |  |  *                                                     PostCSS will try to find | 
					
						
							|  |  |  |  |  *                                                     previous map | 
					
						
							|  |  |  |  |  *                                                     automatically, so you | 
					
						
							|  |  |  |  |  *                                                     could disable it by | 
					
						
							|  |  |  |  |  *                                                     `false` value. | 
					
						
							|  |  |  |  |  * @property {boolean} map.sourcesContent            - does PostCSS should set | 
					
						
							|  |  |  |  |  *                                                     the origin content to map | 
					
						
							|  |  |  |  |  * @property {string|false} map.annotation           - does PostCSS should set | 
					
						
							|  |  |  |  |  *                                                     annotation comment to map | 
					
						
							|  |  |  |  |  * @property {string} map.from                       - override `from` in map’s | 
					
						
							|  |  |  |  |  *                                                     `sources` | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Contains plugins to process CSS. Create one `Processor` instance, | 
					
						
							|  |  |  |  |  * initialize its plugins, and then use that instance on numerous CSS files. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const processor = postcss([autoprefixer, precss]); | 
					
						
							|  |  |  |  |  * processor.process(css1).then(result => console.log(result.css)); | 
					
						
							|  |  |  |  |  * processor.process(css2).then(result => console.log(result.css)); | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Processor = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS | 
					
						
							|  |  |  |  |    *        plugins. See {@link Processor#use} for plugin format. | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   function Processor(plugins) { | 
					
						
							|  |  |  |  |     if (plugins === void 0) { | 
					
						
							|  |  |  |  |       plugins = []; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - Current PostCSS version. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * if ( result.processor.version.split('.')[0] !== '5' ) { | 
					
						
							|  |  |  |  |      *   throw new Error('This plugin works only with PostCSS 5'); | 
					
						
							|  |  |  |  |      * } | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     this.version = '5.2.0'; | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {pluginFunction[]} - Plugins added to this processor. | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const processor = postcss([autoprefixer, precss]); | 
					
						
							|  |  |  |  |      * processor.plugins.length //=> 2
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.plugins = this.normalize(plugins); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Adds a plugin to be used as a CSS processor. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * PostCSS plugin can be in 4 formats: | 
					
						
							|  |  |  |  |    * * A plugin created by {@link postcss.plugin} method. | 
					
						
							|  |  |  |  |    * * A function. PostCSS will pass the function a @{link Root} | 
					
						
							|  |  |  |  |    *   as the first argument and current {@link Result} instance | 
					
						
							|  |  |  |  |    *   as the second. | 
					
						
							|  |  |  |  |    * * An object with a `postcss` method. PostCSS will use that method | 
					
						
							|  |  |  |  |    *   as described in #2. | 
					
						
							|  |  |  |  |    * * Another {@link Processor} instance. PostCSS will copy plugins | 
					
						
							|  |  |  |  |    *   from that instance into this one. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Plugins can also be added by passing them as arguments when creating | 
					
						
							|  |  |  |  |    * a `postcss` instance (see [`postcss(plugins)`]). | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Asynchronous plugins should return a `Promise` instance. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin | 
					
						
							|  |  |  |  |    *                                                   or {@link Processor} | 
					
						
							|  |  |  |  |    *                                                   with plugins | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const processor = postcss() | 
					
						
							|  |  |  |  |    *   .use(autoprefixer) | 
					
						
							|  |  |  |  |    *   .use(precss); | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Processes} current processor to make methods chain | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Processor.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.use = function use(plugin) { | 
					
						
							|  |  |  |  |     this.plugins = this.plugins.concat(this.normalize([plugin])); | 
					
						
							|  |  |  |  |     return this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Parses source CSS and returns a {@link LazyResult} Promise proxy. | 
					
						
							|  |  |  |  |    * Because some plugins can be asynchronous it doesn’t make | 
					
						
							|  |  |  |  |    * any transformations. Transformations will be applied | 
					
						
							|  |  |  |  |    * in the {@link LazyResult} methods. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {string|toString|Result} css - String with input CSS or | 
					
						
							|  |  |  |  |    *                                       any object with a `toString()` | 
					
						
							|  |  |  |  |    *                                       method, like a Buffer. | 
					
						
							|  |  |  |  |    *                                       Optionally, send a {@link Result} | 
					
						
							|  |  |  |  |    *                                       instance and the processor will | 
					
						
							|  |  |  |  |    *                                       take the {@link Root} from it. | 
					
						
							|  |  |  |  |    * @param {processOptions} [opts]      - options | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {LazyResult} Promise proxy | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * processor.process(css, { from: 'a.css', to: 'a.out.css' }) | 
					
						
							|  |  |  |  |    *   .then(result => { | 
					
						
							|  |  |  |  |    *      console.log(result.css); | 
					
						
							|  |  |  |  |    *   }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.process = function process(css, opts) { | 
					
						
							|  |  |  |  |     if (opts === void 0) { | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return new LazyResult(this, css, opts); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.normalize = function normalize(plugins) { | 
					
						
							|  |  |  |  |     var normalized = []; | 
					
						
							|  |  |  |  |     plugins.forEach(function (i) { | 
					
						
							|  |  |  |  |       if (i.postcss) i = i.postcss; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (typeof i === 'object' && Array.isArray(i.plugins)) { | 
					
						
							|  |  |  |  |         normalized = normalized.concat(i.plugins); | 
					
						
							|  |  |  |  |       } else if (typeof i === 'function') { | 
					
						
							|  |  |  |  |         normalized.push(i); | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         throw new Error(i + " is not a PostCSS plugin"); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return normalized; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Processor; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Represents a CSS file and contains all its parsed nodes. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @extends Container | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const root = postcss.parse('a{color:black} b{z-index:2}'); | 
					
						
							|  |  |  |  |  * root.type         //=> 'root'
 | 
					
						
							|  |  |  |  |  * root.nodes.length //=> 2
 | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Root = /*#__PURE__*/function (_Container) { | 
					
						
							|  |  |  |  |   _inheritsLoose(Root, _Container); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function Root(defaults) { | 
					
						
							|  |  |  |  |     var _this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _this = _Container.call(this, defaults) || this; | 
					
						
							|  |  |  |  |     _this.type = 'root'; | 
					
						
							|  |  |  |  |     if (!_this.nodes) _this.nodes = []; | 
					
						
							|  |  |  |  |     return _this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Root.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.removeChild = function removeChild(child) { | 
					
						
							|  |  |  |  |     child = this.index(child); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (child === 0 && this.nodes.length > 1) { | 
					
						
							|  |  |  |  |       this.nodes[1].raws.before = this.nodes[child].raws.before; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return _Container.prototype.removeChild.call(this, child); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.normalize = function normalize(child, sample, type) { | 
					
						
							|  |  |  |  |     var nodes = _Container.prototype.normalize.call(this, child); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (sample) { | 
					
						
							|  |  |  |  |       if (type === 'prepend') { | 
					
						
							|  |  |  |  |         if (this.nodes.length > 1) { | 
					
						
							|  |  |  |  |           sample.raws.before = this.nodes[1].raws.before; | 
					
						
							|  |  |  |  |         } else { | 
					
						
							|  |  |  |  |           delete sample.raws.before; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } else if (this.first !== sample) { | 
					
						
							|  |  |  |  |         nodes.forEach(function (node) { | 
					
						
							|  |  |  |  |           node.raws.before = sample.raws.before; | 
					
						
							|  |  |  |  |         }); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return nodes; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Returns a {@link Result} instance representing the root’s CSS. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {processOptions} [opts] - options with only `to` and `map` keys | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {Result} result with current root’s CSS | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const root1 = postcss.parse(css1, { from: 'a.css' }); | 
					
						
							|  |  |  |  |    * const root2 = postcss.parse(css2, { from: 'b.css' }); | 
					
						
							|  |  |  |  |    * root1.append(root2); | 
					
						
							|  |  |  |  |    * const result = root1.toResult({ to: 'all.css', map: true }); | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.toResult = function toResult(opts) { | 
					
						
							|  |  |  |  |     if (opts === void 0) { | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var lazy = new LazyResult(new Processor(), this, opts); | 
					
						
							|  |  |  |  |     return lazy.stringify(); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.remove = function remove(child) { | 
					
						
							|  |  |  |  |     warnOnce('Root#remove is deprecated. Use Root#removeChild'); | 
					
						
							|  |  |  |  |     this.removeChild(child); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.prevMap = function prevMap() { | 
					
						
							|  |  |  |  |     warnOnce('Root#prevMap is deprecated. Use Root#source.input.map'); | 
					
						
							|  |  |  |  |     return this.source.input.map; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @memberof Root# | 
					
						
							|  |  |  |  |    * @member {object} raws - Information to generate byte-to-byte equal | 
					
						
							|  |  |  |  |    *                         node string as it was in the origin input. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * Every parser saves its own properties, | 
					
						
							|  |  |  |  |    * but the default CSS parser uses: | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * * `after`: the space symbols after the last child to the end of file. | 
					
						
							|  |  |  |  |    * * `semicolon`: is the last child has an (optional) semicolon. | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * postcss.parse('a {}\n').raws //=> { after: '\n' }
 | 
					
						
							|  |  |  |  |    * postcss.parse('a {}').raws   //=> { after: '' }
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Root; | 
					
						
							|  |  |  |  | }(Container); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var sequence = 0; | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * @typedef  {object} filePosition | 
					
						
							|  |  |  |  |  * @property {string} file   - path to file | 
					
						
							|  |  |  |  |  * @property {number} line   - source line in file | 
					
						
							|  |  |  |  |  * @property {number} column - source column in file | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Represents the source CSS. | 
					
						
							|  |  |  |  |  * | 
					
						
							|  |  |  |  |  * @example | 
					
						
							|  |  |  |  |  * const root  = postcss.parse(css, { from: file }); | 
					
						
							|  |  |  |  |  * const input = root.source.input; | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var Input = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * @param {string} css    - input CSS source | 
					
						
							|  |  |  |  |    * @param {object} [opts] - {@link Processor#process} options | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   function Input(css, opts) { | 
					
						
							|  |  |  |  |     if (opts === void 0) { | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * @member {string} - input CSS source | 
					
						
							|  |  |  |  |      * | 
					
						
							|  |  |  |  |      * @example | 
					
						
							|  |  |  |  |      * const input = postcss.parse('a{}', { from: file }).input; | 
					
						
							|  |  |  |  |      * input.css //=> "a{}";
 | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     this.css = css.toString(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE") { | 
					
						
							|  |  |  |  |       this.css = this.css.slice(1); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (opts.from) { | 
					
						
							|  |  |  |  |       if (/^\w+:\/\//.test(opts.from)) { | 
					
						
							|  |  |  |  |         /** | 
					
						
							|  |  |  |  |          * @member {string} - The absolute path to the CSS source file | 
					
						
							|  |  |  |  |          *                    defined with the `from` option. | 
					
						
							|  |  |  |  |          * | 
					
						
							|  |  |  |  |          * @example | 
					
						
							|  |  |  |  |          * const root = postcss.parse(css, { from: 'a.css' }); | 
					
						
							|  |  |  |  |          * root.source.input.file //=> '/home/ai/a.css'
 | 
					
						
							|  |  |  |  |          */ | 
					
						
							|  |  |  |  |         this.file = opts.from; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         this.file = path.resolve(opts.from); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /* | 
					
						
							|  |  |  |  |         let map = new PreviousMap(this.css, opts); | 
					
						
							|  |  |  |  |         if ( map.text ) { | 
					
						
							|  |  |  |  |             /!** | 
					
						
							|  |  |  |  |              * @member {PreviousMap} - The input source map passed from | 
					
						
							|  |  |  |  |              *                         a compilation step before PostCSS | 
					
						
							|  |  |  |  |              *                         (for example, from Sass compiler). | 
					
						
							|  |  |  |  |              * | 
					
						
							|  |  |  |  |              * @example | 
					
						
							|  |  |  |  |              * root.source.input.map.consumer().sources //=> ['a.sass']
 | 
					
						
							|  |  |  |  |              *!/ | 
					
						
							|  |  |  |  |             this.map = map; | 
					
						
							|  |  |  |  |             let file = map.consumer().file; | 
					
						
							|  |  |  |  |             if ( !this.file && file ) this.file = this.mapResolve(file); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!this.file) { | 
					
						
							|  |  |  |  |       sequence += 1; | 
					
						
							|  |  |  |  |       /** | 
					
						
							|  |  |  |  |        * @member {string} - The unique ID of the CSS source. It will be | 
					
						
							|  |  |  |  |        *                    created if `from` option is not provided | 
					
						
							|  |  |  |  |        *                    (because PostCSS does not know the file path). | 
					
						
							|  |  |  |  |        * | 
					
						
							|  |  |  |  |        * @example | 
					
						
							|  |  |  |  |        * const root = postcss.parse(css); | 
					
						
							|  |  |  |  |        * root.source.input.file //=> undefined
 | 
					
						
							|  |  |  |  |        * root.source.input.id   //=> "<input css 1>"
 | 
					
						
							|  |  |  |  |        */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       this.id = "<input css " + sequence + ">"; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (this.map) this.map.file = this.from; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = Input.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.error = function error(message, line, column, opts) { | 
					
						
							|  |  |  |  |     if (opts === void 0) { | 
					
						
							|  |  |  |  |       opts = {}; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var result; | 
					
						
							|  |  |  |  |     var origin = this.origin(line, column); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (origin) { | 
					
						
							|  |  |  |  |       result = new CssSyntaxError(message, origin.line, origin.column, origin.source, origin.file, opts.plugin); | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       result = new CssSyntaxError(message, line, column, this.css, this.file, opts.plugin); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     result.input = { | 
					
						
							|  |  |  |  |       line: line, | 
					
						
							|  |  |  |  |       column: column, | 
					
						
							|  |  |  |  |       source: this.css | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     if (this.file) result.input.file = this.file; | 
					
						
							|  |  |  |  |     return result; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * Reads the input source map and returns a symbol position | 
					
						
							|  |  |  |  |    * in the input source (e.g., in a Sass file that was compiled | 
					
						
							|  |  |  |  |    * to CSS before being passed to PostCSS). | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @param {number} line   - line in input CSS | 
					
						
							|  |  |  |  |    * @param {number} column - column in input CSS | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @return {filePosition} position in input source | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.origin = function origin(line, column) { | 
					
						
							|  |  |  |  |     if (!this.map) return false; | 
					
						
							|  |  |  |  |     var consumer = this.map.consumer(); | 
					
						
							|  |  |  |  |     var from = consumer.originalPositionFor({ | 
					
						
							|  |  |  |  |       line: line, | 
					
						
							|  |  |  |  |       column: column | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     if (!from.source) return false; | 
					
						
							|  |  |  |  |     var result = { | 
					
						
							|  |  |  |  |       file: this.mapResolve(from.source), | 
					
						
							|  |  |  |  |       line: from.line, | 
					
						
							|  |  |  |  |       column: from.column | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     var source = consumer.sourceContentFor(from.source); | 
					
						
							|  |  |  |  |     if (source) result.source = source; | 
					
						
							|  |  |  |  |     return result; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.mapResolve = function mapResolve(file) { | 
					
						
							|  |  |  |  |     if (/^\w+:\/\//.test(file)) { | 
					
						
							|  |  |  |  |       return file; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       return path.resolve(this.map.consumer().sourceRoot || '.', file); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /** | 
					
						
							|  |  |  |  |    * The CSS source identifier. Contains {@link Input#file} if the user | 
					
						
							|  |  |  |  |    * set the `from` option, or {@link Input#id} if they did not. | 
					
						
							|  |  |  |  |    * @type {string} | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * @example | 
					
						
							|  |  |  |  |    * const root = postcss.parse(css, { from: 'a.css' }); | 
					
						
							|  |  |  |  |    * root.source.input.from //=> "/home/ai/a.css"
 | 
					
						
							|  |  |  |  |    * | 
					
						
							|  |  |  |  |    * const root = postcss.parse(css); | 
					
						
							|  |  |  |  |    * root.source.input.from //=> "<input css 1>"
 | 
					
						
							|  |  |  |  |    */ | 
					
						
							|  |  |  |  |   ; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _createClass(Input, [{ | 
					
						
							|  |  |  |  |     key: "from", | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return this.file || this.id; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return Input; | 
					
						
							|  |  |  |  | }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var SafeParser = /*#__PURE__*/function (_Parser) { | 
					
						
							|  |  |  |  |   _inheritsLoose(SafeParser, _Parser); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function SafeParser() { | 
					
						
							|  |  |  |  |     return _Parser.apply(this, arguments) || this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = SafeParser.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.tokenize = function tokenize$1() { | 
					
						
							|  |  |  |  |     this.tokens = tokenize(this.input, { | 
					
						
							|  |  |  |  |       ignoreErrors: true | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.comment = function comment(token) { | 
					
						
							|  |  |  |  |     var node = new Comment(); | 
					
						
							|  |  |  |  |     this.init(node, token[2], token[3]); | 
					
						
							|  |  |  |  |     node.source.end = { | 
					
						
							|  |  |  |  |       line: token[4], | 
					
						
							|  |  |  |  |       column: token[5] | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     var text = token[1].slice(2); | 
					
						
							|  |  |  |  |     if (text.slice(-2) === '*/') text = text.slice(0, -2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (/^\s*$/.test(text)) { | 
					
						
							|  |  |  |  |       node.text = ''; | 
					
						
							|  |  |  |  |       node.raws.left = text; | 
					
						
							|  |  |  |  |       node.raws.right = ''; | 
					
						
							|  |  |  |  |     } else { | 
					
						
							|  |  |  |  |       var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/); | 
					
						
							|  |  |  |  |       node.text = match[2]; | 
					
						
							|  |  |  |  |       node.raws.left = match[1]; | 
					
						
							|  |  |  |  |       node.raws.right = match[3]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unclosedBracket = function unclosedBracket() {}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unknownWord = function unknownWord(start) { | 
					
						
							|  |  |  |  |     var buffer = this.tokens.slice(start, this.pos + 1); | 
					
						
							|  |  |  |  |     this.spaces += buffer.map(function (i) { | 
					
						
							|  |  |  |  |       return i[1]; | 
					
						
							|  |  |  |  |     }).join(''); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unexpectedClose = function unexpectedClose() { | 
					
						
							|  |  |  |  |     this.current.raws.after += '}'; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.doubleColon = function doubleColon() {}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.unnamedAtrule = function unnamedAtrule(node) { | 
					
						
							|  |  |  |  |     node.name = ''; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) { | 
					
						
							|  |  |  |  |     var colon = this.colon(tokens); | 
					
						
							|  |  |  |  |     if (colon === false) return; | 
					
						
							|  |  |  |  |     var split; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (split = colon - 1; split >= 0; split--) { | 
					
						
							|  |  |  |  |       if (tokens[split][0] === 'word') break; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (split -= 1; split >= 0; split--) { | 
					
						
							|  |  |  |  |       if (tokens[split][0] !== 'space') { | 
					
						
							|  |  |  |  |         split += 1; | 
					
						
							|  |  |  |  |         break; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var other = tokens.splice(split, tokens.length - split); | 
					
						
							|  |  |  |  |     this.decl(other); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.checkMissedSemicolon = function checkMissedSemicolon() {}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.endFile = function endFile() { | 
					
						
							|  |  |  |  |     if (this.current.nodes && this.current.nodes.length) { | 
					
						
							|  |  |  |  |       this.current.raws.semicolon = this.semicolon; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     this.current.raws.after = (this.current.raws.after || '') + this.spaces; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     while (this.current.parent) { | 
					
						
							|  |  |  |  |       this.current = this.current.parent; | 
					
						
							|  |  |  |  |       this.current.raws.after = ''; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return SafeParser; | 
					
						
							|  |  |  |  | }(Parser); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function safeParse(css, opts) { | 
					
						
							|  |  |  |  |   var input = new Input(css, opts); | 
					
						
							|  |  |  |  |   var parser = new SafeParser(input); | 
					
						
							|  |  |  |  |   parser.tokenize(); | 
					
						
							|  |  |  |  |   parser.loop(); | 
					
						
							|  |  |  |  |   return parser.root; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var generated = {}; | 
					
						
							|  |  |  |  | /* | 
					
						
							|  |  |  |  |  InlineStyle takes arbitrary CSS and generates a flat object | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var _InlineStyle = (function (styleSheet) { | 
					
						
							|  |  |  |  |   var InlineStyle = /*#__PURE__*/function () { | 
					
						
							|  |  |  |  |     function InlineStyle(rules) { | 
					
						
							|  |  |  |  |       this.rules = rules; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var _proto = InlineStyle.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _proto.generateStyleObject = function generateStyleObject(executionContext) { | 
					
						
							|  |  |  |  |       var flatCSS = flatten(this.rules, executionContext).join(''); | 
					
						
							|  |  |  |  |       var hash = generateComponentId(flatCSS); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (!generated[hash]) { | 
					
						
							|  |  |  |  |         var root = safeParse(flatCSS); | 
					
						
							|  |  |  |  |         var declPairs = []; | 
					
						
							|  |  |  |  |         root.each(function (node) { | 
					
						
							|  |  |  |  |           if (node.type === 'decl') { | 
					
						
							|  |  |  |  |             declPairs.push([node.prop, node.value]); | 
					
						
							|  |  |  |  |           } else if (process.env.NODE_ENV !== 'production' && node.type !== 'comment') { | 
					
						
							|  |  |  |  |             /* eslint-disable no-console */ | 
					
						
							|  |  |  |  |             console.warn("Node of type " + node.type + " not supported as an inline style"); | 
					
						
							|  |  |  |  |           } | 
					
						
							|  |  |  |  |         }); // RN currently does not support differing values for the corner radii of Image
 | 
					
						
							|  |  |  |  |         // components (but does for View). It is almost impossible to tell whether we'll have
 | 
					
						
							|  |  |  |  |         // support, so we'll just disable multiple values here.
 | 
					
						
							|  |  |  |  |         // https://github.com/styled-components/css-to-react-native/issues/11
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         var styleObject = transformDeclPairs(declPairs, ['borderRadius', 'borderWidth', 'borderColor', 'borderStyle']); | 
					
						
							|  |  |  |  |         var styles = styleSheet.create({ | 
					
						
							|  |  |  |  |           generated: styleObject | 
					
						
							|  |  |  |  |         }); | 
					
						
							|  |  |  |  |         generated[hash] = styles.generated; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       return generated[hash]; | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return InlineStyle; | 
					
						
							|  |  |  |  |   }(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return InlineStyle; | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* eslint-disable */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |   mixin-deep; https://github.com/jonschlinkert/mixin-deep
 | 
					
						
							|  |  |  |  |   Inlined such that it will be consistently transpiled to an IE-compatible syntax. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   The MIT License (MIT) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   Copyright (c) 2014-present, Jon Schlinkert. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   Permission is hereby granted, free of charge, to any person obtaining a copy | 
					
						
							|  |  |  |  |   of this software and associated documentation files (the "Software"), to deal | 
					
						
							|  |  |  |  |   in the Software without restriction, including without limitation the rights | 
					
						
							|  |  |  |  |   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
					
						
							|  |  |  |  |   copies of the Software, and to permit persons to whom the Software is | 
					
						
							|  |  |  |  |   furnished to do so, subject to the following conditions: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   The above copyright notice and this permission notice shall be included in | 
					
						
							|  |  |  |  |   all copies or substantial portions of the Software. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
					
						
							|  |  |  |  |   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
					
						
							|  |  |  |  |   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
					
						
							|  |  |  |  |   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
					
						
							|  |  |  |  |   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
					
						
							|  |  |  |  |   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 
					
						
							|  |  |  |  |   THE SOFTWARE. | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | var isObject = function isObject(val) { | 
					
						
							|  |  |  |  |   return typeof val === 'function' || typeof val === 'object' && val !== null && !Array.isArray(val); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var isValidKey = function isValidKey(key) { | 
					
						
							|  |  |  |  |   return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function mixin(target, val, key) { | 
					
						
							|  |  |  |  |   var obj = target[key]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (isObject(val) && isObject(obj)) { | 
					
						
							|  |  |  |  |     mixinDeep(obj, val); | 
					
						
							|  |  |  |  |   } else { | 
					
						
							|  |  |  |  |     target[key] = val; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function mixinDeep(target) { | 
					
						
							|  |  |  |  |   for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | 
					
						
							|  |  |  |  |     rest[_key - 1] = arguments[_key]; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var _i = 0, _rest = rest; _i < _rest.length; _i++) { | 
					
						
							|  |  |  |  |     var obj = _rest[_i]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (isObject(obj)) { | 
					
						
							|  |  |  |  |       for (var key in obj) { | 
					
						
							|  |  |  |  |         if (isValidKey(key)) { | 
					
						
							|  |  |  |  |           mixin(target, obj[key], key); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return target; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var determineTheme = (function (props, providedTheme, defaultProps) { | 
					
						
							|  |  |  |  |   if (defaultProps === void 0) { | 
					
						
							|  |  |  |  |     defaultProps = EMPTY_OBJECT; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return props.theme !== defaultProps.theme && props.theme || providedTheme || defaultProps.theme; | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function isTag(target) { | 
					
						
							|  |  |  |  |   return typeof target === 'string' && (process.env.NODE_ENV !== 'production' ? target.charAt(0) === target.charAt(0).toLowerCase() : true); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | function generateDisplayName(target) { | 
					
						
							|  |  |  |  |   return isTag(target) ? "styled." + target : "Styled(" + getComponentName(target) + ")"; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var ThemeContext = React__default.createContext(); | 
					
						
							|  |  |  |  | var ThemeConsumer = ThemeContext.Consumer; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function mergeTheme(theme, outerTheme) { | 
					
						
							|  |  |  |  |   if (!theme) { | 
					
						
							|  |  |  |  |     return throwStyledComponentsError(14); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (isFunction(theme)) { | 
					
						
							|  |  |  |  |     var mergedTheme = theme(outerTheme); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (process.env.NODE_ENV !== 'production' && (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')) { | 
					
						
							|  |  |  |  |       return throwStyledComponentsError(7); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return mergedTheme; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (Array.isArray(theme) || typeof theme !== 'object') { | 
					
						
							|  |  |  |  |     return throwStyledComponentsError(8); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return outerTheme ? _extends({}, outerTheme, {}, theme) : theme; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Provide a theme to an entire react component tree via context | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function ThemeProvider(props) { | 
					
						
							|  |  |  |  |   var outerTheme = React.useContext(ThemeContext); | 
					
						
							|  |  |  |  |   var themeContext = React.useMemo(function () { | 
					
						
							|  |  |  |  |     return mergeTheme(props.theme, outerTheme); | 
					
						
							|  |  |  |  |   }, [props.theme, outerTheme]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (!props.children) { | 
					
						
							|  |  |  |  |     return null; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return /*#__PURE__*/React__default.createElement(ThemeContext.Provider, { | 
					
						
							|  |  |  |  |     value: themeContext | 
					
						
							|  |  |  |  |   }, props.children); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // if the user makes use of ThemeProvider or StyleSheetManager things will break.
 | 
					
						
							|  |  |  |  | // Validator defaults to true if not in HTML/DOM env
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var validAttr = function validAttr() { | 
					
						
							|  |  |  |  |   return true; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var StyledNativeComponent = /*#__PURE__*/function (_Component) { | 
					
						
							|  |  |  |  |   _inheritsLoose(StyledNativeComponent, _Component); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   function StyledNativeComponent() { | 
					
						
							|  |  |  |  |     var _this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { | 
					
						
							|  |  |  |  |       args[_key] = arguments[_key]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     _this = _Component.call.apply(_Component, [this].concat(args)) || this; | 
					
						
							|  |  |  |  |     _this.attrs = {}; | 
					
						
							|  |  |  |  |     return _this; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var _proto = StyledNativeComponent.prototype; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.render = function render() { | 
					
						
							|  |  |  |  |     var _this2 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return /*#__PURE__*/React__default.createElement(ThemeConsumer, null, function (theme) { | 
					
						
							|  |  |  |  |       var _this2$props = _this2.props, | 
					
						
							|  |  |  |  |           transientAsProp = _this2$props.$as, | 
					
						
							|  |  |  |  |           renderAs = _this2$props.as, | 
					
						
							|  |  |  |  |           forwardedComponent = _this2$props.forwardedComponent, | 
					
						
							|  |  |  |  |           forwardedAs = _this2$props.forwardedAs, | 
					
						
							|  |  |  |  |           forwardedRef = _this2$props.forwardedRef, | 
					
						
							|  |  |  |  |           testID = _this2$props.testID, | 
					
						
							|  |  |  |  |           _this2$props$style = _this2$props.style, | 
					
						
							|  |  |  |  |           style = _this2$props$style === void 0 ? [] : _this2$props$style, | 
					
						
							|  |  |  |  |           props = _objectWithoutPropertiesLoose(_this2$props, ["$as", "as", "forwardedComponent", "forwardedAs", "forwardedRef", "testID", "style"]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       var defaultProps = forwardedComponent.defaultProps, | 
					
						
							|  |  |  |  |           target = forwardedComponent.target, | 
					
						
							|  |  |  |  |           shouldForwardProp = forwardedComponent.shouldForwardProp; | 
					
						
							|  |  |  |  |       var elementToBeRendered = _this2.attrs.$as || _this2.attrs.as || transientAsProp || renderAs || target; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       var generatedStyles = _this2.generateAndInjectStyles(determineTheme(_this2.props, theme, defaultProps) || EMPTY_OBJECT, _this2.props); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       var isTargetTag = isTag(elementToBeRendered); | 
					
						
							|  |  |  |  |       var computedProps = _this2.attrs !== props ? _extends({}, props, {}, _this2.attrs) : props; | 
					
						
							|  |  |  |  |       var propFilterFn = shouldForwardProp || isTargetTag && validAttr; | 
					
						
							|  |  |  |  |       var propsForElement = {}; | 
					
						
							|  |  |  |  |       var key; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (key in computedProps) { | 
					
						
							|  |  |  |  |         if (key[0] === '$' || key === 'as') continue;else if (key === 'forwardedAs') { | 
					
						
							|  |  |  |  |           propsForElement.as = props[key]; | 
					
						
							|  |  |  |  |         } else if (!propFilterFn || propFilterFn(key, validAttr)) { | 
					
						
							|  |  |  |  |           // Don't pass through filtered tags through to native elements
 | 
					
						
							|  |  |  |  |           propsForElement[key] = computedProps[key]; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       propsForElement.style = typeof style === 'function' ? function (state) { | 
					
						
							|  |  |  |  |         return [generatedStyles].concat(style(state)); | 
					
						
							|  |  |  |  |       } : [generatedStyles].concat(style); | 
					
						
							|  |  |  |  |       propsForElement.testID = testID; | 
					
						
							|  |  |  |  |       if (forwardedRef) propsForElement.ref = forwardedRef; | 
					
						
							|  |  |  |  |       if (forwardedAs) propsForElement.as = forwardedAs; | 
					
						
							|  |  |  |  |       return React.createElement(elementToBeRendered, propsForElement); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.buildExecutionContext = function buildExecutionContext(theme, props, attrs) { | 
					
						
							|  |  |  |  |     var _this3 = this; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var context = _extends({}, props, { | 
					
						
							|  |  |  |  |       theme: theme | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (!attrs.length) return context; | 
					
						
							|  |  |  |  |     this.attrs = {}; | 
					
						
							|  |  |  |  |     attrs.forEach(function (attrDef) { | 
					
						
							|  |  |  |  |       var resolvedAttrDef = attrDef; | 
					
						
							|  |  |  |  |       var attr; | 
					
						
							|  |  |  |  |       var key; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       if (isFunction(resolvedAttrDef)) { | 
					
						
							|  |  |  |  |         resolvedAttrDef = resolvedAttrDef(context); | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       /* eslint-disable guard-for-in */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       for (key in resolvedAttrDef) { | 
					
						
							|  |  |  |  |         attr = resolvedAttrDef[key]; | 
					
						
							|  |  |  |  |         _this3.attrs[key] = attr; | 
					
						
							|  |  |  |  |         context[key] = attr; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |       /* eslint-enable */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     return context; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.generateAndInjectStyles = function generateAndInjectStyles(theme, props) { | 
					
						
							|  |  |  |  |     var inlineStyle = props.forwardedComponent.inlineStyle; | 
					
						
							|  |  |  |  |     var executionContext = this.buildExecutionContext(theme, props, props.forwardedComponent.attrs); | 
					
						
							|  |  |  |  |     return inlineStyle.generateStyleObject(executionContext); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   _proto.setNativeProps = function setNativeProps(nativeProps) { | 
					
						
							|  |  |  |  |     if (this.root !== undefined) { | 
					
						
							|  |  |  |  |       // $FlowFixMe
 | 
					
						
							|  |  |  |  |       this.root.setNativeProps(nativeProps); | 
					
						
							|  |  |  |  |     } else if (process.env.NODE_ENV !== 'production') { | 
					
						
							|  |  |  |  |       // eslint-disable-next-line no-console
 | 
					
						
							|  |  |  |  |       console.warn('setNativeProps was called on a Styled Component wrapping a stateless functional component.'); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return StyledNativeComponent; | 
					
						
							|  |  |  |  | }(React.Component); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var _StyledNativeComponent = (function (InlineStyle) { | 
					
						
							|  |  |  |  |   var createStyledNativeComponent = function createStyledNativeComponent(target, options, rules) { | 
					
						
							|  |  |  |  |     var _options$attrs = options.attrs, | 
					
						
							|  |  |  |  |         attrs = _options$attrs === void 0 ? EMPTY_ARRAY : _options$attrs, | 
					
						
							|  |  |  |  |         _options$displayName = options.displayName, | 
					
						
							|  |  |  |  |         displayName = _options$displayName === void 0 ? generateDisplayName(target) : _options$displayName, | 
					
						
							|  |  |  |  |         _options$ParentCompon = options.ParentComponent, | 
					
						
							|  |  |  |  |         ParentComponent = _options$ParentCompon === void 0 ? StyledNativeComponent : _options$ParentCompon; | 
					
						
							|  |  |  |  |     var isClass = !isTag(target); | 
					
						
							|  |  |  |  |     var isTargetStyledComp = isStyledComponent(target); // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var WrappedStyledNativeComponent = React__default.forwardRef(function (props, ref) { | 
					
						
							|  |  |  |  |       return /*#__PURE__*/React__default.createElement(ParentComponent, _extends({}, props, { | 
					
						
							|  |  |  |  |         forwardedComponent: WrappedStyledNativeComponent, | 
					
						
							|  |  |  |  |         forwardedRef: ref | 
					
						
							|  |  |  |  |       })); | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  |     var finalAttrs = // $FlowFixMe
 | 
					
						
							|  |  |  |  |     isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs; // eslint-disable-next-line prefer-destructuring
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var shouldForwardProp = options.shouldForwardProp; // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (isTargetStyledComp && target.shouldForwardProp) { | 
					
						
							|  |  |  |  |       if (shouldForwardProp) { | 
					
						
							|  |  |  |  |         // compose nested shouldForwardProp calls
 | 
					
						
							|  |  |  |  |         shouldForwardProp = function shouldForwardProp(prop, filterFn, elementToBeCreated) { | 
					
						
							|  |  |  |  |           return (// $FlowFixMe
 | 
					
						
							|  |  |  |  |             target.shouldForwardProp(prop, filterFn, elementToBeCreated) && options.shouldForwardProp(prop, filterFn, elementToBeCreated) | 
					
						
							|  |  |  |  |           ); | 
					
						
							|  |  |  |  |         }; | 
					
						
							|  |  |  |  |       } else { | 
					
						
							|  |  |  |  |         // eslint-disable-next-line prefer-destructuring
 | 
					
						
							|  |  |  |  |         shouldForwardProp = target.shouldForwardProp; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /** | 
					
						
							|  |  |  |  |      * forwardRef creates a new interim component, which we'll take advantage of | 
					
						
							|  |  |  |  |      * instead of extending ParentComponent to create _another_ interim class | 
					
						
							|  |  |  |  |      */ | 
					
						
							|  |  |  |  |     // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     WrappedStyledNativeComponent.attrs = finalAttrs; | 
					
						
							|  |  |  |  |     WrappedStyledNativeComponent.displayName = displayName; // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     WrappedStyledNativeComponent.shouldForwardProp = shouldForwardProp; // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     WrappedStyledNativeComponent.inlineStyle = new InlineStyle( // $FlowFixMe
 | 
					
						
							|  |  |  |  |     isTargetStyledComp ? target.inlineStyle.rules.concat(rules) : rules); // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     WrappedStyledNativeComponent.styledComponentId = 'StyledNativeComponent'; // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     WrappedStyledNativeComponent.target = isTargetStyledComp ? // $FlowFixMe
 | 
					
						
							|  |  |  |  |     target.target : target; // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     WrappedStyledNativeComponent.withComponent = function withComponent(tag) { | 
					
						
							|  |  |  |  |       var _ = options.displayName, | 
					
						
							|  |  |  |  |           __ = options.componentId, | 
					
						
							|  |  |  |  |           optionsToCopy = _objectWithoutPropertiesLoose(options, ["displayName", "componentId"]); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       var newOptions = _extends({}, optionsToCopy, { | 
					
						
							|  |  |  |  |         attrs: finalAttrs, | 
					
						
							|  |  |  |  |         ParentComponent: ParentComponent | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       return createStyledNativeComponent(tag, newOptions, rules); | 
					
						
							|  |  |  |  |     }; // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Object.defineProperty(WrappedStyledNativeComponent, 'defaultProps', { | 
					
						
							|  |  |  |  |       get: function get() { | 
					
						
							|  |  |  |  |         return this._foldedDefaultProps; | 
					
						
							|  |  |  |  |       }, | 
					
						
							|  |  |  |  |       set: function set(obj) { | 
					
						
							|  |  |  |  |         // $FlowFixMe
 | 
					
						
							|  |  |  |  |         this._foldedDefaultProps = isTargetStyledComp ? mixinDeep({}, target.defaultProps, obj) : obj; | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (isClass) { | 
					
						
							|  |  |  |  |       hoist(WrappedStyledNativeComponent, target, { | 
					
						
							|  |  |  |  |         // all SC-specific things should not be hoisted
 | 
					
						
							|  |  |  |  |         attrs: true, | 
					
						
							|  |  |  |  |         displayName: true, | 
					
						
							|  |  |  |  |         shouldForwardProp: true, | 
					
						
							|  |  |  |  |         inlineStyle: true, | 
					
						
							|  |  |  |  |         styledComponentId: true, | 
					
						
							|  |  |  |  |         target: true, | 
					
						
							|  |  |  |  |         withComponent: true | 
					
						
							|  |  |  |  |       }); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return WrappedStyledNativeComponent; | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return createStyledNativeComponent; | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | var interleave = (function (strings, interpolations) { | 
					
						
							|  |  |  |  |   var result = [strings[0]]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   for (var i = 0, len = interpolations.length; i < len; i += 1) { | 
					
						
							|  |  |  |  |     result.push(interpolations[i], strings[i + 1]); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return result; | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | /** | 
					
						
							|  |  |  |  |  * Used when flattening object styles to determine if we should | 
					
						
							|  |  |  |  |  * expand an array of styles. | 
					
						
							|  |  |  |  |  */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var addTag = function addTag(arg) { | 
					
						
							|  |  |  |  |   if (Array.isArray(arg)) { | 
					
						
							|  |  |  |  |     // eslint-disable-next-line no-param-reassign
 | 
					
						
							|  |  |  |  |     arg.isCss = true; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return arg; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function css(styles) { | 
					
						
							|  |  |  |  |   for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | 
					
						
							|  |  |  |  |     interpolations[_key - 1] = arguments[_key]; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (isFunction(styles) || isPlainObject(styles)) { | 
					
						
							|  |  |  |  |     // $FlowFixMe
 | 
					
						
							|  |  |  |  |     return addTag(flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)))); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === 'string') { | 
					
						
							|  |  |  |  |     // $FlowFixMe
 | 
					
						
							|  |  |  |  |     return styles; | 
					
						
							|  |  |  |  |   } // $FlowFixMe
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return addTag(flatten(interleave(styles, interpolations))); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function constructWithOptions(componentConstructor, tag, options) { | 
					
						
							|  |  |  |  |   if (options === void 0) { | 
					
						
							|  |  |  |  |     options = EMPTY_OBJECT; | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   if (!reactIs.isValidElementType(tag)) { | 
					
						
							|  |  |  |  |     return throwStyledComponentsError(1, String(tag)); | 
					
						
							|  |  |  |  |   } | 
					
						
							|  |  |  |  |   /* This is callable directly as a template function */ | 
					
						
							|  |  |  |  |   // $FlowFixMe: Not typed to avoid destructuring arguments
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   var templateFunction = function templateFunction() { | 
					
						
							|  |  |  |  |     return componentConstructor(tag, options, css.apply(void 0, arguments)); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  |   /* 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)); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  |   /* Modify/inject new props at runtime */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   templateFunction.attrs = function (attrs) { | 
					
						
							|  |  |  |  |     return constructWithOptions(componentConstructor, tag, _extends({}, options, { | 
					
						
							|  |  |  |  |       attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean) | 
					
						
							|  |  |  |  |     })); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return templateFunction; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // export default <Config: { theme?: any }, Instance>(
 | 
					
						
							|  |  |  |  | //  Component: AbstractComponent<Config, Instance>
 | 
					
						
							|  |  |  |  | // ): AbstractComponent<$Diff<Config, { theme?: any }> & { theme?: any }, Instance>
 | 
					
						
							|  |  |  |  | //
 | 
					
						
							|  |  |  |  | // but the old build system tooling doesn't support the syntax
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var withTheme = (function (Component) { | 
					
						
							|  |  |  |  |   // $FlowFixMe This should be React.forwardRef<Config, Instance>
 | 
					
						
							|  |  |  |  |   var WithTheme = React__default.forwardRef(function (props, ref) { | 
					
						
							|  |  |  |  |     var theme = React.useContext(ThemeContext); // $FlowFixMe defaultProps isn't declared so it can be inferrable
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     var defaultProps = Component.defaultProps; | 
					
						
							|  |  |  |  |     var themeProp = determineTheme(props, theme, defaultProps); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (process.env.NODE_ENV !== 'production' && themeProp === undefined) { | 
					
						
							|  |  |  |  |       // eslint-disable-next-line no-console
 | 
					
						
							|  |  |  |  |       console.warn("[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"" + getComponentName(Component) + "\""); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return /*#__PURE__*/React__default.createElement(Component, _extends({}, props, { | 
					
						
							|  |  |  |  |       theme: themeProp, | 
					
						
							|  |  |  |  |       ref: ref | 
					
						
							|  |  |  |  |     })); | 
					
						
							|  |  |  |  |   }); | 
					
						
							|  |  |  |  |   hoist(WithTheme, Component); | 
					
						
							|  |  |  |  |   WithTheme.displayName = "WithTheme(" + getComponentName(Component) + ")"; | 
					
						
							|  |  |  |  |   return WithTheme; | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var useTheme = function useTheme() { | 
					
						
							|  |  |  |  |   return React.useContext(ThemeContext); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //      
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var InlineStyle = _InlineStyle(reactPrimitives.StyleSheet); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var StyledNativeComponent$1 = _StyledNativeComponent(InlineStyle); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var styled = function styled(tag) { | 
					
						
							|  |  |  |  |   return constructWithOptions(StyledNativeComponent$1, tag); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | /* React native lazy-requires each of these modules for some reason, so let's | 
					
						
							|  |  |  |  |  *  assume it's for a good reason and not eagerly load them all */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | var aliases = 'Image Text Touchable View '; | 
					
						
							|  |  |  |  | /* Define a getter for each alias which simply gets the reactNative component | 
					
						
							|  |  |  |  |  * and passes it to styled */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | aliases.split(/\s+/m).forEach(function (alias) { | 
					
						
							|  |  |  |  |   return Object.defineProperty(styled, alias, { | 
					
						
							|  |  |  |  |     enumerable: true, | 
					
						
							|  |  |  |  |     configurable: false, | 
					
						
							|  |  |  |  |     get: function get() { | 
					
						
							|  |  |  |  |       return styled(reactPrimitives[alias]); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }); | 
					
						
							|  |  |  |  | }); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | exports.ThemeConsumer = ThemeConsumer; | 
					
						
							|  |  |  |  | exports.ThemeContext = ThemeContext; | 
					
						
							|  |  |  |  | exports.ThemeProvider = ThemeProvider; | 
					
						
							|  |  |  |  | exports.css = css; | 
					
						
							|  |  |  |  | exports.default = styled; | 
					
						
							|  |  |  |  | exports.isStyledComponent = isStyledComponent; | 
					
						
							|  |  |  |  | exports.useTheme = useTheme; | 
					
						
							|  |  |  |  | exports.withTheme = withTheme; | 
					
						
							|  |  |  |  | //# sourceMappingURL=styled-components-primitives.cjs.js.map
 |